【问题现象】
部分用户投诉VOLTE用户与CS域用户互通时出现单通现象,单通的现象表现为一开始就听不到VOLTE侧的语音或者CS侧的语音。第二连续拨打仍存在单通,第三次拨打恢复正常。
【原因定位】
CS域与Volte互通涉及ENB、SBC、IMMGW等网元。针对Volte拨打CS域单通问题,我们进行了拨测,重现单通现象,同时在IMS核心网元上对用户进行了信令和媒体流进行抓包分析。
1、从信令上看18407404036拨打18163620721信令正常。
2、eNB到SBC的报文:通过播放软件,通话语音正常。
3、从SBC(10.185.191.137)发过来到IMMGW(10.185.191.158)的报文:
可以看出报文净荷值都是0x55,发现全部是静音,由此可见SBC发给IMMGW的都为静音帧。
由此得出在eNB到SBC媒体流正常,但是转发出去时却转成了静音帧,导致用户无法听到对方语音,感知为单通;
问题原因:
CS域与Volte互通涉及编码转换。
1、SBC对媒体的处理机制:
一路G.711转码AMR-WB为例,SBC收到G.711媒体包之后:
G.711媒体包放入媒体队列 –》从队列取G.711媒体包–》解析RTP包,得到G.711–》G.711解码,得到PCM–》另外一端获取PCM,编码得到AMR-WB–》AMR-WB进行RTP打包,得到AMR-WB媒体包–》调用发包回调函数
2、静音异常的分析:
为了定位SBC发给IMMGW的包为什么是静音,现场打开SBC内部跟踪打印功能,从SBC内部打印看,出现问题时,该用户的打印持续频繁打印如下信息:
当网络媒体包的处理队列已满,在这种状态下,按当前的代码逻辑,会误判为队列空。
导致新的数据放不进去,已放入的数据取不出来。由于语音数据得不到处理,内部认为是网络抖动,语音拉伸模块(抗网络抖动)发挥作用,一直拉伸的效果,就是生成静音帧。
即SBC在某种异常情况下出现媒体包队列满了,放不进去,取不出来,导致一直发静音祯。
影响范围:影响VOLTE用户与CS域用户互通时的感知。
【解决方案】
补丁解决:
1、从异常中恢复之后,先取已放入队列的数据媒体包,队列中的数据包能够得到处理。
2、如果出现队列满则直接覆盖老的数据,保证用户听到的都是最新的数据。
本文整理自网络,文章版权归原作者所有,如有侵权,请联系我们进行删除。小编微信(gprshome201101)
长按下方二维码图片 > 识别图中二维码 > 关注“51学通信公众号”
51学通信接头方式如下: