一、jumbo frames 相關
1、什麼是 jumbo frames
Jumbo frames 是指比标準Ethernet Frames長的frame,即比1518/1522 bytes大的frames,Jumbo frame的大小是每個裝置廠商規定的,不屬于IEEE标準;Jumbo frame 在full-duplex 的Ethernet網絡上運作;Jumbo frame定義了一個“link negotiation”協定,來和對端的裝置協商,是否對端裝置支援使用Jumbo frames;标準的以太網IP封包大小是:1500 bytes,不包含以太網頭和FCS的18 bytes(6+6+2+4),如果包含以太網頭和FCS,則為1518 bytes;Jumbo frame 一般指的是二層封裝三層IP封包的值大于9000bytes的封包。
Jumbo frames的提出背景:在1998年,Alteon Networks 公司提出把Data Link Layer最大能傳輸的資料從1500 bytes 增加到9000 bytes,這個提議雖然沒有得到IEEE 802.3 Working Group的同意,但是大多數裝置廠商都已經支援。
2、使用 jumbo frames 的優點
在資料傳輸時,由于IEEE的規定最大的幀規定為1,500比特(主機在早期的半雙功網絡中),是以需要數傳輸需要經過 資料的切要 --- 傳輸 ---資料組合 的過程。而使用的最大幀越小,傳輸包的量就越大,計算量相應會多,而産生的後果是:
- 增加主機的計算量,消耗CPU資源;
- 影響網絡傳輸的速度。
而使用大幀優點自然也不言而喻 ———— 降低CPU計算量、加快資料傳輸。
二、修改MTU值
上面啰嗦了一大堆,修改幀大小實際需要的操作就是修改MTU(Maximum Transmission Unit)值,即修改最大傳輸單元。修改方法如下:
1、ifconfig指令修改
ifconfig ${Interface} mtu ${SIZE} up
ifconfig eth1 mtu 9000
這個是最通用的方法,對所有的linux 發行版本都有效。缺點就是重新開機後失效,需要在開機項中加載。
2、修改配置檔案
CentOS / RHEL / Fedora Linux 下
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
#增加如下内容
MTU="9000"
#儲存後重新開機網卡生效
# service network restart
#啟用IPv6位址的,修改IPv6 mtu的參數為
IPV6_MTU="1280"
Debian / Ubuntu Linux 下
# vi /etc/network/interfaces
#增加如下值
mtu 9000
#儲存後,重新開機網絡生效
# /etc/init.d/networking restart
三、為什麼MTU最大值為9000位元組
從理論上計算,4 bytes的CRC最大支援12000 bytes大小的位元組,超過了就沒有辦法檢查了。另外還有其他一些協定如NFS等的限制。
最後需要注意的是,在經過交換網絡裝置時,僅僅修改主機端的MTU值是不行的,還需要交換網絡裝置上開啟jumbo frames功能。
四、MTU測試
使用ping指令,-l 指定包大小,-f 選項為通知作業系統不能私自更改該資料包大小。

使用英文作業系統時的提示為:Packet needs to be fragmented but DF set .
另外的,部分Linux系統還可以通過如下方式檢視、修改MTU值。
cat
echo "1460" >