網絡協議---MPL(2):RFC 7731文檔翻譯

7、信息庫
7.1  本地接口集
本地接口集記錄MPL傳送者的本地接口。本地接口集由本地接口多元組組成,每個MPL接口對應一個AddressSet。
AddressSet --- 一系列分配給MPL接口的單播地址。

7.2  域集
域集記錄了訂閱了每個MPL域地址的MPL接口。域集由MPL域多元組組成。每個MPL域對應一個MPLInterfaceSet。
MPLInterfaceSet --- 一系列訂閱了標識MPL域的MPL域地址的MPL接口。

7.3   種子集
一個種子集記錄了一個滑動窗口,用以決定一個MPL傳送者願意接收的,由MPL種子產生的MPL數據報文的序列號。一個MPL傳送者爲每個其參與的MPL域維護一個種子集。一個種子集由MPL種子多元組組成:(SeedID,MinSequence,Lifetime)。
SeedID  ---  MPL種子的標識符。
MinSequence  ---  一組序列號的下界,指示MPL傳送者願意接收和傳送和最老的MPL數據報文的序列號。一個MPL傳送者必須忽略任何序號值小於MinSequence的MPL數據報文。
Lifetime  ---  指示種子集條目的最小剩餘生存時間。一個MPL傳送者在種子集條目生存期未到期的情況下不能釋放它。

7.4  消息集緩衝
一個消息集緩衝記錄在MPL域內最近從MPL種子那收到的MPL數據報文。當MPL傳送者轉發MPL數據報文時,它使用消息集緩衝來緩存MPL數據報文。MPL傳送者爲每個其參與的MPL域維護一個消息集緩衝。一個消息集緩衝由緩衝消息元組組成:(SeedID,SequenceNumber,DataMessage)。
SeedID  ---  生成MPL數據報文的MPL種子的標識。
SequenceNumber  ---  MPL數據報文的序列號。
DataMessage  ---  MPL數據報文。

消息集緩衝中的所有MPL數據報文的序列號必須大於等於相應SeedID的MinSequence。當增加MPL種子的MinSequence值時,MPL傳送者會從相應的消息集緩衝中刪除那些序列號小於MinSequence的MPL數據報文。

8、MPL種子序列號
每個MPL種子都爲它所服務的MPL域維護一個序列號。序列號包含在由MPL種子生成的MPL數據報文之中。MPL種子必須爲每個新生成的MPL數據報文增加其序列號。增加一個序號值或對比兩個序號值必須使用序列號算法(定義於[RFC1982])。此序列號用於爲MPL域的種子所生成的數據報文建立一個總序。

9、MPL數據報文
9.1  MPL數據報文的生成
MPL數據報文是在這些報文進入到MPL域時由MPL種子生成的。所有MPL數據報文有如下特性:
  • IPv6源地址必須取自相應MPL接口的AddressSet中,而且它在MPL域中必須是合法的。
  • IPv6目的地址必須設置爲相應MPL域的域地址。
  • 一個MPL數據報文必須在IPv6首部中包含一個MPL Option以標識MPL種子,以便生成報文並和此種子生成的其它報文進行排序。
當目的地址是一個MPL域地址並且源地址取自該域地址所屬MPL接口的Address列表時,申請報文和MPL數據報文相同。就是說,MPL數據報文包含一個IPv6首部和裏面的MPL Option。

否則,爲了滿足[RFC2473]中的MPL數據報文需求,必須使用IPv6-in-IPv6封裝。需求如下:MPL數據報文中的完整的IPv6-in-IPv6信息;出口IPv6首部符合之前所述MPL數據報文需求;包裹着IPv6報文編碼的多播數據報文朝着MPL域進行發送。

9.2  MPL數據報文傳送
一個MPL傳送者使用流算法[RFC6206]來管理它的消息集緩衝中的MPL數據報文的發送。MPL傳送者必須給每個活躍的MPL數據報文分配不同的流計時器。依照[RFC6206]第5節,本文做如下定義:
  • 本文針對以下情況定義了“consistent”傳送:MPL數據報文由流計時器管理且收到的MPL數據報文擁有相同的MPL域地址、seed-id和序列號。
  • 本文針對以下情況定義了“inconsistent”傳送:收到的MPL數據報文擁有相同的MPL域地址、seed-id值和M位標誌,但序列號小於由流計時器管理的MPL數據報文。
  • 本文不定義任何外部“事件”。
  • 本文定義的MPL數據報文是流消息。
  • MPL在流算法之外的動作包括管理MPL域種子集和消息集緩衝。

