14. Datagram 大小
14. Datagram 大小
一个 UDP datagram 可以包含一个或多个 QUIC packet. datagram size 指承载 QUIC packet 的单个 UDP datagram 的 UDP payload 总大小. datagram size 包括一个或多个 QUIC packet header 和受保护的 payload, 但不包括 UDP 或 IP header.
maximum datagram size 定义为可以使用单个 UDP datagram 通过网络路径发送的最大 UDP payload 大小. QUIC MUST NOT 发送大于 maximum datagram size 的 datagram.
14.1 Initial Datagram 大小
客户端 MUST 将所有承载 Initial packet 的 UDP datagram 的 payload 扩展到至少 1200 字节. 发送此大小的 UDP datagram 可确保网络路径在两个方向上都支持合理的 Path Maximum Transmission Unit (PMTU). 这也有助于降低服务器向未验证客户端地址发送响应所造成的放大攻击幅度; 见第 8 节.
14.2 Path Maximum Transmission Unit
PMTU 是整个 IP packet 的最大大小, 包括 IP header, UDP header, 以及 UDP payload. UDP payload 包含一个或多个 QUIC packet header 和受保护的 payload.
datagram 中发送的所有 QUIC packet MUST 适配在 maximum datagram size 之内. 如果 QUIC packet 无法适配在 maximum datagram size 中, 则它 MUST 在单独的 datagram 中发送.
14.2.1 PMTUD 对 ICMP 消息的处理
实现 SHOULD 处理指示 packet 过大 (PTB) 的 ICMP 消息 [RFC1191][RFC8201].
14.3 Datagram Packetization Layer PMTU Discovery
Datagram Packetization Layer PMTU Discovery (DPLPMTUD) [RFC8899] 依赖于跟踪承载于 PMTU probe 中的 QUIC packet 的丢失或确认情况.
14.3.1 DPLPMTUD 与初始连接性
从 DPLPMTUD 的角度看, QUIC 是一种已确认的 packetization layer (PL). 因此, 一旦 QUIC 连接建立, QUIC 发送方就可以进入 DPLPMTUD BASE 状态 ([RFC8899] 第 5.2 节).
14.3.2 使用 DPLPMTUD 验证网络路径
QUIC 是已确认的 PL, 因此 QUIC acknowledgment 可用于确认某个特定大小的 packet 已被成功接收.
14.3.3 DPLPMTUD 对 ICMP 消息的处理
使用 DPLPMTUD 的 endpoint 需要知道可在某条路径上发送的 UDP payload 的最大大小.
14.4 发送 QUIC PMTU Probe
PMTU probe 是 ack-eliciting packet. endpoint 使用至少具有相应大小的 PMTU probe, 来验证路径是否能够支持特定 PMTU.
14.4.1 包含 Source Connection ID 的 PMTU Probe
依赖服务器 preferred address (第 9.6 节) 或连接迁移 (第 9 节) 到新路径的 endpoint SHOULD 确保这些路径上至少 PMTU 大小的 packet 可以被发送.