
Diameter协议学习笔记一.doc
22页Diameter协议学习笔记一(协议介绍) 一、摘要: Diameter协议主要为应用程序提供认证、鉴权、计费框架,即AAA,并支持本地AAA和漫游场景下的AAA二、介绍: AAA协议、例如TACACS、RADIUS起初是为了提供PPP及终端接入,随着Internet及新的接入技术的发展,包括无线、DSL、移动IP,以太网路由、网络访问服务器(NAS)在复杂和密集性方面有所增强,这对AAA协议提出了新的要求 例如,网络访问对AAA协议提出的要求总结有以下这些:· Failover(故障转移) RADIUS协议没有定义failover机制,因此,failover的行为随着程序的实现不同而各异,为了提供一个明确定义的failover行为,Diameter支持应用层的应答,并定义failover的西装算法和偶联状态机· 传输层安全 RADIUS在定义了应用层的认证,但仅使用了响应包,RADEXT定义了另外的认证,但仅要求在EAPsession中使用,且支持属性隐藏RFC3162为RADIUS定义了IPsec,但对其支持并没有做要求,Diameter强制要求支持IPSec,TLS的支持可选择。
· 可靠传输 RADIUS运行在UDP上,且没有定义重传行为,所有,可靠性因实现不同而各异Diameter运行在可靠的传输层(TCP,SCTP)上· 代理支持 RADIUS没有明确地规定支持agent,包括Proxies,Redirects,RelaysDiameter明确地定义了代理的行为· 服务器发起消息 RADIUS中对于服务器发起消息的支持是可选的,这就使用一些如主动断链、或者重新认证或重新鉴权等特性实现困难服务器发起消息在Diameter中强制要求支持· 可审核性 RADIUS没有定义数据对象安全机制,结果,不受信任的代理可能修改属性或都包头,并且不会被检测出来,结合对能力协商机制的缺失,无法预期结果会发生什么Diameter也没有定义数据对象安全机制,但支持能力协商· 转换支持 Diameter使用的通用协议数据单元(PDU)与RADIUS不同,但支持向前兼容RADIUS,所以两种协议可以部署在同一网络中· 能力协商 RADIUS不支持错误消息、能力协商、及表示属性强制/非强制的标志位因此RADIUS的客户端和服务端不担心对方的能力,它们可能不会成功地协商一个相互接受的服务,或者在一些情况下,需要知道哪些服务对端已经实现,以上几点Diameter均支持。
· 对端发现及配置 RADIUS要求人工配置服务端或客户端的名称或地址,相应地增加了秘密的共享,带来管理和安全上的负担通过DNS,Diameter可以动态发现对端,并通过传输层安全来保证· 漫游支持 RADIUS不提供对proxyr的明确支持,缺少可审核性、传输层安全,使得在漫游场景下容易引发安全问题,Diameter支持域内漫游、消息路由、可审核性、传输层安全特性,可提供可安全和可靠的漫游术语:· AAA 认证、鉴权、计费· Accounting(计费) 为能力计划制定、审计、账单、费用分配等目的而进行资源使用的信息的收集动作· AccountingRecord(计费记录) 记录某个用户在整个会话期间资源消费的情况,· Authentication(认证) 校验一个实体一致性的动作· Authorization(鉴权) 决定一个请求实体是否允许访问某项资源· AVP(属性值对) Diameter消息由一个报文头后跟一个或多个Attribute-Value-Pairs(AVPs),一个AVP包含一个头用于协议细节数据(例如路由信息)· Broker(代理) 代理是一个用于AAA架构中的商业术语,可以是relay,proxy,或者redirectagent。
· DiameterAgent(Diameter代理) 指一个提供relay、proxy、redirect或翻译服务的diameter结点· DiameterClient(Diameter客户端) 为一个处于网络边缘的,提供访问控制的设备如NAS· DiameterNode(Diameter节点) 为一个实现了diameter协议的主机进程,其行为为客户端、代理、服务端之一· DiameterPeer(Diameter对端) 为一个具有直连连接的diameter节点· DiameterSecurityExchange(diameter安全交换) 为一个进程,两个diameter节点可以通过它建立端到端的安全· DiameterServer(diameter服务端) 用于处理指定域中认证、鉴权、计费请求· End-to-EndSecurity(端到端安全) TLS和IPSec提供逐跳的安全,当relays或proxy很复杂时,逐跳的安全不能保证全部的diameter用户会话,端到端安全为两个diameter节点间的安全,或者Agent间的,这种安全保证了整个dimeter传送路径上的安全。
· HomeRealm(归属域) 为一个维护帐户关系的管理域· Interimaccounting(临时计费) 一个临时计费消息提供一个用户会话的使用快照,通常为一个用户会话在设备重启或者网络问题出现时提供部分的计费· LocalRealm(本地域) 一个提供服务的管理域· Multi-Sessin(多会话) 一个多会话表示多个会话的逻辑连接,多会话使用Acct-Multi-Session-Id来跟踪· NetworkAccessIdentifier(网络接入标识) 即NAI,用来在diameter协议中提取一个用户的标识及域用于在认证中识别用户,域用来消息路由· ProxyAgentorProxy(代理) 除传输请求和响应外,代理制定与资源有关的策略,通常用来完成NAS设备状态的跟踪,代理在收到一个服务端的响应前不会对客户端的请求进行应答当策略被违反时,它们可能会生成一个拒绝消息因此,代理需要理解通过它们传输的消息的语义,它们可能不支持所有的diameter应用· Realm(域) 在NAI中跟在@符号之后的字符串,NAI的域要求为唯一的,且为DNS域的分段,用于判断消息是否满足本地处理的条件,或者被路由或重定向。
· Real-timeAccounting(实时计费) 它包含在一个限定的时间窗内处理资源使用的信息,时间限制通常用来限制风险· RelayAgentorRelay(中继代理或转播) 转播请求和响应基于路由相关的AVPs和路由表,中继不会制定策略,他们不会检查或更改非路由AVPs,因此,中继从不产生消息,不需要理解消息的语义或者非路由AVPs,可能会处理八种diameter应用或消息类型,因此,中继依据路由和域来做决定,并且不保存NAS资源使用的状态或会话· RedirectAgent(重定向代理) 与其在客户端和服务端间传递消息,重定向代理涉及客户端和服务端,并允许它们直接通信,所以重定向代理不出现在传输路径中,它们从不修改客户端和服务端传输的任何AVPs,也不产生消息,可以处理任何消息类型,尽管它们可能仅配置为重定向特定类型的消息,与Proxy代理相比,重定向代理不保存会话或NAS资源相关的状态· SecurityAssociation(安全偶联) 一个安全的偶联是指两个端点之间的diameter会话,此会话允许端点完整且可信地通信,包括中继和/或Proxy· Session(会话) 会话是指一个事件相关的活动。
每个应用应该为会话的开始和结束提供指导,所有具有相同会话标识的diameter包被认为同一个会话的一部分· Sub-session(子会话) 一个子会话表示一个明确的服务(例如Qos),这些服务可能同时或连续发生(例如同时产生的语音和同一会话中传输的数据)此类会话由Accounting-Sub-Session-Id来跟踪· Transactionstate(传输状态) Diameter协议要求代理来维护传输状态,用于failover传输状态暗指一个请求,逐跳标识被保存,且原来存储对应应答接收时的初始值字段被本地唯一标识符替代,当拒绝一个应答时请求的状态被释放· TranslationAgent(传输代理) 是指为一个具有状态的dimaeter节点,用于在diameter和其它的AAA协议(如RADIUS)间进行翻译· TranslationConnection(传输连接) 一个传输连接是指直接存在于两个diameter对端间的TCP或SCTP连接,或者说端到端连接· Upstream(上行) 用来标识一个特定的diameter消息从接入设备到归属服务器的传送方向· User(用户)· 产生请求或使用某些资源的实体,支持diameter客户端产生一个请求。
链接和会话的区别: 链接为传输层概念,会话为应用层的概念,通过AVPSession-Id来标识,两者之前没有联系如下图: +--------+ +-------+ +--------+ |Client| |Relay| |Server| +--------+ +-------+ +--------+ <----------> <----------> peerconnectionA peerconnectionB <-----------------------------> Usersessionx Figure1:Diameterconnectionsandsessions· 对端表 用于消息传递和路由表全使用,包括以下信息:1. Host标识:包括Origin-HostAVP,在CER/CEA消息中使用。
2. StatusT:对端实体的状态3. StaticorDynamic:指对端是静态配置的还是动态发现4. Expirationtime:指使用动态发现机制时刷新超时的时长5. TLSEnablee:与对端通信时是否使用TLS· 基于域名的路由表1. 域名:用于查找路由表时使用的主键2. 应用程序标识:使用一个Vendorid和一个applicaiontid标识,其为路由表的第二主键3. LocalAction:决定消息如何处理,有以下几个选项: LOCAL:本地处理,不需要路由到下一个服务器 RELAY:路由到下一跳,注意不修改任何非路由的AVP PROXY:路由到下一跳,注意可能会在消息中添加新的AVP REDIRECT:具有一个源diameter服务器的标识,且将消息返回给发送者4. 服务器标识:必须出现在对端表中,当LocalAction为RELAY或PROXY时,此字段标识消息被路由到的地址,当为REDIRECT时,表示消息应该重定。
