Pular para o conteúdo principal

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 ExtProblemDetails que 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.