Diameter协议及其在IMS中的应用

本文作者:admin       点击: 2006-12-12 00:00
前言:
IP多媒体子系统 —— IMS由3G移动联盟提出后,在网络融合的发展趋势下,很快成为电信多媒体业务的发展方向。本文首先介绍了Diameter协议的基本概念和基本结构,再结合具体实例介绍了IMS的参考点、Diameter协议在IMS中的应用。


Diameter协议介绍

● 简介
Diameter系列协议是IETF开发的新一代AAA协议。AAA即Authentication(认证)、Authorization(授权)、Accounting(计费)。Authentication(认证)用以对用户身份进行确认;Authorization(授权) 用以确定用户是否被授权使用某种网络资源;Accounting(计费)用以监测用户使用网络资源的状况,可依照检测的记录对用户收费。

● Diameter协议的特点
以前的AAA协议如RADIUS、TACACS主要是针对PPP服务和终端服务而设计的。随着网络技术的发展,新的接入方式如无线接入、DSL接入、移动IP陆续出现,以太网也不断发展,AAA中的网络访问服务器(NAS)自身也逐渐变得越来越复杂。这些发展变化,对AAA协议提出了新的要求。原有的AAA协议已经不能充分满足这些要求,而新一代AAA协议-Diameter协议却可以满足这些需求,主要包括如下几个方面:
(1) 良好的故障切换机制。Diameter协议支持应用层的信息确认和失效检测机制。
(2) 传输层安全。Diameter协议通过IPsec和TLS保证传输的安全性,其中TLS对于客户端来讲是可选的。
(3) 可靠的传输。Diameter协议通过TCP或SCTP提供可靠的传输。
(4) 支持各种类型的代理,包括中继代理、重定向代理、Proxy代理、协议转换代理。
(5) 支持服务器发起消息。例如服务器可以发消息要求客户端重新认证。
(6) 保持与现有网络AAA协议(如RADIUS)的兼容性。
(7) 支持节点间的能力协商机制。
(8) 支持对等端自主发现和配置机制。
(9) 支持漫游。Diameter协议定义了域间漫游、消息路由及安全传输,能够提供安全漫游服务。

● Diameter协议的框架结构
Diameter协议包含IP传送、安全协议、Diameter基础协议以及不同的应用协议。Diameter基础协议为各种应用协议提供一个基本框架,它定义了协议的传输机制、消息格式、消息处理、差错处理、计费与安全服务等。应用协议依赖基础协议提供针对某一应用的AAA服务,它是不断发展变化的。IETF已经确定了一些应用协议的标准,而其它的应用协议的标准尚在制定的过程中。已被确定为协议标准的应用有:移动IP应用协议(MIPv4)、网络访问服务应用协议(NAS或NASREQ)、信用控制应用协议(Credit-Control)、扩展认证应用协议(EAP)等。尚在讨论和制定的标准有:SIP应用协议等。
图1是Diameter协议结构的示意图。
如前所述,Diameter协议通过TCP或SCTP提供可靠的传输,通过Ipsec和TLS来保证传输的安全性。Diameter在基础协议的基础上提供各种应用服务。

● Diameter协议的消息格式
Diameter基础协议定义了Diameter协议的消息格式:
Diameter消息的头部包括20个字节。头4个字节包括8比特的版本信息(目前是1)和24比特的消息长度(包含头部的长度)。
随后的4个字节包括8比特的消息标志位和24比特的命令代码。消息标志位有R、P、E、T。R为1或0分别表示请求(Request)和应答(Answer);P表示本消息是否允许被代理处理、被转发或重定向;E表示是否为消息错误;T表示本消息是重发的消息。r为保留的标志位。
命令代码用来表示这个消息所对应的命令(其中0至255保留给RADIUS后向兼容),基础协议定义了如下几个基本的命令代码:
而Diameter应用协议会根据需要添加必要的命令代码,例如NAS应用协议定义了下面的命令代码:
再举例来说,3GPP(R5)向IANA(网络地址分配机构)申请保留了300~313的命令代码,用于3G的应用,目前已经定义了如下的命令用于Cx/Dx/Sh/Dh接口(目前这些命令尚未被现有的IETF的Diameter协议所定义):
随后的12个字节分别为应用标识、逐跳标识和端到端标识,其中应用标识用以指示消息所适用的应用:
逐跳标识用于帮助匹配请求与响应的对应关系,例如I-CSCF发UAR消息向HSS查询应选择哪个S-CSCF,HSS发UAA回应查询请求;UAR和UAA的逐跳标识是相同的。
端到端标识主要用于重复消息的检查。 
消息头部之后为属性值对(AVP),一个消息中可以包括多个AVP。AVP中包含了认证、授权、计费、消息的路由和安全等信息。

