Diameter协议学习笔记一_第1页
Diameter协议学习笔记一_第2页
Diameter协议学习笔记一_第3页
Diameter协议学习笔记一_第4页
Diameter协议学习笔记一_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Diameter 协议学习笔记一 ( 协议介绍 ) 一、摘要: Diameter 协议主要为应用程序提供认证、鉴权、计费框架,即 AAA ,并支持本 地 AAA 和漫游场景下的 AAA 。 二、介绍: AAA 协议、例如 TACACS 、 RADIUS 起初是为了提供 PPP 及终端接入,随着 Internet 及新的接入技术的发展,包括无线、 DSL 、移动 IP, 以太网路由、网络访 问服务器( NAS )在复杂和密集性方面有所增强,这对 AAA 协议提出了新的要 求。 例如,网络访问对 AAA 协议提出的要求总结有以下这些: Failover (故障转移) RADIUS 协议没有定义 f

2、ailover 机制,因此, failover 的行为随着程序的实现不同 而各异,为了提供一个明确定义的 failover 行为, Diameter 支持应用层的应答,并 定义 failover 的西装算法和偶联状态机。 传输层安全 RADIUS 在定义了应用层的认证,但仅使用了响应包, RADEXT 定义了另外的认 证,但仅要求在 EAP session 中使用,且支持属性隐藏。 RFC3162 为 RADIUS 定 义了 IPsec ,但对其支持并没有做要求, Diameter 强制要求支持 IPSec,TLS 的支 持可选择。 可靠传输 RADIUS 运行在 UDP 上,且没有定义重传行

3、为,所有,可靠性因实现不同而各 异。 Diameter 运行在可靠的传输层( TCP, SCTP )上。 代理支持 RADIUS 没有明确地规定支持 agent ,包括 Proxies, Redirects, Relays 。 Diameter 明确地定义了代理的行为。 服务器发起消息 RADIUS 中对于服务器发起消息的支持是可选的,这就使用一些如主动断链、或 者重新认证或重新鉴权等特性实现困难。服务器发起消息在 Diameter 中强制要求 支持。 可审核性 RADIUS 没有定义数据对象安全机制,结果,不受信任的代理可能修改属性或都 包头,并且不会被检测出来,结合对能力协商机制的缺失,无

4、法预期结果会发生什 么。 Diameter 也没有定义数据对象安全机制,但支持能力协商。 转换支持 Diameter 使用的通用协议数据单元 (PDU)与 RADIUS 不同,但支持向前兼容 RADIUS, 所以两种协议可以部署在同一网络中。 能力协商 RADIUS 不支持错误消息、能力协商、及表示属性强制 / 非强制的标志位。因此 RADIUS 的客户端和服务端不担心对方的能力,它们可能不会成功地协商一个相互 接受的服务,或者在一些情况下,需要知道哪些服务对端已经实现,以上几点 Diameter 均支持。 对端发现及配置 RADIUS 要求人工配置服务端或客户端的名称或地址,相应地增加了秘密

5、的共 享,带来管理和安全上的负担。通过 DNS , Diameter 可以动态发现对端,并通过 传输层安全来保证。 漫游支持 RADIUS 不提供对 proxyr 的明确支持,缺少可审核性、传输层安全,使得在漫游 场景下容易引发安全问题, Diameter 支持域内漫游、消息路由、可审核性、传输 层安全特性,可提供可安全和可靠的漫游。 术语: AAA 认证、鉴权、计费 Accounting (计费) 为能力计划制定、审计、账单、费用分配等目的而进行资源使用的信息的收集动 作。 Accounting Record ( 计费记录 ) 记录某个用户在整个会话期间资源消费的情况, Authentica

6、tion( 认证 ) 校验一个实体一致性的动作。 Authorization( 鉴权 ) 决定一个请求实体是否允许访问某项资源。 AVP (属性值对 ) Diameter 消息由一个报文头后跟一个或多个 Attribute-Value-Pairs(AVPs), 一个 AVP 包含一个头用于协议细节数据(例如路由信息)。 Broker ( 代理 ) 代理是一个用于 AAA 架构中的商业术语,可以是 relay, proxy, 或者 redirect agent 。 Diameter Agent(Diameter 代理 ) 指一个提供 relay 、proxy 、 redirect 或翻译服务的

