1,785 瀏覽數

Linux – Jumbo frame

在談 Jumbo frame 前,我們先來看看 Frame 是在 OSI 7 Layers 的哪一層,以及它包含了哪一些的資料量.

OSI Model – 轉貼至 http://en.wikipedia.org/wiki/OSI_model
  Data unit Layer Function
Host
layers
Data 7. Application Network process to application
6. Presentation Data representation, encryption and decryption, convert machine dependent data to machine independent data
5. Session Interhost communication, managing sessions between applications
Segments 4. Transport End-to-end connections, reliability and flow control
Media
layers
Packet/Datagram 3. Network Path determination and logical addressing
Frame 2. Data link Physical addressing
Bit 1. Physical Media, signal and binary transmission

frame
先來看一下 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

其他細節就不再多序訴說了!!
所以 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 的資料.時間長久下來資料就會浪費更多.

也因此 Jumbo frame 出現了!!它的資料最大可以到 9000 bytes 在 Linux 用 #ifconfig 就可以看到目前的最大資料量是多少!!

[root@benjr ]# ifconfig eth2
eth2      Link encap:Ethernet  HWaddr 00:1A:64:22:04:83 
          inet addr:192.8.1.55  Bcast:192.8.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21a:64ff:fe22:483/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1440102 errors:0 dropped:0 overruns:0 frame:0
          TX packets:269896 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:188856502 (180.1 MiB)  TX bytes:18973940 (18.0 MiB)
          Interrupt:177

MTU:1500 (Maximum Transmission Unit )的縮寫,就是目前系統預設的最大資料量.可以直接透過 #ifconfig 設定!!目前最大支援到 9000 bytes.

[root@benjr ]# ifconfig eth2 mtu 9000

[root@benjr ]# ifconfig eth2
eth2      Link encap:Ethernet  HWaddr 00:1A:64:22:04:83 
          inet addr:192.8.1.55  Bcast:192.8.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21a:64ff:fe22:483/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9000  Metric:1
          RX packets:1440102 errors:0 dropped:0 overruns:0 frame:0
          TX packets:269896 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:188856502 (180.1 MiB)  TX bytes:18973940 (18.0 MiB)
          Interrupt:177

#ifconfig 是暫時生效的如果要讓 MTU 在開機時就設定好還是需要修改設定檔 /etc/sysconfig/network-scripts/ifcfg-ethx.

[root@benjr ]# vi /etc/sysconfig/network-scripts/ifcfg-eth2
# Please read /usr/share/doc/initscripts-*/sysconfig.txt
# for the documentation of these parameters.
TYPE=Ethernet
DEVICE=eth2
BOOTPROTO=dhcp
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
MTU=9000

還有一種 Super jumbo frames 可支援到 64000 bytes.雖然 Jumbo frame 可以讓網路效能提昇但是問題來了,並不是每一個 switch 或是網卡都支援 Jumbo frame.所以到頭來 frame 還是會被切割成較小的 frame.至於你要看 switch 或是網卡有沒有支援 Jumbo frame.在 ping 的時候加入參數(-s) 指定資料大小.

[root@benjr ]# ping "IP Address" -s 5000

如果 ping 沒有反映這時就要檢查一下你的 switch 或是網卡有沒有支援 Jumbo frame.

4 個網友的想法 “Linux – Jumbo frame

  1. 自動參照通知: iperf – MTU | Benjr.tw

  2. 自動參照通知: Pktgen 壓力測試 | Benjr.tw

  3. 自動參照通知: ConnectX®-3 EN 10 / 40 Gigabit Ethernet | Benjr.tw

  4. 自動參照通知: 硬體裝置 | Benjr.tw

發表迴響