《diametetr协议简介》由会员分享,可在线阅读,更多相关《diametetr协议简介(5页珍藏版)》请在金锄头文库上搜索。
1、AAA 的新框架 DIAMETER 基础协议刘清 乐燕群Diameter 协议族包括基础协议(Diameter Base Protocol )和各种应用协议。本文介绍的基础协议提供了作为一个 AAA 协议的最低需求,是 Diameter 网络节点都必须实现的功能,包括节点间能力的协商、Diameter 消息的接收及转发、计费信息的实时传输等。应用协议则充分利用基础协议提供的消息传送机制,规范相关节点的功能以及其特有的消息内容,来实现应用业务的 AAA。基础协议可以作为一个计费协议单独使用,但一般情况下需与某个应用一起使用。 图 1 是 Diameter 的协议层次图。Diameter 网络节点
2、 在 Diameter 协议中,包括多种类型的 Diameter 节点。除了 Diameter 客户端和 Diameter 服务器外,还有 Diameter 中继、Diameter 代理、Diameter 重定向器和 Diameter 协议转换器。 Diameter 中继 能够从 Diameter 请求消息中提取信息,再根据 Diameter 基于域的路由表的内容决定消息发送的下一跳 Diameter 节点。Diameter 中继只对过往消息进行路由信息的修改,而不改动消息中的其他内容。 Diameter 代理 根据 Diameter 路由表的内容决定消息发送的下一跳 Diameter 节点。
3、此外,Diameter 代理能够修改消息中的相应内容。 Diameter 重定向器 不对消息进行应用层的处理,它统一处理 Diameter 消息的路由配置。当一个Diameter 节点按照配置将一个不知道如何路由的请求消息发给 Diameter 重定向器时,重定向器将根据其详尽的路由配置信息,把路由指示信息加入到请求消息的响应里,从而明确地通知该 Diameter节点的下一跳 Diameter 节点。 Diameter 协议转换器 主要用于实现 RADIUS 与 Diameter,或者 TACACS+与 Diameter 之间的协议转换。 上述各种 Diameter 节点,通过配置建立一对一的
4、网络连接,组成一个 Diameter 网络。 Diameter 网络节点间的对等连接 Diameter 节点间的网络连接是在 Diameter 节点启动过程中动态建立的基于 TCP 或者 SCTP 传输协议上的套接字连接。 对于一个 Diameter 节点,其对端节点,或者基于静态配置,或者基于动态(利用 SLP、DNS 协议)发现。当 Diameter 协议栈启动时,Diameter 节点会尝试与每一个它所得知的对端节点建立套接字连接。 在成功建立一个套接字连接,即对等连接后,两个 Diameter 节点将进行能力协商,交换协议版本、所支持的应用协议、安全模式等信息。能力协商是通过 Diam
5、eter 的能力交换请求(CER, Capabilities-Exchange-Request)和能力交换响应(CEA,Capabilities-Exchange-Answer)两个Diameter 消息的交互实现的。能力协商之后,应该把有关对端所支持的应用等信息保存在高速缓存中,这样就可以防止把对端不认识的消息和 AVP 发送给对端。 对等连接可以被正常中止,这需要一个 Diameter 节点主动发起对等连接中止请求(DPR, Disconnect-Peer-Request)消息,对端收到此消息,并回答对等连接中止应答(DPA, Disconnect-Peer-Answer)消息后,先行中止
6、底层连接。对于除此之外的对等连接的中止情况(如网络故障、一端系统故障等),在发现这类连接异常中止的一端时,要按照定时器设置,不断地尝试恢复建立对等连接。 正常的对等连接上可以传输各类 Diameter 消息,在连接空闲无消息传送超过一定时间时,对等连接两端将发送连接正常检测消息(DWR/DWA,Device-Watchdog-Request/Answer)。而一旦DWR/DWA 消息收发异常,Diameter 节点将认定对等连接故障,或者尝试恢复建立连接,或者将消息通路转换到备用的对等连接上。 Diameter 的消息格式 Diameter 消息的头部包括 20 个字节,结构如图 2 所示。头
7、 4 个字节是 8 比特的版本信息和 24 比特的消息长度(包括消息头长度)。随后的 4 个字节是 8 比特的消息标志位和 24 比特的命令代码。 命令代码用来表示这个消息所对应的命令,请求消息和相应的回答消息共享一个命令代码。 应用标识、逐跳标识和端到端标识都有 4 个字节,其中应用标识用以指示消息适用的应用,逐跳标识用于判断请求与应答的对应关系,而端到端标识主要用于重复消息的检查。 消息头部后的全部字节就是消息的具体内容,以属性值对 AVP(Attribute-Value-Pair)的形式逐个头尾衔接。AVP 的格式也是由头部和数据组成,如图 3 所示,结构为:头 4 个字节是 AVP 代
8、码,下四个字节由 8 比特的 AVP 标志和 24 比特的 AVP 长度(包括 AVP 头部长度)构成,AVP 标志用于通知接收端如何处理这个属性。 头部后的字节就是数据内容。AVP 内的数据类型,目前包括字符串、32 比特整数、64 比特整数、32 比特浮点数、64 比特浮点数,以及 AVP 组等。 Diameter 的消息处理和用户会话 Diameter 客户端与 Diameter 服务器都可以组成相应的请求消息,发送给对方。正是从这点考虑,Diameter 属于对等协议(peer to peer),而不是如 RADIUS 一样的客户/ 服务器模式的协议。 为处理用户的接入,Diamete
9、r 客户端通过 Diameter 基础协议和应用协议,与 Diameter 服务器进行一系列的信息交换,而这样一个从发起到中止的一系列信息交互,在 Diameter 协议里被称为一个用户会话(User Session)。 一般的 AAA 业务可以大致分成两类:一类包括用户的认证和授权,可能还包括计费(如移动电话业务);另一类则是仅包括对用户的计费(如目前的主叫拨号接入业务)。为此,Diameter 基础协议提供对应的两类用户会话,为上层的应用服务。 一个用户会话的建立,一般是由 Diameter 客户端发起,中间可以途径若干 Diameter 代理、重定向器或协议转换器,一直延伸到 Diame
10、ter 服务器。 用户会话的结束,完全由 Diameter 客户端决定,但服务器也可以先行发出中止用户会话请求(ASR,Abort-Session-Request),在客户端同意中止请求的情况下,会响应中止用户会话应答(ASA, Abort-Session-Answer),然后再发出用户会话结束请求,通知服务器结束用户会话;否则用户会话仍得以保持。在未得到服务器请求的情况下,客户端也可以自行给服务器发出用户会话结束请求,例如在客户端自身异常,或是用户接入异常等的情况下。 通过对用户会话的建立和结束的控制,Diameter 应用很容易实现可靠的以用户为单位的业务资源管理。 Diameter 的计
11、费 当用户被允许接入时,Diameter 客户端将根据情况产生针对用户的计费信息。这些计费信息将被封装在具体 Diameter 应用专有的 AVP 内,由 Diameter 基础协议中定义的计费请求(ACR,Accounting-Request)消息,传送给 Diameter 服务器。服务器将响应计费应答(ACA ,Accounting-Answer)消息,指示计费成功或拒绝。客户端只有在收到成功的计费响应时,才能清除已经被发送的计费记录。当收到计费拒绝指示时,客户端将中止用户接入。 Diameter 支持实时的计费,客户端通过在首次计费请求/响应交互过程中协商好的计费消息间歇时间,定时向服务
12、器发送已收集的计费信息。这种实时计费确保了对用户信用的实时检查。 Diameter 消息的安全传输 Diameter 客户端(如网络接入服务器)必须支持 Ipsec,可以支持 TLS;而 Diameter 服务器必须支持 Ipsec 和 TLS。IPsec 主要应用在网络的边缘和域内的流量,而域间的流量主要通过 TLS 来保证安全。 由于 IPsec 和 TLS 只能保证逐跳的安全,也就是一个传输连接上的安全。当消息通过 Diameter 代理时,代理会修改消息,这样通过 IPsec 或 TLS 取得的安全信息在通过代理时就丢弃了。而 Diameter CMS 应用提供了端到端的安全性。端到端的安全性是通过两个对等端点间支持 AVP 的完整性和机密性提供的。Diameter CMS 应用中采用了数字签名和加密技术来提供所要求的安全业务。 尽管是由每个对等端的安全策略决定使用端到端的安全性的场合,如当 TLS 或 IPsec 提供的传输层面上的安全性足够时,可能不需要端到端的安全性,但 Diameter 基础协议中还是强烈建议所有的Diameter 实现都支持端到端的安全性。这样 Diameter CMS 应用就有别于其他的 Diameter 应用,它一般是和 Diameter 基础协议共存的。