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触发器。 - 计费通知(
REAUTHORIZATION,ABORT_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 键、日志记���和管理接口,详见 配置参考。