Saltar al contenido principal

Arquitectura y Flujos de Llamadas de OmniEPDG

Este documento describe la arquitectura interna de OmniEPDG, sus interfaces de protocolo, máquinas de estado de UE y diagramas de secuencia de mensajes detallados para procedimientos clave. OmniEPDG admite dos modos operativos: modo GTP (túnel completo 3GPP a través de PGW) y modo VPN Simple (salida local con interfaz TUN). Consulte la Guía de Operaciones para una comparación de alto nivel.

Arquitectura del Sistema

OmniEPDG está construido sobre Erlang/OTP e implementa la función de red ePDG (evolved Packet Data Gateway) de 3GPP. Conecta el acceso WiFi no confiable a la red central móvil, permitiendo que los UEs realicen y reciban llamadas VoWiFi.

Arquitectura del Modo GTP

En el modo GTP, el tráfico de suscriptores se tunela a través de un PGW utilizando GTPv2-C para el control de sesión y el módulo GTP-U del núcleo de Linux para el plano de usuario.

Arquitectura del Modo VPN Simple

En el modo VPN Simple, el tráfico de suscriptores se enruta localmente a través de una interfaz TUN de Linux. No se requiere infraestructura de PGW o GTP. Los componentes de Diámetro S6b, GTPv2-C y GTP-U son reemplazados por el subsistema VPN Simple.

Árbol de Supervisores

OmniEPDG utiliza una estrategia de supervisor uno-para-todos, lo que significa que si algún proceso hijo falla, todos los hijos se reinician. El supervisor inicia condicionalmente diferentes procesos hijos dependiendo del modo operativo.

Procesos iniciados en ambos modos:

ProcesoRolDescripción
aaa_diameter_swxCliente Diámetro SWxSe conecta al HSS para operaciones de autenticación y perfil de suscriptor
aaa_diameter_swmDiámetro SWm (Interno)Enruta mensajes EAP de Diámetro y de sesión entre el ePDG y las FSM de AAA
epdg_diameter_swmManejador SWm ePDGManeja el lado ePDG de la señalización interna de Diámetro SWm

Procesos adicionales en modo GTP:

ProcesoRolDescripción
aaa_diameter_s6bServidor Diámetro S6bAcepta conexiones del PGW para autorización de sesión
epdg_gtpc_s2bCliente GTPv2-CEnvía solicitudes de Crear/Eliminar Sesión al PGW a través de S2b
gtp_u_kmodManejador del Núcleo GTP-UGestiona los contextos PDP GTP-U en el módulo del núcleo de Linux

Procesos adicionales en modo VPN Simple:

ProcesoRolDescripción
simple_vpn_supervisorSupervisor del Subsistema VPNSupervisa los procesos del gestor de IP y del gestor de rutas
simple_vpn_poolGestor de IPsAsigna y libera direcciones IPv4 del grupo CIDR configurado utilizando ETS
simple_vpn_routeGestor de RutasCrea la interfaz TUN omniepdg0 y gestiona las rutas de host por suscriptor

Máquinas de Estado por UE

Para cada suscriptor activo (identificado por IMSI), OmniEPDG crea dos instancias de máquinas de estado:

  • FSM UE ePDG (epdg_ue_fsm) - Gestiona el ciclo de vida de la sesión del suscriptor desde la perspectiva del ePDG: autenticación, creación de túneles GTP y coordinación de desmantelamiento.
  • FSM UE AAA (aaa_ue_fsm) - Gestiona la señalización del lado AAA: intercambios de Diámetro SWx con el HSS e intercambios S6b con el PGW.

Ambas FSM se implementan como procesos gen_statem de Erlang con modo de devolución de llamada de función de estado.

Estados de la FSM UE ePDG

La FSM UE ePDG rastrea la sesión de un suscriptor desde la solicitud de autenticación inicial hasta el estado de túnel activo y el desmantelamiento. El comportamiento de la FSM diverge en el estado authenticated según el modo operativo.

FSM del Modo GTP

En el modo GTP, el establecimiento del túnel pasa por la creación de sesión GTPv2-C hacia el PGW, y el desmantelamiento implica la eliminación de sesión GTPv2-C, eliminación de portadora iniciada por PGW y flujos de desregistro iniciados por HSS.

FSM del Modo VPN Simple

En el modo VPN Simple, la FSM toma un atajo en el estado authenticated. En lugar de enviar una solicitud de creación de sesión GTPv2-C, la FSM asigna una dirección IP del grupo local, crea una ruta de host en la interfaz TUN y transita directamente a active. Los estados de desmantelamiento específicos de GTP (wait_create_session_resp, wait_delete_session_resp, dereg_pgw_wait_cancel, dereg_net_wait_s2b_delete) no se utilizan.

