通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  列兵

注册:2013-11-5
跳转到指定楼层
1#
发表于 2015-5-13 16:26:31 |只看该作者 |倒序浏览
Diameter是新一代AAA协议,可以承载与TCP或者SCTP协议之上,被广泛应用于IMSLTE网络中。RFC3588定义了Diameter的基础协议,各种应用可以在此基础上对其进行扩展(主要是定义新的Application IDCommandAVP);基础协议中包括一个基本的Accounting功能,如果需要Authentication或者Authorization通常需要进行对基础协议扩展。
1. 基本概念:
· Connection: 是传输层的概念,负责在两端直接传输Diameter消息;
· Session: 是应用层的概念,可以用Session-id 这AVP来标识;下图展示了Connection与Session的区别;
+--------+ +-------+ +--------+
| Client | | Relay | | Server |
+--------+ +-------+ +--------+
<----------> <---------->
peer connection A peer connection B

<---------------------------------------------------->
User session x
· Destination Host:用于标识一台运行Diameter应用的主机,命名方式类似DNS格式,但并不是域名,只是一个标识符而已,一台运行Diameter应用的主机可以支持一个或者多个Diameter应用;
· Destination Realm:用于标识一组运行Diameter应用的主机,可以将多台Host划归为一个Realm中;
· Peer Table:用于消息路由的数据配置, Peer table中的主机都是能和本地主机之间通信的(也就是说中间无需经过消息转发),格式如下表:
Host identity
StatusT
Static or Dynamic
Expiration time
abc.example.com
R-Open
statically
0
xyz.example.net
R-Open
dynamically
10
· Realm-Based Routing Table : 用于消息路由的数据配置,格式如下表:
Realm Name
Application Identifier
Local Action
Server Identifier
Static or Dynamic
Expiration time
example
16777250
RELAY
abc.example.com
statically
0
example
16777272
RELAY
xyz.example.net
dynamically
10
2. Diameter Agents:
· Relay Agents:对消息进行转发,只增加或者删除路由信息,而不会修改任何应用层信息;在CER/CEA进行能力交互时,需要返回自己支持的Application ID为Relay Application Identifier ;使用Relay Agents的好处是简化网络的复杂性,不需要对所有Diameter节点都进行复杂的配置,比如只需配置节点让Diameter消息转发到Relay Agents,然后在Relay Agents上进行比较全面的路由配置即可。
· Proxy Agents:Proxy Agents也负责转发消息,与Relay Agent不同的是,它需要理解应用层的信息,进而维护Transaction的状态;在CER/CEA进行能力交互时,需要返回自己支持的所有Application ID;
· Redirect Agents:收到Diameter消息后不进行转发,而是回复一个应答消息给发送者,应答消息中包含一个或者多个地址,告诉发送者应该将消息发往这些地址;
· Translation Agents:完成Radius和Diameter协议之间的转换;
3. 消息格式:
MAC header
IP header
SCTP | TCP header
Diameter header
Data :::
1) Diameter header:
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
R
P
E
T
r
r
r
r
AVP[] :::
· 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消息转发时会被Agent修改;
· End to End ID:用来识别重复消息;该值在本地的一段时间内必须是唯一的,传输过程中一直保持不变;目标主机会根据该值和Original-Host AVP来判读是否是重复消息;
2) AVP header:
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
V
M
P
r
r
r
r
r
Vendor ID (Optional)
Data :::
· AVP code:用来标识一个AVP,由IANA来统一分配;
· AVP flags:
V, Vendor specific: 如果置位说明 Vendor ID 存在;
M, Mandatory:如果置位说明该AVP是必须的;
P:如果置位说明需要保证该AVP端到端的安全性;
r:reserved
· AVP length:AVP长度;
· Vendor ID:可选的,如果AVP flags中的V被置位,说明该域存在;该值也是由IANA分配的;
4. Diameter和连接相关的三对基本消息:
Diamete通过传输层TCP/SCTP建立连接后,传输的第一个消息就是CER/CEA,通过该消息的交互了解对端都支持哪些应用,看是否有共同的应用;如果对端是Relay Agent,则认为肯定存在共同应用;获知对方支持你哪些应用后,发送消息的时候就不会发送对方不认识的消息,对方对收到的不认识的消息也不会处理。此外双方的IP地址也会在CER/CEA消息中交换。CER/CEA是不能被ProxyRelay或者是Redirection的,所以说CER/CEA只能是直连节点之间的交换,如果节点A经过Relay Agent发送消息到节点B,那么需要建立两个连接,进行两次CER/CEA的交互。当需要断开连接时,主动方需要发起DPR消息给对端指示断开传输层连接。在连接期间,双方需要互发DWR/DWA (Watching Dog) 消息,用来检测对方是否处于Active状态.
5. 如何看规范中的Diameter命令的ABNF 定义:
具体参见协议的3.2,这里用一个例子大概总结一下:
Example-Request ::= < "Diameter-Header: 9999999, REQ, PXY123456 >
<Session-Id> //
AVP必须存在一个,且位置固定
{ User-Name } //AVP必须存在一个
[ Destination-Host ] //AVP可存在一个或者不存在
1*{ Origin-Host } //AVP可存在一个或者多个
*[ AVP ] //AVP可存在零个或者多个

举报本楼

本帖有 2 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-11-26 06:32 , Processed in 0.422283 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部