Saltar al contenido principal

OmniAUSF

OmniAUSF implementa la Función de Servidor de Autenticación (AUSF) del núcleo 5G. Orquesta la autenticación primaria entre el AMF (a través de la interfaz N12) y el UDM (a través de la interfaz N13), ejecutando el método de autenticación 5G-AKA definido en TS 33.501. El AUSF solicita un vector de autenticación al UDM, devuelve el desafío RAND/AUTN (y un hash de la respuesta esperada) al AMF, verifica la respuesta que finalmente produce el UE, deriva la clave de anclaje K_SEAF para la red de servicio y registra el resultado de la autenticación de vuelta en el UDM.

Cada intercambio de autenticación se rastrea mediante un contexto de autenticación UE en memoria, clave por un authCtxId generado (UUID). El contexto contiene el material del vector (RAND, XRES*, HXRES*, K_AUSF, K_SEAF) durante la duración del intercambio y se elimina al completarse (éxito o fracaso), al darse de baja explícitamente, o al reiniciar el proceso. Además, un recolector de contexto supervisado recoge periódicamente contextos inactivos o abandonados una vez que superan un TTL configurable, de modo que un contexto que el AMF inicia pero nunca confirma no permanezca indefinidamente. Las llamadas SBI salientes al UDM se dirigen a un UDM descubierto desde el NRF (Nnrf_NFDiscovery), retrocediendo a la udm_uri estática solo cuando el descubrimiento no produce nada; el AUSF también se registra con el NRF y envía latidos. OmniAUSF sirve el servicio nausf-auth (nausf-auth/v1) y consume el servicio nudm-ueau del UDM (nudm-ueau/v1).

Documentación

  • Operaciones - referencias de 3GPP, interfaces y puntos finales SBI, y los procedimientos de autenticación clave con sus diagramas de secuencia.
  • Configuración - referencia completa de configuración con tablas de parámetros, los puntos finales de la API de Gestión/OAM, y notas de registro.
  • Métricas - métricas de Prometheus expuestas por el AUSF y ejemplos de consultas PromQL.
  • Solución de Problemas - síntomas de fallos comunes con remedios.

Visión General de la Arquitectura

Visión General de las Características

  • Autenticación primaria 5G-AKA (TS 33.501 6.1.3) de extremo a extremo: recuperación de vector, retransmisión de desafío, verificación de respuesta e informe de resultados.
  • Derivación de K_SEAF (TS 33.501 A.6) vinculada al nombre de la red de servicio, devuelta al AMF en la autenticación exitosa.
  • Cálculo de HXRES* (TS 33.501 A.5) devuelto al AMF en la respuesta de inicio.
  • Informe de resultados de autenticación al UDM (auth-events) tanto para éxito como para fracaso.
  • Manejo de resincronización de SQN: resynchronizationInfo (RAND + AUTS) es detectado, validado y retransmitido al UDM; la entrada de resync malformada se descarta.
  • Eliminación del contexto de seguridad UE - puntos finales de deregister y eliminación por contexto.
  • Decodificación defensiva de vector/respuesta - vectores malformados del UDM y resStar malformados se manejan como errores limpios, nunca como fallos.
  • Registro y latido del NRF.
  • OAM en tiempo de ejecución - inspeccionar sesiones/estadísticas, ajustar configuración y nivel de registro, y forzar la re-registro del NRF a través de la API de gestión HTTPS.
  • Métricas de Prometheus para resultados de autenticación (incluyendo resync de SQN), estado del NRF y salud de la VM BEAM. El conteo de contextos en vuelo en vivo está disponible a través de la API OAM.

Inicio Rápido

La configuración se lee desde la clave del entorno de la aplicación :omniausf, poblada desde config/runtime.exs. Cada clave de tiempo de ejecución está respaldada por una variable de entorno del sistema operativo leída al inicio.

config :omniausf,
udm_uri: "http://127.0.0.12:7777",
sbi_scheme: "http",
sbi_addr: "127.0.0.19",
sbi_port: 7777,
nrf_uri: "http://127.0.0.1:7777",
mcc: "999",
mnc: "70",
prometheus_metrics_port: 9568,
heartbeat_interval: 10_000

config :logger, :default_formatter,
format: {OmniLogger.JsonFormatter, :format},
metadata: :all

La documentación completa de parámetros, incluyendo tipos, valores predeterminados y variables de entorno, se encuentra en configuration.md.