3. 数据包格式
RADIUS 计费数据包格式基于 RADIUS 认证数据包格式 [2],但有以下差异:
- 码(Code)字段取值不同。
- 标识符(Identifier)字段含义相同。
- 请求认证器(Request Authenticator)计算方式不同。
- 仅使用以下属性:User-Name、NAS-IP-Address、NAS-Identifier、NAS-Port、NAS-Port-Type、Service-Type、Framed-Protocol、Framed-Address、Framed-IP-Netmask、Framed-Routing、Filter-Id、Framed-MTU、Framed-Compression、Login-IP-Host、Login-Service、Login-Port、Reply-Message、Acct-Status-Type、Acct-Delay-Time、Acct-Input-Octets、Acct-Output-Octets、Acct-Session-Id、Acct-Authentic、Acct-Session-Time、Acct-Input-Packets、Acct-Output-Packets、Acct-Terminate-Cause、Acct-Multi-Session-Id、Acct-Link-Count、Acct-Interim-Interval、Acct-Tunnel-Connection 和 Event-Timestamp。所有其他属性必须被忽略。
RADIUS 计费协议数据包格式如下:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Code | Identifier | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| Request Authenticator |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Attributes ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Code
一字节,标识 RADIUS 数据包类型。RADIUS 计费代码中定义了以下值:
4 计费请求 (Accounting-Request) 5 计费响应 (Accounting-Response)
3.1. 标识符
标识符字段用于匹配计费请求和计费响应。在给定客户端和 RADIUS 计费服务器之间,同一时刻(即请求未决时)不得重用给定的标识符,且请求与相应响应之间必须保留标识符。任何重传的计费请求必须重用原始标识符。
3.2. 长度
长度字段表示 RADIUS 数据包(包括 Code、Identifier、Length、Authenticator 和 Attributes 字段)的字节数。八位组字符串中超过 Length 的字节必须被忽略,如果 Length 小于 RADIUS 数据包头的最小长度(20 字节),则该数据包必须被静默丢弃。
3.3. 请求认证器
在计费请求数据包中,Authenticator 字段是一个 16 字节的随机数字,称为请求认证器(Request Authenticator)。该值必须是不可预测的,并且在一台给定 NAS 上唯一地标识查询,以避免重放攻击。请求认证器既不能用于掩盖任何数据,也不应当被复用。
请求认证器绝不能用作任何加密密钥的掩码;任何利用请求认证器掩盖数据的行为都是不安全的。客户端和代理在生成请求认证器时,必须使用某种明确的算法,其输出对攻击者而言是不可预测的(即,不能由攻击者预测的字节序列构成)。
请求认证器必须依据 RFC 1750 [4] 中描述的程序生成。
3.4. 属性
本节描述 RADIUS 计费协议使用的属性。属性字段格式见 [2] 第 5 节。
属性类型 1-59 与 RADIUS [2] 中定义的相同。本备忘录新引入的属性类型从 40 开始。
属性值 40-49 为本备忘录定义。属性值 50-59 保留供隧道属性使用,在 [5] 中定义。
本备忘录中,以下属性具有特定的含义:
Acct-Status-Type (40) Acct-Delay-Time (41) Acct-Input-Octets (42) Acct-Output-Octets (43) Acct-Session-Id (44) Acct-Authentic (45) Acct-Session-Time (46) Acct-Input-Packets (47) Acct-Output-Packets (48) Acct-Terminate-Cause (49) Acct-Multi-Session-Id (50) Acct-Link-Count (51) Acct-Interim-Interval (85) Acct-Tunnel-Connection (68) Event-Timestamp (55)