Saltar al contenido principal

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.

ArchivoPropósitoCuándo Verificar
log/console.logTodos los mensajes de la aplicación en nivel de depuraciónPrimer punto de investigación para cualquier problema
log/error.logSolo erroresEscaneo rápido para problemas activos
log/crash.logCaídas del proceso OTPCuando los procesos se reinician inesperadamente
log/erlang.logRegistrador del núcleo ErlangProblemas de bajo nivel de Erlang/OTP

Patrones Clave de Registro

Eventos de conexión de pares Diameter:

  • peer_up - Par Diameter conectado y capacidades intercambiadas
  • peer_down - Par Diameter desconectado

Transiciones de estado de FSM de UE:

  • ue_fsm state_<name> event=<event> - FSM procesando un evento en un estado dado
  • ue_fsm init(&lt;IMSI>) - Nueva instancia de FSM creada para el suscriptor
  • terminating epdg_ue_fsm with reason <reason> - FSM cerrándose

Eventos de tiempo de espera:

  • Timeout swm_der_timeout - Respuesta SWm DER agotada
  • Timeout create_session_timeout - Respuesta de Crear Sesión GTPv2-C agotada
  • Timeout s2b_delete_session_timeout - Respuesta de Eliminar Sesión GTPv2-C agotada
  • Timeout 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_ip o dia_swx_remote_port incorrectos 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:

  1. Verificar la conectividad de red a la IP y puerto del HSS
  2. Confirmar que dia_swx_remote_ip y dia_swx_remote_port coinciden con la configuración del HSS
  3. Verificar que el tráfico SCTP esté permitido a través de todos los firewalls. Si SCTP está bloqueado, establecer dia_swx_proto a tcp como alternativa
  4. Verificar que dia_swx_origin_host sea un FQDN resolvible y coincida con lo que espera el HSS
  5. 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_ip no accesible desde el PGW
  • Desajuste de Origin-Host o Origin-Realm

Resolución:

  1. Confirmar que el PGW está configurado para conectarse a OmniEPDG en dia_s6b_local_ip:dia_s6b_local_port
  2. Verificar que la dirección de enlace S6b sea accesible desde la red del PGW
  3. Verificar que las reglas del firewall permitan SCTP entrante en el puerto 3868 en la dirección S6b
  4. Verificar que dia_s6b_origin_host y dia_s6b_origin_realm coincidan 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:

  1. Verificar la calidad de la ruta de red (pérdida de paquetes, latencia) entre OmniEPDG y el par
  2. 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}])
  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:

  1. Habilitar el registro :debug e inspeccionar el evento IKEv2 packet para la carga útil SA del UE — los campos payloads[].proposals[] enumeran las transformaciones exactas ofrecidas.
  2. Confirmar que el cifrado ofrecido / integridad / PRF / transformaciones DH aparezcan como Soportadas en las tablas de algoritmos.
  3. 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:

  1. En :debug, verificar la línea de registro child SA proposal selected — los campos esp_offered, esp_encr y esp_integ muestran lo que fue ofrecido y elegido.
  2. Verificar que la longitud de la clave de cifrado ESP seleccionada coincida con el cifrado (un desajuste se presenta como Bad key size y un paquete descartado).
  3. 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:

  1. Verificar que el IMSI del suscriptor exista en la base de datos del HSS
  2. Verificar que el formato NAI en los registros coincida con el patrón esperado: 0&lt;IMSI>@nai.epc.mnc&lt;MNC>.mcc&lt;MCC>.3gppnetwork.org
  3. 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:

  1. Verificar el perfil de servicio del suscriptor en el HSS
  2. Confirmar que el acceso a llamadas WiFi / ePDG esté habilitado para el suscriptor
  3. 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:

  1. Revisar las políticas de roaming del HSS para la combinación HPLMN/VPLMN del suscriptor
  2. 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:

  1. Verificar la capacidad de respuesta y carga del HSS
  2. Confirmar que el par Diameter SWx esté en estado OKAY (no SUSPECT o DOWN)
  3. Verificar que dia_swx_transmit_timer sea 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 0 indica EAP-AKA
  • Prefijo 6 indica 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:

  1. Verificar la identidad NAI del UE en los registros para verificar el prefijo
  2. Asegurarse de que el HSS esté configurado para devolver vectores de autenticación apropiados
  3. 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:

  1. Verificar que la tarjeta SIM sea válida y no esté dañada
  2. Comprobar que el HSS devolvió vectores de autenticación válidos (RAND, AUTN, XRES, CK, IK)
  3. Habilitar el registro de depuración para comparar el XRES esperado con el RES recibido
  4. 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 CausaNombreAcción
