电信网设计的基本架构思想是将控制面与业务面进行分离,例如在LTE核心网中,MME被设计用来进行信令层面的处理,而SGW/PGW则被设计用来对业务层面进行处理。IMS的核心网功能实现也存在类似的思想,就是IMS域的控制面(信令面)与业务面。对于信令的处理可以在以上介绍的网元中实现,如P-CSCF、I-CSCF、S-CSCF、BGCF等,对于媒体业务的处理主要位于应用服务器中(AS),MRF(含MRFC和MRFP)的主要功能是媒体流的处理以及提供相应的媒体资源,例如音频编码转换、媒体业务分析、多媒体放音等等。 标识
任何信令的交互首先涉及的是寻址或者基于用户、订阅业务的标识,例如电信网络中有IMSI、TMSI、P-TMSI、RNTI(RA-RNTI、P-RNTI、C-RNTI、SPS-RNTI)、GUTI等等常用的用户或者业务标识,在IMS域中同样存在类似的标识,主要有如下三种,Private User Identities、 Public UserIdentities, Globally Routable User Agent URI(GRUU)。 Private User Identities:
该标识最大的特点不是区分用户,而是标识用户不同的订阅业务。因此,对于每个用户而言,都可以包含一个或者几个这样的私有用户标识,该标识并不被用来进行SIP消息的路由寻址,而是被用来进行注册、鉴权、管理和统计。私有标识由归属地网络运营商进行分配,遵循Network Access Identifier(网络访问标识)的格式,如果没有ISIM应用,通常该私有标识会从IMSI标识中继承。通常,该私有标识的格式为用户名@域,如果从IMSI中继承,则变成了”@ims.mnc.mcc.3gppnetwork.org”。除此之外,私有用户标识不是动态标识,而是对于该用户订阅业务的永久性标识,并且在归属地网络中对于该订阅业务始终有效。在IMS域注册/去注册阶段,该私有标识需要被鉴权,HSS与S-CSCF需要存储该私有标识一边区分用户信息
Public User Identities
公共用户标识在IMS子系统内被用来进行用户间的通信。公共用户标识可以被任何用户使用,这就好比名片一样,是一种通用的载体格式。公共用户标识遵循SIP URI或者Tel URI的格式,例如,当遵循SIP URI格式时,应表示为”sip:username@domain;如果遵循电信URI格式,则应表示为”tel:+,详见IETF RFC 3966。一个用户可以包含一个或者多个公共用户标识,换言之,仅仅获得公共用户标识无法与用户进行映射。对于ISIM应用,至少需要安全的存储一个公共用户标识,但并不要求存贮该用户其他的公共用户标识。对于拥有同一化名的一组公共用户标识的操作,有点类似“一荣俱荣”,也就是需要对组内的公共用户标识进行同样的操作,这样的公共用户标识组需要分别被存储在HSS、AS(应用服务器)、S-CSCF
以及UE中。在IMS主叫或者被叫会话流程中,公共用户标识需要提前被显式或隐式的注册,值得注意的是,在注册过程中,公共用户标识并不需要被鉴权。单从格式来讲,私有用户标识更像电信网中的IMSI,而公共用户标识则更像电信网中的电话号码或者计算机网络中的用户名,这也说明在注册过程中为什么只对私有用户标识进行鉴权,而仅仅是将公共用户标识作为通信的对象。
Globally Routable UserAgent URI(GRUU)
全局路由用户代理用户资源标识,顾名思义,该标识天生就是为了路由寻址而生的,之前提到,一个用户可能有多个公共用户标识,而且同一个公共用户标识也可以被多个用户使用,那么在寻址路由的时候仅仅依靠公共用户标识就可能产生误判(forking)。因此需要将该公共标识与特定的用户实体进行结合,因此这就是GRUU.GRUU分两种,公共GRUU、临时GRUU,前者映射公共用户标识,而后者只在IMS域注册状态下存在,与公共用户标识无关。公共GRUU与临时GRUU由IMS核心网在用户注册时对用户进行分配,SIP信令就是通过GRUU进行特定用户之间的寻址路由。
2 注册信令流程
对于一个网络工程师而言,解读电信网络的信令是分析定位网络问题的有效手段之一。所谓兵马未动,粮草先行,网络信令就是先于业务流程的“粮草”,当信令流程先打通时,才能保障后续业务流程的通畅与质量。网络信令不仅是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需要支持建立两对安全协商机制。