OmniCHF
OmniCHF implementa a Função de Cobrança (CHF) do Core 5G. O CHF fornece cobrança online e offline convergente para sessões PDU 5G através do serviço Nchf_ConvergedCharging (3GPP TS 32.290 / TS 32.291 / TS 32.255).
Um consumidor de cobrança, tipicamente o SMF, cria uma sessão de cobrança para cada sessão PDU, relata o uso ao longo da vida útil dessa sessão e, finalmente, a libera. OmniCHF traduz cada solicitação de cobrança 5G em uma chamada JSON-RPC de CGRateS SessionS para autorização de crédito em tempo real (cobrança online / gerenciamento de cotas) e gera um Registro de Dados de Cobrança (CDR) na liberação da sessão (cobrança offline). Cada sessão de cobrança é de propriedade de um processo trabalhador dedicado (arquitetura de processo por sessão) para isolamento de falhas; o estado da sessão é mantido na memória e é reconstruído à medida que os consumidores criam novas sessões após uma reinicialização.
Documentação
- Guia de Operações - referências de função e especificação 3GPP, endpoints SBI, integração CGRateS e os principais procedimentos de cobrança com seus diagramas de sequência.
- Referência de Configuração - Tabelas completas de parâmetros de configuração em tempo de execução, interfaces de gerenciamento/OAM e notas de registro.
- Referência de Métricas - métricas Prometheus (cobrança, CGRateS, NRF, BEAM VM) com exemplos de consultas PromQL.
- Solução de Problemas - Problemas comuns e diagnósticos.
Visão Geral da Arquitetura
O consumidor (SMF) alcança o OmniCHF através do SBI. CGRateS é um motor de classificação e balanço externo, e o OmniCHF é um cliente dele, e não o contrário. Quando o CGRateS está desativado, o Cliente CGRateS faz um curto-circuito e retorna uma concessão padrão fixa (veja Integração CGRateS).
Visão Geral dos Recursos
- Cobrança online + offline convergente para sessões PDU 5G via
nchf-convergedcharging/v3. - Arquitetura de processo por sessão (ChargingWorker + Registry) para isolamento de falhas e busca O(1).
- Integração CGRateS SessionS sobre HTTP JSON-RPC usando um cliente Finch em pool.
- Modo de bypass CGRateS para operação em laboratório sem um motor de classificação.
- Gerenciamento de cotas com concessões GSU e gatilhos
QUOTA_THRESHOLD/TIME_LIMIT. - Notificação de Cobrança (
REAUTORIZAÇÃO,ABORT_CHARGING) em direção aonotifyUrido consumidor. - Grupos de classificação por DNN via
rating_groups/default_rating_group. - Geração de ID de cobrança 3GPP (TS 32.251) com
node_idconfigurável por instância. - Arquivos CDR offline (opcional) além de registro CDR sempre ativo.
- Registro e heartbeat NRF.
- Métricas Prometheus e registro JSON estruturado.
- API de Gerenciamento e Painel de Controle para status, inspeção de sessões, estatísticas e ações OAM.
Início Rápido
A configuração do operador é lida da chave de ambiente da aplicação :omnichf, populada na inicialização por config/runtime.exs. Cada chave pode ser substituída por uma variável de ambiente do sistema operacional. O exemplo abaixo mostra a configuração principal em tempo de execução com os valores aplicados quando a variável de ambiente correspondente não está definida.
config :omnichf,
# Ouvinte SBI (interface baseada em serviço)
sbi_scheme: "http",
sbi_addr: "127.0.0.14",
sbi_port: 7777,
# Registro / heartbeat NRF
nrf_uri: "http://127.0.0.1:7777",
# Identidade PLMN servidora
mcc: "999",
mnc: "70",
# Observabilidade
prometheus_metrics_port: 9568,
# Cadência de heartbeat NRF
heartbeat_interval: 10_000,
# Integração do motor de classificação / balanço CGRateS
cgrates_enabled: true,
cgrates_url: "http://localhost:2080/jsonrpc",
cgrates_tenant: "cgrates.org",
cgrates_timeout: 5000
A documentação completa dos parâmetros, incluindo grupos de classificação avançados, cobrança offline e chaves de ID de cobrança, registro e as interfaces de gerenciamento, está na Referência de Configuração.