MTU(Maximum TransmissionUnit,最大傳輸單元)是指通信協(xié)議的某一層所能通過(guò)的最大數(shù)據(jù)包的大小(單位為字節(jié))。對(duì)于各種路由器來(lái)說(shuō),最佳的MTU值通常都是默認(rèn)值。雖然有時(shí)更改MTU值可提高路由器的工作性能,網(wǎng)絡(luò)速度看起來(lái)更快(一些小技巧類文章經(jīng)常會(huì)提供這樣的建議),但實(shí)際上這樣做往往會(huì)導(dǎo)致出現(xiàn)其他問(wèn)題,如撥號(hào)頻繁掉線、反復(fù)下載、游戲丟包等等。
因?yàn)樵诰W(wǎng)絡(luò)傳輸中,每個(gè)信息都會(huì)被“ 打包”傳送,類似快遞使用的標(biāo)準(zhǔn)包裝箱、包裝袋,大小就是MT U值,這樣可以提高傳輸效率。理論上,在電腦、交換機(jī)、路由器及能訪問(wèn)互聯(lián)網(wǎng)的所有設(shè)備上的MTU值應(yīng)該設(shè)置為同一大小,比如MTU=1500。當(dāng)然,這也僅僅是理論而已,因?yàn)樵凇按虬钡倪^(guò)程中,局端或設(shè)備都會(huì)在每一個(gè)數(shù)據(jù)包頭加入自己的信息,占用幾個(gè)字節(jié),這樣就不可能一路全都是MTU=1500了。
MTU設(shè)置不能一個(gè)值天下通用,所以我們講求合理設(shè)置MTU,首先要知道:
1. 本地MTU值大于網(wǎng)絡(luò)MTU值時(shí),本地傳輸?shù)臄?shù)據(jù)包過(guò)大會(huì)導(dǎo)致網(wǎng)絡(luò)拆包后重新組包傳輸,不但產(chǎn)生額外的數(shù)據(jù)包,而且消耗了“拆包、組包”的時(shí)間。
2. 本地MTU值小于網(wǎng)絡(luò)MTU值時(shí),本地傳輸?shù)臄?shù)據(jù)包可以直接傳輸,但是未能完全利用網(wǎng)絡(luò)給予的數(shù)據(jù)包傳輸尺寸的上限值,傳輸能力未完全發(fā)揮。
很明顯,所謂合理地設(shè)置MTU值,就是讓本地的MTU值與網(wǎng)絡(luò)的MTU值一致,這樣既能完整發(fā)揮傳輸性能,又可以讓數(shù)據(jù)包無(wú)需拆組,流暢傳輸(圖1)。
具體來(lái)說(shuō),一級(jí)運(yùn)營(yíng)商(比如聯(lián)通、電信、移動(dòng)等等)的MTU都是標(biāo)準(zhǔn)的1500,所以使用光貓通過(guò)PPPOE協(xié)議直撥上網(wǎng)時(shí)沒(méi)有中間設(shè)備,都是默認(rèn)的M T U =1500就好。但如果是用路由器連接光貓,再由路由去撥號(hào),那么理論MTU就應(yīng)除去PPPOE協(xié)議必需的8個(gè)字節(jié)的設(shè)備頭開(kāi)銷,變成1492。因此,路由器出廠最好都是默認(rèn)MTU=1492較為合理。但實(shí)際上絕大多數(shù)的路由器出廠默認(rèn)設(shè)置都是MTU=1500,這樣如果使用PPPOE協(xié)議撥號(hào)驅(qū)動(dòng)光貓,MTU值必然不對(duì)了。每個(gè)數(shù)據(jù)“包”的大小不一樣,局端服務(wù)器會(huì)認(rèn)為這是有問(wèn)題的,進(jìn)而“踢”你的設(shè)備下線,路由器認(rèn)為只是斷線,于是自動(dòng)重?fù)堋@樣你明白故障出在哪里了吧?
因此,設(shè)置正確的MTU值是非常必要的,而設(shè)置MTU的大小是一個(gè)反復(fù)試驗(yàn)的過(guò)程:由最大值1500開(kāi)始下降,直至問(wèn)題解決。當(dāng)然,這也不是盲人摸象,筆者整理出了幾個(gè)常用的MTU典型值供大家參考,然后跟著此方法做,就能找到自家網(wǎng)絡(luò)配置中各設(shè)備最正確的MTU值設(shè)置。MTU = 1500:以太網(wǎng)信息包最大值,也是默認(rèn)值。是光貓直連PPPOE的典型設(shè)置;
MTU=1492:使用路由器等設(shè)備進(jìn)行PPPOE連接的最佳值;
MTU=1472:使用Ping的最大值(大于此值的信息包會(huì)先被分解);
MTU=1468:局域網(wǎng)內(nèi)的最佳值;
MTU=1430:PPTP的最佳值;
MTU=576:撥號(hào)連接到ISP的標(biāo)準(zhǔn)值。
好了,既然知道了原理,我們就可以進(jìn)行具體的設(shè)置。
首先要做的就是查看當(dāng)前自己的網(wǎng)絡(luò)MTU值。電腦直接插網(wǎng)線到光貓,不安裝路由器(通過(guò)交換機(jī)連接也可以)進(jìn)行PPPOE撥號(hào)上網(wǎng),成功連接后,在開(kāi)始菜單中輸入cmd并回車,進(jìn)入命令提示符模式(圖2)。
輸入以下命令并回車執(zhí)行:netshinterface ipv4 show subinterfaces
如圖3 中“本地鏈接* 1”顯示的MTU = 1492就是當(dāng)前環(huán)境的運(yùn)營(yíng)商寬帶MT U值。注意看,這并非光貓或者路由固件默認(rèn)的MTU =1500,這是因?yàn)閾芴?hào)設(shè)備換成了電腦,而非光貓自己,所以PPPOE需要占用8個(gè)字節(jié)的包頭信息,MTU=1492+8=1500。
前面也提到了,MTU值越大,發(fā)包量就越大,發(fā)包時(shí)間也就減小,理論上可以提高網(wǎng)絡(luò)速率。既然明白了這一點(diǎn),我們就可以測(cè)試出適合自己設(shè)備的MTU最大值,用這一MTU值上網(wǎng)以獲得最高的網(wǎng)絡(luò)速度。
首先使用路由器進(jìn)行PPPOE撥號(hào)上網(wǎng),將電腦連接到路由器上后,在cmd命令提示符下輸入ping -f -l1480www.baidu.com并執(zhí)行。注意,這里起始數(shù)值是自由設(shè)置的,范圍建議從1480開(kāi)始(由大到小逐步縮小范圍)。
這時(shí)如果看到提示“需要拆分?jǐn)?shù)據(jù)包但是設(shè)置 DF?!保▓D4)說(shuō)明MTU值過(guò)大,把MTU值降低測(cè)試:繼續(xù)輸入命令ping -f -l1450 www.baidu.com。
這時(shí)可以看到Ping值出來(lái)了,且并未拆分(圖5),說(shuō)明MTU包小于傳輸能力,那就改為逐步增加,繼續(xù)測(cè)試,比如ping -f -l1451 www.baidu.com、ping -f -l 1452www.baidu.com,直到重新出現(xiàn)“需要拆分?jǐn)?shù)據(jù)包但是設(shè)置 DF?!钡奶崾緸橹?,比如筆者最后得到的不需要拆分的最大MTU包是1450。
這時(shí),將得到的這個(gè)數(shù)值再加上數(shù)據(jù)包頭大小28字節(jié)(包含設(shè)備的IP包頭20字節(jié)和PPPOE的8字節(jié),記住這個(gè)數(shù)就好),比如筆者的MTU=1450+28=1478,填寫到路由器的MTU值設(shè)置中,再用路由撥號(hào)就可以了,頻繁斷網(wǎng)問(wèn)題絕對(duì)不會(huì)再出現(xiàn),而且基本都能達(dá)到滿速下載,也不會(huì)丟包了。
小提示
根據(jù)路由器的品牌、型號(hào)不同,設(shè)置MTU大小的選項(xiàng)位置有很大變化。一般來(lái)說(shuō),登錄路由器設(shè)置界面后,可以首先找到“高級(jí)”或“高級(jí)設(shè)置”界面,然后在其下的“接口”、“安裝”等選項(xiàng)中尋找WAN設(shè)置,點(diǎn)擊進(jìn)入后就能看到MTU選項(xiàng)了。也有些產(chǎn)品或設(shè)置界面是先進(jìn)入接口設(shè)置,然后尋找“高級(jí)-重設(shè)MTU”等設(shè)置。(圖6、圖7)
但不管是從何種途徑設(shè)置MTU,一定在設(shè)置前確定是WAN接口的MTU設(shè)置,如果是面向其他接口或路徑的MTU設(shè)置,使用我們測(cè)試得到的最優(yōu)化MTU尺寸可能造成一些其他問(wèn)題。