通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索
查看: 7812|回复: 0
打印

SIP注册流程 [复制链接]

军衔等级:

  新兵

注册:2017-6-27
跳转到指定楼层
1#
发表于 2017-8-29 17:23:11 |只看该作者 |倒序浏览
1    注册信令流程
   IMS子系统中,只存在一种信令流程控制协议,就是Session Initiation Protocol,简称SIP协议。该信令不仅存在于UEP-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会话的的几个关键信令流程进行说明:
3.1注册
       如同4G网络需要开机或者outof service一段时间后进行注册附着流程一样,IMS子系统的用户同样需要进行在S-CSCF的注册,该IMS注册流程可以在4G网络完成注册分配到了IP地址之后进行。从注册信息流的意义来看,用户总是位于漫游状态发起的,换句话讲,就是注册流程对于用户位于VPLMN或者HPLMN网络都是一样的,不区分漫游或非漫游用户


       当UE在接入网完成附着获得IP分配后,就可以开始进行IMS域的注册流程。UE首先将注册信息发送给P-CSCF(当然之前需要进行借助DHCP/DNS服务器进行P-CSCF的“发现”流程),该注册流程需要包含公共用户标识,私有用户标识,归属地网络域名称,UE分配的IP地址,UE实例标识,是否支持GRUU的指示。
