Diameter协议.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Diameter协议

2009-10-23 09:43

Diameter协议

Diameter协议族包括基础协议(Diameter Base Protocol)和各种应用协议。本文介绍的基础协议提供了作为一个AAA协议的最低需求,是Diameter网络节点都必须实现的功能,包括节点间能力的协商、Diameter消息的接收及转发、计费信息的实时传输等。应用协议则充分利用基础协议提供的消息传送机制,规范相关节点的功能以及其特有的消息内容,来实现应用业务的AAA。基础协议可以作为一个计费协议单独使用,但一般情况下需与某个应用一起使用。

图1是Diameter的协议层次图。

Diameter网络节点

在Diameter协议中,包括多种类型的Diameter节点。除了Diameter客户端和Diameter服务器外,还有Diameter中继、Diameter代理、Diameter重定向器和Diameter协议转换器。

● Diameter中继能够从Diameter请求消息中提取信息,再根据Diameter

基于域的路由表的内容决定消息发送的下一跳Diameter节点。Diameter中继只对过往消息进行路由信息的修改,而不改动消息中的其他内容。

● Diameter代理根据Diameter路由表的内容决定消息发送的下一跳Diameter节点。此外,Diameter代理能够修改消息中的相应内容。

● Diameter重定向器不对消息进行应用层的处理,它统一处理Diameter消息的路由配置。当一个Diameter节点按照配置将一个不知道如何路由的请求消息发给Diameter重定向器时,重定向器将根据其详尽的路由配置信息,把路由指示信息加入到请求消息的响应里,从而明确地通知该Diameter节点的下一跳Diameter节点。

● Diameter协议转换器主要用于实现RADIUS与Diameter,或者TACACS+与Diameter之间的协议转换。

上述各种Diameter节点,通过配置建立一对一的网络连接,组成一个Diameter 网络。

Diameter网络节点间的对等连接

Diameter节点间的网络连接是在Diameter节点启动过程中动态建立的基于TCP或者SCTP传输协议上的套接字连接。

对于一个Diameter节点,其对端节点,或者基于静态配置,或者基于动态(利用SLP、DNS协议)发现。当Diameter协议栈启动时,Diameter节点会尝试与每一个它所得知的对端节点建立套接字连接。

在成功建立一个套接字连接,即对等连接后,两个Diameter节点将进行能力协商,交换协议版本、所支持的应用协议、安全模式等信息。能力协商是通过Diameter的能力交换请求(CER,Capabilities-Exchange-Request)和能力交换响应(CEA,Capabilities-Exchange-Answer)两个Diameter消息的交互实现的。能力协商之后,应该把有关对端所支持的应用等信息保存在高速缓存中,这样就可以防止把对端不认识的消息和AVP发送给对端。

对等连接可以被正常中止,这需要一个Diameter节点主动发起对等连接中止请求(DPR,Disconnect-Peer-Request)消息,对端收到此消息,并回答对等连接中止应答(DPA,Disconnect-Peer-Answer)消息后,先行中止底层连接。对于除此之外的对等连接的中止情况(如网络故障、一端系统故障等),在发现这类连接异常中止的一端时,要按照定时器设置,不断地尝试恢复建立对等连接。

正常的对等连接上可以传输各类Diameter消息,在连接空闲无消息传送超过一定时间时,对等连接两端将发送连接正常检测消息(DWR/DWA,

Device-Watchdog-Request/Answer)。而一旦DWR/DWA消息收发异常,Diameter 节点将认定对等连接故障,或者尝试恢复建立连接,或者将消息通路转换到备用的对等连接上。

Diameter的消息格式

Diameter消息的头部包括20个字节,结构如图2所示。头4个字节是8比特的版本信息和24比特的消息长度(包括消息头长度)。随后的4个字节是8比特的消息标志位和24比特的命令代码。

命令代码用来表示这个消息所对应的命令,请求消息和相应的回答消息共享一个命令代码。

应用标识、逐跳标识和端到端标识都有4个字节,其中应用标识用以指示消息适用的应用,逐跳标识用于判断请求与应答的对应关系,而端到端标识主要用于重复消息的检查。

消息头部后的全部字节就是消息的具体内容,以属性值对AVP

(Attribute-Value-Pair)的形式逐个头尾衔接。AVP的格式也是由头部和数据组成,如图3所示,结构为:头4个字节是AVP代码,下四个字节由8比特的AVP标志和24比特的AVP长度(包括AVP头部长度)构成,AVP标志用于通知接收端如何处理这个属性。

头部后的字节就是数据内容。AVP内的数据类型,目前包括字符串、32比特整数、64比特整数、32比特浮点数、64比特浮点数,以及AVP组等。

Diameter的消息处理和用户会话

Diameter客户端与Diameter服务器都可以组成相应的请求消息,发送给对方。正是从这点考虑,Diameter属于对等协议(peer to peer),而不是如RADIUS 一样的客户/服务器模式的协议。

为处理用户的接入,Diameter客户端通过Diameter基础协议和应用协议,与Diameter服务器进行一系列的信息交换,而这样一个从发起到中止的一系列信息交互,在Diameter协议里被称为一个用户会话(User Session)。

一般的AAA业务可以大致分成两类:一类包括用户的认证和授权,可能还包括计费(如移动电话业务);另一类则是仅包括对用户的计费(如目前的主叫拨号接入业务)。为此,Diameter基础协议提供对应的两类用户会话,为上层的应用服务。

一个用户会话的建立,一般是由Diameter客户端发起,中间可以途径若干Diameter代理、重定向器或协议转换器,一直延伸到Diameter服务器。

用户会话的结束,完全由Diameter客户端决定,但服务器也可以先行发出中止用户会话请求(ASR,Abort-Session-Request),在客户端同意中止请求的情况下,会响应中止用户会话应答(ASA,Abort-Session-Answer),然后再发出用户会话结束请求,通知服务器结束用户会话;否则用户会话仍得以保持。在未得到服务器请求的情况下,客户端也可以自行给服务器发出用户会话结束请求,例如在客户端自身异常,或是用户接入异常等的情况下。

通过对用户会话的建立和结束的控制,Diameter应用很容易实现可靠的以用户为单位的业务资源管理。

Diameter的计费

当用户被允许接入时,Diameter客户端将根据情况产生针对用户的计费信息。这些计费信息将被封装在具体Diameter应用专有的AVP内,由Diameter基础协议中定义的计费请求(ACR,Accounting-Request)消息,传送给Diameter 服务器。服务器将响应计费应答(ACA,Accounting-Answer)消息,指示计费成功或拒绝。客户端只有在收到成功的计费响应时,才能清除已经被发送的计费记录。当收到计费拒绝指示时,客户端将中止用户接入。

Diameter支持实时的计费,客户端通过在首次计费请求/响应交互过程中协商好的计费消息间歇时间,定时向服务器发送已收集的计费信息。这种实时计费确保了对用户信用的实时检查。

Diameter消息的安全传输

Diameter客户端(如网络接入服务器)必须支持Ipsec,可以支持TLS;而Diameter服务器必须支持Ipsec和TLS。IPsec主要应用在网络的边缘和域内

相关文档
最新文档