Diameter报文结构
Diameter协议是IETF的AAA工作组作为下一代的AAA协议标准,由RADIUS协议演进而来。Diameter目前主要应用于移动通信系统,固网接入主要使用RFC2865的Radius协议。随着固网与无线网络融合,统一认证计费授权服务器的趋势越来越迫切,固网接入支持Diameter协议栈已成为普遍需求。
协议栈结构
+------------------------------------------+
| Diameter Extended Application |
+------------------------------------------|
| Diameter Based Protocol |
+------------------------------------------|
| TLS |
+------------------------------------------|
| TCP | SCTP |
+------------------------------------------|
| IP/Psec |
+------------------------------------------|
| L2 |
+------------------------------------------|
| L1 |
+------------------------------------------+
报文格式
Diameter报文格式
0 8 31
+------------------------------------------+
| Version | Message Length |
+------------------------------------------|
| command flags | Command-Code |
+------------------------------------------|
| Application-ID |
+------------------------------------------|
| Hop-by-Hop Identifier |
+------------------------------------------|
| End-to-End Identifier |
+------------------------------------------|
| AVPs... |
+------------------------------------------|
Diameter报文字段解释
| 字段 | 长度 | 含义 |
|---|---|---|
| Version | 1B | 必须置为1,表示Diameter协议版本号为1。 |
| Message Length | 3B | 表示Ditameter消息长度,包括Diameter的头部域。 |
| Command Flags | 1B | 标志位,详见。 |
| Command-Code | 3B | 命令代码,代码值由IANA分配,其中0xFFFFFE -0xFFFFFF预留给实验用。 |
| Application-ID | 4B | 用来标记消息的应用,该应用可能是认证、计费或者厂家特殊应用。 |
| Hop-by-Hop Identifier | 4B | 逐跳标记,用来匹配请求和应答,通常是一个自动增加的编号,从一个随机的数开始增加。应答消息里的此字段如果无法识别,消息将被丢弃。 |
| End-to-End Identifier | 4B | 用于检测重复消息。 |
| AVPs | 变长 | Diameter消息使用AVP来封装信息。 |
Command Flags
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|R P E T r r r r|
+-+-+-+-+-+-+-+-+
-
R(equest)
-
如果置1,表示消息为请求消息;
-
如果置0,表示消息为应答消息。
-
-
P(roxiable)
-
如果置1,表示消息可能被代理、中继或重定向;
-
如果置0,表示消息必须本地处理。
-
-
E(rror)
-
如果置1,表示消息包含协议错误,不符合ABNF的定义。带有E比特置位的通常表示错误消息。在请求消息中该比特不应该置位。
-
-
T(Potentially re-transmitted message)
-
当发送的请求还没得到确认时,此标记置位,表示可能因为链路故障导致消息的重复。 第1次发送的请求消息中此标记必须置0。应答消息中此标记也应该置0。
-
-
r(eserved)
-
预留将来使用,必须设置为0,接收时忽略。
-
Command-Code
| Code | Meaning |
|---|---|
命令代码,代码值由IANA分配,其中0xFFFFFE -0xFFFFFF预留给实验用。
-
Abort-Session-Request (ASR): 274
-
Abort-Session-Answer (ASA): 274
-
Accounting-Request (ACR): 271
-
Accounting-Answer (ACA): 271
-
Capabilities-Exchange-Request (CER): 257
-
Capabilities-Exchange-Answer (CEA): 257
-
Device-Watchdog-Request (DWR): 280
-
Device-Watchdog-Answer (DWA): 280
-
Disconnect-Peer-Request (DPR): 282
-
Disconnect-Peer-Answer (DPA): 282
-
Re-Auth-Request (RAR): 258
-
Re-Auth-Answer (RAA): 258
-
Session-Termination-Request (STR): 275
-
Session-Termination-Answer (STA): 275
AVP消息格式
AVP消息格式
0 8 31
+------------------------------------------+
| AVP Code |
+------------------------------------------|
| V | M | P | Reserved | AVP Length |
+------------------------------------------|
| Vendor-ID(opt) |
+------------------------------------------|
| Data... |
+------------------------------------------|
AVP消息字段解释
| 字段 | 长度 | 含义 |
|---|---|---|
| AVP Code | 4 bytes | AVP Code字段和Vendor-Id字段一起唯一标识了一个属性。1 – 255 预留用于和RADIUS后向兼容,不需要携带Vendor-Id字段。256及以上的值用于Diameter协议,由IANA分配。 |
| V | 1 bit | V(Vendor-Specific bit)位用来标识AVP头部是否必须携带Vendor-ID字段。 |
| M | 1 bit | M(Mandatory)位用来标识此AVP是否必须携带。 |
| P | 1 bit | P位用来标识是否需要加密。 |
| Reserved | 5 bits | 保留位。 |
| AVP Length | 3 bytes | 表示AVP的字节数,包括AVP Code、AVP Length、AVP Flags、Vendor-ID、AVP data字段。 |
| Vendor-ID | 4 bytes | IANA分配的厂家标识。如果V比特置位,AVP必须携带Vendor-ID字段。 |
| Data | Variable | 包括0个或多个属性。 |
参考标准
| 标准 | 描述 |
|---|---|
| Diameter Base Protocol |
No comments to display
No comments to display