Diameter协议

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主要应用在网络的边缘和域内的流量,而域间的流量主要通过TLS来保证安全。
由于IPsec和TLS只能保证逐跳的安全,也就是一个传输连接上的安全。当消息通过Diameter代理时,代理会修改消息,这样通过IPsec或TLS取得的安全信息在通过代理时就丢弃了。而Diameter CMS应用提供了端到端的安全性。端到端的安全性是通过两个对等端点间支持AVP的完整性和机密性提供的。Diameter CMS应用中采用了数字签名和加密技术来提供所要求的安全业务。
尽管是由每个对等端的安全策略决定使用端到端的安全性的场合,如当TLS或IPsec提供的传输层面上的安全性足够时,可能不需要端到端的安全性,但Diameter基础协议中还是强烈建议所有的Diameter实现都支持端到端的安全性。这样Diameter CMS应用就有别于其他的Diameter应用,它一般是和Diameter基础协议共存的。







Radius
开放式系统的认证有以下几种需求:
安全性:认证机制必须足够安全,不致成为攻击的薄弱环节。
可靠性:认证服务是其他服务的基础,它的可靠性决定整个系统的可靠性。
透明性:用户应该感受不到认证服务的存在。
可扩展性:当和不支持认证机制的系统通信时,应该保持一切不受影响。
一般而言,认证的机制分为两类:简单认证机制和强认证机制。简单的认证中只有名字和口令被服务系统校验。由于明文的密码在网上传输极容易被窃fdf听截取,一般的解决办法是使用一次性口令(OTP,One-Time Password)机制。这种机制的最大优势是无须在网上传输用户的真实口令,并且由于具有一次性的特点,可以有效防止重放攻击(Replay Attack)。根据一次性口令生成机制的不同,通常OTP可分为:时间同步的安全标志符,Challenge-Response的Crypto Card(密码卡)和增强的S/Key(安全密钥)等。RADIUS协议就是属于这种类型的认证协议;强认证机制一般将运用多种加密手段来保护认证过程中相互交换的信息,其中,Kerberos协议是此类认证协议中比较完善、较具优势的协议,得到了广泛的应用。
下面讨论几种常用的身份认证机制,并对它们的安全性进行分析。
RADIUS认证机制
RADIUS(Remote Authentication Dial In User Service)协议最初是由Livingston公司提出的,原先的目的是为拨号用户进行认证和计费。后来经过多次改进,形成了一项通用的认证计费协议。RADIUS认证要用到基于挑战/应答(Challenge/Response)的认证方式。
RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。
RADIUS的基本工作原理是用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account-Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
RADIUS服务器和NAS服务器通过UDP协议进行通信,RADIUS服务器的1812端口负责认证,1813端口负责计费工作。采用UDP的基本考虑是因为NAS和RADIUS服务器大多在同一个局域网中,使用UDP更加快捷方便。
RADIUS协议还规定了重传机制。如果NAS向某个RADIUS服务器提交请求没有收到返回信息,那么可以要求备份RADIUS服务器重传。由于有多个备份RADIUS服务器,因此NAS进行重传的时候,可以采用轮询的方法。如果备份RADIUS服务器的密钥和以前RADIUS服务器的密钥不同,则需要重新进行认证。
RADIUS协议应用范围很广,包括普通电话、上网业务计费,对VPN的支持可以使不同的拨入服务器的用户具有不同权限。
目前使用最多的是FreeRadius+Mysql来架设Radius服务器
FreeRadius: http://www.freeradius.org   不过这个是支持Linux的





一代的AAA协议——Diameter
2008-05-21 02:41
新一代的AAA协议——Diameter
[文章导读]
在Diameter协议的MIP应用中一个用户终端如何完成一次完整的认证。最后指出在未来移动通信网逐渐向全IP过渡的情况下,Diameter协议必将得到广泛的应用。

