2,567 瀏覽數

iperf – MTU

MTU 是什麼先來了解什麼是 Frame.
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 的基礎設定請先參考 http://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 詳細設定請參考 http://benjr.tw/16066

測試環境如下:
iperf01
基本上只要兩台 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 設定大一點,效能或許可以增加.

發表迴響