78APN Faltante o DesconocidoVerificar que el APN esté configurado en el PGW y coincida con el perfil del suscriptor
82Denegado en RATVerificar que la política del PGW permita el tipo de acceso WiFi (no-3GPP)
84Todas las Direcciones Dinámicas OcupadasGrupo de IP del PGW agotado; expandir grupo o investigar fugas
92Fallo de Autenticación del UsuarioFallo de autenticación del lado del PGW; verificar autorización de sesión S6b
93Acceso a APN DenegadoSuscriptor no autorizado para APN en PGW
96IMSI/IMEI No ConocidoSuscriptor desconocido para PGW; verificar que la sesión S6b fue autorizada
113Congestión de APNAPN sobrecargado; reintentar o investigar la capacidad del PGW
120Congestión de Entidad GTP-CPlano 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:

  1. Verificar la conectividad de red al PGW en el puerto UDP 2123
  2. Comprobar que las reglas del firewall permitan UDP 2123 entre OmniEPDG y PGW
  3. 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_kmod no 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:

  1. Verificar que el módulo GTP del núcleo de Linux esté cargado (lsmod | grep gtp)
  2. Confirmar que el dispositivo del túnel GTP exista (ip link show gtp0)
  3. Verificar que gtp_u_kmod ip coincida con gtpc_local_ip o la dirección señalada en la Solicitud de Crear Sesión
  4. Comprobar que la tabla de enrutamiento incluya rutas a través del dispositivo del túnel GTP
  5. 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_ADMIN o 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:

  1. Verificar que el módulo del núcleo TUN esté disponible (lsmod | grep tun)
  2. Confirmar que OmniEPDG se esté ejecutando con privilegios suficientes para crear interfaces TUN
  3. Verificar si omniepdg0 ya existe de una instancia anterior (ip link show omniepdg0)
  4. Revisar log/crash.log en 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:

  1. Verificar el número de procesos epdg_ue_fsm activos en comparación con el tamaño del grupo
  2. Confirmar que las sesiones se están cerrando correctamente (verificar mensajes de registro terminating)
  3. Si el grupo está realmente lleno, expandirlo utilizando un prefijo CIDR más grande en simple_vpn_pool_ipv4 (requiere reinicio)
  4. Verificar si hay fallos de FSM durante la finalización en log/crash.log que 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:

  1. Verificar que la ruta de host exista (ip route show y buscar la ruta /32 del suscriptor a través de omniepdg0)
  2. Confirmar que el reenvío de IP esté habilitado (sysctl net.ipv4.ip_forward)
  3. Verificar que las reglas de iptables/nftables permitan el reenvío a través de omniepdg0
  4. 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:

  1. Verificar log/crash.log en busca de fallos de proceso durante la finalización
  2. Eliminar manualmente rutas obsoletas (ip route del <subscriber-ip>/32 dev omniepdg0)
  3. 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:

  1. Verificar registros en busca de mensajes de tiempo de espera en el estado relevante
  2. Verificar conectividad con PGW y HSS
  3. 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:

  1. Verificar log/crash.log en busca de fallos de proceso durante la finalización
  2. La función de terminate/3 de la FSM intenta limpiar el contexto PDP. Si la FSM fue asesinada (por ejemplo, reinicio del supervisor), la limpieza puede haberse omitido
  3. 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:

  1. Verificar log/crash.log para encontrar la causa raíz del fallo
  2. Verificar que la ruta libdir de gen_socket sea correcta y que los archivos de biblioteca existan
  3. Comprobar que todos los parámetros de configuración requeridos estén presentes en config/runtime.exs
  4. 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:

  1. Verificar el número de procesos epdg_ue_fsm y aaa_ue_fsm en ejecución (estos deberían coincidir con el conteo de suscriptores activos)
  2. Verificar que las FSM se estén terminando correctamente después de la finalización de la sesión (verificar mensajes de registro terminating)
  3. Revisar la configuración de rotación de registros para asegurar que los archivos de registro se estén rotando