跳到主要内容

1. Introduction (简介)

1. Introduction (简介)

当一个 IPv6 节点 (node) 需要向另一个节点发送大量数据时, 数据以一系列 IPv6 数据包 (packets) 的形式传输。这些数据包的大小可以小于或等于路径 MTU (Path MTU, PMTU)。或者, 它们可以是更大的数据包, 被分片 (fragmented) 成一系列片段 (fragments), 每个片段的大小小于或等于 PMTU。

通常情况下, 这些数据包最好具有能够成功穿越从源节点 (source node) 到目的节点 (destination node) 的路径而无需进行 IPv6 分片的最大尺寸。这个数据包大小被称为路径 MTU (Path MTU), 它等于路径中所有链路的最小链路 MTU (link MTU)。本文档定义了一种标准机制, 用于节点发现任意路径的 PMTU。

IPv6 节点应该实现路径 MTU 发现 (Path MTU Discovery), 以便发现并利用 PMTU 大于 IPv6 最小链路 MTU [RFC8200] 的路径。一个最小化的 IPv6 实现 (例如, 在引导 ROM 中) 可以选择不实现路径 MTU 发现。

未实现路径 MTU 发现的节点必须使用 [RFC8200] 中定义的 IPv6 最小链路 MTU 作为最大数据包大小。在大多数情况下, 这将导致使用比必要更小的数据包, 因为大多数路径的 PMTU 都大于 IPv6 最小链路 MTU。一个节点发送比路径 MTU 允许的数据包小得多的数据包会浪费网络资源, 并且可能获得次优的吞吐量 (throughput)。

实现了路径 MTU 发现并发送大于 IPv6 最小链路 MTU 的数据包的节点, 如果 ICMPv6 [ICMPv6] 消息被阻止或未被传输, 则容易出现连接问题。例如, 这将导致正确完成 TCP 三次握手 (three-way handshake) 但在传输数据时挂起的连接。这种状态被称为黑洞连接 (black-hole connection) [RFC2923]。路径 MTU 发现依赖 ICMPv6 Packet Too Big (PTB) 消息来确定路径的 MTU。

本文档中定义的路径 MTU 发现的扩展可以在 [RFC4821] 中找到。RFC 4821 定义了一种分组层路径 MTU 发现 (Packetization Layer Path MTU Discovery, PLPMTUD) 方法, 设计用于不能保证将 ICMPv6 消息传递给主机的路径。

注意: 本文档是对 [RFC1981] 的更新, 而 RFC 1981 是在 [RFC2119] 发布之前发布的。因此, 尽管 RFC 1981 使用了大写和小写的 "should/must" 风格语言, 但本文档不引用 RFC 2119 的定义, 并且这些词只使用小写。