跳到主要内容

数据计费数据记录 (CDR) 格式

SGW-C 的离线计费

OmniSGW 由 Omnitouch 网络服务提供


目录​

  1. 概述
  2. CDR 文件格式
  3. CDR 字段
  4. CDR 事件
  5. 文件结构
  6. 配置
  7. CDR 生成流程
  8. 字段详细信息
  9. 示例
  10. 集成

概述​

数据 CDR (计费数据记录) 格式为服务网关控制平面 (SGW-C) 提供离线计费能力。CDR 被生成以记录承载会话事件、数据使用情况和用户信息,以便于计费和分析。

该通用格式与 PGW-C CDR 兼容,确保 EPC 基础设施中计费记录的一致性。

主要特点​

  • 基于 CSV 的格式 - 简单、易读的逗号分隔值
  • 基于事件的记录 - 捕获承载的开始、更新和结束事件
  • 流量计量 - 记录上行和下行数据使用情况
  • 自动轮换 - 基于时间间隔的可配置文件轮换
  • 符合 3GPP 标准 - 遵循 3GPP TS 32.251 (PS 域计费) 和 TS 32.298 (CDR 编码)

用例​

用例描述
离线计费生成后付费计费的 CDR
分析分析用户使用模式
审计跟踪跟踪所有承载会话事件
容量规划监控网络资源利用率
故障排除调试会话和承载问题

CDR 文件格式​

文件命名约定​

<epoch_timestamp>

示例:

1726598022

文件名是文件创建时的 Unix 纪元时间戳(以秒为单位)。

文件位置​

默认目录:

  • SGW-C: /var/log/sgw_c/cdrs/

可通过 CDR 报告器配置中的 directory 参数进行配置。

文件头​

每个 CDR 文件以包含元数据的多行头部开始:

# 数据 CDR 文件:
# 文件开始时间: HH:MM:SS (unix_timestamp)
# 文件结束时间: HH:MM:SS (unix_timestamp)
# 网关名称: <gateway_name>
# epoch,imsi,event,charging_id,msisdn,ue_imei,timezone_raw,plmn,tac,eci,sgw_ip,ue_ip,pgw_ip,apn,qci,octets_in,octets_out

头字段:

  • 文件开始时间 - CDR 文件创建的时间(可读和 Unix 时间戳)
  • 文件结束时间 - 文件轮换将发生的时间(可读和 Unix 时间戳)
  • 网关名称 - SGW-C 实例的标识符
  • 列标题 - 数据记录的 CSV 字段名称

CDR 字段​

字段摘要​

位置字段名称类型描述
0epoch整数事件时间戳(Unix 纪元秒)
1imsi字符串国际移动用户身份
2event字符串CDR 事件类型(例如,"default_bearer_start")
3charging_id整数承载的唯一计费标识符
4msisdn字符串移动站 ISDN 号码(电话号码)
5ue_imei字符串国际移动设备身份
6timezone_raw字符串UE 时区(保留,目前为空)
7plmn整数公共陆地移动网络标识符
8tac整数跟踪区域代码
9eci整数E-UTRAN 小区标识符
10sgw_ip字符串SGW-C S5/S8 控制平面 IP 地址
11ue_ip字符串UE IP 地址(IPv4|IPv6 格式)
12pgw_ip字符串PGW-C S5/S8 控制平面 IP 地址
13apn字符串接入点名称
14qci整数QoS 类标识符
15octets_in整数下行数据量(字节)
16octets_out整数上行数据量(字节)

CDR 事件​

事件类型​

CDR 为三种类型的事件生成:

事件类型格式描述生成时机
承载开始<type>_bearer_start承载建立发送创建会话响应
承载更新<type>_bearer_update会话期间的使用报告来自用户平面的定期使用报告
承载结束<type>_bearer_end承载终止删除会话请求/响应

承载类型:

  • default - 默认承载(每个 PDN 连接一个)
  • dedicated - 专用承载(每个 PDN 连接零个或多个)

事件示例​

