Ubuntu

測試巨型幀是否實際工作

  • June 12, 2016

是否有命令來測試巨型幀是否實際工作?即某種“ping”,報告數據包是否在途中被分解。

我有一個帶有 Ubuntu VM 的 ESXi 主機,它通過 iSCSI 掛載 Dell MD3000i。我懷疑交換機上沒有啟用巨型幀,並且無法輕鬆獲得管理員訪問權限。我可以選擇將磁碟陣列直接連接到 ESXi 主機,但希望通過某種方式首先確認巨型幀是否存在問題。

啟用巨型幀意味著允許更大的最大傳輸單元 (MTU),通常通過將 MTU 設置為 9000。

要驗證這是否有效,您可以在 Windows 中使用 ping 並使用 -l 標誌設置數據包大小,使用 -f 標誌設置數據包中的“不分段”標誌。

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 個字節。因此,要檢查 MTU 是否為 9000,您實際上需要將 ping 數據包大小設置為 9000-28 = 8972。

更新我發現了一些資源,它們將專門找出主機和目標之間路徑上的 MTU:

  • 對於Windows
  • 對於 *nix tracepath 或 traceroute –mtu

還有一些關於找到路徑的 MTU 的討論

引用自:https://serverfault.com/questions/234311