?? rfc1981.txt
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者:李海鵬(leehp327 leehp327@sina.com )
譯文發布時間:2002-6-11
版權:本中文翻譯文檔版權歸中國互動出版網所有??梢杂糜诜巧虡I用途自由轉載,但必須保留本文檔的翻譯及版權信息。
Network Working Group J. McCann
Request for Comments: 1981 Digital Equipment Corporation
Category: Standards Track S. Deering
Xerox PARC
J. Mogul
Digital Equipment Corporation
August 1996
IP 版本 6的路徑MTU探索
(RFC 1981,Path MTU Discovery for IP version 6)
本備忘錄的狀態
本文檔講述了一種Internet社區的Internet標準跟蹤協議,它需要進一步進行討論和建議以得到改進。請參考最新版的“Internet正式協議標準”(STD1)來獲得本協議的標準化程度和狀態。本備忘錄的發布不受任何限制。
摘要
本文檔描述了對于IPv6的路徑MTU探索。它很大程度上是從RFC1191(描述了對于IPv4的路徑MTU探索)發展而來的。
目 錄
摘 要 1
1 引言 2
2 術語 2
3 協議概述 3
4 協議需求 4
5 執行問題 5
5.1 分層 5
5.2 存儲PMTU信息 5
5.3 清除陳舊PMTU信息 7
5.4 TCP層動作 7
5.5 其他傳輸協議的運行問題 8
5.6 管理界面 9
6 安全考慮 9
致謝 10
附錄A - 與RFC1191的對比 10
參考 10
作者地址 11
1 引言
當一個IPv6節點發送大量數據到另一節點時,數據通過一系列IPv6分組傳送。當這些分組具有從源節點到信宿節點能夠成功傳送所允許的最大長度時,我們認為它達到理想狀態。這個分組長度被稱為路徑MTU(PMTU),并且它等于在這個路徑里所有鏈接的最小鏈接MTU。IPv6定義了一個標準機制,使節點可以發現任一路徑的PMTU。IPv6節點應當實現路徑MTU的發現,從而發現并利用那些具有比IPv6最小鏈接MTU大的PMTU的路徑。一個最小的IPv6執行可以選擇忽略路徑MTU發現的執行。那些不執行路徑MTU發現的節點使用IPv6最小鏈接MTU(定義于[IPv6-SPEC])作為分組的最大長度。在大多情況下,這樣會導致使用了小于必需長度的分組,因為大部分路徑的PMTU大于IPv6最小鏈接MTU。一個節點所發送的分組遠小于路徑MTU的允許,這是對網絡資源的一種浪費并可能產生不理想的處理能力。
2 術語
節點 -指一種執行IPv6的設備
路由器 -指一種節點轉發IPv6分組,本身沒有明確的地址
主機 -不是路由器的任何節點
上層 -緊接在IPv6的上層協議。如傳輸協議TCP和UDP,控制協議ICMP,路由協議OSPF,和在IPv6上“挖隧道”的網絡或下層協議IPX,AppleTalk,以及IPv6本身。
鏈接 -一種使節點可以在鏈路層(緊接著低于IPv6的層)上通信的通信設備或媒介。如以太網(簡單的或橋路的),PPP鏈接,X.25,幀中繼,ATM網,和網絡層或更高的“隧道”,例如在IPv4或IPv6本身上的隧道。
接口 -指一種連接節點的附加裝置。
地址 -指一個接口或一系列接口的IPv6層的標識符。
分組 -IPv6頭加上有效載荷。
鏈接MTU -最大傳輸單元,分組所具有的8位字節最大長度,可以在某一鏈接上被一次性傳輸。
路徑 -傳輸一分組時從源節點到信宿節點所經過的一系列鏈接。
路徑MTU -在源節點到信宿節點的路徑里所有鏈接中的最小鏈接MTU。
PMTU -路徑MTU。
路徑MTU發現 -一個節點了解某一路徑的PMTU的過程。
流 -從某個源點向(單播或組播的)信宿發送的分組群中,源點要求中間路由器作出特殊處理的那些分組。
流標記 -指由源地址和非零流標識的組合體。
3 協議概述
該協議描述了一種動態發現任一路徑的PMTU的方法。其基本原理是由某一源節點最初假設路徑的PMTU為路徑中第一段距離的MTU(已知)。如果分組對于沿路徑中的某節點來說長度超限,那么該節點將丟棄分組并返回ICMPv6指示分組長度超限[ICMPv6]。收到該信息后,源節點就會減少假設的PMTU。當節點估計的PMTU小于或等于實際的PMTU時,路徑MTU發現過程結束。請注意由于可能會在路徑的遠處存在具有更小MTU的鏈接,因而在路徑MTU發現過程結束前可能會出現分組發送/分組長度超限信息接收這樣的反復數次過程。
節點也可以在停止發送大于IPv6最小鏈接MTU分組時選擇中止探索過程。
隨著時間的過去原先的路徑MTU可能改變,主要因為路由布局的改變。PMTU的減小可以被分組長度超限信息發現。為了檢測到某路徑的PMTU的增長,節點定期的增加它假設的PMTU。這樣很可能會導致分組被丟棄并且產生分組長度超限信息,因為大多數情況下某路徑的PMTU不會改變。因此,很少進行某路徑的PMTU是否增加的測試。
路徑MTU發現支持組播和單播傳送的信宿。在組播傳送時,相同的分組經過不同的路徑傳送到不同的節點上。每個路徑具有不同的PMTU,并且一個組播傳送分組可能產生很多分組長度超限信息,每個信息指示了不同的下一路程段的MTU。這一系列路徑中的最小PMTU被用來決定后面的將要進行組播傳送的分組長度。
注意:路徑MTU發現必須被執行,即使當一個節點認為目的地和它自己是相同的鏈接。在特殊情況下如鄰居路由器對一些目的地作為代理[ND],目的地可以被認為直接鏈接的,但實際上多于一個路程段。
4 協議需求
就像在一開始所說的,IPv6節點沒有必需要實現路徑MTU發現。在本節中所敘述的需求只是應用于那些包含路徑MTU發現的執行過程中。
當某一節點收到分組長度超限信息,它必須減少它對相應路徑所估計的PMTU,基于信息中的MTU域中的值。由于不同的應用程序會有不同的需求,并且不同的執行體系又會支持不同的策略,所以一個節點在這種情況下的準確動作沒有被詳細說明。
當收到分組長度超限信息后,節點必須盡量避免在以后引起更多的此類信息。該節點必須減小發送的分組長度。當使用大于IPv6最小MTU的PMTU時,可能還會導致產生分組長度超限信息。由于這些信息中的任何信息(包括丟棄分組時它們的回答)都會消耗網絡資源,該節點必須強迫路徑MTU發現過程結束。
使用路徑MTU發現的節點必須盡快探測到PMTU的減小。節點也可以探測到PMTU的增長,但這樣做需要發送比當前估計的PMTU大的分組,并且由于PMTU增長的可能性很低,要求節點必須少做這種探測。一個對增長的探測嘗試(發送大于當前估計的分組),不能在收到該路徑的分組長度超限信息后5分鐘之內進行。建議設置該計時器兩倍于最小時間值(也就是10分鐘)。
一個節點不能減少它所估計的路徑MTU低于IPv6最小鏈接MTU。
注意:節點可能收到分組長度超限信息指示下一路程段MTU小于IPv6最小鏈接MTU。在這種情況下,該節點不需要使后來在此路徑中發送的分組長度低于IPv6最小鏈接MTU,但必須包含一個分段頭標在這些分組中。(定義于[IPv6-SPEC])
節點不允許增加估計的路徑MTU值作為對分組長度超限信息的回應。一個信息聲稱增加路徑MTU,它可能是一個陳舊的分組,在網絡里到處游蕩,或一個虛假的分組作為對拒絕服務攻擊的一部分,或者可能是組播傳送的結果,因為每個路徑都有不同的PMTU。
5 執行問題
這一部分討論了許多關于路徑MTU的執行問題。這不是一個規范,但是它是一系列的注解來幫助執行者。這些問題包括:
-什么層執行路徑MTU發現?
-PMTU信息是如何儲存的?
-陳舊的PMTU信息是如何刪除的?
-傳輸層和高層必須做什么?
5.1 分層
在IP體系中,對發送分組長度的選擇是由IP層以上層的協議所作出的。本文指的是被稱為“分組協議”(packetization protocol)的協議。分組協議通常為傳輸協議(如TCP)但是還可以是高層協議(如,緊接著建立在UDP上層的協議)。在分組層(packetization layer)上執行路徑MTU發現簡化為幾個層內的執行問題,但是還有一些缺陷:執行可能被每個分組協議重新執行,這樣很難在不同分組層之間分享PMTU信息,而且在維持面相連接的情況下,一些分組層可能不會容易的去長時間存儲PMTU信息。
所以建議由IP層存儲PMTU信息,ICMP層處理收到的分組長度超限信息。分組層可以對PMTU的改變作出響應,改變它們所發出的信息大小。為了支持這種分層,分組層需要能夠知道MMS_S(最大發送傳輸信息大小maximum send transport-message size)值的改變。MMS_S是源自路徑MTU,值為PMTU減去IPv6頭標的大小加上IP層為擴展頭標(如果有)預留的空間的值。
對于分組層它可能是一個UDP核心程序之外的應用程序,它有可能無法改變它所發出信息的大小。這樣會使分組長度超過路徑MTU。為了解決這個問題,IPv6定義了一種機制它允許很大的有效載荷被分段,每段被一單獨分組發送(見[IPv6-SPEC]section "Fragment Header")。然而,我們還是希望分組層避免發送信息分段(對分段的不利情況,見[FRAG])。
5.2 存儲PMTU信息
理想來說,PMTU值應當由在指定路徑上的源點和信宿之間反復交換分組而來。但是,大多數情況下,節點沒有足夠的信息能夠充分而準確的識別那樣一個路徑。不過節點應當有一些本地的有代表性的路徑的PMTU。這樣就只能選擇路徑的本地代表。
在組播傳送的時候,分組可能經由不同的路徑到達不同的節點。路徑的本地代表對于組播傳送來說實際上代表潛在的大量的路徑。
一個執行過程最少應當維持一個PMTU值,并應用于所以從該節點出發的分組。這個PMTU值從所有該節點上使用該路徑中的PMTU中選擇最小的一個而來。這種方法對于大多數路徑可能導致使用了比最大長度小的分組。
執行可以把信宿地址作為路徑的本地代表。在該信宿上使用過的所有路徑的PMTU中最小的一個作為該信宿自帶的PMTU值。到達一特殊信宿所使用的路徑數量是不多的,很多時候只有一個。這種方法就使那些按信宿為準的分組長度理想化。這種方法很好的符合了在[ND]中描述的主機的概念模型:PMTU值應當存儲在信宿地存儲區內。
如果使用了流,執行應當使用流標志作為路徑的本地代表。發送到相同信宿的分組由于分別屬于不同的流可能使用不同的路徑,應當通過流標志來選擇路徑。這種方法使按流為準的分組長度最佳,比按信宿為準所產生的PMTU值更準確。
對于源定義路徑的分組(也就是說分組包含IPv6尋路頭標[IPv6-SPEC]),源路徑可能更能作為路徑的本地代表。特別是當分組包含類型為0的尋路頭標,包含了一個完整的路徑說明。執行可以使用源路徑信息到路徑的本地代表中。
最初某一路徑的PMTU值假設為第一路程段的MTU(已知)。當收到分組長度超限信息,該節點根據分組長度超限信息內容確定信息適用的路徑。例如,如果信宿地址被用作路徑的本地代表,原始分組的地址信息就能用來決定信息適用的路徑。
注意:如果原始分組包含尋路頭標,那么尋路投標應當被用于確定原始信息內的信宿地址的位置。如果剩余中繼點數為0,那么信宿地址是IPv6頭標中的目的地址。而當剩余中繼點數大于0時,則是是尋路頭標中的最后的地址(地址[n])。
然后該節點使用分組長度超限信息中MTU域中的值,作為嘗試的PMTU值,并與當前的PMTU進行比較。如果嘗試的PMTU小于當前PMTU估計,那么嘗試PMTU將代替當前PMTU作為該路徑的PMTU值。
必須將PMTU的降低對分組層進行通報。任何正在使用該路徑的分組層(如TCP鏈接)必須在PMTU估計降低時被通知到。注意:即使分組長度超限信息包含的源分組頭標指示使用UDP分組,只要TCP層上有鏈接使用該路徑,那么它就必須被通知到。
同樣當發送分組引起分組長度超限信息時,應當通知這個分組被丟棄,即使是PMTU估計不變,它還是要重發丟棄的數據。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -