与几乎所有大规模运行的通信系统一样,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:
-在本地网络中发现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)。
下面这个例子就是处理过程 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> |
|