【问题现象】
VoLTE用户A呼叫B,B呼叫保持A,A进行mid-eSRVCC,之后B unhold A失败,且呼叫中断。
【原因定位】
进行抓包分析。
1) 首先检查eSRVCC流程,正常,eSRVCC切换成功.
2) B用户unhold呼叫时,unhold的 INVITE 消息 发 到 SCC AS后 , SCC AS发了480 temporarily not available。可见此mid-eSRVCC失败的原因是SCC AS释放呼叫。
3) 分析SCC AS收到的unhold INVITE消息,对比之前收到的hold的INVITE消息,发现携带的编码有些差别。
a) hold阶段 : 终端携带的编 码为AMR8000, telephone-event8000 和 PCMA8000(G711)
b) unhold 阶 段 : 终端 携带 的 编 码为 AMR8000 和 PCMA8000 ( G711 ),少 了 telephone-event8000。
Hold的INVITE:Unhold的INVITE:
4) 进一步分析发现,此处的差异是由于eSRVCC时,eMSC发起的切换INVITE消息中携带的编码没有包含telephone-event8000,导致eSRVCC切换后更新编码A与B之间没有使用 telephone-event800。但在呼叫建立阶段,A与B之间包含有telephone-event8000,导致呼叫连 接失败。telephone-event8000编码的作用是提供DTMF,eMSC应该带上此编码。
5) 检查eMSC上用于eSRVCC的VMGW,发现尚不支持telephone-event。
【解决方案】
使用指令 ZJGG:INDEX=44:TYPE=PROVCODEC::::::::CODEC=2,VALUE=T,::; 添加tele_event 编码到相关 VMGW 上。
修改后,测试成功。
本文整理自网络,文章版权归原作者所有,如有侵权,请联系我们进行删除。小编微信(gprshome201101)
长按下方二维码图片 > 识别图中二维码 > 关注“51学通信公众号”
51学通信接头方式如下: