VOLTE用户注册流程详解 杭州华星 周国有 VOLTE用户注册的前提是用户开通了VOLTE功能,以及更换了VOLTE手机,并设置好“volte”或“ims服务”或“HD高清语音”选项开关,在用户开机附着成功建立起数据域APN=CMNET的默认承载后,UE单独发起APN=ims域PDN连接性请求,并成功建立QCI=5的ims信令默认承载后(为后续传递SIP消息),UE发起注册请求,流程中分成首次注册、后续注册、第三方注册、订阅共四个阶段,VOLTE用户注册示意图: z g 本图中1~4为首次注册,5为后续注册,6为第三方注册 y更加详细的流程见下图: 1~12步骤为首次注册,13~24步骤为后续注册,25~26为第三方注册 在UU接口上的信令消息截图如下: z g y 一、首次注册 作为注册消息的发起方---用户终端,UE根据USIM信息,推导得出注册用的私用身份标识IMPI和IMS公用身份标识IMPU: g 其中私用身份标识是归属网络运营商提供的用户唯一全球标识,类似IMSI,用于对IMS用涉及S-CSCF能力集。 右图中涉及Gm接口的关键网元P-CSCF/ATCF的register消息转发。 P1:P-CSCF/ATCF收到UE的REGISTER消息后,判断此呼叫后续有可能发生eSRVCC切换,则分配一个STN-SR号码,在REGISTER消息中增加Feature-Caps头域,并将其转发给I-CSCF。 P2:UE收到401响应后,重新构造REGISTER消息,携带RAND和RES,发送给S-CSCF。P-CSCF/ATCF对其的处理与P1相同。 z 左图中I-CSCF地址是DNS/ENUM翻译出来的,HSS对I-CSCF回复用户授权数据中 户进行鉴权认证,该标识对用户不可见。 y 首次注册的过程在核心网的抓包如下: 下:当一个Proxy Server收到一个Request消息时,会检查Route字段的第一个地址是否等于自己,如果是,它可以从Route字段中删去自己的地址信息,然后叠加下一段地址,并将消息转发到Route字段中指定的下个地址;如果Route字段为空,则转发到Request 表示此消息通过此地址发往下一跳,为什么要增加Via字段来记录Request消息经过的地址呢?实际上这个地址信息将被作为Request消息的Response消息的路由,Response将根据Via字段中记录的地址逐级返回,直到回到Request的发起方。总的来说,如果有Route,request就应该根据Route发送,如果没有就根据Contact头域发送,如果连Contact都没有,就根据From头域发送。 首次注册时,请求线---register消息中相关授权信息为空(比如随机数为空、认证响应为空、无完整性保护),如下图: yz 过的每一跳(包含发起方)都会在SIP消息中增加一个Via字段,内容为自己的地址信息, URI指定的地址。关于Via头域含义如下:当UAC发起一个SIP Request消息时,消息经 g P-CSCF地址来实现的,该地址被用来作为Request消息的路由。关于Route头域含义如 空口中的register消息通过Gm口直到P-CSCF,是通过该消息中Route字段的 P-CSCF收到register消息后,根据IMPI标识请求DNS/ENUM域名地址,而后返回P-CSCF传递register消息至归属域的I-CSCF,作为归属域查询功能的I-CSCF向HSS发起USER-AUTHORIZATION-REQUEST消息,授权类型为注册,本消息基于Diameter架用户为first register(首次注册),同时回复服务器能力集(I-CSCF根据接收到的每个S-CSCF的能力集进行某种选择算法,选择一个合适的S-CSCF)。 在I-CSCF选定某个S-CSCF后,I-CSCF转发register消息至S-CSCF(目前是合设的,因此S-CSCF发送MULTIMEDIA-AUTH-REQUEST消息给HSS,这是多媒体认证过程,也可以说是IMS认证过程,认证过程指定为Digest-AKAv1-MD5(这是摘要认证,与EPC的令牌认证是不一样的),在HSS的成功响应消息中属性值对---SIP-Auth-Data-Item,包含有5套认证所需要的完整数据(S-CSCF对用户认证时任选一套即可,有点类似于MME对用户认证,就是说认证的原始数据出自于HSS,认证的实体分布在S-CSCF或MME以及UE,这是出于安全角度进行设计的),S-CSCF内部传递register 401消息至I-CSCF,I-CSCF以将回复消息以SIP架构传递给P-CSCF,最终回复给UE,其状态线消息中代码为z 需要的基本数据,比如随机数、算法等。 属于内部消息转移)。由于是首次注册,相关认证信息是空的,那么必须由HSS补充认证所 g 对---实验性结果代码为2001(DIAMETER_FIRST_REGISTRATION),意味着HSS判断出 构。而HSS回给I-CSCF的消息为USER-AUTHORIZATION-ANSWER,其中有个属性值 y401,同时还有一套认证数据: 这套认证数据包括Digest认证方式、随机数、算法、完整性保护密钥、加密密钥。手机首先对网络进行认证,根据算法和随机数,得出密钥,验证计算出来的密钥是否和下发的是否响应值与XRES期望响应值,验证通过后才认为注册成功。 z g 过后,UE发起后续注册地,将生成的SRES响应值转发至S-CSCF,由S-CSCF比对SRES 相同,从而验证了网络的合法性(UE对MME合法性的认证是采用令牌环方式),在验证通 y二、后续注册 后续注册的过程在核心网的抓包如下: z g 9-12步骤是认证成功所必须的,13步骤是为了触发第三方注册。 手机发起第二次注册,消息通过Gm口发送给P-CSCF,携带了digest摘要认证数据: y 在P-CSCF转发register消息给I-CSCF时是有Path设置项的,其数据为P-CSCF地址、UE IPV6地址,而在I-CSCF转发Register请求给S-CSCF时同样要插入P-CSCF地址、UE IPV6地址的path设置项,S-CSCF通过Path字段保存一个UE所使用的P-CSCF地址,户为后续注册---DIAMETER_SUBSEQUENT_REGISTRATION (2002),并给定S-CSCF名称(而不是能力集),S-CSCF名称经ENUM/DNS翻译后,I-CSCF内部转移register消息至S-CSCF。 在S-CSCF是空的,HSS响应S-CSCF的SERVER-ASSIGNMENT-ANSWER消息包含了业务签约数据(Service Profile)、两套iFC(初始滤波准则,用于触发AS进行第三方注册)、计费信息域名等,S-CSCF内部传递消息至I-CSCF,之后I-CSCF以SIP---INVITE 200 OK消息确认注册成功。该消息中包含了两个IMS公用身份标识,采用SIP URI和Tel URI格式: Tel URI用于后续的语音呼叫,而SIP URI用于IMS网络路由。 INVITE 200 OK有个Service-Route头域需要注意,该头域在S-CSCF向I-CSCF发送,而后I-CSCF向P-CSCF发送REGISTER成功应答时设置,这样UE注册后的消息(例如z SERVER-ASSIGNMENT-REQUEST(类型为注册)至HSS,同时说明S-CSCF的用户数据 网元确认认证结果正确后,S-CSCF g 知道实际应该发往的P-CSCF地址了。经过I-CSCF与HSS的授权交互后,HSS判断出用 这样当S-CSCF需要主动向UE发送消息时(例如网络端发起的De-register),S-CSCF就 发送消息 yINVITE)通过设置Route字段无需经过I-CSCF可直接送达S-CSCF,也即注册成功后,P-CSCF记录有UE归属S-CSCF域名: 状态的各相关网元必须要记录的地址、域名、安全数据或用户数据: 网元 终端 注册前 注册中 注册后 IMPI,IMPU,域名,P-CSCF名或地址,鉴权密码 S-CSCF地址,UE IP地址, IMPI,IMPU 无信息保存 HSS 地址 User profile P-CSCF地址 P-CSCF Network ID UE IP 地址,IMPI,IMPU S-CSCF IP地址 IMPI,IMPU,域IMPI,IMPU,域名,P-CSCF名名,P-CSCF名或或地址,鉴权密码 地址,鉴权密码 y I-CSCF HSS 地址 P-CSCF DNS地址 z S-CSCF HSS地址 HSS 用户Service Profile g I-CSCF地址,UE IP地址,IMPI,IMPU S-CSCF 地址(临时) HSS 地址 User profile P-CSCF地址 P-CSCF Network ID UE IP 地址,IMPI,IMPU P-CSCF Network ID 头域发送,如果连Contact都没有,就根据From头域发送。下表为注册前、中、后三个 总的来说,如果有Route,request就应该根据Route发送,如果没有就根据Contact 三、第三方注册 在S-CSCF成功下载了用户数据后,也意味着成功注册后,要检查所下载的初始过滤准则iFC,并触发去往为用户服务的AS的路由,通知AS说明用户已经注册并且可到达,同时更新必要网元数据,主要涉及S-CSCF与HSS/SCC-AS/VOLTE(T) AS/IP-SM-GW交互,其中包含注册register、用户数据查询UDR、用户数据更新PUR、用户数据插入ISD、message、签约通知SNR过程。该过程仅在IMS核心网出现,Uu口无此信息,流程图如下: z g S-CSCF发送register消息给SCC AS,该消息中消息体中内容为基本注册中成功注册的register内容(也称为第一方注册,I-CSCF内部发送给S-CSCF,VIA地址为I-CSCF的内部IP地址,包含有成功鉴权认证向量、Feature-Caps头域的ATCF域STN-SR)。涉及STN-SR描述如下:S-CSCF向SCC AS更新STN-SR,之后SCC AS 通过HSS向MME y下发STN-SR以用于eSRVCC,UE在IMS网络注册时,ATCF根据终端能力和会话需要,为其分配STN-SR号码,将ATCF置于信令路径中,以便该终端的注册和呼叫相关消息都经ATCF,几个关键参数的分配及传递如下表: 关键参数 由…分配 STN-SR ATU-STI ATCF SCC AS 由…存储 传递路径 HSS ATCF -> I-CSCF -> S-CSCF -> SCC AS -> 融合HSS/HLR -> MME MME ATCF SCC AS -> I-CSCF -> ATCF ATCF 融合HSS/HLR -> SCC AS -> I-CSCF -> ATCF 可能有多次UDR/UDA消息交互。最后S-CSCF与IP-SM-GW完成注册,由于IP短信网关地址并不在HSS签约数据中,因此该节点与HSS之间需要数据更新过程,通过PUR/PUA z g 实现。 S-CSCF与SCC-AS注册完成后,会接着进行VOLTE-AS注册,过程中请求数据较多, yC-MSISDN HSS 四、订阅 SUBSCRIBE方法用于发起订阅请求,NOTIFY方法用于通告当 前资源状态,当那些被订阅的资源的状态发生改变时,负责这一资源的网络实体将向订阅者发送通告,通报当前资源状态的变化情况,这是事件通告机制,涉及以下几个概念: (1)订阅者 订阅者负责接收NOTIFY消息的会话启动协议用户代理(SIP UA)。这些NOTIFY消息中包含订阅者订阅的资源信息。订阅者典型的动作是向通告者发送SUBSCRIBE消息以请求创建一次订阅关系。 回馈当前资源的状态。通告者典型的动作是接收SUBSCRIBE消息并创建相应的订阅关系。 (3)订阅 所谓订阅就是一组与某个对话相关联的应用状态的集合。订阅关系既存在于订阅者中,事件包是通告者向订阅者发送的一组资源的状态信息,例如:在席事件包、对话事件包等,这些事件包可使用不同的语法并具有各自的语义。这种框架赋予会话启动协议事件通告机制极大的生命力和灵活性,有助于快速提供新的业务。 UE是订阅者,VOLTE订阅是UE发起的过程,涉及SBC、S-CSCF及HSS网元,而S-CSCF是通告者,通知是由HSS触发、S-CSCF发起的。通告者在成功创建订阅关系后,必须立即发送NOTIFY消息,向订阅者通告当前订阅资源的状态,通告内容以xml格式予以表达,NOTIFY消息中必须包含扩展的 Subscription-State头部,指示创建的订阅的状z (4)事件包 又存在于通告者中。 g 通告者负责产生NOTIFY请求的用户代理(SIP UA)。通告者在NOTIFY消息中向订阅者 (2)通告者 y态。共有3种订阅状态,分别是: (1)active:订阅已被接受且授权成功。 (2)pending:SUBSCRIBE请求已收到,但还没有足够的信息决定接受或拒绝此次订阅。 (3)terminated:订阅未激活,或创建的订阅关系终止。 对应active状态或peding状态,该头部还带有expires参数指示此次订阅的有效时长。对应terminated状态,该头部应包含reason参数指示订阅被终止的原因,或者包含Retry-After参数,指示订阅者过一段时间后重新发起订阅请求。 对于订阅已被接受且授权成功的notify截图如下: g 核心网抓包如下: z yy由于平台原因,上述抓包中涉及HSS的几个Diameter消息,补充如下: PNR(Push Notification Request)消息由命令码309和设置命令标志“R”表示,当ASz g 通过PNR消息将更新后的数据发送给AS。 通过SNR(Subscribe Notifications Request)消息向HSS订阅的数据被更新后,HSS