何王吉,馬皛源,李 鑫,唐瑋圣
(1.中國科學院 上海高等研究院,上海 201210; 2.中國科學院大學,北京 100049;3.上海科技大學 信息科學與技術(shù)學院,上海 201210)(*通信作者電子郵箱maxy@sari.ac.cn)
近年來,低功耗有損網(wǎng)絡(luò)(Low-power and Lossy Network,LLN)在醫(yī)療健康、環(huán)境監(jiān)測、智能家居、智能電網(wǎng)[1-4]等領(lǐng)域均有廣泛的應用。由于傳感器節(jié)點的處理能力、存儲空間和能量都十分有限,且節(jié)點間通過不穩(wěn)定的無線鏈路相連,LLN具有拓撲不穩(wěn)定、丟包率較高的特點。在LLN實際的應用中,由于傳感器節(jié)點數(shù)量眾多以及環(huán)境條件的限制,不可能頻繁更換節(jié)點的電池,需要盡力延長網(wǎng)絡(luò)的生存時間,即網(wǎng)絡(luò)中最先死亡的節(jié)點的生存時間。
2008年,國際互聯(lián)網(wǎng)工程任務組成立了ROLL(Routing Over Low-power and Lossy network)工作組,對低功耗有損網(wǎng)絡(luò)制定了IPv6路由協(xié)議標準低功耗有損網(wǎng)絡(luò)路由協(xié)議(Routing Protocol for Low-power and lossy network, RPL)[5]。RPL是一種距離矢量路由協(xié)議,通過使用目標函數(shù)(Objective Function,OF)和路由度量指導節(jié)點選擇一條到根節(jié)點的最佳路徑,來構(gòu)造導向目的地的有向無環(huán)圖(Destination Oriented Directed Acyclic Graph, DODAG)。路由協(xié)議需要周期性地廣播拓撲信息,以維護網(wǎng)絡(luò)拓撲。為了減少控制包數(shù)量,RPL采用“Trickle”定時器機制維護網(wǎng)絡(luò)拓撲[6],它會根據(jù)網(wǎng)絡(luò)狀況動態(tài)地調(diào)整控制包發(fā)送頻率。當網(wǎng)絡(luò)穩(wěn)定時,控制包間隔會成倍遞增,造成網(wǎng)絡(luò)后期控制包更新不及時。
官方已制定了兩種目標函數(shù)(Objective Function, OF):零目標函數(shù)(Objective Function Zero, OF0)[7]與帶有遲滯性的最小深度目標函數(shù)(Minimum Rank with Hysteresis Objective Function, MRHOF)[8]。OF0以跳數(shù)作為路由度量,MRHOF以期望傳輸次數(shù)(Expected Transmission Count, ETX)[9]作為路由度量。這些路由度量都僅考慮了單一方面,會造成部分節(jié)點數(shù)據(jù)量增多,提前耗盡能量。
目前,已有一些研究對RPL性能進行了分析比較。文獻[10]中顯示,在數(shù)據(jù)采集網(wǎng)絡(luò)中,相對于CTP(Collection Tree Protocol),RPL具有更好的收包率與低功耗特性。文獻[11]對比分析了RPL與LOADng(Lightweight On-demand Ad hoc Distance-vector routing protocol-next generation)協(xié)議性能,實驗顯示,相對于LOADng協(xié)議,RPL的時延更小,控制包開銷與所需存儲空間也更少。
關(guān)于RPL優(yōu)化的研究中,文獻[12]中提出了一種最小化節(jié)點到root時延的路由度量,能有效降低RPL的端到端時延;文獻[13]中針對突發(fā)事件中的大數(shù)據(jù)流所導致的擁塞問題,提出了一種復合多種路由度量的多路徑負載均衡路由算法。根據(jù)不同鏈路分配的權(quán)值,將連續(xù)的大流量數(shù)據(jù)分發(fā)給不同的鏈路進行傳輸,緩解了網(wǎng)絡(luò)擁塞,并且能夠均衡網(wǎng)絡(luò)負載。
在對RPL進行能量優(yōu)化的研究中,文獻[14]中提出了一種期望壽命(Expected Life Time,ELT)路由度量用于估算網(wǎng)絡(luò)中瓶頸節(jié)點的生存時間,以此構(gòu)建網(wǎng)絡(luò)拓撲,并依據(jù)最大最小(Max-Min)原則選擇父節(jié)點。與RPL相比,改進后ELT-RPL實現(xiàn)了能量均衡與網(wǎng)絡(luò)壽命的延長,但在收包率上性能下降,因為該協(xié)議增加了控制包的數(shù)量造成包的碰撞概率增加。文獻[15]通過節(jié)點的能量分級和調(diào)節(jié)通信半徑的方法,改進了RPL中的目標函數(shù),并通過實驗結(jié)果說明改進后的算法能均衡網(wǎng)絡(luò)負載,延長整個網(wǎng)絡(luò)的生命周期,但會增加跳數(shù),并且存在網(wǎng)絡(luò)抖動現(xiàn)象。在文獻[16]中,基于簇父集協(xié)作通信的RPL(Cluster parent set based RPL, CRPL)中沒有均衡節(jié)點能耗與最大化網(wǎng)絡(luò)生存時間的問題,提出了一種高效的CRPL(High-Efficient CEPL, HE-CEPL)。選擇簇父節(jié)點時,同時考慮通信可靠性與節(jié)點可用能量,并引入期望壽命ELT進行最優(yōu)簇父集選擇。文獻[17]將鏈路質(zhì)量與節(jié)點消耗能量相結(jié)合,提出了一種能量感知的RPL,與RPL相比,延長了網(wǎng)絡(luò)生存壽命。
上述工作雖然延長了一定的網(wǎng)絡(luò)生存時間,但都沒有解決網(wǎng)絡(luò)后期控制包發(fā)送頻率降低所造成的父節(jié)點狀態(tài)信息更新不及時的問題,該問題的存在會使節(jié)點作出錯誤的路由決策,加速瓶頸節(jié)點的死亡。
本文在RPL的基礎(chǔ)上,綜合考慮鏈路可靠性和節(jié)點生存時間,設(shè)計了一種能量均衡的EB-RPL(Energy Balancing-RPL)。本文的工作主要有以下兩方面:
1)提出了一種復合期望傳輸次數(shù)和節(jié)點剩余能量的路由度量EB-ETX(Energy Balancing-Expected Transmission Count),前期優(yōu)先選擇可靠性高的鏈路,后期節(jié)點剩余能量減少,通過機制設(shè)計使其在路由度量中的比重升高,節(jié)點能自適應地調(diào)整網(wǎng)絡(luò)拓撲,優(yōu)先選擇能量更多的節(jié)點為父節(jié)點。
2)設(shè)計了一種基于能量消耗速率的父節(jié)點電量估算算法,以解決RPL中“Trickle”定時器機制所導致的父節(jié)點狀態(tài)信息更新不及時的問題。
在RPL中,僅選定一種節(jié)點或鏈路屬性作為路由度量,并根據(jù)該度量建立DODAG,這會使部分節(jié)點能耗增加,提前死亡。例如,在圖1所示的拓撲中,采用ETX作為路由度量,q反映鏈路質(zhì)量,其數(shù)值等于鏈路的期望傳輸次數(shù),數(shù)值越小表示其路徑的傳輸質(zhì)量越高;以節(jié)點距離根節(jié)點(root)的跳數(shù)表征節(jié)點的Rank等級,Rank越小表示節(jié)點距離root更近。為了避免產(chǎn)生路由環(huán)路,節(jié)點只能選擇Rank比自己小的節(jié)點作為父節(jié)點。以節(jié)點5為例,其到兩個父節(jié)點2、3的路由開銷(Path Cost)分別為5和3,因此節(jié)點5的最佳父節(jié)點為節(jié)點3。顯然在圖1的DODAG中,節(jié)點3為瓶頸節(jié)點,由于子樹中節(jié)點眾多,其能耗顯著高于同級節(jié)點,會成為網(wǎng)絡(luò)中最先死亡的節(jié)點。
圖1 以ETX為路由度量構(gòu)造的DODAG
因此,要延長網(wǎng)絡(luò)生存時間就要延長網(wǎng)絡(luò)中瓶頸節(jié)點的生存時間,并實現(xiàn)網(wǎng)絡(luò)中同級節(jié)點間的能量均衡,即相同Rank值的節(jié)點間的能量均衡,例如圖1中的節(jié)點2與節(jié)點3。網(wǎng)絡(luò)中不同位置的節(jié)點發(fā)揮著不同的作用,因此不能要求在root附近的關(guān)鍵節(jié)點與處于拓撲樹底端的葉子節(jié)點之間能量均衡,因為前者的能耗必然是顯著高于后者的。此外,在實現(xiàn)能量均衡的同時要保證一定的鏈路可靠性,以滿足實際應用需求。
為了解決上述問題,本文提出了能量均衡的EB-RPL。在網(wǎng)絡(luò)初期能量充足時,節(jié)點會優(yōu)先選擇鏈路質(zhì)量最好的父節(jié)點構(gòu)成最優(yōu)路徑,以保證網(wǎng)絡(luò)的可靠傳輸;根據(jù)本文的機制設(shè)計,隨著節(jié)點能量的降低,節(jié)點剩余能量在路由開銷中的比重會逐漸增大,當剩余能量下降到一定程度時,節(jié)點會優(yōu)先選擇剩余能量最多的節(jié)點為最佳父節(jié)點,以避免鏈路質(zhì)量最優(yōu)的父節(jié)點成為網(wǎng)絡(luò)中的瓶頸節(jié)點,最先耗盡能量。
路由度量是指選擇父節(jié)點時用于計算路由開銷時的鏈路或節(jié)點特征,常見的節(jié)點性質(zhì)有:跳數(shù)、剩余能量,鏈路性質(zhì)有:吞吐量、時延、期望傳輸次數(shù)。
為了構(gòu)造能兼顧鏈路質(zhì)量和節(jié)點剩余能量的路由度量,在計算路由開銷時,需要量化鏈路質(zhì)量和節(jié)點的剩余能量(Residual Energy, RE),因此,本文提出以下公式來分別計算路由度量和路由開銷:
EB-ETXN→P=a·ETXN→P+b·RERN
(1)
PathCostN=PathCostP→root+EB-ETXN→P
(2)
其中:ETXN→P為期望傳輸次數(shù),表示節(jié)點N與父節(jié)點P之間的鏈路質(zhì)量;剩余能量率(Residual Energy Rate, RER)是反映節(jié)點能量的度量值,RERN表示節(jié)點N能量的剩余狀況;a與b分別為ETX與RER的權(quán)重系數(shù);PathCostP→root則表示父節(jié)點到root的路由開銷。通過式(1)可求得從節(jié)點N到父節(jié)點P的EB-ETX值,其取決于節(jié)點之間的鏈路質(zhì)量和節(jié)點N的剩余能量情況,并且可以根據(jù)不同的應用需求來調(diào)節(jié)a與b的取值,當a大于b時,表示鏈路質(zhì)量在路由度量中的比重更大,適用于保證網(wǎng)絡(luò)高可靠性的應用;反之,則用于需要延長網(wǎng)絡(luò)生存時間的應用;當兩者相等時,適用于網(wǎng)絡(luò)生存時間和可靠性對其有著同等重要性的應用。在本文的仿真實驗中,為了在保證網(wǎng)絡(luò)可靠性的同時延長網(wǎng)絡(luò)生存時間,設(shè)定a為0.2,b為3。
式(2)表明了節(jié)點N到root的路由開銷由其到父節(jié)點的路由度量值與父節(jié)點到root的路由開銷組成。最終,節(jié)點到root的路由開銷由父節(jié)點到root的路由開銷、節(jié)點到父節(jié)點的鏈路質(zhì)量和節(jié)點剩余能量狀況三部分組成。節(jié)點將選擇路由開銷最小的節(jié)點作為自己的最優(yōu)父節(jié)點。
根據(jù)RFC 6551[18]中所給出的描述,鏈路的ETX值是指包從鏈路一端成功發(fā)送到另一端所需要傳輸?shù)拇螖?shù),它反映了雙向鏈路質(zhì)量,ETX越小說明鏈路越可靠。ETX的計算需要涉及到鏈路的雙向包接收率(包接收率為接收節(jié)點收包數(shù)與發(fā)送節(jié)點發(fā)包數(shù)之比)。ETX計算公式如下:
(3)
其中:PN→P表示節(jié)點N的包接收率,即N收到的數(shù)據(jù)包數(shù)量占父節(jié)點發(fā)包總數(shù)的比率;PP→N表示父節(jié)點的包接收率。
為了實現(xiàn)隨著節(jié)點剩余能量的減少,自適應地增加剩余能量率在路由開銷中所占比重,本文設(shè)計了如下反比例公式:
RERN=E0/REN
(4)
其中:REN=E0-CEN;CEN表示節(jié)點N消耗的能量;E0表示節(jié)點初始的能量。因此節(jié)點的剩余能量率為節(jié)點初始能量與剩余能量的比值。
根據(jù)文獻[19],節(jié)點狀態(tài)主要分為cpu、lpm、listen和transmit,分別表示節(jié)點處于正常運行、低功耗、監(jiān)聽和傳輸狀態(tài)。根據(jù)不同狀態(tài)的功率和運行時間,可以統(tǒng)計節(jié)點的能量消耗情況:
(5)
P=U·I
(6)
其中:Pi表示在上述四種狀態(tài)下節(jié)點對應的功率值;ti表示對應狀態(tài)下的運行時間。
設(shè)定電壓U為3 V,cpu、lpm、listen、transmit狀態(tài)下對應的電流I分別為1.8 mA、0.054 mA、17.7 mA、20 mA,代入式(6)即可求得各個狀態(tài)對應的功率值。同時,利用Contiki操作系統(tǒng)[20]中的Energest函數(shù),可以得到節(jié)點在各個狀態(tài)下的運行時間。
圖2所展示的是RER隨著節(jié)點電量消耗CE/E0的變化趨勢:在電池電量較充足時(消耗電量低于50%),RER值并沒有明顯地增大,電量消耗從0%增至50%,RER值僅增加了1;隨著節(jié)點能量進一步降低,特別是在消耗80%的能量以后,RER值則會顯著增大。通過上述機制設(shè)計,使得節(jié)點在網(wǎng)絡(luò)初期優(yōu)先選擇可靠鏈路,保證拓撲的穩(wěn)定性和網(wǎng)絡(luò)傳輸?shù)目煽啃?而在后期網(wǎng)絡(luò)內(nèi)節(jié)點能量受限時,優(yōu)先選擇剩余能量最多的節(jié)點構(gòu)成最優(yōu)路徑,以延長網(wǎng)絡(luò)中瓶頸節(jié)點的生存時間。
圖2 RER值隨節(jié)點電量消耗的趨勢
以圖1中的網(wǎng)絡(luò)拓撲為例,當采用EB-RPL時,網(wǎng)絡(luò)初期,由于節(jié)點3提供更好的鏈路質(zhì)量,節(jié)點5、7、8都選擇節(jié)點3作為最佳父節(jié)點;隨著網(wǎng)絡(luò)中節(jié)點剩余能量降低,節(jié)點5和6又分別選擇剩余能量更多的節(jié)點2和4作為自己的最佳父節(jié)點,如圖3所示。這種自適應調(diào)整拓撲的策略可以延長網(wǎng)絡(luò)中瓶頸節(jié)點的生存時間,并實現(xiàn)節(jié)點間能量均衡,從而延長網(wǎng)絡(luò)生存時間。
圖3 使用EB-RPL時的網(wǎng)絡(luò)拓撲變化
當采用上述復合路由度量時,節(jié)點會定期廣播包含自身信息的控制包,用于子節(jié)點計算、更新路由開銷。由于LLN的低功耗特性,RPL采取了“Trickle”定時器機制管理控制包發(fā)送,它會根據(jù)網(wǎng)絡(luò)狀況自適應地調(diào)整控制包發(fā)送頻率。如果網(wǎng)絡(luò)穩(wěn)定(沒有節(jié)點加入或死亡等),下一次發(fā)送間隔I會取當前間隔的2倍,直至I等于I_max。RPL中默認的I_max為220s,即在網(wǎng)絡(luò)后期最長的控制包間隔為17 min。這會導致節(jié)點無法正確獲知父節(jié)點的狀態(tài)變化,例如父節(jié)點實際能量已經(jīng)接近耗盡,但子節(jié)點按照前一次收到的控制包中的狀態(tài)值來計算路由開銷,仍選擇該節(jié)點為最佳父節(jié)點。如果減小控制包的發(fā)包間隔又會導致網(wǎng)絡(luò)中控制包數(shù)量增多,增大包的碰撞概率和網(wǎng)絡(luò)能耗。
對此,本文提出了一種基于能量消耗速率的節(jié)點電量估算策略,該策略在不增加額外控制包開銷的同時,可以計算父節(jié)點剩余能量情況。
在電量估算策略中,節(jié)點會周期性地計算自己的剩余能量,并記錄下當前時間t1與對應的REt1;在下一時刻t2時,若計算得到的REt2≠REt1,便根據(jù)式(7)計算節(jié)點的能量消耗速率(Energy Consumption Rate, ECR)。
(7)
此外,利用EWMA(Exponentially Weighted Moving- Average)函數(shù)可以得到更平穩(wěn)的ECR值:
ECRfinal=0.4ECRold+0.6ECRnew
(8)
式(8)表明最終的能量消耗速率ECRfinal是對上一次的ECRold與當前的ECRnew進行移動平均后得到的。因此,節(jié)點發(fā)送的控制包中將包含自身的EB-ETX、RE以及ECR值。
子節(jié)點收到控制包后,會在鄰居表中記錄父節(jié)點的狀態(tài)信息和收包時間,此后若等待時間Δt大于門限值t0(全網(wǎng)統(tǒng)一的等待門限,仿真實驗中設(shè)為50 s)時,仍未收到對應父節(jié)點的新的控制消息,則根據(jù)父節(jié)點上一次的剩余能量和能量消耗速率估算當前的剩余能量:
(9)
其中:REinitial為鄰居表中存儲的最新父節(jié)點剩余能量值;REest是對父節(jié)點當前剩余能量的估值;REest_last表示前一次計算的父節(jié)點剩余能量估值。式(9)的含義是,當?shù)谝淮喂浪愀腹?jié)點剩余能量時,參照REinitial計算估值;此后,每次參照上次的估值REest_last估算當前的父節(jié)點剩余能量。
將得到的REest代入式(4)計算剩余能量率增量:
(10)
利用ΔRER即可更新當前父節(jié)點到root的路由開銷PathCostparent_est,將其代入式(2)便可得到當前節(jié)點到root的路由開銷:
(11)
其中:PathCostparent是最近一次控制包中包含的父節(jié)點到root的路由開銷。在每完成一輪計算后,子節(jié)點會在鄰居表中記錄當前時間、對應的父節(jié)點剩余能量估值REest與RER增量ΔRER,并按照上述步驟重新開始新一輪計算。當?shù)却龝r間未達到門限值t0時,節(jié)點根據(jù)鄰居表中存儲的ΔRER仍按照式(11)計算路由開銷。
同時,為了避免由于長時間未收到控制包,出現(xiàn)對父節(jié)點能量估值不準確的情況,若子節(jié)點超過10 min未收到新的控制消息或REest≤REinitial/3,會向父節(jié)點發(fā)送控制包請求信息,父節(jié)點收到后則回復新的控制包。
通過上述父節(jié)點電量估算策略,可以在基本不增加額外的控制包的同時,實時更新父節(jié)點到root的路由開銷,使節(jié)點進行更正確的最佳父節(jié)點選擇。
本章通過仿真實驗分別對父節(jié)點電量估算策略的正確性與EB-RPL性能進行了分析與驗證。
首先,為了驗證父節(jié)點電量估算策略的準確性,本文計算了電量估值與實際值間誤差的均值與方差。
然后,本文對EB-RPL與RPL分別作了仿真分析,并對比了兩者的協(xié)議性能,以驗證EB-RPL能實現(xiàn)能量均衡并延長網(wǎng)絡(luò)生存時間,其中RPL使用ETX為路由度量。本文使用的仿真平臺是Contiki 2.7操作系統(tǒng),仿真工具是Cooja仿真器。
本文主要采用下列三種性能指標進行協(xié)議的對比分析:
1)網(wǎng)絡(luò)生存時間。以網(wǎng)絡(luò)中第一個死亡的節(jié)點生存時間作為網(wǎng)絡(luò)的生存時間,為模擬真實場景中的通信系統(tǒng),當節(jié)點剩余能量僅為初始能量的10%時,視為該節(jié)點死亡。
2)能量均衡。以Rank值為1的節(jié)點功率的標準差來表征網(wǎng)絡(luò)中的能量均衡性能,數(shù)值越小說明節(jié)點間能量越均衡。
3)收包率。定義為根節(jié)點成功收包數(shù)與網(wǎng)絡(luò)中發(fā)包總數(shù)的比率,收包率越高說明網(wǎng)絡(luò)越可靠。
本文的仿真場景由21個Exp5438節(jié)點組成,其中節(jié)點1為根節(jié)點(通常使用電源供電,默認其能量充足,子節(jié)點始終視其為滿電狀態(tài)),其余均為傳感器節(jié)點,如圖4所示。
圖4 仿真場景
為了模擬現(xiàn)實場景,本文的相關(guān)參數(shù)設(shè)置如表1所示。其中關(guān)于初始能量的參數(shù)設(shè)置,考慮如下:實際應用中,節(jié)點通過干電池供電,通常干電池電壓為1.5 V,電池容量約為1 200 mAh,計算可得其能量為6 500 J。為了便于在仿真平臺上進行多次重復驗證,實驗將節(jié)點的初始能量設(shè)為6.5 J。
表1 仿真環(huán)境與參數(shù)設(shè)置
為了分析驗證父節(jié)點電量估算策略的準確性,本文利用圖4中的仿真場景,設(shè)定發(fā)包間隔為5 s,路由層運行EB-RPL。根據(jù)第2章中所述,子節(jié)點會計算經(jīng)過不同父節(jié)點到根節(jié)點的路由開銷,并選擇其中開銷最小的父節(jié)點為最佳父節(jié)點。以節(jié)點14為例,在圖4所示的拓撲中,節(jié)點14的子節(jié)點19、20、21在計算路由開銷時都需估算節(jié)點14的實時電量,通過記錄子節(jié)點的電量估值與對應時刻節(jié)點14的實際電量,根據(jù)式(12)可求得此次估值誤差ΔE(t):
ΔE(t)=|REest(t)-REreal(t)|
(12)
其中:REest(t)表示t時刻子節(jié)點對父節(jié)點的電量估值;REreal(t)表示t時刻該父節(jié)點的實際電量。根據(jù)上述過程,可得到網(wǎng)絡(luò)生存周期內(nèi)不同時刻,節(jié)點19、20、21對父節(jié)點14電量估值的誤差分布情況,如圖5所示。圖5顯示節(jié)點14的相鄰子節(jié)點19、20、21對其電量估值的誤差范圍為0%~3%。
圖5 節(jié)點14的子節(jié)點電量估值誤差分布
同時,可以進一步算出節(jié)點14的子節(jié)點對其電量估值誤差的均值為0.5,方差為0.3。通過統(tǒng)計網(wǎng)絡(luò)生存周期內(nèi),所有節(jié)點的子節(jié)點對其電量估值的誤差,并計算誤差的均值與方差,最終可得到表2。由于節(jié)點1始終被視為滿電狀態(tài),節(jié)點17~21是網(wǎng)絡(luò)中的葉子節(jié)點,沒有相應的子節(jié)點,故均不在表中。表2中所有節(jié)點的電量估值誤差的均值范圍為0.5%~2.8%,方差范圍為0.4~5.6,說明在網(wǎng)絡(luò)生存周期內(nèi),本文所提出的父節(jié)點電量估算策略均能達到較高的準確性。
表2 節(jié)點的子節(jié)點對其電量估值的誤差
在圖4所示的仿真場景中,設(shè)定發(fā)包間隔為5 s,路由層分別運行RPL與EB-RPL。在兩種協(xié)議的網(wǎng)絡(luò)拓撲中,節(jié)點3均為瓶頸節(jié)點,其剩余能量隨仿真時間變化如圖6所示。隨著實驗的進行,節(jié)點3的剩余能量逐漸減少,與RPL相比,EB-RPL中節(jié)點能量的消耗速率更低,并且網(wǎng)絡(luò)后期的下降速率變慢。最終,在RPL與EB-RPL中,網(wǎng)絡(luò)的生存時間分別為1 334 s和2 200 s,改進后的網(wǎng)絡(luò)生存時間延長了65%。
這是因為在RPL中,只采用ETX為路由度量,網(wǎng)絡(luò)拓撲一旦建立,只要網(wǎng)絡(luò)穩(wěn)定,其拓撲將不再發(fā)生變化。即子節(jié)點一旦選定父節(jié)點,便會始終向它發(fā)包,不會再更換父節(jié)點,直至該父節(jié)點死亡。在這種情況下,類似節(jié)點3這種數(shù)據(jù)量大、鏈路質(zhì)量突出的節(jié)點的能耗往往會顯著高于其他節(jié)點,成為網(wǎng)絡(luò)中的瓶頸節(jié)點。而在EB-RPL中,采用復合ETX和節(jié)點剩余能量的EB-ETX作為路由度量,并且根據(jù)本文的機制設(shè)計,隨著節(jié)點剩余能量的降低,其在路由度量中所占比重會顯著升高。即在后期網(wǎng)絡(luò)內(nèi)節(jié)點能量受限時,會自適應地調(diào)整網(wǎng)絡(luò)拓撲,優(yōu)先選擇剩余能量最多的父節(jié)點構(gòu)成最優(yōu)路徑。因此,改進后的EB-RPL能夠有效延長網(wǎng)絡(luò)生存時間。
圖6 瓶頸節(jié)點生存時間比較
考慮到不同數(shù)據(jù)流量的LLN應用需求,在圖4的仿真場景中比較了不同發(fā)包間隔時兩種路由協(xié)議的網(wǎng)絡(luò)生存時間,結(jié)果如圖7(a)所示。實驗結(jié)果顯示,在不同的發(fā)包間隔下,EB-RPL比RPL平均延長了29.4%的網(wǎng)絡(luò)生存時間。
圖7 不同發(fā)包間隔和網(wǎng)絡(luò)規(guī)模中網(wǎng)絡(luò)的生存時間比較
為了驗證在不同的網(wǎng)絡(luò)規(guī)模下EB-RPL均有穩(wěn)定的性能,設(shè)定發(fā)包間隔為5 s,在仿真區(qū)域內(nèi)均勻部署10~60個節(jié)點,并對比了兩種路由協(xié)議在不同規(guī)模的網(wǎng)絡(luò)中的生存時間,結(jié)果如圖7(b)所示。在不同的網(wǎng)絡(luò)規(guī)模下,EB-RPL的網(wǎng)絡(luò)生存時間均顯著優(yōu)于RPL,比RPL平均延長網(wǎng)絡(luò)生存時間達37.4%。
發(fā)包間隔變小和網(wǎng)絡(luò)規(guī)模增大對網(wǎng)絡(luò)的影響是類似的,網(wǎng)絡(luò)中數(shù)據(jù)流量都會隨之增大,導致網(wǎng)絡(luò)生存時間變短。在RPL中,只要網(wǎng)絡(luò)狀態(tài)穩(wěn)定,節(jié)點到root的最優(yōu)路徑始終是不變的,這會導致瓶頸節(jié)點提前死亡,特別是在網(wǎng)絡(luò)流量大的情況下,這一問題更加凸顯。而在EB-RPL中,隨著節(jié)點剩余能量的減少,會自適應地調(diào)整網(wǎng)絡(luò)拓撲,提升網(wǎng)絡(luò)生存時間。
網(wǎng)絡(luò)中的能量均衡也是比較路由協(xié)議性能的重要指標之一,但這并非指全網(wǎng)中所有節(jié)點間的能量均衡,因為只有同級節(jié)點間才有進行能耗比較的意義。
本文中采用Rank值為1的節(jié)點功率的標準差作為評判能量均衡的指標。在圖4的仿真場景中,根節(jié)點的一跳鄰居分別是節(jié)點2、3、4,為了證明EB-RPL能實現(xiàn)節(jié)點間能量均衡,本文比較了在不同發(fā)包間隔時,這三個節(jié)點功率的分布情況。由圖8可知,當發(fā)包間隔變大時,網(wǎng)絡(luò)總流量變小,節(jié)點的功耗隨之降低,同時在不同的發(fā)包間隔下,EX-RPL中節(jié)點功率的標準差都顯著低于RPL。這是因為EX-RPL中的自適應拓撲調(diào)整策略,在網(wǎng)絡(luò)的不同時期,節(jié)點會調(diào)整最佳路徑,從而避免了網(wǎng)絡(luò)中瓶頸節(jié)點的產(chǎn)生。
圖8 不同發(fā)包間隔時Rank值為1的節(jié)點功率分布情況
上述實驗表明EB-RPL能均衡網(wǎng)絡(luò)能量,延長網(wǎng)絡(luò)生存時間,本文進一步對網(wǎng)絡(luò)的可靠性進行驗證。固定發(fā)包間隔為5 s,在仿真區(qū)域內(nèi)均勻部署10~60個節(jié)點,比較在不同網(wǎng)絡(luò)規(guī)模中采用兩種協(xié)議的網(wǎng)絡(luò)收包率。
根據(jù)圖9的仿真結(jié)果,當網(wǎng)絡(luò)規(guī)模增大時,網(wǎng)絡(luò)中包的數(shù)量和碰撞概率也隨之升高,導致網(wǎng)絡(luò)擁塞,造成更多的數(shù)據(jù)包丟失。采用RPL時,節(jié)點始終選擇鏈路質(zhì)量最好的父節(jié)點為最佳父節(jié)點,導致這些節(jié)點產(chǎn)生嚴重的網(wǎng)絡(luò)擁塞現(xiàn)象,造成丟包。改進后的EB-RPL在網(wǎng)絡(luò)后期會重新調(diào)整拓撲,減小了出現(xiàn)嚴重擁塞現(xiàn)象的概率。因此,在不同網(wǎng)絡(luò)規(guī)模下,采用EB-RPL的網(wǎng)絡(luò)收包率均高于RPL,且隨著網(wǎng)絡(luò)規(guī)模增大,這種優(yōu)勢會逐漸增大,當節(jié)點數(shù)量為60時,收包率較RPL提升了20%。
圖9 不同網(wǎng)絡(luò)規(guī)模下網(wǎng)絡(luò)的收包率比較
針對RPL中存在瓶頸節(jié)點能耗突出、網(wǎng)絡(luò)生存時間短的問題,本文提出了一種兼顧鏈路可靠性和網(wǎng)絡(luò)生存時間的EB-RPL。該協(xié)議在RPL基礎(chǔ)上進行優(yōu)化,提出了一種復合期望傳輸次數(shù)和節(jié)點剩余能量的路由度量EB-ETX;并在此基礎(chǔ)上設(shè)計了一種基于能量消耗速率的父節(jié)點電量估算策略,以解決RPL中“Trickle”定時器機制導致的父節(jié)點狀態(tài)信息更新不及時的問題。EB-RPL利用父節(jié)點估算電量可以及時更新路由開銷,自適應地調(diào)整網(wǎng)絡(luò)拓撲,實現(xiàn)了節(jié)點間的能量均衡,并有效延長了網(wǎng)絡(luò)生存時間。通過仿真分析表明,父節(jié)點電量估算策略具有較高的準確性;同時與RPL相比,EB-RPL能有效實現(xiàn)能量均衡、顯著延長網(wǎng)絡(luò)生存時間,其中最高延長了65%的網(wǎng)絡(luò)生存時間。
參考文獻(References)
[1] GARA F, SAAD L B, AVED R B, et al. RPL protocol adapted for healthcare and medical applications [C]// Proceedings of the 2015 International Wireless Communications and Mobile Computing Conference. Piscataway, NJ: IEEE, 2015: 690-695.
[2] XU G B, SHEN W M, WANG X B. Applications of wireless sensor networks in marine environment monitoring: a survey [J]. Sensors, 2014, 14(9): 16932-16954.
[3] WANG H Y, WANG J Y, HUANG M. Building a smart home system with WSN and service robot [C]// Proceedings of the 2013 Fifth International Conference on Measuring Technology and Mechatronics Automation. Piscataway, NJ: IEEE, 2013: 353-356.
[4] ANCILLOTTI E, BRUNO R, CONTI M. The role of the RPL routing protocol for smart grid communications [J]. IEEE Communications Magazine, 2013, 51(1): 75-83.
[5] WINTER T, THUBERT P, BRANDT A, et al. RPL: IPv6 routing protocol for low-power and lossy networks: RFC6550 [S]. Geneva: IETF, 2012: 1-157.
[6] LEVIS P, PATEL N, CULLER D, et al. Trickle: a self-regulating algorithm for code propagation and maintenance in wireless sensor networks [C]// Proceedings of the First Conference on Symposium on Networked Systems Design and Implementation. New York: ACM, 2004: 2-13.
[7] THUBERT P. Objective function zero for the routing protocol for low-power and lossy networks: RFC 6552 [S]. Geneva: IETF, 2012: 1-14.
[8] GNAWALI O, LEVIS P. The minimum rank with hysteresis objective function: RFC 6719[S]. Geneva: IETF, 2012: 1-14.
[9] COUTO D, AGUAYO D, BICKET J, et al. A high-throughput path metric for multi-hop wireless routing [J]. Wireless Networks, 2005, 11(4): 419-434.
[10] LONG N T, DECARO N, COLITTI W, et al. Comparative performance study of RPL in wireless sensor networks [C]// Proceedings of the 2012 IEEE 19th Symposium on Communications and Vehicular Technology in the Benelux. Piscataway, NJ: IEEE, 2012: 741-746.
[11] VUCINIC M, TOURANCHEAU B, DUDA A. Performance comparison of the RPL and LOADng routing protocols in a home automation scenario [C]// Proceedings of 2013 IEEE Wireless Communications and Networking Conference. Piscataway, NJ: IEEE, 2013: 1974-1979.
[12] GONIZZI P, MONICA R, FERRARI G. Design and evaluation of a delay-efficient RPL routing metric [C]// Proceedings of the 2013 9th International Wireless Communications and Mobile Computing Conference. Piscataway, NJ: IEEE, 2013: 1573-1577.
[13] TANG W, MA X, HUANG J, et al. Toward improved RPL: a congestion avoidance multipath routing protocol with time factor for wireless sensor networks [J]. Journal of Sensors, 2016, 10(2): 189-201.
[14] IOVA O, THEOLEVRE F, NNOEL T. Improving the network lifetime with energy-balancing routing: application to RPL [C]// Proceedings of the IEEE 7th Wireless and Mobile Networking Conference. Piscataway, NJ: IEEE, 2014: 121-128.
[15] 仇英輝, 陳玲.基于普通節(jié)點負載均衡的RPL路由協(xié)議[J]. 傳感技術(shù)學報, 2016, 29(7): 1077-1082.(QIU Y H, CHEN L. The RPL routing protocal based on load balance of ordinary node [J]. Chinese Journal of Sensors and Actuators, 2016, 29(7): 1077-1082.)
[16] 姚玉坤, 劉江兵, 李小勇.基于簇父集協(xié)作通信的低功耗有損網(wǎng)絡(luò)路由算法優(yōu)化[J]. 計算機應用, 2017, 37(5): 1300-1305.(YAO Y K, LIU J B, LI X Y. Optimized routing algorithm based on cooperative communication of cluster parent set for low power and lossy network [J]. Journal of Computer Applications, 2017, 37(5): 1300-1305.)
[17] 齊玥.基于RPL協(xié)議的路由度量標準研究與改進[D]. 蘭州: 蘭州大學, 2016: 15-36.(QI Y. Research and improvement of routing metric based on RPL [D]. Lanzhou: Lanzhou University, 2016: 15-36.)
[18] VASSEUR J, KIM M, PISTER K, et al. Routing metrics used for path calculation in low-power and lossy networks: RFC 6551 [S]. Geneva: IETF, 2012: 1-30.
[19] BUETTNER M, YEE G V, ANDERSON E, et al. X-MAC: a short preamble MAC protocol for duty-cycled wireless sensor networks [C]// Proceedings of the 4th International Conference on Embedded Networked Sensor Systems. New York: ACM, 2006: 307-320.
[20] DUNKELS A, GRONVALL B, VOIGT T. Contiki — a lightweight and flexible operating system for tiny networked sensors [C]// Proceedings of 29th Annual IEEE International Conference on Local Computer Networks. Piscataway, NJ: IEEE, 2004: 455-462.
This work is partially supported by the National Key R&D Program of China (2016YFC0801505).