Documentación de la Interfaz Sxa
Comunicación PFCP con SGW-U
OmniSGW de Omnitouch Network Services
Tabla de Contenidos
- Descripción General
- Detalles del Protocolo
- Configuración
- Asociación PFCP
- Gestión de Sesiones
- Reglas PFCP
- Informes de Uso
- Operaciones de Red
- Solución de Problemas
Descripción General
La interfaz Sxa conecta OmniSGW al SGW-U (Serving Gateway User Plane) utilizando el protocolo PFCP (Packet Forwarding Control Protocol). Esta interfaz controla el reenvío de paquetes del plano de usuario, la aplicación de QoS y la elaboración de informes de uso.
Características Clave
- PFCP v1.0 - Control de reenvío de paquetes conforme a estándares
- Seguimiento de Sesiones Basado en SEID - Identificadores de Punto de Final de Sesión para asociación
- Reglas de Detección de Paquetes - Coincidencia flexible de paquetes para uplink/downlink
- Reglas de Acción de Reenvío - Control del enrutamiento y encapsulación de paquetes
- Aplicación de QoS - Limitación de bitrate por portadora y priorización
- Medición de Uso - Seguimiento de volumen para facturación y análisis
- Control de Buffering - Buffering automático durante eventos de movilidad
Detalles del Protocolo
Versión PFCP 1.0
- Protocolo: PFCP v1.0 (3GPP TS 29.244)
- Transporte: UDP
- Puerto: 8805 (estándar)
- Tipo de Interfaz: Plano de Control
- Modelo de Asociación: CP y UP forman una asociación persistente
SEID (Identificador de Punto de Final de Sesión)
Cada sesión tiene SEIDs únicos para seguimiento:
- CP SEID - Asignado por SGW-C, utilizado en mensajes de uplink a SGW-U
- UP SEID - Asignado por SGW-U, utilizado en mensajes de downlink a SGW-C
Enrutamiento de Mensajes:
SGW-C → SGW-U: Usa el UP SEID de SGW-U
SGW-U → SGW-C: Usa el CP SEID de SGW-C
Resumen de Tipos de Mensajes
Configuración
Configuración Básica
# config/runtime.exs
config :sgw_c,
sxa: %{
# Dirección IP local para la interfaz Sxa
local_ip_address: "10.0.0.20",
# Opcional: Sobrescribir puerto por defecto
local_port: 8805,
# Pares SGW-U a los que conectarse
peers: [
%{
ip_address: "10.0.0.30",
node_id: "sgw-u-1.example.com"
},
%{
ip_address: "10.0.0.31",
node_id: "sgw-u-2.example.com"
}
],
# Intervalo de latido de asociación (segundos)
heartbeat_interval_s: 20,
# Tiempo de espera para el establecimiento de sesión (milisegundos)
session_timeout_ms: 5000,
# Máximo de reintentos para operaciones de sesión
max_retries: 3
}
Requisitos de Red
Reglas de Firewall:
# Permitir PFCP desde la red SGW-U
iptables -A INPUT -p udp --dport 8805 -s <sgwu_network>/24 -j ACCEPT
# Permitir PFCP saliente a SGW-U
iptables -A OUTPUT -p udp --dport 8805 -d <sgwu_network>/24 -j ACCEPT
Enrutamiento:
# Asegurar ruta a la red SGW-U
ip route add <sgwu_network>/24 via <gateway_ip> dev eth0
Pruebas de Red:
# Probar conectividad PFCP
# Verificar registros para el mensaje "Configuración de Asociación Completa"
# Monitorear sesiones PFCP activas
curl http://127.0.0.40:42068/metrics | grep seid_registry_count
Asociación PFCP
Ciclo de Vida de la Asociación
Antes de que se puedan establecer sesiones, SGW-C y SGW-U deben formar una asociación PFCP.
Máquina de Estados de Asociación
[Desconectado]
↓ (Solicitud de Configuración)
[Asociando]
↓ (Respuesta de Configuración OK)
[Asociado]
↓ (Sesiones Creadas)
[Sesiones Activas]
↓ (Fallo de Latido)
[Re-asociando]
↓ (Configuración OK o Tiempo de Espera)
[Asociado o Desconectado]
Manejo de Recuperación
Si se pierde y recupera una asociación PFCP:
-
Detección de Recuperación:
- El tiempo de espera del latido activa la recuperación
- Se envía una nueva Configuración de Asociación
- Se verifica la Marca de Tiempo de Recuperación
-
Recuperación de Sesiones:
- Las sesiones pueden o no ser recuperables
- Consultar a SGW-U por sesiones existentes
- Reestablecer sesiones perdidas si es necesario
-
Reenvío de Datos:
- Buffering del plano de usuario en SGW-U durante la recuperación
- Los PDRs permanecen activos hasta que se eliminen explícitamente
- Minimizar la pérdida de paquetes durante el failover
Gestión de Sesiones
Establecimiento de Sesión
Disparador: Solicitud de Crear Sesión desde MME (recibida en S11)
Elementos de Información Enviados:
| Elemento | Descripción |
|---|---|
| CP SEID | Asignado por SGW-C para esta sesión |
| PDRs | Reglas de Detección de Paquetes (ver abajo) |
| FARs | Reglas de Acción de Reenvío |
| QERs | Reglas de Aplicación de QoS |
| BAR | Regla de Acción de Buffering para movilidad |
| Crear PDR | Identificadores de reglas para respuesta |
Estado de la Sesión:
[Sin Sesión]
↓ (Solicitud de Establecimiento)
[Estableciendo]
↓ (Respuesta de Establecimiento)
[Sesión Activa]
Modificación de Sesión
Disparador: Solicitud de Modificación de Portadora desde MME (cambio de QoS, traspaso)
Modificaciones Comunes:
| Modificación | Elementos Actualizados | Razón |
|---|---|---|
| Cambio de QoS | QERs | Mejora/reducción de portadora |
| Traspaso | PDRs, FARs | Cambio de eNodeB, selección de SGW-U |
| Añadir Portadora | Nuevo PDR, FAR, QER | Activación de portadora dedicada |
| Eliminar Portadora | Eliminar PDR, FAR, QER | Desactivación de portadora |
Eliminación de Sesión
Disparador: Solicitud de Eliminación de Sesión desde MME (desvinculación)
Estado de la Sesión:
[Sesión Activa]
↓ (Solicitud de Eliminación)
[Eliminando]
↓ (Respuesta de Eliminación)
[Sesión Terminada]
Reglas PFCP
PDR (Regla de Detección de Paquetes)
Coincide paquetes entrantes para identificar flujos de tráfico.
Criterios de Detección de Paquetes:
| Criterio | Descripción | Ejemplo |
|---|---|---|
| Interfaz de Origen | Desde dónde llega el paquete | Acceso (S1-U), Núcleo (S5/S8) |
| Dirección IP de Origen | Dirección IP del UE (para Acceso) | 10.45.0.50 |
| Dirección IP de Destino | IP de red externa (para Núcleo) | 8.8.8.8 |
| Tipo de Protocolo | Número de protocolo IP | TCP (6), UDP (17) |
| Puerto de Origen | Coincidencia de puerto | 1024-65535 |
| Puerto de Destino | Coincidencia de puerto | 80 (HTTP), 443 (HTTPS) |
| TEID | Identificador de túnel GTP-U | Para paquetes de downlink |
Estructura de PDR:
Estructura de PDR:
├── ID de PDR (único dentro de la sesión)
├── Precedencia (prioridad para reglas superpuestas)
├── Criterios de Detección de Paquetes
│ ├── Interfaz de Origen
│ ���── Instancia de Red (APN)
│ └── Dirección IP del UE / Dirección IP de Destino
├── ID de FAR (qué regla de reenvío aplicar)
├── ID de QER (qué regla de QoS aplicar)
└── Disparador de Informe de Uso
Caso de Uso Ejemplo - Portadora por Defecto:
- Detecta: Todos los paquetes de/hacia la IP del UE
- Acción: Reenviar a través de PDN (dirección PGW-U)
- QoS: Aplicado por portadora
Caso de Uso Ejemplo - Portadora Dedicada:
- Detecta: Paquetes que coinciden con flujo específico (rango de puertos, protocolo)
- Acción: Reenviar por camino dedicado
- QoS: Tarifas premium (GBR)
FAR (Regla de Acción de Reenvío)
Especifica cómo manejar los paquetes coincidentes.
Acciones de Reenvío:
| Acción | Descripción | Caso de Uso |
|---|---|---|
| Reenviar | Enviar paquete a la red de destino | Reenvío normal |
| Buffer | Almacenar paquete temporalmente | Durante movilidad/paging |
| Descartar | Eliminar paquete | Aplicación de políticas, firewall |
| Duplicar | Enviar paquete a múltiples destinos | Intercepción legal |
Opciones de Encapsulación:
- GTP-U - Agregar encabezado de túnel GTP-U (S1-U, S5/S8)
- Ethernet - Agregar encabezado Ethernet (para interconexión directa)
- IPv4 - Reenvío IPv4 simple (para salida a internet)
- IPv6 - Reenvío IPv6 simple
Ejemplo - UE a Internet:
Coincidencia de PDR: Interfaz de Origen = Acceso, IP del UE = 10.45.0.50
Acción de FAR:
- Reenviar = Sí
- Encapsulación de Encabezado Externo = Ninguna (internet directa)
- Parámetros de Reenvío = Puerta de enlace a internet
QER (Regla de Aplicación de QoS)
Aplica límites de bitrate por portadora.
Parámetros de QoS:
| Parámetro | Tipo | Descripción |
|---|---|---|
| QCI | Entero | Identificador de Clase de QoS (1-9) |
| MBR (Bitrate Máximo) | Bitrate | Tasa máxima permitida |
| GBR (Bitrate Garantizado) | Bitrate | Tasa mínima garantizada |
| ARP | Entero | Prioridad de Asignación y Retención (1-15) |
Clases de QoS (QCI):
| QCI | Tipo de Servicio | Ejemplos de Bitrate |
|---|---|---|
| 1 | Voz (GBR) | MBR: 64 kbps |
| 2 | Llamada de Video (GBR) | MBR: 256 kbps |
| 3 | Juegos en Tiempo Real (GBR) | MBR: 50 kbps |
| 4 | No-GBR | GBR: 128 kbps, MBR: 256 kbps |
| 5 | Señalización IMS | GBR: 100 kbps, MBR: 256 kbps |
| 6 | Streaming de Video | MBR: 10 Mbps |
| 7 | Voz con Video (GBR) | GBR: 64 kbps, MBR: 384 kbps |
| 8 | Navegación Web | MBR: 5 Mbps |
| 9 | Correo Electrónico | MBR: 3 Mbps |
Ejemplo - Portadora por Defecto (QCI 9):
QCI: 9 (Mejor Esfuerzo)
MBR: 100 Mbps (dependiente del sitio)
GBR: Ninguno (no-GBR)
ARP: 15 (prioridad más baja)
Ejemplo - Portadora Dedicada de Voz (QCI 1):
QCI: 1 (Voz)
MBR: 128 kbps (uplink + downlink)
GBR: 64 kbps (garantizado)
ARP: 1 (prioridad más alta)
BAR (Regla de Acción de Buffering)
Controla el buffering de paquetes durante eventos de movilidad.
Escenarios de Buffering:
-
Buffering de Traspaso:
- UE se transfiere entre eNodeBs
- Paquetes almacenados mientras se mueve
- Liberados cuando se completa el traspaso
-
Buffering de Paging:
- UE en estado inactivo (portadoras suspendidas)
- Llega datos de downlink
- Almacenados hasta que el UE se reactive
-
Reubicación de SGW:
- Durante el traspaso inter-MME con cambio de SGW
- SGW antiguo almacena y reenvía al nuevo SGW
- Se mantiene la entrega ordenada
Configuración de BAR:
Configuración de BAR:
├── Tiempo de Espera de Buffer: Cuánto tiempo mantener los paquetes
├── Umbral de Conteo de Paquetes: Máx. paquetes almacenados
└── Disparador de Informe de Datos de Downlink
└── Enviar notificación al CP cuando lleguen datos
Informes de Uso
Mensajes de Informe de Uso
SGW-U envía informes de uso a SGW-C para facturación y análisis.
Disparadores de Informe de Uso
Los informes se envían cuando:
| Disparador | Condición |
|---|---|
| Período de Tiempo | Informe periódico cada N segundos |
| Umbral de Volumen | Después de N octetos reenviados |
| Umbral de Duración | Después de N segundos de reenvío |
| Fin de Sesión | Cuando se elimina la sesión |
| Modificación | Cuando se actualizan las reglas |
| Informe Inmediato | Solicitado en el mensaje de modificación |
Campos del Informe de Uso
Informe de Uso:
├── Disparador de Informe de Uso: Qué causó este informe
├── UR-SEQN: Número de secuencia para ordenación
├── Información de Uso por Portadora:
│ ├── EBI: Identificador de portadora
│ ├── Medición de Volumen
│ │ ├── UL: Octetos de uplink
│ │ ├── DL: Octetos de downlink
│ │ ├── Total: Total de octetos
│ │ └── Paquetes: Total de paquetes
│ ├── Medición de Duración: Segundos activos
│ └── Hora del Primer/Último Paquete: Timestamps
└── Consulta UR: Solicitar informe inmediato
Flujo de Generación de CDR
Operaciones de Red
Monitoreo de Asociación PFCP
Monitorear asociaciones PFCP activas:
# Verificar estado de asociación
curl -s http://127.0.0.40:42068/metrics | grep pfcp_association
# Salida esperada:
# pfcp_association_status{peer_ip="10.0.0.30"} 1 (asociado)
# pfcp_association_status{peer_ip="10.0.0.31"} 1 (asociado)
# Interfaz Web → Página de Estado de SGW-U
# Muestra todos los pares con estado "Asociado" e información de recuperación
Métricas de Sesión
Monitorear sesiones PFCP activas:
# Contar sesiones activas
curl -s http://127.0.0.40:42068/metrics | grep seid_registry_count
# Monitorear distribución por SGW-U
curl -s http://127.0.0.40:42068/metrics | grep seid_by_peer
# Tasa de uso (octetos/segundo)
curl -s http://127.0.0.40:42068/metrics | grep usage_octets_rate
Monitoreo del Flujo de Mensajes
Rastrear la actividad de mensajes PFCP:
# Monitorear todos los mensajes PFCP
watch -n 1 'curl -s http://127.0.0.40:42068/metrics | grep sxa_inbound'
# Salida de ejemplo:
# sxa_inbound_messages_total{message_type="session_establishment_response"} 5432
# sxa_inbound_messages_total{message_type="session_modification_response"} 12100
# sxa_inbound_messages_total{message_type="session_report_request"} 67000
Verificación de Instalación de Reglas
Verificar si las reglas están correctamente instaladas en SGW-U:
# Monitorear éxitos/fallos en el establecimiento de sesiones
curl -s http://127.0.0.40:42068/metrics | grep sxa_session_establishment
# Verificar problemas de instalación de PDR
curl -s http://127.0.0.40:42068/metrics | grep pdr_installation
# Buscar tiempos de espera
curl -s http://127.0.0.40:42068/metrics | grep sxa_timeout_total
Solución de Problemas
Fallos de Asociación
Problema: "Configuración de Asociación Fallida"
Diagnóstico:
- Verificar conectividad de red:
ping <sgwu_ip> - Verificar puerto:
netstat -an | grep 8805 - Verificar registros para detalles de error
Causas Comunes y Soluciones:
| Causa | Síntoma | Solución |
|---|---|---|
| Red inalcanzable | Tiempo de espera en configuración | Verificar enrutamiento a SGW-U |
| Puerto bloqueado | Conexión rechazada | Verificar reglas de firewall |
| SGW-U apagado | Sin respuesta | Reiniciar proceso SGW-U |
| Desajuste de ID de Nodo | Configuración rechazada | Verificar configuración |
Fallos en el Establecimiento de Sesión
Problema: "Establecimiento de Sesión Fallido"
Diagnóstico:
# Verificar métricas
curl -s http://127.0.0.40:42068/metrics | grep seid_registry_count
# Verificar registros para error específico
tail -f /var/log/sgw_c/sgw_c.log | grep "Establecimiento de Sesión"
Causas Comunes:
| Causa | Mensaje de Error | Solución |
|---|---|---|
| SGW-U sin recursos | "Recursos insuficientes" | Verificar capacidad de SGW-U |
| PDR inválido | "IE obligatoria faltante" | Verificar definiciones de reglas |
| Conflicto de SEID | "SEID ya existe" | Verificar duplicación de sesión |
| Tiempo de espera | "Tiempo de espera para establecimiento de sesión" | Aumentar tiempo de espera o verificar SGW-U |
Problemas de Informe de Uso
Problema: "Informes de Uso Faltantes"
Diagnóstico:
# Verificar conteo de informes
curl -s http://127.0.0.40:42068/metrics | grep session_report_request_total
# Monitorear generación de CDR
tail -f /var/log/sgw_c/cdrs/<timestamp>
Soluciones:
- Verificar que el latido de SGW-U esté activo
- Verificar configuración del disparador de Informe de Sesión
- Asegurarse de que los permisos del directorio CDR sean correctos
- Monitorear para desbordamiento de buffer en SGW-U
Problemas de Rendimiento
Problema: Alta latencia de mensajes PFCP
Métricas a Verificar:
# Duración del procesamiento de mensajes
curl -s http://127.0.0.40:42068/metrics | grep sxa_inbound_duration_seconds
# Carga por par
curl -s http://127.0.0.40:42068/metrics | grep seid_by_peer
# Profundidad de la cola
curl -s http://127.0.0.40:42068/metrics | grep pfcp_queue_depth
Pasos de Optimización:
- Balancear carga entre múltiples pares SGW-U
- Aumentar tiempo de espera de latido si la red es propensa a pérdidas
- Monitorear y reducir la complejidad de las reglas
- Escalar horizontalmente con instancias adicionales de SGW-C
Para referencia completa de métricas, configuración de panel y configuración de alertas, consulte la Guía de Monitoreo y M��tricas.
Mejores Prácticas
Configuración
- Intervalo de Latido: Establecer entre 20-30 segundos para detección confiable
- Tiempo de Espera de Sesión: 5-10 segundos basado en RTT de red
- Máximo de Reintentos: 2-3 para balance entre confiabilidad y latencia
- Selección de Pares: Distribuir carga entre todos los pares SGW-U
Operaciones
- Redundancia de Pares: Configurar múltiples instancias de SGW-U para failover
- Recarga Suave: Soporte para actualizaciones de software en servicio
- Drenaje de Sesiones: Migrar sesiones antes del mantenimiento
- Monitoreo: Rastrear frecuencia de recuperación de asociación
Solución de Problemas
- Mantener Registros: Conservar trazas de mensajes PFCP para depuración
- Correlación: Vincular mensajes S11 a operaciones de sesión PFCP
- Métricas de Línea Base: Establecer línea base de rendimiento normal
- Probar Escenarios de Fallo: Practicar procedimientos de failover de SGW-U