服务器发送大于MTU的数据包

我有一台服务器正在传输数据。 我们遇到了一些问题,可以追溯到服务器发送巨大帧的事实,尽pipeifconfig报告MTU是1500.这怎么可能? 这个盒子正在运行CentOs 5,这是发生在ipv4上的。

我怎么能告诉服务器停止发送大小超过1500的数据包?

禁用大量发送卸载可能会解决这个问题。 我看到15k甚至30k包,不pipeMTU。

服务器会将数据包分成1500字节的大小,也可能是networking中的其他地方有一个小于1500的MTU,这可能是问题的原因。 你可以ping 1500的大小另一端?

 ping -s 1500 <ip> 

你也应该能够发送更大的数据包。 如果你,远端或其间的任何东西都在过滤ICMP数据包,那么很可能是阻塞了MTU发现数据包。
您将需要通过防火墙允许需要ICMP分片(types3,代码4)数据包

如果你正在捕获服务器上的数据包,那么你可能会看到TCP发送比MTU更大的数据段。 然而,线路上的数据包只有MTU大小。 您可以通过在networking设备(交换机)上捕获来validation这一点。或者,在远程(客户端)机器上捕获数据包将显示每个数据包<= MTU。

这是因为启用了TSO / GSO后,TCP段被NIC硬件分割成MTU大小的数据包。 由于tcpdump在软件层捕获,因此看到比MTU更大的段被发送到NIC卡进行进一步传输。

如果禁用NIC的tso / gso,那么您将看到所有传出数据包的MTU大小(更可能是pMTU大小)。