Aller au contenu principal

Architecture et Flux d'Appels OmniEPDG

Ce document décrit l'architecture interne d'OmniEPDG, ses interfaces de protocole, les machines d'état UE et les diagrammes de séquence de messages détaillés pour les procédures clés. OmniEPDG prend en charge deux modes opérationnels : mode GTP (tunneling complet 3GPP via PGW) et mode VPN Simple (sortie locale avec interface TUN). Voir le Guide des opérations pour une comparaison à haut niveau.

Architecture du Système

OmniEPDG est construit sur Erlang/OTP et implémente la fonction réseau ePDG (evolved Packet Data Gateway) 3GPP. Il relie l'accès WiFi non sécurisé au réseau mobile central, permettant aux UEs de passer et de recevoir des appels VoWiFi.

Architecture du Mode GTP

En mode GTP, le trafic des abonnés est tunnelé à travers un PGW utilisant GTPv2-C pour le contrôle de session et le module GTP-U du noyau Linux pour le plan utilisateur.

Architecture du Mode VPN Simple

En mode VPN Simple, le trafic des abonnés est routé localement via une interface TUN Linux. Aucune infrastructure PGW ou GTP n'est requise. Les composants Diameter S6b, GTPv2-C et GTP-U sont remplacés par le sous-système VPN Simple.

Arbre de Superviseur

OmniEPDG utilise une stratégie de superviseur one-for-all, ce qui signifie que si un processus enfant plante, tous les enfants sont redémarrés. Le superviseur démarre conditionnellement différents processus enfants en fonction du mode opérationnel.

Processus démarrés dans les deux modes :

ProcessusRôleDescription
aaa_diameter_swxClient Diameter SWxSe connecte au HSS pour l'authentification et les opérations de profil d'abonné
aaa_diameter_swmDiameter SWm (Interne)Route les messages EAP Diameter et de session entre les FSM ePDG et AAA
epdg_diameter_swmGestionnaire SWm ePDGGère le côté ePDG de la signalisation Diameter interne SWm

Processus supplémentaires en mode GTP :

ProcessusRôleDescription
aaa_diameter_s6bServeur Diameter S6bAccepte les connexions du PGW pour l'autorisation de session
epdg_gtpc_s2bClient GTPv2-CEnvoie des demandes de création/suppression de session au PGW via S2b
gtp_u_kmodGestionnaire du noyau GTP-UGère les contextes PDP GTP-U dans le module du noyau Linux

Processus supplémentaires en mode VPN Simple :

ProcessusRôleDescription
simple_vpn_supervisorSuperviseur du sous-système VPNSupervise les processus de gestion du pool IP et de route
simple_vpn_poolGestionnaire de Pool IPAlloue et libère des adresses IPv4 à partir du pool CIDR configuré en utilisant ETS
simple_vpn_routeGestionnaire de RouteCrée l'interface TUN omniepdg0 et gère les routes hôtes par abonné

Machines d'État par UE