Referencia de Estados de la FSM UE ePDG

EstadoModoDescripciónEsperando
newAmbosEstado inicial. No hay sesión activa.Solicitud de autenticación de UE
wait_auth_respAmbosSolicitud de autenticación enviada a través de SWm DER.SWm DEA con vectores de autenticación o error
authenticatingAmbosVectores de autenticación recibidos, intercambio EAP en progreso.Actualización de ubicación / finalización de autenticación
authenticatedAmbosAutenticación completa, perfil de suscriptor descargado.Solicitud de túnel de UE
wait_create_session_respGTPSolicitud de creación de sesión GTPv2-C enviada al PGW.Respuesta de creación de sesión del PGW
activeAmbosTúnel/ruta operativo. El tráfico del suscriptor está fluyendo.Disparador de desmantelamiento
wait_delete_session_respGTPSolicitud de eliminación de sesión GTPv2-C enviada al PGW (desmantelamiento iniciado por UE).Respuesta de eliminación de sesión del PGW
wait_swm_staAmbosSolicitud de terminación de sesión SWm enviada.SWm STA de AAA
dereg_pgw_wait_cancelGTPDesregistro iniciado por PGW. Ubicación de cancelación enviada a UE.Resultado de ubicación de cancelación
dereg_net_wait_cancelGTPDesregistro iniciado por la red/HSS. Ubicación de cancelación enviada a UE.Resultado de ubicación de cancelación
dereg_net_wait_s2b_deleteGTPDesregistro iniciado por la red. S2b Delete Session enviado al PGW.Respuesta de eliminación de sesión

Estados de la FSM UE AAA

La FSM UE AAA gestiona la señalización de Diámetro hacia el HSS (SWx) y el PGW (S6b) en nombre de cada suscriptor.

Referencia de Estados de la FSM UE AAA

EstadoDescripciónEsperando
newEstado inicial. No hay sesión AAA activa.Solicitud de autenticación de Diámetro
wait_swx_maaSWx MAR enviado al HSS para vectores EAP-AKA.SWx MAA del HSS
wait_swx_saaSWx SAR enviado al HSS para asignación de servidor.SWx SAA del HSS
authenticatedAmbas sesiones ePDG y PGW pueden estar activas. Rastreando el estado de sesión dual.Eventos de sesión
auth_wait_swx_saaSWx SAR enviado para actualización de PGW o desregistro de usuario.SWx SAA del HSS
dereg_net_wait_s6b_asaDesregistro iniciado por HSS. S6b ASR enviado al PGW.S6b ASA del PGW
dereg_net_wait_swm_asaDesmantelamiento de S6b completo. SWm ASR enviado al ePDG.SWm ASA del ePDG

Flujos de Llamadas

Modo GTP: Establecimiento de Sesión Exitoso

Esta secuencia muestra una sesión completa exitosa desde la autenticación EAP-AKA hasta un túnel GTP activo.

Modo GTP: Desmantelamiento de Sesión Iniciado por UE

Cuando el UE se desconecta (por ejemplo, cambia de WiFi a celular o el usuario cuelga).

Modo GTP: Desmantelamiento de Sesión Iniciado por PGW

Cuando el PGW termina la sesión (por ejemplo, violación de política, tiempo de espera o acción administrativa).

Modo GTP: Desregistro Iniciado por la Red (HSS)

Cuando el HSS revoca el registro de un suscriptor (por ejemplo, cambio de suscripción, detección de fraude o acción administrativa).

Modo GTP: Push de Perfil HSS y Re-autenticación

Cuando el HSS envía un perfil de suscriptor actualizado, OmniEPDG activa la re-autenticación en ambas sesiones ePDG (SWm) y PGW (S6b) según 3GPP TS 29.273 Sección 8.1.2.3.3.

Modo VPN Simple: Establecimiento de Sesión Exitoso

En el modo VPN Simple, el establecimiento de la sesión es más corto. Después de la autenticación EAP-AKA, la FSM ePDG asigna una IP del grupo local y configura una ruta de host en la interfaz TUN, eludiendo toda interacción con PGW. Si skip_sar está habilitado, el intercambio SAR/SAA con el HSS también se omite.

Modo VPN Simple: Desmantelamiento de Sesión Iniciado por UE

Cuando el UE se desconecta en modo VPN Simple, la FSM libera la dirección IP asignada y elimina la ruta de host.

Identificadores de Aplicación de Diámetro

Identificador de Aplicaci��nInterfazIdentificador de ProveedorDescripciónReferencia
16777265SWx10415 (3GPP)ePDG ↔ HSS autenticación y gestión de suscriptores3GPP TS 29.273
16777272S6b10415 (3GPP)AAA ↔ PGW autorización de sesión3GPP TS 29.273

Códigos de Resultado de Diámetro

