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