default_bearer_start      - 默认承载已建立
default_bearer_update - 默认承载使用更新
default_bearer_end - 默认承载已终止
dedicated_bearer_start - 专用承载已建立
dedicated_bearer_update - 专用承载使用更新
dedicated_bearer_end - 专用承载已终止

文件结构​

示例 CDR 文件​

# 数据 CDR 文件:
# 文件开始时间: 18:53:42 (1726598022)
# 文件结束时间: 19:53:42 (1726601622)
# 网关名称: sgw-c-prod-01
# epoch,imsi,event,charging_id,msisdn,ue_imei,timezone_raw,plmn,tac,eci,sgw_ip,ue_ip,pgw_ip,apn,qci,octets_in,octets_out
1726598022,310260123456789,default_bearer_start,12345,15551234567,123456789012345,,349552,1234,5678,10.0.0.15,172.16.1.100|2001:db8::1,10.0.0.20,internet,9,0,0
1726598322,310260123456789,default_bearer_update,12345,15551234567,123456789012345,,349552,1234,5678,10.0.0.15,172.16.1.100|2001:db8::1,10.0.0.20,internet,9,1048576,524288
1726598622,310260123456789,default_bearer_update,12345,15551234567,123456789012345,,349552,1234,5678,10.0.0.15,172.16.1.100|2001:db8::1,10.0.0.20,internet,9,5242880,2097152
1726598922,310260123456789,default_bearer_end,12345,15551234567,123456789012345,,349552,1234,5678,10.0.0.15,172.16.1.100|2001:db8::1,10.0.0.20,internet,9,10485760,5242880

文件轮换​

CDR 文件根据配置的持续时间自动轮换:

轮换过程:

  1. 关闭当前 CDR 文件
  2. 创建带有当前时间戳的新文件
  3. 将头部写入新文件
  4. 继续将 CDR 记录到新文件

配置​

配置参数​

参数类型描述默认值推荐值
gateway_name字符串SGW-C 实例标识符-使用主机名或实例 ID
duration整数文件轮换间隔(毫秒)-3600000 (1 小时)
directory字符串CDR 输出目录路径-/var/log/sgw_c/cdrs

配置示例​

生产环境:

  • gateway_name: "sgw-c-prod-01"
  • duration: 3,600,000 毫秒 (1 小时轮换)
  • directory: "/var/log/sgw_c/cdrs"

开发环境:

  • gateway_name: "sgw-c-dev"
  • duration: 300,000 毫秒 (5 分钟轮换用于测试)
  • directory: "/tmp/sgw_c_cdrs"

高流量:

  • gateway_name: "sgw-c-prod-heavy"
  • duration: 1,800,000 毫秒 (30 分钟轮换)
  • directory: "/mnt/fast-storage/cdrs"

CDR 生成流程​

承载生命周期 CDR 事件​

SGW-C CDR 生成:

CDR 生成事件​

1. 承载开始:

  • 何时: 发送创建会话响应
  • 目的: 记录承载建立时的零使用
  • octets_in: 0
  • octets_out: 0

2. 承载更新:

  • 何时: 从用户平面接收到 PFCP 会话报告请求
  • 目的: 记录增量数据使用
  • octets_in: 自承载开始以来的累计下行字节
  • octets_out: 自承载开始以来的累计上行字节

3. 承载结束:

  • 何时: 接收到 PFCP 会话删除响应(带有最终使用)
  • 目的: 记录会话终止前的最终数据使用
  • octets_in: 最终总下行字节
  • octets_out: 最终总上行字节

字段详细信息​

1. epoch (时间戳)​

类型: Unix 纪元时间戳(秒)

描述: CDR 事件发生的时间

示例:

1726598022  → 2025-09-17 18:53:42 UTC

2. imsi (用户身份)​

类型: 字符串(最多 15 位数字)

格式: MCCMNC + MSIN

描述: 唯一标识用户的国际移动用户身份

示例:

310260123456789
└─┬─┘└─┬─┘└────┬────┘
MCC MNC MSIN
(310)(260) (123456789)

