在談 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 |
先來看一下 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 thoughts on “Linux – Jumbo frame”