RFC 9221 - QUIC 的不可靠数据报扩展
- 状态: Proposed Standard
- 发布日期: 2022 年 3 月
- Stream: IETF
- 勘误: 无勘误
摘要
本文档定义 QUIC 传输协议的一项扩展, 以支持在 QUIC 连接上发送和接收不可靠数据报 (datagram).
本备忘录状态
这是一份 Internet Standards Track 文档.
本文档是 Internet Engineering Task Force (IETF) 的产物. 它代表 IETF 社区的共识. 它已经过公开审查, 并已由 Internet Engineering Steering Group (IESG) 批准发布. 关于 Internet 标准的更多信息, 见 RFC 7841 第 2 节.
关于本文档当前状态, 任何勘误以及如何提供反馈的信息, 可从 https://www.rfc-editor.org/info/rfc9221 获取.
版权声明
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.
本文档受 BCP 78 以及 IETF Trust 在本文档发布之日有效的 Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) 约束. 请仔细阅读这些文件, 因为它们说明了您对本文件的权利和限制. 从本文档提取的代码组件必须包含 Trust Legal Provisions 第 4.e 节所述的 Revised BSD License 文本, 并按 Revised BSD License 所述在无保证的情况下提供.
目录
-
- 引言
-
- 动机
-
- 传输参数
-
- 数据报帧类型
-
- 行为与用法
-
- 安全考虑
-
- IANA 考虑
-
- 参考文献
- 致谢
- 作者地址
1. 引言
QUIC 传输协议 [RFC9000] 提供安全的多路复用连接, 用于传输可靠的应用数据流. QUIC 使用多种帧类型在分组内传输数据, 每种帧类型定义其包含的数据是否会被重传. 可靠的应用数据流使用 STREAM 帧发送.
某些应用, 尤其是需要传输实时数据的应用, 更倾向于以不可靠方式传输数据. 过去, 这些应用直接构建在 UDP [RFC0768] 之上作为传输, 并通常使用 DTLS [RFC6347] 增加安全性. 将 QUIC 扩展为支持传输不可靠应用数据, 为安全数据报提供了另一种选择, 并额外带来与可靠流共享密码学与认证上下文的好处.
本文档定义两种新的 DATAGRAM QUIC 帧类型, 用于携带应用数据且不要求重传.
1.1. 需求规范
本文档中的关键词 "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" 和 "OPTIONAL" 应按照 BCP 14 [RFC2119] [RFC8174] 解释, 且仅当它们以全大写形式出现时适用, 如本文所示.
2. 动机
在 QUIC 上传输不可靠数据相对于现有方案具有以下优势:
- 希望同时使用可靠流和不可靠流与同一对端通信的应用, 可通过在可靠 QUIC 流与不可靠 QUIC 数据报流之间共享单次握手和认证上下文而受益. 与分别打开 TLS 连接和 DTLS 连接相比, 这可以降低握手所需的延迟.
- 与 DTLS 握手相比, QUIC 使用更精细的丢包恢复机制. 这可使 QUIC 数据的丢包恢复更快发生.
- QUIC 数据报受 QUIC 拥塞控制约束. 对可靠与不可靠数据使用单一拥塞控制可以更有效且高效.
这些特性可用于优化音视频流媒体应用, 游戏应用以及其他实时网络应用.
不可靠 QUIC 数据报也可用于在 QUIC 之上实现 IP 分组隧道, 例如用于虚拟专用网络 (VPN). 网络层隧道协议通常需要一次可靠且经过认证的握手, 随后进行不可靠的安全通信.
3. 传输参数
本文档定义一个新的传输参数 max_datagram_frame_size (值为 0x20). 该参数表示端点愿意接收的 DATAGRAM 帧的最大大小 (包括帧类型, 长度和载荷), 单位为字节.
4. 数据报帧类型
本文档定义两种新的帧类型:
- DATAGRAM (0x30): 包含应用数据的 DATAGRAM 帧. 该帧不包含长度字段; 数据延伸至分组末尾.
- DATAGRAM_WITH_LEN (0x31): 包含应用数据的 DATAGRAM 帧. 该帧包含长度字段.
5. 行为与用法
5.1. 多路复用数据报
DATAGRAM 帧在 QUIC 分组内与其他 QUIC 帧多路复用.
5.2. 确认处理
尽管 DATAGRAM 帧在丢失时不会被重传, 它们仍会被确认. 这使发送方可维护拥塞控制状态, 并可能收集关于交付的统计信息.
5.3. 流量控制
DATAGRAM 帧不受流量控制约束. max_datagram_frame_size 传输参数限制单个帧的大小, 但对字节或帧的总数没有限制.
5.4. 拥塞控制
DATAGRAM 帧受拥塞控制. 发送 DATAGRAM 帧时, 发送方 MUST 遵守拥塞控制器的限制.
6. 安全考虑
本文档的安全考虑与 QUIC [RFC9000] 的安全考虑类似. 使用不可靠数据报会引入一些额外考虑, 例如若数据报被用于反射流量, 则存在放大攻击的可能.
7. IANA 考虑
7.1. QUIC 传输参数
本文档在 "QUIC Transport Parameters" 注册表中注册一个新值:
- Value: 0x20
- Parameter Name: max_datagram_frame_size
- Status: permanent
- Specification: RFC 9221
7.2. QUIC 帧类型
本文档在 "QUIC Frame Types" 注册表中注册两个新值:
- Value: 0x30-0x31
- Frame Name: DATAGRAM
- Status: permanent
- Specification: RFC 9221
8. 参考文献
8.1. 规范性参考文献
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, https://www.rfc-editor.org/info/rfc2119.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, May 2021, https://www.rfc-editor.org/info/rfc9000.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, https://www.rfc-editor.org/info/rfc8174.
8.2. 资料性参考文献
[RFC0768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, DOI 10.17487/RFC0768, August 1980, https://www.rfc-editor.org/info/rfc0768.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012, https://www.rfc-editor.org/info/rfc6347.
致谢
作者感谢相关贡献者.
作者地址
Tommy Pauly Apple Inc. Email: [email protected]
Eric Kinnear Apple Inc. Email: [email protected]
David Schinazi Google LLC Email: [email protected]