Aller au contenu principal

Guide des Opérations OmniPGW

OmniPGW - Passerelle de Données de Paquet Plan de Contrôle (PGW-C)

par Omnitouch Network Services


Table des Matières

  1. Aperçu
  2. Architecture
  3. Interfaces Réseau
  4. Concepts Clés
  5. Prise en Main
  6. Configuration
  7. Surveillance des Opérations en Temps Réel (API OAM)
  8. Surveillance & Métriques
  9. Documentation Détailée
  10. Ressources Supplémentaires

Aperçu

OmniPGW est une implémentation de haute performance de la Passerelle de Données de Paquet Plan de Contrôle (PGW-C) pour les réseaux 3GPP LTE Evolved Packet Core (EPC), développée par Omnitouch Network Services. Elle gère les fonctions de plan de contrôle pour les sessions de données, y compris :

  • Gestion de Session - Création, modification et terminaison des sessions de données UE (Équipement Utilisateur)
  • Allocation d'Adresse IP - Attribution d'adresses IP aux dispositifs mobiles à partir de pools configurés
  • Contrôle de Politique & de Facturation - Interface avec PCRF pour l'application des politiques et la facturation
  • Coordination du Plan Utilisateur - Contrôle du PGW-U (Plan Utilisateur) pour le transfert de paquets

Ce que fait PGW-C

  • Accepte les demandes de session de SGW-C via l'interface S5/S8 (GTP-C)
  • Alloue des adresses IP UE à partir de pools de sous-réseaux configurés
  • Demande des décisions de politique à PCRF via l'interface Gx (Diameter)
  • Programme des règles de transfert dans PGW-U via l'interface Sxb (PFCP)
  • Gère l'application de QoS à travers des contextes de porteur et des règles de QoS
  • Suit les informations de facturation pour les systèmes de facturation

Architecture

Aperçu des Composants

Architecture de Processus

PGW-C est construit sur Elixir/OTP et utilise une architecture de processus supervisée :

  • Superviseur d'Application - Superviseur de niveau supérieur gérant tous les composants
  • Courtiers de Protocole - Gèrent les messages de protocole entrants/sortants
  • Processus de Session - Un GenServer par connexion PDN active
  • Registres - Suivent les ressources allouées (IPs, TEIDs, SEIDs, etc.)
  • Gestionnaire de N��ud PFCP - Maintient les associations PFCP avec les pairs PGW-U

Chaque composant est supervisé et redémarrera automatiquement en cas d'échec, garantissant la fiabilité du système.


Interfaces Réseau

PGW-C implémente trois interfaces 3GPP principales :

Interface S5/S8 (GTP-C v2)

But : Signalisation de plan de contrôle entre SGW-C et PGW-C

Protocole : GTP-C Version 2 sur UDP

Messages Clés :

  • Demande/Réponse de Création de Session
  • Demande/Réponse de Suppression de Session
  • Demande/Réponse de Création de Porteur
  • Demande/Réponse de Suppression de Porteur

Configuration : Voir Configuration S5/S8

Interface Sxb (PFCP)

But : Signalisation de plan de contrôle entre PGW-C et PGW-U

Protocole : PFCP (Protocole de Contrôle de Transfert de Paquet) sur UDP

Messages Clés :

  • Demande/Réponse de Configuration d'Association
  • Demande/Réponse d'Établissement de Session
  • Demande/Réponse de Modification de Session
  • Demande/Réponse de Suppression de Session
  • Demande/Réponse de Heartbeat

Configuration : Voir Documentation de l'Interface PFCP/Sxb

Interface Gx (Diameter)

But : Interface de Fonction de Règles de Politique et de Facturation (PCRF)

Protocole : Diameter (IETF RFC 6733)

Messages Clés :

  • Demande/Réponse de Contrôle de Crédit Initial (CCR-I/CCA-I)
  • Demande/Réponse de Terminaison de Contrôle de Crédit (CCR-T/CCA-T)

Configuration : Voir Documentation de l'Interface Diameter Gx


Concepts Clés

Session PDN

