分享

基本步骤---Register

 哈哈777哈哈 2023-10-17 发布于安徽

与几乎所有大规模运行的通信系统一样,IMS的第一步也是注册过程。通过此过程,UA (User Agent或IMS Client)在控制中心(CSCF或IMS Server)注册。任何交流中的注册都与我们访问高安全性公司(通常是大公司)时所经历的过程非常相似。基本上,在注册过程中会进行如下对话。

i)嘿,CSCF…我想在你们的服务数据库中注册我自己

ii)好吧. .可以给我认证信息吗?(这就像是“请告诉我您的姓名和密码”?)

iii)当然,给你。

iv)谢谢你……让我检查一下我们的安全系统.....好的。你被系统接受了。

如果您查看协议序列的详细信息和消息的内容,您应该能够找到上面用公共语言提到的所有信息(参数)。实际上,从这些消息的细节和内容中,您可以了解到UA和注册中心(CSCF, Authentication center)的大部分信息。可以做很多逆向工程来解决问题。

注1:在实际生活中,作为在该领域工作的工程师,一旦看到第一条“REGISTER”消息,您就可以获得大量信息,并将这些信息用于各种故障排除情况。然而,在许多情况下,您根本不会看到第一条REGISTER消息。这是最棘手的案子……意思是“我确定有一些关键问题……但我不知道是什么问题…我甚至不知道从哪里开始进行故障排除。”在这种情况下,我建议您先参考这份检查清单。

注2:正如我提到的,你会在注册过程的消息中看到很多详细的信息,你可能会问“这些信息都来自哪里?”UA (UE)如何知道它必须在REGISTER消息中放入什么样的信息?在IMS栈实现的早期阶段(通常在开发阶段),它被存储或硬编码在文件或协议栈源代码中。但现在(在商业化阶段)它通常来自USIM或ISIM(主要来自ISIM)。如果您感兴趣,请参阅以下页面了解详细信息。

讲到这里我们必须要提一下P-CSCF discovery 

P-CSCF address

The methods for P-CSCF discovery are:

  • 当使用IPv4时,使用DHCP RFC 2132 [20F], SIP服务器的DHCPv4选项,RFC 3361 [35A]和RFC 3263 [27A]在子条款9.2.1中描述。当使用IPv6时,请使用Dynamic IPv6主机配置协议(DHCPv6) RFC 3315 [40], SIP服务器的DHCPv6选项,RFC 3319[41]和DNS RFC 3646 [56C]的DHCPv6选项,如子条款3GPP 124.229 9.2.1所述。

  • 在5GS PDU会话建立过程中传输P-CSCF地址。终端应向ePCO内的网络指示对P-CSCF地址的请求,配置选项信息元素的PDU会话建立请求消息。如果网络在PDU SESSION中为终端提供了P-CSCF IPv4或IPv6地址列表,建立ACCEPT消息时,UE应假定列表是自顶向下排序的,ePCO信息元素中的P-CSCF地址作为P-CSCF具有最高优先级的地址和ePCO内的最后一个P-CSCF地址作为具有最低优先级的P-CSCF地址。

  • UE从存储在ISIM中的列表(见3GPP TS 31.103 [15B])中选择一个P-CSCF。

  • 终端从IMS管理对象(UE侧)列表中选择P-CSCF。

     UE应使用方法4选择P-CSCF,如果

                -在本地网络中发现P-CSCF;

                - UE正在漫游

                - IMS管理对象包含P-CSCF列表

            在下列情况下,UE应使用方法3选择P-CSCF:

                -在本地网络中发现P-CSCF;

                - UE正在漫游

                - 终端不存在IMS管理对象,或者终端存在IMS管理对象但IMS管理对象不包含P-CSCF列表;和驻留在UICC中的ISIM支持P-CSCF列表

            UE可以自由选择方法1或方法2来发现P-CSCF,如果:

                 -终端在本地网络中;或

                -终端处于漫游状态,P-CSCF将在被VPLMN网络中被发现。

            UE可以选择方法4,如果:

            -终端在家庭网络中;

            - IMS管理对象包含P-CSCF列表。

如果选择方法1,并且向终端提供了多个P-CSCF地址或FQDN,则选择P-CSCF使用IPv4时,应按照RFC 3361 [35A]或RFC 3319[41]的规定执行地址或FQDN IPv6。如果没有足够的信息来选择P-CSCF地址,则由UE选择P-CSCF地址特定实现。

注意:P-CSCF是在服务网络中发现还是在本地网络中发现,由终端根据本地配置决定,例如终端上的应用是否允许使用本地break out。

如果UE被设计为使用上述1,但根据2接收P-CSCF地址(es),则UE应忽略接收到的地址,或者按照2的规定使用地址,而不按照2的规定进行DHCP请求。


下面是IMS注册的总体协议序列,我还在序列图下面列出了每个消息的一些示例。(此图中的Registra可视为CSCF)

无论IMS注册还是VoLTE建立均遵循SIP(Session Initial Protocol)协议(RFC3261)

Request-URI

