Ubuntu
測試巨型幀是否實際工作
是否有命令來測試巨型幀是否實際工作?即某種“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