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
- Parâmetros do Servidor SBI
- Parâmetros do NRF e NF Par
- Parâmetros de Identidade PLMN e AMF
- Parâmetros N2 / NGAP
- Parâmetros de Interoperabilidade N26
- Parâmetros de Observabilidade
- Parâmetros Avançados (configuração da aplicação)
- API de Gerenciamento e Painel de Controle
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âmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
sbi_scheme | String | Não | "http" | SBI_SCHEME | Esquema URI anunciado para o servidor HTTP SBI. |
sbi_addr | String | Não | "127.0.0.5" | SBI_ADDR | Endereço IP ao qual o servidor HTTP SBI se vincula e anuncia nos cabeçalhos Location e para o NRF. |
sbi_port | Integer | Não | 7777 | SBI_PORT | Porta 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âmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
nrf_uri | String | Não | "http://127.0.0.1:7777" | NRF_URI | URI base do NRF para registro de NF, heartbeat e descoberta. Quando definido, habilita a descoberta de NFs par baseada em NRF. |
ausf_uri | String | Não | "http://127.0.0.12:7777" | AUSF_URI | URI base estática do AUSF para autenticação 5G-AKA (Nausf_UEAuthentication, N12). |
udm_uri | String | Não | "http://127.0.0.12:7777" | UDM_URI | URI base estática do UDM para dados de assinatura (Nudm_SDM) e registro de contexto UE (Nudm_UECM, N8). |
smf_uri | String | Não | "http://127.0.0.4:7777" | SMF_URI | URI base estática do SMF para gerenciamento de sessão PDU (Nsmf_PDUSession, N11). |
nssf_uri | String | Não | "http://127.0.0.14:7777" | NSSF_URI | URI base estática do NSSF para seleção de fatia de rede (Nnssf_NSSelection, N22). |
pcf_uri | String | Nã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_interval | Integer (ms) | Não | 10000 | HEARTBEAT_INTERVAL | Intervalo 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âmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
mcc | String | Não | "999" | MCC | Código do País Móvel do PLMN atendido. |
mnc | String | Não | "70" | MNC | Código da Rede Móvel do PLMN atendido. |
amf_name | String | Não | "OmniAMF" | AMF_NAME | Nome do AMF anunciado na Configuração NG e registrado no NFProfile do NRF. |
amf_id.region_id | Integer (8-bit) | Não | 2 | AMF_REGION_ID | Componente ID da Região do AMF do Identificador AMF / GUAMI. |
amf_id.set_id | Integer (10-bit) | Não | 1 | AMF_SET_ID | Componente ID do Conjunto do AMF do Identificador AMF / GUAMI. |
amf_id.pointer | Integer (6-bit) | Não | 0 | AMF_POINTER | Componente Pointer do AMF que identifica exclusivamente este AMF dentro do conjunto. |
Parâmetros N2 / NGAP
| Parâmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
ngap_addr | String | Não | "0.0.0.0" | NGAP_ADDR | Endereç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_port | Integer | Não | 38412 | NGAP_PORT | Porta 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âmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
n26_enabled | Boolean | Não | true (runtime.exs) | N26_ENABLED | Habilita o endpoint GTPv2-C N26 e a interoperabilidade. Defina a var de ambiente para qualquer valor diferente de "true" para desabilitar. |
n26_addr | String | Não | valor de ngap_addr | N26_ADDR | O 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.ip | String | Não | "127.0.0.11" | N26_MME_IP | IP 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.port | Integer | Não | 2123 | N26_MME_PORT | Porta 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âmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
| listen IP | String | Não | valor de n26_addr (então ngap_addr) | N26_ADDR / NGAP_ADDR | Endereço local de vinculação para o socket GTPv2-C N26. |
| listen port | Integer | Não | 2123 | N26_PORT | Porta UDP local para o socket GTPv2-C N26 (porta padrão GTP-C). |
Parâmetros de Observabilidade
| Parâmetro | Tipo | Necessário | Padrão | Var de Ambiente | Descrição |
|---|---|---|---|---|---|
prometheus_metrics_port | Integer | Não | 9569 | PROMETHEUS_PORT | Porta 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âmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
relative_amf_capacity | Integer (0–255) | 255 | Capacidade 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_list | Lista de mapas | [{plmn_id, amf_id}] derivada de mcc/mnc/amf_id | Lista 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_nssai | Lista 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_list | Lista 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_ciphering | Boolean | false | O 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_port | Integer | 53 | Porta 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_mode | Boolean | false | Flag 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_method | Atom | :dns_lookup | Descoberta 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_servers | Lista 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_uri | String | "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:
| Subcampo | Tipo | Descrição |
|---|---|---|
plmn_id.mcc / plmn_id.mnc | String | PLMN atendido do GUAMI (padrão para mcc/mnc de nível superior). |
amf_id.region_id | Integer (8-bit) | ID da Região do AMF. |
amf_id.set_id | Integer (10-bit) | ID do Conjunto do AMF. |
amf_id.pointer | Integer (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:
| Subcampo | Tipo | Descriçã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:
| Subcampo | Tipo | Descrição |
|---|---|---|
tac | Integer | Código da Área de Rastreamento. |
plmn_list | Lista de mapas | PLMNs 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:
| Subcampo | Tipo | Descrição |
|---|---|---|
server | String | IP do resolvedor, consultado via TCP. |
domain | String | Domí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âmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
API de gerenciamento port | Integer | 8443 | Porta HTTPS para a API de gerenciamento/status do operador (status, inventário de UE/gNB, ações OAM). |
API de gerenciamento listen_ip | String | "0.0.0.0" | Endereço de vinculação para a API de gerenciamento. |
API de gerenciamento enable_tls | Boolean | true | Serve a API de gerenciamento sobre TLS. |
API de gerenciamento tls_cert_path / tls_key_path | String | priv/cert/omnitouch.crt / .pem | Certificado TLS e chave privada para a API de gerenciamento. |
Painel de Controle HTTPS port | Integer | 7443 | Porta 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.