OmniCHF
OmniCHF implementa la Función de Carga (CHF) del núcleo 5G. El CHF proporciona carga en línea y fuera de línea convergente para sesiones PDU 5G a través del servicio Nchf_ConvergedCharging (3GPP TS 32.290 / TS 32.291 / TS 32.255).
Un consumidor de carga, típicamente el SMF, crea una sesión de carga para cada sesión PDU, informa el uso durante la vida de esa sesión y finalmente la libera. OmniCHF traduce cada solicitud de carga 5G en una llamada JSON-RPC de CGRateS SessionS para autorización de crédito en tiempo real (carga en línea / gestión de cuotas) y genera un Registro de Datos de Carga (CDR) al liberar la sesión (carga fuera de línea). Cada sesión de carga es propiedad de un proceso de trabajo dedicado (arquitectura de proceso por sesión) para aislamiento de fallos; el estado de la sesión se mantiene en memoria y se reconstruye a medida que los consumidores crean nuevas sesiones después de un reinicio.
Documentación
- Guía de Operaciones - Referencias de roles y especificaciones 3GPP, puntos finales de SBI, integración de CGRateS y los procedimientos clave de carga con sus diagramas de secuencia.
- Referencia de Configuración - Tablas completas de parámetros de configuración en tiempo de ejecución, interfaces de gestión/OAM y notas de registro.
- Referencia de Métricas - Métricas de Prometheus (carga, CGRateS, NRF, BEAM VM) con ejemplos de consultas PromQL.
- Solución de Problemas - Problemas comunes y diagnósticos.
Descripción General de la Arquitectura
El consumidor (SMF) accede a OmniCHF a través del SBI. CGRateS es un motor de calificación y balance externo, y OmniCHF es un cliente para él, no al revés. Cuando CGRateS está deshabilitado, el Cliente CGRateS hace un cortocircuito y devuelve una concesión predeterminada fija (ver Integración CGRateS).
Descripción General de Características
- Carga en línea + fuera de línea convergente para sesiones PDU 5G a través de
nchf-convergedcharging/v3. - Arquitectura de proceso por sesión (ChargingWorker + Registry) para aislamiento de fallos y búsqueda O(1).
- Integración de CGRateS SessionS sobre HTTP JSON-RPC utilizando un cliente Finch en grupo.
- Modo de bypass CGRateS para operación en laboratorio sin un motor de calificación.
- Gestión de cuotas con concesiones GSU y disparadores
QUOTA_THRESHOLD/TIME_LIMIT. - Notificación de Carga (
REAUTORIZACIÓN,ABORT_CHARGING) hacia elnotifyUridel consumidor. - Grupos de calificación por DNN a través de
rating_groups/default_rating_group. - Generación de ID de carga 3GPP (TS 32.251) con
node_idconfigurable por instancia. - Archivos CDR fuera de línea (opcionales) más registro CDR siempre activo.
- Registro y latido NRF.
- Métricas de Prometheus y registro JSON estructurado.
- API de Gestión y Panel de Control para estado, inspección de sesiones, estadísticas y acciones OAM.
Inicio Rápido
La configuración del operador se lee desde la clave de entorno de la aplicación :omnichf, poblada al inicio por config/runtime.exs. Cada clave es sobreescribible por una variable de entorno del sistema operativo. El ejemplo a continuaci��n muestra la configuración principal en tiempo de ejecución con los valores aplicados cuando la variable de entorno correspondiente no está establecida.
config :omnichf,
# Escuchador SBI (interfaz basada en servicios)
sbi_scheme: "http",
sbi_addr: "127.0.0.14",
sbi_port: 7777,
# Registro / latido NRF
nrf_uri: "http://127.0.0.1:7777",
# Identidad PLMN que sirve
mcc: "999",
mnc: "70",
# Observabilidad
prometheus_metrics_port: 9568,
# Cadencia de latido NRF
heartbeat_interval: 10_000,
# Integración del motor de calificación / balance CGRateS
cgrates_enabled: true,
cgrates_url: "http://localhost:2080/jsonrpc",
cgrates_tenant: "cgrates.org",
cgrates_timeout: 5000
La documentación completa de parámetros, incluyendo grupos de calificación avanzados, carga fuera de línea y claves de ID de carga, registro y las interfaces de gestión, se encuentra en la Referencia de Configuración.