引言
低功耗有損網絡路由協議(RPL)是IETF的ROLL(RoutingOverLowpowerandLossynetworks)工作組,專門針對低功耗有損網絡LLN(LowpowerandLossynetwork)新提出來的路由協議。低功耗有損網絡是由功率、存儲空間、處理能力等資源受限的嵌入式設備所組成的網絡。它們可以通過多種鏈路連接,比如IEEE802.15.4、藍牙、低功率WiFi,甚至低功耗電力線通信(PLC)等等。ROLL將LLN網絡的應用主要劃分為四個領域:城市網絡(包括智能電網應用)、建筑自動化、工業(yè)自動化以及家庭自動化,并且分別制定了針對四個應用領域的路由需求。由于LLN的獨特性,傳統的IP路由協議,比如OSPF、IS-IS、AODV、OLSR,無法滿足其獨特的路由需求,因此ROLL工作組制定了RPL協議,其協議標準RFC6550發(fā)布于2012年3月。
本論文首先介紹了RPL的應用場景及基本原理,并在路徑選擇策略中加入了對節(jié)點剩余能量的考慮;最后通過仿真驗證了改進后的路由協議的性能。
1RPL協議工作原理
RPL是一個矢量路由協議,通過構建有向非循環(huán)圖(DAG)來形成拓撲結構,加入DAG中的節(jié)點自動形成一條指向根節(jié)點的路徑。RPL主要為數據匯聚型的場景設計,即數據流量由葉節(jié)點指向根節(jié)點。當然RPL也擴展支持多點對點(MP2P)和點對點(P2P)的應用場景。
圖1所示為典型的DAG結構。其中的每一個節(jié)點至少有一條指向根節(jié)點的路徑。
圖1DAG結構示意圖
1.1DODAG的形成
DODAG(DestinationOrientedDirectedAcyclicGraph)是面向目的地的有向非循環(huán)圖的簡稱,可以視為物理網絡上的邏輯路由拓撲。
RPL中定義了由多種ICMPv6消息來控制拓撲的形成。DIO消息用于通告有關DODAG的參數,例如DODAGID、目標函數(OF)、DODAG版本號等。其中OF規(guī)定了拓撲建立及最優(yōu)父節(jié)點的選擇方式,規(guī)定了節(jié)點級別的計算方法,是路徑選擇的首要參考標準。級別決定了節(jié)點在DODAG中的相對位置,主要用于避免回路。DAO消息是用來建立從根節(jié)點到葉節(jié)點的“向下”的路徑。根據節(jié)點的存儲能力,RPL協議中將節(jié)點類型定義為可存儲型和非存儲型,兩者的區(qū)別在于是否存儲有路由表信息。在圖1中,當D節(jié)點要和E節(jié)點通信時,如果B節(jié)點和C節(jié)點是非存儲型,那么必須先追溯到根節(jié)點A,查找路由,即路徑為D—C一B—A一B—C一E。若C為可存儲型節(jié)點,則只需追溯到共同的祖先節(jié)點即可找到路由,即路徑為D—C—E。DIS消息用于向鄰居節(jié)點請求DODAG信息。當一個孤立的節(jié)點沒有收到任何DIO消息的時候,可通過DIS向周圍節(jié)點請求DODAG信息。收到DIS消息的節(jié)點會反饋DIO消息給DIS源節(jié)點。
如圖1所示,首先A節(jié)點通過DIO消息廣播自己創(chuàng)建的DODAG信息,收到DIO消息的節(jié)點根據OF來決定是否應該加入該DODAG;加入之后然后再向自己周圍的節(jié)點繼續(xù)廣播DIO消息;這樣一層一層地建立拓撲結構。當節(jié)點加入DODAG之后,就自動創(chuàng)建一條“向上”匯聚到根節(jié)點的路徑。“向下”的路徑則由DAO消息完成。
1.2定時器管理
RPL中使用細流算法[7]來控制DIO消息的發(fā)送。細流算法是一個適應性的機制,用來限制控制協議的開銷。與傳統IP網絡不同,LLN網絡有著非常有限的資源,必須盡可能的減少控制協議消息所占的比例,但同時又必須要維護好網絡結構。當網絡改變時,節(jié)點會以較高的頻率發(fā)送控制包;當網絡趨于穩(wěn)定時,則控制流的速率減少。算法中定義了控制消息發(fā)送間隔參數I,當網絡很穩(wěn)定時,則I成倍的增加;而網絡有動蕩時,則發(fā)送間隔迅速降為最小值,高頻率的發(fā)送控制消息以修復網絡。
本文借助Contiki系統中的Cooja模擬器,對RPL協議進行了仿真。圖2所示為節(jié)點布局圖,并在圖3中以節(jié)點5為例展示了DIO消息的發(fā)送控制過程。從圖3中可以看到,當網絡剛形成逐步趨于穩(wěn)定的時候,DIO消息發(fā)送間隔成倍增加;圖3中23:00和01:20附近陡峭的轉折點表明此時監(jiān)測到節(jié)點5和網絡存在不一致性,迅速將控制消息發(fā)送間隔調至最小值以迅速修復網絡。
圖2ContikiRPL在Cooja模擬器中的仿真
圖3細流算法對DIO消息發(fā)送頻率的控制
1.3環(huán)路避免機制
RPL中規(guī)定,在沿著葉節(jié)點到根節(jié)點的路徑上,節(jié)點級別必須是遞減的[1],即父節(jié)點的級別必須小于子節(jié)點的級別。當節(jié)點在網絡中位置發(fā)生改變時,必須根據父節(jié)點重新計算自己的級別。假設節(jié)點N的最優(yōu)父節(jié)點為P,P的級別為R(P),那么N的級別R(N)計算公式為:
R(N)=R(P)+rank_increase
rank_increase為子節(jié)點和父節(jié)點級別的差值,其算法在OF中有定義。
節(jié)點的級別在環(huán)路避免中有著重要的意義。RPL協議也通過在包頭上設定標志位來附帶路由控制數據,以避免數據包被循環(huán)轉發(fā)。
2考慮節(jié)點剩余能量的RPL協議
2.1RPL協議原始路由方案
目標函數決定了RPL協議的路徑選擇方式。目前RPL的官方文件中,只明確定義了零目標函數(OF0)[8],即以跳數(HC)為最佳路徑選擇的唯一標準,而其他的目標函數則由開發(fā)者根據需求靈活定義。比如對鏈路可靠性要求較高的應用,可將鏈路質量作為路由選擇的首要考慮標準;而對能量受限的環(huán)境則可以定義在路徑中盡量避開電池供電節(jié)點。在文檔RFC6551図中,提出了多種可供開發(fā)者參考的路由度量。
在選擇路徑時,若只考慮跳數因素,必然會導致Sink周邊節(jié)點數據壓力過大,從而使關鍵節(jié)點能量過早消耗而死亡。文獻[10]將網絡的生命長度定義為第一個節(jié)點死亡的時間。對于能量受限的低功耗有損網絡,如何平衡能量消耗,延長網絡整體壽命,是協議要考慮的重要因素。
2.2優(yōu)化之后的RPL路由方案
目前已有多種針對無線傳感網絡能量優(yōu)化的路由協議,比如分級能量路由協議LEACH和TEEN,以數據為中心的能量有效路由協議DD和SPIN,還有基于地理位置的路由協議GPSR和GEAR等[11]。但這些協議都很難實現和RPL協議的融合。RPL協議是通過在containermetric中,定義路徑選擇時所考慮的參數,然后再以一定的方式將所需要考慮的參數相結合,從而確定一個合理的路徑選擇方案。
本篇論文中采取的是跳數(HC)和節(jié)點能量(EN)相結合的方式。結合方式有兩種[12],一種是Lex,一種是Add。Lex是指優(yōu)先考慮跳數,只有在跳數相同的情況下,才考慮節(jié)點能量;而Add則是采取兩種參數綜合考慮的方式,按照一定的比例相結合,即:
本文對這兩種不同的結合方式做了仿真對比。
2.3RPL協議改進前后的仿真對比
仿真工具采用的是美國UIUC大學開發(fā)的針對無線傳感網絡研究的J-Sim平臺,該平臺基于Java語言,和NS2相比具有內存消耗小、仿真速度快、有更好的可擴展性等優(yōu)點。本文仿真了傳感網絡數據收集的場景。在100X100的區(qū)域里,規(guī)則的布置有100個節(jié)點,圖4所示是網絡節(jié)點布局圖和OF0的拓撲結構,其中最左上側的0號節(jié)點為數據匯聚節(jié)點,右下側的49-99和94-98這11個節(jié)點為傳感器數據采集節(jié)點。數據從右下側的11個源節(jié)點發(fā)送到左上側的0號節(jié)點。由于該網絡具有對稱性,1和10對稱,2和20對稱等,對稱節(jié)點的能量消耗基本一致。本文中重點仿真了具有代表性的1、2、11、12、22這幾個關鍵節(jié)點的能量消耗情況。
圖4網絡節(jié)點布局圖和OF0的拓撲結構
對于OF0,由于跳數是路徑選擇的唯一標準,節(jié)點位置固定的網絡,其拓撲結構也相對保持不變。圖4即為這種情況下的拓撲結構。由圖4中可以看到,節(jié)點1和節(jié)點10承載了大部分的數據量,幾乎任何從下側或者右側源節(jié)點發(fā)過來的數據都要經過這兩個節(jié)點轉發(fā)到Sink節(jié)點。而節(jié)點11,貝貝有來自源節(jié)點99的數據由它轉發(fā)。
圖5所示是系統節(jié)點能耗圖。其中圖5(a)為OF0方案下部分節(jié)點能量消耗圖。從圖中可以看出,最關鍵的節(jié)點1和節(jié)點10,能量很快就消耗殆盡。而節(jié)點11,則能耗相對較少。這對節(jié)點位置固定的網絡是很不利的,會使數據量較大的節(jié)點在短期內能量迅速消耗完而死亡,而其他非位置關鍵節(jié)點,則一直被閑置。造成網絡能耗分布極其不均勻,能量利用率不咼。
接下來可以仿真跳數和節(jié)點剩余能量相結合的路徑選擇方式,圖5(b)為跳數和能量按照2:8的比例加權所得到的能耗結果。從圖5(b)可以看出,節(jié)點1、10和11的能耗更為均衡,第一個節(jié)點死亡的時間大為延長。跳數和節(jié)點剩余能量相結合的路徑選擇方式,能一定程度上改善以跳數為唯一度量所造成了能量消耗不均的情況,從而延長關鍵節(jié)點的生命長度。仿真中也能看到,最佳路徑的拓撲圖一直處于動態(tài)變化,原先經過節(jié)點1和節(jié)點10到達匯聚節(jié)點的數據,有一部分從節(jié)點11分流,從而緩解節(jié)點1和節(jié)點10的壓力。
本文也仿真了跳數(HC)和節(jié)點能量(EN)按照Lex的結合方式,即優(yōu)先考慮最小跳數,當跳數相同的時候再考慮節(jié)點能量,以及在Add結合方式下按0.8HC+0.2EN和0.2HC+0.8EN的不同比例相結合的情況對比。最后得出的結論是,兩種不同的結合方式對網絡能耗均衡都有一定程度的改善;而Add的結合方式能耗更為均衡,且剩余能量所占的比例越高,改善的效果越為顯著。圖6所示是在不同路由策略下,關鍵節(jié)點能耗的對比情況。
本文描述了RPL協議的基本原理,并且對原路由協議的路徑選擇策略進行了改進,在只考慮跳數的基礎上,加入節(jié)點剩余能量的考慮,從而平衡了網絡能耗,延長網絡整體壽命。由于RPL是近幾年新提出的協議,隨著實踐的不斷深入,越來越多的新問題被提出,還有很大的研究空間。RPL協議在物聯網領域有著廣闊的應用前景,值得廣大學者進一步深入研究。
5致謝
本論文的工作得到了實驗室項目的大力支持。感謝國家自然科學基金(61271257),北京市自然科學基金(4122034)和教育部博士點基金(20120005110007)對本文研究工作的支持。
20211118_6196307d10800__無線傳感網絡中的RPL路由協議研究