3. Protocol Overview (协议概述)
3. Protocol Overview (协议概述)
本备忘录描述了一种动态发现路径 PMTU 的技术。基本思想是, 源节点最初假设路径的 PMTU 是路径中第一跳的 (已知) MTU。如果在该路径上发送的任何数据包因太大而无法被路径上的某个节点转发, 该节点将丢弃它们并返回 ICMPv6 Packet Too Big 消息。收到此类消息后, 源节点根据 Packet Too Big 消息中报告的限制跳 (constricting hop) 的 MTU 来降低其对路径 PMTU 的假设。降低的 PMTU 导致源发送更小的数据包或更改 EMTU_S 以使上层减少它发送的 IP 数据包的大小。
当源节点对 PMTU 的估计小于或等于实际 PMTU 时, 路径 MTU 发现过程结束。请注意, 在路径 MTU 发现过程结束之前, 可能会发生多次数据包发送/接收 Packet-Too-Big 消息的循环, 因为路径中可能有具有更小 MTU 的链路。
或者, 节点可以选择通过停止发送大于 IPv6 最小链路 MTU 的数据包来结束发现过程。
路径的 PMTU 可能会随时间而变化, 这是由于路由拓扑的变化。通过 Packet Too Big 消息检测到 PMTU 的降低。为了检测路径 PMTU 的增加, 节点定期增加其假设的 PMTU。这几乎总是会导致数据包被丢弃并生成 Packet Too Big 消息, 因为在大多数情况下路径的 PMTU 不会发生变化。因此, 检测路径 PMTU 增加的尝试应该不频繁地进行。
路径 MTU 发现支持多播 (multicast) 和单播 (unicast) 目的地。在多播目的地的情况下, 数据包的副本可能会经过许多不同的路径到达许多不同的节点。每个路径可能具有不同的 PMTU, 并且单个多播数据包可能导致多个 Packet Too Big 消息, 每个消息报告不同的下一跳 MTU。使用的路径集合中的最小 PMTU 值确定发送到多播目的地的后续数据包的大小。
请注意, 即使节点 "认为" 目的地连接到与自身相同的链路上, 也必须执行路径 MTU 发现, 因为它可能具有低于链路 MTU 的 PMTU。在邻居路由器充当某个目的地的代理 [ND] 的情况下, 目的地可能看起来是直接连接的, 但实际上它距离不止一跳。