RPL是IPv6 Routing Protocol for Low-Power and Lossy Networks的簡稱。
低功耗及有損網絡(LLN)是一類內部鏈接和路由器都受限的網絡,該網絡下的路由器的處理器功能、內存及系統功耗(電池供電)都可能受到較大的限制,而里面的網絡連接也具有高丟包率、低數據傳輸率及不穩定的特性。組成該網絡的節點數量也多種多樣,一張網絡中可能僅也幾個節點,也可能有成千上萬個節點。節點間通訊拓撲方式可有三種形式:
- 點到點:網絡內節點到節點的通訊;
- 點到多點:LLN網絡內一個中心節點到一個設備子網的所有節點通訊;
- 多點到點:LLN網絡內一個設備子網內的所有節點到一個中心節點的通訊;
1、重要術語
DAG
DODAG
Objective Function (OF): An OF defines how routing metrics, optimization objectives, and related functions are used to compute Rank. Furthermore, the OF dictates how parents in the DODAG are selected and, thus, the DODAG formation.目標功能OF:OF定義了路由計量標准、目標路徑優化,以及計算Rank值的方式。與此同時,OF還規定了如何確定DODAG中的父節點的方式,即如何構造DODAG。
2、RPL簡介
2.1、拓撲圖
本小節描述RPL的基本拓撲形式,以及如何建立這些網絡的規則,即建立DODAG的規則。
LLN網絡不像我們平常的有線網絡那樣是點到點傳輸的,LLN一般沒有預先規定好某個發送節點的目標,網絡內的節點必須自己去發現其它的節點並按RPL規則建立通信。RPL路由把網絡拓撲內所有節點向外的信道匯集到一個或多個指定的出入口(sink)上去,反之外部的信息也從這些出入口(sink)出來分發給網絡里面的節點。所以,RPL把整張網絡視為一個DAG圖(Directed Acyclic Graph),然后再將這個DAG圖分割為多個DODAG圖,每個DODAG圖含有一個根節點(出入口sink,可以接收或發送外網信息)。這些根節點通常會連接到某一主干網上去。
RPL中各元素的關系
1)NETWORK
- 一個網絡中會包含有多個RPLInstance,各個RPLInstance具有自己的RPLInstanceID;
- 6lowpan應用的主要問題都集中在RPLInstance及以下的部分,因為RPLIntance的root是有能力連接到主干網絡的(這就屬於互聯網時代的技術了);
2)RPLInstance
- 一個RPLInstance中含有一個或者多個DODAG,各個DODOAG含有自己的DODAGID;
- 同一個RPLInstance里的所有DODAG共享同一種OF;
3)DODAG
- 每個DODOAG內含有且僅有一個root,其它的都為node;
- 每個node還有一個屬性DODAGVersion,當DODAG重構時DODAGVersion會跟着增加,比如節點發生移動、信號強度互相有變化時DODAG會重構拓撲圖,從而引發DODAGVersion增加。不過DODAGVersion有的時候並不是因為拓撲圖變化了才增加,有其它可能導致它增加的原因;
- DODAG內的所有節點具有自己的Rank值,該值在越接近root的節點處越小,越遠離root的節點則越大;
RPLInstance可能有下面的多種組成方式:
- 僅有一個root的單一DODAG形式
- 比如,某個智能家居應用中,最小化的電燈控制系統,僅需要一個DODAG就可以了;
- 多個DODAG形式(各自有root,不同的DODAGID)
- 比如,在某個多點數據收集應用中,節點間沒有辦法互相協調所以被迫分割成多個DODAG了,或者僅是為了實現其中某一部分節點能夠動態地進入/離開網絡而采用了多DODAG的方式;
- 單一DODAG形式(使用一個主干網上的的一個根節點作為虛擬根節點,用它協調其它DODAG的根,這樣該RPLInstance下的所有DODOAG具有相同的DODAGID了)
- 比如,某網絡中的多個邊界路由器,它們都具有可靠的網絡連接,在理論上它們都可以扮演網絡里所有DODAG的出入口(sink)功能;
- 上面幾種情況的組合
原文如下:
A RPL Instance may comprise: o a single DODAG with a single root * For example, a DODAG optimized to minimize latency rooted at a single centralized lighting controller in a Home Automation application. o multiple uncoordinated DODAGs with independent roots (differing DODAGIDs) * For example, multiple data collection points in an urban data collection application that do not have suitable connectivity to coordinate with each other or that use the formation of multiple DODAGs as a means to dynamically and autonomously partition the network. o a single DODAG with a virtual root that coordinates LLN sinks(with the same DODAGID) over a backbone network. * For example, multiple border routers operating with a reliable transit link, e.g., in support of an IPv6 Low-Power Wireless Personal Area Network (6LoWPAN) application, that are capable of acting as logically equivalent interfaces to the sink of the same DODAG. o a combination of the above as suited to some application scenario.
2.2、上行路由與構建DODAG
RPL規定從節點到DODOAG的根的路由,應該根據OF算出最優的DODAG來,節點間通過互相傳遞DIO(DODAG Information Object)信息數據來建立和維護DODAG圖。
2.3、下行路由
RPL使用DAO(Destination Advertisement Object (DAO))信息數據來建立下行路由