OmniEPDG mapea los códigos de resultado de Diámetro a valores de causa internos para la propagación de errores entre protocolos.

Códigos de Resultado Estándar

Código de ResultadoNombreSignificado
2001DIAMETER_SUCCESSOperación completada con éxito
2002DIAMETER_LIMITED_SUCCESSOperación parcialmente exitosa

Códigos de Resultado Experimentales de 3GPP

Código de ResultadoNombreSignificadoReferencia
4181DIAMETER_AUTHENTICATION_DATA_UNAVAILABLEHSS no puede proporcionar datos de autenticación temporalmente3GPP TS 29.273
5001DIAMETER_ERROR_USER_UNKNOWNIMSI del suscriptor no encontrado en HSS3GPP TS 29.273
5002DIAMETER_UNKNOWN_SESSION_IDSesión no encontrada (utilizada para STR/AAR obsoletos)RFC 6733
5003DIAMETER_AUTHORIZATION_REJECTEDSuscriptor no autorizado para el servicio3GPP TS 29.273
5004DIAMETER_ERROR_ROAMING_NOT_ALLOWEDSe aplican restricciones de roaming3GPP TS 29.273
5005DIAMETER_MISSING_AVPAVP requerido faltante en el mensajeRFC 6733
5012DIAMETER_UNABLE_TO_COMPLYFallo genérico de procesamientoRFC 6733
5420DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTIONNo se encontró suscripción EPS3GPP TS 29.273
5421DIAMETER_ERROR_RAT_NOT_ALLOWEDTecnología de acceso no permitida3GPP TS 29.273
5422DIAMETER_ERROR_EQUIPMENT_UNKNOWNDispositivo IMEI no reconocido3GPP TS 29.273

Códigos de Causa GTPv2-C (Solo Modo GTP)

OmniEPDG maneja los siguientes códigos de causa GTPv2-C en las respuestas de Crear/Eliminar Sesión del PGW. Los códigos del 1 al 15 son informativos, del 16 al 63 indican éxito y del 64 en adelante indican errores. Consulte 3GPP TS 29.274 Sección 8.4.

Causas de Éxito

CódigoNombreDescripción
16Request AcceptedOperación completada con éxito
17Request Accepted PartiallyÉxito parcial
18New PDN Type (Network Preference)Tipo de PDN cambiado debido a preferencia de red
19New PDN Type (Single Address Bearer)Tipo de PDN cambiado debido a restricción de portadora de dirección única

Causas de Error (Seleccionadas)

CódigoNombreDescripción
64Context Not FoundContexto de sesión no encontrado en PGW
73No Resources AvailableAgotamiento de recursos en PGW
78Missing or Unknown APNAPN solicitado no configurado en PGW
82Denied in RATTecnología de acceso no permitida
84All Dynamic Addresses OccupiedGrupo de direcciones IP agotado en PGW
92User Authentication FailedFallo de autenticación en PGW
93APN Access DeniedSuscriptor no autorizado para APN
96IMSI/IMEI Not KnownIdentidad del suscriptor no reconocida
109Invalid PeerFallo en la validación del par
113APN CongestionAPN sobrecargado
120GTP-C Entity CongestionSobrecarga del plano de control del PGW

Formato NAI

OmniEPDG identifica a los suscriptores utilizando el formato de Identificador de Acceso a la Red (NAI) definido en 3GPP TS 23.003 Sección 19:

<prefix><IMSI>@nai.epc.mnc<MNC>.mcc<MCC>.3gppnetwork.org

Prefijo de Identidad y Tipo de Autenticación

El prefijo NAI determina el método de autenticación EAP según 3GPP TS 23.003:

PrefijoTipo de AutenticaciónDescripción
0EAP-AKAAutenticación AKA estándar (más común para llamadas WiFi)
6EAP-AKA'Autenticación AKA mejorada con vinculación a la red

OmniEPDG selecciona automáticamente el método de autenticación basado en el prefijo de identidad del UE. La mayoría de los UEs utilizan el prefijo 0 (EAP-AKA) para llamadas WiFi.

OmniEPDG extrae el IMSI del NAI analizando todo entre el prefijo y el símbolo @. El IMSI se utiliza como la clave principal para todas las máquinas de estado y operaciones de señalización por suscriptor.

Algoritmos Criptográficos

OmniEPDG implementa algoritmos criptográficos según 3GPP TS 33.402 y RFC 7296 (IKEv2).

Algoritmos de Cifrado IKEv2

AlgoritmoIDTamaño de ClaveEstadoReferencia
AES-CBC12128, 192, 256 bitsSoportado (predeterminado: 256)RFC 3602
AES-GCM-1620128, 192, 256 bitsSoportadoRFC 5282
AES-GCM-1219128, 192, 256 bitsSoportadoRFC 5282
AES-GCM-818128, 192, 256 bitsSoportadoRFC 5282
3DES3192 bitsSoportado (legado)RFC 2451