● AVP的格式
图3为AVP的格式:
V标志位表示本AVP有无Vendor-ID字段。若V标志位为1,则需要Vendor-ID不能为0。若V标志位为0,则表示没有Vendor-ID。
M标志位表示本AVP是否是强制性的。如果收到M为1的AVP,若Diameter客户端或服务器端或代理不能识别此AVP或AVP的值,必须丢弃此AVP。
P标志位表示本AVP是否需要端对端安全加密。
若V标志位为0,则AVP code使用的是IANA组织定义的AVP code值。基本协议中定义了一些基本的AVP Code和数据(Data)的类型。其中AVP Code 1至255用于与原有Radius协议兼容。各个应用协议也根据应用的不同分别定义了相应的AVP Code以及Data类型。由于AVP Code较多,这里不一一列举,仅举二例:
Vendor-ID为厂商的标识,例如3GPP组织的Vendor-ID为10415。若Vendor-ID不为0,则厂商可以定义自己的AVP code和Data类型。这里也仅举3GPP在TS29.229中定义的AVP的两个例子:

Diameter协议在IMS中的应用

● 参考点(reference point,interface)
下一代多媒体融合业务是通信市场的发展趋势,3GPP定义了IMS(IP Multimedia Subsystem,IP多媒体子系统)标准,实现IP多媒体业务的建立、维护及管理等功能。在3GPP IMS的体系结构中,各个实体之间信息的交换可以依照某些参考点(接口)来实现。3GPP IMS定义了许多参考点,但下面几个参考点是借用Diameter协议来实现的:Cx、Sh、Dx、Dh、Rf、Ro等,如图4所示。
这些参考点的定义以及与Diameter协议的对应关系,可以参见3GPP的有关标准,如TS32.225、TS 29.228、TS29.229、TS29.329等。例如Cx命令与Diameter命令的对应关系如表7所示:
这里将这些参考点实现的功能描述如下:
Cx参考点是CSCF(Call Session Control Function,会话控制功能模块)和HSS(Home Subscriber Server,用户数据库)之间的接口,用于用户认证、用户注册、位置查询、用户配置文件查询和更新等。
Dx参考点是CSCF 和SLF(Subscription Locator Function,用户位置服务)之间的接口。当一个运营上的网络中存在多个HSS时,CSCF可以查询SLF以获得与某个用户保持签约的HSS的地址。Dx通常与Cx一起使用。
Sh参考点,其主要功能在于提供HSS和AS(应用服务器)以及HSS和OSA-SCS(OSA接口的业务能力服务器)之间的接口。AS(或OSA-SCS)通过Sh接口与HSS交换用户信息,为用户提供各类业务。
Dh参考点是AS与SLF(用户位置服务)之间的接口,AS通过Dh接口获取用户的位置信息。Dh通常与Sh一同使用。
Cx、Sh、Dx、Dh主要是通过Diameter基本协议、SIP应用协议和3GPP补充的Diameter协议来实现的。
Ro和Rf参考点分别是在线和离线计费的接口。IMS体系中有多个实体间利用到这两个接口,实体间的关系也比较复杂,所以也没有在图4中列出。Ro通过Diameter信用控制应用协议和3GPP补充的Diameter协议实现的;Rf则通过Diameter基本协议和3GPP补充的Diameter协议实现。

● 应用实例
下面以用户注册为例,简单描述一下Diameter协议在IMS网络中的应用。
如下的图5为一个用户首次注册的流程图:
在图5中,HSS不但作为归属域的用户数据服务器,还作为Diameter服务器,为用户提供AAA服务。
用户注册所依照的参考点为Cx(HSS与CSCF之间的参考点),用户注册过程中所涉及的Diameter命令在图5中为浅色标识的命令。可以依照上面表7知道Diameter命令所对应的Cx命令。
如下为用户成功注册的过程描述:
1. 用户终端向P-CSCF发SIP Register消息请求注册,但注册消息中没包含完整的认证(Authorization)的信息;
2. P-CSCF查询DNS服务器获取归属域的I-CSCF的IP地址;
3. P-CSCF将SIP Register消息转发给归属域的I-CSCF;
4. 归属域的I-CSCF收到Register请求后,发UAR消息向HSS查询用户的注册状态(或者说查询S-CSCF);
5. HSS发UAA回应查询请求;对于已经注册的用户则回应用户已经注册在哪个S-CSCF;对于没有注册的用户,返回S-CSCF能力集,I-CSCF会根据这个能力集选择一个具备这种能力的S-CSCF并把注册请求转发给它。
6. 归属域的I-CSCF将Register消息转发给查询到的归属域的S-CSCF;
7. S-CSCF发MAR到HSS,查询如何认证;
8. HSS回应MAA,MAA包含认证有关信息;
9. S-CSCF根据收到的MAA包含的认证信息,对本次注册进行判断,认为注册失败(由于注册消息中没包含完整的认证信息),需要用户终端重发包含认证的注册信息;
10. S-CSCF回SIP 401(认证失败)给I-CSCF,401中包含了认证所需的信息,如随机数(nonce)、算法等;
11. I-CSCF再把401转发给P-CSCF,P-CSCF再转发给用户终端;
12. 用户终端重新向P-CSCF发SIP Register消息请求注册,消息包含了认证有关信息,如随机数(nonce)及其response等;
13. 重复以上2到6部后,S-CSCF认为本次收到的注册信息有效,用户注册成功;
14. S-CSCF向HSS发送SAR,要求更新此用户的S-CSCF信息;
15. HSS回应SAA,表示此用户的S-CSCF的信息更新成功,SAA还包含用户的配置文件(userdata);
16. S-CSCF向I-CSCF发200,表示注册成功;I-CSCF再将200转发给P-CSCF,P-CSCF再转发给用户终端,用户成功注册。

