Pular para o conteúdo principal

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 ao notifyUri do 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_id configurá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.