Une Session PDN (Réseau de Données de Paquet) représente la connexion de données d'un UE à un réseau externe (comme Internet). Chaque session a :

  • Adresse IP UE - Allouée à partir d'un pool de sous-réseaux configuré
  • APN (Nom de Point d'Accès) - Identifie le réseau externe
  • Contexte de Porteur - Contient des paramètres QoS et des informations de tunnel
  • ID de Facturation - Identifiant unique pour la facturation
  • TEID (Identifiant de Point de Terminaison de Tunnel) - Identifiant de tunnel de l'interface S5/S8
  • SEID (Identifiant de Point de Terminaison de Session) - Identifiant de session de l'interface Sxb

Contexte de Porteur

Un porteur représente un flux de trafic avec des caractéristiques QoS spécifiques :

  • Porteur par Défaut - Créé avec chaque session PDN
  • Porteurs Dédiés - Porteurs supplémentaires pour des besoins QoS spécifiques
  • EBI (Identifiant de Porteur EPS) - Identifiant unique pour chaque porteur
  • Paramètres QoS - QCI, ARP, débits (MBR, GBR)

Règles PFCP

Le PGW-C programme le PGW-U avec des règles de traitement de paquets :

  • PDR (Règle de Détection de Paquet) - Correspond aux paquets (montant/descendant)
  • FAR (Règle d'Action de Transfert) - Spécifie le comportement de transfert
  • QER (Règle d'Application de QoS) - Applique des limites de débit
  • BAR (Règle d'Action de Mise en Tampon) - Contrôle la mise en tampon des paquets

Voir Documentation de l'Interface PFCP pour plus de détails.

Allocation d'Adresse IP

Les adresses IP UE sont allouées à partir de pools de sous-réseaux configurés :

  • Sélection basée sur l'APN - Différents APNs peuvent utiliser différents sous-réseaux
  • Allocation dynamique - Sélection aléatoire d'IP à partir de la plage disponible
  • Allocation statique - Support pour les adresses IP demandées par l'UE
  • Détection de collision - Assure une attribution d'IP unique

Voir Allocation de Pool IP UE pour la configuration, et IPv6 / Double Pile pour le fonctionnement PDN IPv6 et IPv4v6.


Prise en Main

Prérequis

  • Elixir ~1.16
  • Erlang/OTP 26+
  • Connectivité réseau avec SGW-C, PGW-U et PCRF
  • Compréhension de l'architecture EPC LTE

Démarrer OmniPGW

  1. Configurer les paramètres d'exécution dans config/runtime.exs
  2. Compiler l'application :
    mix deps.get
    mix compile
  3. Démarrer l'application :
    mix run --no-halt

Vérification de l'Opération

Vérifiez les journaux pour un démarrage réussi :

[info] Démarrage d'OmniPGW...
[info] Démarrage de l'Exportateur de Métriques sur 127.0.0.42:42069
[info] Démarrage du Courtier S5/S8 sur 127.0.0.10
[info] Démarrage du Courtier Sxb sur 127.0.0.20
[info] Démarrage du Courtier Gx
[info] Démarrage du Gestionnaire de Nœud PFCP
[info] OmniPGW démarré avec succès

Accédez aux métriques à http://127.0.0.42:42069/metrics (adresse configurée).


Configuration

Toute la configuration d'exécution est définie dans config/runtime.exs. La configuration est structurée en plusieurs sections :

Aperçu de la Configuration

Référence Rapide de Configuration

SectionButDocumentation
metricsExportateur de métriques PrometheusGuide de Surveillance
diameterInterface Gx vers PCRFConfiguration Diameter Gx
s5s8Interface GTP-C vers SGW-CConfiguration S5/S8
sxbInterface PFCP vers PGW-UConfiguration PFCP
uePools d'adresses IP UEConfiguration de Pool IP
pcoOptions de Configuration de ProtocoleConfiguration PCO
CDRFacturation hors ligne & rapport d'utilisationFormat CDR

Voir le Guide de Configuration Complet pour des informations détaillées.


Surveillance des Opérations en Temps Réel (API OAM)

OmniPGW expose une API REST OAM pour la surveillance et les opérations en temps réel, fournissant une visibilité instantanée sur l'état du système. Interrogez ces points de terminaison en lecture à la demande (ou à intervalles de polling / depuis un script) pour une vue opérationnelle en direct - aucun accès en ligne de commande à l'hôte ou requêtes de métriques brutes nécessaires.

Accéder à l'API OAM

L'API est servie sur HTTPS/TLS. Tous les itinéraires sont servis sous le préfixe /api.

https://<omnipgw-ip>:8443/

La documentation interactive de l'API (Swagger UI) est disponible à :

https://<omnipgw-ip>:8443/api/docs

Exemple de vérification de santé (utilisez -k pour un certificat de laboratoire auto-signé) :

curl -k https://localhost:8443/api/status
{"result":"ok"}

Points de Terminaison Disponibles :

ButPoint de TerminaisonRemplace (ancienne page)
Plongée dans un abonné spécifique (IMSI/MSISDN/IP)POST /api/ue_searchRecherche UE
Lister / rechercher des sessions PDN activesGET /api/sessions[?search=<imsi|msisdn|ip>]Sessions PGW
Une session par IMSIGET /api/sessions/<imsi>Sessions PGW (détail)
Historique des sessions / événements d'auditGET /api/session_history[?type=&search=&page=&page_size=]Historique des Sessions
Vue d'ensemble de la topologie du réseauGET /api/topologyTopologie du Réseau
Utilisation du pool d'adresses IP UEGET /api/ip_pools, GET /api/ip_pools/<name>Pools IP
État des pairs UPF / PFCPGET /api/upf, GET /api/upf/<ip>Sessions PFCP / État UPF
Règles de sélection UPF, santé, configuration PCOGET /api/upf_selectionSélection UPF
Connectivité des pairs Diameter (Gx/Gy)GET /api/diameter[?status=connected|disconnected], GET /api/diameter/<origin-host>Pairs Diameter
État de facturation en ligne (Gy) par sessionGET /api/charging[?search=<imsi>], GET /api/charging/<imsi>État Gy
État de découverte DNS P-CSCFGET /api/pcscf_monitorMoniteur P-CSCF
Vérification de santéGET /api/status-

Pour une vue de style tableau de bord en direct, interrogez les points de terminaison de collection à un intervalle, par exemple :

watch -n 2 'curl -sk https://localhost:8443/api/sessions'
watch -n 1 'curl -sk https://localhost:8443/api/diameter?status=disconnected'

Remarque : l'ancienne page Journaux (streaming de journaux en direct) et la page Simulateur Gy n'ont pas d'équivalent API OAM. Diffusez les journaux depuis l'hôte / votre agrégateur de journaux, et utilisez GET /api/charging pour inspecter l'état en direct de Gy/facturation en ligne.

Fonctionnalités Clés

Données à la Demande et Pollées :

  • Chaque point de terminaison retourne l'état actuel en direct des processus OmniPGW
  • Poll sur un intervalle avec watch/cron/un script pour une vue auto-rafraîchissante
  • Les champs d'état (par exemple, pair connecté/associé) sont retournés explicitement dans le JSON

Recherche & Filtre :

  • Rechercher des sessions par IMSI, IP, MSISDN ou APN via GET /api/sessions?search=...
  • Filtrer les pairs Diameter par ?status=connected|disconnected
  • Filtrer l'état de facturation par ?search=<imsi>

Enregistrements de Détails Complets :

  • Points de terminaison par entité (/api/sessions/<imsi>, /api/upf/<ip>, /api/diameter/<origin-host>, /api/charging/<imsi>) retournent l'état complet en JSON
  • Inspecter la session complète, la configuration des pairs et les capacités

Contrôle d'Accès :

  • Servi sur HTTPS/TLS sur le port 8443
  • Lier uniquement à l'IP de gestion et faire face à vos contrôles d'accès
  • Destiné à l'équipe NOC/opérations et à l'utilisation d'automatisation

Flux de Travail Opérationnels

Dépannage de Session (Plongée Profonde) :

1. L'utilisateur signale un problème de connexion
2. POST /api/ue_search avec un corps JSON contenant l'IMSI, le MSISDN ou l'IP
3. Examiner les détails complets de la session dans la réponse :
a) Sessions Actives - Vérifier que la session existe avec les bons paramètres
b) Localisation Actuelle - Vérifier TAC, ID de Cellule, réseau de service
c) Informations sur le Porteur - Vérifier les porteurs par défaut et dédiés
- QCI, MBR/GBR, Noms de Règles de Facturation
- Limites APN-AMBR
d) Informations de Facturation - ID de session Gy, état de quota (également GET /api/charging/<imsi>)
e) Informations de Politique - Session Gx, règles PCC installées
f) Événements Récents - GET /api/session_history?search=<imsi>
4. Si session non trouvée → GET /api/diameter?status=disconnected pour la connectivité PCRF

