《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > MTU原理及相關問題分析
MTU原理及相關問題分析
C114
中國聯通 廉國偉
摘要: MTU原理及相關問題分析,一、MTU的定義及相關概念:Mtu即最大傳輸單元,全稱為MaximumTransmissionU
Abstract:
Key words :

一、MTU的定義及相關概念:

Mtu即最大傳輸單元,全稱為Maximum Transmission Unit,是指通信協議的某一層上面所能通過的最大數據包大小(以字節為單位)。由于定義的模糊性,在此也介紹幾個相關的名詞,MRU、PMTU、MSS和JUMBO FRAME,供大家甄別。

MRU即最大接收單元,全稱為Maximum Receive Unit,與MTU相對,稱為最大接收單元,目前也沒有權威的標準定義,但許多文章中有這個名詞。一臺主機或路由器的MTU與MRU可以不一致。

PMTU,全稱為 path maximum transmission unit,即路徑MTU,把一條IP路徑上MTU的最小值稱為PMTU,PMTU是個理想化的概念,但目前業界沒有有效的手段來實現PMTU的發現和更新。`

MSS是OSI參考模型中四層的一個概念,即最大分段長度,全稱為TCP Maximum Segment Size,指TCP每次能夠傳輸的最大數據分段長度(以字節為單位),MSS一般比MTU小40字節。

Jumbo Frame(有些稱Giant Frame),網絡上會遇到jumbo frame的概念,cisco路由器的接口中也有這個參數,超過以太網標準長度1518字節的幀稱為jumbo frame。

二、MTU涉及主要原理:

1、常見網絡的MTU值:

IP網絡以包為單位進行信息傳遞,那么,一次傳送多大的包合適、多大的包最高效就成為一個核心問題之一。MTU就是決定在什么樣的物理網絡傳送多大數據包大的事實標準,不同類型網絡由于物理特性、發展階段不同,其MTU的默認值也不盡相同,以下是摘錄的各類網絡及其默認MTU值:

對于windows操作系統來講,其以太網網卡MTU默認為1500,但可以通過修改工具或修改注冊表進行修改,但只能改小,不能改大,即只能修改為小于或等于1500字節。

2、PMTU 發現過程:

對于一個基于網絡的應用來講,如果應用穿過網絡的MTU與PMTU相等,那么應用穿過網絡的效率最高,或者說,應用通過主機網卡發出的最大數據包與PMTU越接近(指小于等于PMTU),應用穿過網絡的效率越高,原因是有效的避免了分片和重組。

為了達到這個目的,一些操作系統支持自動發現路徑MTU的功能,具體過程為:

路由器接口上收到一個報文長度大于本接口MTU值的報文,如果該報文被打上不分片的標記,將丟棄本報文,并且返回一個ICMP差錯報文,通知報文發起者丟棄原因。報文發起者將發送比較小的報文。通過多次上述報文協商,將得到對于某一個固定路徑上的最小Mtu值,這個過程叫做“Mtu Discovery”[詳見RFC1191]。

了解了MTU發現的原理,舉一個實例驗證PMTU變化過程:

在上圖所示實驗網絡中,由三層設備模擬PPPOE撥號,實現接入寬帶IP網。三層設備上行以太網口默認MTU為1482字節。抓包結果顯示如下:

將三層設備上行以太網口默認MTU改為1000字節。抓包結果顯示如下:

3、“PMTU”發現存在的問題:

由于互聯網上路由器或其它網絡設備的配置的無法統一規范,某些運營商或網站考慮到網絡安全和其它需要,有時會把ICMP報文過濾掉,此外,PMTU牽涉到主機、各類交換機、路由器、防火墻等網絡設備,這些主機和網絡設備沒有有效的手段實現PMTU的協商和交互,這樣Mtu Discovery不能正常運行,影響應用正常運行,即實質上目前沒有有效的手段來發現PMTU。

互聯網上的網絡設備,遇到MTU發現報文或必須將IP包分片但DF設置為1時,路由器可采用以下任一種方式(從網上摘錄):

發送符合 RFC 792 中最初定義的“ICMP Destination Unreachable-Fragmentation Needed and DF Set”消息,然后丟棄該包。原始消息格式中不包含有關轉發失敗的鏈路的 IP MTU 的信息。(導致PMTU無法正常發現)
? 發送符合 RFC 1191 中重新定義的“ICMP Destination Unreachable-Fragmentation Needed and DF Set”消息,然后丟棄該包。此新消息格式包含一個 MTU 字段,可指出轉發失敗的鏈路的 IP MTU。(PMTU可能會正常發現)

RFC 1191 定義了路徑 MTU (PMTU) 發現,它使得源和目的 TCP 對等方能夠動態地發現二者之間路徑的IP MTU,從而發現該路徑的 TCP MSS。一旦收到符合 RFC 1191 定義的“Destination Unreachable-Fragmentation Needed and DF Set”消息,TCP 就會將該連接的 MSS 調整為指定 IP MTU 減去 TCP 和 IP 報頭的大小。這樣,在該 TCP 連接上發送的后續包就不會超過最大大小,無需分段即可在該路徑上傳輸。

直接丟棄包。直接丟棄需分段但 DF 標記設置為 1 的包的路由器稱為 PMTU 黑洞路由器。

總之,PMTU的不可發現性,導致因MTU問題引起的應用系統無法正常運行情況時有發生。

4、超過MTU值的數據包分片、重組過程,:

IP包的格式如下:

IP包的分片重組牽涉到IP包頭的幾個重要字段,主要是標識符、標識位、偏移量,分別詳述如下:

標識符(Identification):在發送數據包前,發送主機給每個數據包一個ID值,放在16位的標識符字段中。此ID用于標識唯一的數據報或數據流。接收主機利用此ID對收到的數據報進行重組。當分片的IP數據報從源地址發送到目的地址的時候,由于網絡延遲或者不同的傳輸路徑的關系,在到達目的主機時,這些分片數據報并不總是有序的到達,而是處于一種無序狀態,因此,接收主機便用此ID判斷接收的這些分片數據報是否屬于同一個數據流,然后再進行重組。

標志(Flags):第一個bit稱為R位,目前保留未用。第二個bit稱為DF位,Don't Fragment,“不分片”位,即如果將這一比特置1 ,表示上層應用不允許分片,IP層將不對數據報進行分片。第三個bit稱為MF位,More Fragment,“更多的片”。除了最后一個數據分片外,其他每個組成數據報的數據分片都要把該比特置1,表示有更多的分片。

偏移量(Framentation offset):13位的偏移量字段用來表示分段的數據報在整個數據流中的位置,即相當于分片數據報的順序號。發送主機對第一個數據報的偏移量置為0,而后續的分片數據報的偏移量則以網絡的MTU大小賦值。偏移量對于接收方進行數據重組的時候,這是一個唯一依據。對于分片的數據段(單位:字節)必須為8的整數倍,否則IP無法表達其偏移量。

了解了數據分片的幾個關鍵字段后,我們找一個實例說明分片過程(從網上摘錄):

在MTU為1500的以太網中,源主機如果需要通過UDP傳送3000字節的數據到目的主機,這時的分段情況如下所示(假定在同一網段):

此處需要注意的是對于分片1的報頭,相對于其他兩個分片的報頭要多8個字節UDP協議報頭的開銷。因此,在計算實際傳輸的數據凈載荷時,分片1要多減去8字節UDP報頭。最后,接收主機通過包ID、標識位、偏移量值將數據重組成完整的數據。

需要注意是,有些數據包在一次分片后,由于遇到更小MTU的網絡,還可能被繼續分片。為數據包分片和為數據包再次分片的區別在于網關處理MF位的不同。在一個網關為原來未分片的數據包分片時,除了末尾的數據包片,它將其余所有分片上的MF位置為1,最后一片為0。然而,當網關為一個非末尾的數據包片再次分片時,它會把生成的所有子分片中的MF位全部調為1,因為所有這些子分片都不可能是整個數據包末尾的數據包。分片中標志字段的M值取決于該分片是否是原始分組的最后一片,而片偏移量也是相對于原始分組的偏移量。

三、MTU對上層應用的影響:

1、TCP、UDP等上層應用傳輸效率的高低與PMTU有密切聯系。

對TCP來講,其傳輸效率與MSS的合適大小密切相關,而MTU是決定MSS大小的唯一因素。MSS的大小會在TCP連接建立階段進行協商,具體協商過程如下:

TCP client發出SYN報文,其中option選項填充的MSS字段一般為(MTU-IP頭大小-TCP頭大小),同樣TCP server收到SYN報文后,會發送SYN+ACK報文應答,option選項填充的mss字段也為(MTU-IP頭大小-TCP頭大小);協商雙方會比較SYN和SYN+ACK報文中MSS字段大小,選擇較小的MSS作為發送TCP分片的大小。

理論上,如果MSS與合適的MTU即PMTU(我認為合適的PMTU為路徑上可不分片通過的最大MTU)匹配,TCP傳輸效率最高,因為免去了分片、重組等工作。但由于PMTU發現過程無法保證,導致最終發現的MTU可能并不合適路徑傳輸,造成部分應用的分片和重組,降低了傳輸效率。

2、部分網絡設備對特定應用的分片報文處理能力弱,造成部分應用故障。

目前,國內寬帶IP網絡多數用戶采用PPPOE撥號方式實現業務接入。位于電信運營商內側的BAS設備用于終結PPP連接,實現用戶接入匯聚。實際應用中,部分BAS設備對VPDN等特定應用的分片、重組機制不健全,造成部分基于VPDN方式的業務速度緩慢。如:筆者曾發現過某廠商BAS設備ME60當TSU板未啟用時,其于L2TP隧道的VPDN撥號應用,經常出現業務訪問緩慢,甚至不通的情況,當啟用TSU板后,業務恢復正常(經了解,TSU板是專門用于基于隧道或其它協議數據包分片處理功能)。某廠商設備SE800,承載了基于L2TP隧道的VPDN撥號應用后,部分應用可以使用,部分應用無法正常運行。

3、部分網絡安全設備對分片的重組過程進一步影響業務應用。

原則上,當某個網絡應用業務在傳輸過程中發生分片后,只有發送端和接收端會進行分片的重組,這已經影響到業務運行速度。當分過片的IP包經過網絡監測設備、安全系統等設備時,基于安全和其它特定目的,有些設備要求完成數據包的分片和重組,會進一步延緩應用的運行速度,甚至導致部分應用無法使用。

四、MTU常見問題小結(摘錄自網絡):

1、為何有些共享上網的路由器的網絡設備以太網口MTU值不是1500?

有些通過共享路由器PPPOE撥號上網的路由器上連口(與ADSL調制器互聯的以太網口)MTU為1492,因為PPP報文占據了8個字節,導致承載數據信息的IP報文大小變成了1492。

2、為什么在思科路由器上GRE接口的默認MTU為1476?

因為GRE會重新封裝一個IP包頭,以及加上GRE的4字節頭部,一共是24個字節。這樣總的用于應用的IP包的長度為1476。

3、為什么支持VLAN標記的接口MTU要大于1514字節?

由于VLAN的原理是在以太網的幀頭部加入了4個字節的VLAN TAG信息,因此在支持802.1q標記的鏈路的接口上要求MTU不小于1518字節,才能保證凈荷為1500的數據包順利通過該接口。

4、MTU和各種VPN的關系有無規律性?

因VPN的實現需要對原有的IP或者是TCP/UDP數據進行封裝,因此也就增加了數據包或數據幀的總長度,這樣也就導致了VPN 承載的數據凈荷值的減小,具體減少的數值與不同的VPN類型相關。

即:MTU=經VPN封裝后數據包長度-VPN封裝包頭長度

5、對于因MTU問題引起的應用系統故障現象有哪些?處理思路是什么?

因MTU引的網絡問題表現各種各樣,如:有些游戲,經常卡機。有的網站,部分網頁可以打開,部分網頁打不開。總的來講,如果網絡不丟包,而網絡應用時快時慢,或部分應用無法使用,很大程度上可以定位為MTU問題。

對于MTU引起的問題,處理思路為:要么增加網絡中最細管道的MTU值,要么減少終端應用發現的數據包大小。對于終端的MTU,會有各種各樣的工具或方法進行修改。

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 久草在线资源网站 | 91精品观看91久久久久久 | 日韩国产欧美成人一区二区影院 | 久热精品免费视频 | 美女被男人桶到嗷嗷叫爽网站 | 精品国产一区二区三区成人 | 欧美国产综合视频 | 小明日韩在线看看永久区域 | 久久久久久国产精品免费免费 | 日韩欧美毛片免费观看视频 | 国产美女一级视频 | 精品久久久久国产 | 99视频精品免费99在线 | 日韩色道| 亚洲欧美日韩色 | 久久精视频 | 99视频九九精品视频在线观看 | 欧美另类在线观看 | 欧美精品久久久久久久久大尺度 | 在线播放一级片 | 久久污 | 久久成人综合网 | 日韩精品中文字幕一区三区 | 国产精品免费一区二区区 | 精品日韩一区二区三区视频 | 日本一级特黄啪啪片 | 国产一区二区三区视频 | 久久国产精品久久国产片 | 日韩日b视频 | 亚洲免费在线视频播放 | 香港全黄一级毛片在线播放 | 久久青草国产手机看片福利盒子 | 在线观看成年视频 | 中文字幕综合在线 | 国产粉嫩高中生无套第一次 | 美女张开腿让男人操 | 国内精品久久久久久网站 | 综合久久久久久 | 日本苍井一级毛片 | 亚洲欧洲日产国码二区首页 | pgone太大了兽王免费视频 |