7、diameter 结点。 Diameter Client(Diameter 客户端 ) 为一个处于网络边缘的,提供访问控制的设备。如 NAS 。 Diameter Node ( Diameter 节点) 为一个实现了 diameter 协议的主机进程,其行为为客户端、代理、服务端之一。 Diameter Peer (Diameter 对端 ) 为一个具有直连连接的 diameter 节点 Diameter Security Exchange (diameter 安全交换 ) 为一个进程,两个 diameter 节点可以通过它建立端到端的安全。 Diameter Server(diameter

8、服务端 ) 用于处理指定域中认证、鉴权、计费请求。 End-to-End Security ( 端到端安全 ) TLS 和 IPSec 提供逐跳的安全,当 relays 或 proxy 很复杂时,逐跳的安全不能保 证全部的 diameter 用户会话,端到端安全为两个 diameter 节点间的安全,或者 Agent 间的,这种安全保证了整个 dimeter 传送路径上的安全。 Home Realm (归属域) 为一个维护帐户关系的管理域。 Interim accounting( 临时计费 ) 一个临时计费消息提供一个用户会话的使用快照,通常为一个用户会话在设备重 启或者网络问题出现时提供部分

9、的计费。 Local Realm (本地域) 一个提供服务的管理域。 Multi-Sessin( 多会话) 一个多会话表示多个会话的逻辑连接,多会话使用 Acct-Multi-Session-Id 来跟 踪。 Network Access Identifier (网络接入标识) 即 NAI ,用来在 diameter 协议中提取一个用户的标识及域。用于在认证中识别用 户,域用来消息路由。 Proxy Agent or Proxy ( 代理 ) 除传输请求和响应外,代理制定与资源有关的策略,通常用来完成 NAS 设备状 态的跟踪,代理在收到一个服务端的响应前不会对客户端的请求进行应答。当策略 被

10、违反时,它们可能会生成一个拒绝消息。因此,代理需要理解通过它们传输的消 息的语义,它们可能不支持所有的 diameter 应用。 Realm( 域 ) 在 NAI 中跟在 符号之后的字符串, NAI 的域要求为唯一的,且为 DNS 域的分 段,用于判断消息是否满足本地处理的条件,或者被路由或重定向。 Real-time Accounting( 实时计费 ) 它包含在一个限定的时间窗内处理资源使用的信息,时间限制通常用来限制风 险。 Relay Agent or Relay( 中继代理或转播 ) 转播请求和响应基于路由相关的 AVPs 和路由表,中继不会制定策略,他们不会 检查或更改非路由 AV

11、Ps, 因此,中继从不产生消息,不需要理解消息的语义或者 非路由 AVPs, 可能会处理八种 diameter 应用或消息类型,因此,中继依据路由和 域来做决定,并且不保存 NAS 资源使用的状态或会话。 Redirect Agent( 重定向代理 ) 与其在客户端和服务端间传递消息,重定向代理涉及客户端和服务端,并允许它 们直接通信,所以重定向代理不出现在传输路径中,它们从不修改客户端和服务端 传输的任何 AVPs, 也不产生消息,可以处理任何消息类型,尽管它们可能仅配置 为重定向特定类型的消息,与 Proxy 代理相比,重定向代理不保存会话或 NAS 资 源相关的状态。 Security

12、Association( 安全偶联 ) 一个安全的偶联是指两个端点之间的 diameter 会话,此会话允许端点完整且可信 地通信,包括中继和 /或 Proxy 。 Session (会话) 会话是指一个事件相关的活动。每个应用应该为会话的开始和结束提供指导,所 有具有相同会话标识的 diameter 包被认为同一个会话的一部分。 Sub-session( 子会话 ) 一个子会话表示一个明确的服务(例如 Qos ),这些服务可能同时或连续发生(例 如同时产生的语音和同一会话中传输的数据)。此类会话由 Accounting-Sub- Session-Id 来跟踪。 Transaction sta

13、te( 传输状态 ) Diameter 协议要求代理来维护传输状态,用于 failover 。传输状态暗指一个请 求,逐跳标识被保存,且原来存储对应应答接收时的初始值字段被本地唯一标识符 替代,当拒绝一个应答时请求的状态被释放。 Translation Agent( 传输代理 ) 是指为一个具有状态的 dimaeter 节点,用于在 diameter 和其它的 AAA 协议(如 RADIUS )间进行翻译。 Translation Connection( 传输连接 ) 一个传输连接是指直接存在于两个 diameter 对端间的 TCP 或 SCTP 连接,或者 说端到端连接。 Upstream

14、( 上行) 用来标识一个特定的 diameter 消息从接入设备到归属服务器的传送方向。 User(用户) 产生请求或使用某些资源的实体,支持 diameter 客户端产生一个请求。 链接和会话的区别: 链接为传输层概念,会话为应用层的概念,通过 AVP Session-Id 来标识,两者 之前没有联系。如下图: + + + | Client | Relay | Server | + peer connection A peer connection B User session x Figure 1: Diameter connections and sessions 对端表 用于消息传递和

