Saltar al contenido principal

OmniSCP

OmniSCP es el Proxy de Comunicación de Servicio (SCP) del núcleo 5G de Omnitouch. Se sitúa entre los consumidores de NF y los productores de NF en la Arquitectura Basada en Servicios 5G (SBA) y proporciona comunicación indirecta (modelos C y D de 3GPP TS 23.501): los consumidores envían sus solicitudes de Interfaz Basada en Servicios (SBI) al SCP, que realiza el descubrimiento basado en NRF, balancea la carga entre las instancias de productor descubiertas, reintenta solicitudes fallidas y aplica un tiempo de espera en la parte superior, luego devuelve la respuesta del productor al consumidor.

El SCP en sí se registra con el NRF como un NF de tipo SCP y mantiene ese registro con latidos periódicos.

Documentación

  • Operaciones: rol de 3GPP, interfaces/puntos finales, modos de enrutamiento/descubrimiento y procedimientos clave con diagramas de secuencia.
  • Configuración: cada parámetro ajustable en tiempo de ejecución, la API de gestión/OAM y registro.
  • Métricas: métricas de Prometheus y ejemplo de PromQL.
  • Solución de Problemas: fallos comunes y resoluciones.

Descripción General de la Arquitectura

Descripción General de las Funciones

  • Comunicación indirecta (Modelos C y D): descubrimiento NRF delegado en nombre de los consumidores, además de reenvío directo cuando el consumidor ya conoce el objetivo.
  • Proxy inverso de captura: cada ruta SBI excepto la devolución de llamada de notificación de estado de NRF se reenvía de manera transparente a un productor resuelto.
  • Cache de descubrimiento: caché respaldada por ETS de los resultados de descubrimiento de NRF con un TTL configurable. Las notificaciones de estado de NRF desalojan la única instancia afectada (regresando a un tipo de NF cuando no hay id de instancia presente), nunca toda la caché.
  • Balanceo de carga: selección round_robin, ponderada (capacidad/carga) o prioridad entre las instancias de productor descubiertas.
  • Control de sobrecarga (OCI): lee la Información de Control de Sobrecarga del productor de las respuestas y elimina productores sobrecargados del conjunto de candidatos antes de la selección del balanceador de carga (TS 29.500 §6.3).
  • Relé de control de carga (LCI): retransmite los encabezados de respuesta del productor 3gpp-Sbi-Lci y 3gpp-Sbi-Load de extremo a extremo para que los consumidores reciban indicios de carga del productor a través del SCP (TS 29.500 §6.3).
  • Seguimiento automático de salud de fallos: las instancias se marcan como no saludables después de fallos consecutivos y se recuperan automáticamente después de un enfriamiento.
  • Drenaje administrativo: los operadores pueden sacar un productor de la rotación a través de la API de OAM sin desregistrarlo del NRF.
  • Reintento con tiempo de espera en upstream: los fallos 5xx y de conexión/tiempo de espera se reintentan contra otras instancias hasta un límite configurable.
  • Auto-registro de NRF: se registra como un NF de SCP y envía latidos para mantenerse activo; fuerza la re-registro a demanda.
  • Métricas de Prometheus + control OAM en vivo: métricas de proxy, caché y registro, además de reconfiguración en tiempo de ejecución a través de HTTPS.

Inicio Rápido

OmniSCP lee su configuración en tiempo de ejecución desde config/runtime.exs, cada clave respaldada por una variable de entorno. Los ajustes principales son el oyente SBI, la ubicación del NRF y el PLMN:

import Config

config :omniscp,
sbi_scheme: System.get_env("SBI_SCHEME", "http"),
sbi_addr: System.get_env("SBI_ADDR", "127.0.0.17"),
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")

Los consumidores de NF dirigen su tráfico SBI a sbi_addr:sbi_port en lugar de directamente a los productores. El conjunto completo de parámetros (TTL de caché, estrategia de balanceo de carga, ajuste de reintentos y tiempo de espera, y la capacidad/prioridad ajustable por OAM) está documentado en Configuración.