MTU(Maximum Transimission Unit)稱為最大傳輸單元,也就是網(wǎng)絡(luò)層能通過的最大數(shù)據(jù)包大小,最大傳輸單元這個參數(shù)與數(shù)據(jù)交換過程中各網(wǎng)絡(luò)設(shè)備的通信端口有關(guān)。目前,很多路由器和交換機允許通過的最大的數(shù)據(jù)包都超過了9K字節(jié)以上。在大多數(shù)網(wǎng)絡(luò)環(huán)境中,很多網(wǎng)絡(luò)設(shè)備都會采用默認(rèn)的MTU設(shè)置,在高速網(wǎng)絡(luò)環(huán)境中,一般需修改網(wǎng)絡(luò)設(shè)備所支持的MTU值,以便更高速的進(jìn)行數(shù)據(jù)交換,但是當(dāng)數(shù)據(jù)傳輸兩端的物理端口的MTU設(shè)置不一致時,就可能導(dǎo)致數(shù)據(jù)傳輸故障。
單位使用華為AR1220S路由器對外多個方向進(jìn)行連接,其中多個方向連接了其他廠商的路由器,按要求在路由器上配置運行了OSPF協(xié)議。配置完成后,進(jìn)行測試,各方向數(shù)據(jù)收發(fā)均正常。在運行了不到一周后,有同事反映至某個方向的網(wǎng)絡(luò)出現(xiàn)了中斷,筆者隨即在網(wǎng)絡(luò)中的一臺計算機上安裝了掉線報警系統(tǒng),對其他幾個方向和該方向的網(wǎng)間網(wǎng)地址及對端的網(wǎng)關(guān)進(jìn)行檢測,發(fā)現(xiàn)到該方向的所有網(wǎng)絡(luò)都不通。因為該方向僅有一條對外網(wǎng)絡(luò)就是到本單位,沒有到其他單位的冗余網(wǎng)絡(luò),所以如果不通,就會造成該方向的網(wǎng)絡(luò)對外全部中斷。
1.登錄到本端路由器上,Ping對端網(wǎng)間網(wǎng)地址,發(fā)現(xiàn)可以Ping通。使用display ip routing-table查看路由表,發(fā)現(xiàn)到這個方向的路由不存在,而物理端口運行狀態(tài)正常,只是OSPF協(xié)議中斷,看來是路由出現(xiàn)了問題,但是本端沒有修改路由配置,路由前期運行正常。既然可以Ping通,那很可能是對端進(jìn)行了不當(dāng)設(shè)置或出現(xiàn)了故障。
2.電話聯(lián)系對端網(wǎng)絡(luò)管理人員進(jìn)行詢問,對端網(wǎng)絡(luò)管理人員告訴筆者,他們并未修改路由器的相關(guān)配置,但是因網(wǎng)絡(luò)架溝時間要求緊,新購買的路由器尚未到貨,目前使用的路由器為日常做實驗和學(xué)習(xí)所使用的路由器,而且在出現(xiàn)網(wǎng)絡(luò)故障前,該單位對其網(wǎng)絡(luò)機房的供電電路進(jìn)行了整修,路由器不得已進(jìn)行了重新啟動。
既然對端網(wǎng)絡(luò)管理員說未做任何修改,前期可以正常運行,那么和OSPF協(xié)議相關(guān)的版本、區(qū)域號、計時器、認(rèn)證方式等相關(guān)參數(shù)的設(shè)置應(yīng)該是正常且可以相互匹配的。
3.使用display ospf peer brief命令,查看路由器的鄰居建立情況,發(fā)現(xiàn)鄰居狀態(tài)并沒有處于正常的full狀態(tài)而是處于exstatrt狀態(tài),看來是鄰接關(guān)系沒有建立成功。打開了路由器的Debug調(diào)試開關(guān)查看交互報文的相關(guān)信息,從收到信息可以看到,本端路由器可以正常接收到對端的hello報文,但是路由器在發(fā)送了DD報文后,對端路由器一直沒有返回回應(yīng)的DD報文。
4.電話聯(lián)系對端網(wǎng)絡(luò)管理員人員讓其提供路由器的Debug相關(guān)調(diào)試信息,從對端網(wǎng)絡(luò)管理員人員提供的信息可以看到,對端路由器在收到本端路由器的DD報文后,也發(fā)送了相應(yīng)的DD報文進(jìn)行回應(yīng),但是本端路由器確實沒有收到DD報文。
根據(jù)故障定位分析,問題是因本端路由器未收到對端的DD報文所致。DD報文不能成功接收,最常見的原因是網(wǎng)絡(luò)鏈路質(zhì)量很差,延遲過大導(dǎo)致,而完全無法接收,還是很少遇到。經(jīng)過查閱相關(guān)資料,筆者分析出導(dǎo)致本端路由器完全沒有接收到對端發(fā)出的DD報文或者說是完全拒絕對端路由器發(fā)出的DD報文,應(yīng)該可能是以下兩個原因:一是DD報文太大,當(dāng)DD報文太大,而對端路由器沒有進(jìn)行分片處理或者分片的長度超過了本端路由器接收的報文長度,本端路由器就會拒絕接收。二是對端路由器構(gòu)造的DD報文錯誤導(dǎo)致,當(dāng)DD報文錯誤時,本端路由器也會拒絕接收。
1.通過查看本端路由器的Debug調(diào)試信息,發(fā)現(xiàn)本端并沒有接收到對端發(fā)送的錯誤DD報文。排除了因?qū)Χ寺酚善鳂?gòu)造的DD報文錯誤導(dǎo)致網(wǎng)絡(luò)故障的可能性。
2.通過查看對端路由器的Debug調(diào)試信息,發(fā)現(xiàn)其構(gòu)造的DD報文長度為2000多字節(jié),而本端路由器端口所能接收的最大DD報文長度為路由器端口默認(rèn)支持的1500字節(jié)。
3.在本端路由器上使用ping -s 2000 -f x.x.x.x(x.x.x.x為對端路由器網(wǎng)間網(wǎng)IP地址,-s的參數(shù)為報文大小為2000字節(jié),-f為不進(jìn)行分片處理),發(fā)現(xiàn)無法Ping通對端路由器的網(wǎng)間網(wǎng)地址。那么,最可能的故障原因就是本端和對端路由器的MTU不一致導(dǎo)致。
4.在對端路由器上,使用相關(guān)命令,查看對連本端路由器的相關(guān)端口信息,發(fā)現(xiàn)該端口的The Maximum Transmit Unit為4500字節(jié)。而本端路由器的The Maximum Transmit Unit大小為默認(rèn)的1500字節(jié)。
5.在對端路由器使用相關(guān)命令修改其MTU大小為1500字節(jié),OSPF恢復(fù)正常,故障排除。
網(wǎng)絡(luò)故障的產(chǎn)生的原因是因為對端路由器為日常實驗和學(xué)習(xí)路由器,對相關(guān)端口的MTU大小進(jìn)行了修改,而在網(wǎng)絡(luò)溝連初期,因為網(wǎng)絡(luò)規(guī)模還不是很大,其DD報文大小未超過1500字節(jié)。而隨著網(wǎng)絡(luò)規(guī)模的不斷擴大,其DD報文也會逐漸變大,當(dāng)路由器重啟后,在兩個OSPF路由器初始化連接時要交換DD報文,以便進(jìn)行數(shù)據(jù)庫同步,由于網(wǎng)絡(luò)規(guī)模不斷擴大,數(shù)據(jù)庫的內(nèi)容就會相當(dāng)長,所以一般需要多個DD報文的交互來完成雙方LSDB的同步,而當(dāng)兩臺互連路由器端口的MTU不一致時,會因為DD報文過大造成MTU小的一方拒絕接收DD報文,造成OSPF協(xié)議協(xié)商失敗。
在網(wǎng)絡(luò)速率越來越快的情況下,正常為提高網(wǎng)絡(luò)設(shè)備的傳輸速度,可以將MTU盡可能的設(shè)置為最大,以減少數(shù)據(jù)包數(shù)量,因為這樣就會盡可能地減少了IP包頭數(shù)量過多而消耗帶寬。但也不是MTU越大越好,因為MTU越大,會造成傳送數(shù)據(jù)包的延遲也越大,數(shù)據(jù)包在構(gòu)造時產(chǎn)生錯誤的概率也越大,甚至?xí)斐蓤笪膩G失,在共享網(wǎng)絡(luò)或帶寬較少的情況下,會影響其他用戶網(wǎng)絡(luò)數(shù)據(jù)交換。
此外,為確保網(wǎng)絡(luò)傳輸速率,應(yīng)盡量避免數(shù)據(jù)包在傳輸過程中被分片,如果MTU過大,那么數(shù)據(jù)包在傳輸過程中就會被本來只負(fù)責(zé)數(shù)據(jù)交換而不需要進(jìn)行數(shù)據(jù)分片重組的交換機等網(wǎng)絡(luò)設(shè)備進(jìn)行分片重組,在傳輸過程中,如果需要交換機等網(wǎng)絡(luò)設(shè)備進(jìn)行分片重組,那么就會對網(wǎng)絡(luò)性能產(chǎn)生極大的影響,反而造成網(wǎng)絡(luò)速率會極度下降。
在默認(rèn)情況下,MTU的大小會根據(jù)數(shù)據(jù)傳輸終端和中間的網(wǎng)絡(luò)設(shè)備自動協(xié)商成允路徑中所允許的最大MTU,所以,在對網(wǎng)絡(luò)要求不高的情況下,正常不建議對網(wǎng)絡(luò)設(shè)備的MTU數(shù)值進(jìn)行重新設(shè)置。在鏈路速率高,且直連網(wǎng)絡(luò)設(shè)備端口都支持修改MTU的情況下,可以將MTU設(shè)置成最大,而不是使用其默認(rèn)的大小,從而可以有效地提高傳輸速率。筆者曾做過一個實驗,在2臺安裝有千兆網(wǎng)卡的計算機終端、千兆網(wǎng)絡(luò)鏈路和千兆交換機中進(jìn)行數(shù)據(jù)傳輸,如果將交換機的MTU設(shè)置成6K字節(jié)大小,將計算機終端的巨型幀設(shè)置成6K字節(jié)大小,其傳輸速率比交換機采用默認(rèn)的MTU(即大小為1500字節(jié))和計算機采用普通幀(即關(guān)閉巨型幀)要快上50%以上。
所以說,在不同的網(wǎng)絡(luò)環(huán)境中,可根據(jù)需要靈活設(shè)置MTU大小,也需要在設(shè)置過程中注意一些事項,特別是當(dāng)人工修改網(wǎng)絡(luò)設(shè)備的MTU大小后,其網(wǎng)絡(luò)端口的自動協(xié)商功能就會失效,而當(dāng)數(shù)據(jù)交互雙方的MTU不一致時,就會造成網(wǎng)絡(luò)出現(xiàn)中斷,原因就是一方對報文進(jìn)行分片后的報文大小到了另一方無法正常接收而拒絕接收,應(yīng)盡量避免因設(shè)置不當(dāng)造成網(wǎng)絡(luò)故障。