呼叫请求发送地址。UA生成初始请求消息时,该域中的信息一般与TO中的地址相同,经过网络服务器后,由于实际路由问题,该值可能发生变化以,另外一个比较特殊的是REGISTER消息,在REGISTER消息中,在REQUEST-URI中将会填充注册服务器的地址(表示消息发往注册服务器),而此时TO域中的地址将会填充客户端实际的地址。

From(f)

发起请求方的地址。一般采用USERINFO@HOSTPORT形式。该域同时带有一个TAG参数,是随机产生的整数。

To(t)

接受方地址。同FROM域相同,也采用USERINFO@HOSTPORT的地址形式,当该域存在于最终响应消息中时,将会事有TAG参数。

Call-ID(i)

用于识别呼叫参数,在同一个DIALOG中,该参数不发生变化。该参数与FROM中的TAG参数、TO域中的TAG参数相结合用以保证呼叫的惟一性。

Cseq

表征TRANSACEION的参数,由于同一个呼叫中会存在多个TRANSACTION,因此通过该能数来保证同一个USERAGENT发送的不同请求消息间的顺序。

Via(v)

该参数表征呼叫经过的路径,UA生成SIP消息时,会在该域中填写自己的地址:PROXY在转发请求消息时,将会增加一个填有自己地址的VIA域,表示才叫经过本PROXY。VIA域的存在可以保证响应消息按照原路径返回到主叫方。代理服务器用它检查其内容,如果新端点已出现在via列表中,则表示有环路了。

Contact(m)