Recherche Rapide de Session :

1. L'utilisateur signale un problème
2. GET /api/sessions?search=<imsi|msisdn> (ou GET /api/sessions/<imsi>)
3. Vérifier que la session existe avec des détails de base :
- Adresse IP UE allouée
- Paramètres QoS
- Points de terminaison de tunnel établis
4. Pour une analyse détaillée → POST /api/ue_search

Vérification de Santé du Système :

1. GET /api/upf              → Vérifier que tous les pairs PGW-U sont "Associés"
2. GET /api/diameter?status=connected → Vérifier que tous les pairs PCRF sont "Connectés"
3. GET /api/sessions → Vérifier le nombre de sessions actives par rapport à la capacité
4. GET /api/status → Vérification de santé globale ({"result":"ok"})

Surveillance de Capacité :

  • Compter les entrées retournées par GET /api/sessions
  • Comparer à la capacité sous licence/attendue
  • Identifier les pics d'utilisation
  • Surveiller la distribution à travers les APNs ; utiliser GET /api/ip_pools pour l'utilisation par pool

API vs. Métriques

Utilisez l'API OAM pour :

  • Dépannage approfondi des abonnés (POST /api/ue_search)
  • Détails et inspection de l'état des sessions individuelles (GET /api/sessions/<imsi>)
  • État des pairs en temps réel (GET /api/upf, GET /api/diameter)
  • Vérifications de santé rapides à travers toutes les interfaces (GET /api/status)
  • Dépannage d'utilisateurs spécifiques par IMSI/MSISDN/IP
  • Analyse de QoS de porteur (MBR, GBR, QCI)
  • Inspection des règles de politique et de facturation (GET /api/charging)
  • Historique des sessions et pistes d'audit (GET /api/session_history)
  • Surveillance de la capacité des pools IP (GET /api/ip_pools)
  • Vérification de la configuration et des règles (GET /api/upf_selection)

