跳到主要内容

OmniCHF

OmniCHF 实现了 5G 核心的 计费功能 (CHF)。CHF 通过 Nchf_ConvergedCharging 服务(3GPP TS 32.290 / TS 32.291 / TS 32.255)为 5G PDU 会话提供汇聚的在线和离线计费。

计费消费者,通常是 SMF,为每个 PDU 会话创建一个计费会话,报告该会话生命周期内的使用情况,并最终释放它。OmniCHF 将每个 5G 计费请求转换为 CGRateS SessionS JSON-RPC 调用,以进行实时信用授权(在线计费 / 配额管理),并在会话释放时生成 计费数据记录 (CDR)(离线计费)。每个计费会话由专用工作进程(每会话一个进程架构)拥有,以实现故障隔离;会话状态保存在内存中,并在消费者在重启后创建新会话时重建。

文档

  • 操作指南 - 3GPP 角色和规范参考,SBI 端点,CGRateS 集成,以及关键计费程序及其序列图。
  • 配置参考 - 完整的运行时配置参数表,管理/OAM 接口和日志记录说明。
  • 指标参考 - Prometheus 指标(计费、CGRateS、NRF、BEAM VM)及示例 PromQL 查询。
  • 故障排除 - 常见问题和诊断。

架构概述

消费者 (SMF) 通过 SBI 访问 OmniCHF。CGRateS 是一个 外部 计费和余额引擎,而 OmniCHF 是它的客户端,而不是反过来。当 CGRateS 被禁用时,CGRateS 客户端会短路并返回固定的默认授予(请参见 CGRateS 集成)。

功能概述

  • 汇聚在线 + 离线计费 通过 nchf-convergedcharging/v3 为 5G PDU 会话提供。
  • 每会话进程 架构(ChargingWorker + 注册表)以实现故障隔离和 O(1) 查找。
  • CGRateS SessionS 集成 通过 HTTP JSON-RPC 使用池化的 Finch 客户端。
  • CGRateS 旁路模式 以便在没有计费引擎的实验室操作中使用。
  • 配额管理 通过 GSU 授予和 QUOTA_THRESHOLD / TIME_LIMIT 触发器。
  • 计费通知REAUTHORIZATIONABORT_CHARGING)发送到消费者的 notifyUri
  • 按 DNN 的计费组 通�� rating_groups / default_rating_group
  • 3GPP 计费 ID 生成(TS 32.251),具有可配置的每实例 node_id
  • 离线 CDR 文件(可选)以及始终开启的 CDR 日志记录。
  • NRF 注册和心跳
  • Prometheus 指标 和结构化 JSON 日志记录。
  • 管理 API 和控制面板 用于状态、会话检查、统计信息和 OAM 操作。

快速开始

操作员配置从应用程序环境键 :omnichf 中读取,在启动时由 config/runtime.exs 填充。每个键都可以通过操作系统环境变量进行覆盖。下面的示例显示了主要的运行时配置,当相应的环境变量未设置时应用的值。

config :omnichf,
# SBI(基于服务的接口)监听器
sbi_scheme: "http",
sbi_addr: "127.0.0.14",
sbi_port: 7777,

# NRF 注册 / 心跳
nrf_uri: "http://127.0.0.1:7777",

# 服务 PLMN 身份
mcc: "999",
mnc: "70",

# 可观察性
prometheus_metrics_port: 9568,

# NRF 心跳频率
heartbeat_interval: 10_000,

# CGRateS 计费 / 余额引擎集成
cgrates_enabled: true,
cgrates_url: "http://localhost:2080/jsonrpc",
cgrates_tenant: "cgrates.org",
cgrates_timeout: 5000

完整的参数文档,包括高级计费组、离线计费和计费 ID 键、日志记���和管理接口,详见 配置参考