Algoritmos de Integridad IKEv2

AlgoritmoIDTamaño de ClaveTamaño de ICVEstadoReferencia
HMAC-SHA2-256-12812256 bits128 bitsSoportado (predeterminado)RFC 4868
HMAC-SHA2-384-19213384 bits192 bitsSoportadoRFC 4868
HMAC-SHA2-512-25614512 bits256 bitsSoportadoRFC 4868
HMAC-SHA1-962160 bits96 bitsSoportado (legado)RFC 2404
HMAC-MD5-961128 bits96 bitsSoportado (legado)RFC 2403

Algoritmos PRF IKEv2

AlgoritmoIDTamaño de SalidaEstadoReferencia
PRF-HMAC-SHA2-2565256 bitsSoportado (predeterminado)RFC 4868
PRF-HMAC-SHA2-3846384 bitsSoportadoRFC 4868
PRF-HMAC-SHA2-5127512 bitsSoportadoRFC 4868
PRF-HMAC-SHA12160 bitsSoportado (legado)RFC 2104
PRF-HMAC-MD51128 bitsSoportado (legado)RFC 2104

Grupos de Diffie-Hellman IKEv2

GrupoIDTamañoEstadoReferencia
MODP-2048142048 bitsSoportado (predeterminado)RFC 3526
MODP-102421024 bitsSoportado (legado)RFC 2409
MODP-153651536 bitsSoportadoRFC 3526
MODP-3072153072 bitsSoportadoRFC 3526
MODP-4096164096 bitsSoportadoRFC 3526
ECP-25619256 bitsSoportadoRFC 5903
ECP-38420384 bitsSoportadoRFC 5903
ECP-52121521 bitsSoportadoRFC 5903
Curve2551931256 bitsSoportadoRFC 8031
Curve44832448 bitsSoportadoRFC 8031

Algoritmos ESP (SA Hijo)

El túnel ESP utiliza los mismos algoritmos de cifrado e integridad negociados durante IKEv2 CREATE_CHILD_SA.

Configuración predeterminada de ESP:

  • Cifrado: AES-CBC-256 (clave de 32 bytes, IV de 16 bytes)
  • Integridad: HMAC-SHA2-256-128 (clave de 32 bytes, ICV de 16 bytes)

Funciones Criptográficas EAP-AKA

FunciónAlgoritmoReferencia
Derivación de MKSHA-1RFC 4187 Sección 7
Expansión de clave PRF+FIPS 186-2 PRF (SHA-1)RFC 4187 Apéndice D
AT_MACHMAC-SHA1-128RFC 4187 Sección 10.15
Milenage (f1-f5)AES-1283GPP TS 35.206

Funciones Criptográficas EAP-AKA'

FunciónAlgoritmoReferencia
Derivación de CK'/IK'HMAC-SHA-256RFC 5448 Sección 3.3
Derivación de MKSHA-256RFC 5448 Sección 3.4
AT_MACHMAC-SHA256-128RFC 5448 Sección 3.1

Cumplimiento de 3GPP

OmniEPDG implementa todos los algoritmos criptográficos obligatorios especificados en 3GPP TS 33.402 Sección 8:

RequisitoAlgoritmoEstado
Cifrado IKEv2 (obligatorio)AES-CBC-128✓ Soportado
Integridad IKEv2 (obligatorio)HMAC-SHA2-256-128✓ Soportado (predeterminado)
PRF IKEv2 (obligatorio)PRF-HMAC-SHA-256✓ Soportado (predeterminado)
DH IKEv2 (obligatorio)Grupo 14 (MODP-2048)✓ Soportado (predeterminado)
Cifrado ESP (obligatorio)AES-CBC-128/256✓ Soportado
Integridad ESP (obligatorio)HMAC-SHA2-256-128✓ Soportado (predeterminado)
EAP-AKARFC 4187✓ Implementado
EAP-AKA'RFC 5448✓ Implementado

Tipos de Dirección PDP (Solo Modo GTP)

OmniEPDG admite los siguientes tipos de dirección PDP según lo definido en 3GPP TS 29.274 Sección 8.14. En el modo VPN Simple, solo se asignan direcciones IPv4 del grupo local.

TipoDescripciónFormato PAA GTPv2-C
IPv4Portadora solo IPv4Dirección IPv4 de 4 bytes
IPv6Portadora solo IPv6Longitud de prefijo de 1 byte + dirección IPv6 de 16 bytes
IPv4v6Portadora de doble pilaLongitud de prefijo de 1 byte + dirección IPv6 de 16 bytes + dirección IPv4 de 4 bytes