Pular para o conteúdo principal

← Visão Geral

Referência de Configuração do OmniAMF

OmniAMF lê a configuração do operador do ambiente da aplicação Elixir sob a chave :omniamf, populada na inicialização a partir de config/runtime.exs. Cada chave de tempo de execução é impulsionada por uma variável de ambiente com um padrão embutido, de modo que uma implantação pode ser ajustada inteiramente através de variáveis de ambiente.

Índice


Exemplo de Configuração

config :omniamf,
# Servidor HTTP SBI (serviços Namf produzidos)
sbi_scheme: "http",
sbi_addr: "127.0.0.5",
sbi_port: 7777,

# NRF (registro, heartbeat, descoberta)
nrf_uri: "http://127.0.0.1:7777",

# URIs base NF par consumidos (fallbacks estáticos; descoberta NRF preferida)
ausf_uri: "http://127.0.0.12:7777",
udm_uri: "http://127.0.0.12:7777",
smf_uri: "http://127.0.0.4:7777",
nssf_uri: "http://127.0.0.14:7777",

# PLMN atendido
mcc: "999",
mnc: "70",

# Identidade AMF (GUAMI)
amf_name: "OmniAMF",
amf_id: %{region_id: 2, set_id: 1, pointer: 0},

# Observabilidade
prometheus_metrics_port: 9569,

# N2 / NGAP (listener SCTP para gNBs)
ngap_addr: "0.0.0.0",
ngap_port: 38412,

# Cadência de heartbeat do NRF
heartbeat_interval: 10_000,

# Interoperabilidade N26 EPS↔5GS com um MME 4G
n26_enabled: true,
n26_addr: "0.0.0.0",
n26_mme_peer: %{ip: "127.0.0.11", port: 2123}

Parâmetros do Servidor SBI

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
sbi_schemeStringNão"http"SBI_SCHEMEEsquema URI anunciado para o servidor HTTP SBI.
sbi_addrStringNão"127.0.0.5"SBI_ADDREndereço IP ao qual o servidor HTTP SBI se vincula e anuncia nos cabeçalhos Location e para o NRF.
sbi_portIntegerNão7777SBI_PORTPorta TCP na qual o servidor HTTP SBI escuta.

Parâmetros do NRF e NF Par

URIs de NF par são fallbacks estáticos. Quando nrf_uri está configurado, o OmniAMF prefere a descoberta de serviços NRF (em cache, TTL de 60 s) e só recorre ao URI estático quando a descoberta não está disponível. Definir um URI estático não desabilita a descoberta por NF, a menos que a própria descoberta seja inacessível.

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
nrf_uriStringNão"http://127.0.0.1:7777"NRF_URIURI base do NRF para registro de NF, heartbeat e descoberta. Quando definido, habilita a descoberta de NFs par baseada em NRF.
ausf_uriStringNão"http://127.0.0.12:7777"AUSF_URIURI base estática do AUSF para autenticação 5G-AKA (Nausf_UEAuthentication, N12).
udm_uriStringNão"http://127.0.0.12:7777"UDM_URIURI base estática do UDM para dados de assinatura (Nudm_SDM) e registro de contexto UE (Nudm_UECM, N8).
smf_uriStringNão"http://127.0.0.4:7777"SMF_URIURI base estática do SMF para gerenciamento de sessão PDU (Nsmf_PDUSession, N11).
nssf_uriStringNão"http://127.0.0.14:7777"NSSF_URIURI base estática do NSSF para seleção de fatia de rede (Nnssf_NSSelection, N22).
pcf_uriStringNão"http://127.0.0.7:7777"-URI base estática do PCF para associação de política AM (Npcf_AMPolicyControl, N15). Resolvido via descoberta/fallback como as outras NFs. Definido apenas na configuração da aplicação (sem var de ambiente dedicada).
heartbeat_intervalInteger (ms)Não10000HEARTBEAT_INTERVALIntervalo entre requisições de heartbeat do NRF (PATCH) para manter o NFProfile ativo.

Parâmetros de Identidade PLMN e AMF

O GUAMI (Identificador AMF Globalmente Único) é formado a partir do PLMN atendido (mcc/mnc) mais o Identificador AMF, que é composto por region_id, set_id e pointer. O GUAMI é anunciado na Configuração NG e usado para alocar o 5G-GUTI para UEs.

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
mccStringNão"999"MCCCódigo do País Móvel do PLMN atendido.
mncStringNão"70"MNCCódigo da Rede Móvel do PLMN atendido.
amf_nameStringNão"OmniAMF"AMF_NAMENome do AMF anunciado na Configuração NG e registrado no NFProfile do NRF.
amf_id.region_idInteger (8-bit)Não2AMF_REGION_IDComponente ID da Região do AMF do Identificador AMF / GUAMI.
amf_id.set_idInteger (10-bit)Não1AMF_SET_IDComponente ID do Conjunto do AMF do Identificador AMF / GUAMI.
amf_id.pointerInteger (6-bit)Não0AMF_POINTERComponente Pointer do AMF que identifica exclusivamente este AMF dentro do conjunto.

