OmniNSSF
OmniNSSF implementa la Función de Selección de Slice de Red (NSSF) del núcleo 5G. El NSSF es la autoridad para las decisiones de slicing de red: indica al AMF qué slices puede usar una UE, dónde debe dirigirse el descubrimiento NF específico del slice (el NRF objetivo para una Instancia de Slice de Red), y qué conjunto de AMF puede servir un slice dado. También recopila y autoriza la disponibilidad de slice por Área de Seguimiento reportada por los AMFs.
OmniNSSF expone dos servicios de Interfaz Basada en Servicio 5G (SBI) - Nnssf_NSSelection (nnssf-nsselection/v2), consultado por el AMF en el registro de la UE y el establecimiento de sesión PDU para resolver un S-NSSAI solicitado / suscrito en un NSSAI permitido, información de NSI (NRF objetivo), un conjunto de AMF objetivo, y (para UEs en roaming) un mapeo de NSSAI configurado; y Nnssf_NSSAIAvailability (nnssf-nssaiavailability/v1), que recibe actualizaciones de disponibilidad de S-NSSAI por Identidad de Área de Seguimiento (TAI) empujadas por los AMFs y gestiona la suscripción/notificación de cambios de disponibilidad. La topología de slice y la disponibilidad por AMF se mantienen en almacenes en memoria que se reconstruyen a partir de la configuración y de los informes en vivo de AMF después de un reinicio.
Documentación
- Guía de Operaciones - rol de 3GPP, puntos finales de SBI, y los procedimientos clave de selección de slice y disponibilidad de NSSAI con diagramas de secuencia.
- Referencia de Configuración - Referencia completa de configuración en tiempo de ejecución, tablas de parámetros de topología de slice, API de gestión/OAM, y registro.
- Métricas - Métricas de Prometheus para selección de slice, actualizaciones de disponibilidad, registro de NRF, y salud de BEAM VM, con ejemplo de PromQL.
- Solución de Problemas - Problemas comunes y sus resoluciones.
Visión General de la Arquitectura
Visión General de Características
- Selección de slice para registro y sesión PDU - resuelve S-NSSAI solicitado / suscrito en información de NSI, NSSAI permitido, conjunto de AMF objetivo, y NSSAI configurado.
- Mapeo de NSI a NRF - dirige el descubrimiento NF específico del slice al NRF correcto por slice.
- NSSAI permitido por PLMN con retroceso a PLMN local.
- Filtrado de disponibilidad consciente de TAI - NSSAI permitido y selección de slice respetan la disponibilidad por TAI reportada por los AMFs; permisivo cuando no existen datos de disponibilidad.
- Gestión de disponibilidad de NSSAI - PUT/PATCH/DELETE disponibilidad por AMF, con soporte para JSON Patch (RFC 6902).
- Suscripciones y notificaciones de disponibilidad - POST/PATCH/DELETE suscripciones con notificaciones de cambios entregadas fuera de la ruta de solicitud con reintentos limitados.
- Descubrimiento dinámico de NRF opcional - cuando está habilitado, el NSSF resuelve el NRF que sirve el slice en tiempo de ejecución desde el NRF raíz a través de Nnrf_NFDiscovery, retrocediendo a la
nsi_listconfigurada estáticamente cuando el descubrimiento no produce resultados. Desactivado por defecto (solonsi_listestática). - Negociación de características soportadas - anuncia el bit de característica NssaiAvailability y devuelve la intersección negociada.
- Registro y latido de NRF - registro automático al inicio con latidos periódicos; anuncia tanto
nnssf-nsselection(v2) comonnssf-nssaiavailability(v1). - OAM en tiempo de ejecución - inspeccionar y ajustar la topología de slice, URI de NRF, capacidad/prioridad, y nivel de registro sin reinicio.
- Registro JSON estructurado y métricas de Prometheus.
Inicio Rápido
OmniNSSF se configura a través de variables de entorno del sistema leídas al inicio. La configuración principal en tiempo de ejecución es:
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"))
La topología de slice (lista de NSI, NSSAI permitido, mapeo de conjunto de AMF, NSSAI configurado) se proporciona a través de la configuración estructural de la aplicación. La referencia completa de parámetros, incluyendo las tablas de topología de slice y la API de gestión/OAM, se encuentra en la Referencia de Configuración.