Aller au contenu principal

Guide des opérations OmniSEPP

Vue d'ensemble | Référence de configuration | Métriques et surveillance | Dépannage

Ce guide décrit comment OmniSEPP se comporte sur l'interface N32 inter-PLMN et comment l'exploiter. OmniSEPP est le Security Edge Protection Proxy défini dans 3GPP TS 23.501 §6.2.17, avec un comportement de sécurité provenant de 3GPP TS 33.501 et l'interface N32 de 3GPP TS 29.573.

Table des matières

Vue d'ensemble de l'architecture

OmniSEPP termine l'interface N32 vers les SEPPs partenaires de roaming et relaye le trafic vers les fonctions réseau internes dans le PLMN d'origine. Il s'enregistre auprès du NRF local en tant que NFType SEPP afin que les consommateurs locaux et le SCP puissent le découvrir ; le SEPP pair distant et la carte de masquage de topologie sont une configuration statique par accord de roaming (les SEPPs pairs ne sont pas découverts via le NRF).

L'interface N32

N32 a deux canaux logiques (TS 29.573) :

  • N32-c (canal de contrôle) - La poignée de main utilisée pour négocier la capacité de sécurité N32-f et établir l'association entre les deux SEPPs. OmniSEPP expose cela comme le /n32c-handshake/v1/exchange-capability point de terminaison (rôle de répondant) et initie également la poignée de main vers chaque partenaire de roaming configuré au démarrage (rôle d'initiateur).
  • N32-f (canal de transfert) - L'échange continu de messages basés sur les services (SBI) entre les deux PLMNs. OmniSEPP relaie ces messages en mode TLS : le message est transféré en grande partie tel quel, avec une hygiène des en-têtes par saut et un masquage de topologie appliqué.

Cycle de vie de l'association N32

Chaque négociation N32-c réussie enregistre une association dans un magasin de contexte persistant (une table DETS devant un cache en mémoire), indexée par le FQDN du SEPP distant. Le contexte stocké inclut la capacité de sécurité N32-f sélectionnée et la liste d'identité du PLMN partenaire.

Propriétés opérationnelles clés :

  • Le magasin est persistant : les associations sont écrites dans le fichier DETS à n32_context_path et rechargées au démarrage, de sorte qu'elles survivent à un redémarrage de processus ou de nœud. Un partenaire n'a pas à refaire la poignée de main après un redémarrage d'OmniSEPP.
  • Il n'y a pas de TTL : une association persiste jusqu'à ce qu'elle soit explicitement détruite (supprimée) ou remplacée par une nouvelle négociation.
  • Si le fichier DETS ne peut pas être ouvert (par exemple en cas de corruption), le magasin commence vide et enregistre un avertissement ; les associations sont alors rétablies par poignée de main.

Négociation des capacités

Lors de la poignée de main N32-c, les deux SEPPs s'accordent sur une seule capacité de sécurité N32-f. Les capacités valides sont TLS et PRINS (TS 33.501 §13.1).

La règle de sélection (TS 29.573 §5.2.3.2.2) est préférence-locale-d'abord : OmniSEPP parcourt sa propre liste configurée de supported_sec_capabilities dans l'ordre et choisit la première entrée que le pair offre également. Si les deux ensembles de capacités sont disjoints, la négociation échoue avec INSUFFICIENT_RESOURCES (HTTP 406) et aucune association n'est enregistrée.

Seules les capacités bien formées et reconnues (TLS, PRINS) sont annoncées. Gardez supported_sec_capabilities à ["TLS"] pour un fonctionnement interopérable. Voir la Référence de configuration pour savoir comment définir l'ordre de préférence.

Contrôle des partenaires de roaming

Le registre des partenaires de roaming est une liste d'autorisation statique indexée par le PLMN partenaire ("mcc-mnc"). Il régit le transfert N32-f :

  • Seuls les PLMNs présents dans le registre sont relayés vers ou depuis.
  • Un registre vide (par défaut) signifie que le transfert N32-f refuse tous les PLMNs inconnus.
  • Chaque entrée partenaire contient l'API root du SEPP partenaire et, en option, les capacités de sécurité N32-f autorisées avec ce partenaire. Lorsque la liste des capacités est omise, le partenaire hérite des supported_sec_capabilities de ce SEPP.

Voir Référence de configuration - Partenaires de roaming pour la structure de la carte.

Masquage de la topologie

Le masquage de la topologie (TS 33.501 §13.2) masque les identités des NF internes des partenaires de roaming en réécrivant les FQDN. OmniSEPP applique une carte configurée par l'opérateur de internal_fqdn => external_fqdn :

  • Sortant (vers un partenaire) : les FQDN internes dans les valeurs d'en-tête 3gpp-Sbi-Target-apiRoot, Location et producer-id sont réécrits en leurs équivalents externes.
  • Entrant (d'un partenaire) : le mappage inverse est appliqué afin que l'apiRoot présenté extérieurement soit résolu en arrière vers le vrai FQDN interne avant que la demande ne soit routée vers le NF interne.

Les réécritures sont ancrées à des tokens FQDN entiers : un FQDN mappé est réécrit uniquement lorsqu'il apparaît comme un hôte complet (délimité par des délimiteurs d'URL tels que /, :, @, ou la fin de la valeur), jamais comme une sous-chaîne d'un nom d'hôte plus long. Cela empêche un mappage de corrompre un hôte non lié qui contient simplement le nom mappé, et empêche qu'une valeur produite par un mappage soit réappariée par une autre entrée de mappage.

À chaque relais, les en-têtes par saut (host, content-length, connection) sont supprimés. Sur le chemin entrant, l'en-tête 3gpp-Sbi-Target-apiRoot (maintenant consommé) est également supprimé avant que la demande n'atteigne le NF interne.

