原文来自百度文库
http://wenku.baidu.com/view/bc91976127d3240c8447efec.html?re=view
一、摘要:
Diameter协议主要为应用程序提供认证、鉴权、计费框架,即AAA,并支持本地AAA和漫游场景下的AAA。
二、介绍:
AAA协议、例如TACACS、RADIUS起初是为了提供PPP及终端接入,随着Internet及新的接入技术的发展,包括无线、DSL、移动IP,以太网路由、网络访问服务器(NAS)在复杂和密集性方面有所增强,这对AAA协议提出了新的要求。
例如,网络访问对AAA协议提出的要求总结有以下这些:
·Failover(故障转移)
RADIUS协议没有定义failover机制,因此,failover的行为随着程序的实现不同而各异,为了提供一个明确定义的failover行为,Diameter支持应用层的应答,并定义failover的西装算法和偶联状态机。
·传输层安全
RADIUS在定义了应用层的认证,但仅使用了响应包,RADEXT定义了另外的认证,但仅要求在EAP session中使用,且支持属性隐藏。RFC3162为RADIUS定义了IPsec,但对其支持并没有做要求,Diameter强制要求支持IPSec,TLS的支持可选择。
·可靠传输
RADIUS运行在UDP上,且没有定义重传行为,所有,可靠性因实现不同而各异。Diameter运行在可靠的传输层(TCP, SCTP)上。
·代理支持
RADIUS没有明确地规定支持agent,包括Proxies, Redirects, Relays。Diameter明确地定义了代理的行为。
·服务器发起消息
RADIUS中对于服务器发起消息的支持是可选的,这就使用一些如主动断链、或者重新认证或重新鉴权等特性实现困难。服务器发起消息在Diameter中强制要求支持。
·可审核性
RADIUS没有定义数据对象安全机制,结果,不受信任的代理可能修改属性或都包头,并且不会被检测出来,结合对能力协商机制的缺失,无法预期结果会发生什么。Diameter也没有定义数据对象安全机制,但支持能力协商。
·转换支持
Diameter使用的通用协议数据单元(PDU)与RADIUS不同,但支持向前兼容RADIUS,所以两种协议可以部署在同一网络中。
·能力协商
RADIUS不支持错误消息、能力协商、及表示属性强制/非强制的标志位。因此RADIUS的客户端和服务端不担心对方的能力,它们可能不会成功地协商一个相互接受的服务,或者在一些情况下,需要知道哪些服务对端已经实现,以上几点Diameter均支持。
·对端发现及配置
RADIUS要求人工配置服务端或客户端的名称或地址,相应地增加了秘密的共享,带来管理和安全上的负担。通过DNS,Diameter可以动态发现对端,并通过传输层安全来保证。
·漫游支持
RADIUS不提供对proxyr的明确支持,缺少可审核性、传输层安全,使得在漫游场景下容易引发安全问题,Diameter支持域内漫游、消息路由、可审核性、传输层安全特性,可提供可安全和可靠的漫游。
术语:
·AAA
认证、鉴权、计费
·Accounting(计费)
为能力计划制定、审计、账单、费用分配等目的而进行资源使用的信息的收集动作。
·Accounting Record (计费记录)
记录某个用户在整个会话期间资源消费的情况,
·Authentication(认证)
校验一个实体一致性的动作。
·Authorization(鉴权)
决定一个请求实体是否允许访问某项资源。
·AVP (属性值对)
Diameter消息由一个报文头后跟一个或多个Attribute-Value-Pairs(AVPs),一个AVP包含一个头用于协议细节数据(例如路由信息)。
·Broker (代理)
代理是一个用于AAA架构中的商业术语,可以是relay, proxy,或者redirect agent。
·Diameter Agent(Diameter 代理)
指一个提供relay、proxy、redirect或翻译服务的diameter结点。
·Diameter Client(Diameter 客户端)
为一个处于网络边缘的,提供访问控制的设备。如NAS。
·Diameter Node(Diameter节点)
为一个实现了diameter协议的主机进程,其行为为客户端、代理、服务端之一。
·Diameter Peer (Diameter 对端)
为一个具有直连连接的diameter节点。
·Diameter Security Exchange (diameter 安全交换)
为一个进程,两个diameter节点可以通