linux下修改mtu值

不一樣的天空w發表於2019-05-21

一、jumbo frames 相關

1、什麼是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的同意,但是大多數裝置廠商都已經支援。

2、使用jumbo frames的優點

在資料傳輸時,由於IEEE的規定最大的幀規定為1,500位元(主機在早期的半雙功網路中),所以需要數傳輸需要經過 資料的切要 --- 傳輸 ---資料組合 的過程。而使用的最大幀越小,傳輸包的量就越大,計算量相應會多,而產生的後果是:

a:增加主機的計算量,消耗CPU資源;

b:影響網路傳輸的速度。

而使用大幀優點自然也不言而喻 ———— 降低CPU計算量、加快資料傳輸。

二、修改MTU值

上面囉嗦了一大堆,修改幀大小實際需要的操作就是修改MTU(Maximum Transmission Unit)值,即修改最大傳輸單元。修改方法如下:

1、ifconfig命令修改

ifconfig ${Interface} mtu ${SIZE} upifconfig eth1 mtu 9000 up

這個是最通用的方法,對所有的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 bit的CRC最大支援12000 bit大小的位元組,超過了就沒有辦法檢查了。另外還有其他一些協議如NFS等的限制。

最後需要注意的是,在經過交換網路裝置時,僅僅修改主機端的MTU值是不行的,還需要交換網路裝置上開啟jumbo frames功能。

四、MTU測試

使用ping命令,-l 指定包大小,-f 選項為通知作業系統不能私自更改該資料包大小

pingmtu

使用英文作業系統時的提示為:Packet needs to be fragmented but DF set .


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2645050/,如需轉載,請註明出處,否則將追究法律責任。

相關文章