第五章 在非理想通道環境下具適用於多通道跳頻機制之動態路由選擇機制
5.1 RPL
5.1.2 RPL Control Message
RPL 路由協議節點之間的運行必須透過交換三種 RPL 之控制訊息封包[34],
分別是 DIO (DODAG Information)、DAO (Destination Advertisement Object)與 DIS
(DODAG Information Solocitation)三種 ICMPv6 控制消息來建立拓撲及路由。各層 之間之節點只需與鄰近之節點互相維護,透過這種方式在拓樸的維護上將較為的 容易,DIO 之訊息將記錄各別節點的參數訊息,可減少節點須與 Sink 節點溝通之
53
重複通訊。其整個路由的建立過程分別分成兩個部分。第一個過程是拓撲結構的 建立和向上路由的建立,第二個過程是向下路由的建立。在建立向下路由的時候 存在著兩種模式:Storing Mode 和 Non-Storing Mode。
第一個過程是拓撲結構的建立和向上路由的建立,首先,一些節點會被指定 為 DODAG Root 節點。當指定 Root 節點後,Root 節點將會向周圍節點發送 DIO 消息。 DIO 消息中包含 RPLInstanceID、DODAGVersionNumber、DODAGID、
Root 節點 Rank 值、RPL 路由協議工作的模式、DODAG 的配置訊息、路由代價 以及透過 Root 節點可以到達的位址等。一個 RPLInstance 中可能有好幾個 Root 節點,所以一個節點可能接收到多個 Root 節點發送過來的 DIO,這個時候節點 會根據 DIO 中的路由代價訊息使用目標函數選擇自己的父節點,然後計算出節點 自己的 Rank 值。該節點修改 DIO 中的路由代價和 Rank 值訊息後,向自己周遭 的節點發送 DIO 封包。同理,其餘的節點可能會同時接收到多個節點發送的 DIO 訊息,接著節點透過 DIO 封包中所包含的路由代價訊息,利用目標函數從發送 DIO 的眾多節點中選擇一個節點作為自己的父節點,然後節點修改路由代價、
Rank 值後,再向它周遭的節點發送 DIO 訊息。這樣所有節點都知道自己的父節 點,DODAG 中的節點會將父節點作為路由時預設的下一跳節點,因此當 DODAG 中的節點欲向上發送封包時,將封包發送給父節點,並透過父節點轉發封包。
第二個過程則是向下路由的建立,向下路由的建立有兩種模式:Storing Mode
54
和 Non-Storing Mode。在 Storing Mode 中所有節點上都會保存向下的路由表,而 在 Non-Storing Mode 模式中只有 Root 節點保存向下的路由表。在 Storing Mode 下,一個節點收到 DIO 訊息並選擇好父節點後,會向父節點發送 DAO。DAO 訊 息中包含了透過該節點可以到達之位址或者位址的前置訊息。當父節點收到 DAO 後會處理 DAO 訊息中的前置位址,然後在路由表中加入相對應的路由表。當父 節點完成指動作後,即可向它的父節點發送 DAO 封包。如此重複動作直到整個 向下的路由建立。在 Non-Storing Mode 下,一個節點收到 DIO 訊息後不是向父節 點發送 DAO,而是向 DODAG Root 節點發送 DAO。當然必須透過父節點轉發。
當 Root 接收到所有節點發送過來的 DAO 封包後,即可建立到所有節點的路由表。
當 Root 欲向下節點發送封包時,Root 即可根據路由表構建其路由。
換言之,在路由選擇的考量方面,有可以分類為 Routing Metric 與 Constraint
objects,其中 Routing Metric 取決於各路由之定義,像是 Delay、Link Quality、權 重等之類的方式,Constraint objects 則是依節點狀態而決定,其相關資訊將透過
DIO 進行傳遞。使用 DIO 控制封包之傳遞,可進行節點之間的狀態資料更新,獲 取節點間之資訊,藉此當作下一跳節點之路由選擇依據,當有新的節點欲加入此
DODAG 當中,需等待鄰近節點發送 DIO 之訊息,若新的節點一直沒收到 DIO 訊息,其則會發送 DIS 向鄰近節點請求發送 DIO 訊息,以便加入該 DODAG 中,
DAO 之訊息則為各節點資訊送至 Sink 端之封包,RPL 中分為儲存模式(Storing
55
mode)與非儲存模式(Non-Storing mode),如圖 5-2 所示,儲存模式為各節點要進 行資料之傳送,可搜尋自己的路由表(Routing Table)即可直接傳送至目的地,
Source node 欲傳送資料給 Destination node,其只需透過最近的 Common parent 即可將訊息轉傳,圖 5-3 為非儲存模式的 DODAG,除了 Root 節點具有路由表之 外,其餘節點將不具有路由表,所以節點要傳送資訊時,必須依賴 Root 節點來 辨識目的節點之路徑,Source node 將訊息傳至 Root 節點,Root 節點搜尋自己的 routing table,將訊息轉傳至 Destination node,在非儲存模式下須依賴週期性的 DAO 封包,更新 Root 節點之路由表,以利節點間封包之傳送。
R
D
R
DODAG Root Node Common ParentParent-child relationship
S
S
Source NodeD
Destination Node圖 5-2、DODAG with storing mode
56
R
D
R DODAG Root Node Common Parent
Parent-child relationship
S
S Source Node
D Destination Node
圖 5-3、DODAG with non-storing mode