Utilisez les Métriques Prometheus pour :

  • Tendances historiques
  • Alertes et notifications
  • Graphiques de planification de capacité
  • Analyse de performance
  • Surveillance à long terme

Meilleure Pratique : Utilisez les deux ensemble - l'API OAM pour les opérations immédiates, Prometheus pour les tendances et les alertes.


Surveillance & Métriques

En plus de l'API OAM, OmniPGW expose des métriques compatibles avec Prometheus pour la surveillance :

Métriques Disponibles

  • Métriques de Session

    • teid_registry_count - Sessions S5/S8 actives
    • seid_registry_count - Sessions PFCP actives
    • session_id_registry_count - Sessions Gx actives
    • address_registry_count - Adresses IP UE allouées
    • charging_id_registry_count - IDs de facturation actifs
  • Métriques de Message

    • s5s8_inbound_messages_total - Messages GTP-C reçus
    • sxb_inbound_messages_total - Messages PFCP reçus
    • gx_inbound_messages_total - Messages Diameter reçus
    • Durées de traitement des messages
  • Métriques d'Erreur

    • s5s8_inbound_errors_total - Erreurs de protocole S5/S8
    • sxb_inbound_errors_total - Erreurs de protocole PFCP
    • gx_inbound_errors_total - Erreurs Diameter
  • Métriques de Cycle de Vie de Session

    • pgw_session_create_total{result,cause,pdn_type,rat_type} - Tentatives de création de session PDN, décomposées par résultat (success/failure), la cause GTP retournée, type de PDN (ipv4/ipv6/ipv4v6) et type RAT
    • pgw_session_delete_total{pdn_type} - Suppressions de session PDN par type de PDN
    • pgw_session_modify_total - Demandes de Modification de Porteur traitées
  • Métriques de Pool IP UE

    • ue_pool_addresses_allocated{pool,ip_version} - Adresses UE allouées par pool (modèle APN) et version IP
    • ue_pool_addresses_total{pool,ip_version} - Capacité totale du pool
    • ue_pool_addresses_utilization_ratio{pool,ip_version} - Fraction allouée (0.0-1.0) ; utile pour l'alerte d'épuisement de pool. Remarque : les pools partageant une plage d'adresses comptent chacun les allocations partagées
    • ue_ip_allocation_failures_total{ip_version,reason} - Échecs d'allocation (pool_exhausted, already_registered)
  • Métriques UPF / PFCP par Pair

    • upf_peer_associated{peer_ip} - État d'association PFCP 1/0 par pair
    • upf_peer_healthy{peer_ip} - Santé 1/0 par pair
    • upf_peer_missed_heartbeats{peer_ip} - Battements de cœur consécutifs manqués par pair
    • upf_heartbeat_rtt - Distribution du temps de trajet aller-retour du battement de cœur PFCP, par peer_ip
  • Métriques de Porteur & QoS

    • pgw_bearer_create_total{type,qci} - Porteurs créés par type (default/dedicated) et QCI
    • pgw_bearer_delete_total{type} - Porteurs supprimés par type
  • Métriques de Pair Diameter

    • diameter_peers_connected{application} - Pairs Diameter connectés par application (gx/gy/all)

