Erlang 20参考手册
直径 | diameter
4.标准合规性 | 4. Standards Compliance
下表总结了直径应用符合RFC 6733的规定。由于直径应用本身不是直径节点,因此在许多情况下,遵从性严格是用户的责任,直径为用户提供了遵从性的手段,而不是遵守它自己。
如果实施了所需的功能,合规性栏注释了C(合规性),如果存在限制则为PC(部分合规性),未实施功能性为NC(不合规),或者文本为信息性或仅限于必须的要求通过用户的实现来满足。
大写Diameter指协议,Erlang应用程序的小写字母直径。
4.1 rfc 6733直径基协议
部分 |
标题 |
合规 |
笔记 |
---|---|---|---|
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 |
运输 |
个人计算机 |
端口由用户配置:直径没有限制。在diameter_transport(3)中记录的传输接口允许用户实现他们自己的方法。为TCP,TCP / TLS和SCTP提供了即时支持,但不提供DTLS / SCTP。多个连接到同一个对等体是可能的。ICMP消息不被解释。 |
2.1.1 |
SCTP指南 |
C |
无序发送可以在diameter_sctp(3)中配置。没有特别处理DPR / DPA:因为关心待决答案的用户应该在启动DPR之前等待它们。一个PPID可以配置一个gen_sctp sctp_default_send_param选项。 |
2.2 |
保护Diameter消息 |
个人计算机 |
DTLS不受diameter_sctp(3)的支持。另见2.1。 |
2.3 |
直径应用合规性 |
— |
|
2.4 |
应用程序标识符 |
C |
用户配置具有在功能交换时发送的标识符的直径以及定义应用消息的相应字典。 |
2.5 |
连接与会话 |
C |
连接通过配置传输来实现。会话是用户的责任。 |
2.6 |
对等表 |
个人计算机 |
路由由用户在diameter_app(3)中记录的回调中实现。记录在表格中的对等表格不会暴露给用户。 |
2.7 |
路由表 |
个人计算机 |
见2.6。记录的表格的路由表不暴露给用户。 |
2.8 |
Diameter代理的作用 |
C |
大多数特定于角色的行为都是由用户执行的。节点如何在功能交换中宣传自己是如何由用户配置决定的。 |
2.8.1 |
中继代理 |
C |
|
2.8.2 |
代理代理 |
C |
|
2.8.3 |
重定向代理 |
C |
|
2.8.4 |
翻译代理 |
C |
|
2.9 |
直径路径授权 |
— |
授权是用户的责任。 |
3 |
直径标题 |
C |
逐跳和端到端标识符在发送传出请求时按直径设置。 |
3.1 |
命令代码 |
C |
|
3.2 |
命令码格式规范 |
C |
命令在字典文件中被定义为CCF规范。 |
3.3 |
Diameter命令命名约定 |
— |
|
4 |
直径AVPs |
C |
编码传出消息时,任何必需的填充都会按直径添加。 |
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 |
直径基础协议AVP |
C |
基础AVP在由直径提供的通用字典中定义。RFC 3588和RFC 6733都有常见的词典,因为后者对语法和语义都做了修改。 |
5 |
直径对等 |
— |
|
5.1 |
对等连接 |
个人计算机 |
当启动连接时,对等方的DiameterIdentity不是必需的:在能力交换时收到标识,此时如果标识不合适,连接可以被拒绝。建立的连接数取决于用户的配置。每个对等体可以有多个连接。 |
5.2 |
直径对等发现 |
NC |
没有实施任何形式的对等体发现。如果需要,用户可以独立于直径实现此功能。 |
5.3 |
能力交换 |
C |
所有支持的应用程序都在CEA中发送。用户可以在配置的回调中拒绝传入的CER或CEA。支持连接建立时的传输安全性以及通过Inband-Security AVP协商的安全性。 |
5.3.1 |
能力交换请求 |
C |
CER通过直径发送和接收。 |
5.3.2 |
能力交换回答 |
C |
CEA按直径发送和接收。 |
5.3.3 |
Vendor-Id AVP |
C |
|
5.3.4 |
固件修订版AVP |
C |
|
5.3.5 |
主机IP地址AVP |
C |
|
5.3.6 |
Supported-Vendor-Id AVP |
C |
|
5.3.7 |
产品名称AVP |
C |
|
5.4 |
断开对等连接 |
C |
DPA不会被错误地回答:在发送DPR之前,想避开比赛的同伴可以等待未决答案。 |
5.4.1 |
断开对等实体请求 |
C |
响应于需要断开连接的配置更改,DPR按直径发送。用户也可以发送DPR。 |
5.4.2 |
断开对等实体回答 |
C |
DPR以直径回答。 |
5.4.3 |
断开 - 原因AVP |
C |
|
5.5 |
运输故障检测 |
— |
|
5.5.1 |
设备监视请求 |
C |
DWR按直径发送和接收。回调通知用户进入和退出OKAY状态。 |
5.5.2 |
设备看门狗应答 |
C |
DWA按直径发送和接收。 |
5.5.3 |
运输失败算法 |
C |
|
5.5.4 |
故障转移和故障回复程序 |
C |
|
5.6 |
对等状态机 |
个人计算机 |
选举过程如5.6.4所述进行修改。 |
5.6.1 |
传入连接 |
C |
|
5.6.2 |
活动 |
— |
|
5.6.3 |
操作 |
— |
|
5.6.4 |
选举过程 |
个人计算机 |
如文件所述,选举在启动连接时假定对等体的DiameterIdentity知道直径不需要的连接。如果配置允许建立每个对等体的多个连接或没有现有连接,则连接将被接受。请注意,选举过程仅适用于不允许每个对等方多个连接的情况。 |
6 |
直径消息处理 |
— |
|
6.1 |
Diameter请求路由概述 |
— |
路由由用户执行。来自直径的回调提供了可用的合适对等连接的列表。 |
6.1.1 |
发起请求 |
C |
请求由用户构建; 直径设置相关字典中定义的标题字段。 |
6.1.2 |
发送请求 |
C |
|
6.1.3 |
接收请求 |
C |
当请求回调的返回值要求转发请求时,通过直径来检测循环。其他情况下的环路检测是用户的责任。 |
6.1.4 |
处理本地请求 |
C |
用户决定是否在直径请求回调中本地处理请求。 |
6.1.5 |
请求转发 |
个人计算机 |
见2.6。 |
6.1.6 |
请求路由 |
个人计算机 |
见2.7。 |
6.1.7 |
预测环路避免 |
C |
见6.1.3。 |
6.1.8 |
重定向请求 |
个人计算机 |
见2.6。 |
6.1.9 |
中继和代理请求 |
C |
当请求回调的返回值要求转发请求时,路由记录AVP按直径附加。在其他情况下附加AVP是用户的责任。 |
6.2 |
Diameter答案处理 |
C |
答复消息由用户构造,除了一些协议错误的情况,在这种情况下遵循程序。 |
6.2.1 |
处理收到的答案 |
C |
丢弃未知逐跳标识符的答案。 |
6.2.2 |
中继和代理的答案 |
— |
修改答案是用户在直径回调中的责任。 |
6.3 |
起源 - 主机AVP |
C |
编码消息中AVP的顺序由相关消息的CCF确定。在RFC中定义的AVP是由直径提供的字典中定义的。它们在应用程序消息中的正确使用是用户的责任。 |
6.4 |
Origin-Realm AVP |
C |
|
6.5 |
目的地 - 主机AVP |
C |
|
6.6 |
Destination-Realm AVP |
C |
|
6.7 |
路由AVP |
— |
|
6.7.1 |
路线记录AVP |
C |
|
6.7.2 |
代理信息AVP |
C |
|
6.7.3 |
代理主机AVP |
C |
|
6.7.4 |
代理状态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 |
供应商特定应用程序Id AVP |
C |
请注意,此AVP的CCF与RFC 3588中的CCF不同。 |
6.12 |
重定向 - 主机AVP |
C |
|
6.13 |
重定向 - 主机 - 使用AVP |
C |
|
6.14 |
重定向最大缓存时间AVP |
C |
|
7 |
错误处理 |
C |
答案在大多数情况下由用户制定。设置E位的答案可以通过直径本身响应于用户无法处理的请求而发送。 |
7.1 |
结果代码AVP |
C |
|
7.1.1 |
信息化 |
C |
|
7.1.2 |
成功 |
C |
|
7.1.3 |
协议错误 |
C |
结果代码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 |
错误消息AVP |
C |
用户可以根据需要包含该AVP。 |
7.4 |
错误报告 - 主机AVP |
C |
用户可以根据需要包含该AVP。 |
7.5 |
失败的AVP AVP |
C |
用户构造特定于应用程序的消息,但直径在消息回调中提供失败的AVP。失败的组件AVP被分组到相关的分组AVP中。 |
7.6 |
实验结果AVP |
C |
|
7.7 |
实验结果代码AVP |
C |
|
8 |
Diameter用户会话 |
— |
授权和会计AVP在提供的字典中定义。它们的正确使用是用户的责任。 |
8.1 |
授权会话状态机 |
— |
授权是用户的责任:直径不实现这个状态机。 |
8.2 |
会计会话状态机 |
— |
会计是用户的责任:直径不实现这个状态机。 |
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 |
从原始状态Id推断会话终止 |
— |
与会话相关的消息和AVP在提供的字典中定义。它们的正确使用是用户的责任。 |
8.7 |
Auth-Request-Type AVP |
C |
|
8.8 |
会话Id AVP |
C |
|
8.9 |
授权 - 终身AVP |
C |
|
8.10 |
认证宽限期AVP |
C |
|
8.11 |
认证会话状态AVP |
C |
|
8.12 |
重新认证请求类型AVP |
C |
|
8.13 |
会话超时AVP |
C |
|
8.14 |
用户名AVP |
C |
|
8.15 |
终止 - 原因AVP |
C |
|
8.16 |
起源 - 状态 - 标识AVP |
C |
|
8.17 |
会话绑定AVP |
C |
|
8.18 |
会话服务器故障转移AVP |
C |
|
8.19 |
多轮次超时AVP |
C |
|
8.20 |
AVP类 |
C |
|
8.21 |
事件时间戳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 |
会计记录类型AVP |
C |
|
9.8.2 |
Acct-Interim-Interval AVP |
C |
|
9.8.3 |
会计记录号码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 |
会计 - 实时 - 必需的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 |
直径标题 |
— |
|
11.2.1 |
命令代码 |
— |
|
11.2.2 |
命令标志 |
|
|
11.3 |
AVP值 |
— |
|
11.3.1 |
实验结果代码AVP |
— |
|
11.3.2 |
结果代码AVP值 |
— |
|
11.3.3 |
会计记录类型AVP值 |
— |
|
11.3.4 |
终止原因AVP值 |
— |
|
11.3.5 |
重定向主机使用AVP值 |
— |
|
11.3.6 |
会话 - 服务器故障转移AVP值 |
— |
|
11.3.7 |
会话绑定AVP值 |
— |
|
11.3.8 |
断开 - 导致AVP值 |
— |
|
11.3.9 |
Auth-Request-Type AVP值 |
— |
|
11.3.10 |
验证会话状态AVP值 |
— |
|
11.3.11 |
重新验证请求类型AVP值 |
— |
|
11.3.12 |
会计 - 实时 - 所需的AVP值 |
— |
|
11.3.13 |
Inband-Security-Id AVP(代码299) |
— |
|
11.4 |
_diameters服务名称和端口号码注册 |
— |
|
11.5 |
SCTP有效载荷协议标识符 |
— |
|
11.6 |
S-NAPTR参数 |
— |
|
12 |
Diameter协议相关的可配置参数 |
— |
|
13 |
安全考虑 |
个人计算机 |
见2.1。IPsec对直径透明。 |
13.1 |
TLS / TCP和DTLS / SCTP使用 |
个人计算机 |
见2.1。 |
13.2 |
对等考虑 |
— |
|
13.3 |
AVP注意事项 |
— |
|
14 |
参考 |
— |
|
14.1 |
规范性参考文献 |
— |
|
14.2 |
信息性参考 |
— |
|
直径 | diameter相关

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。
主页 | https://www.erlang.org/ |
源码 | https://github.com/erlang/otp |
版本 | 20 |
发布版本 | 20.1 |