跳到主要内容

2. 概述

分组化层路径 MTU 发现 (Packetization Layer Path MTU Discovery, PLPMTUD) 是一种供 TCP 或其他 Packetization Protocols 使用的方法, 它通过使用逐渐增大的分组进行探测, 动态发现一条路径的 MTU. 它与 RFC 1191 和 RFC 1981 中规定的基于 ICMP 的 Path MTU Discovery 机制结合使用时效率最高, 但由于它不依赖 ICMP 消息的递送, 因而解决了经典技术中的许多健壮性问题.

该方法适用于 TCP 以及其他负责选择分组边界 (例如段大小) 的传输层或应用层协议, 前提是这些协议具有一种确认结构, 能够向发送方及时且准确地指示哪些分组已丢失.

一般策略

一般策略是让 Packetization Layer 使用逐渐增大的分组探测路径, 从而找到合适的 Path MTU. 如果一个探测分组 (probe packet) 成功递送, 则将有效 Path MTU 提高到该探测大小.

探测分组的孤立丢失 (无论是否伴随 ICMP Packet Too Big 消息) 被视为 MTU 限制的指示, 而不是拥塞指示. 仅在这种情况下, Packetization Protocol 允许在不调整拥塞窗口的情况下重传任何缺失数据.

如果在探测过程中发生超时或有额外分组丢失, 则认为该探测没有结论 (例如, 丢失的探测分组不一定表示该探测超过了 Path MTU). 此外, 这些丢失会像任何其他拥塞指示一样处理: 必须按照相关拥塞控制标准 [RFC2914] 调整窗口或速率. 探测可以在一段延迟之后恢复, 延迟时长由检测到的故障性质决定.

搜索技术

PLPMTUD 使用一种搜索技术来寻找 Path MTU. 每次有结论的探测都会缩小 MTU 搜索范围: 成功探测会提高下限, 失败探测会降低上限, 从而逐步收敛到真实的 Path MTU. 对于大多数传输层, 一旦搜索范围已经足够窄, 使得更大的有效 Path MTU 带来的收益小于寻找它所需的搜索开销, 就应停止搜索.

最可能 (且最不严重) 的探测失败原因是链路在探测期间发生了与拥塞相关的丢失. 在这种情况下, 一旦 Packetization Layer 已完全适应拥塞并从丢失中恢复, 就适合重试相同大小的探测. 在其他情况下, 额外丢失或超时表示链路或 Packetization Layer 存在问题. 在这些情形中, 宜根据错误严重程度使用更长的延迟.

可使用一个可选的验证过程, 来检测提高 MTU 是否会导致分组丢失率上升.