跳到主要内容

4.1. AVP Header

AVP 头部中的字段必须以网络字节序发送。头部的格式为:

    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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| AVP Code |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V M P r r r r r| AVP Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Vendor-ID (opt) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data ...
+-+-+-+-+-+-+-+-+

AVP Code

AVP Code 与 Vendor-Id 字段结合,唯一地标识属性。AVP 编号 1 到 255 保留用于重用 RADIUS 属性,不设置 Vendor-Id 字段。AVP 编号 256 及以上用于 Diameter,由 IANA 分配 (参见第 11.1.1 节)。

AVP Flags

AVP Flags 字段通知接收方如何处理每个属性。新的 Diameter 应用不应 (SHOULD NOT) 定义额外的 AVP Flag 位。但是,请注意,新的 Diameter 应用可以 (MAY) 在 AVP 头部内定义额外的位,未识别的位应当 (SHOULD) 被视为错误。AVP 的发送方必须 (MUST) 将 'R'(保留) 位设置为 0,接收方应当 (SHOULD) 忽略所有 'R'(保留) 位。'P' 位已保留用于端到端安全的未来使用。在撰写本文时,没有指定端到端安全机制;因此,'P' 位应当 (SHOULD) 设置为 0。

'M' 位,称为 Mandatory 位,指示 AVP 的接收方是否必须 (MUST) 解析和理解 AVP 的语义,包括其内容。如果接收实体收到设置了 M 位但不理解的 AVP,则必须 (MUST) 返回适当的错误消息。当 AVP 嵌入在 Grouped AVP 中时,有一个例外。详见第 4.4 节。Diameter 中继 (relay) 和重定向 (redirect) 代理不得 (MUST NOT) 拒绝包含无法识别的 AVP 的消息。

'M' 位必须 (MUST) 根据引入或重用此 AVP 的应用规范中定义的规则进行设置。在给定应用中,AVP 的 M 位设置要么为所有命令类型定义,要么为每个命令类型定义。

'M' 位清除的 AVP 仅供参考;如果接收方收到包含此类 AVP 但不支持该 AVP 或其值不受支持的消息,可以 (MAY) 简单地忽略该 AVP。

'V' 位,称为 Vendor-Specific 位,指示可选的 Vendor-ID 字段是否存在于 AVP 头部中。设置时,AVP Code 属于特定的供应商代码地址空间。

AVP Length

AVP Length 字段为三个八位字节,指示此 AVP 中的八位字节数,包括 AVP Code 字段、AVP Length 字段、AVP Flags 字段、Vendor-ID 字段 (如果存在) 和 AVP Data 字段。如果收到具有无效属性长度的消息,则必须 (MUST) 拒绝该消息。