Parâmetros N2 / NGAP

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
ngap_addrStringNão"0.0.0.0"NGAP_ADDREndereço IP ao qual o listener SCTP/NGAP se vincula. Use um endereço de interface específico para restringir quais gNBs podem se conectar.
ngap_portIntegerNão38412NGAP_PORTPorta SCTP para NGAP. A porta bem conhecida é 38412 de acordo com a TS 38.412.

Parâmetros de Interoperabilidade N26

A interface N26 permite mobilidade entre sistemas entre 5GS e EPS ao se comunicar via GTPv2-C com um MME 4G (ela reutiliza o conjunto de mensagens de Realocação para Frente no estilo S10). É iniciada como um endpoint GTPv2-C separado apenas quando n26_enabled é verdadeiro.

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
n26_enabledBooleanNãotrue (runtime.exs)N26_ENABLEDHabilita o endpoint GTPv2-C N26 e a interoperabilidade. Defina a var de ambiente para qualquer valor diferente de "true" para desabilitar.
n26_addrStringNãovalor de ngap_addrN26_ADDRO IP N26 anunciado do AMF colocado nos F-TEIDs GTPv2-C. Deve ser um endereço roteável acessível pelo MME - não deixe como 0.0.0.0 em produção.
n26_mme_peer.ipStringNão"127.0.0.11"N26_MME_IPIP do MME par estático alvo usado para a transferência 5G→4G (fallback quando a descoberta DNS não retorna nada).
n26_mme_peer.portIntegerNão2123N26_MME_PORTPorta GTPv2-C do MME par estático alvo.

O listener GTPv2-C vinculado pela biblioteca compartilhada gtpc usa o seguinte, também impulsionado por ambiente:

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
listen IPStringNãovalor de n26_addr (então ngap_addr)N26_ADDR / NGAP_ADDREndereço local de vinculação para o socket GTPv2-C N26.
listen portIntegerNão2123N26_PORTPorta UDP local para o socket GTPv2-C N26 (porta padrão GTP-C).

Parâmetros de Observabilidade

ParâmetroTipoNecessárioPadrãoVar de AmbienteDescrição
prometheus_metrics_portIntegerNão9569PROMETHEUS_PORTPorta TCP expondo o endpoint de coleta /metrics do Prometheus.

Consulte o guia Métricas & Monitoramento para as métricas expostas neste endpoint.


Parâmetros Avançados (configuração da aplicação)

Essas chaves têm padrões sensatos e não estão conectadas a variáveis de ambiente em runtime.exs. Defina-as na configuração da aplicação apenas quando for necessário substituir o comportamento.

ParâmetroTipoPadrãoDescrição
relative_amf_capacityInteger (0–255)255Capacidade relativa do AMF anunciada na Resposta da Configuração NG; também mutável em tempo de execução via API de gerenciamento. Influencia o balanceamento de carga do gNB entre AMFs.
served_guami_listLista de mapas[{plmn_id, amf_id}] derivada de mcc/mnc/amf_idLista de GUAMIs que este AMF atende; visualizável e configurável via API de gerenciamento. A Resposta da Configuração NG anuncia cada GUAMI nesta lista (mapeado a partir do plmn_id/amf_id de cada entrada), de modo que uma configuração de múltiplos GUAMIs é respeitada em relação ao gNB.
served_nssaiLista de mapas[{sst:1}, {sst:1,sd:000001}, {sst:2,sd:000002}, {sst:3,sd:000003}]S-NSSAIs que este AMF suporta. Estes também impulsionam a SliceSupportList anunciada no item de suporte PLMN da Resposta da Configuração NG (TS 38.413 §8.7.1).
supported_ta_listLista de mapas[{tac:1, plmn_list:[{mcc,mnc}]}]Áreas de rastreamento que este AMF atende. A SupportedTAList/PLMN da Configuração NG de um gNB é validada contra esta lista; um gNB que não atende a TAC/PLMN correspondente é rejeitado com uma Falha de Configuração NG (causa unknown-PLMN-or-SNPN).
force_null_cipheringBooleanfalseO padrão (false) seleciona o algoritmo de criptografia NAS preferido do AMF que o UE também suporta, preferindo NEA2 e recuando para NEA0 (nulo) quando o UE não oferece NEA2. A integridade é negociada da mesma forma, preferindo NIA2 (recuando para NIA0). Defina true para forçar NEA0 independentemente das capacidades do UE, para depuração/interoperabilidade.
dns_portInteger53Porta UDP/TCP usada para as consultas DNS S-NAPTR N26 descritas sob n26_dns_servers. Raramente alterada; principalmente uma substituição de teste/interoperabilidade.
maintenance_modeBooleanfalseFlag de modo de manutenção persistente. Quando true, o AMF se desregistra do NRF e rejeita novos registros de UE (drenagem para reinício). Normalmente alternado em tempo de execução via API de gerenciamento em vez de definido aqui.
n26_selection_methodAtom:dns_lookupDescoberta do MME alvo para transferência 5G→4G. :dns_lookup realiza uma consulta S-NAPTR (serviço x-3gpp-mme:x-s10) no FQDN TAI EPS alvo de acordo com TS 29.303 §5.4, recuando para n26_mme_peer se o DNS não retornar nada. :static (qualquer valor diferente de :dns_lookup) ignora o DNS e usa n26_mme_peer diretamente. Consulte descoberta do MME alvo.
n26_dns_serversLista de mapas[%{server: "127.0.0.53", domain: "3gppnetwork.org"}]Resolvedores DNS consultados (na ordem) para descoberta do MME S-NAPTR N26 quando n26_selection_method é :dns_lookup. Cada entrada tem server (IP do resolvedor, consultado via TCP) e domain (o domínio base da rede doméstica anexado ao FQDN TAI EPS, por exemplo, 3gppnetwork.org).
n26_smf_uriString"http://127.0.0.4:8443"URL base da API interna de interoperabilidade do SMF, consultada durante a transferência 5G→4G para os dados reais de conexão PDN EPS do UE (IP, EBI, endereço PGW-C).

