测试巨型帧是否实际工作

puf*_*ish 27 ubuntu iscsi storage-area-network jumboframes

是否有测试巨型帧是否实际工作的命令?即某种“ping”报告数据包是否沿途被分解。

我有一个带有 Ubuntu VM 的 ESXi 主机,它通过 iSCSI 安装了 Dell MD3000i。我怀疑交换机上未启用巨型帧,并且无法轻松获得管理员访问权限。我可以选择将磁盘阵列直接连接到 ESXi 主机,但首先需要某种方式来确认巨型帧是否存在问题。

dun*_*nxd 42

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

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

ping my.test.host -f -l 8972
Run Code Online (Sandbox Code Playgroud)

如果数据包碎片化,您将看到

Packet needs to be fragmented by DF set
Run Code Online (Sandbox Code Playgroud)

代替您通常会看到的内容。

对于 Linux,ping 命令使用不同的标志。-s设置数据包大小,并-M do设置 Do Not Fragment。所以上面的命令是:

ping my.test.host -M do -s 8972
Run Code Online (Sandbox Code Playgroud)

通过调整数据包大小,您可以计算出链路的 mtu 是多少。这将代表路径中任何设备所允许的最低 mtu,可以是您的交换机、计算机、目标或介于两者之间的任何其他设备。

这本身不会告诉您最低 MTU 的位置 - 您可以通过对路径中的不同设备运行测试来解决这个问题,但总会有透明路由器限制 MTU 但不显示为traceroute

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

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

  • 对于 Windows路由
  • 对于 *nix tracepath 或 traceroute --mtu

还有一些关于寻找路径 MTU 的讨论

  • 好的 - 手册页会立即帮助你,但我已经更新了 Linux 的具体细节。不要碎片标志是测试正常工作所必需的,这在 Linux ping 中不像在 Windows 中那么清楚。 (2认同)