IMS注册流程解析

有关IMS Registration详细流程,可查找网络上相关的文档资料。下图源自3GPP TS 24.228,以便后续问题说明:

1)初始注册(Initial Registration)和二次注册(Subsequent Registration)消息是属于不同的事务(transaction),但属于同一个对话(Dialog)吗?

这是从IMS Registration流程中抓取的log:1~4分别对应上图中的step 4, step 10, step 15, 和step 21。

  根据RFC3261的定义,SIP消息中的Call-ID, From-tag, 和To-tag三个参数唯一确定一个对话。下图是这4个消息对应的SIP header内容以及比较(做了脱密处理):

  • 初始注册(Initial Registration)和二次注册(Subsequent Registration)消息中Call-ID是相同的。
  • CSeq号不同。
  • SBC产生的Via头中branch ID不同。
  • From-tag相同,但To-tag不同。

由上可知:

> 初始注册(Initial Registration)请求和“401 Unauthorized”响应是一个事务,而二次注册(Subsequent Registration)请求和“200 OK”响应构成另外一个事务:CSeq和branch ID的不同佐证了此点。

> 初始注册(Initial Registration)和二次注册(Subsequent Registration)也是属于不同的对话(Dialog):CSCF的响应中返回了不同的To-tag 。(注:实现方法各异,有的SBC产品可能也会产生不同的From-tag。)换个角度来说,二次注册的Request消息中也不带To-tag,没有重用初始注册时返回的To-tag,也说明了这点。

注:按照RFC 3261,严格意义上来说REGISTER流程不会建立Dialog,不看作是对话。

 

2)初始注册和二次注册流程中I-CSCF查询HSS时,返回的Diameter UAA消息中S-CSCF信息不同:

 流程图中step 5,UAA消息中返回AVP Server-Capabilities,即S-CSCF的能力集;之后I-CSCF根据自身的配置,先进行S-CSCF的选择。

流程图中step 16,UAA消息中返回AVP Server-Name,即处理当前IMS用户注册的S-CSCF主机名;之后I-CSCF可能查询DNS直接获得S-CSCF的IP地址。

原因在于step 7中当S-CSCF向HSS进行鉴权时,HSS会记录下用户IMSI/IMPU和S-CSCF的绑定关系。

 

3)如何区分Initial Register和Re-Register(重注册)消息?

> 初始注册的Authorization域中相关的认证参数值是空的,如Nonce和Respnse,而重注册消息中携带上次注册成功返回的相关参数值。

> 重注册消息中Route域是初始注册成功时返回分配的service-route值。

 

4) 用户注册有效期expire参数:

用户UAC端有两种方法指示本次注册的有效期:一是SIP Message Header中的<Expires>域,另一个是<Contact>域中参数expires:

contact参数expires是针对对应的Contact,而<Expires>域是针对这次注册的所有Contact:当两个参数都存在时,以contact参数expires为准,不含expires参数的Contact则使用<Expires>的值。

posted @ 2024-12-08 08:46  bjtime  阅读(32)  评论(0编辑  收藏  举报