Pour chaque abonné actif (identifié par l'IMSI), OmniEPDG crée deux instances de machines d'état :

  • FSM UE ePDG (epdg_ue_fsm) - Gère le cycle de vie de la session de l'abonné du point de vue de l'ePDG : authentification, création de tunnel GTP et coordination de la destruction
  • FSM UE AAA (aaa_ue_fsm) - Gère la signalisation côté AAA : échanges Diameter SWx avec le HSS et échanges S6b avec le PGW

Les deux FSM sont implémentées comme des processus Erlang gen_statem avec un mode de rappel de fonction d'état.

États de la FSM UE ePDG

La FSM UE ePDG suit la session d'un abonné depuis la demande d'authentification initiale jusqu'à l'état de tunnel actif et à la destruction. Le comportement de la FSM diverge à l'état authenticated en fonction du mode opérationnel.

FSM en Mode GTP

En mode GTP, l'établissement du tunnel passe par la création de session GTPv2-C au PGW, et la destruction implique la suppression de session GTPv2-C, la suppression d'ours initiée par le PGW et les flux de désinscription initiés par le HSS.

FSM en Mode VPN Simple

En mode VPN Simple, la FSM prend un raccourci à l'état authenticated. Au lieu d'envoyer une demande de création de session GTPv2-C, la FSM alloue une adresse IP à partir du pool local, crée une route hôte sur l'interface TUN et passe directement à active. Les états de destruction spécifiques au GTP (wait_create_session_resp, wait_delete_session_resp, dereg_pgw_wait_cancel, dereg_net_wait_s2b_delete) ne sont pas utilisés.

Référence d'État de la FSM UE ePDG

ÉtatModeDescriptionAttente de
newLes deuxÉtat initial. Pas de session active.Demande d'authentification de l'UE
wait_auth_respLes deuxDemande d'authentification envoyée via SWm DER.SWm DEA avec vecteurs d'authentification ou erreur
authenticatingLes deuxVecteurs d'authentification reçus, échange EAP en cours.Mise à jour de localisation / achèvement de l'authentification
authenticatedLes deuxAuthentification terminée, profil d'abonné téléchargé.Demande de tunnel de l'UE
wait_create_session_respGTPDemande de création de session GTPv2-C envoyée au PGW.Réponse de création de session du PGW
activeLes deuxTunnel/route opérationnel. Le trafic de l'abonné circule.Déclencheur de destruction
wait_delete_session_respGTPDemande de suppression de session GTPv2-C envoyée au PGW (destruction initiée par l'UE).Réponse de suppression de session du PGW
wait_swm_staLes deuxDemande de terminaison de session SWm envoyée.SWm STA de AAA
dereg_pgw_wait_cancelGTPDésinscription initiée par le PGW. Annulation de l'emplacement envoyée à l'UE.Résultat d'annulation de l'emplacement
dereg_net_wait_cancelGTPDésinscription initiée par le réseau/HSS. Annulation de l'emplacement envoyée à l'UE.Résultat d'annulation de l'emplacement
dereg_net_wait_s2b_deleteGTPDésinscription initiée par le réseau. Suppression de session S2b envoyée au PGW.Réponse de suppression de session

États de la FSM UE AAA

La FSM UE AAA gère la signalisation Diameter vers le HSS (SWx) et le PGW (S6b) au nom de chaque abonné.

Référence d'État de la FSM UE AAA

ÉtatDescriptionAttente de
newÉtat initial. Pas de session AAA active.Demande d'authentification Diameter
wait_swx_maaSWx MAR envoyé au HSS pour les vecteurs EAP-AKA.SWx MAA du HSS
wait_swx_saaSWx SAR envoyé au HSS pour l'attribution du serveur.SWx SAA du HSS
authenticatedLes sessions ePDG et PGW peuvent être actives. Suit l'état de session dual.Événements de session
auth_wait_swx_saaSWx SAR envoyé pour mise à jour du PGW ou désinscription de l'utilisateur.SWx SAA du HSS
dereg_net_wait_s6b_asaDésinscription initiée par le HSS. S6b ASR envoyé au PGW.S6b ASA du PGW
dereg_net_wait_swm_asaLa destruction S6b est terminée. SWm ASR envoyé à l'ePDG.SWm ASA de l'ePDG

Flux d'Appels

Mode GTP : Établissement de Session Réussi

Cette séquence montre une session réussie complète de l'authentification EAP-AKA jusqu'à un tunnel GTP actif.

Mode GTP : Destruction de Session Initiée par l'UE

Lorsque l'UE se déconnecte (par exemple, passe de WiFi à cellulaire ou l'utilisateur raccroche).

Mode GTP : Destruction de Session Initiée par le PGW

Lorsque le PGW termine la session (par exemple, violation de politique, délai d'attente ou action administrative).

Mode GTP : Désinscription Initiée par le Réseau (HSS)

Lorsque le HSS révoque l'enregistrement d'un abonné (par exemple, changement d'abonnement, détection de fraude ou action administrative).

Mode GTP : Poussée de Profil HSS et Ré-authentification

Lorsque le HSS pousse un profil d'abonné mis à jour, OmniEPDG déclenche une ré-authentification sur les sessions ePDG (SWm) et PGW (S6b) conformément à 3GPP TS 29.273 Section 8.1.2.3.3.

Mode VPN Simple : Établissement de Session Réussi

En mode VPN Simple, l'établissement de session est plus court. Après l'authentification EAP-AKA, la FSM ePDG alloue une IP à partir du pool local et configure une route hôte sur l'interface TUN, contournant toute interaction avec le PGW. Si skip_sar est activé, l'échange SAR/SAA avec le HSS est également ignoré.

Mode VPN Simple : Destruction de Session Initiée par l'UE

Lorsque l'UE se déconnecte en mode VPN Simple, la FSM libère l'adresse IP allouée et supprime la route hôte.

Identifiants d'Application Diameter

Identifiant d'ApplicationInterfaceIdentifiant de FournisseurDescriptionRéférence
16777265SWx10415 (3GPP)Authentification ePDG ↔ HSS et gestion des abonnés3GPP TS 29.273
16777272S6b10415 (3GPP)Autorisation de session AAA ↔ PGW3GPP TS 29.273

Codes de Résultat Diameter

OmniEPDG mappe les codes de résultat Diameter aux valeurs de cause internes pour la propagation d'erreur inter-protocoles.

Codes de Résultat Standards

Code de RésultatNomSignification
2001DIAMETER_SUCCESSOpération terminée avec succès
2002DIAMETER_LIMITED_SUCCESSOpération partiellement réussie

Codes de Résultat Expérimentaux 3GPP

Code de RésultatNomSignificationRéférence
4181DIAMETER_AUTHENTICATION_DATA_UNAVAILABLEHSS ne peut temporairement pas fournir de données d'authentification3GPP TS 29.273
5001DIAMETER_ERROR_USER_UNKNOWNIMSI de l'abonné non trouvé dans le HSS3GPP TS 29.273
5002DIAMETER_UNKNOWN_SESSION_IDSession non trouvée (utilisée pour STR/AAR obsolètes)RFC 6733
5003DIAMETER_AUTHORIZATION_REJECTEDAbonné non autorisé pour le service3GPP TS 29.273
5004DIAMETER_ERROR_ROAMING_NOT_ALLOWEDRestrictions de roaming appliquées3GPP TS 29.273
5005DIAMETER_MISSING_AVPAVP requis manquant dans le messageRFC 6733
5012DIAMETER_UNABLE_TO_COMPLYÉchec de traitement génériqueRFC 6733
5420DIAMETER_ERROR_UNKNOWN_EPS_SUBSCRIPTIONAucune souscription EPS trouvée3GPP TS 29.273
5421DIAMETER_ERROR_RAT_NOT_ALLOWEDTechnologie d'accès non autorisée3GPP TS 29.273
5422DIAMETER_ERROR_EQUIPMENT_UNKNOWNIMEI de l'appareil non reconnu3GPP TS 29.273

Codes de Cause GTPv2-C (Uniquement en Mode GTP)

OmniEPDG gère les codes de cause GTPv2-C suivants dans les réponses de création/suppression de session du PGW. Les codes 1-15 sont informatifs, 16-63 indiquent le succès, et 64+ indiquent des erreurs. Voir 3GPP TS 29.274 Section 8.4.

Causes de Succès

CodeNomDescription
16Request AcceptedOpération terminée avec succès
17Request Accepted PartiallySuccès partiel
18New PDN Type (Network Preference)Type de PDN changé en raison de la préférence du réseau
19New PDN Type (Single Address Bearer)Type de PDN changé en raison de la restriction d'un porteur d'adresse unique

Causes d'Erreur (Sélectionnées)

CodeNomDescription
64Context Not FoundContexte de session non trouvé sur le PGW
73No Resources AvailableÉpuisement des ressources PGW
78Missing or Unknown APNAPN demandé non configuré sur le PGW
82Denied in RATTechnologie d'accès non autorisée
84All Dynamic Addresses OccupiedPool d'adresses IP épuisé sur le PGW
92User Authentication FailedÉchec de l'authentification au PGW
93APN Access DeniedAbonné non autorisé pour l'APN
96IMSI/IMEI Not KnownIdentité de l'abonné non reconnue
109Invalid PeerÉchec de validation du pair
113APN CongestionAPN surchargé
120GTP-C Entity CongestionPlan de contrôle PGW surchargé

Format NAI

OmniEPDG identifie les abonnés en utilisant le format d'Identifiant d'Accès au Réseau (NAI) défini dans 3GPP TS 23.003 Section 19:

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

Préfixe d'Identité et Type d'Authentification

Le préfixe NAI détermine la méthode d'authentification EAP selon 3GPP TS 23.003 :

PréfixeType d'AuthentificationDescription
0EAP-AKAAuthentification AKA standard (la plus courante pour les appels WiFi)
6EAP-AKA'Authentification AKA améliorée avec liaison au réseau

OmniEPDG sélectionne automatiquement la méthode d'authentification en fonction du préfixe d'identité de l'UE. La plupart des UEs utilisent le préfixe 0 (EAP-AKA) pour les appels WiFi.

OmniEPDG extrait l'IMSI du NAI en analysant tout ce qui se trouve entre le préfixe et le symbole @. L'IMSI est ensuite utilisé comme clé principale pour toutes les machines d'état et opérations de signalisation par abonné.

Algorithmes Cryptographiques

OmniEPDG implémente des algorithmes cryptographiques conformément à 3GPP TS 33.402 et RFC 7296 (IKEv2).

Algorithmes de Chiffrement IKEv2

AlgorithmeIDTaille de CléStatutRéférence
AES-CBC12128, 192, 256 bitsSupporté (par défaut : 256)RFC 3602
AES-GCM-1620128, 192, 256 bitsSupportéRFC 5282
AES-GCM-1219128, 192, 256 bitsSupportéRFC 5282
AES-GCM-818128, 192, 256 bitsSupportéRFC 5282
3DES3192 bitsSupporté (héritage)RFC 2451

Algorithmes d'Intégrité IKEv2

AlgorithmeIDTaille de CléTaille ICVStatutRéférence
HMAC-SHA2-256-12812256 bits128 bitsSupporté (par défaut)RFC 4868
HMAC-SHA2-384-19213384 bits192 bitsSupportéRFC 4868
HMAC-SHA2-512-25614512 bits256 bitsSupportéRFC 4868
HMAC-SHA1-962160 bits96 bitsSupporté (héritage)RFC 2404
HMAC-MD5-961128 bits96 bitsSupporté (héritage)RFC 2403

Algorithmes PRF IKEv2

AlgorithmeIDTaille de SortieStatutRéférence
PRF-HMAC-SHA2-2565256 bitsSupporté (par défaut)RFC 4868
PRF-HMAC-SHA2-3846384 bitsSupportéRFC 4868
PRF-HMAC-SHA2-5127512 bitsSupportéRFC 4868
PRF-HMAC-SHA12160 bitsSupporté (héritage)RFC 2104
PRF-HMAC-MD51128 bitsSupporté (héritage)RFC 2104

Groupes Diffie-Hellman IKEv2

GroupeIDTailleStatutRéférence
MODP-2048142048 bitsSupporté (par défaut)RFC 3526
MODP-102421024 bitsSupporté (héritage)RFC 2409
MODP-153651536 bitsSupportéRFC 3526
MODP-3072153072 bitsSupportéRFC 3526
MODP-4096164096 bitsSupportéRFC 3526
ECP-25619256 bitsSupportéRFC 5903
ECP-38420384 bitsSupportéRFC 5903
ECP-52121521 bitsSupportéRFC 5903
Curve2551931256 bitsSupportéRFC 8031
Curve44832448 bitsSupportéRFC 8031

Algorithmes ESP (SA Enfant)

Le tunnel ESP utilise les mêmes algorithmes de chiffrement et d'intégrité négociés lors de la création de SA_ENFANT IKEv2.

Configuration ESP par défaut :

  • Chiffrement : AES-CBC-256 (clé de 32 octets, IV de 16 octets)
  • Intégrité : HMAC-SHA2-256-128 (clé de 32 octets, ICV de 16 octets)

Fonctions Cryptographiques EAP-AKA

FonctionAlgorithmeRéférence
Dérivation MKSHA-1RFC 4187 Section 7
Expansion de clé PRF+FIPS 186-2 PRF (SHA-1)RFC 4187 Annexe D
AT_MACHMAC-SHA1-128RFC 4187 Section 10.15
Milenage (f1-f5)AES-1283GPP TS 35.206

Fonctions Cryptographiques EAP-AKA'

FonctionAlgorithmeRéférence
Dérivation CK'/IK'HMAC-SHA-256RFC 5448 Section 3.3
Dérivation MKSHA-256RFC 5448 Section 3.4
AT_MACHMAC-SHA256-128RFC 5448 Section 3.1

Conformité 3GPP

OmniEPDG implémente tous les algorithmes cryptographiques obligatoires spécifiés dans 3GPP TS 33.402 Section 8 :

ExigenceAlgorithmeStatut
Chiffrement IKEv2 (obligatoire)AES-CBC-128✓ Supporté
Intégrité IKEv2 (obligatoire)HMAC-SHA2-256-128✓ Supporté (par défaut)
PRF IKEv2 (obligatoire)PRF-HMAC-SHA-256✓ Supporté (par défaut)
DH IKEv2 (obligatoire)Groupe 14 (MODP-2048)✓ Supporté (par défaut)
Chiffrement ESP (obligatoire)AES-CBC-128/256✓ Supporté
Intégrité ESP (obligatoire)HMAC-SHA2-256-128✓ Supporté (par défaut)
EAP-AKARFC 4187✓ Implémenté
EAP-AKA'RFC 5448✓ Implémenté

Types d'Adresse PDP (Uniquement en Mode GTP)

OmniEPDG prend en charge les types d'adresse PDP suivants tels que définis dans 3GPP TS 29.274 Section 8.14. En mode VPN Simple, seules les adresses IPv4 sont allouées à partir du pool local.

TypeDescriptionFormat PAA GTPv2-C
IPv4Porteur uniquement IPv4Adresse IPv4 de 4 octets
IPv6Porteur uniquement IPv6Longueur de préfixe de 1 octet + adresse IPv6 de 16 octets
IPv4v6Porteur double pileLongueur de préfixe de 1 octet + adresse IPv6 de 16 octets + adresse IPv4 de 4 octets