msg_body :1660[0x067c] numbers
{
    string:
    REGISTER sip:ims.mnc000.mcc460.3gppnetwork.org SIP/2.0
    From: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>;tag=18574210
    To: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>
    CSeq: 18574160 REGISTER
    Call-ID: 18574170_89848752@2409:8804:8008:0221:ED03:4F38:FD15:691A
Via:  SIP/2.0/UDP [2409:8804:8008:0221:ED03:4F38:FD15:691A]:5060;branch=
z9hG4bK1224071993;rport
    Max-Forwards: 70
    Contact: <sip:460001941570410@[2409:8804:8008:0221:ED03:4F38:FD15:691A]:5060;transport=udp>;reg-id=1
      ;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";+g.3gpp.smsip;audio;video;+sip.instanc
      e="<urn:gsma:imei:86244801-118173-0>"
    Content-Length: 0
    Authorization: Digest uri="sip:ims.mnc000.mcc460.3gppnetwork.org",username="460001941570410@ims.mnc0
      00.mcc460.3gppnetwork.org",response="",realm="ims.mnc000.mcc460.3gppnetwork.org",nonce=""
    Expires: 600000
    Require: sec-agree
    Proxy-Require: sec-agree
    Supported: path
    Allow: INVITE,BYE,CANCEL,ACK,NOTIFY,UPDATE,REFER,PRACK,INFO,MESSAGE,OPTIONS
    Security-Client: ipsec-3gpp; alg=hmac-md5-96; ealg=des-ede3-cbc; spi-c=2074885713; spi-s=2536038770;
       port-c=8006; port-s=8902,ipsec-3gpp; alg=hmac-md5-96; ealg=aes-cbc; spi-c=2074885713; spi-s=2536038
      770; port-c=8006; port-s=8902,ipsec-3gpp; alg=hmac-md5-96; ealg=null; spi-c=2074885713; spi-s=253603
      8770; port-c=8006; port-s=8902,ipsec-3gpp; alg=hmac-sha-1-96; ealg=des-ede3-cbc; spi-c=2074885713; s
      pi-s=2536038770; port-c=8006; port-s=8902,ipsec-3gpp; alg=hmac-sha-1-96; ealg=aes-cbc; spi-c=2074885
      713; spi-s=2536038770; port-c=8006; port-s=8902,ipsec-3gpp; alg=hmac-sha-1-96; ealg=null; spi-c=2074
      885713; spi-s=2536038770; port-c=8006; port-s=8902
这里:
Sip Message = REGISTER sip:ims.mnc002.mcc460.3gppnetwork.org SIP/2.0这条消息就是Request-URI,主要标识位置服务的域名,Request-URI并不提供用户名。
From(f)与To(t)标头域包含的就是临时公共用户标识(值得注意的是,460001941570410@ims.mnc000.mcc460.3gppnetwork.org就是私有用户标识),一般来讲,如果不是第三方设备发起注册,这两个标头域的内容往往保持一致,其中含的内容就是UE的IMSI信息,这里就是460001941570410;
       Cseq是用来区分和作为事务的顺序使用的。他由一个方法(method)和一系列
的顺序号码组成。方法(method)必须和请求的方法一致。对于对话外的非REGISTER
请求来说,顺序号码可以是任意的:
Call ID是对一组往返消息进行标识,在该UE的每个注册过程,Call-ID一般对于同一用户的多次注册流程都保持一致,同时对于同一用户的不同会话要求有可能不同,例如,某次多媒体会议通话期间,对同一个用户的邀请可能分配多个不同的Call ID,Call ID需要保持全球唯一(例如SIP Call ID,可采用IMEI填充),并且为了安全目的可以采取适当的加密机制;
Via(v)里面的信息主要说明传输层的协议信息,例如这里传输层使用的协议就是TCP协议。同时,还需含SIP 2.0,标识着发送请求的协议名称以及协议版本,另外,Via里还需要插入响应发送的地址。这里还要包含branch参数,除了CANCEL和ACK消息之外,该参数值是唯一的,且前7位一定是z9hG4bK(RFC3261),该参数的主要作用是标识SIP请求所创建的交互(UE与IMS网络之间);
Max-Forwards该值决定request消息在IMS内部传递到目标服务器所需经历的最大条数,为了确保消息顺利到达,同时兼顾由于内部循环导致的跳转资源被过度消耗,该值一般设置为70,每一条以-1的方式进行计算,直到0为止,将反馈483(too many hops)的错误响应;
Authorization鉴权标头域中所含的内容也有详细的规定,例如username中含有的就是用户私有标识,realm所含的是VPLMN网络域名,uri所含的就是VPLMN域名的SIP URI格式,nonce中设置应为空;Security-Client标头域指明了UE所支持的信令面的安全机制、IP层的安全机制算法,同时还有安全协商所需要的参数。UE需要支持建立两对安全协商机制。
{
    string:
    SIP/2.0 401 Unauthorized
    Via: SIP/2.0/UDP [2409:8804:8008:0221:ED03:4F38:FD15:691A]:5060;branch=z9hG4bK1224071993;rport=5060
    Call-ID: 18574170_89848752@2409:8804:8008:0221:ED03:4F38:FD15:691A
    From: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>;tag=18574210
    To: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>;tag=07b35pob
    CSeq: 18574160 REGISTER
    WWW-Authenticate: Digest realm="ims.mnc000.mcc460.3gppnetwork.org",nonce="OqybQBPaFiJ1+fsbR6/n0PhPPj
      IcTwAA6x1XCRcdN6o=",algorithm=AKAv1-MD5
    Security-Server: ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=null;spi-c=2849198130;spi-s=3989
      488496;port-c=9950;port-s=9900
    Content-Length: 0
当UE收到来自网络401(Unauthorized)的响应的时候,说明网络需要对UE进行鉴权。其中最重要的一点,UE需要校验Security-Server标头域所含的内容,如果该项内容未出现的在响应消息里或者没有包含安全协商所需要的相关参数,UE可以丢弃这次的鉴权过程,另起炉灶的以新的call-ID发送新的注册请求。当校验通过后,UE需要根据P-CSCF要求和本身能力支持的鉴权算法同时结合IK和CK加密算法建立临时的安全协商机制,并规定该临时安全机制的有效时长。接下来,UE使用临时安全协商机制再次发送注册请求到P-CSCF受保护端口(通过401 chanllenge获取)。
msg_body :1960[0x07a8] numbers
{
    string:
    REGISTER sip:ims.mnc000.mcc460.3gppnetwork.org SIP/2.0
    From: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>;tag=18577620
    To: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>
    CSeq: 18576041 REGISTER
    Call-ID: 18576040_89788848@2409:8804:8008:0221:ED03:4F38:FD15:691A
    Via: SIP/2.0/UDP [2409:8804:8008:0221:ED03:4F38:FD15:691A]:8903;branch=z9hG4bK259290541
    Max-Forwards: 70
    Contact: <sip:460001941570410@[2409:8804:8008:0221:ED03:4F38:FD15:691A]:8903;transport=udp>;reg-id=1
      ;video;audio;+g.3gpp.smsip;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";+sip.instanc
      e="<urn:gsma:imei:86244801-118173-0>"
    P-Access-Network-Info: 3GPP-E-UTRAN-TDD; utran-cell-id-3gpp=4600018c301b1d42b
    Security-Verify: ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=null;spi-c=2276748031;spi-s=4228
      397944;port-c=9950;port-s=9900
    Content-Length: 0
    Authorization: Digest username="460001941570410@ims.mnc000.mcc460.3gppnetwork.org",realm="ims.mnc000
      .mcc460.3gppnetwork.org",uri="sip:ims.mnc000.mcc460.3gppnetwork.org",nonce="PRF9AFedukZ8JyDkjwgdwG/T
      hNPQMAAAY2w8/CNx6T0=",algorithm=AKAv1-MD5,response="1a7b0c21caf1cc5449823a8******948786"
    Expires: 600000
    Require: sec-agree
    Proxy-Require: sec-agree
    Supported: path
    Allow: INVITE,BYE,CANCEL,ACK,NOTIFY,UPDATE,REFER,PRACK,INFO,MESSAGE,OPTIONS
    Security-Client: ipsec-3gpp; alg=hmac-md5-96; ealg=des-ede3-cbc; spi-c=2905084537; spi-s=2064190285;
       port-c=8007; port-s=8903,ipsec-3gpp; alg=hmac-md5-96; ealg=aes-cbc; spi-c=2905084537; spi-s=2064190
      285; port-c=8007; port-s=8903,ipsec-3gpp; alg=hmac-md5-96; ealg=null; spi-c=2905084537; spi-s=206419
      0285; port-c=8007; port-s=8903,ipsec-3gpp; alg=hmac-sha-1-96; ealg=des-ede3-cbc; spi-c=2905084537; s
      pi-s=2064190285; port-c=8007; port-s=8903,ipsec-3gpp; alg=hmac-sha-1-96; ealg=aes-cbc; spi-c=2905084
      537; spi-s=2064190285; port-c=8007; port-s=8903,ipsec-3gpp; alg=hmac-sha-1-96; ealg=null; spi-c=2905
      084537; spi-s=2064190285; port-c=8007; port-s=8903
除了初始未鉴权保护的注册请求中的相关参数,本次注册请求中还应包括如下参数:
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=4600018c301b1d42b;
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组)。
{
    SIP/2.0 200 OK
    Via:SIP/2.0/UDP [2409:8804:8008:0221:ED03:4F38:FD15:691A]:8903;branch=z9hG4bK259290541
    Call-ID: 18576040_89788848@2409:8804:8008:0221:ED03:4F38:FD15:691A
    From: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>;tag=18577620
    To: <sip:460001941570410@ims.mnc000.mcc460.3gppnetwork.org>;tag=x4544bc9
    CSeq: 18576041 REGISTER
    Accept-Resource-Priority: wps.4
    P-Associated-URI: <sip:+8613651944608@sh.ims.mnc000.mcc460.3gppnetwork.org>,<tel:+8613651944608>
    Contact: <sip:460001941570410@[2409:8804:8008:0221:ED03:4F38:FD15:691A]:8903;transport=udp>;expires=
      3600;reg-id=1;video;audio;+g.3gpp.smsip;+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel"
      ;+sip.instance="<urn:gsma:imei:86244801-118173-0>"
    Path: <sip:[2409:8014:8201:0010:0000:0000:0000:0009]:9900;lr>
    Content-Length: 0
UE在收到200 ok响应之后,存贮此时的超时定时器,将P-Associated-URI header里面包含的第一个URI存储为默认的公共用户标识,并且将之进行相应的安全关联。如果该标头域中不含该公共用户标识,则认为该标识注册被禁止。另外,UE需要变更前期的临时安全协商机制固化为新建立的安全协商机制.
msg_body :897[0x0381] numbers
{
    string:
    CSeq: 18578250 SUBSCRIBE
    Call-ID: 18578250_89841584@2409:8804:8008:0221:ED03:4F38:FD15:691A
    Via: SIP/2.0/UDP [2409:8804:8008:0221:ED03:4F38:FD15:691A]:8903;branch=z9hG4bK153716323
    Max-Forwards: 70
    Contact: <sip:+8613651944608@[2409:8804:8008:0221:ED03:4F38:FD15:691A]:8903;transport=udp>
    P-Access-Network-Info: 3GPP-E-UTRAN-TDD; utran-cell-id-3gpp=4600018c301b1d42b
    Security-Verify: ipsec-3gpp;alg=hmac-md5-96;prot=esp;mod=trans;ealg=null;spi-c=2276748031;spi-s=4228
      397944;port-c=9950;port-s=9900
    Event: reg
    Content-Length: 0
    Require: sec-agree
    Proxy-Require: sec-agree
    Expires: 600000
    P-Preferred-Identity: <sip:+8613651944608@sh.ims.mnc000.mcc460.3gppnetwork.org>
       当收到200 ok响应后,UE需要向S-CSCF订阅注册事件包。该消息中所含的参数意义如下:
Sip Message =SUBSCRIBE sip:+8618421195023@sh.ims.mnc000.mcc460.3gppnetwork.org SIP/2.0,说明需要订阅的公共用户标识的SIP URI
from:需要包含公共用户标识,这里+8618421195023其实就是电话号码
tto:内容与f一致
Event:事件标头域,应设置为需要订阅的“reg”事件包

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

版规|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2025-8-11 16:30 , Processed in 0.388531 second(s), 17 queries , Gzip On.

Copyright © 1999-2025 C114 All Rights Reserved

Discuz Licensed

回顶部