15、路由表全使用,包括以下信息: 1. Host 标识:包括 Origin-Host AVP ,在 CER/CEA 消息中使用。 2. StatusT: 对端实体的状态。 3. Static or Dynamic: 指对端是静态配置的还是动态发现。 4. Expiration time: 指使用动态发现机制时刷新超时的时长。 5. TLS Enablee: 与对端通信时是否使用 TLS。 基于域名的路由表 1. 域名:用于查找路由表时使用的主键。 2. 应用程序标识:使用一个 Vendor id 和一个 applicaiont id 标识,其为路由表的 第二主键。 3. Local Action:

16、 决定消息如何处理 , 有以下几个选项: LOCAL: 本地处理,不需要路由到下一个服务器。 RELAY: 路由到下一跳,注意不修改任何非路由的 AVP 。 PROXY: 路由到下一跳,注意可能会在消息中添加新的 AVP 。 REDIRECT: 具有一个源 diameter 服务器的标识,且将消息返回给发送 者。 4. 服务器标识:必须出现在对端表中,当 Local Action 为 RELAY 或 PROXY 时,此字段标识消息被路由到的地址,当为 REDIRECT 时,表示消息应该重定向到 的一个或多个服务器。 5. Static or Dynamic: 路由信息是静态配置还是动态发现。

17、6. Expiration time: 与对端表中的含义相同。 另外,路由表必须包含一条默认路由。 Diameter 消息应用层的路由 1. 创建和发送 Request消息: 1) 产生一个 Request消息时,必须遵守下列规则: 设置头部的 Command code; 设置头部的 R 位; 设置头部的 End-to-End 为本地的唯一值; Origin-Host 和 Origin-Realm AVPs 必须携带 , 用来标识消息的源地 址; Destination-Host 和 Destination-Realm AVPs 需根据以下规则设置; a) 不能被 Proxy的消息一定不能带

18、Destination-Realm and Destination-Host AVPs; b) 如果消息是发往某个 realm 而不是具体的 host,则只携带 Destination-Realm AVP; c) 如果消息是发往某个具体的 host,则需要同时携带 Destination-Realm and Destination-Host AVPs; 如果消息有可能被转发,则消息中还必须携带下列 AVP 之一: an Acct-Application-Id AVP, an Auth-Application-Id AVP or a VendorSpecific-Application-Id A

19、VP ; 2) 当发送一个 Request消息时,无论是源主机发送还是 Agent 转发,都需 要执行下列操作: a) 设置头部的 Hop-by-Hop 为本地的唯一值; b) 将该消息放入 Pending Request消息队列; 2. 收到 Request消息: 1) 当一个 Diameter 节点收到一个 Request消息后,有如下四种可能的处理方 式: a) 如果满足如下条件,则本地处理: Destination-Host AVP 包含了本地 host的标识 ,或者 Destination-Host AVP 不存在 , Destination-Realm AVP 经过在路由表 中查询

20、被配置为本地处理 , 或者 Destination-Host 和 Destination-Realm 都不存在; b) 如果 Destination-Host AVP 存在于本地的 Peer table中,则执行 Request Forwarding: c) 如果没有本地处理也没有进行 Request forwarding,则根据 DestinationRealm AVP 和 Auth-Application-Id 或 Acct-Application-Id 或 VendorSpecific-Application-Id 查找 Realm Routing Table,执行 Request Ro

21、uting; d) 返回错误 DIAMETER_UNABLE_TO_DELIVER ; 注意: 这里区分了 Request forwarding 和 Request Routing;本文其它地方提 到的“转发”都是泛指消息非本地处理的情况; 2) Request消息在被 Relay或者 Proxy的时候, Relay Agent和 Proxy Agent需 要做如下工作: a) 在转发出去的 Request消息中插入 Route-Record AVP,里面包含发送该 Request消息的主机标识; b) 保存和该 Request消息相关的: Protocol, IP Address, Port

22、, Hop-by- Hop 标识;保存这些信息是为了收到与该 Reqeuest消息对应的 Answer 消息后能够将 Answer 消息正确的转发出去; 3. 创建 Answer 消息: 当一个 Request 消息被本地处理后,必须按照如下规则创建并发送 Answer 消息: 从 Request 消息中拷贝 Hop-by-Hop 填入 Answer 消息; 将本地主机标识作为 Origin-Host AVP ; Destination-Host 和 Destination-Realm AVPs 不允许出现在 Answer 消 息中; 加上 Result-Code AVP 指示成功与否 . 如

