Pular para o conteúdo principal

OmniNSSF

OmniNSSF implementa a Função de Seleção de Fatiamento de Rede (NSSF) do Core 5G. O NSSF é a autoridade para decisões de fatiamento de rede: ele informa ao AMF quais fatiamentos uma UE pode usar, onde a descoberta NF específica de fatiamento deve ser direcionada (o NRF alvo para uma Instância de Fatiamento de Rede), e qual conjunto de AMF pode atender a um determinado fatiamento. Ele também coleta e autoriza a disponibilidade de fatiamento por Área de Rastreamento reportada pelos AMFs.

OmniNSSF expõe dois serviços da Interface Baseada em Serviço 5G (SBI) - Nnssf_NSSelection (nnssf-nsselection/v2), consultado pelo AMF no registro da UE e no estabelecimento da sessão PDU para resolver um S-NSSAI Solicitado / Assinado em um NSSAI Permitido, informações de NSI (NRF alvo), um conjunto de AMF alvo e (para UEs em roaming) um mapeamento de NSSAI Configurado; e Nnssf_NSSAIAvailability (nnssf-nssaiavailability/v1), que recebe atualizações de disponibilidade de S-NSSAI por Identidade de Área de Rastreamento (TAI) enviadas pelos AMFs e gerencia a assinatura/notificação de mudanças de disponibilidade. A topologia de fatiamento e a disponibilidade por AMF são mantidas em armazenamentos em memória que são reconstruídos a partir da configuração e dos relatórios ao vivo do AMF após uma reinicialização.

Documentação

  • Guia de Operações - papel da 3GPP, endpoints do SBI e os principais procedimentos de seleção de fatiamento e disponibilidade de NSSAI com diagramas de sequência.
  • Referência de Configuração - Referência completa de configuração em tempo de execução, tabelas de parâmetros de topologia de fatiamento, API de gerenciamento/OAM e registro.
  • Métricas - Métricas Prometheus para seleção de fatiamento, atualizações de disponibilidade, registro NRF e saúde da VM BEAM, com exemplo de PromQL.
  • Solução de Problemas - Problemas comuns e suas resoluções.

Visão Geral da Arquitetura

Visão Geral dos Recursos

  • Seleção de fatiamento para registro e sessão PDU - resolve S-NSSAI Solicitado / Assinado em informações de NSI, NSSAI Permitido, conjunto de AMF alvo e NSSAI Configurado.
  • Mapeamento de NSI para NRF - direciona a descoberta NF específica de fatiamento para o NRF correto por fatiamento.
  • NSSAI Permitido por PLMN com fallback para o PLMN doméstico.
  • Filtragem de disponibilidade ciente de TAI - NSSAI Permitido e seleção de fatiamento respeitam a disponibilidade por TAI reportada pelos AMFs; permissivo quando não existem dados de disponibilidade.
  • Gerenciamento de disponibilidade de NSSAI - PUT/PATCH/DELETE de disponibilidade por AMF, com suporte a JSON Patch (RFC 6902).
  • Assinaturas e notificações de disponibilidade - POST/PATCH/DELETE de assinaturas com notificações de mudança entregues fora do caminho da solicitação com tentativas limitadas.
  • Descoberta dinâmica de NRF opcional - quando habilitado, o NSSF resolve o NRF que atende ao fatiamento em tempo de execução a partir do NRF raiz via Nnrf_NFDiscovery, revertendo para a nsi_list configurada estaticamente quando a descoberta não retorna nada. Desabilitado por padrão (apenas nsi_list estática).
  • Negociação de recursos suportados - anuncia o bit de recurso NssaiAvailability e retorna a interseção negociada.
  • Registro e heartbeat do NRF - registro automático na inicialização com heartbeats periódicos; anuncia tanto nnssf-nsselection (v2) quanto nnssf-nssaiavailability (v1).
  • OAM em tempo de execução - inspecionar e ajustar a topologia de fatiamento, URI do NRF, capacidade/prioridade e nível de log sem reinicialização.
  • Registro JSON estruturado e métricas Prometheus.

Início Rápido

OmniNSSF é configurado através de variáveis de ambiente do sistema operacional lidas na inicialização. A configuração principal em tempo de execução é:

config :omnissf,
sbi_scheme: System.get_env("SBI_SCHEME", "http"),
sbi_addr: System.get_env("SBI_ADDR", "127.0.0.14"),
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", "9568")),
heartbeat_interval: String.to_integer(System.get_env("HEARTBEAT_INTERVAL", "10000"))

A topologia de fatiamento (lista de NSI, NSSAI permitido, mapeamento de conjunto de AMF, NSSAI configurado) é fornecida através da configuração estrutural da aplicação. A referência completa de parâmetros, incluindo as tabelas de topologia de fatiamento e a API de gerenciamento/OAM, está na Referência de Configuração.