VoLTE学习笔记杂谈(3) 注册信令流程
对于一个网络工程师而言,解读电信网络的信令是分析定位网络问题的有效手段之一。所谓兵马未动,粮草先行,网络信令就是先于业务流程的“粮草”,当信令流程先打通时,才能保障后续业务流程的通畅与质量。网络信令不仅是UE与网络信息交互的基础,同时也是各个网络节点之间对话的“标准语言”。对于IMS子系统中的信令也是同样的道理,因此熟悉一些基本流程的信令对于网络优化中的排障、分析工作不无裨益。
在IMS子系统中,只存在一种信令流程控制协议,就是Session Initiation Protocol,简称SIP协议。该信令不仅存在于UE与P-CSCF之间的Gm接口,同时存在于IMS核心网其他众多网元节点之间的接口消息中,例如Mw,Mm,Mg,Mi,Mj,Mk,Mx等。值得注意的是,IMS网元之间的SIP协议可能与UE与网络之间的SIP协议并不完全一样。
SIP协议最早起源于互联网机构IETF所制定的多媒体通信协议,对于电信网络的从业者来说,可能会相对比较陌生。对于传统的电信网络核心网,大家耳熟能详,涉及较多的诸如著名的7号信令,GPRS信令,NAS层协议,S1-AP协议,GTP-U隧道协议。而对于无线网络优化工程师而言,对于无线网协议(一般指的接入层协议)较熟悉的有GSM的RR信令,3G/4G网络的RRC信令等。因此,看待SIP协议有时候需要抛开固有的电信网络思维,以互联网协议的角度入手进行理解。
SIP是一个应用层的信令控制协议。用于创建、修改和释放一个或者多个参与者的会话。这些会话可以是Internet多媒体会议、IP电话或者多媒体分发,其中最重要的应用当属对 VoLTE(VoIP)会话流程的管理。SIP的一个重要特点是它不定义要建立的会话类型,而只定义如何管理会话,由于这样的管控机制,对于众多的基于IP的多媒体应用(语音、视频、音乐与视频点播、交互式游戏)都可以由SIP协议来进行管理。Session Description Protocal(SDP)则是对会话内容定义的一种协议类型,它本身与传输控制协议无关,仅仅可以看成对会话内容的一种描述,例如,可以描述会话内容是音频,文本,视频,短消息等。可以通俗把SIP比喻成维护管道的,对交互管道进行控制的协议。而在管道里面走的内容采取什么样的格式,则是由SDP协议来进行定义和描述。
由于在电信网的视角观察,IMS的信令与媒体其实可以看成电信网的一种业务,那么在UE发出SIP信令请求之前,首先需要为UE分配合适的IP-Connectivity Access Network(IP-CAN)承载,同时对于UE分配到的IP地址在IMS子系统中涉及的信令以及媒体业务需要保持一致。一个VoLTE语音电话,无非需要经历注册/去注册、IMS域内主被叫,跨域主被叫,下面从IMS会话的的几个关键信令流程进行说明:
注册
如同4G网络需要开机或者outof service一段时间后进行注册附着流程一样,IMS子系统的用户同样需要进行在S-CSCF的注册,该IMS注册流程可以在4G网络完成注册分配到了IP地址之后进行。从注册信息流的意义来看,用户总是位于漫游状态发起的,换句话讲,就是注册流程对于用户位于拜访地网络或者归属地网络都是一样的,只不过“漫游”在归属地网络的用户可以认为其归属地网络同时起到了拜访地网络和归属地网络网元功能的作用。这句话说的像协议一样如老太太裹脚布一样的严谨晦涩,其实说白了就是单从注册信令流程看,不区分漫游或非漫游用户。
对于无线网络优化工程师来讲,一般只关注UE与网络侧交互的流程信令,至于IMS网元节点内部的信令交互,暂时可以放一放,这样会使切入点更加直观,流程的掌握更加高效。
当UE在接入网完成附着获得IP分配后,就可以开始进行IMS域的注册流程。UE首先将注册信息发送给P-CSCF(当然之前需要进行借助DHCP/DNS服务器进行P-CSCF的“发现”流程),该注册流程需要包含公共用户标识,私有用户标识,归属地网络域名称,UE分配的IP地址,UE实例标识,是否支持GRUU的指示。
例如上图,Sip Message = REGISTER sip:ims.mnc002.mcc460.3gppnetwork.org SIP/2.0这条消息就是Request-URI,主要标识位置服务的域名,值得一提的是,与To标头域提供的内容不同,Request-URI并不提供用户名。From(f)与To(t)标头域包含的就是临时公共用户标识(值得注意的是,460024211900023@ims.mnc002.mcc460.3gppnetwork.org就是私有用户标识),一般来讲,如果不是第三方设备发起注册,这两个标头域的内容往往保持一致,其中含的内容就是UE的IMSI信息,这里就是460024211900023;Call ID是对一组往返消息进行标识,在该UE的每个注册过程,Call-ID一般对于同一用户的多次注册流程都保持一致,同时对于同一用户的不同会话要求有可能不同,例如,某次多媒体会议通话期间,对同一个用户的邀请可能分配多个不同的Call ID,Call ID需要保持全球唯一(例如SIP Call ID,可采用IMEI填充),并且为了安全目的可以采取适当的加密机制;Cseq保证注册请求的顺序,当每次注册请求发生的时候,Cseq的值应该 1;Max-Forwards该值决定request消息在IMS内部传递到目标服务器所需经历的最大条数,为了确保消息顺利到达,同时兼顾由于内部循环导致的跳转资源被过度消耗,该值一般设置为70,每一条以-1的方式进行计算,直到0为止,将反馈483(too many hops)的错误响应;Via(v)里面的信息主要说明传输层的协议信息,例如这里传输层使用的协议就是TCP协议。同时,还需含SIP 2.0,标识着发送请求的协议名称以及协议版本,另外,Via里还需要插入响应发送的地址。这里还要包含branch参数,除了CANCEL和ACK消息之外,该参数值是唯一的,且前7位一定是z9hG4bK(RFC3261),该参数的主要作用是标识SIP请求所创建的交互(UE与IMS网络之间);m对应的内容进行了媒体描述,首先包含媒体类型,例如这里的媒体类型就是视频流(video),同时也包含接收媒体协议的端口号,以及媒体格式描述(例如,传输包的格式描述)
Authorization鉴权标头域中所含的内容也有详细的规定,例如username中含有的就是用户私有标识,realm所含的是归属地网络域名,uri所含的就是归属地域名的SIP URI格式,nonce中设置应为空;Security-Client标头域指明了UE所支持的信令面的安全机制、IP层的安全机制算法,同时还有安全协商所需要的参数。UE需要支持建立两对安全协商机制。
当UE收到来自网络401(Unauthorized)的响应的时候,说明网络需要对UE进行鉴权。其中最重要的一点,UE需要校验Security-Server标头域所含的内容,如果该项内容未出现的在响应消息里或者没有包含安全协商所需要的相关参数,UE可以丢弃这次的鉴权过程,另起炉灶的以新的call-ID发送新的注册请求。当校验通过后,UE需要根据P-CSCF要求和本身能力支持的鉴权算法同时结合IK和CK加密算法建立临时的安全协商机制,并规定该临时安全机制的有效时长。接下来,UE使用临时安全协商机制再次发送注册请求到P-CSCF受保护端口(通过401 chanllenge获取)。
除了初始未鉴权保护的注册请求中的相关参数,本次注册请求中还应包括如下参数:
realm:设为从401消息中收到的realm值;
username:设为私有用户标识;
response:包含RES参数;
uri:设置为归属地网络域名的SIP URI;
algorithm:设为从401消息中收到的对应值;
nonce:设置为从401消息中收到的对应值;
P-Access-Network-Info标头域说明了IMS承载的接入网络类型,这里就是TD-LTE网络(3GPP-E-UTRAN-TDD),同时还说明了接入小区信息,utran-cell-id-3gpp=4600018DA1A64B02;Security-Clientheader标头域说明了UE所支持的媒体面加密机制情况。
1、 当P-CSCF收到注册信息流的时候,P-CSCF需要通过归属地域名称去确认归属地的接入点( I-CSCF)。然后,P-CSCF需要将包含P-CSCF地址/名称,公共用户标识,私有用户标识,P-CSCF网络标识,UE IP地址等信息在注册信息流利转发到I-CSCF。名称-地址解决机制被用来通过归属地域名解析出归属地的地址。P-CSCF网络标识是用来被归属地网络确认P-CSCF所在网络的字符串。
2、 I-CSCF需要将收到的信息发送给HSS进行校验是否该用户已经注册。同时HSS需要确认用户是否允许注册。
3、 如果校验通过,HSS将S-CSCF的名称或S-CSCF的能力反馈给I-CSCF,以供I-CSCF进行合适的S-CSCF选择。如果校验不通过,这里将反馈注册请求拒绝(reject)
4、 I-CSCF从HSS获取的S-CSCF名称,通过名称-地址解决机制获取对应的S-CSCF地址,将注册请求发送给S-CSCF(含P-CSCF名称/地址,公共用户标识,私有用户标识,归属地网络域名称,P-CSCF网络标识,UE分配的IP地址)。如果对同一个公告标识的注册联系地址超过S-CSCF预设的门限,S-CSCF可以拒绝该注册请求。S-CSCF需要存贮拜访地网络P-CSCF的地址/名称,一旦有被叫呼叫,则可将信令请求进行转发,同时S-CSCF还需要记录P-CSCF的网络ID。
5、 S-CSCF需要将公共用户标识,私有用户标识,S-CSCF名称通过Cx接口发送HSS。
6、 HSS存贮S-CSCF名称,并将一些包含用户名/地址或者安全的用户信息发送给S-CSCF,以便用来进行一些基于平台的服务管控。
7、 S-CSCF将存贮的用户信息发送给服务平台,并进行适合的服务管控。
8、 S-CSCF将返回200 ok消息(包含归属地接入信息,GRUU组合)给I-CSCF。
9、 如同上述,I-CSCF需要将200 ok消息(包含归属地接入信息,GRUU组合)转发给P-CSCF,在转发之后,I-CSCF需要释放存贮的相应用户注册信息。
10、 P-CSCF需要存贮归属地网络接入信息,并将200 ok消息转发给UE(含GRUU组)。
UE在收到200 ok响应之后,存贮此时的超时定时器,将P-Associated-URI header里面包含的第一个URI存储为默认的公共用户标识,这里为<sip: 8618421195023@sh.ims.mnc000.mcc460.3gppnetwork.org>,并且将之进行相应的安全关联。如果该标头域中不含该公共用户标识,则认为该标识注册被禁止。另外,UE需要变更前期的临时安全协商机制固化为新建立的安全协商机制
当收到200 ok响应后,UE需要向S-CSCF订阅注册事件包。该消息中所含的参数意义如下:
Sip Message =SUBSCRIBE sip: 8618421195023@sh.ims.mnc000.mcc460.3gppnetwork.org SIP/2.0,说明需要订阅的公共用户标识的SIP URI
f:需要包含公共用户标识,这里 8618421195023其实就是电话号码
t:内容与f一致
o:事件标头域,应设置为需要订阅的“reg”事件包
重新注册
UE需要在适当的时候发起重选注册流程,例如以周期形式刷新已有的注册信息或者响应UE注册信息的变动。另外,当承载IMS会话的IP-CAN发生了变化,UE也需要发起重新注册流程。UE重新注册流程与上述UE注册流程类似。UE需要与网络侧依据上次注册时间同步更新周期注册的定时器,只不过该定时器比网络侧的定时器略小。
1、UE需要在网络侧的周期注册定时器超时前发起重新注册流程。UE将注册信息发送给P-CSCF,其中需要含公共用户标识、私有用户标识、归属地域名、UE的IP地址、能力信息、IMEI标识、是否支持GRUU的标识。
2、当收到注册请求后,P-CSCF并不用之前缓存的归属地网络接入点信息,而是重新通过归属地网络名称去发现归属地的接入点信息(I-CSCF)。P-CSCF会将注册请求转发给I-CSCF。
后续注册流程与前述一致。
注册取消
注册取消可以有两个层面来发起,一个是UE层面,另外一个是网络层面。UE层面的注册取消流程与注册发起流程是一致的,只不过注册消息里面的超时时间设置为0秒,值得注意的注册流程里的超时时间设置为600000秒。
区别于注册流程的有以下几个步骤需要注意:
1、 在注册请求流程中将超时(expiration)值设置为0。
4、当I-CSCF发送S-CSCF寻址请求后,HSS根据该用户公共标识的注册状态,将S-CSCF名称发送给I-CSCF。
6、S-CSCF收到注册取消信令后,会将该消息转发服务控制平台,服务控制平台会将该公共用户标识订阅的相关服务信息清除。
7、根据运营商定制策略,S-CSCF会将含公共用户标识、私有用户标识、清除S-CSCF名称或者保留S-CSCF名称的Cx接口信令发送HSS。HSS根据收到的清除S-CSCF名称/保留S-CSCF名称来进行相应的S-CSCF名称保留,即使保留S-CSCF名称,后续HSS可以决定在任何时刻进行清除。
9、当S-CSCF发出200 ok响应信息给I-CSCF后,S-CSCF释放该公共用户标识所有相关的注册信息。
11、当P-CSCF发出200 ok响应信息给UE后,P-CSCF释放该公共用户标识相关的注册信息,而如果存在关于IMS信令链接状态的订阅通知,P-CSCF需要取消该订阅通知。
网络层面发起的注册取消
有些特殊情况下,例如终端没电了,或者UE移出了服务区,网络侧需要发起对用户的注册取消流程。网络侧发起注册取消流程主要是为了在这些场景下对用户后续提供稳定有保障的服务。网络侧发起的注册流程取消仅仅针对IMS子系统内,与接入网状态无关。即IMS域注册取消后,LTE网络并不一定去附着。一般,IMS子系统发起注册取消流程有如下的原因:
网络维护:解决用户重新注册带来的网络节点相关数据缺失;
网络业务:当用户漫游到其他网络而并没有在源网络进行注册取消;
应用服务:由服务能力受限导致的注册取消;
订阅管理:当用户欠费、恶意欺诈、取消订阅等等导致的网络发起的IMS注册取消。另外对于用户变更服务,也可能导致网络侧发起IMS注册取消。
诸如以上的原因,网络侧发起的注册取消可以通过两个流程触发,一个是注册超时,另外一个则是强制流程。
对于注册超时而言,P-CSCF与S-CSCF各自维护一个定时器,这两个定时器需要时间足够接近,并且彼此之间不做同步。因此,当S-CSCF定时器超时后,P-CSCF的定时器也认为超时,这样P-CSCF可以直接将UE注册取消,而不需要等待S-CSCF注册取消的指令。详见23.228.
注册取消流程可以由HSS、S-CSCF或者第三方网元(第三方网元通过HSS)发起,下图说明了由HSS(含通过HSS流程发起的第三方)发起的情况
在这里不对注册取消流程细节做详细的说明,不过需要提及值得注意的几个关键步骤。对于步骤3,S-CSCF在向P-CSCF发起注册取消流程的同时,需要内部同步该用户的注册信息。如果收到HSS关于注册取消的原因,可将原因一并转发。一般由于UE不在服务区的原因,P-CSCF在向UE发出注册取消流程后,不一定能收到UE的响应,这时,PCSCF可以不必等待该200 ok响应,直接向S-CSCF发起响应流程。
下图说明的是由S-CSCF(或第三方网元通过S-CSCF)、服务控制平台发起的注册取消流程。
于HSS发起的注册取消流程唯一不同的是,S-CSCF在接收到P-CSCF注册取消流程完成响应之后,才通过Cx接口向HSS发送注册信息清空流程。
后记:初学VoLTE,感觉IMS涉及的协议SIP、SDP不像传统电信网络协议那么标准化、规范化。有时,现网的一些实测log与协议描述又不是完全的一致;有时,由于精力的原因,光靠没有太多的背景知识,三两手边资料的个人解读很难有多深入的理解。不过,技术领域的更新换代开启的思考与领悟的旅程也许才是网优工程师最大的乐趣!
未完待续,不定期更新~
作者:
张阳,英国布鲁内尔大学(Brunel Univ.)设计与工程学院电子与计算机工程博士,高级工程师,博士阶段主要进行LTE物理层、处理优化算法研究。主要从事TD-LTE/TD-SCDMA网络优化工作。曾参加中国移动无线网络优化技术高级培训,荣获优秀学员称号。长期关注跟踪一线实际优化工作,具有丰富的理论基础及实践经验。在国内外通信期刊发表学术论文数十篇。
网优小谈 是业内原创为主的通信技术交流平台,欢迎不同意见、新观点或建议。
支持原创,分享智慧!
投稿请发至:wirelessren@163.com