题 测试巨型帧是否真正起作用


是否有命令来测试巨型帧是否真的有效?即某种“ping”,报告该包是否在途中被破坏。

我有一台带有Ubuntu VM的ESXi主机,可通过iSCSI安装Dell MD3000i。我怀疑交换机上没有启用巨型帧,并且无法轻松获得管理员访问权限。我可以选择将磁盘阵列直接连接到ESXi主机,但是想要一些确认巨型帧首先出现问题的方法。


28
2018-02-11 10:53






答案:


启用巨型帧意味着允许更大的最大传输单元(MTU),通常通过将MTU设置为9000。

要验证这是否有效,您可以使用 在Windows中ping 使用-l标志设置数据包大小,使用-f标志设置数据包中的Do not Fragment标志。

ping my.test.host -f -l 8972

如果数据包碎片化,你会看到

Packet needs to be fragmented by DF set

代替你通常会看到的东西。

对于Linux, ping命令 使用不同的标志。 -s 设置数据包大小,和 -M do 集不要碎片。所以上面的命令是:

ping my.test.host -M do -s 8972

通过调整数据包大小,您可以确定链接的mtu是什么。这将代表路径中任何设备允许的最低mtu,可能是您的交换机,计算机,目标或其他任何设备。

这本身并不能告诉您最低MTU的位置 - 您可以通过将测试运行到路径中的不同设备来解决这个问题,但是可能始终存在限制MTU但不显示的透明路由器对于 traceroute

注意 对于ICMP报头,有28字节的开销,因此MTU比通过上述方法建立的数字大28个字节。因此,要检查9000的MTU,您实际上需要将ping数据包大小设置为9000-28 = 8972。

更新 我找到了一些资源,它们将专门计算出主机和目标之间路径的MTU:

  • 对于Windows mturoute
  • 对于* nix tracepath或traceroute --mtu

关于找到路径的MTU的更多讨论


42
2018-02-11 12:04



+1。很好的答案。我也想到了这一点,但不确定是否允许他检测开关支持的帧大小是什么。我没想到它是测试路径MTU。 - joeqwerty
很好..在Windows上。小改动使其适用于Linux。 [ping 10.1.1.101 -s 1472]其中1472是MTU大小。请编辑您的问题以包含此内容,我会接受 - pufferfish
这是一个使用dunxd描述的方法的实用程序: elifulkerson.com/projects/mturoute.php - Chris
好的 - 手册页会立即帮助你,但我已经更新了Linux的具体细节。测试工作正常需要片段标志,这在Linux ping中并不像在Windows中那么明确。 - dunxd
如果首先在ESXi主机上启用SSH并登录,则可以使用 vmkping -d -s 8972 10.1.1.101,其中-s设置数据包大小,-d设置Do Not Fragment标志。 - Eric3


我不确定这会有用,但你可以尝试一下:

在具有MDSM客户端的计算机上,确保支持并启用了Jumbo Frames,然后转到MDSM客户端中的support选项卡并选择“Gather Support Information”链接,在MDSM客户端上选择要下载文件的位置,在MDSM客户端上启动数据包捕获,然后单击开始按钮以开始收集和下载支持信息(zip文件)。收集/下载完成后,查看捕获并查看以太网帧从MD3000i到MDSM客户端的大小。如果交换机,MD300i和MDSM客户端都配置为巨型帧,您应该在捕获中看到以太网帧大小。


1
2018-02-11 11:52





在ESXi中,您需要指定要使用的接口,否则通过mgmt接口路由ping,加上-d设置DF(不分段):

vmkping -I vmkX -s 8972 -d x.x.x.x.

http://kb.vmware.com/kb/1003728


1
2017-11-25 19:34





您也可以通过SSH从ESXi控制台进行检查:打开Security-> Firewall-> Remote Tech.support(SSH),然后在ssh登录后执行“vmkping -s 8000”或类似的操作(不要完全记住其选项)


-1
2018-02-20 10:43



查找选项,有人可能会投票给你。 - dunxd