23、果 Reqeust消息中包含了 Session-Id,那么 Answer 消息中也应该包 含该值; 在 Request 消息中的任何 Proxy-Info AVPs 都应原封不动的拷贝到 Answer 消息中; P 位需要和 Request消息中保持一致; End-to-End 需要和 Request消息中保持一致; 4. 收到 Answer 消息: 当收到一个 Answer 消息时需要如下操作: 检查其 Hop-by-Hop,从 Pending Request队列中找到与其一致的 Reqeust消息,然后将 Reqeust消息从 Pending Request队列中删除; 如果是 Agent

24、收到 Answer 消息, Agent需要将 Hop-by-Hop 替换为先 前保存的 Reqeust中的 Hop-by-Hop ,然后再将 Answer 消息转发出 去; 下图是 Diameter 节点 经由 Relay Agent 发送一个 Request 消息给 并收到 Answer 消息的示意图,该 图主要为了说明 Hop-by-Hop 和 End-to-End 两个标识的作用: Diameter 基础协议摘要 Diameter 是新一代 AAA 协议,可以承载与 TCP或者 SCTP协议之上,被广泛应用于 IMS,LTE网络中。 RFC3588定义了 Diameter的基础协议,各种

25、应用可以在此基础 上对其进行扩展 (主要是定义新的 Application ID,Command 和 AVP);基础协议中包 括一个基本的 Accounting 功能,如果需要 Authentication 或者 Authorization 通常需 要进行对基础协议扩展。 1. 基本概念: Connection:是传输层的概念,负责在两端直接传输 Diameter 消息; Session:是应用层的概念,可以用 Session-id 这 AVP 来标识;下图展示了 Connection 与 Session的区别; + | Client | Relay | Server | + peer con

26、nection Apeer connection B User session x Destination Host:用于标识一台运行 Diameter 应用的主机,命名方式类似 DNS 格式,但并不是域名,只是一个标识符而已,一台运行Diameter应用 的主机可以支持一个或者多个 Diameter 应用; Destination Realm:用于标识一组运行 Diameter 应用的主机,可以将多台 Host 划归为一个 Realm中; Peer Table:用于消息路由的数据配置, Peer table中的主机都是能和本地 主机之间通信的 (也就是说中间无需经过消息转发 ),格式如下表:

27、 Host identity StatusT R-Open Static or Dynamic statically Expiration time 0 R-Open dynamically 10 Realm-Based Routing Table :用于消息路由的数据配置,格式如下表: Realm Name Application Identifier Local Action Server Identifier Static or Dynamic Expiration time example 16777250 RELAY statically 0 example 16777272 REL

28、AY dynamically 10 2. Diameter Agents: Relay Agents:对消息进行转发,只增加或者删除路由信息,而不会修改 任何应用层信息;在 CER/CEA 进行能力交互时,需要返回自己支持的 Application ID 为 Relay Application Identifier ;使用 Relay Agents的好处是简 化网络的复杂性,不需要对所有 Diameter 节点都进行复杂的配置,比如只 需配置节点让 Diameter消息转发到 Relay Agents,然后在 Relay Agents上进 行比较全面的路由配置即可。 Proxy Agents:

29、 Proxy Agents也负责转发消息,与 Relay Agent不同的是, 它需要理解应用层的信息,进而维护 Transaction的状态;在 CER/CEA 进行 能力交互时,需要返回自己支持的所有 Application ID ; Redirect Agents:收到 Diameter 消息后不进行转发,而是回复一个应答消 息给发送者,应答消息中包含一个或者多个地址,告诉发送者应该将消息 发往这些地址; Translation Agents:完成 Radius和 Diameter协议之间的转换; 3. 消息格式: MAC header IP header SCTP | TCP head

30、er Diameter header Data : 1) Diameter header: Version: Diameter 的版本号,目前为 1; Message length:包含头部在内的消息长度,也就是头部 +所有 AVP 的 长度之和; Flags: R(equest):如果 置位表示这是一个 Request消息; P(roxiable):如果被置位说明该消息可以被转发,否则必须本地处理; E(rror):如果置位,说明产生了一个协议错误,只能出现在Answer 消息 中; T:如果被置位,说明该消息有可能是一个被重传的消息; r :保留位; Code:消息命令码,用来标识各种 Diameter 消息,由 IANA 负责统一分 配; Application ID:用来表示不同的 Diameter 应用,由 IANA 负责统一分 配; Hop by Hop ID :用来匹配 Request和 Answer 消息,在一个指定的 Connection上的任何时间都必须是唯一的;该值在 Diameter 消息转发时 会被 A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论