分类: 系统运维
2010-04-24 12:29:31
Diameter在3G中应用的研究 | ||||||||||||||||||||||||||||||||||||||||||||||||
摘要 Diameter是一种新型的AAA协议,在3G系统中有着重要的应用。本文首先介绍了Diameter的基础协议,然后进一步分析了Diameter在3G中的具体应用,包括Diameter在HSS与其它网元交互接口上的应用,以及Diameter在IMS计费上的应用。 关键词 Diameter 3G 协议 Diameter是一种新型的AAA协议,它的提出主要是由于随着因特网和新接入技术(无线、DSL、移动IP和以太网等)的迅速发展、路由器和网络接入服务器的复杂性和密度的增加,原来的AAA协议逐渐暴露出许多缺点,因此需要一种新的AAA协议来满足所出现的各种新要求,例如故障恢复、安全传输、代理支持等。 由于Diameter协议的诸多优点,3GPP在其定义的3G系统中多处应用了该协议。Diameter在3G中的应用主要包括以下几个方面。 (1)应用在HSS与其它网元的交互接口上,包括应用在Cx接口上和应用在Sh接口上。 (2)应用在3G IMS(IP多媒体子系统)的计费交互中,包括应用在Rf接口上(离线计费)和应用在Ro接口上(在线计费)。 本文将首先介绍Diameter的基础协议,然后进一步分析Diameter在3G中的具体应用。 1、Diameter协议基础 1.1 Diameter协议概述 Diameter基本协议提供以下能力。 (1)传递属性值对(AVP,Attribute Value Pairs)。Diameter协议就是由一个头部跟随着一个个的AVP所组成的。每个AVP包含一个头部以及所封装的协议特定数据及鉴权、授权和记账信息等; (2)能力协商。 (3)错误通知。 (4)通过增加新命令和AVP所达到的可扩展性。 (5)应用所必须的基本服务,例如用户会话或记账的处理。 Diameter协议所传输的数据都采用AVP形式。这些AVP中的一些被Diameter协议自身使用,而其它一些则用来传递与用Diameter的特定应用所关联的数据。 Diameter基本协议提供了AAA协议的最小要求,基本协议自身可用于记账目的,也可与具体的Diameter应用一起使用,例如:“Diameter NASREO应用”和“移动IPv4应用”。基本协议也可通过增加新命令或AVP来扩展以用于新应用中。 Diameter客户端是一个在网络边缘执行访问控制的设备,例如网络接入服务器和外部代理。Diameter客户端生成Diameter消息以为用户请求鉴权、授权和记账服务。Diameter代理是一个不在本地鉴权或授权消息的节点,它包括直接代理(可修改或增加新的AVP)、重定向代理(对请求重定向)和中继代理(不修改任何非路由AVP)。Diameter服务器执行用户的鉴权和授权。 Diameter客户端、服务器、代理都必须支持包含记账的基本协议,此外它们还需要支持实现特定业务的相应Diameter应用。Diameter对等方之间的通信通过一方向另一方发送消息完成,消息中包含的AVP组合由特定的Diameter应用决定。另一方可以接收请求消息也通过返回一个带有结果代码指示错误发生的AVP来拒绝请求。 1.2 Diameter消息的头格式 Diametert消息的头格式如表1所示。 表1 Diametert消息的头格式
对上述各个头字段介绍如下。 (1)版本(1byte):标识Diameter版本,设置为1。 (2)消息长度(3byte):指示包含头部在内的Diameter消息长度。 (3)命令标记(1byte/8bit):8bit分别是: *R(请求):如果置1,标识消息是一个请求。如果置0,标识消息是一个应答; *P(可代理):如果置1,消息可以被代理、中继或重定向。如果置0,消息必须在本地处理; *E(错误):如果置1,消息包含一协议错误。E比特置位的消息通常被称为错误消息; *T(潜在重传消息):该标志在链路失败恢复过程之后置1,用来帮助清除充分的请求; *r(保留):保留以用于将来。 (4)命令代码(3byte):用于表示与消息关联的命令以决定为该消息所采取的相应动作。下面描述了Diameter基本协议中定义的命令码及相应命令的功能。 Abort-Session-Request(ASR,代码值274):该命令由服务器发送到正在提供会话服务的访问设备,请求该设备中止掉由命令中Session-Id AVP所标识的会话。 Abort-Session-Answer(ASA,代码值274):该命令用于响应ASR命令。 Accounting-Request(ACR,代码值271):该命令用于与对等方交互记账信息。 Accounting-Answer(ACA,代码值271):该命令用于响应ACR命令。 Capabilities-Exchange-Request(CER,代码值257):该命令用户与对方交互能力。 Capabilities-Exchange-Answer(CEA,代码值257):该命令用于响应CER。 Device-Watchdog-Request(DWR,代码值280):该命令在双方没有交互流量时发送到对方以用于传输失败检查。 Device-Watchdog-Answer(DWA,代码值280):该命令用于响应DWR。 Disconnect-Peer-Request(DPR,代码值282):该命令由发起方发送到对方以通知对方,发起方想切断当前的传输连接。 Disconnect-Peer-Answer(DPA,代码值282):该命令用于响应DPR。 Re-Auth-Request(RAR,代码值258):该命令由服务器发送到正在提供会话服务的访问设备,请求重新鉴权和/或授权用户。 Re-Auth-Answer(RAA,代码值258):该命令用于响应RAR。 Session-Termination-Request(STR,代码值275):该命令由访问设备发送到Diameter服务器以通知一个已被鉴权和/或授权的会话正在被终结。 Session-Termination-Answer(STA,代码值275):该命令用于响应STR。 (5)应用ID(4byte):用于表示该消息适用于哪个应用。 (6)逐跳标识符(4byte):用于帮助匹配请求和应答(请求和其相应应答的逐跳标识符值相同)。 (7)端到端标识符(4byte):用于检测重复消息。 (8)各种AVP。 1.3 AVP头的格式 每个AVP的头格式如表2所示。 表2 每个AVP的头格式
对上述各个头字段介绍如下。 (1)AVP代码(4byte):与厂商ID字段一起来唯一标识一个属性。代码值1~256为了保持RADIUS的后向兼容性而保留。代码值256以上用于Diameter。 (2)AVP标志(8bit):AVP标志通知接收者如果处理每个属性。“r”比特没有使用而置0。“P”比特指示端到端加密的需求。“M”比特(强制位)指示是否必须要支持该AVP。“V”比特(厂商特定位)指示“厂商-ID”字段是否出现在AVP头中。 (3)AVP长度(3byte):指示包含AVP头在内的AVP长度。 (4)厂商-ID(4byte,可选):指示厂商特定的AVP。 (5)AVP数据字段:是0或多个包含属性信息的字节。 1.4 错误处理和应答消息 Diameter中有两种不同类型的错误:协议错误和应用错误。协议错误是指发生在基本协议层的错误,可以要求每一跳予以注意(例如消息路由错误)。而应用错误一般是由于Diameter应用中规定的功能发生问题而导致的(例如用户鉴权、缺失AVP等)。 被用来报告协议错误的Result-Code(结果码)AVP只能够必须出现在其“E”比特置位的应答消息中。当所接收的一个请求消息导致协议错误时,将返回一个“E”比特置位的应答消息,并且其Result-Code AVP设置为适当的协议错误值以描述Diameter节点在其处理过程中所遇到的第一个错误。 Result-Code AVP(AVP代码为268)指示是否完成了一个特定请求或者是否发生了一个错误。所有的Diameter应答消息必须包含一个Result-Code AVP。Result-Code AVP的数据字段用32bit的地址空间来表示结果码,Diameter提供了以下类型的结果码。 (1)1XXX(信息型应答):通知请求者该请求不能够满足并且在访问被确认前需要附加的行为。 (2)2XXX(成功应答):通知对端请求已经成功完成。 (3)3XXX(协议错误应答):通知对方发生了协议错误。 (4)4XXX(暂时错误应答):通知对端当前请求不能够满足,但是将来可以满足。 (5)5XXX(永久失败应答):通知对端请求失败,并且不可重试。 2、Diameter在3G中应用 2.1 Diameter在HSS与其它网元交互接口上的应用 归属用户服务器(HSS)是3G系统中用户的主数据库,它包含了用户身份标识、名字和地址信息;用户安全信息;用户位置信息;用户属性信息与订购相关信息等。HSS采用Diameter协议与IMS中的CSCF设备(Cx接口)和AS设备(Sh接口)进行交互。呼叫会话控制功能(CSCF,Call Session Control Function)主要是完成各种IMS会话的建立、维持和拆除等各种会话控制功能;而应用服务器(AS,Application Server)主要功能是提供增值IP多媒体业务。 2.1.1 Diameter在Cx接口上的应用 Diameter在Cx接口上的应用是一个新生成的应用,为其分配的Diameter应用ID为16777216(用于命令头中),厂商ID为10415(用于AVP头中),应用主要包括3个方面。 2.1.1.1 位置管理过程 (1)用户注册状态查询。该过程用于SIP注册期间I-CSCF和HSS之间。该过程由I-CSCF发起,作用为: *用户注册的授权,检查多媒体子系统访问权限和漫游协议; *执行第一次安全检查,决定消息中发送的公共和私有身份是否属于同一用户; *获得用户注册或非注册(例如注册作为一个终结呼叫的结果或者一个S-CSCF存储者用户属性)的S-CSCF,或者S-CSCF所支持的能力列表。 该过程3GPP为其定义了操作Cx-Query和Cx-Select-Pull,其对应的Diameter命令为用户授权请求(UAR,User Authorization Request)和用户授权应答(UAA,User Authorization Answer)。这两个命令的命令代码都为300。 (2)S-CSCF注册/注销通知。该过程用于S-CSCF和HSS之间,由S-CSCF发起,用于: *为一个公共用户身份分配一个S-CSCF,或清除分配给一个或多个公共用户身份的S-CSCF的名字; *从HSS下载用于S-CSCF的相关用户信息。 该过程3GPP为其定义了操作:Cx-Put和Cx-Pull,其对应的Diameter应用命令为服务器分配请求(SAR,Server Assignment Request)和服务器分配应答。这两个命令的命令代码都为301。 (3)通过HSS完成的网络发起的注销。在通过HSS完成的网络发起的注销情况下,HSS修改公共身份的状态为未注册并且发送通知到S-CSCF以指示该身份将被注销。该过程由HSS调用,3GPP为其定义了操作:Cx-Deregister。其对应的Diameter应用命令为注册终结请求(RTR,Registration Termination Request)和注册终结应答(RTA,Registration Termination Answer)。这两个命令的命令代码都为304。 (4)用户位置查询。该过程用于I-CSCF与HSS之间以获得分配给公共标识身份的S-CSCF名称。该过程由I-CSCF为每个公共身份标识调用执行,3GPP为其定义了操作:Cx-Location-Query。该过程对应的Diameter应用命令为位置信息请求(LIR,Location Info Request)和位置信息应答(LIA,Location Info Answer)。这两个命令的命令代码都为302。 2.1.1.2 用户数据处理过程 (1)用户属性下载。作为注册过程的一部分,S-CSCF通过上面的Cx-Put响应操作获得用户数据和业务相关信息。 (2)HSS发起的用户属性升级。该过程由HSS发起以升级用户属性信息或修改S-CSCF中的信息。3GPP为其定义了操作:Cx-Update_Subscr_Data。对应的Diameter应用命令为推送属性请求(PPR,Push Profile Request)和推送属性应答(PPA,Push Profile Answer)。这两个命令的命令代码都为305。 2.1.1.3 鉴权过程 该过程用于S-CSCF和HSS之间以交互支持终端用户和归属IMS网络之间鉴权的信息。该过程由S-CSCF发起,作用如下。 (1)从HSS检索鉴权数据。 (2)解决UE和HSS中序列号之间的同步失败。 3GPP为其定义的操作包括Cx-AV-Req和Cx-AV-Req-Resp,对应的Diameter应用命令为多媒体鉴权请求(MAR,Multimedia Auth Request)和多媒体鉴权应答(MAA,Multimedia Auth Answer)。 2.1.2 Diameter在Sh接口上的应用 Diameter在Sh接口上也是一个新Diameter应用,为其分配的Diameter应用ID为16777217(用于命令头中),厂商ID为10415(用于AVP头中)。应用主要包括两个方面。 2.1.2.1 数据处理过程 (1)读取数据。该过程用于AS和HSS之间,被AS调用并用于为一个特定用户从HSS读取透明或非透明的数据。3GPP为其定义的操作为Sh-Pull,对应的Diameter应用命令为用户数据请求(UDR,User Data Request)和用户数据应答(UDA,User Data Answer)。这两个命令的命令代码都为306。 (2)数据更新。该过程用于AS和HSS之间,被AS调用并用于: *AS更新存储在HSS中的某特定IMS用户公共身份标识或公共业务身份标识的对HSS透明的数据(储藏数据); *允许AS更新HSS中公共业务身份标识的PSI激活状态。 3GPP为其定义的操作为Sh-Update,对应的Diameter应用命令为属性更新请求(PUR,Profile Update Request)和属性更新应答(PUA,Profile Update Answer)。这两个命令的命令代码都为307。 2.1.2.2 定购/通知过程 (1)对通知的定购过程。该过程用于AS和HSS之间,被AS调用以向HSS定购一个通知,用于某IMS公共用户身份标识或公共业务身份标识的透明或非透明数据变化时进行通知。3GPP为其定义的操作为Sh-Subs-Notif,对应的Diameter应用命令为定购通知请求(SNR,Subscribe Notifications Request)和定购通知应答(SNA,Subscribe Notifications Answer)。这两个命令的命令代码都为308。 (2)通知过程。该过程用于AS和HSS之间,被HSS调用并用于通知AS其先前所定购的通知发生了,即该AS所关心的透明/非透明数据发生了改变。3GPP为其定义的操作为Sh-Notif,对应的Diameter应用命令为推送通知请求(PNR,Push Notification Request)和推送通知应答(PNA,Push Notification Answer)。这两个命令的命令代码都为309。 2.2 Diameter在3G IMS计费中的应用 IMS使用Diameter协议在CCF(计费采集功能)或者ECF(事件计费功能)与IMS网络实体之间进行计费交互。 CCF与IMS网络实体之间的计费交互用于离线计费情况中,之间的接口参考点为Rf。Rf上所采用的Diameter应用为Diameter基本协议提供的记账应用并加入了一些3GPP特有的AVP。Diameter基本协议所规定的“Diameter记账应用”的应用ID为3,该应用采用的主要命令为上边介绍过的ACR和ACA命令以交互计费数据记录(CDR,Charging Data Record)信息。 而ECF与IMS网络实体之间的计费交互用于在线计费情况(基于事件的计费)中,之间的接口参考点为Ro。Ro上采用的Diameter应用为IETF RFC 4006所定义的Diameter信用控制应用并加入了一些3GPP特有的AVP。IETF RFC 4006所规定的“Diameter信用控制应用”的应用ID为4,该应用的主要命令为信用控制请求(CCR,Credit Control Request)和信用控制应答(CCA,Credit Control Answer),这两个命令的命令代码都为272。这两个命令应用在IMS在线计费中有两种情况。 (1)立即事件计费(IEC,Immediate Event Charging):通过一次CCR和CCA操作就从用户账户中扣除此次用户消费金额,完成计费。 (2)采用单位预留的事件计费(ECUR,Event Charging with Unit Reservation):该过程比较复杂,包含请求、预留、释放和返回货币单位等多次操作过程,相应货币单位的扣除在事件计费交易完成后发生。 3、小结 Diameter之所以在3G中有着非常广泛的应用,是因为Diameter有着较好的应用扩展性:可以根据3G的特定应用需求,对Diameter进行相应的应用扩展。Diameter这一显著特点决定了它在3G诸多协议中的重要地位,并且预示着Diameter的应用将越来越丰富。 |