Saltar al contenido principal

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

  1. Descripción General
  2. Arquitectura
  3. Interfaces de Red
  4. Conceptos Clave
  5. Comenzando
  6. Configuración
  7. Monitoreo de Operaciones en Tiempo Real (API OAM)
  8. Monitoreo y Métricas
  9. Documentación Detallada
  10. 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

  1. Configurar ajustes de tiempo de ejecución en config/runtime.exs
  2. Compilar la aplicación:
    mix deps.get
    mix compile
  3. 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ónPropósitoDocumentación
metricsExportador de métricas de PrometheusGuía de Monitoreo
diameterInterfaz Gx a PCRFConfiguración Diameter Gx
s5s8Interfaz GTP-C a SGW-CConfiguración S5/S8
sxbInterfaz PFCP a PGW-UConfiguración PFCP
ueGrupos de direcciones IP de UEConfiguración de Grupo de IP
pcoOpciones de Configuración de ProtocoloConfiguración PCO
CDRReporte de cargos y uso fuera de líneaFormato 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ósitoPunto FinalReemplaza (página antigua)
Profundizar en un suscriptor específico (IMSI/MSISDN/IP)POST /api/ue_searchBúsqueda de UE
Listar / buscar sesiones PDN activasGET /api/sessions[?search=<imsi|msisdn|ip>]Sesiones PGW
Una sesión por IMSIGET /api/sessions/<imsi>Sesiones PGW (detalle)
Historial de sesiones / eventos de auditoríaGET /api/session_history[?type=&search=&page=&page_size=]Historial de Sesiones
Descripci��n general de la topología de redGET /api/topologyTopología de Red
Utilización del grupo de direcciones IP de UEGET /api/ip_pools, GET /api/ip_pools/<name>Grupos de IP
Estado de pares UPF / PFCPGET /api/upf, GET /api/upf/<ip>Sesiones PFCP / Estado de UPF
Reglas de selección de UPF, salud, configuración PCOGET /api/upf_selectionSelecció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ónGET /api/charging[?search=<imsi>], GET /api/charging/<imsi>Estado de Gy
Estado de descubrimiento de DNS P-CSCFGET /api/pcscf_monitorMonitor P-CSCF
Verificación de saludGET /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/charging para 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/asociado de 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_pools para 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 activas
    • seid_registry_count - Sesiones PFCP activas
    • session_id_registry_count - Sesiones Gx activas
    • address_registry_count - Direcciones IP de UE asignadas
    • charging_id_registry_count - IDs de carga activos
  • Métricas de Mensajes

    • s5s8_inbound_messages_total - Mensajes GTP-C recibidos
    • sxb_inbound_messages_total - Mensajes PFCP recibidos
    • gx_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/S8
    • sxb_inbound_errors_total - Errores de protocolo PFCP
    • gx_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 RAT
    • pgw_session_delete_total{pdn_type} - Eliminaciones de sesión PDN por tipo de PDN
    • pgw_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 IP
    • ue_pool_addresses_total{pool,ip_version} - Capacidad total del grupo
    • ue_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 compartidas
    • ue_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 par
    • upf_peer_healthy{peer_ip} - Salud 1/0 por par
    • upf_peer_missed_heartbeats{peer_ip} - Latidos perdidos consecutivos por par
    • upf_heartbeat_rtt - Distribución del tiempo de ida y vuelta del latido PFCP, por peer_ip
  • Métricas de Portadora y QoS

    • pgw_bearer_create_total{type,qci} - Portadoras creadas por tipo (default/dedicated) y QCI
    • pgw_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

DocumentoDescripciónPropósito
OPERATIONS.mdGuía principal de operaciones (este documento)Descripción general y comienzo rápido

⚙️ Configuración

DocumentoDescripciónLíneas
configuration.mdReferencia completa de runtime.exs1,600+
ue-ip-allocation.mdGestión y asignación del grupo de IP de UE943
ipv6-dual-stack.mdOperación PDN IPv6 / IPv4v6 a través de PGW-C y UPF-
pco-configuration.mdOpciones de Configuración de Protocolo (DNS, P-CSCF, MTU)344

🔌 Interfaces de Red

DocumentoDescripciónLíneas
pfcp-interface.mdInterfaz PFCP/Sxb a PGW-U1,355
diameter-gx.mdInterfaz Diameter Gx a PCRF (Control de Políticas)941
diameter-gy.mdInterfaz Diameter Gy/Ro a OCS (Carga en Línea)1,100+
s5s8-interface.mdInterfaz GTP-C S5/S8 a SGW-C456

📊 Operaciones y Monitoreo

DocumentoDescripciónLíneas
session-management.mdCiclo de vida y operaciones de la sesión PDN435
monitoring.mdMétricas de Prometheus, paneles de Grafana, alertas807
data-cdr-format.mdFormato de archivo CDR, configuración de URR, carga fuera de línea847
qos-bearers.mdGestión de QoS y portadoras, control de políticas448
troubleshooting.mdProcedimientos de solución de problemas y problemas comunes687

🔧 Características Avanzadas

DocumentoDescripciónLíneas
pcscf-monitoring.mdDescubrimiento y monitoreo de salud de P-CSCF894

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

  1. OPERATIONS.md - Descripción general (este documento)
  2. configuration.md - Configuración
  3. monitoring.md - Monitoreo
  4. session-management.md - Operaciones diarias

Para Ingenieros de Red

  1. OPERATIONS.md - Descripción general de la arquitectura (este documento)
  2. pfcp-interface.md - Control del plano de usuario
  3. diameter-gx.md - Control de políticas
  4. diameter-gy.md - Carga en línea
  5. s5s8-interface.md - Gestión de sesiones
  6. ue-ip-allocation.md - Gestión de IP

Para Configuración y Despliegue

  1. configuration.md - Referencia completa
  2. ue-ip-allocation.md - Grupos de IP
  3. pco-configuration.md - Parámetros de red
  4. 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ónTítulo
TS 29.274GTP-C v2 (interfaz S5/S8)
TS 29.244PFCP (interfaz Sxb)
TS 29.212Interfaz Diameter Gx (Control de Políticas)
TS 32.299Aplicaciones de Carga Diameter (Gy/Ro)
TS 32.251Carga del dominio de Paquetes Conmutados
TS 23.401Arquitectura EPC

Documentación Relacionada