Subcampos de Configuração Estruturada

Várias chaves avançadas são listas de mapas. Seus subcampos e semântica são:

served_guami_list - os GUAMIs que este AMF atende. Cada entrada:

SubcampoTipoDescrição
plmn_id.mcc / plmn_id.mncStringPLMN atendido do GUAMI (padrão para mcc/mnc de nível superior).
amf_id.region_idInteger (8-bit)ID da Região do AMF.
amf_id.set_idInteger (10-bit)ID do Conjunto do AMF.
amf_id.pointerInteger (6-bit)Pointer do AMF dentro do conjunto.

served_nssai - os S-NSSAIs que este AMF suporta. Cada entrada é um mapa com chaves de string:

SubcampoTipoDescrição
"sst"Integer (0–255)Tipo de Fatia/Serviço. Valores padronizados: 1 eMBB, 2 URLLC, 3 MIoT.
"sd"String (6 dígitos hexadecimais)Diferenciador de Fatia opcional. Omitir para uma fatia apenas SST (por exemplo, %{"sst" => 1}).

supported_ta_list - as Áreas de Rastreamento que este AMF atende. Cada entrada:

SubcampoTipoDescrição
tacIntegerCódigo da Área de Rastreamento.
plmn_listLista de mapasPLMNs atendidos nesta TA; cada um é %{mcc: ..., mnc: ...}.

A SupportedTAList de um gNB é comparada com esta lista (uma TA corresponde quando tanto tac quanto um PLMN correspondem). Um gNB que não anuncia uma TA correspondente é rejeitado na Configuração NG com uma Falha de Configuração NG - veja gNB NG Setup rejeitado.

n26_dns_servers - resolvedores para descoberta do MME S-NAPTR N26. Cada entrada:

SubcampoTipoDescrição
serverStringIP do resolvedor, consultado via TCP.
domainStringDomínio base da rede doméstica anexado ao FQDN TAI EPS (por exemplo, 3gppnetwork.org).

API de Gerenciamento e Painel de Controle

OmniAMF expõe uma API REST de gerenciamento de operador e um Painel de Controle web sobre HTTPS. Estes são configurados na configuração da aplicação (compilada) em vez de runtime.exs; os ajustes relevantes em tempo de execução são o endereço de escuta, portas e material TLS.

ParâmetroTipoPadrãoDescrição
API de gerenciamento portInteger8443Porta HTTPS para a API de gerenciamento/status do operador (status, inventário de UE/gNB, ações OAM).
API de gerenciamento listen_ipString"0.0.0.0"Endereço de vinculação para a API de gerenciamento.
API de gerenciamento enable_tlsBooleantrueServe a API de gerenciamento sobre TLS.
API de gerenciamento tls_cert_path / tls_key_pathStringpriv/cert/omnitouch.crt / .pemCertificado TLS e chave privada para a API de gerenciamento.
Painel de Controle HTTPS portInteger7443Porta HTTPS para a interface do Painel de Controle web.

A API de gerenciamento fornece status somente leitura (status NRF/NF/licença, inventário de gNB e UE, sessões PDU por UE, estatísticas) e ações OAM (visualização/atualização da configuração em tempo de execução, limpeza de cache, alteração de nível de log, modo de manutenção, re-registro NRF, diagnósticos e desmontagem forçada de UE/PDU/gNB). A lista completa de endpoints, semântica por ação e pré-condições estão documentadas no guia API de Gerenciamento.