Resolución de Problemas de OmniEPDG
Esta guía cubre problemas operativos comunes, procedimientos de diagnóstico y pasos de resolución para OmniEPDG.
Visión General del Diagnóstico
Archivos de Registro
OmniEPDG escribe registros en el directorio log/ relativo al directorio de trabajo de la aplicación. Consulte la Referencia de Configuración para obtener detalles sobre la configuración de registros.
| Archivo | Propósito | Cuándo Verificar |
|---|---|---|
log/console.log | Todos los mensajes de la aplicación en nivel de depuración | Primer punto de investigación para cualquier problema |
log/error.log | Solo errores | Escaneo rápido para problemas activos |
log/crash.log | Caídas del proceso OTP | Cuando los procesos se reinician inesperadamente |
log/erlang.log | Registrador del núcleo Erlang | Problemas de bajo nivel de Erlang/OTP |
Patrones Clave de Registro
Eventos de conexión de pares Diameter:
peer_up- Par Diameter conectado y capacidades intercambiadaspeer_down- Par Diameter desconectado
Transiciones de estado de FSM de UE:
ue_fsm state_<name> event=<event>- FSM procesando un evento en un estado dadoue_fsm init(<IMSI>)- Nueva instancia de FSM creada para el suscriptorterminating epdg_ue_fsm with reason <reason>- FSM cerrándose
Eventos de tiempo de espera:
Timeout swm_der_timeout- Respuesta SWm DER agotadaTimeout create_session_timeout- Respuesta de Crear Sesión GTPv2-C agotadaTimeout s2b_delete_session_timeout- Respuesta de Eliminar Sesión GTPv2-C agotadaTimeout cancel_location_timeout- Respuesta de Cancelar Ubicación agotada
Problemas de Conectividad Diameter
Fallo de Conexión HSS (SWx)
Síntomas: Ningún suscriptor puede autenticarse. Los registros muestran intentos de conexión repetidos al HSS.
Causas posibles:
- Firewall bloqueando el puerto SCTP 3868 entre OmniEPDG y HSS
dia_swx_remote_ipodia_swx_remote_portincorrectos en la configuración- HSS no funcionando o no aceptando conexiones Diameter
- SCTP no habilitado en la ruta de red (algunos firewalls bloquean SCTP por defecto)
- Desajuste de Origin-Host o Origin-Realm causando rechazo de CEA
Resolución:
- Verificar la conectividad de red a la IP y puerto del HSS
- Confirmar que
dia_swx_remote_ipydia_swx_remote_portcoinciden con la configuración del HSS - Verificar que el tráfico SCTP esté permitido a través de todos los firewalls. Si SCTP está bloqueado, establecer
dia_swx_protoatcpcomo alternativa - Verificar que
dia_swx_origin_hostsea un FQDN resolvible y coincida con lo que espera el HSS - Verificar los registros del HSS para fallos de negociación Diameter CER/CEA
Fallo de Conexión PGW (S6b)
Síntomas: La autenticación tiene éxito, pero la creación del túnel GTP falla o nunca llega un AAR S6b del PGW. Los registros no muestran ningún evento peer_up de S6b.
Causas posibles:
- PGW no configurado para conectarse al oyente S6b de OmniEPDG
- Firewall bloqueando el puerto SCTP 3868 en la dirección de enlace S6b de OmniEPDG
dia_s6b_local_ipno accesible desde el PGW- Desajuste de Origin-Host o Origin-Realm
Resolución:
- Confirmar que el PGW está configurado para conectarse a OmniEPDG en
dia_s6b_local_ip:dia_s6b_local_port - Verificar que la dirección de enlace S6b sea accesible desde la red del PGW
- Verificar que las reglas del firewall permitan SCTP entrante en el puerto 3868 en la dirección S6b
- Verificar que
dia_s6b_origin_hostydia_s6b_origin_realmcoincidan con lo que espera el PGW
Fallos de Watchdog de Diameter
Síntomas: Las conexiones Diameter establecidas se caen intermitentemente. Los registros muestran transiciones de watchdog a estado SUSPECT o DOWN.
Causas posibles:
- Inestabilidad en la ruta de red o pérdida de paquetes
- Par sobrecargado y no respondiendo a DWR dentro de
dia_swx_watchdog_timer - Configuración de watchdog agresiva (demasiados pocos reintentos antes de declarar sospechoso)
Resolución:
- Verificar la calidad de la ruta de red (pérdida de paquetes, latencia) entre OmniEPDG y el par
- Si se espera pérdida de paquetes, aumentar los umbrales de
dia_swx_watchdog_config/dia_s6b_watchdog_config(por ejemplo,[{okay, 5}, {suspect, 3}]) - Verificar la salud del sistema par (CPU, memoria, conteo de conexiones)
Fallos de Negociación IKEv2
No se Elegió Propuesta
Síntomas: El IKE_SA_INIT del UE es rechazado con NO_PROPOSAL_CHOSEN; los registros muestran exchange error: :no_proposal_chosen. El UE nunca avanza más allá de IKE_SA_INIT.
Causas posibles:
- El UE solo ofrece transformaciones criptográficas que OmniEPDG no soporta.
- Un escáner o cliente mal configurado sondeando los puertos públicos.
Antecedentes: OmniEPDG acepta cifrado AES-CBC y AES-GCM; integridad HMAC-SHA2, HMAC-SHA1 y AES-XCBC-96; PRFs HMAC-SHA2, HMAC-SHA1 y PRF-AES128-XCBC; y grupos DH MODP/ECP/Curve25519/448. Consulte Algoritmos Criptográficos para la lista completa. Algunos teléfonos (notablemente ciertos clientes Samsung VoWiFi) ofrecen solo AES-CBC-256 / AUTH_AES_XCBC_96 / PRF_AES128_XCBC / MODP-2048 — todos soportados.
Resolución:
- Habilitar el registro
:debuge inspeccionar el eventoIKEv2 packetpara la carga útil SA del UE — los campospayloads[].proposals[]enumeran las transformaciones exactas ofrecidas. - Confirmar que el cifrado ofrecido / integridad / PRF / transformaciones DH aparezcan como Soportadas en las tablas de algoritmos.
- Si se requiere una transformación genuinamente no soportada, plantearlo con ingeniería.
La Conexión Se Establece y Luego Se Corta Inmediatamente (SA Hijo Eliminado)
Síntomas: IKE_AUTH se completa, la sesión se establece brevemente, luego el UE envía un DELETE INFORMACIONAL dentro de ~100 ms. No hay flujos de medios. Se repite en cada intento.
Causas posibles:
- Las transformaciones de SA Hijo (ESP) en la respuesta no coinciden con lo que ofreció el UE, por lo que el UE elimina la SA.
- Un algoritmo de integridad/cifrado ESP que el plano de datos no puede procesar.
Antecedentes: OmniEPDG negocia la SA Hijo ESP a partir de la propuesta ofrecida por el UE (incluyendo AES-XCBC-96 y AES-CBC-128/192/256) en lugar de forzar un conjunto fijo. Una respuesta que selecciona una transformación que el UE no ofreció es rechazada según el RFC 7296.
Resolución:
- En
:debug, verificar la línea de registrochild SA proposal selected— los camposesp_offered,esp_encryesp_integmuestran lo que fue ofrecido y elegido. - Verificar que la longitud de la clave de cifrado ESP seleccionada coincida con el cifrado (un desajuste se presenta como
Bad key sizey un paquete descartado). - Confirmar que la integridad ESP ofrecida por el UE sea una que OmniEPDG soporte (ver Algoritmos de SA Hijo ESP).
Fallos de Autenticación
IMSI Desconocido (Diameter 5001)
Síntomas: Suscriptores específicos fallan en la autenticación EAP-AKA. Los registros muestran SWx MAA con código de resultado 5001 (DIAMETER_ERROR_USER_UNKNOWN).
Causas posibles:
- Suscriptor no provisionado en el HSS
- Desajuste de IMSI entre la SIM del UE y la base de datos del HSS
- Formato NAI incorrecto, causando que la extracción de IMSI falle
Resolución:
- Verificar que el IMSI del suscriptor exista en la base de datos del HSS
- Verificar que el formato NAI en los registros coincida con el patrón esperado:
0<IMSI>@nai.epc.mnc<MNC>.mcc<MCC>.3gppnetwork.org - Confirmar que el IMSI de la tarjeta SIM coincida con el valor provisionado en el HSS
Autorización Rechazada (Diameter 5003)
Síntomas: El suscriptor se autentica pero es rechazado durante la asignación del servidor. Los registros muestran SWx SAA con código de resultado 5003.
Causas posibles:
- Suscriptor no autorizado para el servicio de llamadas WiFi
- APN no permitido para este suscriptor
- Restricciones en el perfil de suscripción
Resolución:
- Verificar el perfil de servicio del suscriptor en el HSS
- Confirmar que el acceso a llamadas WiFi / ePDG esté habilitado para el suscriptor
- Verificar que el APN solicitado esté en la lista de APN permitidos del suscriptor
Roaming No Permitido (Diameter 5004)
Síntomas: Suscriptores en roaming fallan en la autenticación. Los registros muestran SWx MAA o SAA con código de resultado 5004.
Causas posibles:
- La política de roaming del HSS rechaza la ubicación actual del suscriptor
- Llamadas WiFi no permitidas para suscriptores en roaming
Resolución:
- Revisar las políticas de roaming del HSS para la combinación HPLMN/VPLMN del suscriptor
- Verificar si las llamadas WiFi están permitidas bajo acuerdos de roaming
Tiempo de Espera de Autenticación
Síntomas: La autenticación se queda colgada y luego falla después de 10 segundos. Los registros muestran Timeout swm_der_timeout en state_wait_auth_resp.
Causas posibles:
- HSS no responde a SWx MAR dentro de 10 segundos
- Conexión Diameter SWx caída durante la solicitud
- HSS sobrecargado
Resolución:
- Verificar la capacidad de respuesta y carga del HSS
- Confirmar que el par Diameter SWx esté en estado OKAY (no SUSPECT o DOWN)
- Verificar que
dia_swx_transmit_timersea adecuado para la latencia de red al HSS
Desajuste de Tipo EAP-AKA
Síntomas: La autenticación falla con un error "type_mismatch" en los registros. El prefijo de identidad del UE no coincide con el método EAP utilizado.
Causas posibles:
- El UE envía identidad con prefijo
0(EAP-AKA) pero la red espera EAP-AKA', o viceversa - HSS devuelve vectores de autenticación para el tipo EAP incorrecto
Antecedentes: Según 3GPP TS 23.003, el prefijo de identidad NAI indica el tipo de autenticación esperado:
- Prefijo
0indica EAP-AKA - Prefijo
6indica EAP-AKA'
OmniEPDG selecciona automáticamente el método de autenticación basado en el prefijo de identidad del UE. La mayoría de los UEs de llamadas WiFi utilizan el prefijo 0 (EAP-AKA).
Resolución:
- Verificar la identidad NAI del UE en los registros para verificar el prefijo
- Asegurarse de que el HSS esté configurado para devolver vectores de autenticación apropiados
- Verificar que la tarjeta SIM esté provisionada correctamente para el tipo de autenticación esperado
Desajuste de RES EAP-AKA
Síntomas: La autenticación falla después del desafío/respuesta. Los registros muestran "RES mismatch" o "res_mismatch" error.
Causas posibles:
- Fallo de autenticación de la tarjeta SIM
- Desajuste en la derivación de claves entre el UE y la red
- Vectores de autenticación corruptos del HSS
Resolución:
- Verificar que la tarjeta SIM sea válida y no esté dañada
- Comprobar que el HSS devolvió vectores de autenticación válidos (RAND, AUTN, XRES, CK, IK)
- Habilitar el registro de depuración para comparar el XRES esperado con el RES recibido
- Si se utilizan SIMs de prueba, verificar que los valores Ki y OP/OPc coincidan entre la SIM y el HSS
Fallos de Túnel GTP (Solo Modo GTP)
Crear Sesión Rechazada por PGW
Síntomas: La autenticación tiene éxito, pero la creación del túnel falla. Los registros muestran Respuesta de Crear Sesión GTPv2-C con código de error.
Códigos de causa comunes y acciones:
| Código de Causa | Nombre | Acción |
|---|---|---|
| 78 | APN Faltante o Desconocido | Verificar que el APN esté configurado en el PGW y coincida con el perfil del suscriptor |
| 82 | Denegado en RAT | Verificar que la política del PGW permita el tipo de acceso WiFi (no-3GPP) |
| 84 | Todas las Direcciones Dinámicas Ocupadas | Grupo de IP del PGW agotado; expandir grupo o investigar fugas |
| 92 | Fallo de Autenticación del Usuario | Fallo de autenticación del lado del PGW; verificar autorización de sesión S6b |
| 93 | Acceso a APN Denegado | Suscriptor no autorizado para APN en PGW |
| 96 | IMSI/IMEI No Conocido | Suscriptor desconocido para PGW; verificar que la sesión S6b fue autorizada |
| 113 | Congestión de APN | APN sobrecargado; reintentar o investigar la capacidad del PGW |
| 120 | Congestión de Entidad GTP-C | Plano de control del PGW sobrecargado |
Tiempo de Espera para Crear Sesión
Síntomas: La creación del túnel se queda colgada durante 10 segundos y luego falla. Los registros muestran Timeout create_session_timeout en state_wait_create_session_resp.
Causas posibles:
- PGW no accesible en
gtpc_remote_ip:gtpc_remote_port - Firewall bloqueando el puerto UDP 2123 entre OmniEPDG y PGW
- PGW sobrecargado y no respondiendo a solicitudes GTPv2-C
Resolución:
- Verificar la conectividad de red al PGW en el puerto UDP 2123
- Comprobar que las reglas del firewall permitan UDP 2123 entre OmniEPDG y PGW
- Verificar la salud del PGW y la capacidad de procesamiento GTPv2-C
Túnel GTP-U No Pasa Tráfico
Síntomas: El túnel está establecido (Crear Sesión tiene éxito) pero el tráfico del suscriptor no fluye.
Causas posibles:
- Módulo del núcleo GTP-U no cargado
- La IP del socket
gtp_u_kmodno coincide con la dirección del punto final del túnel GTP-U señalada al PGW - Enrutamiento no configurado para el dispositivo del túnel GTP
- Firewall bloqueando el puerto UDP 2152 (GTP-U)
Resolución:
- Verificar que el módulo GTP del núcleo de Linux esté cargado (
lsmod | grep gtp) - Confirmar que el dispositivo del túnel GTP exista (
ip link show gtp0) - Verificar que
gtp_u_kmodipcoincida congtpc_local_ipo la dirección señalada en la Solicitud de Crear Sesión - Comprobar que la tabla de enrutamiento incluya rutas a través del dispositivo del túnel GTP
- Verificar que el firewall permita el puerto UDP 2152 entre OmniEPDG y PGW
Fallos de VPN Simple (Solo Modo VPN Simple)
Interfaz TUN No Creada
Síntomas: OmniEPDG se inicia pero no aparece ninguna interfaz omniepdg0. Las sesiones fallan en la configuración del túnel. Los registros pueden mostrar errores de simple_vpn_route durante el inicio.
Causas posibles:
- El proceso de OmniEPDG carece de la capacidad
CAP_NET_ADMINo no se está ejecutando como root - Módulo del núcleo TUN/TAP no cargado
- Otro proceso ya ha creado una interfaz llamada
omniepdg0
Resolución:
- Verificar que el módulo del núcleo TUN esté disponible (
lsmod | grep tun) - Confirmar que OmniEPDG se esté ejecutando con privilegios suficientes para crear interfaces TUN
- Verificar si
omniepdg0ya existe de una instancia anterior (ip link show omniepdg0) - Revisar
log/crash.logen busca de errores del proceso del administrador de rutas
Grupo de IP Agotado
Síntomas: La autenticación tiene éxito, pero la configuración del túnel falla. Los registros muestran fallo de asignación de IP de simple_vpn_pool.
Causas posibles:
- Todas las direcciones en el grupo CIDR configurado están asignadas a sesiones activas
- Las direcciones IP no se están liberando después de la finalización de la sesión (fuga)
- Tamaño del grupo demasiado pequeño para el número de suscriptores concurrentes
Resolución:
- Verificar el número de procesos
epdg_ue_fsmactivos en comparación con el tamaño del grupo - Confirmar que las sesiones se están cerrando correctamente (verificar mensajes de registro
terminating) - Si el grupo está realmente lleno, expandirlo utilizando un prefijo CIDR más grande en
simple_vpn_pool_ipv4(requiere reinicio) - Verificar si hay fallos de FSM durante la finalización en
log/crash.logque puedan haber impedido la liberación de IP
Tráfico del Suscriptor No Fluye
Síntomas: La sesión está establecida y el UE recibe una dirección IP, pero el tráfico no fluye a través de la interfaz TUN.
Causas posibles:
- Ruta de host no añadida para la IP del suscriptor en
omniepdg0 - Reenvío de IP no habilitado en el host de OmniEPDG
- Reglas de firewall bloqueando el tráfico en la interfaz
omniepdg0 - Faltan reglas de NAT/mascarado para el tráfico saliente del rango de IP del suscriptor
Resolución:
- Verificar que la ruta de host exista (
ip route showy buscar la ruta /32 del suscriptor a través deomniepdg0) - Confirmar que el reenvío de IP esté habilitado (
sysctl net.ipv4.ip_forward) - Verificar que las reglas de iptables/nftables permitan el reenvío a través de
omniepdg0 - Si los suscriptores necesitan acceso a Internet, verificar que NAT/mascarado esté configurado para el rango de IP del suscriptor (por ejemplo,
iptables -t nat -A POSTROUTING -s 10.45.0.0/16 -o <wan-interface> -j MASQUERADE)
Rutas Obsoletas Después de un Fallo
Síntomas: Las rutas de host para las IPs de suscriptores permanecen en la tabla de enrutamiento después de que OmniEPDG se reinicia o después de que las sesiones terminan anormalmente.
Causas posibles:
- FSM falló antes de que se pudiera eliminar la ruta
- Proceso de OmniEPDG fue asesinado sin un apagado ordenado
Resolución:
- Verificar
log/crash.logen busca de fallos de proceso durante la finalización - Eliminar manualmente rutas obsoletas (
ip route del <subscriber-ip>/32 dev omniepdg0) - Reiniciar OmniEPDG recreará la interfaz
omniepdg0, lo que eliminará todas las rutas asociadas
Problemas de Finalización de Sesiones
La Finalización Se Queda Colgada Durante la Desregistración
Síntomas: La finalización de la sesión no se completa. FSM del UE atascada en un estado dereg_* o wait_*.
Causas posibles:
- PGW no responde a la Solicitud de Eliminar Sesión
- Par Diameter no responde a STR o ASR
- Tiempo de espera en cascada no completándose debido a múltiples tiempos de espera acumulados
Resolución:
- Verificar registros en busca de mensajes de tiempo de espera en el estado relevante
- Verificar conectividad con PGW y HSS
- Después de 10 segundos, la FSM debería agotar el tiempo y proceder al siguiente paso de finalización o terminar. Si no lo hace, verificar eventos inesperados registrados como
Unexpected call event
Contextos PDP GTP-U Huérfanos
Síntomas: Entradas de túnel GTP-U permanecen en el núcleo después de que las sesiones terminan. ip link show gtp0 muestra que el dispositivo aún tiene contextos PDP activos.
Causas posibles:
- FSM terminó anormalmente antes de eliminar el contexto PDP
- Fallo durante la secuencia de finalización
Resolución:
- Verificar
log/crash.logen busca de fallos de proceso durante la finalización - La función de
terminate/3de la FSM intenta limpiar el contexto PDP. Si la FSM fue asesinada (por ejemplo, reinicio del supervisor), la limpieza puede haberse omitido - Reiniciar OmniEPDG recreará el socket GTP-U y limpiará los contextos obsoletos
Problemas de Proceso y Sistema
Bucles de Reinicio del Supervisor
Síntomas: Los procesos de OmniEPDG se reinician repetidamente. Los registros muestran mensajes de reinicio del supervisor e informes de fallos.
Causas posibles:
- Error de configuración persistente que causa que un controlador falle al iniciar
- Dependencia externa no disponible (por ejemplo, biblioteca gen_socket no encontrada)
- Par Diameter enviando mensajes mal formados que causan fallos en los controladores
Resolución:
- Verificar
log/crash.logpara encontrar la causa raíz del fallo - Verificar que la ruta
libdirdegen_socketsea correcta y que los archivos de biblioteca existan - Comprobar que todos los parámetros de configuración requeridos estén presentes en
config/runtime.exs - Buscar mensajes Diameter mal formados en el informe de fallos
Alto Uso de Memoria
Síntomas: El consumo de memoria de la VM de Erlang crece con el tiempo.
Causas posibles:
- Procesos FSM de UE no se están limpiando después de la finalización de la sesión
- Acumulación de mensajes de registro en los buzones
- Gran número de sesiones concurrentes
Resolución:
- Verificar el número de procesos
epdg_ue_fsmyaaa_ue_fsmen ejecución (estos deberían coincidir con el conteo de suscriptores activos) - Verificar que las FSM se estén terminando correctamente después de la finalización de la sesión (verificar mensajes de registro
terminating) - Revisar la configuración de rotación de registros para asegurar que los archivos de registro se estén rotando