来源: UE 上下文,在创建会话请求中接收


3. event (CDR 事件类型)​

类型: 字符串

格式: <bearer_type>_bearer_<event>

值:

  • default_bearer_start
  • default_bearer_update
  • default_bearer_end
  • dedicated_bearer_start
  • dedicated_bearer_update
  • dedicated_bearer_end

确定:

  • 如果 EBI (EPS 承载 ID) 等于 LBI (链接承载 ID): default
  • 如果 EBI 不等于 LBI: dedicated

来源: 承载上下文(EBI 与 LBI 比较)


4. charging_id (计费标识符)​

类型: 无符号 32 位整数

描述: 用于跨网络元素的计费关联的唯一标识符

示例:

12345

来源: 由 PGW-C 分配,在创建会话响应中接收

用途:

  • 关联 SGW 和 PGW 之间的计费事件
  • 用于 Diameter Gy/Gz 计费���口
  • 每个承载唯一

5. msisdn (电话号码)​

类型: 字符串(E.164 格式)

描述: 移动站 ISDN 号码(用户的电话号码)

格式: 国家代码 + 国内号码

示例:

15551234567
└┬┘└───┬───┘
CC National
(1) (5551234567)

来源: UE 上下文,通常通过 MME 从 HSS 获取


6. ue_imei (设备身份)​

类型: 字符串(15 位数字)

格式: TAC (8) + SNR (6) + Spare (1)

描述: 国际移动设备身份(设备标识符)

示例:

123456789012345
└───┬───┘└─┬─┘└┘
TAC SNR S

来源: UE 上下文,从 MME 接收


7. timezone_raw (UE 时区)​

类型: 字符串(当前保留/为空)

描述: 保留字段,用于 UE 时区信息

当前状态: 未填充(CSV 中为空字段)

未来用途: 可能包括时区偏移和夏令时标志

示例:

,  (空字段)

8. plmn (网络标识符)​

类型: 整数(遗留格式)

描述: 公共陆地移动网络标识符,编码为小端十六进制

编码过程:

MCC: 505, MNC: 57
↓
"50557"
↓
交换对: "055570"
↓
十六进制转十进制: 0x055570 = 349552

示例:

349552  → MCC: 505, MNC: 57

来源: 从 MME 获取的 UE 位置信息

注意: 这是向后兼容的遗留编码格式


9. tac (跟踪区域代码)​

类型: 无符号 16 位整数

描述: 跟踪区域代码标识 UE 所在的跟踪区域

范围: 0 - 65535

示例:

1234

来源: UE 位置信息,在创建会话请求中从 MME 接收

用途:

  • 标识移动管理区域
  • 用于寻呼和位置更新
  • TAI (跟踪区域标识) 的一部分

10. eci (E-UTRAN 小区标识符)​

类型: 无符号 28 位整数

描述: E-UTRAN 小区标识符唯一标识为 UE 提供服务的小区

格式: eNodeB ID (20 位) + 小区 ID (8 位)

范围: 0 - 268,435,455

示例:

5678

来源: 从 MME 获取的 UE 位置信息

用途:

  • 标识特定的小区塔和扇区
  • 用于切换和移动管理
  • 细粒度位置信息

11. sgw_ip (SGW 控制平面 IP)​

类型: 字符串(IPv4 或 IPv6 地址)

描述: SGW-C 的 S5/S8 控制平面 IP 地址 (F-TEID)

格式: 点分十进制 (IPv4) 或 冒号-十六进制 (IPv6)

示例:

10.0.0.15       (IPv4)
2001:db8::15 (IPv6)

来源: 本地配置,分配给 S5/S8 接口


12. ue_ip (UE IP 地址)​

类型: 字符串(IPv4|IPv6 格式)

描述: 分配给 UE 的 PDN 连接的 IP 地址

格式: <ipv4>|<ipv6>

示例:

172.16.1.100|                      (仅 IPv4)
|2001:db8::1 (仅 IPv6)
172.16.1.100|2001:db8::1 (双栈)