[RFC6206]中的指出,一個流計時器有三個變量:當前時間間隔 I,一個當前時間間隔之內的時間t,和一個計數器c。MPL定義了第四個變量e,計算流計時器最近重啓後的到期次數。

在觸發DATA_MESSAGE_TIMER_EXPIRATIONS流計時器事件後,MPL傳送者必須禁用流計時器。當一個MPL數據報文緩衝沒有相關聯的流計時器時,MPL傳送者會從消息集緩衝中刪除報文以增加相應的種子集中的MPL種子的MinSequence。當MPL傳送者不再緩衝任何MPL種子的信息,就不需要爲一個MPL種子增加其MinSequence了。

當傳輸一個MPL數據報文時,MPL傳送者要不設置M標誌位爲0;要不設置爲1,以指示報文的序列號是否是從MPL種子處收到的最大值。

9.3  MPL數據報文處理
當收到一個MPL數據報文時,MPL傳送者首先處理MPL Option,如果報文有關聯的流計時器則更新它。

當收到一個MPL數據報文時,MPL傳送者必須執行以下動作:
  • 處理信息並將MPL數據報文放入MPL域的消息集緩衝。
  • 處理信息並將MPL域種子集相應的MinSequence值設爲報文序列號值加1。
  • 丟棄那些MPL信息庫中無變化的報文。

如果一個種子的種子集條目存在,MPL傳送者必須丟棄那些序列號小於MinSequence或小於現存消息集緩衝中報文的MPL數據報文。

如果一個種子的種子集條目不存在,MPL傳送者必須在接收MPL數據報文前爲MPL種子創建一個新條目。

如果內存受限,MPL傳送者將通過以下方式開拓內存資源:
  • 在種子集中增加MinSequence值,並刪除消息集緩衝中所有小於MinSequence的MPL數據報文。
  • 刪除其它種子集中的到期條目,和消息集緩衝中相應的MPL數據報文。

如果MPL傳送者處理MPL數據報文時,必須執行以下動作:
  • 重置相應種子集條目生命週期爲SEED_SET_ENTRY_LIFETIME。
  • 如果PROACTIVE_FORWARDING爲真,MPL傳送者必須爲此MPL數據報文初始化並開始一個流計時器。
  • 如果MPL控制報文流計時器不在運行中,且CONTROL_MESSAGE_TIMER_EXPIRATIONS爲非0,MPL傳送者必須初始化並開始一個MPL控制報文計時器。
  • 如果MPl控制報文流計時器正在運行中,MPL傳送者必須重置它的計時器。

10、MPL控制報文
10.1  MPL控制報文的生成
MPL傳送者生成MPL控制報文以向相鄰的MPL傳送者發送一個MPL域種子集和消息集緩衝。每個MPL控制報文都是按照6.2節所述來生成的,它爲MPL域種子集的每個條目產生一個MPL種子信息。MPL種子信息條目包含如下內容:
  • S設置MPL種子信息條目的seed-id字段的大小。
  • min-seqno設置MPL種子的MinSequence。
  • bm-len設置buffered-mpl-messages的大小,單位爲字節。
  • seed-id設置MPL種子的標識。
  • buffered-mpl-messages中的每個比特指示MPL數據報文所對應的序列號是否在消息集緩衝中。第i個比特表現的是值爲min-seqno+i的序列號。“0”表示相應的MPL數據報文不在消息集緩衝中,“1”表示報文存在於消息集緩衝中。

10.2  MPL控制報文的傳送
MPL傳送者使用流算法來傳送MPL控制報文。MPL傳送者爲每個MPL域維護單獨的流計時器。當CONTROL_MESSAGE_TIMER_EXPIRATIONS爲0時,MPL傳送者不執行流算法且不傳送MPL控制報文。依照[RFC6206]的第5節,本文定義如下:
  • 本文定義了“consistent”傳輸用於收到一個MPL控制報文時決定既不接收也不爲傳輸節點提供任何新的MPL數據報文。
  • 本文定義了“inconsistent”傳輸用於收到一個MPL控制報文時決定既接收又爲傳輸節點提供一個新的MPL數據報文。
  • 爲了響應外部事件,流計時器將被重置。本文定義了一個“事件”用於種子集所對應的條目增加MinSequence值或者相應的消息集緩衝添加一個報文。
  • 本文所定義的MPL控制報文是一個流消息。
