MTU 是什麼先來了解什麼是 Frame.
先來看一下 Frame 在 TCP/IP Layer 2 Frame 的格式,有哪些資料:
- Destination MAC address :
對方目的地的 MAC address - source MAC address :
自己的 MAC address - Ethertype :
frame 的種類,有興趣請自行參考 wiki 網站 http://en.wikipedia.org/wiki/EtherType 說明 - Data :
資料 46bytes ~ 1500bytes - FCS :
Frame CheckSum
其他細節就不再多序訴說了!!
關於 iperf 的基礎設定請先參考 https://benjr.tw/462
MTU (Maximum Transmission Unit )的縮寫,就是目前系統預設的最大資料量.可以直接透過 #ifconfig 設定!!目前最大支援到 9000 bytes.
所以 frame 大小為 64bytes ~ 1518bytes(依據 data 大小來決定大小).這 data 大小定義是在10幾年前了,到目前網路環境已經從 10/100M 到 1G/10 G 的環境下,這樣的資料大小實在不符合效益.因為資料最大只能裝 1500 bytes.如果一筆 9000 bytes 大小的資料需要封裝成 6 個 frame.這樣就浪費了 18(frame 大小不包括 data) * 5(需多封裝 5 個 frame) = 90 bytes 的資料.時間長久下來資料就會浪費更多.
還有一種 Super jumbo frames 可支援到 64000 bytes.雖然 Jumbo frame 可以讓網路效能提昇但是問題來了,並不是每一個 switch 或是網卡都支援 Jumbo frame.所以到頭來 frame 還是會被切割成較小的 frame.至於你要看 switch 或是網卡有沒有支援 Jumbo frame.在iperf 的時候加入參數(-m) 其測試結果就可以得知目前環境所採用的 MTU 資料大小.
MTU 詳細設定請參考 https://benjr.tw/16066
測試環境如下:
基本上只要兩台 Linux 機台就可以做網路效能測試,當然兩張網卡速度要一致,並同時將這個程式安裝在 Server 和 Client 上面.
Server 端
[root@server ]# iperf -s -u
Client 端
[root@benjr ]# iperf -c 192.12.1.2 -t 60 -i 10 -m ------------------------------------------------------------ Client connecting to 192.12.1.2, TCP port 5001 TCP window size: 23.2 KByte (default) ------------------------------------------------------------ [ 3] local 192.12.1.1 port 57816 connected with 192.12.1.2 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 943 Mbits/sec [ 3] 10.0-20.0 sec 1.10 GBytes 942 Mbits/sec [ 3] 20.0-30.0 sec 1.10 GBytes 941 Mbits/sec [ 3] 30.0-40.0 sec 1.10 GBytes 941 Mbits/sec [ 3] 40.0-50.0 sec 1.10 GBytes 942 Mbits/sec [ 3] 50.0-60.0 sec 1.10 GBytes 942 Mbits/sec [ 3] 0.0-60.0 sec 6.58 GBytes 942 Mbits/sec [ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)
-m, –print_mss 顯示 MTU 的大小,通常沒有設定 Jumbo Frame 得到的值大多是 1500,你可以試看看把兩邊 Client , Server 的 MTU 設定大一點,效能或許可以增加.