14. IANA考虑 (IANA Considerations)
本章说明SCTP协议在IANA(Internet Assigned Numbers Authority)注册表中的注册要求。
14.1. SCTP块类型注册 (SCTP Chunk Type Registration)
IANA维护SCTP块类型(Chunk Type)注册表。
14.1.1. 块类型值范围
块类型字段:8位值(0-255)
分配策略:
0-63 : 已定义的块类型(本RFC定义)
64-126 : 保留供IETF审查使用
127 : 保留用于IETF定义的扩展
128-190 : 保留供IETF审查使用
191 : 保留用于IETF定义的扩展
192-255 : 实验和专用使用
14.1.2. 已定义的块类型
本RFC定义的块类型:
| 块类型值 | 块类型名称 | 参考章节 |
|---|---|---|
| 0 | DATA | 3.3.1 |
| 1 | INIT | 3.3.2 |
| 2 | INIT ACK | 3.3.3 |
| 3 | SACK | 3.3.4 |
| 4 | HEARTBEAT | 3.3.5 |
| 5 | HEARTBEAT ACK | 3.3.6 |
| 6 | ABORT | 3.3.7 |
| 7 | SHUTDOWN | 3.3.8 |
| 8 | SHUTDOWN ACK | 3.3.9 |
| 9 | ERROR | 3.3.10 |
| 10 | COOKIE ECHO | 3.3.11 |
| 11 | COOKIE ACK | 3.3.12 |
| 14 | SHUTDOWN COMPLETE | 3.3.13 |
注意:块类型12和13在本规范中未使用。
14.2. SCTP块参数类型注册 (SCTP Chunk Parameter Type Registration)
IANA维护SCTP块参数类型注册表。
14.2.1. 参数类型值范围
参数类型字段:16位值(0-65535)
分配策略:
0-32767 : 已定义的参数类型
32768-49151 : 保留供IETF审查使用
49152-65535 : 实验和专用使用
14.2.2. 已定义的参数类型
本RFC定义的参数类型:
| 参数类型值 | 参数名称 | 参考章节 |
|---|---|---|
| 5 | IPv4 Address | 3.3.2.1 |
| 6 | IPv6 Address | 3.3.2.1 |
| 7 | State Cookie | 3.3.3.1 |
| 8 | Unrecognized Parameters | 3.3.3.2 |
| 9 | Cookie Preservative | 3.3.2.1 |
| 11 | Host Name Address | 3.3.2.1 |
| 12 | Supported Address Types | 3.3.2.1 |
14.3. SCTP错误原因代码注册 (SCTP Error Cause Code Registration)
IANA维护SCTP错误原因代码注册表。
14.3.1. 错误原因代码值范围
原因代码字段:16位值(0-65535)
分配策略:
0-32767 : 已定义的原因代码
32768-49151 : 保留供IETF审查使用
49152-65535 : 实验和专用使用
14.3.2. 已定义的错误原因代码
本RFC定义的错误原因代码:
| 原因代码值 | 原因名称 | 参考章节 |
|---|---|---|
| 1 | Invalid Stream Identifier | 3.3.10.1 |
| 2 | Missing Mandatory Parameter | 3.3.10.2 |
| 3 | Stale Cookie Error | 3.3.10.3 |
| 4 | Out of Resource | 3.3.10.4 |
| 5 | Unresolvable Address | 3.3.10.5 |
| 6 | Unrecognized Chunk Type | 3.3.10.6 |
| 7 | Invalid Mandatory Parameter | 3.3.10.7 |
| 8 | Unrecognized Parameters | 3.3.10.8 |
| 9 | No User Data | 3.3.10.9 |
| 10 | Cookie Received While Shutting Down | 3.3.10.10 |
| 11 | Restart of an Association with New Addresses | 3.3.10.11 |
| 12 | User Initiated Abort | 3.3.10.12 |
| 13 | Protocol Violation | 3.3.10.13 |
14.4. SCTP有效载荷协议标识符 (SCTP Payload Protocol Identifiers)
IANA维护SCTP有效载荷协议标识符注册表。
14.4.1. 协议标识符值范围
有效载荷协议标识符字段:32位值(0-4294967295)
用途:
- 标识DATA块中携带的上层协议
- 允许接收方正确处理有效载荷
- 与端口号正交,提供额外的多路复用
14.4.2. 注册策略
分配方式:
0 : 保留(SCTP未使用)
1-65535 : 标准化协议(IETF审查)
65536- : 先到先得(First Come First Served)
注册要求:
- 协议名称
- 协议描述
- 参考文档
14.4.3. 已定义的协议标识符
部分预定义的协议标识符示例:
| 标识符值 | 协议名称 | 参考 |
|---|---|---|
| 0 | reserved | - |
| 1 | IUA | RFC 4233 |
| 2 | M2UA | RFC 3331 |
| 3 | M3UA | RFC 4666 |
| 4 | SUA | RFC 3868 |
| 5 | M2PA | RFC 4165 |
| 6 | V5UA | RFC 3807 |
| 7 | H.248 | - |
| 8 | BICC | - |
| 9 | TALI | - |
| 10 | DUA | - |
| 11 | ASAP | - |
| 12 | ENRP | - |
| 13 | H.323 | - |
| 14 | QIPC | - |
14.5. 端口号分配 (Port Number Assignment)
14.5.1. SCTP端口号注册
SCTP使用与TCP和UDP相同的端口号空间,但是独立维护。
IANA职责:
- 维护SCTP端口号注册表
- 接受SCTP端口号分配请求
- 协调与TCP/UDP端口号的使用
端口号范围:
0-1023 : 系统端口(Well Known Ports)- 需要IETF审查
1024-49151: 用户端口(Registered Ports)- 需要IANA审查
49152-65535: 动态/私有端口(Dynamic/Private Ports)- 不需要注册
14.5.2. 推荐实践
端口分配建议:
- 如果协议同时支持TCP和SCTP,应使用相同的端口号
- 新协议应明确指定是否使用SCTP传输
- 应在服务注册中标明传输协议(SCTP vs TCP vs UDP)
端口选择考虑:
- 避免与常用TCP/UDP端口冲突(除非有意共享)
- 考虑防火墙和NAT的兼容性
- 为服务选择易记的端口号
14.6. 注册更新过程 (Registration Update Process)
14.6.1. 注册新值
过程:
- 向IANA提交注册请求
- 提供必要的文档和技术规范
- 经过适当的审查过程(取决于值范围)
- IANA分配值并更新注册表
14.6.2. 修改现有注册
允许的修改:
- 更新参考文档
- 澄清描述
- 修正错误
不允许的修改:
- 更改已分配的数值
- 重新定义已有条目的含义
14.6.3. 废弃注册
废弃过程:
- 标记为"已废弃"而非删除
- 保留历史记录
- 在注册表中注明废弃原因和替代方案
总结
IANA在SCTP协议管理中的角色:
- 注册表维护:维护块类型、参数类型、错误代码等注册表
- 值分配:根据定义的策略分配新的标识符值
- 文档管理:保存相关参考文档和规范
- 协调作用:协调SCTP与其他协议的互操作性
最佳实践:
- 在使用新的块类型或参数前先检查IANA注册表
- 实验性扩展使用指定的实验范围
- 标准化扩展需要通过IETF审查过程
- 保持注册信息的准确性和及时性
重要提示:
- 未注册的值可能在不同实现中冲突
- 使用保留范围的值需要遵循RFC规定的过程
- IANA注册表是SCTP互操作性的基础