OmniCHF
OmniCHF implémente la Fonction de Chargement (CHF) du cœur 5G. Le CHF fournit un chargement en ligne et hors ligne convergent pour les sessions PDU 5G via le service Nchf_ConvergedCharging (3GPP TS 32.290 / TS 32.291 / TS 32.255).
Un consommateur de chargement, typiquement le SMF, crée une session de chargement pour chaque session PDU, rapporte l'utilisation pendant la durée de cette session, et enfin la libère. OmniCHF traduit chaque demande de chargement 5G en un appel JSON-RPC CGRateS SessionS pour l'autorisation de crédit en temps réel (chargement en ligne / gestion de quota) et génère un Enregistrement de Données de Chargement (CDR) lors de la libération de la session (chargement hors ligne). Chaque session de chargement est détenue par un processus de travailleur dédié (architecture processus-par-session) pour l'isolement des pannes ; l'état de la session est conservé en mémoire et est reconstruit à mesure que les consommateurs créent de nouvelles sessions après un redémarrage.
Documentation
- Guide des Opérations - Références de rôle et de spécification 3GPP, points de terminaison SBI, intégration CGRateS, et les principales procédures de chargement avec leurs diagrammes de séquence.
- Référence de Configuration - Tables complètes des paramètres de configuration d'exécution, interfaces de gestion/OAM, et notes de journalisation.
- Référence des Métriques - Métriques Prometheus (chargement, CGRateS, NRF, BEAM VM) avec des exemples de requêtes PromQL.
- Dépannage - Problèmes courants et diagnostics.
Vue d'Ensemble de l'Architecture
Le consommateur (SMF) atteint OmniCHF via le SBI. CGRateS est un moteur de tarification et de solde externe, et OmniCHF est un client pour celui-ci, et non l'inverse. Lorsque CGRateS est désactivé, le Client CGRateS court-circuite et retourne un octroi par défaut fixe (voir Intégration CGRateS).
Vue d'Ensemble des Fonctionnalités
- Chargement en ligne + hors ligne convergent pour les sessions PDU 5G via
nchf-convergedcharging/v3. - Architecture processus-par-session (ChargementWorker + Registry) pour l'isolement des pannes et la recherche O(1).
- Intégration CGRateS SessionS via HTTP JSON-RPC utilisant un client Finch en pool.
- Mode de contournement CGRateS pour l'opération en laboratoire sans moteur de tarification.
- Gestion de quota avec des octrois GSU et des déclencheurs
QUOTA_THRESHOLD/TIME_LIMIT. - Notification de Chargement (
REAUTHORIZATION,ABORT_CHARGING) vers lenotifyUridu consommateur. - Groupes de tarification par DNN via
rating_groups/default_rating_group. - Génération d'ID de chargement 3GPP (TS 32.251) avec
node_idconfigurable par instance. - Fichiers CDR hors ligne (optionnels) plus journalisation CDR toujours active.
- Enregistrement et battement NRF.
- Métriques Prometheus et journalisation JSON structurée.
- API de Gestion et Panneau de Contrôle pour l'état, l'inspection des sessions, les statistiques, et les actions OAM.
Démarrage Rapide
La configuration de l'opérateur est lue à partir de la clé d'environnement de l'application :omnichf, peuplée au d��marrage par config/runtime.exs. Chaque clé est remplaçable par une variable d'environnement OS. L'exemple ci-dessous montre la configuration d'exécution principale avec les valeurs appliquées lorsque la variable d'environnement correspondante n'est pas définie.
config :omnichf,
# Écouteur SBI (interface basée sur le service)
sbi_scheme: "http",
sbi_addr: "127.0.0.14",
sbi_port: 7777,
# Enregistrement / battement NRF
nrf_uri: "http://127.0.0.1:7777",
# Identité PLMN de service
mcc: "999",
mnc: "70",
# Observabilité
prometheus_metrics_port: 9568,
# Cadence de battement NRF
heartbeat_interval: 10_000,
# Intégration du moteur de tarification / solde CGRateS
cgrates_enabled: true,
cgrates_url: "http://localhost:2080/jsonrpc",
cgrates_tenant: "cgrates.org",
cgrates_timeout: 5000
La documentation complète des paramètres, y compris les clés avancées de groupe de tarification, de chargement hors ligne, et d'ID de chargement, de journalisation, et des interfaces de gestion, se trouve dans la Référence de Configuration.