Guía de Operaciones de OmniPGW
OmniPGW - Plano de Control de Puerta de Enlace de Paquetes (PGW-C)
por Omnitouch Network Services
Tabla de Contenidos
- Descripción General
- Arquitectura
- Interfaces de Red
- Conceptos Clave
- Comenzando
- Configuración
- Monitoreo de Operaciones en Tiempo Real (API OAM)
- Monitoreo y Métricas
- Documentación Detallada
- Recursos Adicionales
Descripción General
OmniPGW es una implementación de alto rendimiento del Plano de Control de Puerta de Enlace de Paquetes (PGW-C) para redes del Núcleo de Paquete Evolucionado (EPC) LTE de 3GPP, desarrollada por Omnitouch Network Services. Administra las funciones del plano de control para sesiones de datos, incluyendo:
- Gestión de Sesiones - Creación, modificación y terminación de sesiones de datos de UE (Equipo de Usuario)
- Asignación de Direcciones IP - Asignación de direcciones IP a dispositivos móviles desde grupos configurados
- Control de Políticas y Cargos - Interfaz con PCRF para la aplicación de políticas y cargos
- Coordinación del Plano de Usuario - Control del PGW-U (Plano de Usuario) para el reenvío de paquetes
Lo que Hace PGW-C
- Acepta solicitudes de sesión de SGW-C a través de la interfaz S5/S8 (GTP-C)
- Asigna direcciones IP a UE desde grupos de subred configurados
- Solicita decisiones de políticas de PCRF a través de la interfaz Gx (Diameter)
- Programa reglas de reenvío en PGW-U a través de la interfaz Sxb (PFCP)
- Gestiona la aplicación de QoS a través de contextos de portadora y reglas de QoS
- Rastrea información de cargos para sistemas de facturación
Arquitectura
Descripción General de Componentes
Arquitectura de Procesos
PGW-C se basa en Elixir/OTP y utiliza una arquitectura de procesos supervisados:
- Supervisor de Aplicación - Supervisor de nivel superior que gestiona todos los componentes
- Corredores de Protocolo - Manejan mensajes de protocolo entrantes/salientes
- Procesos de Sesión - Un GenServer por cada conexión PDN activa
- Registros - Rastrean recursos asignados (IPs, TEIDs, SEIDs, etc.)
- Gestor de Nodo PFCP - Mantiene asociaciones PFCP con pares PGW-U
Cada componente está supervisado y se reiniciará automáticamente en caso de fallo, asegurando la fiabilidad del sistema.
Interfaces de Red
PGW-C implementa tres interfaces principales de 3GPP:
Interfaz S5/S8 (GTP-C v2)
Propósito: Señalización del plano de control entre SGW-C y PGW-C
Protocolo: GTP-C Versión 2 sobre UDP
Mensajes Clave:
- Solicitud/Respuesta de Crear Sesión
- Solicitud/Respuesta de Eliminar Sesión
- Solicitud/Respuesta de Crear Portadora
- Solicitud/Respuesta de Eliminar Portadora
Configuración: Ver Configuración S5/S8
Interfaz Sxb (PFCP)
Propósito: Señalización del plano de control entre PGW-C y PGW-U
Protocolo: PFCP (Protocolo de Control de Reenvío de Paquetes) sobre UDP
Mensajes Clave:
- Solicitud/Respuesta de Configuración de Asociación
- Solicitud/Respuesta de Establecimiento de Sesión
- Solicitud/Respuesta de Modificación de Sesión
- Solicitud/Respuesta de Eliminación de Sesión
- Solicitud/Respuesta de Latido
Configuración: Ver Documentación de la Interfaz PFCP/Sxb
Interfaz Gx (Diameter)
Propósito: Interfaz de Función de Reglas de Políticas y Cargos (PCRF)
Protocolo: Diameter (IETF RFC 6733)
Mensajes Clave:
- Solicitud/Respuesta Inicial de Control de Crédito (CCR-I/CCA-I)
- Solicitud/Respuesta de Terminación de Control de Crédito (CCR-T/CCA-T)
Configuración: Ver Documentación de la Interfaz Diameter Gx
Conceptos Clave
Sesión PDN
Una Sesión PDN (Red de Datos de Paquetes) representa la conexión de datos de un UE a una red externa (como Internet). Cada sesión tiene:
- Dirección IP de UE - Asignada desde un grupo de subred configurado
- APN (Nombre del Punto de Acceso) - Identifica la red externa
- Contexto de Portadora - Contiene parámetros de QoS e información de túnel
- ID de Carga - Identificador único para facturación
- TEID (ID de Punto de Final de Túnel) - Identificador de túnel de la interfaz S5/S8
- SEID (ID de Punto de Final de Sesión) - Identificador de sesión de la interfaz Sxb
Contexto de Portadora
Una portadora representa un flujo de tráfico con características específicas de QoS:
- Portadora Predeterminada - Creada con cada sesión PDN
- Portadoras Dedicadas - Portadoras adicionales para necesidades específicas de QoS
- EBI (ID de Portadora EPS) - Identificador único para cada portadora
- Parámetros de QoS - QCI, ARP, tasas de bits (MBR, GBR)
Reglas PFCP
El PGW-C programa el PGW-U con reglas de procesamiento de paquetes:
- PDR (Regla de Detección de Paquetes) - Coincide con paquetes (uplink/downlink)
- FAR (Regla de Acción de Reenvío) - Especifica el comportamiento de reenvío
- QER (Regla de Aplicación de QoS) - Aplica límites de tasa de bits
- BAR (Regla de Acción de Búfer) - Controla el almacenamiento en búfer de paquetes
Ver Documentación de la Interfaz PFCP para más detalles.
Asignación de Direcciones IP
Las direcciones IP de UE se asignan desde grupos de subred configurados:
- Selección basada en APN - Diferentes APNs pueden usar diferentes subredes
- Asignación dinámica - Selección aleatoria de IP del rango disponible
- Asignación estática - Soporte para direcciones IP solicitadas por UE
- Detección de colisiones - Asegura la asignación única de IP
Ver Asignación de Grupos de IP de UE para configuración, y IPv6 / Doble Pila para operación PDN IPv6 e IPv4v6.
Comenzando
Requisitos Previos
- Elixir ~1.16
- Erlang/OTP 26+
- Conectividad de red a SGW-C, PGW-U y PCRF
- Comprensión de la arquitectura EPC LTE
Iniciando OmniPGW
- Configurar ajustes de tiempo de ejecución en
config/runtime.exs - Compilar la aplicación:
mix deps.get
mix compile - Iniciar la aplicación:
mix run --no-halt
Verificando la Operación
Verifique los registros para el inicio exitoso:
[info] Iniciando OmniPGW...
[info] Iniciando Exportador de Métricas en 127.0.0.42:42069
[info] Iniciando Corredor S5/S8 en 127.0.0.10
[info] Iniciando Corredor Sxb en 127.0.0.20
[info] Iniciando Corredor Gx
[info] Iniciando Gestor de Nodo PFCP
[info] OmniPGW iniciado con éxito
Acceda a las métricas en http://127.0.0.42:42069/metrics (dirección configurada).
Configuración
Toda la configuración de tiempo de ejecución se define en config/runtime.exs. La configuración está estructurada en varias secciones:
Descripción General de la Configuración
Referencia Rápida de Configuración
| Sección | Propósito | Documentación |
|---|---|---|
| metrics | Exportador de métricas de Prometheus | Guía de Monitoreo |
| diameter | Interfaz Gx a PCRF | Configuración Diameter Gx |
| s5s8 | Interfaz GTP-C a SGW-C | Configuración S5/S8 |
| sxb | Interfaz PFCP a PGW-U | Configuración PFCP |
| ue | Grupos de direcciones IP de UE | Configuración de Grupo de IP |
| pco | Opciones de Configuración de Protocolo | Configuración PCO |
| CDR | Reporte de cargos y uso fuera de línea | Formato CDR |
Vea la Guía Completa de Configuración para información detallada.
Monitoreo de Operaciones en Tiempo Real (API OAM)
OmniPGW expone una API REST OAM para monitoreo y operaciones en tiempo real, proporcionando visibilidad instantánea del estado del sistema. Consulte estos puntos finales de lectura bajo demanda (o en un intervalo de sondeo / desde un script) para una vista operativa en vivo - no se requiere acceso a la línea de comandos al host o consultas de métricas en bruto.
Accediendo a la API OAM
La API se sirve a través de HTTPS/TLS. Todas las rutas se sirven bajo el prefijo /api.
https://<omnipgw-ip>:8443/
La documentación interactiva de la API (Swagger UI) está disponible en:
https://<omnipgw-ip>:8443/api/docs
Ejemplo de verificación de estado (use -k para un certificado de laboratorio autofirmado):
curl -k https://localhost:8443/api/status
{"result":"ok"}
Puntos Finales Disponibles:
| Propósito | Punto Final | Reemplaza (página antigua) |
|---|---|---|
| Profundizar en un suscriptor específico (IMSI/MSISDN/IP) | POST /api/ue_search | Búsqueda de UE |
| Listar / buscar sesiones PDN activas | GET /api/sessions[?search=<imsi|msisdn|ip>] | Sesiones PGW |
| Una sesión por IMSI | GET /api/sessions/<imsi> | Sesiones PGW (detalle) |
| Historial de sesiones / eventos de auditoría | GET /api/session_history[?type=&search=&page=&page_size=] | Historial de Sesiones |
| Descripci��n general de la topología de red | GET /api/topology | Topología de Red |
| Utilización del grupo de direcciones IP de UE | GET /api/ip_pools, GET /api/ip_pools/<name> | Grupos de IP |
| Estado de pares UPF / PFCP | GET /api/upf, GET /api/upf/<ip> | Sesiones PFCP / Estado de UPF |
| Reglas de selección de UPF, salud, configuración PCO | GET /api/upf_selection | Selección de UPF |
| Conectividad de pares Diameter (Gx/Gy) | GET /api/diameter[?status=connected|disconnected], GET /api/diameter/<origin-host> | Pares Diameter |
| Estado de carga en línea (Gy) por sesión | GET /api/charging[?search=<imsi>], GET /api/charging/<imsi> | Estado de Gy |
| Estado de descubrimiento de DNS P-CSCF | GET /api/pcscf_monitor | Monitor P-CSCF |
| Verificación de salud | GET /api/status | - |
Para una vista estilo panel en vivo, sondee los puntos finales de colección en un intervalo, por ejemplo:
watch -n 2 'curl -sk https://localhost:8443/api/sessions'
watch -n 1 'curl -sk https://localhost:8443/api/diameter?status=disconnected'
Nota: la antigua página Registros (transmisión de registros en vivo) y la página Simulador Gy no tienen un equivalente en la API OAM. Transmita registros desde el host / su agregador de registros, y use
GET /api/chargingpara inspeccionar el estado en vivo de Gy/carga en línea.
Características Clave
Datos Bajo Demanda y Sondeados:
- Cada punto final devuelve el estado actual en vivo de los procesos de OmniPGW
- Sondee en un intervalo con
watch/cron/un script para una vista de actualización automática - Los campos de estado (por ejemplo,
conectado/asociadode pares) se devuelven explícitamente en el JSON
Buscar y Filtrar:
- Busque sesiones por IMSI, IP, MSISDN o APN a través de
GET /api/sessions?search=... - Filtrar pares Diameter por
?status=connected|disconnected - Filtrar estado de carga por
?search=<imsi>
Registros de Detalle Completo:
- Puntos finales por entidad (
/api/sessions/<imsi>,/api/upf/<ip>,/api/diameter/<origin-host>,/api/charging/<imsi>) devuelven el estado completo como JSON - Inspeccione la sesión completa, configuración de pares y capacidades
Control de Acceso:
- Servido a través de HTTPS/TLS en el puerto 8443
- Vincule solo a la IP de gestión y enfrente con sus controles de acceso
- Destinado para el equipo de NOC/operaciones y uso de automatización
Flujos de Trabajo Operativos
Solución de Problemas de Sesiones (Profundización):
1. El usuario informa un problema de conexión
2. POST /api/ue_search con un cuerpo JSON que contiene el IMSI, MSISDN o IP
3. Revise los detalles completos de la sesión en la respuesta:
a) Sesiones Activas - Verifique que la sesión exista con los parámetros correctos
b) Ubicación Actual - Verifique TAC, ID de Celda, red de servicio
c) Información de Portadora - Verifique portadoras predeterminadas y dedicadas
- QCI, MBR/GBR, Nombres de Reglas de Carga
- Límites de APN-AMBR
d) Información de Carga - ID de sesión Gy, estado de cuota (también GET /api/charging/<imsi>)
e) Información de Políticas - sesión Gx, reglas PCC instaladas
f) Eventos Recientes - GET /api/session_history?search=<imsi>
4. Si no se encuentra la sesión → GET /api/diameter?status=disconnected para conectividad PCRF
Búsqueda Rápida de Sesiones:
1. El usuario informa un problema
2. GET /api/sessions?search=<imsi|msisdn> (o GET /api/sessions/<imsi>)
3. Verifique que la sesión exista con detalles básicos:
- Dirección IP de UE asignada
- Parámetros de QoS
- Puntos finales de túnel establecidos
4. Para un análisis detallado → POST /api/ue_search
Verificación de Salud del Sistema:
1. GET /api/upf → Verifique que todos los pares PGW-U estén "Asociados"
2. GET /api/diameter?status=connected → Verifique que todos los pares PCRF estén "Conectados"
3. GET /api/sessions → Verifique el conteo de sesiones activas vs. capacidad
4. GET /api/status → Verificación de salud general ({"result":"ok"})
Monitoreo de Capacidad:
- Conteo de entradas devueltas por
GET /api/sessions - Comparar con la capacidad licenciada/esperada
- Identificar tiempos de uso máximo
- Monitorear distribución entre APNs; use
GET /api/ip_poolspara utilización por grupo
API vs. Métricas
Use la API OAM para:
- Solución de problemas de suscriptores en profundidad (
POST /api/ue_search) - Detalles de sesiones individuales e inspección de estado (
GET /api/sessions/<imsi>) - Estado de pares en tiempo real (
GET /api/upf,GET /api/diameter) - Verificaciones rápidas de salud en todas las interfaces (
GET /api/status) - Solución de problemas de usuarios específicos por IMSI/MSISDN/IP
- Análisis de QoS de portadoras (MBR, GBR, QCI)
- Inspección de reglas de políticas y carga (
GET /api/charging) - Historial de sesiones y auditorías (
GET /api/session_history) - Monitoreo de capacidad de grupos de IP (
GET /api/ip_pools) - Verificación de configuración y reglas (
GET /api/upf_selection)
Use Métricas de Prometheus para:
- Tendencias históricas
- Alertas y notificaciones
- Gráficos de planificación de capacidad
- Análisis de rendimiento
- Monitoreo a largo plazo
Mejor Práctica: Use ambos juntos - la API OAM para operaciones inmediatas, Prometheus para tendencias y alertas.
Monitoreo y Métricas
Además de la API OAM, OmniPGW expone métricas compatibles con Prometheus para monitoreo:
Métricas Disponibles
-
Métricas de Sesión
teid_registry_count- Sesiones S5/S8 activasseid_registry_count- Sesiones PFCP activassession_id_registry_count- Sesiones Gx activasaddress_registry_count- Direcciones IP de UE asignadascharging_id_registry_count- IDs de carga activos
-
Métricas de Mensajes
s5s8_inbound_messages_total- Mensajes GTP-C recibidossxb_inbound_messages_total- Mensajes PFCP recibidosgx_inbound_messages_total- Mensajes Diameter recibidos- Distribuciones de duración de manejo de mensajes
-
Métricas de Errores
s5s8_inbound_errors_total- Errores de protocolo S5/S8sxb_inbound_errors_total- Errores de protocolo PFCPgx_inbound_errors_total- Errores de Diameter
-
Métricas del Ciclo de Vida de Sesiones
pgw_session_create_total{result,cause,pdn_type,rat_type}- Intentos de creación de sesión PDN, desglosados por resultado (success/failure), la causa GTP devuelta, tipo de PDN (ipv4/ipv6/ipv4v6) y tipo de RATpgw_session_delete_total{pdn_type}- Eliminaciones de sesión PDN por tipo de PDNpgw_session_modify_total- Solicitudes de Modificación de Portadora manejadas
-
Métricas del Grupo de IP de UE
ue_pool_addresses_allocated{pool,ip_version}- Direcciones UE asignadas por grupo (patrón de APN) y versión de IPue_pool_addresses_total{pool,ip_version}- Capacidad total del grupoue_pool_addresses_utilization_ratio{pool,ip_version}- Fracción asignada (0.0-1.0); útil para alertas de agotamiento de grupos. Nota: los grupos que comparten un rango de direcciones cuentan cada uno las asignaciones compartidasue_ip_allocation_failures_total{ip_version,reason}- Fallos de asignación (pool_exhausted,already_registered)
-
Métricas por Par UPF / PFCP
upf_peer_associated{peer_ip}- Estado de asociación PFCP 1/0 por parupf_peer_healthy{peer_ip}- Salud 1/0 por parupf_peer_missed_heartbeats{peer_ip}- Latidos perdidos consecutivos por parupf_heartbeat_rtt- Distribución del tiempo de ida y vuelta del latido PFCP, porpeer_ip
-
Métricas de Portadora y QoS
pgw_bearer_create_total{type,qci}- Portadoras creadas por tipo (default/dedicated) y QCIpgw_bearer_delete_total{type}- Portadoras eliminadas por tipo
-
Métricas de Pares Diameter
diameter_peers_connected{application}- Pares Diameter conectados por aplicación (gx/gy/all)
Accediendo a las Métricas
Las métricas se exponen a través de HTTP en el punto final configurado:
curl http://127.0.0.42:42069/metrics
Vea Guía de Monitoreo y Métricas para la configuración del panel y alertas.
Documentación Detallada
Esta sección proporciona una visión general completa de toda la documentación de OmniPGW. Los documentos están organizados por tema y caso de uso.
Estructura de la Documentación
Documentación de OmniPGW
├── OPERATIONS.md (Esta Guía)
│
└── docs/
├── Configuración y Configuración
│ ├── configuration.md Referencia completa de runtime.exs
│ ├── ue-ip-allocation.md Configuración del grupo de IP
│ └── pco-configuration.md Configuración de DNS, P-CSCF, MTU
│
├── Interfaces de Red
│ ├── pfcp-interface.md Sxb/PFCP (comunicación PGW-U)
│ ├── diameter-gx.md Gx (comunicación PCRF)
│ ├── diameter-gy.md Gy/Ro (comunicación OCS)
│ └── s5s8-interface.md S5/S8 (comunicación SGW-C)
│
└── Operaciones
├── session-management.md Ciclo de vida de la sesión PDN
└── monitoring.md Métricas de Prometheus y alertas
Documentación por Tema
🚀 Comenzando
| Documento | Descripción | Propósito |
|---|---|---|
| OPERATIONS.md | Guía principal de operaciones (este documento) | Descripción general y comienzo rápido |
⚙️ Configuración
| Documento | Descripción | Líneas |
|---|---|---|
| configuration.md | Referencia completa de runtime.exs | 1,600+ |
| ue-ip-allocation.md | Gestión y asignación del grupo de IP de UE | 943 |
| ipv6-dual-stack.md | Operación PDN IPv6 / IPv4v6 a través de PGW-C y UPF | - |
| pco-configuration.md | Opciones de Configuración de Protocolo (DNS, P-CSCF, MTU) | 344 |
🔌 Interfaces de Red
| Documento | Descripción | Líneas |
|---|---|---|
| pfcp-interface.md | Interfaz PFCP/Sxb a PGW-U | 1,355 |
| diameter-gx.md | Interfaz Diameter Gx a PCRF (Control de Políticas) | 941 |
| diameter-gy.md | Interfaz Diameter Gy/Ro a OCS (Carga en Línea) | 1,100+ |
| s5s8-interface.md | Interfaz GTP-C S5/S8 a SGW-C | 456 |
📊 Operaciones y Monitoreo
| Documento | Descripción | Líneas |
|---|---|---|
| session-management.md | Ciclo de vida y operaciones de la sesión PDN | 435 |
| monitoring.md | Métricas de Prometheus, paneles de Grafana, alertas | 807 |
| data-cdr-format.md | Formato de archivo CDR, configuración de URR, carga fuera de línea | 847 |
| qos-bearers.md | Gestión de QoS y portadoras, control de políticas | 448 |
| troubleshooting.md | Procedimientos de solución de problemas y problemas comunes | 687 |
🔧 Características Avanzadas
| Documento | Descripción | Líneas |
|---|---|---|
| pcscf-monitoring.md | Descubrimiento y monitoreo de salud de P-CSCF | 894 |
Características de la Documentación
📈 Diagramas Mermaid
Todos los documentos incluyen gráficos de Mermaid para una comprensión visual:
- Diagramas de arquitectura
- Diagramas de secuencia (flujos de mensajes)
- Máquinas de estado
- Topología de red
💡 Ejemplos Prácticos
Cada documento incluye:
- Ejemplos de configuración del mundo real
- Configuraciones listas para copiar y pegar
- Casos de uso comunes
🔍 Solución de Problemas
Cada documento de interfaz incluye:
- Problemas comunes y soluciones
- Comandos de depuración
- Métricas para diagnóstico
🔗 Referencias Cruzadas
Los documentos están extensamente interconectados para una navegación fácil.
Rutas de Lectura
Para Operadores de Red
- OPERATIONS.md - Descripción general (este documento)
- configuration.md - Configuración
- monitoring.md - Monitoreo
- session-management.md - Operaciones diarias
Para Ingenieros de Red
- OPERATIONS.md - Descripción general de la arquitectura (este documento)
- pfcp-interface.md - Control del plano de usuario
- diameter-gx.md - Control de políticas
- diameter-gy.md - Carga en línea
- s5s8-interface.md - Gestión de sesiones
- ue-ip-allocation.md - Gestión de IP
Para Configuración y Despliegue
- configuration.md - Referencia completa
- ue-ip-allocation.md - Grupos de IP
- pco-configuration.md - Parámetros de red
- monitoring.md - Configuración de monitoreo
Estadísticas del Documento
- Total de Documentos: 14
- Total de Líneas: ~10,900+
- Tamaño Total: ~265 KB
- Diagramas Mermaid: 75+
- Ejemplos de Código: 150+
Conceptos Clave Cubiertos
Arquitectura
- ✅ Separación de plano de control/plano de usuario
- ✅ Arquitectura OTP/Elixir
- ✅ Supervisión de procesos
- ✅ Sesiones basadas en GenServer
Protocolos
- ✅ PFCP (Protocolo de Control de Reenvío de Paquetes)
- ✅ GTP-C v2 (Protocolo de Túnel GPRS)
- ✅ Diameter (RFC 6733)
Interfaces 3GPP
- ✅ Sxb (PGW-C ↔ PGW-U)
- ✅ Gx (PGW-C ↔ PCRF)
- ✅ Gy/Ro (PGW-C ↔ OCS)
- ✅ S5/S8 (SGW-C ↔ PGW-C)
Operaciones
- ✅ Gestión de sesiones
- ✅ Estrategias de asignación de IP
- ✅ Aplicación de QoS
- ✅ Integración de cargos
- ✅ Monitoreo y alertas
Recursos Adicionales
Especificaciones 3GPP
| Especificación | Título |
|---|---|
| TS 29.274 | GTP-C v2 (interfaz S5/S8) |
| TS 29.244 | PFCP (interfaz Sxb) |
| TS 29.212 | Interfaz Diameter Gx (Control de Políticas) |
| TS 32.299 | Aplicaciones de Carga Diameter (Gy/Ro) |
| TS 32.251 | Carga del dominio de Paquetes Conmutados |
| TS 23.401 | Arquitectura EPC |
Documentación Relacionada
- Archivo de configuración: config/runtime.exs