阮文靈,,曾培峰
?。|華大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 201620)
摘要:詳細(xì)介紹了無(wú)線傳感網(wǎng)絡(luò)中的RPL(IPv6 Routing Protocol for LowPower and Lossy Networks)路由協(xié)議,,從仿真環(huán)境,、參數(shù)設(shè)定、仿真場(chǎng)景設(shè)計(jì)等方面對(duì)RPL路由協(xié)議的仿真進(jìn)行了分析,。利用cooja模擬器對(duì)RPL路由協(xié)議進(jìn)行了仿真,,并針對(duì)分組遞交率和平均功耗兩個(gè)性能指標(biāo)對(duì)RPL路由協(xié)議進(jìn)行性能評(píng)估。仿真結(jié)果表明,,RPL路由協(xié)議在分組遞交率方面適用于各個(gè)場(chǎng)景,,并能很好地適應(yīng)網(wǎng)絡(luò)的動(dòng)態(tài)變化;在功耗方面不適用于樹(shù)型空間位置的場(chǎng)景,,并且對(duì)于動(dòng)態(tài)變化的網(wǎng)絡(luò)會(huì)大大增加平均功耗,。
關(guān)鍵詞:RPL路由協(xié)議;網(wǎng)絡(luò)仿真,;cooja模擬器,;分組遞交率;平均功耗
中圖分類號(hào):TP391.9文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.1674 7720.2017.03.019
引用格式:阮文靈,,曾培峰.無(wú)線傳感網(wǎng)絡(luò)中RPL路由協(xié)議研究及性能分析[J].微型機(jī)與應(yīng)用,,2017,36(3):63-66.
0引言
隨著網(wǎng)絡(luò)的發(fā)展,物聯(lián)網(wǎng)[1]已經(jīng)成為繼互聯(lián)網(wǎng)之后的發(fā)展趨勢(shì),。作為物聯(lián)網(wǎng)的重要組成部分,,無(wú)線傳感網(wǎng)絡(luò)由于受到處理能力、內(nèi)存容量,、電量等限制,,其路由協(xié)議設(shè)計(jì)充滿挑戰(zhàn)?;ヂ?lián)網(wǎng)工程任務(wù)組(Internet Engineering Task Force, IETF)建立低功耗有損網(wǎng)絡(luò)路由工作組(Routing over Lossy and Lowpower Networks, ROLL)來(lái)解決這一問(wèn)題,,提出一種新的路由協(xié)議RPL,即IPv6 Routing Protocol for LowPower and Lossy Networks[2],。
本文首先介紹了RPL路由協(xié)議的原理,,分析了控制路由報(bào)文發(fā)送頻率的Trickle算法[3],其次用cooja[4]對(duì)不同場(chǎng)景進(jìn)行了仿真,,并根據(jù)仿真結(jié)果分析了RPL路由協(xié)議的性能,,接著驗(yàn)證了Trickle算法,,最后進(jìn)行了總結(jié)。
1RPL路由協(xié)議原理
RPL路由協(xié)議是一種距離矢量路由協(xié)議,,它根據(jù)目標(biāo)函數(shù)(Objective Function,OF)構(gòu)建以目的節(jié)點(diǎn)(根節(jié)點(diǎn))為導(dǎo)向的有向無(wú)環(huán)圖(DestinationOriented Directed Acyclic Graph,DODAG),。每個(gè)非根節(jié)點(diǎn)通過(guò)目標(biāo)函數(shù)計(jì)算出一個(gè)Rank值,表明自己與根節(jié)點(diǎn)之間的距離關(guān)系,。目前常用的目標(biāo)函數(shù)有OF0(Objective Function Zero)[5],、MRHOF(The Minimum Rank with Hysteresis Objective Function)[6]和ETX(Expected Transmission Count)[7]。三種控制報(bào)文用于RPL路由協(xié)議,,分別是DODAG信息請(qǐng)求報(bào)文(DODAG Information Solicitation,DIS),、DODAG信息對(duì)象報(bào)文(DODAG Information Object,DIO)和目的廣告對(duì)象報(bào)文(Destination Advertisement Object,DAO)。DIS報(bào)文用于未加入網(wǎng)絡(luò)的節(jié)點(diǎn)向網(wǎng)絡(luò)中的節(jié)點(diǎn)主動(dòng)尋求DIO報(bào)文,,并尋求加入網(wǎng)絡(luò),;DIO報(bào)文攜帶了一些配置參數(shù),如RPLInstanceID,、DODAGID,、Rank等,讓未加入網(wǎng)絡(luò)的節(jié)點(diǎn)能夠發(fā)現(xiàn)RPL實(shí)例并學(xué)習(xí)這些配置參數(shù),,選擇父節(jié)點(diǎn),,主要用于向上路由的建立;DAO報(bào)文攜帶一些路由前綴信息,,主要用于向下路由的建立,。
1.1DODAG構(gòu)建過(guò)程
整個(gè)DODAG的構(gòu)建可以分為兩個(gè)部分,第一部分是向上路由的構(gòu)建,,第二部分是向下路由的構(gòu)建,。
如圖1所示,,向上路由的構(gòu)建過(guò)程從根節(jié)點(diǎn)(6LoWPAN Border Router,6LBR)開(kāi)始,,6LBR廣播DIO報(bào)文,它攜帶著自己節(jié)點(diǎn)的信息RPLInstanceID,、DODAGID,、Rank等,在它傳輸范圍內(nèi)的6LRA(6LoWPAN Router A)收到該DIO報(bào)文后,,選擇6LBR作為父節(jié)點(diǎn)并加入該DODAG,。6LRA具有路由功能,它會(huì)根據(jù)目標(biāo)函數(shù)計(jì)算rank值并更新收到的DIO報(bào)文,,并廣播出去,,在它傳輸范圍內(nèi)的6LRB收到該DIO報(bào)文后,選擇6LRA作為父節(jié)點(diǎn)并加入該DODAG,。在6LRB加入DODAG后的某一時(shí)刻,,6LN(6LoWPAN NODE)主動(dòng)廣播DIS報(bào)文,尋求加入某個(gè)DODAG。6LRB收到該DIS報(bào)文后,,給6LN回復(fù)DIO報(bào)文,,讓6LN選擇6LRB作為父節(jié)點(diǎn)并加入DODAG。至此整個(gè)DODAG的向上路由就建立了,。向下路由通過(guò)DAO報(bào)文來(lái)構(gòu)建,。6LRA在收到6LBR的DIO報(bào)文后,回復(fù)6LBR DAO報(bào)文,,6LBR收到后將6LRA的前綴信息加入到路由表項(xiàng)中,。6LRB收到6LRA的DIO報(bào)文后,回復(fù)6LRA DAO報(bào)文,,6LRA處理該DAO報(bào)文后并向自己的父節(jié)點(diǎn)6LBR回復(fù)DAO報(bào)文,,6LBR收到該DAO報(bào)文后將6LRB的前綴信息加入路由表項(xiàng)中。因此,,DAO報(bào)文的處理工程是從子節(jié)點(diǎn)發(fā)送自己的父節(jié)點(diǎn),,父節(jié)點(diǎn)在處理后依次發(fā)送給自己的父節(jié)點(diǎn),直到發(fā)送到根節(jié)點(diǎn)為止,,根節(jié)點(diǎn)包含了所有節(jié)點(diǎn)的前綴信息,。
1.2Trickle算法
Trickle算法是RPL路由協(xié)議中一個(gè)重要的組成部分,它用來(lái)控制DIO報(bào)文的發(fā)送頻率,。Trickle算法運(yùn)用了自適應(yīng)傳輸周期機(jī)制,,保證網(wǎng)絡(luò)中路由信息一致時(shí),發(fā)送較少的路由報(bào)文,;而不一致時(shí)迅速發(fā)送大量的路由報(bào)文,,從而快速更新路由信息,保證一致性,。
為了實(shí)現(xiàn)上述自適應(yīng)傳輸周期的機(jī)制,,Trickle算法使用了3個(gè)配置參數(shù):最小時(shí)隙Imin表示DIO報(bào)文發(fā)送間隔的最小范圍;最大時(shí)隙Imax表示DIO報(bào)文發(fā)送間隔的最大范圍,;常數(shù)k用于表征DIO報(bào)文是否發(fā)送,。Trickle算法還使用了3個(gè)變量:當(dāng)前時(shí)隙I,表示DIO報(bào)文當(dāng)前的發(fā)送間隔,;當(dāng)前時(shí)隙的時(shí)間點(diǎn)t,,表示只有到達(dá)當(dāng)前時(shí)隙中的時(shí)間點(diǎn)t,DIO報(bào)文才有可能發(fā)送;一致性計(jì)數(shù)器c,,用于與常數(shù)k比較,,根據(jù)比較結(jié)果決定是否發(fā)送DIO報(bào)文。
Trickle算法的具體執(zhí)行步驟如下:
?。?)Trickle算法開(kāi)始執(zhí)行時(shí),,首先把當(dāng)前時(shí)隙I隨機(jī)置成[Imin, Imax]中的一個(gè)時(shí)隙,,并且開(kāi)始第一個(gè)時(shí)隙;
(2)當(dāng)一個(gè)時(shí)隙開(kāi)始時(shí),,把一致性計(jì)數(shù)器c重置成0,,并把時(shí)間點(diǎn)t設(shè)為當(dāng)前時(shí)隙I中大于等于I/2、小于等于I的一個(gè)隨機(jī)時(shí)間點(diǎn),;
(3)當(dāng)監(jiān)聽(tīng)到一致性消息時(shí),,增加計(jì)數(shù)器c;
(4)在時(shí)間點(diǎn)t,當(dāng)計(jì)數(shù)器c小于常數(shù)k時(shí),,發(fā)送DIO消息,,否則不發(fā)送DIO消息;
(5)當(dāng)時(shí)隙I過(guò)期后,,時(shí)隙I=I×2,,當(dāng)I>Imax時(shí), I置成Imax,并判斷下一時(shí)隙是否有效,,若有效返回步驟(2),,否則結(jié)束;
(6)當(dāng)監(jiān)聽(tīng)到不一致性消息并且I>Imin時(shí),,重置I為Imin,,當(dāng)I=Imin時(shí),什么也不做,,并判斷下一時(shí)隙是否有效,,若有效返回步驟(2),否則結(jié)束,。
2仿真環(huán)境和參數(shù)設(shè)置
2.1仿真環(huán)境
使用cooja對(duì)RPL路由協(xié)議進(jìn)行仿真,,cooja是基于Contiki操作系統(tǒng)[8]的模擬器。
2.2仿真參數(shù)
在仿真實(shí)驗(yàn)中,,使用的目標(biāo)函數(shù)為ETX(Expected Transmission Count),。ETX指一個(gè)節(jié)點(diǎn)成功傳輸一個(gè)數(shù)據(jù)包給目的節(jié)點(diǎn)需要傳輸?shù)拇螖?shù)。無(wú)線介質(zhì)類型是UDMG類型,,如圖2所示,,內(nèi)部的圓區(qū)域代表了節(jié)點(diǎn)1能從其他節(jié)點(diǎn)接收包的范圍,,其中的百分比分別代表了從不同節(jié)點(diǎn)接收包的成功率,,它隨著與節(jié)點(diǎn)1的距離增大而減小。外部的圓區(qū)域?yàn)槭艿綗o(wú)線干擾的范圍,。設(shè)置接收包的范圍為50 m,,受到干擾的范圍是100 m,發(fā)送包的成功率為100%,,接收包的成功率根據(jù)節(jié)點(diǎn)間的距離確定,。
仿真時(shí)間為15 min,,節(jié)點(diǎn)的類型為sky類型,并且只有1個(gè)根節(jié)點(diǎn),。在不同空間位置關(guān)系的節(jié)點(diǎn)圖仿真實(shí)驗(yàn)中,,有30個(gè)具有路由功能的節(jié)點(diǎn);在動(dòng)態(tài)增減節(jié)點(diǎn)的仿真實(shí)驗(yàn)中,,在第5 min時(shí)動(dòng)態(tài)減少或增加10個(gè)有路由功能的節(jié)點(diǎn),。這些節(jié)點(diǎn)分布在200 m×200 m的正方形區(qū)域內(nèi)。
3仿真分析
為了對(duì)仿真結(jié)果進(jìn)行分析,,需要使用評(píng)估RPL路由協(xié)議的性能指標(biāo)[9],,使用分組遞交率和平均功耗作為評(píng)估的指標(biāo)。
3.1不同空間位置關(guān)系的節(jié)點(diǎn)圖仿真
為了評(píng)估RPL路由協(xié)議在不同的拓?fù)淝闆r下的性能,,根據(jù)根節(jié)點(diǎn)與路由節(jié)點(diǎn)的關(guān)系,,設(shè)計(jì)了4種不同空間位置關(guān)系的節(jié)點(diǎn)圖,如圖3所示,。
圖4顯示了15 min內(nèi)不同場(chǎng)景下發(fā)送給根節(jié)點(diǎn)包的數(shù)量和根節(jié)點(diǎn)接收包的數(shù)量,,圖5根據(jù)圖4的數(shù)據(jù)計(jì)算出了分組遞交率。根據(jù)圖4,,不同空間位置節(jié)點(diǎn)圖發(fā)送給根節(jié)點(diǎn)的包的總數(shù)基本相同,,為420左右。根據(jù)圖5,,格子型的分組遞交率最高,,為98.81%,而樹(shù)型的分組遞交率最低,,為95.44%,,但是相差都不是特別大,并且包的遞交率都達(dá)到了95%以上,。根據(jù)上述結(jié)果,,在分組遞交率方面RPL路由協(xié)議在靜態(tài)的不同場(chǎng)景下都有較好的表現(xiàn)。
圖6顯示了15 min內(nèi)除根節(jié)點(diǎn)之外的其他所有節(jié)點(diǎn)的功耗的平均值,。根據(jù)圖6,,樹(shù)型的平均功耗最大,為3.14 mW,,格子型的平均功耗最小,,為1.79 mW。樹(shù)型的平均功耗遠(yuǎn)遠(yuǎn)大于其他三種情況下的平均功耗,。根據(jù)上述結(jié)果,,在平均功耗方面PRL路由協(xié)議對(duì)于樹(shù)型位置關(guān)系表現(xiàn)得并不是很好,而其他三種場(chǎng)景下有較好的表現(xiàn),。
3.2動(dòng)態(tài)增減節(jié)點(diǎn)的仿真
為了評(píng)估RPL路由協(xié)議在動(dòng)態(tài)變化拓?fù)渲械男阅?,設(shè)計(jì)了動(dòng)態(tài)增減節(jié)點(diǎn)的場(chǎng)景,。節(jié)點(diǎn)隨機(jī)關(guān)系的場(chǎng)景是最常見(jiàn)的場(chǎng)景,因此動(dòng)態(tài)增減節(jié)點(diǎn)的仿真使用隨機(jī)關(guān)系場(chǎng)景,。
圖7顯示了15 min內(nèi)不同條件下發(fā)送給根節(jié)點(diǎn)包的數(shù)量和根節(jié)點(diǎn)接收包的數(shù)量,,圖8根據(jù)圖7的數(shù)據(jù)計(jì)算出了分組遞交率。根據(jù)圖7,,在第5 min時(shí)動(dòng)態(tài)加入節(jié)點(diǎn)的場(chǎng)景下,,其他路由節(jié)點(diǎn)發(fā)送給根節(jié)點(diǎn)和根節(jié)點(diǎn)接收包的數(shù)量都比原來(lái)的要多,而動(dòng)態(tài)減少節(jié)點(diǎn)的情況下都比原來(lái)的要少,;但都少于一開(kāi)始靜態(tài)相同位置相同數(shù)目節(jié)點(diǎn)的場(chǎng)景,,說(shuō)明節(jié)點(diǎn)個(gè)數(shù)影響發(fā)送給根節(jié)點(diǎn)和根節(jié)點(diǎn)接收包的數(shù)量。根據(jù)圖8,,在第5 min時(shí)動(dòng)態(tài)加入和減少節(jié)點(diǎn)的場(chǎng)景
圖8分組遞交率與靜態(tài)相同位置相同數(shù)目節(jié)點(diǎn)場(chǎng)景相比,,包遞交率相差不大,說(shuō)明動(dòng)態(tài)增減節(jié)點(diǎn)對(duì)包遞交率影響很小,,RPL路由協(xié)議能夠很好地適應(yīng)網(wǎng)絡(luò)的動(dòng)態(tài)變化,。
圖9顯示了15 min內(nèi)不同場(chǎng)景的平均功耗。根據(jù)圖9,,在第5 min時(shí)動(dòng)態(tài)加入和減少節(jié)點(diǎn)的場(chǎng)景與靜態(tài)相同位置相同數(shù)目節(jié)點(diǎn)場(chǎng)景相比,,平均功耗都大大增加,說(shuō)明了在功耗方面,,RPL路由協(xié)議對(duì)于動(dòng)態(tài)變化的網(wǎng)絡(luò)會(huì)大大增加節(jié)點(diǎn)的平均功耗,。
3.3Trickle算法的仿真
為了驗(yàn)證Trickle算法能夠有效控制DIO報(bào)文的發(fā)送頻率,在網(wǎng)絡(luò)維持不變時(shí)增大DIO報(bào)文的發(fā)送間隔,,在網(wǎng)絡(luò)發(fā)送變化時(shí)能夠迅速減小DIO報(bào)文發(fā)送的間隔,,從而維護(hù)網(wǎng)絡(luò)。使用圖2進(jìn)行了仿真,,圖10顯示了仿真結(jié)果,。
圖中橫坐標(biāo)代表時(shí)間節(jié)點(diǎn),縱坐標(biāo)代表時(shí)隙的大小,。圖中顯示了三個(gè)階段,,第一階段網(wǎng)絡(luò)沒(méi)有發(fā)生變化,因此每次當(dāng)前時(shí)隙I到期后,,I變成了I×2(I×2<Imax),,而當(dāng)I等于Imax時(shí),I到期后,,I維持不變,,圖中Imax為2 100 s,因此I到達(dá)2 100 s后一直維持不變。在第二階段移動(dòng)節(jié)點(diǎn)6,,網(wǎng)絡(luò)發(fā)生變化,,因此Trickle算法將當(dāng)前時(shí)隙I由2 100 s迅速降到最小,之后在第三階段網(wǎng)絡(luò)達(dá)到穩(wěn)定后,,節(jié)點(diǎn)6的時(shí)隙I仍然按照原來(lái)增長(zhǎng),。4結(jié)束語(yǔ)
本文對(duì)RPL路由協(xié)議進(jìn)行了詳細(xì)的介紹,并對(duì)靜態(tài)場(chǎng)景及動(dòng)態(tài)增減節(jié)點(diǎn)情況下的RPL路由協(xié)議性能進(jìn)行了深入評(píng)估,。從仿真結(jié)果得出以下結(jié)論:
(1)對(duì)于不同靜態(tài)場(chǎng)景,分組遞交率都在95%以上,,并且相差不大,,RPL路由協(xié)議對(duì)各種節(jié)點(diǎn)布局都適用;對(duì)于動(dòng)態(tài)增減節(jié)點(diǎn),,分組遞交率與靜態(tài)相比相差不大,,RPL路由協(xié)議能適應(yīng)網(wǎng)絡(luò)的動(dòng)態(tài)變化。
?。?)對(duì)于不同靜態(tài)場(chǎng)景,,樹(shù)型位置關(guān)系的平均功耗遠(yuǎn)大于其他關(guān)系的平均功耗,RPL路由協(xié)議對(duì)于樹(shù)型位置關(guān)系并不特別合適,;對(duì)于動(dòng)態(tài)增減節(jié)點(diǎn),,RPL路由協(xié)議會(huì)大大增加平均功耗。
?。?)Trickle算法能夠有效地控制路由報(bào)文的發(fā)送,。
參考文獻(xiàn)
[1] GUBBI J, BUYYA R, MARUSIC S, et al. Internet of Things (IoT): a vision, architectural elements, and future directions[J]. Future Generation Computer Systems, 2013, 29(7):1645-1660.
?。?] WINTER T, THUBERT P, BRANDT A, et al. RPL: IPv6 routing protocol for lowpower and lossy networks[S]. Internet: RFC 6550, 2012.
?。?] LEVIS P, CLAUSEN T, HUI J, et al. The trickle algorithm[S]. Internet: RFC 6206, 2011.
[4] OSTERLIND F, DUNKELS A, ERIKSSON J, et al. Crosslevel sensor network simulation with COOJA[C]. Proceedings of 31st IEEE Conference on Local Computer Networks, Tampa,FL: IEEE, 2006: 641-648.
?。?] THUBERT P. RPL objective function zero[S]. Internet: RFC 6552, 2012.
?。?] GNAWALI O, LEVIS P. The minimum rank with hysteresis objective function[S]. Internet: RFC 6719, 2012.
[7] GNAWALI O, LEVIS P. The ETX objective function for RPL[S]. Internet: draftgnawalirolletxof00, 2010.
?。?] DUNKELS A, GRONVALL B, VOIGT T. Contiki a lightweight and flexible operating system for tiny networked sensors[C]. Proceedings of the 29th Annual IEEE International Conference on Local Computer Networks, 2004. IEEE, 2004:455-462.
?。?] TRIPATHI J, DE OLIVEIRA J, VASSEUR J P. Performance evaluation of routing protocol for low power and lossy networks[S]. Internet: RFC 6687, 2012.