【问题现象】
主叫三星终端以VoLTE方式拨打CS被叫(现网GSM用户),呼叫未能成功建立,被叫侧未看到呼入请求。
【原因定位】
故障诊断:
初步判断是呼叫未能成功breakout至CS域。经测试抓包发现,终端在常规Precondition流程后PRACK消息发送到MGCF后,MGCF返回400BadRequest给主叫终端,导致通话建立失败,呼叫请求并未路由至CS域。
原因排查:
对相应问题进行IMS各网元抓包,基于Precondition的呼叫流程(INVITE/183offer/answer)初期一切正常。
但此后,信令跟踪发现三星终端又发起PRACK消息来重新刷新SDP。分析PRACK消息,发现PRACK消息中携带的SDP参数与其他终端成功建立呼叫的情况有所不同,最后导致了MGCF回复400 Bad Request。
原因分析:
对比三星终端和其他成功情况下发出的PRACK消息,可以看到:
• 此问题场景中,SDP参数携带a=des:qos none local none。
• 正常成功的场景中,SDP参数携带a=des:qos none local sendrecv。
根据RFC规范描述,“sendrecv”指示了本地终端预留的资源已保存在sending和receiving
两个方向,“none”指示未预留资源。
由于移动网络中是采用Precondition方式建立呼叫的,在INVITE/183offer/answer后主叫终端应完成资源预留,此时终端再发出PRACK指示资源未在本地预留就不符合流程预期了。因此,MGCF认为PRACK SDP中指示的Diretion-Tag=none是错误的,返回400BadRequest终结了呼叫建立流程。导致通话建立失败。
【解决方案】
爱立信反馈了该问题给三星终端厂家,后续三星终端根据反馈修改了手机配置,该场景中终端发出的PRACK SDP指示被修改为Sendrev,符合流程预期,从而MGCF顺利把呼叫请求路由至CS域,问题得到解决。
本文整理自网络,文章版权归原作者所有,如有侵权,请联系我们进行删除。小编微信(gprshome201101)
长按下方二维码图片 > 识别图中二维码 > 关注“51学通信公众号”
51学通信接头方式如下: