SBC回复500错误导致终端SCFB
来源:优橙教育 时间:2021-02-04 10:53:21
【问题现象】
终端在LTE网络下拨打VoLTE电话,终端发送INVITE消息后,收到SBC回复的500错误,变成CSFB电话。
【问题分析】
分析发现中兴S-CSCF处理SBC转发主叫发起的invite消息时回复了500错误,错误的原因是由于SBC发送给S-CSCF网元的INVITE消息中携带的PCV头部有问题,具体的PCV头部信息如下:
SIP信令中PCV头部中携带了两个ecid信息(红框显示),第二个ecid是“1F890A6F”,这个里面有一个换行符(0A),导致S-CSCF网元上解码认为头部结束,从而认为不合语法规范,获取ecid失败。
根据29.214协议,PCRF等网元通过RX接口返回的接入网络计费标识值(Access-Network-Charging-Identifier-Value)的语法类型定义: The Access-Network-Charging-Identifier-Value AVP (AVP code 503) is of type OctetString, and contains a charging identifier。
根据24.229协议,SBC通过RX接口返回的信息中ecid参数来编码上述计费标识信息,SIP协议的语法定义如下:
eps-bearer-hierarchy = "eps-info" EQUAL LDQUOT eps-info *(COMMA eps-info) RDQUOT
eps-info = eps-item SEMI eps-sig SEMI ecid [SEMI flow-id]
eps-item = "eps-item" EQUAL DIGIT
eps-sig = "eps-sig" EQUAL ("yes" / "no")
ecid = "ecid" EQUAL 1*HEXDIG
DIGIT = %x30-39 ; 0-9
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
根据上述语法定义,这里涉及一个OctetString到HEXDIG字符的转换问题,SBC对RX接口返回的部分不可见字符不支持(如“0x1f890a6f”中的“0A”为换行符),导致上述问题。
【问题解决】
SBC进行相应的版本或补丁解决。