无法对 MTU 为 9000(巨型帧)的设备进行 ping 操作,但会显示默认 ping 错误消息

无法对 MTU 为 9000(巨型帧)的设备进行 ping 操作,但会显示默认 ping 错误消息

我需要设置一个启用巨型帧的本地连接。

我将网络适配器的 MTU 设置为 9000。

~$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 10.0.0.3  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::215:5dff:fe8a:1792  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:8a:17:92  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5  bytes 398 (398.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我检查了我的网络适配器设置,一切正常。我使用的是 WSL2,Ubuntu 和我的网络适配器设置中的 MTU 大小为 9000(使用netshGet-NetAdapterAdvancedProperty来自 Powershell)。

但是,当我通过指定数据包大小来 ping 远程设备 (IP 10.0.0.10) 时,我遇到了失败。奇怪的是,显示的不是“大数据包”错误消息,而只是“ping 失败”。为了进行比较,让我向您展示正常 ping (#1)、数据包过大 (#2) 和应由巨型帧处理的数据包 (#3) 的 ping 的结果。

# 1.
~$ ping 10.0.0.10
PING 10.0.0.10 (10.0.0.10) 56(84) bytes of data.
64 bytes from 10.0.0.10: icmp_seq=2 ttl=64 time=1.49 ms

# 2.
~$ ping 10.0.0.10 -c 10 -M do -s 10000
PING 10.0.0.10 (10.0.0.10) 10000(10028) bytes of data.
ping: local error: message too long, mtu=9000

# 3. 
~$ ping 10.0.0.10 -c 10 -M do -s 8900
PING 10.0.0.10 (10.0.0.10) 8900(8928) bytes of data.
--- 10.0.0.10 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9368ms

如您所见,行为 #1 和 #2 是正常的,但 #3 则不正常。数据包大小不是太大,MTU 无法处理(否则,我会遇到与 #2 相同的错误)。

我在网上查找了这个问题并找到了以下答案:我的 PC 配置正确,但接收设备的 MTU 不够大。但是,该设备是专门为处理这些大数据包而设计的,我联系了该设备的制造商,他们告诉我它可以原生处理巨型帧。

问题似乎出在我的连接上,但我找不到任何东西。

相关内容