OmniBSF
OmniBSF implémente la Fonction de Support de Liaison (BSF) du cœur 5G. Le BSF maintient un registre des liaisons PCF : pour chaque session PDU, il stocke la correspondance entre une identité UE (adresse IPv4, préfixe IPv6, adresse MAC ou SUPI) plus le DNN et le S-NSSAI, et l'instance PCF qui sert la politique de cette session. D'autres fonctions réseau - un AF/NEF, un SMF ou un autre PCF - interrogent le BSF pour découvrir quel PCF est responsable d'une session donnée, de sorte que tous les signaux de politique pour cette session soient dirigés vers la même instance PCF.
OmniBSF expose le service Nbsf_Management (3GPP TS 29.521) sous le chemin de base SBI /nbsf-management/v1. Les liaisons sont entièrement conservées en mémoire dans des tables ETS et sont indexées pour une recherche concurrente à faible latence. Les liaisons portent un temps de vie configurable (TTL) ; un nettoyeur en arrière-plan supprime périodiquement les entrées expirées. OmniBSF enregistre son profil NF auprès du NRF au démarrage et envoie des signaux de vie périodiques.
Documentation
- Guide des opérations - Concepts de base, références 3GPP, points de terminaison SBI et les principales procédures de cycle de vie des liaisons avec des diagrammes de séquence.
- Référence de configuration - Référence complète de configuration d'exécution avec des tableaux de paramètres, réglage de la durée de vie des liaisons et journalisation.
- Métriques & Surveillance - Référence des métriques Prometheus et exemples de requêtes PromQL.
- Dépannage - Problèmes courants et résolutions.
- API de gestion - Interface REST OAM pour les opérateurs pour le statut, les statistiques, l'inspection/suppression des liaisons et les contrôles de configuration d'exécution.
Vue d'ensemble de l'architecture
Vue d'ensemble des fonctionnalités
- Cycle de vie complet de
Nbsf_Management- enregistrer, découvrir, mettre à jour (fusionner) et désenregistrer les liaisons PCF par rapport à la TS 29.521. - Découverte multi-clé - les liaisons sont résolubles par l'IPv4 de l'UE, le préfixe IPv6 de l'UE, l'adresse MAC, le SUPI ou le DNN+S-NSSAI, avec une priorité de résolution définie.
- Protection contre les doublons - un deuxième enregistrement pour une IP UE qui a déjà une liaison est rejeté avec un
403 ExtProblemDetailsqui retourne l'adresse du PCF en place, permettant à l'appelant de la réutiliser. - Négociation des fonctionnalités prises en charge - le bitmap
suppFeatest négocié par un ET logique contre l'ensemble pris en charge par le BSF (0x01, BindingUpdate). - TTL de liaison et nettoyage automatique - chaque liaison est estampillée avec une expiration ; un nettoyeur en arrière-plan supprime les liaisons expirées à intervalles fixes.
- Stockage ETS concurrent - les liaisons et leurs indices sont conservés dans des tables ETS en lecture concurrente pour une recherche à faible latence sous charge.
- Intégration NRF - enregistrement NF automatique et signal de vie, avec capacité/priorité ajustable en temps d'exécution.
- API de gestion pour les opérateurs et métriques Prometheus pour l'observabilité et le contrôle en temps d'exécution.
Démarrage rapide
OmniBSF lit sa configuration à partir de la clé d'environnement de l'application :omnibsf. Le mécanisme de déploiement standard est config/runtime.exs, qui associe chaque valeur d'une variable d'environnement OS avec une valeur par défaut intégrée.
config :omnibsf,
sbi_scheme: System.get_env("SBI_SCHEME", "http"),
sbi_addr: System.get_env("SBI_ADDR", "127.0.0.15"),
sbi_port: String.to_integer(System.get_env("SBI_PORT", "7777")),
nrf_uri: System.get_env("NRF_URI", "http://127.0.0.1:7777"),
mcc: System.get_env("MCC", "999"),
mnc: System.get_env("MNC", "70"),
prometheus_metrics_port: String.to_integer(System.get_env("PROMETHEUS_PORT", "9571")),
heartbeat_interval: String.to_integer(System.get_env("HEARTBEAT_INTERVAL", "10000"))
La documentation complète des paramètres, le réglage de la durée de vie des liaisons et les notes de journalisation se trouvent dans la Référence de configuration.