IPv6:使用大于默认路由的 mtu 的链路 mtu

IPv6:使用大于默认路由的 mtu 的链路 mtu

配置 IPv6 LAN 时,可能需要使用路由器通告来宣布链路 MTU 为标准 1500 字节或更大的值,以便能够使用巨型帧,也许是 9000。这将允许 LAN 上的主机之间的通信使用尽可能大的帧。如果到 IPv6 互联网的默认路由必须遍历某种类型的6合4隧道,如果使用 PPPoE,则 MTU 通常为 1480 或 1472。

LAN 主机之间的通信应该不会中断,但默认路由上的流量的正常事件链将有所不同。在大多数连接的握手过程中,包含大量数据的第一个数据包几乎总是大于默认路由的 MTU,从而促使路由器丢弃该数据包并发送 ICMPv6 数据包太大消息(类型 2)。我推测大多数操作系统都会缓存按目标地址进行的路径 MTU 发现的结果,因此这种交互几乎会发生在所有的默认路由连接中。这种交换最多只需要几十毫秒,因此我认为它不会引起严重的性能问题。

问题是:这种配置是否被视为最佳实践?是否最好使用等于(或小于)默认路由路径的 MTU 的链路 MTU?有没有这方面的文档?

                    LAN          WAN

hostA -----\                     v4 WAN Link / 6in4 tunnel
            \  MTU 9000            MTU 1500     MTU 1480
             |---------- router ------------------------  -  -  -
            /                    IPv4 Internet, 6in4 endpoint -->
hostB -----/

          <<< router adv
                  prefix
                   RDNSS
                MTU 9000
                     etc

Example TCP connection:

TCP(SYN, 94 bytes)-------------------------------------------->
<----------------------------------------TCP(SYN/ACK, 86 bytes)
TCP(ACK/PSH, 1635 bytes)---X
<--------ICMP(too big, MTU=1480)
TCP(ACK/PSH, 1480 bytes)-------------------------------------->
...

答案1

我认为这样的设置非常合理。客户端和默认网关之间会有很多数据包过大 (PTB) 消息,但是当您在 LAN 上使用巨型 MTU 时,您可能会这样做,因为 LAN 上本来就有大量流量可以从中受益。一些额外的数据包甚至不会被注意到。

我确实看到一些消费者 CPE 在路由器广告中发送 MTU 大小为 1480(或 1472 等)。对 LAN 流量的影响不会太大(最多 1.9%),并且至少会阻止默认网关和客户端之间的 PTB 消息,尽管它们可能仍然来自互联网上更小的链接。我想这取决于你的优先事项。

我个人会一直优化网络,完全不用担心 PTB 消息。

答案2

我认为 MTU 应该是链接的 MTU,而不是其他的。

我认为,假设/优化本地链路之外的较低 MTU 是过早优化。事实上,您正在损害所有本地连接。

任何操作系统 - 无论是 IPv4 还是 v6 都会正确理解到端点的减少的 MTU,并且不会为其发出的每个数据包生成 PTB(如果是 v6 的话),而只会在建立新连接时生成一次。

原因很明显——PMTUD 无论如何也需要工作。

此外,对于通过 RA/路由器通告选项公布的 IPv6 MTU,RFC 4861 指出 MTU 是链路的 MTU……而不是下一跳或其他任何东西。我认为这也非常清楚。

如果您想要优化,我建议在路由器上使用 MSS 夹紧。

相关内容