【问题现象】
使用HTC M8T的VOLTE版本,升级成最新的版本--RC25、R35新版本。升级完成后注册IMS成功,但在华为MME下无法进行VOLTE呼叫,变成了CSFB语音方案回落至2G进行通话。 

【原因定位】
终端使用测试卡已注册VOLTE网络成功,进行呼叫的时候,网络侧回复503错误(SERVICE UNAVAILABLE)。具体的SIP信令流程如下:
1、UE->NW INVITE

2、NW->UE Cancel503

终端发起VOLTE呼叫,且支持Silent  Redial机制:当VOLTE呼叫失败后,将转成CSFB语音方案,因此呼叫回落至2G。而使用相同卡插入三星S6测试VOLTE呼叫,呼叫成功。

问题原因:
不同VOLTE终端,采用的附着建立默认承载的方法也不同,主要有两种不同的方法:
1、终端附着网络时,使用网络默认APN建立默认承载。比如,HTC M8T。
2、终端附着网络时,使用终端侧设置的APN建立默认承载。比如,三星S6。
使用终端侧设置的APN建立默认承载,按照3GPP24.301章节8.3.20.2描述,在附着络过程中,建立PDN连接请求消息如果携带“ESM information transfer flag” ( ESM信息传输标
记),表示终端希望使用自己提供的APN。

三星S6使用终端侧设置的默认承载信令截图如下:
1、终端在Attach request请求信令携带“ESM information transfer flag”:

2、网络侧发起APN请求,ESM information request,终端通过ESM information response回复网络侧终端上设置的默认APN。

图4 三星S6 Attach流程期间发起ESMinformation交互

HTC M8T使用网络侧设置的默认承载信令截图如下:
1、终端Attach request请求信令未携带“ESM information transfer flag”:

2、网络侧发起APN请求无ESM information request:

经过测试分析发现,HTC M8T,使用LTE的APN进行IMS注册期间,终端发起了3次默认承载请求,在第三次默认承载请求,PDN类型为ipv6的PDN连接请求,网络侧处理此请求时,错误地建立了IMS承载。
因为这个终端建立了两个IMS的缺省承载, 导致无线侧响应的资源被占用后无法创建专有承载导致VOLTE语音通话无法进行。

具体HTC M8T发起默认承载请求流程如下:
1、第一次默认承载请求:在Attach request发起,网络侧下发默认APN是CMNET、IPV4的地址、esm_cause=52 (0x34) (Single addressbearers only allowed)。
2、第二次发次默认承载请求:在PDN Connectivity Request里,请求类型是IPV4V6,APN 是CMNET、IPV4的地址、esm_cause =52 (0x34) (Single addressbearers only allowed)。
1)请求消息PDN connectivity request Msg如下: 

2)应答消息Activate default EPSbearer context request Msg如下:

3、第三次默认承载请求:终端收到#52原因值是应该发起另一种IP版本的PDN连接,发起了空的APN发起了第三次ipv6的PDN连接;而网络侧错误地建立了IMS承载。
1)请求消息PDN connectivity request Msg如下:

2)应答消息Activate default EPSbearer context request Msg如下:

经过分析,此问题网络侧和终端均存在问题,具体如下表所示:

由于网络反馈此问题在三星S6无法复现并且ESM CAUSE也符合移动规范,对此分别对三星S6和HTC M8T进行对比测试。测试结果如下:

HTC M8T使用网络侧默认的APN,测试结果如下:
1、IP类型是IPV4V6,设置APN接入点,apn设置为cmnet(正确的APN)联合attach accept回复的是esm_cause=52(0x34) (Single addressbearersonly allowed),不会再发起默认承载PDN请求。
2、IP类型是IPV4V6,设置APN接入点,APN为空(错误的APN)联合attach accept回复的是esm_cause=52 (0x34) (Single addressbearers only allowed), 然后终端侧发起数据默认承载PDN请求,回复是esm_cause=52(0x34)(Single address bearers only allowed) ,发起IPV6的第三次默认承载请求,导致错误建立两个IMS承载。
3、IP类型是IPV4V6,设置APN接入点,APN是12(错误的APN)联合attach accept回复的是esm_cause=52(0x34) (Single addressbearers only allowed),然后终端侧发起数据默认承载PDN请求,回复是esm_cause=51(0x33)PDN type IPv4 only allowed,不会再发起默认承载PDN请求。