[正文]

  摘 要 本文首先介绍了鉴别,授权,计费协议的概念,并指出其在移动通信系统中的地位和作用。接着分析了目前最常用的认证计费协议——RADIUS,分析了该协议的优点和缺陷。针对RADIUS的不足之处,本文引入了它的升级版本——Diameter协议。在全面介绍Diameter协议的基础上,重点描述了在Diameter协议的MIP应用中一个用户终端如何完成一次完整的认证。最后指出在未来移动通信网逐渐向全IP过渡的情况下,Diameter协议必将得到广泛的应用。
  关键词 鉴别 授权 计费 移动通信 Radius Diameter 移动IP
  1 AAA简介
  AAA指的是Authentication(鉴别),Authorization(授权),Accounting(计费)。自网络诞生以来,认证、授权以及计费体制(AAA)就成为其运营的基础。网络中各类资源的使用,需要由认证、授权和计费进行管理。而AAA的发展与变迁自始至终都吸引着营运商的目光。对于一个商业系统来说,鉴别是至关重要的,只有确认了用户的身份,才能知道所提供的服务应该向谁收费,同时也能防止非法用户(黑客)对网络进行破坏。在确认用户身份后,根据用户开户时所申请的服务类别,系统可以授予客户相应的权限。最后,在用户使用系统资源时,需要有相应的设备来统计用户所对资源的占用情况,据此向客户收取相应的费用。
  其中,鉴别(Authentication)指用户在使用网络系统中的资源时对用户身份的确认。这一过程,通过与用户的交互获得身份信息(诸如用户名—口令组合、生物特征获得等),然后提交给认证服务器;后者对身份信息与存储在数据库里的用户信息进行核对处理,然后根据处理结果确认用户身份是否正确。例如,GSM移动通信系统能够识别其网络内网络终端设备的标志和用户标志。授权(Authorization)网络系统授权用户以特定的方式使用其资源,这一过程指定了被认证的用户在接入网络后能够使用的业务和拥有的权限,如授予的IP地址等。仍以GSM移动通信系统为例,认证通过的合法用户,其业务权限(是否开通国际电话主叫业务等)则是用户和运营商在事前已经协议确立的。计费(Accounting)网络系统收集、记录用户对网络资源的使用,以便向用户收取资源使用费用,或者用于审计等目的。以互联网接入业务供应商ISP为例,用户的网络接入使用情况可以按流量或者时间被准确记录下来。
  认证、授权和计费一起实现了网络系统对特定用户的网络资源使用情况的准确记录。这样既在一定程度上有效地保障了合法用户的权益,又能有效地保障网络系统安全可靠地运行。考虑到不同网络融合以及互联网本身的发展,迫切需要新一代的基于IP的AAA技术。因此出现了Diameter协议。
  2 AAA在移动通信系统中的应用
  在移动通信系统中,用户要访问网络资源,首先要进行用户的入网认证,这样用户才能访问网络资源。鉴别的过程就是验证用户身份的合法性;鉴别完成后,才能对用户访问网络资源进行授权,并对用户访问网络资源进行计费管理。一般来讲,鉴别过程由三个实体来完成的。用户(Client)、认证器(Authenticator)、AAA服务器(Authentication 、Authorization和Accounting Server)。在第三代移动通信系统的早期版本中,用户也称为MN(移动节点),Authenticator在NAS(Network Access Server)中实现,它们之间采用PPP协议,认证器和AAA服务器之间采用AAA协议(以前的方式采用远程访问拨号用户服务RADIUS(Remote Access Dial up User Service);Raduis英文原意为半径,原先的目的是为拨号用户进行鉴别和计费。后来经过多次改进,形成了一项通用的鉴别计费协议)。
  RADIUS是一种C/S结构的协议,它的客户端最初就是NAS(Net Access Server)服务器,现在任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端。RADIUS协议认证机制灵活,可以采用PAP、CHAP或者Unix登录认证等多种方式。RADIUS是一种可扩展的协议,它进行的全部工作都是基于Attribute-Length-Value的向量进行的。RADIUS的基本工作原理是:用户接入NAS,NAS向RADIUS服务器使用Access-Require数据包提交用户信息,包括用户名、密码等相关信息,其中用户密码是经过MD5加密的,双方使用共享密钥,这个密钥不经过网络传播;RADIUS服务器对用户名和密码的合法性进行检验,必要时可以提出一个Challenge,要求进一步对用户认证,也可以对NAS进行类似的认证;如果合法,给NAS返回Access-Accept数据包,允许用户进行下一步工作,否则返回Access-Reject数据包,拒绝用户访问;如果允许访问,NAS向RADIUS服务器提出计费请求Account-Require,RADIUS服务器响应Account-Accept,对用户的计费开始,同时用户可以进行自己的相关操作。
  RADIUS是目前最常用的认证计费协议之一,它简单安全,易于管理,扩展性好,所以得到广泛应用。但是由于协议本身的缺陷,比如基于UDP的传输、简单的丢包机制、没有关于重传的规定和集中式计费服务,都使得它不太适应当前网络的发展,需要进一步改进。
  随着新的接入技术的引入(如无线接入、DSL、移动IP和以太网)和接入网络的快速扩容,越来越复杂的路由器和接入服务器大量投入使用,对AAA协议提出了新的要求,使得传统的RADIUS结构的缺点日益明显。目前,3G网络正逐步向全IP网络演进,不仅在核心网络使用支持IP的网络实体,在接入网络也使用基于IP的技术,而且移动终端也成为可激活的IP客户端。如在WCDMA当前规划的R6版本就新增以下特性:UTRAN和CN传输增强;无线接口增强;多媒体广播和多播(MBMS);数字权限管理(DRM);WLAN-UMTS互通;优先业务;通用用户信息(GUP);网络共享;不同网络间的互通等。在这样的网络中,移动IP将被广泛使用。支持移动IP的终端可以在注册的家乡网络中移动,或漫游到其他运营商的网络。当终端要接入到网络,并使用运营商提供的各项业务时,就需要严格的AAA过程。AAA服务器要对移动终端进行认证,授权允许用户使用的业务,并收集用户使用资源的情况,以产生计费信息。这就需要采用新一代的AAA协议——Diameter。此外,在IEEE的无线局域网协议802.16e的建议草案中,网络参考模型里也包含了鉴别和授权服务器ASA Server,以支持移动台在不同基站之间的切换。可见,在未来移动通信系统中,AAA服务器占据了很重要的位置。
  经过讨论,IETF的AAA工作组同意将Diameter协议作为下一代的AAA协议标准。Diameter(为直径,意为着Diameter协议是RADIUS协议的升级版本)协议包括基本协议,NAS(网络接入服务)协议,EAP(可扩展鉴别)协议,MIP(移动IP)协议,CMS(密码消息语法)协议等。Diameter协议支持移动IP、NAS请求和移动代理的认证、授权和计费工作,协议的实现和RADIUS类似,也是采用AVP,属性值对(采用Attribute-Length-Value三元组形式)来实现,但是其中详细规定了错误处理, failover机制,采用TCP协议,支持分布式计费,克服了RADIUS的许多缺点,是最适合未来移动通信系统的AAA协议。