告知对端自己的地址。当对端发送下一个请求消息时,可直接向该地址发送,不需要关心前一个路由信息(除非有特定原则,例如PROXY可以通过RECORD-ROUTE域来保证下一个请求消息必须经过本PROXY,即使CONTACT域中填写对端客户的地址。

Expires

limits search time,

给出消息内容超期的时间

CONTENT-TYPE(c)

表征消息格式的参数,例如,呼叫采用了SDP进行会话描述,还是采用其他类型的会话描述协议。

下面这个例子就是处理过程

Step 1 : REGISTER --------------------------------

REGISTER sip:test.3gpp.com SIP/2.0

f: <sip:+11234567890@test.3gpp.com>;tag=2722997041

t: <sip:+11234567890@test.3gpp.com>

CSeq: 575513373 REGISTER

i: 2722997021_2363003016@2001::21f:29ff:fe7c:8f51

v: SIP/2.0/UDP [2001::21f:29ff:fe7c:8f51]:5060;branch=z9hG4bK656994275

Max-Forwards: 70

m: <sip:+11234567890@[2001::21f:29ff:fe7c:8f51]:5060>

P-Access-Network-Info: 3GPP-E-UTRAN-FDD; utran-cell-id-3gpp=3114800102FFFFFFF

l: 0

Authorization:

Digest uri="sip:test.3gpp.com",

username="001010123456789@test.3gpp.com",

response="",

realm="test.3gpp.com", 

nonce=""

Expires: 7200

注意1:确保'realm'参数匹配认证服务器域名。如果与认证服务器不匹配,CSCF可能发送“错误码”。

另一个例子:

基本上,是否执行身份验证取决于网络(CSCF)。但是,有时UE可能会尝试强制使用IPSec进行身份验证,如下面的示例所示。但是CSCF仍然可以忽略这个要求,不需要Authentication和IPSec。在这种情况下(跳过Authentication/IPSec的情况下),UE可能不会发起任何呼叫(例如VoLTE)。

REGISTER sip:test.3gpp.com SIP/2.0

f: <sip:001010123456789@ims.mnc246.mcc081.3gppnetwork.org>;tag=2922225

t: <sip:001010123456789@ims.mnc246.mcc081.3gppnetwork.org>

CSeq: 2922203 REGISTER

i: 2922206_181933240@2001:0:0:1::3

v: SIP/2.0/TCP [2001:0:0:1::3]:5060;branch=z9hG4bK3941737881

Max-Forwards: 70

m: <sip:001010123456789@[2001:0:0:1::3]:5060>;+sip.instance="<urn:gsma:imei:35425006-000655-0>";+g.3gpp.icsi-ref="urn%3Aurn-7%3A3gpp-service.ims.icsi.mmtel";+g.3gpp.smsip

Route: <sip:[2001:0:0:1::2]:5060;lr>

l: 0

Authorization:

Digest uri="sip:test.3gpp.com",

username="001010123456789@test.3gpp.com",

response="",

realm="test.3gpp.com",

nonce=""

Expires: 600000

Require: sec-agree

Proxy-Require: sec-agree

k: path,sec-agree

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=799251570; spi-s=1387593208;

port-c=8006; port-s=8906,

ipsec-3gpp; alg=hmac-md5-96; ealg=aes-cbc; spi-c=799251570; spi-s=1387593208;

port-c=8006; port-s=8906,

ipsec-3gpp; alg=hmac-md5-96; ealg=null; spi-c=799251570; spi-s=1387593208;

port-c=8006; port-s=8906,

ipsec-3gpp; alg=hmac-sha-1-96; ealg=des-ede3-cbc; spi-c=799251570; spi-s=1387593208;

port-c=8006; port-s=8906,

ipsec-3gpp; alg=hmac-sha-1-96; ealg=aes-cbc; spi-c=799251570; spi-s=1387593208;

port-c=8006; port-s=8906,

ipsec-3gpp; alg=hmac-sha-1-96; ealg=null; spi-c=799251570; spi-s=1387593208;

port-c=8006; port-s=8906

Step 2 : 401 UNAUTHORIZED  --------------------------------

SIP/2.0 401 Unauthorized

Via: SIP/2.0/UDP [2001::21f:29ff:fe7c:8f51]:5060;branch=z9hG4bK656994275

From: <sip:+11234567890@test.3gpp.com>;tag=2722997041

To: <sip:+11234567890@test.3gpp.com>;tag=T3E04A4B5

Call-ID: 2722997021_2363003016@2001::21f:29ff:fe7c:8f51

CSeq: 575513373 REGISTER

Content-Length: 0

WWW-Authenticate:

Digest realm="test.3gpp.com",

nonce="qlWqVapVqlWqVapVqlWqVUUQA5HEt9VVZ3t1TM221cg=",

qop="auth",

opaque="MTcyMjU3ODA2NDo=SU1TLVNJUCBTZXJ2ZXI=",

algorithm=AKAv1-MD5

P-Associated-URI: <sip:+11234567890@TEST.3GPP.COM>

P-Associated-URI: <tel:+11234567890>

Note 1 :此消息中的'realm'参数应该与步骤1中的'realm'参数匹配。否则,UE可能无法进行下一步操作。

Note 2 : 这里指定的'algorithm'应该是UE支持的。否则,UE可能无法进行下一步操作。

Note 3 : “nonce”承载了一种由“RAND + AUTN +服务器特定数据”组成的认证。

Note 4: “nonce”在rfc3310中的定义如下:

nonce是一个参数,它使用AKA身份验证挑战RAND、AKA AUTN令牌和一些可选的服务器特定数据的连接的Base64编码填充,如下图所示,来自RFC 3310图1。

Base64 Encoding is based on following table defined in RFC 2045 6.8.  Base64 Content-Transfer-Encoding.

Step 3 : REGISTER -----------------------------------

REGISTER sip:test.3gpp.com SIP/2.0

f: <sip:+11234567890@test.3gpp.com>;tag=2722997284

t: <sip:+11234567890@test.3gpp.com>

CSeq: 575513374 REGISTER

i: 2722997021_2363003016@2001::21f:29ff:fe7c:8f51

v: SIP/2.0/UDP [2001::21f:29ff:fe7c:8f51]:5060;branch=z9hG4bK843051065

Max-Forwards: 70

m: <sip:+11234567890@[2001::21f:29ff:fe7c:8f51]:5060>

P-Access-Network-Info: 3GPP-E-UTRAN-FDD; utran-cell-id-3gpp=3114800102FFFFFFF

l: 0

Authorization:

Digest username="001010123456789@test.3gpp.com",

realm="test.3gpp.com",

uri="sip:test.3gpp.com",

qop=auth,

nonce="qlWqVapVqlWqVapVqlWqVUUQA5HEt9VVZ3t1TM221cg=",

nc=00000001,

cnonce="11259375",

algorithm=AKAv1-MD5,

response="a3f549b13f477562f4445b7277cd83c1",

opaque="MTcyMjU3ODA2NDo=SU1TLVNJUCBTZXJ2ZXI="

Expires: 7200

Note 1 : 'realm' parameter in this message should match the 'realm' parameter in Step 2.

Note 2 : 'algorithm' parameter in this message should match the 'algorithm' parameter in Step 2.

Note 3 : 'Expires : 7200' means that the registration should be 'renewed' within 7200 seconds.

Step 4 : 200 OK -----------------------------------

SIP/2.0 200 OK

Via: SIP/2.0/UDP [2001::21f:29ff:fe7c:8f51]:5060;branch=z9hG4bK843051065

From: <sip:+11234567890@test.3gpp.com>;tag=2722997284

To: <sip:+11234567890@test.3gpp.com>;tag=T44F6AE74

Call-ID: 2722997021_2363003016@2001::21f:29ff:fe7c:8f51

CSeq: 575513374 REGISTER

Contact: <sip:+11234567890@[2001::21f:29ff:fe7c:8f51]:5060>;q=0.500;expires = 7200

Content-Length: 0

Date: Mon, 22 Apr 2013 15:43:15 GMT

Authentication-Info:

qop=auth,

rspauth="a3f549b13f477562f4445b7277cd83c1",

cnonce="11259375",

nc=00000001

P-Associated-URI: <sip:+11234567890@TEST.3GPP.COM>

P-Associated-URI: <tel:+11234567890>

P-Associated-URI:  <sip:+11234567890@TEST.3GPP.COM>

P-Associated-URI: <tel:+11234567890>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多