● Diameter消息实例
下面以UAR消息为例,熟悉一下Diameter消息的格式。如下是一个UAR消息的十六进制的原始代码:
01000140 c000012c 01000000 4f8cdca1 c3be982e 00000107 4000003f 69637366
2d737464 6e2e696d 73677270 2d303030 2e696d73 2e637463 2e636f6d 3b323337
34303434 37323b32 33373430 34343732 3a303000 00000104 40000020 0000010a
4000000c 000028af 00000102 4000000c 01000000 00000115 4000000c 00000001
00000108 40000028 69637366 2d737464 6e2e696d 73677270 2d303030 2e696d73
2e637463 2e636f6d 00000128 40000013 696d732e 6374632e 636f6d00 0000011b
40000013 494d532e 4354432e 434f4d00 00000001 40000008 00000259 c0000029
000028af 7369703a 2b383631 30383838 38323030 3140696d 732e6374 632e636f
6d000000 00000258 c0000017 000028af 696d732e 6374632e 636f6d00 00000125
40000011 4354435f 4843462d 34000000 0000026f c0000010 000028af 00000000
解释此Diameter消息如下:
01000140:版本为1,长度为320(0x000140)字节。
c000012c:本消息是请求(Request)消息,可以被代理处理、可以被转发、重定向;本消息的命令代码为UAR(300,0x00012c)。
01000000:应用标识为16777216(见表4)。
4f8cdca1 c3be982e:逐跳标识和端到端标识。
随后为多个属性值对(AVP),现在只列举两个具有代表性的AVP:
第一个AVP如下(AVP Code由Diameter基本协议定义):
00000107 4000003f 69637366 2d737464 6e2e696d 73677270 2d303030 2e696d73 2e637463 2e636f6d 3b323337 34303434 37323b32 33373430 34343732 3a303000:
AVP命令是Session-Id(263,0x00000107),Vendor标志位为0(此AVP不包含Vendor-ID),AVP长度为63(0x00003f)。之后的为数据部分,表示:icsf-stdn.imsgrp-000.ims.ctc.com;237404472;237404472:00。最后的00为补足32比特而加上的。
再一个AVP如下(AVP由3GPP TS29.229定义):
00000258 c0000017 000028af 696d732e 6374632e 636f6d00:
AVP命令是Visited-Network-Identifier(600,0x00000258),Vendor标志位为1(此AVP包含Vendor-ID),AVP长度为23(0x000017),Vendor-ID为10415(0x000028af)。之后为数据部分,表示:ims.ctc.com。
上面的Diameter消息的完整解释如下:
Message:
version (1B) = 0x01 - 1
requestFlag (1b) = 1
proxyableFlag (1b) = 1
errorFlag (1b) = 0
retransFlag (1b) = 0
cmdCode (3B) = 0x00012c - 300
appIdType (4B) = 0x01000000 - 16777216
hopByHopId (4B) = 0x4f8cdca1 - 1334631585
endToEndId (4B) = 0xc3be982e - 3284047918
Command UserAuthorizationRequest:
AVP SessionId 1/1 = icsf-stdn.imsgrp-000.ims.ctc.com;237404472;237404472:00
AVP VendorSpecificApplicationId 1/1
AVP VendorId 1/1 = 0x000028af - 10415
AVP AuthApplicationId 1/1 = 0x01000000 - 16777216
AVP AuthSessionState 1/1 = 0x00000001 - 1 - NoStateMaintained
AVP OriginHost 1/1 = icsf-stdn.imsgrp-000.ims.ctc.com
AVP OriginRealm 1/1 = ims.ctc.com
AVP DestinationRealm 1/1 = IMS.CTC.COM
AVP UserName 1/1 = 
AVP PublicIdentity 1/1 = sip:+861088882001@ims.ctc.com
AVP VisitedNetworkIdentifier 1/1 = ims.ctc.com
AVP DestinationHost 1/1 = CTC_HCF-4
AVP UserAuthorizationType 1/1 = 0x00000000 - 0 - Registratio