[RFC6206]中指出,一個流計時器有三個變量:當前時間間隔 I,當前時間間隔內的一段時間t,和一個計數器c。MPL定義了第4個變量e,計算流計時器最後一次被重置後的到期次數。在計時器的CONTROL_MESSAGE_TIMER_EXPIRATIONS事件之後,MPL傳送者必須禁用流計時器。

10.3  MPL控制報文處理
一個MPL傳送者處理每個個收到的MPL控制報文以決定是否接收或提供新MPL數據報文。
一個MPL傳送者是否接收從相鄰節點傳送送來的新MPL數據報文由以下幾個條件之一決定:
  • MPL控制報文包含一個不存在於MPL域種子集的MPL種子。
  • MPL控制報文指示鄰居擁有一個存在於消息集緩衝的MPL數據報文的序列號大於MinSequence(如第i個比特值設爲1且min-seqno+i>MinSequence),並且它不包含在MPL域的消息集緩衝中。
當一個MPL傳送者決定不從鄰居設備那接收MPL數據報文緩衝,MPL傳送者必須重置它的跟MPL控制報文傳輸相關的流計時器。如果MPL控制報文流計時器並不在運行中,MPL傳送者必須初始化並開始一個新的流計時器。

一個MPL傳送者是否讓相鄰MPL傳送者接收消息集緩衝中的MPL數據報文由以下條件之一決定:
  • MPL控制報文不包含MPL數據報文的MPL種子
  • MPL數據報文序列號大於或等於min-seqno且不在鄰居的相應的消息集緩衝中(如MPL數據報文的序列號在buffered-mpl-messages中相應的比特未置爲1)。
當一個MPL傳送者至少有一條其消息集緩衝中的MPL數據報文沒有被鄰居所接收時,它必須重置MPL控制報文流計時器。另外對於消息集緩衝中的每一個這樣的條目,MPL傳送者都必須重置其流計時器並把e置爲0。如果一個流計時器沒有跟MPL數據報文關聯,MPL傳送者必須初始化並開始一個新的流計時器。

11、致謝
感謝Robert Cragie, Esko Dijk, Ralph Droms, Paul Duffy, Adrian Farrel, Ulrich Herberg, Owen Kirby, Philip Levis, Kerry Lynn, Joseph Reddy, Michael Richardson, Ines Robles, Don Sturek, Dario Tedeschi, and Peter van der Stok,它們意見對文檔的改進提供了很大的幫助。

12、IANA的意見
此文檔定義了一個IPv6 Option,一個必須由[RFC2780]文檔中的IPv6的“Destination Option and Hop-by-Hop Options”來分配的類型。

此文檔定義了一個ICMPv6報文,它的type必須來自[RFC4443]中的ICMPv6的type值。

此文檔登記了一個來自於可變範圍多播地址的衆知的多播地址。

12.1  MPL Option類型

IANA爲本協議分配了一個IPv6 Option類型,它來自[RFC2780]中登記的IPv6的“Destination Option and Hop-by-Hop Options”,特性如下表所示:


12.2  MPL ICMPv6類型
IANA爲本協議分配了一個ICMPv6類型,它來自[RFC4443]的ICMPv6類型值,見下表:

本文中的MPL_ICMP_TYPE就是上文中的TBD。

12.3  衆知多播地址
IANA爲本協議分配了一個多播地址,組ID在範圍[0x01,0xFF]間,用於6LoWPAN壓縮[RFC6282],它來自可變範圍多播地址(IPv6多播地址空間的子項,登記於[RFC3307])中的ALL_MPL_FORWARDERS。如下表所示:

終於完工,完工後才發現此草案已經成爲正式文檔RFC7731,二月份發佈的,開始翻譯時沒有注意到,太坑爹了。不過這是最後一版草稿,應該差別不大。將就一下吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章