三星 S6 使用终端侧设置默认的 APN,测试结果如下:
1、IP类型是IPV4V6,设置APN接入点,apn设置为cmnet(正确的APN)联合attach accept回复的是esm_cause=51(0x33)PDN type IPv4 only allowed, 后面不会再发起默认承载PDN请求。
2、三星无预置接入点的apn是空值,通过手动添加apn,无法添加apn为空值,必须输入内容。
3、IP类型是IPV4V6,设置APN接入点,apn设置为12(错误的APN)联合attach accept回复的是esm_cause=51(0x33)PDN type IPv4 only allowed,后面不会再发起默认承载PDN请求。

影响范围:
虽然此问题在三星S6、华为M7终端上无法复现。但是HTC终端采用了高通的原生IMS方案,与高通芯片集成,而三星S6采用厂家自主开发的IMS协议栈、华为M7采用海思芯片的IMS方案,其他终端厂家无法普遍采用。
将来,各个其他终端厂家大多会采用HTC终端的IMS方案。因此,HTC终端与网络适配性问题,长远来看是较为重要。
使用HTC M8T会导致华为MME下发ESM CAUSE不符合移动规范、HTC M8T在设置APN为空的情况下会出现呼叫失败,但影响范围不大。

【解决方案】
尝试修改APN设置为CMNET,如下图所示,修改后拨打VOLTE呼叫成功。

此问题,终端侧和网络侧均存在问题,各网元的解决方案:


51学通信核心网微信群公告:

为方便大家交流通信技术,我们创建了一个“51学通信核心网微信群”,欢迎所有热爱移动通信核心网的朋友加入,共同来探讨移动通信核心网相关问题,让我们共同进步吧~。

本群为51学通信所建的核心网技术交流群,仅限讨论核心网相关技术问题,分享通信生活及行业新闻等。禁发一切类型的广告(包括招聘、兼职信息、产品推广等,但在线学习类的分享不限),不合理的地方会慢慢改进。

本群涉及的主要领域和技术包括但不限于以下:

1)IP (MPLS VPN,IP Qos,NAT,IP Sec,组播,流量工程等)

2)CS核心网(MSC-S,MGW,SCP等)

3)2/3/4G PS核心网(MME,SGW,PGW,SGSN,GGSN,EPC DNS,EPC-HSS,HLR,OCS,CG,PG,PCRF,CE等)

4) IMS(CSFB,eSRVCC,ICS,RCS等技术,CSCF,AS,BGCF,IBCF,IMS-HSS,eNUM/DNS,ePDG,AAA,ATCF/ATGW,eMSC,SBC,MRFC/MRFP等网元)

本群讨论的主要协议包括但不限于:

MPLS,QinQ,IP,PIM,IGMP,SNMP,RTP/RTCP,OSPF,BGP,ISIS,SIP/SDP,Diameter/DBP,GTP,ISUP,MAP,RANAP,BSSAP,SIGTRAN,SCTP,H.323,H.248,IKE,AH/ESP,S1AP,SGsAP,X2AP,LDAP,XCAP,HTTP,BICC,Camel等。

本群讨论原理及信令为主,不讨论设备内部实现细节及bug。
加入方法:

51学通信群已超100人(目前已有385人),根据微信规定,群二维码自动失效。现在入群的唯一方法是群内人拉人入群。

为方便更多朋友入群一起交流核心网技术,特此发布下我们的入群方法:

1 群内的朋友可以任意拉人,只要不违反群公告的规定即可。

2 群外的朋友想入群,可以联系群内的朋友拉进来,或者加群主个人微信,说明想入群,群主会拉你入群

(群主微信名称:爱卫生,微信ID:gprshome201101)