OmniBSF
OmniBSF implementa a Função de Suporte à Ligação (BSF) do Core 5G. O BSF mantém um registro de ligações do PCF: para cada sessão PDU, ele armazena o mapeamento entre uma identidade de UE (endereço IPv4, prefixo IPv6, endereço MAC ou SUPI) mais o DNN e S-NSSAI, e a instância do PCF que atende à política dessa sessão. Outras funções de rede - um AF/NEF, um SMF ou outro PCF - consultam o BSF para descobrir qual PCF é responsável por uma determinada sessão, de modo que toda a sinalização de política para essa sessão seja direcionada à mesma instância do PCF.
OmniBSF expõe o serviço Nbsf_Management (3GPP TS 29.521) sob o caminho base do SBI /nbsf-management/v1. As ligações são mantidas inteiramente na memória em tabelas ETS e são indexadas para consulta concorrente e de baixa latência. As ligações possuem um tempo de vida configurável (TTL); um limpador em segundo plano remove periodicamente entradas expiradas. OmniBSF registra seu perfil NF com o NRF na inicialização e envia batimentos cardíacos periódicos.
Documentação
- Guia de Operações - Conceitos básicos, referências 3GPP, endpoints do SBI e os principais procedimentos do ciclo de vida das ligações com diagramas de sequência.
- Referência de Configuração - Referência completa de configuração em tempo de execução com tabelas de parâmetros, ajuste do tempo de vida da ligação e registro.
- Métricas e Monitoramento - Referência de métricas Prometheus e exemplos de consultas PromQL.
- Solução de Problemas - Problemas comuns e resoluções.
- API de Gerenciamento - Interface REST OAM voltada para o operador para status, estatísticas, inspeção/remoção de ligações e controles de configuração em tempo de execução.
Visão Geral da Arquitetura
Visão Geral dos Recursos
- Ciclo de vida completo do
Nbsf_Management- registrar, descobrir, atualizar (merge-patch) e desregistrar ligações do PCF conforme TS 29.521. - Descoberta de múltiplas chaves - as ligações são resolvíveis por UE IPv4, prefixo UE IPv6, endereço MAC, SUPI ou DNN+S-NSSAI, com uma prioridade de resolução definida.
- Proteção contra duplicatas - um segundo registro para um IP de UE que já possui uma ligação é rejeitado com um
403 ExtProblemDetailsque retorna o endereço do PCF incumbente, permitindo que o chamador o reutilize. - Negociação de recursos suportados - o bitmap
suppFeaté negociado por meio de AND bit a bit contra o conjunto suportado pelo BSF (0x01, BindingUpdate). - TTL da ligação e limpeza automática - cada ligação é carimbada com uma expiração; um limpador em segundo plano remove ligações expiradas em um intervalo fixo.
- Armazenamento ETS concorrente - ligações e seus índices são mantidos em tabelas ETS de leitura concorrente para consulta de baixa latência sob carga.
- Integração NRF - registro automático de NF e batimento cardíaco, com capacidade/prioridade ajustável em tempo de execução.
- API de gerenciamento do operador e métricas Prometheus para observabilidade e controle em tempo de execução.
Início Rápido
OmniBSF lê sua configuração da chave de ambiente da aplicação :omnibsf. O mecanismo de implantação padrão é config/runtime.exs, que mapeia cada valor de uma variável de ambiente do SO com um padrão embutido.
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"))
A documentação completa dos parâmetros, ajuste do tempo de vida da ligação e notas de registro estão na Referência de Configuração.