为什么当存在 ipsec 封装、GRE 或其他时我应该减少接口上的 MTU 而不是增加它?
我看到它的方式:一个1500字节的数据包到达路由器,然后有IPSEC封装,数据包变成1560字节。为什么我应该将 MTU 大小减少 60 字节而不是增加相同的 60 字节 [因为数据包大小现在是 1560 字节] 以避免碎片?
为什么当存在 ipsec 封装、GRE 或其他时我应该减少接口上的 MTU 而不是增加它?
我看到它的方式:一个1500字节的数据包到达路由器,然后有IPSEC封装,数据包变成1560字节。为什么我应该将 MTU 大小减少 60 字节而不是增加相同的 60 字节 [因为数据包大小现在是 1560 字节] 以避免碎片?
这完全取决于您通过隧道传输的网络。
如果该网络在您的控制之下,您可以增加其 MTU,以便它可以处理隧道有效负载以及封装开销。确保连接到该网络的所有设备都可以分别处理新的 MTU 或 L2 帧大小(“baby Giants”)。
如果底层网络不在你的控制之下——更常见的情况——那么你就不能这样做。由于封装的数据包超过了网络的 MTU,因此需要进行分段,这会给 IPsec 路由器增加额外的负载,并增加总开销。
因此,您可以在进入隧道之前降低MTU(对于使用隧道的所有节点)。这会在外部数据包中保留空间以适应开销而不会产生碎片。
所以基本上,要么
请注意,路径内分段是仅限 IPv4 的事情。IPv6 通过要求 PMTUD 来消除这一点,它应该自动处理所有这些。
另请注意,1500 字节是标准以太网上的 IP MTU 。还有其他具有不同 MTU 的 L2 协议。