Accéder aux Métriques

Les métriques sont exposées via HTTP à l'itinéraire configuré :

curl http://127.0.0.42:42069/metrics

Voir Guide de Surveillance & Métriques pour la configuration du tableau de bord et l'alerte.


Documentation Détailée

Cette section fournit un aperçu complet de toute la documentation OmniPGW. Les documents sont organisés par sujet et cas d'utilisation.

Structure de la Documentation

Documentation OmniPGW
├── OPERATIONS.md (Ce Guide)

└── docs/
├── Configuration & Mise en Place
│ ├── configuration.md Référence complète de runtime.exs
│ ├── ue-ip-allocation.md Configuration de pool IP
│ └── pco-configuration.md Paramètres DNS, P-CSCF, MTU

├── Interfaces Réseau
│ ├── pfcp-interface.md Sxb/PFCP (communication PGW-U)
│ ├── diameter-gx.md Gx (communication PCRF)
│ ├── diameter-gy.md Gy/Ro (communication OCS)
│ └── s5s8-interface.md S5/S8 (communication SGW-C)

└── Opérations
├── session-management.md Cycle de vie de session PDN
└── monitoring.md Métriques Prometheus & alerte

Documentation par Sujet

🚀 Prise en Main

DocumentDescriptionBut
OPERATIONS.mdGuide principal des opérations (ce document)Aperçu et démarrage rapide

⚙️ Configuration

DocumentDescriptionLignes
configuration.mdRéférence complète de runtime.exs1,600+
ue-ip-allocation.mdGestion et allocation de pool IP UE943
ipv6-dual-stack.mdFonctionnement PDN IPv6 / IPv4v6 à travers PGW-C et UPF-
pco-configuration.mdOptions de Configuration de Protocole (DNS, P-CSCF, MTU)344

🔌 Interfaces Réseau

DocumentDescriptionLignes
pfcp-interface.mdInterface PFCP/Sxb vers PGW-U1,355
diameter-gx.mdInterface Diameter Gx vers PCRF (Contrôle de Politique)941
diameter-gy.mdInterface Diameter Gy/Ro vers OCS (Facturation en Ligne)1,100+
s5s8-interface.mdInterface GTP-C S5/S8 vers SGW-C456

