【问题现象】
三星手机终端除了开机收到第一条短信是实时的,后续再接收新的IP短信都会出现“接收滞后”现象。其他终端则不存在类似的滞后问题。
【原因定位】
经网络侧抓包分析,三星在接收第一条IP短信后会回复ACK消息,但SBG回复400 Bad Header Field的错误,致使此次IP短信会话在网络侧无法正常结束,后续新的IP短信会话都相应被推后完成。
网络侧对终端接收短信的信令流程进行抓包分析,发现三星终端在接收短信后发到网络侧的ACK消息会被SBG拒绝,根据SBG回复的400BadHeaderField,怀疑导致错误的原因是UE上发的消息头域所携带的内容不符合规范。
具体分析三星终端上报的ACK消息:
发现三星终端在上发ACK消息时,Request-Line上附加了user=phone这个参数。这与其他终端接收短信后的ACK消息有明显不同。
3GPP规范中对SIPURI的建议是E1.64号码才使用user=phone参数,非E.164的SIP URI不应添加了user=phone参数(sip:as01.ipsmgw.zj.chinamobile.com;user=phone)。另外,IP短信规范24.341也明确要求IP-Message-Receiver需使用收到的MESSAGE的PAI域作为ACK时的Request-URI,而网络下发的PAI也是不带user=phone参数的。因此可以判断是三星终端的行为不符合规范,造成网络侧拒绝其消息。
【解决方案】
问题反馈给三星终端厂家后,三星终端进行了配置调整,接收短信后回复的ACK消息Request-line中不再携带user=phone参数,SBG不再报错,短信接收流程正常完成,后续短信也不再出现接收滞后的现象。
本文整理自网络,文章版权归原作者所有,如有侵权,请联系我们进行删除。小编微信(gprshome201101)
长按下方二维码图片 > 识别图中二维码 > 关注“51学通信公众号”
51学通信接头方式如下: