查看源码 标准符合性
下表总结了 diameter 应用程序对 RFC 6733 的符合性。由于 diameter 应用程序本身不是一个 Diameter 节点,因此在许多情况下,符合性严格是用户的责任,diameter 提供用户符合规范的手段,而不是自身符合规范。
“符合性”列指出 C(符合),如果实现了所需的功能;PC(部分符合),如果存在限制;NC(不符合),如果未实现该功能;或者如果文本仅是信息性的或仅对用户的实现提出了要求,则用破折号表示。
大写的 Diameter 指的是协议,小写的 diameter 指的是 Erlang 应用程序。
RFC 6733 - Diameter 基础协议
章节 | 标题 | 符合性 | 备注 |
---|---|---|---|
1 | 简介 | — | |
1.1 | Diameter 协议 | — | |
1.1.1 | 文档集的描述 | — | |
1.1.2 | 本文档中使用的约定 | — | |
1.1.3 | 与 RFC 3588 的变更 | — | 可以配置一个 3588 字典以获得 3588 的语义,其中与 6733 不同。 |
1.2 | 术语 | — | |
1.3 | 可扩展性方法 | — | diameter_dict(4) 中记录的字典接口提供了可扩展性,允许用户定义新的 AVP、命令和应用程序。为 RFC 6733 通用消息、基本计费和中继应用程序以及 RFC 7683 Diameter 过载指示传递提供了现成的字典。 |
1.3.1 | 定义新的 AVP 值 | — | |
1.3.2 | 创建新的 AVP | — | 可以使用字典接口定义新的 AVP。支持 RFC 数据格式和扩展。 |
1.3.3 | 创建新的命令 | — | 可以使用字典接口定义新的命令。 |
1.3.4 | 创建新的 Diameter 应用程序 | — | 可以使用字典接口定义新的应用程序。 |
2 | 协议概述 | — | 会话状态由用户负责。 Diameter 节点的角色由用户的实现决定。 |
2.1 | 传输 | PC | 端口由用户配置:diameter 不做任何限制。 diameter_transport 中记录的传输接口允许用户实现自己的方法。为 TCP、TCP/TLS 和 SCTP 提供了现成的支持,但不包括 DTLS/SCTP。可以建立与同一对等方的多个连接。不解释 ICMP 消息。 |
2.1.1 | SCTP 指南 | C | 在 diameter_sctp 中可配置无序发送。没有对 DPR/DPA 的特殊处理:因为关心挂起答案的用户应该在启动 DPR 之前等待它们。可以使用 gen_sctp sctp_default_send_param 选项配置 PPID。 |
2.2 | 保护 Diameter 消息的安全 | PC | diameter_sctp 不支持 DTLS。另请参阅 2.1。 |
2.3 | Diameter 应用程序符合性 | — | |
2.4 | 应用程序标识符 | C | 用户使用在功能交换时发送的标识符以及定义应用程序消息的相应字典来配置 diameter。 |
2.5 | 连接与会话 | C | 通过配置传输来实现连接。会话由用户负责。 |
2.6 | 对等表 | PC | 路由由用户在 diameter_app 中记录的回调中实现。文档形式的对等表不会向用户公开。 |
2.7 | 路由表 | PC | 请参阅 2.6。文档形式的路由表不会向用户公开。 |
2.8 | Diameter 代理的角色 | C | 大多数特定于角色的行为由用户实现。节点如何在功能交换时通告自身由用户配置决定。 |
2.8.1 | 中继代理 | C | |
2.8.2 | 代理代理 | C | |
2.8.3 | 重定向代理 | C | |
2.8.4 | 转换代理 | C | |
2.9 | Diameter 路径授权 | — | 授权是用户的责任。 |
3 | Diameter 头部 | C | 当发送传出请求时,diameter 会设置逐跳和端到端标识符。 |
3.1 | 命令代码 | C | |
3.2 | 命令代码格式规范 | C | 命令在字典文件中定义为 CCF 规范。 |
3.3 | Diameter 命令命名约定 | — | |
4 | Diameter AVP | C | 当编码传出消息时,diameter 会添加任何必需的填充。 |
4.1 | AVP 头部 | C | |
4.1.1 | 可选头部元素 | C | |
4.2 | 基本 AVP 数据格式 | C | |
4.3 | 派生的 AVP 数据格式 | C | 字典接口支持任意派生的数据格式。 |
4.3.1 | 常见的派生 AVP 数据格式 | C | 请注意,RFC 6733 更改了 RFC3588 中指定的 DiameterURI 传输/端口默认值。依赖默认值可能会导致互操作性问题。 |
4.4 | 分组 AVP 值 | C | 忽略不设置 M 的分组 AVP 的组件 AVP 上的 M 位:此类 AVP 在解码时不会被视为错误。分组 AVP 在字典文件中定义为 CCF 规范。 |
4.4.1 | 具有分组数据类型的 AVP 示例 | — | |
4.5 | Diameter 基础协议 AVP | C | 基础 AVP 在 diameter 提供的公共字典中定义。RFC 3588 和 RFC 6733 都有公共字典,因为后者对语法和语义都进行了更改。 |
5 | Diameter 对等方 | — | |
5.1 | 对等连接 | PC | 启动连接时,不需要对等方的 DiameterIdentity:该标识在功能交换时接收,如果该标识令人反感,则此时可以拒绝连接。建立的连接数取决于用户的配置。每个对等方可以建立多个连接。 |
5.2 | Diameter 对等方发现 | NC | 未实现任何形式的对等方发现。如果需要,用户可以独立于 diameter 实现此功能。 |
5.3 | 功能交换 | C | 所有支持的应用程序都在 CEA 中发送。用户可以在配置的回调中拒绝传入的 CER 或 CEA。支持在连接建立时和通过带内安全 AVP 协商的传输安全。 |
5.3.1 | 功能交换请求 | C | diameter 发送和接收 CER。 |
5.3.2 | 功能交换应答 | C | diameter 发送和接收 CEA。 |
5.3.3 | Vendor-Id AVP | C | |
5.3.4 | Firmware-Revision AVP | C | |
5.3.5 | Host-IP-Address AVP | C | |
5.3.6 | Supported-Vendor-Id AVP | C | |
5.3.7 | Product-Name AVP | C | |
5.4 | 断开对等连接 | C | DPA 不会回复错误:想要避免竞争的对等方可以在发送 DPR 之前等待挂起的答案。 |
5.4.1 | 断开对等请求 | C | diameter 会发送 DPR,以响应需要断开连接的配置更改。用户也可以发送 DPR。 |
5.4.2 | 断开对等应答 | C | diameter 回复 DPR。 |
5.4.3 | Disconnect-Cause AVP | C | |
5.5 | 传输故障检测 | — | |
5.5.1 | 设备监视请求 | C | diameter 发送和接收 DWR。回调通知用户进入和退出 OKAY 状态的转换。 |
5.5.2 | 设备监视应答 | C | diameter 发送和接收 DWA。 |
5.5.3 | 传输故障算法 | C | |
5.5.4 | 故障切换和故障恢复过程 | C | |
5.6 | 对等状态机 | PC | 选举过程按照 5.6.4 中的描述进行了修改。 |
5.6.1 | 传入连接 | C | |
5.6.2 | 事件 | — | |
5.6.3 | 操作 | — | |
5.6.4 | 选举过程 | PC | 如文档所述,选举假设在启动连接时了解对等方的 DiameterIdentity,而 diameter 不需要这样做。如果配置允许每个对等方建立多个连接或没有现有连接,则将接受连接。请注意,选举过程仅在不允许每个对等方建立多个连接时适用。 |
6 | Diameter 消息处理 | — | |
6.1 | Diameter 请求路由概述 | — | 路由由用户执行。来自 diameter 的回调提供可用合适的对等连接列表。 |
6.1.1 | 发起请求 | C | 请求由用户构造;diameter 根据相关字典中定义设置头部字段。 |
6.1.2 | 发送请求 | C | |
6.1.3 | 接收请求 | C | 当请求回调的返回值要求转发请求时,diameter 会检测循环。在其他情况下,循环检测由用户负责。 |
6.1.4 | 处理本地请求 | C | 用户在来自 diameter 的请求回调中决定是否在本地处理请求。 |
6.1.5 | 请求转发 | PC | 请参阅 2.6。 |
6.1.6 | 请求路由 | PC | 请参阅 2.7。 |
6.1.7 | 预测性循环避免 | C | 请参阅 6.1.3。 |
6.1.8 | 重定向请求 | PC | 请参阅 2.6。 |
6.1.9 | 中继和代理请求 | C | 当请求回调的返回值要求转发请求时,diameter 会附加 Route-Record AVP。在其他情况下,附加 AVP 由用户负责。 |
6.2 | Diameter 应答处理 | C | 应答消息由用户构造,但某些协议错误的情况除外,在这种情况下,将遵循这些过程。 |
6.2.1 | 处理接收到的应答 | C | 丢弃具有未知逐跳标识符的应答。 |
6.2.2 | 中继和代理应答 | — | 修改应答由来自 diameter 的回调中的用户负责。 |
6.3 | Origin-Host AVP | C | 编码消息中 AVP 的顺序由相关消息的 CCF 确定。RFC 中定义的 AVP 在 diameter 提供的字典中定义。它们在应用程序消息中的正确使用由用户负责。 |
6.4 | Origin-Realm AVP | C | |
6.5 | Destination-Host AVP | C | |
6.6 | Destination-Realm AVP | C | |
6.7 | 路由 AVP | — | |
6.7.1 | Route-Record AVP | C | |
6.7.2 | Proxy-Info AVP | C | |
6.7.3 | Proxy-Host AVP | C | |
6.7.4 | Proxy-State AVP | C | |
6.8 | Auth-Application-Id AVP | C | |
6.9 | Acct-Application-Id AVP | C | |
6.10 | Inband-Security-Id AVP | C | 请参阅 2.1。 |
6.11 | Vendor-Specific-Application-Id AVP | C | 请注意,此 AVP 的 CCF 与 RFC 3588 中不同。 |
6.12 | Redirect-Host AVP | C | |
6.13 | Redirect-Host-Usage AVP | C | |
6.14 | Redirect-Max-Cache-Time AVP | C | |
7 | 错误处理 | C | 在大多数情况下,应答由用户制定。如果应答设置了 E 位,则可以在 diameter 自身无法处理请求的情况下发送这些应答。 |
7.1 | Result-Code AVP | C | |
7.1.1 | 信息性 | C | |
7.1.2 | 成功 | C | |
7.1.3 | 协议错误 | C | 如果配置允许,可以在由 diameter 制定的应答中发送结果代码 3001、3002、3005 和 3007。 |
7.1.4 | 瞬时故障 | C | 如果存在与相关对等方的现有连接,并且配置不允许超过一个,则在 CEA 中发送结果代码 4003。 |
7.1.5 | 永久故障 | C | 消息接收会检测到 5001、5004、5005、5008、5009、5010、5011、5014、5015 和 5017 错误。它在第 3 节和 4.1 节的警告中忽略了 5013 错误。请注意,RFC 3588 不允许在设置 E 位的应答中使用 5xxx 结果代码,而 RFC 6733 允许这样做。这是一个潜在的互操作性问题,因为 Diameter 协议版本没有更改。 |
7.2 | 错误位 | C | |
7.3 | Error-Message AVP | C | 用户可以根据需要包含此 AVP。 |
7.4 | Error-Reporting-Host AVP | C | 用户可以根据需要包含此 AVP。 |
7.5 | Failed-AVP AVP | C | 用户构造特定于应用程序的消息,但是 diameter 在消息回调中提供失败的 AVP。失败的组件 AVP 分组在相关的分组 AVP 中。 |
7.6 | Experimental-Result AVP | C | |
7.7 | 实验结果代码 AVP | C | |
8 | Diameter 用户会话 | — | 授权和计费 AVP 在提供的字典中定义。其正确使用由用户负责。 |
8.1 | 授权会话状态机 | — | 授权由用户负责:Diameter 不实现此状态机。 |
8.2 | 计费会话状态机 | — | 计费由用户负责:Diameter 不实现此状态机。 |
8.3 | 服务器发起的重新授权 | — | |
8.3.1 | 重新授权请求 | C | |
8.3.2 | 重新授权应答 | C | |
8.4 | 会话终止 | — | 会话相关消息和 AVP 在提供的字典中定义。其正确使用由用户负责。 |
8.4.1 | 会话终止请求 | C | |
8.4.2 | 会话终止应答 | C | |
8.5 | 中止会话 | — | 会话相关消息和 AVP 在提供的字典中定义。其正确使用由用户负责。 |
8.5.1 | 中止会话请求 | C | |
8.5.2 | 中止会话应答 | C | |
8.6 | 从 Origin-State-Id 推断会话终止 | — | 会话相关消息和 AVP 在提供的字典中定义。其正确使用由用户负责。 |
8.7 | Auth-Request-Type AVP | C | |
8.8 | Session-Id AVP | C | |
8.9 | Authorization-Lifetime AVP | C | |
8.10 | Auth-Grace-Period AVP | C | |
8.11 | Auth-Session-State AVP | C | |
8.12 | Re-Auth-Request-Type AVP | C | |
8.13 | Session-Timeout AVP | C | |
8.14 | User-Name AVP | C | |
8.15 | Termination-Cause AVP | C | |
8.16 | Origin-State-Id AVP | C | |
8.17 | Session-Binding AVP | C | |
8.18 | Session-Server-Failover AVP | C | |
8.19 | Multi-Round-Time-Out AVP | C | |
8.20 | Class AVP | C | |
8.21 | Event-Timestamp AVP | C | |
9 | 计费 | — | 计费相关消息和 AVP 在提供的字典中定义。其正确使用由用户负责。 |
9.1 | 服务器定向模型 | — | |
9.2 | 协议消息 | — | |
9.3 | 计费应用程序扩展和要求 | — | |
9.4 | 故障恢复 | — | |
9.5 | 计费记录 | — | |
9.6 | 计费记录的关联 | — | |
9.7 | 计费命令代码 | — | |
9.7.1 | 计费请求 | C | |
9.7.2 | 计费应答 | C | |
9.8 | 计费 AVP | — | |
9.8.1 | Accounting-Record-Type AVP | C | |
9.8.2 | Acct-Interim-Interval AVP | C | |
9.8.3 | Accounting-Record-Number AVP | C | |
9.8.4 | Acct-Session-Id AVP | C | |
9.8.5 | Acct-Multi-Session-Id AVP | C | |
9.8.6 | Accounting-Sub-Session-Id AVP | C | |
9.8.7 | Accounting-Realtime-Required AVP | C | |
10 | AVP 出现表 | — | |
10.1 | 基本协议命令 AVP 表 | — | |
10.2 | 计费 AVP 表 | — | |
11 | IANA 注意事项 | — | |
11.1 | AVP 头部 | — | |
11.1.1 | AVP 代码 | — | |
11.1.2 | AVP 标志 | — | |
11.2 | Diameter 头部 | — | |
11.2.1 | 命令代码 | — | |
11.2.2 | 命令标志 | ||
11.3 | AVP 值 | — | |
11.3.1 | 实验结果代码 AVP | — | |
11.3.2 | Result-Code AVP 值 | — | |
11.3.3 | Accounting-Record-Type AVP 值 | — | |
11.3.4 | Termination-Cause AVP 值 | — | |
11.3.5 | Redirect-Host-Usage AVP 值 | — | |
11.3.6 | Session-Server-Failover AVP 值 | — | |
11.3.7 | Session-Binding AVP 值 | — | |
11.3.8 | Disconnect-Cause AVP 值 | — | |
11.3.9 | Auth-Request-Type AVP 值 | — | |
11.3.10 | Auth-Session-State AVP 值 | — | |
11.3.11 | Re-Auth-Request-Type AVP 值 | — | |
11.3.12 | Accounting-Realtime-Required AVP 值 | — | |
11.3.13 | Inband-Security-Id AVP (代码 299) | — | |
11.4 | _diameters 服务名称和端口号注册 | — | |
11.5 | SCTP 有效负载协议标识符 | — | |
11.6 | S-NAPTR 参数 | — | |
12 | Diameter 协议相关可配置参数 | — | |
13 | 安全注意事项 | PC | 请参阅 2.1。IPsec 对 diameter 是透明的。 |
13.1 | TLS/TCP 和 DTLS/SCTP 的使用 | PC | 请参阅 2.1。 |
13.2 | 对等考虑事项 | — | |
13.3 | AVP 考虑事项 | — | |
14 | 参考文献 | — | |
14.1 | 规范性参考文献 | — | |
14.2 | 参考性参考文献 | — |
表:RFC 6733 合规性