AAA协议Diameter和RADIUS比较总结
2009-10-23 09:45
今天就把两种主要的AAA协议Diameter和RADIUS进行比较总结,如下:
(1) RADIUS固有的C/S模式限制了它的进一步发展。Diameter采用了peer-to-peer模式,peer的任何一端都可以发送消息以发起计费等功能或中断连接。

(2) 可靠的传输机制。RADIUS运行在UDP协议上,并且没有定义重传机制,而Diameter运行在可靠的传输协议TCP、SCTP之上。Diameter 还支持窗口机制,每个会话方可以动态调整自己的接收窗口,以免发送超出对方处理能力的请求。

(3) 失败恢复机制。RADIUS协议不支持失败恢复机制,而Diameter支持应用层确认,并且定义了失败恢复算法和相关的状态机,能够立即检测出传输错误。

(4) 大的属性数据空间。Diameter采用AVP(Attribute Value Pair)来传输用户的认证和授权信息、交换用以计费的资源使用信息、中继代理和重定向 Diameter 消息等。网络的复杂化使Diameter 消息所要携带的信息越来越多,因此属性空间一定要足够大,才能满足未来大型复杂网络的需要。

(5) 支持同步的大量用户的接入请求。随着网络规模的不断扩大,AAA 服务器需要同时处理的用户请求的数量不断增加,这就要求网络接入服务器能够保存大量等待认证结果的用户的接入信息,而RADIUS 的255 个同步请求显然是不够的,Diameter 可以同时支持 232 个用户的接入请求。

(6) 服务器初始化消息。由于在RADIUS中服务器不能主动发起消息,只有客户能发出重认证请求,所以服务器不能根据需要重新认证。而Diameter指定了两种消息类型,重认证请求和重认证应答消息,使得服务器可以随时根据需要主动发起重认证。

(7) Diameter还支持认证和授权分离,重授权可以随时根据需求进行。而RADIUS中认证与授权必须是成对出现的。

(8) RADIUS仅仅在应用层上定义了一定的安全机制,但没有涉及到数据的机密性。Diameter要求必须支持IPsec以保证数据的机密性和完整性。

(9) RADIUS没有明确的代理概念,RADIUS服务器同时具有proxy服务器和前端服务器的功能。Diameter加入代理来承担RADIUS服务器的proxy功能
摘自VOIP之路

猜你喜欢

转载自cneagle.iteye.com/blog/603246