Une carte de masquage de topologie vide (par défaut) signifie qu'aucune réécriture n'est effectuée. Voir Référence de configuration - Carte de masquage de topologie.

Flux de messages

Poignée de main N32-c (Répondant)

Un SEPP partenaire de roaming initie la poignée de main en envoyant une demande de négociation de capacité par POST. OmniSEPP sélectionne une capacité mutuellement supportée, enregistre l'association et répond.

Transfert N32-f entrant

Un SEPP partenaire envoie une demande SBI portant un en-tête 3gpp-Sbi-Target-apiRoot identifiant le NF interne. OmniSEPP inverse le masquage de topologie, supprime les en-têtes par saut et de routage, et transfère la demande, en miroir de la réponse en amont.

Points de terminaison SBI

OmniSEPP expose les éléments suivants via son écouteur HTTP SBI. La poignée de main N32-c annonce un service NRF, n32c-handshake version v1.

MéthodeCheminBut
POST/n32c-handshake/v1/exchange-capabilityNégociation de la capacité de sécurité N32-c (répondant).
GET/n32c-handshake/v1/statusSonde de vivacité.
(tout)tout autre cheminTransfert N32-f. Routé vers l'extérieur vers le SEPP partenaire de roaming lorsque la demande nomme un PLMN partenaire, sinon entrant vers le NF interne nommé par 3gpp-Sbi-Target-apiRoot.

POST /n32c-handshake/v1/exchange-capability

Négocie la capacité de sécurité N32-f avec un SEPP partenaire initiant.

StatutCauseCondition
200-Négociation réussie. La réponse contient sender et selectedSecCapability.
400MANDATORY_IE_MISSINGLa demande manque de sender, ou supportedSecCapabilityList est absente ou vide.
406INSUFFICIENT_RESOURCESAucune capacité de sécurité N32-f mutuellement supportée.

GET /n32c-handshake/v1/status

Retourne 200 avec le corps {"status":"UP"}. Convient comme sonde de vivacité.

Transfert N32-f (catch-all)

Toute demande qui n'est pas l'un des points de terminaison de la poignée de main est traitée comme un trafic de transfert N32-f. La demande est routée vers l'extérieur (vers le SEPP partenaire de roaming) lorsqu'elle nomme un PLMN partenaire comme son sélecteur de sortie, sinon entrant (vers le NF interne nommé par 3gpp-Sbi-Target-apiRoot).

StatutCauseCondition
(miroité)-Le statut et le corps en amont sont renvoyés en miroir en cas de succès (entrant ou sortant).
404NOT_FOUNDEntrant : l'en-tête 3gpp-Sbi-Target-apiRoot est absent, donc il n'y a pas de cible de routage.
403TARGET_PLMN_NOT_A_PARTNERSortant : le PLMN cible nommé n'est pas un partenaire de roaming configuré.
502TARGET_NF_NOT_REACHABLELe transfert vers le NF interne (entrant) ou le SEPP partenaire (sortant) a échoué.

Enregistrement NRF

Au démarrage, OmniSEPP s'enregistre auprès du NRF en tant que NFType SEPP (TS 23.501 §6.2.17) et envoie des battements de cœur à l'intervalle configuré. L'enregistrement annonce l'adresse SBI, le port et le schéma, le PLMN desservi, et le service unique n32c-handshake v1.

S'enregistrer auprès du NRF local permet aux consommateurs locaux et au SCP de découvrir ce SEPP (TS 29.573 cl 4.2.1). Le SEPP pair distant, en revanche, est résolu à partir de la configuration statique roaming_partners par accord de roaming : c'est le modèle prévu pour la résolution des pairs inter-PLMN, puisque un SEPP dans un PLMN ne peut pas rechercher un SEPP dans le NRF d'un autre PLMN. Le masquage de la topologie est également une configuration statique.

Les paramètres d'enregistrement et de battement de cœur sont documentés dans la Référence de configuration.

Poignée de main sortante au démarrage

OmniSEPP agit en tant que SEPP initiateur ainsi que répondant. Au démarrage, une fois que le magasin de contexte est prêt, il initie une négociation de capacité N32-c vers chaque partenaire de roaming configuré (roaming_partners) qui a un sepp_uri (TS 29.573 §5.2.3.2). C'est un meilleur effort : un partenaire injoignable ou rejetant est enregistré et ignoré plutôt que de faire planter le démarrage, et la tâche s'exécute une fois sans redémarrage. Un partenaire qui était injoignable au démarrage peut toujours établir l'association plus tard en envoyant sa propre poignée de main (côté répondant), ou lors du prochain redémarrage.

Notes opérationnelles

  • Comportement de redémarrage : le magasin d'associations N32 est persistant (soutenu par DETS). Les associations sont rechargées au redémarrage, donc les partenaires n'ont pas à relancer la poignée de main N32-c pour que le relais reprenne.
  • PLMNs inconnus : avec un registre de partenaires de roaming vide, le transfert N32-f refuse les PLMNs inconnus. Remplissez le registre avant de vous attendre à ce que le trafic des partenaires soit relayé.
  • Terminaison TLS : lorsque sbi_scheme est https, l'écouteur N32 termine TLS lui-même en utilisant le certificat et la clé configurés, et impose un TLS mutuel (certificat client) lorsqu'une CA est configurée. Voir Référence de configuration - TLS de l'écouteur N32.
  • PLMN par défaut : le PLMN desservi par défaut expédié (999-70) est une valeur de test et doit être remplacé par déploiement.
  • Observabilité : opérez contre des journaux d'application structurés ; voir Métriques et surveillance.