来源: PGW-C 的 PDN 地址分配 (PAA)

注意:

  • 空 IPv4: 未分配 IPv4 地址
  • 空 IPv6: 未分配 IPv6 地址
  • 两者均存在: 双栈 PDN 连接

13. pgw_ip (PGW 控制平面 IP)​

类型: 字符串(IPv4 或 IPv6 地址)

描述: PGW-C 的 S5/S8 控制平面 IP 地址 (远程 F-TEID)

格式: 点分十进制 (IPv4) 或 冒号-十六进制 (IPv6)

示例:

10.0.0.20       (IPv4)
2001:db8::20 (IPv6)

来源: 从 PGW-C 的创建会话响应中接收


14. apn (接入点名称)​

类型: 字符串(最多 100 个字符)

描述: 标识外部网络 (PDN) 的接入点名称

格式: 类似 DNS 的标签格式

示例:

internet
ims
mms
enterprise.corporate

来源: 从 MME 的创建会话请求中接收

用途:

  • 确定连接到哪个外部网络
  • 驱动策略和计费规则
  • 可能决定 IP 地址池

15. qci (QoS 类标识符)​

类型: 无符号 8 位整数

描述: QoS 类标识符定义承载的服务质量

范围: 1 - 9 (标准化), 128-254 (运营商特定)

标准化 QCI 值:

QCI资源类型优先级数据包延迟数据包丢失示例服务
1GBR2100 ms10^-2对话语音
2GBR4150 ms10^-3对话视频
3GBR350 ms10^-3实时游戏
4GBR5300 ms10^-6非对话视频
5Non-GBR1100 ms10^-6IMS 信令
6Non-GBR6300 ms10^-6视频(缓冲)
7Non-GBR7100 ms10^-3语音、视频、游戏
8Non-GBR8300 ms10^-6视频(缓冲)
9Non-GBR9300 ms10^-6默认承载

示例:

9  → 默认承载(最佳努力)

来源: PGW-C 的承载 QoS 参数


16. octets_in (下行流量)​

类型: 无符号 64 位整数

描述: 在下行方向(网络 → UE)传输的字节数

单位: 字节

示例:

1048576  → 1 MB 下行

来源: 来自 SGW-U 的 PFCP 流量测量

注意:

  • 对于 update 事件是累计的
  • 对于 end 事件是最终总数
  • 对于 start 事件始终为 0

17. octets_out (上行流量)​

类型: 无符号 64 位整数

描述: 在上行方向(UE → 网络)传输的字节数

单位: 字节

示例:

524288  → 512 KB 上行

来源: 来自 SGW-U 的 PFCP 流量测量

注意:

  • 对于 update 事件是累计的
  • 对于 end 事件是最终总数
  • 对于 start 事件始终为 0

示例​

示例 1: 基本会话与单次更新​

时间线:

  1. 承载已建立
  2. 5 分钟后: 使用更新(10 MB 下行,5 MB 上行)
  3. 会话终止

CDR 输出:

# 数据 CDR 文件:
# 文件开始时间: 10:00:00 (1726570800)
# 文件结束时间: 11:00:00 (1726574400)
# 网关名称: sgw-c-01
# epoch,imsi,event,charging_id,msisdn,ue_imei,timezone_raw,plmn,tac,eci,sgw_ip,ue_ip,pgw_ip,apn,qci,octets_in,octets_out
1726570800,310260111111111,default_bearer_start,10001,15551111111,111111111111111,,349552,1000,2000,10.0.0.15,172.16.1.1|,10.0.0.20,internet,9,0,0
1726571100,310260111111111,default_bearer_update,10001,15551111111,111111111111111,,349552,1000,2000,10.0.0.15,172.16.1.1|,10.0.0.20,internet,9,10485760,5242880
1726571400,310260111111111,default_bearer_end,10001,15551111111,111111111111111,,349552,1000,2000,10.0.0.15,172.16.1.1|,10.0.0.20,internet,9,10485760,5242880

