MTU 9000 和 1500,当具有 MTU 1500 的机器向具有 MTU 9000 的机器发送数据时

网络工程 网络 联网 linux mtu
2022-02-17 05:10:03

我们在集群中有一些机器

Linux_a , linux_b配置的linux机器MTU 1500

而 linux 机器 -linux_1 and linux_2配置有MTU 9000

所以

linux机器 -linux_a and linux_b发送大量数据到linux_1 and linux_2

这是个问题吗?

注意-据我所知,只有这样的情况:从配置了 MTU 9000 的 linux 向具有 MTU 1500 的机器发送数据-是一个问题

2个回答

一般来说,应该避免这种情况,但在某些有限的情况下,它可能会起作用。问题源于没有第 2 层机制来表示不匹配或协商帧大小。

但是,只要较大的 MTU 从不发送大于较小 MTU 的任何内容,一切似乎都会正常工作。这通常只有在较小的 MTU 是唯一发起 TCP 连接的一方时才会发生;MSS 将从较大的一侧限制帧的大小。

注意:我在 iSCSI 的一些情况下完成了此操作。由于服务器从不打开连接,并且只响应客户端请求(永远不会大于客户端 MTU),因此它通常会工作。但是,当两个不匹配的客户端尝试通信时——例如。分布式文件系统,事情可能会崩溃。

通常,配置巨型帧会影响发送和接收帧。大于配置的最大值的接收帧将被丢弃。发送帧的大小可以达到最大值。

请注意,几乎所有网络通信都是双向的(除非您只使用基于数据报的 L4 协议,如 UDP)。很可能,MTU-1500 帧接收良好,而可能较大的回复被丢弃。

LAN(L2 网段)中的所有设备必须使用相同的最大帧大小,因为无法协商。在混合场景中,您需要使用不同的 VLAN。

有效负载大于 1500 字节的以太网帧通常是非标准的,因此它们只能用于非常受控的场景,您需要确保所有连接的主机都可以处理所有可能的帧大小。将它们混合在一个片段中迟早会引起麻烦。

此外,将这些巨型帧段连接到其他地方的 IPv4 路由器可能会因为在转发超大数据包时需要分段而承受相当大的压力。如果你真的需要巨型帧,你应该只在使用相同帧/数据包大小的主机之间使用它们——包括路由连接。

最好的解决方案是根本不使用巨型帧,或者使用专用 VLAN 并且不从巨型分段路由到 Internet。某些 NIC 可能不支持不同 VLAN 上的不同帧大小,因此您需要交换它们或使用专用 NIC。