《5G核心网原理与实践》实践篇 · CHF 网元功能
CHF⽀持PDU会话离线计费(会话更新,Charging Data Request - Update)
爱卫生
2023年09月10日 13:23
1 测试目的
- 验证CHF支持PDU会话离线计费(会话更新)。
- 需求是:
1)在PDU会话建立流程中,SMF与CHF建立了N40的会话,CHF向SMF下发了计费事件的触发器
Trigger。
2)当触发器条件满足时,sMF应向CHF发送报告。
对应的大流程可以是PDU会话建立,也可以是PDU会话修改。
关键是看Trigger的条件是否满足。
2 测试步骤
信令流程图与PDU会话建立/修改流程基本一致,重点是N40接口,大致如下:
1)当SMF感知到计费事件的触发条件满足:
3)CHF更新CDR(可选,如果有必要的话。);
2)SMF基于触发条件,给CHF发送Charging Data Request(Update)消息;
3 主要的检查点和log解析:
4)CHF给SMF返回Charging Data Response(Update)消息。
1)SMF向CHF发送Charging Data Request(Update)消息;
可以看到,上图中长度为2253字节的包就是SMF发送给CHF的update,和长度为1854字节的Initial消息不
同,Update消息里那个408结尾的数字表示ChargingRefId,这个Id在N40会话创建后才会分配,所以最开
始的Initial消息里是没有的。
主要参数有:
- nfConsumerIdentification:调用计费服务的NF的信息,这里是SMF的信息。
- invocationTimeStamp:请求发送的时间。年月日小时分钟秒格式。
- subscriberIdentifier:用户的IMSI。
- pDUSessionChargingInformation:PDU会话相关的计费信息。
- pduSessionInformation:pDUSessionChargingInformation的子参数,描述了PDU会话的详细信息,包
括PDU会话标识、选择的SSC模式、PDU地址、RAT类型、切片信息、签约的Qos信息等等。
- invocationSequenceNumber:请求消息的序列号。这里取值为2,Initial消息里1。序列号+1。
- Triggers:表明update是因为什么触发的。这里是volume_limit,因为使用量到达门限。并且
TriggerCategory为立即上报。
- multipleUnitUsage:上报的用户使用量的具体信息。包括关联的rating group、使用量
usedUnitContainer(上行、下行、总和)。quotaManagementIndicator指明为离线计费。
JavaScript Object Notation: application/json
Object
Member Key: multipleUnitUsage
Array
Object
Member Key: ratingGroup
Member Key: usedUnitContainer
Array
Object
Member Key: downlinkVolume
Member Key: triggers
Array
Object
Member Key: triggerCategory
String value: IMMEDIATE_REPORT
Key: triggerCategory
Member Key: triggerType
String value: VOLUME_LIMIT
Key: triggerType
Key: triggers
Member Key: localSequenceNumber
Member Key: quotaManagementIndicator
String value: OFFLINE_CHARGING
Key: quotaManagementIndicator
Member Key: triggerTimestamp
Member Key: uplinkVolume
Member Key: totalVolume
Member Key: pDUContainerInformation
Object
Member Key: timeofLastUsage
String value: 202X-03-23T15:33:06+0800
Key: timeofLastUsage
Member Key: timeofFirstUsage
String value: 202X-03-23T15:32:59+0800
Key: timeofFirstUsage
Key: pDUContainerInformation
Key: usedUnitContainer
Key: multipleUnitUsage
Member Key: triggers
Array
Object
Member Key: triggerCategory
String value: IMMEDIATE_REPORT
Key: triggerCategory
String value: VOLUME_LIMIT
Member Key: triggerType
Key: triggerType
Key: triggers
Member Key: invocationTimeStamp
Member Key: nfConsumerIdentification
Member Key: subscriberIdentifier
Member Key: pDUSessionChargingInformation
Object
Member Key: userLocationinfo
Member Key: chargingId
Number value: 26XXXXX408
Key: chargingId
Member Key: userInformation
Member Key: pduSessionInformation
Object
Member Key: chargingCharacteristicsSelectionMode
Member Key: sscMode
Member Key: pduSessionID
Member Key: networkSlicingInfo
Member Key: pduAddress
Member Key: chargingCharacteristics
Member Key: ratType
Member Key: pduType
Member Key: servingNetworkFunctionID
Member Key: subscribedSessionAMBR
Member Key: dnnId
Member Key: hPlmnId
Member Key: servingCNPlmnId
Member Key: subscribedQoSInformation
Key: pduSessionInformation
Key: pDUSessionChargingInformation
Member Key: invocationSequenceNumber
Number value: 2
Key: invocationSequenceNumber
2)CHF给SMF返回Charging Data Response(Update)消息。
【需要注意,如果是Charging Data Response(initial),则是201 created。如果是Charging Data
Response(update),则是200 OK。
CHF在响应消息中主要参数有:
1)triggerType:触发条件。这里是使用量限制。
- triggers:计费触发器。又包括以下几个子参数:
2)TriggerCategory:必选参数。指示SMF是否立即上报CHF计费事件,上报对应trigger生成的计费数
据。取值有两个,IMMEDIATE_REPORT表示立即上报;DEFERRED_REPORT表示延迟上报。本例为
立即上报。
3)volumeLimit64:使用量限制的门限值。64是它的最大取值范围,即的2的64次方。和它对应的还有一
个叫volumeLimit的参数,取值是32位长度,即2的32次方。
- invocationSequenceNumber:SMF调用计费服务的序列号。
- invocationTimestamp:CHF响应计费服务的时间戳。
【注:CHF在本地还有很多动作,比如判断是否更新CDR,CDR的合并、整理、格式化等操作。但这些
在抓包里边体现不出来。另外,还涉及到和BOSS的交互,这里先省略了。】
4 规范
参考32.290和32.291。
无论是想学习课程、看视频、看案例、看log、看实战,统统都有。