耿玥+胡曦明
摘要:為研究TCP路徑MTU發(fā)現(xiàn)機制機理實現(xiàn)過程,利用華三模擬器和虛擬機搭建局域網(wǎng)環(huán)境,設計出了具體的實驗方案。通過使用FTP協(xié)議傳輸TCP數(shù)據(jù)包,結(jié)合協(xié)議分析捕獲TCP報文,驗證TCP協(xié)議在局域網(wǎng)內(nèi)基于WINDOWS平臺下的路徑MTU發(fā)現(xiàn)機制工作過程,展示了TCP在遇到大的數(shù)據(jù)包時的分片問題,就實驗結(jié)果進行分析。研究表明,在基于Windows平臺搭建的局域網(wǎng)的環(huán)境下,TCP路徑MTU探測機制并不能正常工作,從主機環(huán)境和路由器兩方面分析原因,多種因素導致TCP路徑MTU探測機制失效,引起IP分片問題,影響網(wǎng)絡環(huán)境。
關鍵詞:PMTUD;TCP;MTU;IP分片;協(xié)議分析
隨著網(wǎng)絡技術的不斷發(fā)展,人們對網(wǎng)絡性能的要求也不斷提高。網(wǎng)絡環(huán)境日益復雜,導致在傳輸數(shù)據(jù)包時出現(xiàn)擁塞、丟包等問題。IP分片是網(wǎng)絡上傳輸報文的一種技術手段,在從一個具有較大MTU的網(wǎng)絡轉(zhuǎn)發(fā)到一個具有較小MTU的網(wǎng)絡時,路由器需要把大的IP數(shù)據(jù)報分割成小的IP數(shù)據(jù)報分片,此過程成為IP數(shù)據(jù)報的分片,分片算法主要解決不同網(wǎng)絡之間最大傳輸單元(MTU)不同的問題。IP分片技術在網(wǎng)絡中尤為重要,在業(yè)務流識別技術中,針對IP分片識別,提出了一種高速有效、實時性強的”首片法利用數(shù)據(jù)包分片技術和Winpcap網(wǎng)絡編程技術提高了音、視頻應用傳輸質(zhì)量。但是IP分片技術也引起不少問題,當傳輸一個大的數(shù)據(jù)包時,丟失一片數(shù)據(jù)包都會引起重傳,導致網(wǎng)絡性能降低,分析了IP分片對網(wǎng)絡丟包率和延時等網(wǎng)絡性能參數(shù)的影響;闡述了與UDP大包分片有關的故障案例。IP分片重組有不同的算法,采用“伸展樹”這種數(shù)據(jù)結(jié)構(gòu)可以實現(xiàn)高效的IP分片重組。另一方面,也可以通過對MTU的研究避免IP分片,目前主流的PMTU探測算法,如遞增法,遞減法,分層探測算法,以及有網(wǎng)絡設計應整體規(guī)劃MTU以避免IP分片的觀點。本文主要介紹了TCP的路徑MTU探測機制機理,通過具體的仿真實驗,探索在局域網(wǎng)內(nèi)windows環(huán)境下TCP路徑MTU發(fā)現(xiàn)過程,以及其對IP分片問題的影響。
1TCP路徑MTU發(fā)現(xiàn)機制機理
在和對端程序建立TCP連接的時候,雙方要在第一個SYN報文中通報自己接口的MTU值,然后采用雙方中最小的那個MTU值傳輸數(shù)據(jù)。一旦選定了起始的報文段大小,在該連接上的所有被TCP發(fā)送的IP數(shù)據(jù)報都將被設置DF比特。如果某個中間路由器的接口不能發(fā)送1500的IP包的時候則需要對一個設置了DF標志的數(shù)據(jù)報進行分片,它就丟棄這個數(shù)據(jù)報,并產(chǎn)生一個ICMP的“不能分片”差錯。如果發(fā)送端收到這個ICMP差錯,TCP就減少段大小并進行重傳:如果路由器產(chǎn)生的是一個較新的該類ICMP差錯,則報文段大小被設置為下一跳的MTU減去IP和TCP的首部長度。如果是一個較舊的該類ICMP差錯,則必須嘗試下一個可能的最小 MTU。
由于路由可以動態(tài)變化,因此在最后一次減少路徑MTU的一段時間以后,可以嘗試使用一個較大的值(直到等于對端聲明的MSS或用新版ICMP輸出接口MTU的最小值)。RFCll91推薦這個時間間隔為10分鐘。
圖1是建立的一個簡單的模型:
當本地通訊端嘗試發(fā)送一個588字節(jié)的且DF位置位的較大數(shù)據(jù)包時,路由器會產(chǎn)生一個PTB消息,指出適合下一跳鏈路的最大傳輸單元大小為288字節(jié)。在收到這個PTB消息后,TCP在發(fā)送下一個數(shù)據(jù)包時會按照指示選擇288字節(jié)作為響應。
路徑MTU發(fā)現(xiàn)過程是一種TCP明確的嘗試調(diào)整段大小的方法,它適用于TCP鏈接建立之后,至少是在傳輸大量數(shù)據(jù)時。
2TCP路徑MTU發(fā)現(xiàn)機制仿真實驗
2.1實驗環(huán)境
1)應用軟件:華三模擬器、Oracle VM VirtualBox、Wear—shark;
2)實驗拓撲圖:
2.2實驗過程
2.2.1不更改路由器端口MTU值下的實驗
路由器0/0端口MTU=1500,主機與FTP服務器建立連接,傳輸271字節(jié)數(shù)據(jù)
1)實驗過程:
2)實驗結(jié)果
主機成功收到服務器發(fā)送的271字節(jié)數(shù)據(jù)。
2.2.2更改路由器端口MTU值下的實驗
設置路由器0/0端口mtu=200,鏈接FTP服務器
1)實驗過程
2)實驗結(jié)果
主機成功收到服務器發(fā)送的271字節(jié)的數(shù)據(jù)
由此實驗可以看出,服務器在第三次重傳數(shù)據(jù)時把DF置0,然后路由器把這個大的數(shù)據(jù)包分成兩個小包,第一個包有176字節(jié)數(shù)據(jù),第二個包有95字節(jié)的數(shù)據(jù),兩次包加起來正好是271字節(jié)的數(shù)據(jù)包。因而被主機完整接受。
2.3分析實驗結(jié)果
在本次試驗中并沒有抓到ICMP PTB報文,從兩個方面分析原因:
(1)路由器
從思科官網(wǎng)查找到信息:
1)路由器丟包,并且不發(fā)送ICMP。
(2)路由器可以生成并發(fā)送ICMP消息膽ICMP消息被一個路由器或防火墻阻止這個路由器和發(fā)送方之間。
(2)主機
在關閉防火墻情況下,仍未抓到,對比文獻第13章做的實驗,分析出是網(wǎng)絡環(huán)境和主機操作系統(tǒng)因素造成的。
3結(jié)論
在復雜的網(wǎng)絡環(huán)境中,常常由于防火墻、網(wǎng)絡環(huán)境等問題導致PMTUD不能正常運轉(zhuǎn),使得中間路由器對大數(shù)據(jù)包進行l(wèi)P分片,影響資源利用率。當分片丟失造成重傳時,會使網(wǎng)絡性能嚴重降低,造成網(wǎng)絡擁塞等情況。路徑MTU探測機制在一定程度上可以優(yōu)化網(wǎng)絡環(huán)境,避免IP分片,值得我們推廣應用。