📊 Opérations & Surveillance

DocumentDescriptionLignes
session-management.mdCycle de vie de session PDN et opérations435
monitoring.mdMétriques Prometheus, tableaux de bord Grafana, alerte807
data-cdr-format.mdFormat de fichier CDR, configuration URR, facturation hors ligne847
qos-bearers.mdGestion de QoS & de porteur, contrôle de politique448
troubleshooting.mdProcédures de dépannage et problèmes courants687

🔧 Fonctionnalités Avancées

DocumentDescriptionLignes
pcscf-monitoring.mdDécouverte P-CSCF et surveillance de santé894

Fonctionnalités de la Documentation

📈 Diagrammes Mermaid

Tous les documents incluent des diagrammes Mermaid pour une compréhension visuelle :

  • Diagrammes d'architecture
  • Diagrammes de séquence (flux de messages)
  • Machines d'état
  • Topologie du réseau

💡 Exemples Pratiques

Chaque document inclut :

  • Exemples de configuration du monde réel
  • Configurations prêtes à copier-coller
  • Cas d'utilisation courants

🔍 Dépannage

Chaque document d'interface inclut :

  • Problèmes courants et solutions
  • Commandes de débogage
  • Métriques pour le diagnostic

🔗 Liens Croisés

Les documents sont largement interconnectés pour une navigation facile.

Chemins de Lecture

Pour les Opérateurs Réseau

  1. OPERATIONS.md - Aperçu (ce document)
  2. configuration.md - Mise en Place
  3. monitoring.md - Surveillance
  4. session-management.md - Opérations quotidiennes

Pour les Ingénieurs Réseau

  1. OPERATIONS.md - Aperçu de l'architecture (ce document)
  2. pfcp-interface.md - Contrôle du plan utilisateur
  3. diameter-gx.md - Contrôle de politique
  4. diameter-gy.md - Facturation en ligne
  5. s5s8-interface.md - Gestion de session
  6. ue-ip-allocation.md - Gestion IP

Pour la Configuration & le Déploiement

  1. configuration.md - Référence complète
  2. ue-ip-allocation.md - Pools IP
  3. pco-configuration.md - Paramètres réseau
  4. monitoring.md - Configurer la surveillance

Statistiques du Document

  • Total de Documents : 14
  • Total de Lignes : ~10,900+
  • Taille Totale : ~265 Ko
  • Diagrammes Mermaid : 75+
  • Exemples de Code : 150+

Concepts Clés Couvert

Architecture

  • ✅ Séparation du plan de contrôle/utilisateur
  • ✅ Architecture OTP/Elixir
  • ✅ Supervision des processus
  • ✅ Sessions basées sur GenServer

Protocoles

  • ✅ PFCP (Protocole de Contrôle de Transfert de Paquet)
  • ✅ GTP-C v2 (Protocole de Tunnel GPRS)
  • ✅ Diameter (RFC 6733)

Interfaces 3GPP

  • ✅ Sxb (PGW-C ↔ PGW-U)
  • ✅ Gx (PGW-C ↔ PCRF)
  • ✅ Gy/Ro (PGW-C ↔ OCS)
  • ✅ S5/S8 (SGW-C ↔ PGW-C)

Opérations

  • ✅ Gestion de session
  • ✅ Stratégies d'allocation IP
  • ✅ Application de QoS
  • ✅ Intégration de facturation
  • ✅ Surveillance & alerte

Ressources Supplémentaires

Spécifications 3GPP

SpécificationTitre
TS 29.274GTP-C v2 (interface S5/S8)
TS 29.244PFCP (interface Sxb)
TS 29.212Interface Diameter Gx (Contrôle de Politique)
TS 32.299Applications de Facturation Diameter (Gy/Ro)
TS 32.251Facturation dans le domaine de Paquet
TS 23.401Architecture EPC

Documentation Connexe