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_listconfigurada estaticamente quando a descoberta não retorna nada. Desabilitado por padrão (apenasnsi_listestá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) quantonnssf-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.