示例 2: 双栈会话与多次更新​

时间线:

  1. 双栈承载已建立(IPv4 + IPv6)
  2. 多次使用更新
  3. 会话终止

CDR 输出:

1726570800,310260222222222,default_bearer_start,10002,15552222222,222222222222222,,349552,1001,2001,10.0.0.15,172.16.1.2|2001:db8::2,10.0.0.20,internet,9,0,0
1726571100,310260222222222,default_bearer_update,10002,15552222222,222222222222222,,349552,1001,2001,10.0.0.15,172.16.1.2|2001:db8::2,10.0.0.20,internet,9,2097152,1048576
1726571400,310260222222222,default_bearer_update,10002,15552222222,222222222222222,,349552,1001,2001,10.0.0.15,172.16.1.2|2001:db8::2,10.0.0.20,internet,9,8388608,4194304
1726571700,310260222222222,default_bearer_update,10002,15552222222,222222222222222,,349552,1001,2001,10.0.0.15,172.16.1.2|2001:db8::2,10.0.0.20,internet,9,20971520,10485760
1726572000,310260222222222,default_bearer_end,10002,15552222222,222222222222222,,349552,1001,2001,10.0.0.15,172.16.1.2|2001:db8::2,10.0.0.20,internet,9,31457280,15728640

示例 3: 专用承载的会话​

时间线:

  1. 默认承载已建立(QCI 9)
  2. 为视频创建专用承载(QCI 6)
  3. 两个承载的使用更新
  4. 删除专用承载
  5. 终止默认承载

CDR 输出:

1726570800,310260333333333,default_bearer_start,10003,15553333333,333333333333333,,1258248,1002,2002,10.0.0.15,172.16.1.3|,10.0.0.20,internet,9,0,0
1726571100,310260333333333,dedicated_bearer_start,10004,15553333333,333333333333333,,1258248,1002,2002,10.0.0.15,172.16.1.3|,10.0.0.20,internet,6,0,0
1726571400,310260333333333,default_bearer_update,10003,15553333333,333333333333333,,1258248,1002,2002,10.0.0.15,172.16.1.3|,10.0.0.20,internet,9,5242880,2097152
1726571400,310260333333333,dedicated_bearer_update,10004,15553333333,333333333333333,,1258248,1002,2002,10.0.0.15,172.16.1.3|,10.0.0.20,internet,6,104857600,1048576
1726571700,310260333333333,dedicated_bearer_end,10004,15553333333,333333333333333,,1258248,1002,2002,10.0.0.15,172.16.1.3|,10.0.0.20,internet,6,209715200,2097152
1726572000,310260333333333,default_bearer_end,10003,15553333333,333333333333333,,1258248,1002,2002,10.0.0.15,172.16.1.3|,10.0.0.20,internet,9,10485760,4194304

分析:

  • 默认承载 (10003) 承载背景流量 (10 MB 下行,4 MB 上行)
  • 专用承载 (10004) 承载视频流量 (200 MB 下行,2 MB 上行)
  • 不同的 QCI 值 (9 与 6) 反映不同的 QoS 处理

集成​

CDR 处理管道​

CDR 收集方法​

1. 基于文件的收集:

# 监控 CDR 目录 (SGW-C)
inotifywait -m /var/log/sgw_c/cdrs/ -e close_write | while read path action file; do
# 文件轮换完成,处理 CDR
process_cdr "$path$file"
done

2. 实时流:

# 尾随并流式传输到处理管道
tail -F /var/log/sgw_c/cdrs/* | process_cdr_stream

相关文档​


3GPP 参考​

  • TS 32.251 - 分组交换 (PS) 域计费
  • TS 29.274 - 3GPP 演进分组系统 (EPS); GTP-C 协议
  • TS 29.244 - CP 和 UP 节点之间的接口 (PFCP)
  • TS 32.298 - CDR 编码

CDR 格式 - SGW-C 的离线计费记录

由 Omnitouch 网络服务开发

文档版本: 1.0 最后更新: 2025-12-10