Referencia de Configuración de OmniAMF
OmniAMF lee la configuración del operador desde el entorno de la aplicación Elixir bajo la clave :omniamf, poblada al inicio desde config/runtime.exs. Cada clave de tiempo de ejecución está impulsada por una variable de entorno con un valor predeterminado incorporado, por lo que un despliegue puede ajustarse completamente a través de variables de entorno.
Tabla de Contenidos
- Ejemplo de Configuración
- Parámetros del Servidor SBI
- Parámetros de NRF y NF Par
- Parámetros de PLMN e Identidad de AMF
- Parámetros de N2 / NGAP
- Parámetros de Interoperabilidad N26
- Parámetros de Observabilidad
- Parámetros Avanzados (configuración de la aplicación)
- API de Gestión y Panel de Control
Ejemplo de Configuración
config :omniamf,
# Servidor HTTP SBI (servicios Namf producidos)
sbi_scheme: "http",
sbi_addr: "127.0.0.5",
sbi_port: 7777,
# NRF (registro, latido, descubrimiento)
nrf_uri: "http://127.0.0.1:7777",
# URIs base de NF par consumidos (fallbacks estáticos; descubrimiento NRF preferido)
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 que sirve
mcc: "999",
mnc: "70",
# Identidad de AMF (GUAMI)
amf_name: "OmniAMF",
amf_id: %{region_id: 2, set_id: 1, pointer: 0},
# Observabilidad
prometheus_metrics_port: 9569,
# N2 / NGAP (escuchador SCTP para gNBs)
ngap_addr: "0.0.0.0",
ngap_port: 38412,
# Cadencia de latido de NRF
heartbeat_interval: 10_000,
# Interoperabilidad N26 EPS↔5GS con un MME 4G
n26_enabled: true,
n26_addr: "0.0.0.0",
n26_mme_peer: %{ip: "127.0.0.11", port: 2123}
Parámetros del Servidor SBI
| Parámetro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
sbi_scheme | String | No | "http" | SBI_SCHEME | Esquema URI publicitado para el servidor HTTP SBI. |
sbi_addr | String | No | "127.0.0.5" | SBI_ADDR | Dirección IP a la que se vincula el servidor HTTP SBI y que se publicita en los encabezados Location y al NRF. |
sbi_port | Integer | No | 7777 | SBI_PORT | Puerto TCP en el que escucha el servidor HTTP SBI. |
Parámetros de NRF y NF Par
Las URIs de NF par son fallbacks estáticos. Cuando nrf_uri está configurado, OmniAMF prefiere el descubrimiento de servicios NRF (en caché, TTL de 60 s) y solo recurre a la URI estática cuando el descubrimiento no está disponible. Configurar una URI estática no desactiva el descubrimiento por NF a menos que el propio descubrimiento sea inalcanzable.
| Parámetro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
nrf_uri | String | No | "http://127.0.0.1:7777" | NRF_URI | URI base del NRF para registro de NF, latido y descubrimiento. Cuando se establece, habilita el descubrimiento basado en NRF de NFs par. |
ausf_uri | String | No | "http://127.0.0.12:7777" | AUSF_URI | URI base estática del AUSF para autenticación 5G-AKA (Nausf_UEAuthentication, N12). |
udm_uri | String | No | "http://127.0.0.12:7777" | UDM_URI | URI base estática del UDM para datos de suscripción (Nudm_SDM) y registro de contexto de UE (Nudm_UECM, N8). |
smf_uri | String | No | "http://127.0.0.4:7777" | SMF_URI | URI base estática del SMF para gestión de sesiones PDU (Nsmf_PDUSession, N11). |
nssf_uri | String | No | "http://127.0.0.14:7777" | NSSF_URI | URI base estática del NSSF para selección de corte de red (Nnssf_NSSelection, N22). |
pcf_uri | String | No | "http://127.0.0.7:7777" | - | URI base estática del PCF para asociación de políticas AM (Npcf_AMPolicyControl, N15). Resuelto a través de descubrimiento/fallback como los otros NFs. Se establece solo en la configuración de la aplicación (sin var de entorno dedicada). |
heartbeat_interval | Integer (ms) | No | 10000 | HEARTBEAT_INTERVAL | Intervalo entre solicitudes de latido de NRF (PATCH) para mantener vivo el NFProfile. |
Parámetros de PLMN e Identidad de AMF
El GUAMI (Identificador de AMF Globalmente Único) se forma a partir del PLMN que sirve (mcc/mnc) más el Identificador de AMF, que a su vez se compone de region_id, set_id y pointer. El GUAMI se publicita en la configuración de NG y se utiliza para asignar el 5G-GUTI a las UEs.
| Par��metro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
mcc | String | No | "999" | MCC | Código de País Móvil del PLMN que sirve. |
mnc | String | No | "70" | MNC | Código de Red Móvil del PLMN que sirve. |
amf_name | String | No | "OmniAMF" | AMF_NAME | Nombre de AMF publicitado en la configuración de NG y registrado en el NFProfile de NRF. |
amf_id.region_id | Integer (8-bit) | No | 2 | AMF_REGION_ID | Componente de ID de Región de AMF del Identificador de AMF / GUAMI. |
amf_id.set_id | Integer (10-bit) | No | 1 | AMF_SET_ID | Componente de ID de Conjunto de AMF del Identificador de AMF / GUAMI. |
amf_id.pointer | Integer (6-bit) | No | 0 | AMF_POINTER | Componente de Puntero de AMF que identifica de manera única este AMF dentro del conjunto. |
Parámetros de N2 / NGAP
| Parámetro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
ngap_addr | String | No | "0.0.0.0" | NGAP_ADDR | Dirección IP a la que se vincula el escuchador SCTP/NGAP. Utilice una dirección de interfaz específica para restringir qué gNBs pueden conectarse. |
ngap_port | Integer | No | 38412 | NGAP_PORT | Puerto SCTP para NGAP. El puerto bien conocido es 38412 según TS 38.412. |
Parámetros de Interoperabilidad N26
La interfaz N26 permite la movilidad entre sistemas entre 5GS y EPS al hablar GTPv2-C a un MME 4G (reutiliza el conjunto de mensajes de Relocación Adelantada estilo S10). Se inicia como un punto final GTPv2-C separado solo cuando n26_enabled es verdadero.
| Parámetro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
n26_enabled | Boolean | No | true (runtime.exs) | N26_ENABLED | Habilita el punto final GTPv2-C N26 y la interoperabilidad. Establezca la var de entorno a cualquier valor diferente de "true" para deshabilitar. |
n26_addr | String | No | valor de ngap_addr | N26_ADDR | La IP N26 publicitada del AMF colocada en F-TEIDs de GTPv2-C. Debe ser una dirección enrutada accesible por el MME; no deje como 0.0.0.0 en producción. |
n26_mme_peer.ip | String | No | "127.0.0.11" | N26_MME_IP | IP del MME par estático objetivo utilizado para la transferencia de 5G→4G (fallback cuando el descubrimiento DNS no produce resultados). |
n26_mme_peer.port | Integer | No | 2123 | N26_MME_PORT | Puerto GTPv2-C del MME par estático objetivo. |
El escuchador GTPv2-C vinculado por la biblioteca compartida gtpc utiliza lo siguiente, también impulsado por el entorno:
| Parámetro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
| listen IP | String | No | valor de n26_addr (luego ngap_addr) | N26_ADDR / NGAP_ADDR | Dirección local de enlace para el socket GTPv2-C N26. |
| listen port | Integer | No | 2123 | N26_PORT | Puerto UDP local para el socket GTPv2-C N26 (puerto estándar GTP-C). |
Parámetros de Observabilidad
| Parámetro | Tipo | Requerido | Predeterminado | Var de Entorno | Descripción |
|---|---|---|---|---|---|
prometheus_metrics_port | Integer | No | 9569 | PROMETHEUS_PORT | Puerto TCP que expone el punto de recolección /metrics de Prometheus. |
Consulte la guía de Métricas y Monitoreo para las métricas expuestas en este punto.
Parámetros Avanzados (configuración de la aplicación)
Estas claves tienen valores predeterminados sensatos y no están conectadas a variables de entorno en runtime.exs. Establezca en la configuración de la aplicación solo cuando se requiera anular el comportamiento.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
relative_amf_capacity | Integer (0–255) | 255 | Capacidad relativa de AMF publicitada en la Respuesta de Configuración de NG; también mutable en tiempo de ejecución a través de la API de gestión. Influye en el balanceo de carga de 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 sirve; visible y configurable a través de la API de gestión. La Respuesta de Configuración de NG publicita cada GUAMI en esta lista (mapeado desde el plmn_id/amf_id de cada entrada), por lo que se respeta una configuración de múltiples GUAMIs hacia el 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 soporta. Estos también impulsan la SliceSupportList publicitada en el ítem de soporte PLMN de la Respuesta de Configuración de NG (TS 38.413 §8.7.1). |
supported_ta_list | Lista de mapas | [{tac:1, plmn_list:[{mcc,mnc}]}] | Áreas de seguimiento que este AMF sirve. La SupportedTAList/PLMN de un gNB se valida contra esta lista; un gNB que no sirva TAC/PLMN coincidentes es rechazado con un Fallo de Configuración de NG (causa unknown-PLMN-or-SNPN). |
force_null_ciphering | Boolean | false | Predeterminado (false) selecciona el algoritmo de cifrado NAS preferido del AMF que la UE también soporta, prefiriendo NEA2 y retrocediendo a NEA0 (nulo) cuando la UE no ofrece NEA2. La integridad se negocia de la misma manera, prefiriendo NIA2 (retrocediendo a NIA0). Establezca true para forzar NEA0 independientemente de las capacidades de la UE, para depuración/interoperabilidad. |
dns_port | Integer | 53 | Puerto UDP/TCP utilizado para las consultas DNS S-NAPTR N26 descritas bajo n26_dns_servers. Rara vez cambiado; principalmente una anulación de prueba/interoperabilidad. |
maintenance_mode | Boolean | false | Bandera de modo de mantenimiento persistente. Cuando true, el AMF se desregistra del NRF y rechaza nuevos registros de UE (drenaje para reinicio). Normalmente se alterna en tiempo de ejecución a través de la API de gestión en lugar de establecerse aquí. |
n26_selection_method | Atom | :dns_lookup | Descubrimiento de MME objetivo para la transferencia 5G→4G. :dns_lookup realiza una consulta S-NAPTR (servicio x-3gpp-mme:x-s10) en el FQDN TAI EPS objetivo según TS 29.303 §5.4, retrocediendo a n26_mme_peer si DNS no produce resultados. :static (cualquier valor diferente de :dns_lookup) omite DNS y utiliza n26_mme_peer directamente. Consulte Descubrimiento de MME objetivo. |
n26_dns_servers | Lista de mapas | [%{server: "127.0.0.53", domain: "3gppnetwork.org"}] | Resolutores DNS consultados (en orden) para el descubrimiento de MME S-NAPTR N26 cuando n26_selection_method es :dns_lookup. Cada entrada tiene server (IP del resolutor, consultado a través de TCP) y domain (el dominio base de la red doméstica agregado al FQDN TAI EPS, por ejemplo, 3gppnetwork.org). |
n26_smf_uri | String | "http://127.0.0.4:8443" | URL base de la API de interoperabilidad interna del SMF, consultada durante la transferencia 5G→4G para los datos de conexión real de PDN EPS de la UE (IP, EBI, dirección PGW-C). |
Subcampos de Configuración Estructurada
Varios parámetros avanzados son listas de mapas. Sus subcampos y semántica son:
served_guami_list - los GUAMIs que este AMF sirve. Cada entrada:
| Subcampo | Tipo | Descripción |
|---|---|---|
plmn_id.mcc / plmn_id.mnc | String | PLMN que sirve del GUAMI (por defecto al mcc/mnc de nivel superior). |
amf_id.region_id | Integer (8-bit) | ID de Región de AMF. |
amf_id.set_id | Integer (10-bit) | ID de Conjunto de AMF. |
amf_id.pointer | Integer (6-bit) | Puntero de AMF dentro del conjunto. |
served_nssai - los S-NSSAIs que este AMF soporta. Cada entrada es un mapa con claves de cadena:
| Subcampo | Tipo | Descripción |
|---|---|---|
"sst" | Integer (0–255) | Tipo de Corte/Servicio. Valores estandarizados: 1 eMBB, 2 URLLC, 3 MIoT. |
"sd" | String (6 dígitos hexadecimales) | Diferenciador de Corte Opcional. Omitir para un corte solo SST (por ejemplo, %{"sst" => 1}). |
supported_ta_list - las Áreas de Seguimiento que este AMF sirve. Cada entrada:
| Subcampo | Tipo | Descripción |
|---|---|---|
tac | Integer | Código de Área de Seguimiento. |
plmn_list | Lista de mapas | PLMNs servidos en esta TA; cada uno es %{mcc: ..., mnc: ...}. |
La SupportedTAList de un gNB se empareja con esta lista (una TA coincide cuando tanto tac como un PLMN coinciden). Un gNB que no publicite ninguna TA coincidente es rechazado en la Configuración de NG con un Fallo de Configuración de NG - consulte gNB NG Setup rejected.
n26_dns_servers - resolutores para el descubrimiento de MME S-NAPTR N26. Cada entrada:
| Subcampo | Tipo | Descripción |
|---|---|---|
server | String | IP del resolutor, consultado a través de TCP. |
domain | String | Dominio base de la red doméstica agregado al FQDN TAI EPS (por ejemplo, 3gppnetwork.org). |
API de Gestión y Panel de Control
OmniAMF expone una API REST de gestión para operadores y un Panel de Control web a través de HTTPS. Estos se configuran en la configuración de la aplicación (compilada) en lugar de runtime.exs; los controles relevantes para el tiempo de ejecución son la dirección de escucha, los puertos y el material TLS.
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
API de gestión port | Integer | 8443 | Puerto HTTPS para la API de gestión/estado del operador (estado, inventario de UE/gNB, acciones OAM). |
API de gestión listen_ip | String | "0.0.0.0" | Dirección de enlace para la API de gestión. |
API de gestión enable_tls | Boolean | true | Sirve la API de gestión a través de TLS. |
API de gestión tls_cert_path / tls_key_path | String | priv/cert/omnitouch.crt / .pem | Certificado TLS y clave privada para la API de gestión. |
| Puerto HTTPS del Panel de Control | Integer | 7443 | Puerto HTTPS para la interfaz de usuario del Panel de Control web. |
La API de gestión presenta estado de solo lectura (estado de NRF/NF/licencia, inventario de gNB y UE, sesiones PDU por UE, estadísticas) y acciones OAM (vista/actualización de configuración en tiempo de ejecución, limpieza de caché, cambio de nivel de registro, modo de mantenimiento, re-registro de NRF, diagnósticos y desmantelamiento forzado de UE/PDU/gNB). La lista completa de puntos finales, semántica por acción y precondiciones están documentadas en la guía de API de Gestión.