姚玉坤,滿 巧,朱克蘭
(重慶郵電大學 通信與信息工程學院,重慶 400065)
(重慶郵電大學 移動通信技術重慶市重點實驗室,重慶 400065)
無線傳感器網絡(WSNs)是由大量低成本、低功耗的傳感器設備組成.這些傳感器設備監測環境并獲取數據,但是傳感器節點之間的通信鏈路的丟包率較高.網絡中部署根節點來收集數據,根節點在能量、計算和存儲方面具有更高的容量.在無線傳感器網絡中,傳感器之間的通信不僅僅可以采用傳統的點對點通信,它們還可以采用點對多點和多點對點通信.針對無線傳感器網絡設計的傳統路由協議不適用于低功耗有損網絡[1].為了克服這些限制,國際互聯網工程任務組的ROLL工作組設計了低功耗有損網絡IPv6路由協議(routing protocol for Low Power and Lossy Networks,RPL)[2].自2012年以來,該協議已成為標準.
傳感器網絡主要由靜態傳感器組成,靜態RPL主要從負載均衡[3]和擁塞控制[4]方面進行研究.然而,在智能家居、智能交通、醫療監控和工業自動化等諸多新興應用領域[5],移動性支持正成為一種需求.如在醫療領域中,患者配備了身體傳感器來測量葡萄糖率、脈搏率、呼吸率等生理指標.移動傳感器收集到的數據隨后被轉發到根節點,醫生可以對其進行檢查,并迅速做出適當的決策來治療患者[6].在煉油廠,為了監測工人在危險環境中的健康狀況,配備在工人身上的移動傳感器對工人的生命體征進行連續監測.
然而由于移動傳感器在隨機移動的場景下,與靜態傳感器之間的鏈路頻繁地斷開,這會增加數據包丟失和重傳的概率,從而耗盡傳感器的電池能量并縮短網絡壽命.在這一背景下,許多研究將重點放在增強RPL路由協議以適應移動無線傳感器網絡[7].
本文提出了一種基于移動場景高效尋路的RPL路由算法優化(MSE-RPL),它是一種適用于移動場景下的RPL路由協議.MSE-RPL的主要目標是提高移動場景下移動節點通信鏈路的穩定性,從而有利于數據包快速高效的傳輸.
近年來,RPL在移動性支持方面取得了一定的進展.文獻[8]提出了一種考慮移動節點(mobile node,MN)隨機軌跡的自適應計時器算法(Overview of the modified RPL protocol,Mod-RPL),該算法根據移動節點離開父節點通信范圍的剩余時間動態調整溪流計時器的時間間隔.然而Mod-RPL從備選父節點集(candidate parent node sets,CPNs)中選擇最優父節點(preferred parent node,PPN)的目標函數僅僅只考慮了代表移動節點與其父節點之間鏈路質量的期望傳輸次數(Expected Transmission Count,ETX)和接收信號強度指示(Received Signal Strength Indication,RSSI)值,沒有考慮到節點的移動性.同時,自適應計時器算法僅適用于MN,PPN以及MN的移動方向均在同一條水平線上的特殊移動方向的移動場景.并且在面向目的地有向無循環圖(Destination Oriented Directed Acyclic Graph,DODAG)目的地通告消息(Destination Advertisement Object,DAO)的幀格式中添加了用于計算節點之間距離的4bit位置字段(Position),增加了不必要的開銷.
文獻[9]作者提出一種移動感知父節點選擇算法(Mobi- lity-Aware Parent Selection for Routing Protocol,MAP-RPL).MAP-RPL算法根據平均RSSI值和黑名單機制構建備選父節點集,然后根據跳數選擇PPN.該算法通過對比MN到根節點的跳數與相鄰節點到根節點的平均跳數來判斷MN的移動方向,從而選擇PPN,但該算法僅僅只適用于相鄰節點到根節點的跳數不同的場景,同時對于MN在入網時選擇PPN無法做出有效決策.
文獻[10]提出一種用于無線傳感器網絡的增強型移動路由協議,MN基于移出CPN通信范圍的最短時間選擇PPN,未考慮到移動方向的隨機性,且需要MN頻繁的計算最短時間,增大了MN的能耗.文獻[11]提出一種RPL移動管理框架,其目標函數考慮流量,rank值等度量值選擇PPN,同樣適用于靜態場景下PPN選擇,并沒有結合節點的隨機移動性.文獻[12]提出一種基于多度量的目標函數,綜合考慮節點剩余能量RE、節點間的距離Dist,節點間的距離變化Dist_var選擇PPN.但入網時刻的DODAG信息對象消息(DODAG Information Object,DIO)發送頻繁,發送間隔為最小值,極短時間內的節點間距離變化值無法有效選擇通信鏈路穩定的父節點.
文獻[13]提出了一種基于RSSI值、rank值和動態控制消息管理相結合的RPL增強機制(multiple,RSSI,Rank and dynamic,MRRD+).該算法根據RSSI值預測節點移動方向,還更改了溪流計時器.但是MRRD+僅僅只考慮了MN遠離或靠近PPN的兩種移動方向,不能適用于移動節點移動方向隨機的場景,也沒有考慮當MN即將移出當前PPN通信范圍后的重新入網的情況.
現有文獻在RPL移動性支持方面存在以下4個方面的問題:
1)MN發送的控制消息的種類和幀格式都存在冗余.
2)所有RSSI大于閾值的相鄰節點均加入備選父節點集,增加了MN的處理時延和能耗.
3)網絡場景不具有普適應,僅僅只適用部分特殊移動場景.
4)MN與當前PPN鏈路中斷后再發送DODAG信息請求消息(DODAG Information Solicitation,DIS)以尋路,導致丟包率較大.
為了解決現有文獻在RPL移動性支持方面存在的問題,本文提出一種基于移動場景高效尋路的RPL路由算法優化MSE-RPL,本算法精簡了MN發送的控制消息,在建立備選父節點集時引入了自適應黑名單機制,同時提出了基于移動速度和方向的目標函數.采用DIS計時器在MN和當前PPN鏈路斷開前就及時通告DIS消息尋路,降低了丟包率.最后,對MSE-RPL算法進行理論分析和仿真驗證.
MSE-RPL算法考慮移動節點MN只能作為葉子節點,不能作為中繼節點的網絡場景.移動傳感器配置為DODAG中的葉子節點.因此,不允許其發送DIO消息.位于移動節點附近的所有傳感器均不允許選擇其作為父節點.網絡的部署方式是在移動節點移動過程中附近至少有一個靜態節點(static node,SN),其網絡拓撲模型如圖1所示,移動節點隨機移動,但始終被部署在建筑物內部的靜態節點包圍.

圖1 網絡拓撲模型Fig.1 Network topology model
1)所有無線傳感器節點均部署在一個云形監測區域內,其他傳感器節點的數據包都最終匯聚到根節點,由根節點與Internet進行通信.
2)根節點位于監測區域左上方,一直處于工作狀態.根節點的能量可以無限制補充,網絡中其余無線傳感器節點的能量均不能補充,由電池提供能量.
3)中繼節點:中繼節點既能夠產生數據包,又可以轉發其他節點的數據包.中繼節點為靜態節點,故此部分的路由構建與標準RPL[2]一致.休眠時間均較短,在通信范圍內都能夠監聽到鄰居節點的工作狀態.
4)葉子節點:葉子節點包含兩種節點,靜態節點和移動節點.但移動節點只能作為葉子節點加入網絡.注意,若某節點作為葉子節點加入網絡,則此節點沒有子樹,葉子節點與節點所處位置無關.
5)網絡拓撲初始化時,所有無線傳感器節點的性能和參數保持一致,即節點的初始能量、傳輸功率、內存大小和數據處理能力等均相同.
針對LLN中現有的移動性支持路由算法存在的問題,MSE-RPL算法的改進如下:
1)修改DIS和DAO消息的幀格式,以區分移動節點和靜態節點發送的控制消息,在不增加額外控制消息的前提下,實現了與標準RPL的兼容性.
2)采用自適應黑名單機制建立備選父節點集,降低了MN的處理時延和能耗.
3)基于MN的移動速度和方向計算MN移出CPN通信范圍的預估時間,從而選出最優PPN.
4)設定DIS計時器,以便于MN在和當前父節點斷開鏈路前及時切換到新的PPN,降低了丟包率.
在MN作為中繼節點的網絡場景下,當MN移出當前PPN的通信范圍而斷開鏈路時,MN的子樹也會重新選擇PPN,這樣不但會增大子樹節點重新入網而頻繁發送控制消息帶來的開銷,還會增大子樹節點的能耗,同時也會導致網絡拓撲的不穩定.并且MN作為中繼節點在移動過程中斷開鏈路后,rank值變為無窮大,此時有可能在移動過程中選擇其子樹作為下一跳父節點,產生路由環路.故本算法MN只能為葉子節點加入DODAG,故MN不發送DIO和DODAG目的地通告消息確認消息(Destination Advertise ment Object Acknowledgement,DAO-ACK),因此圖2只修改DIS和DAO消息的幀格式,不再修改另外兩種控制消息.

圖2 修改后的DIS(a)和DAO(b)幀格式Fig.2 Modified DIS(a) and DAO(b) frame format
本算法中的DIS控制消息主要用于以下兩種情況:1)MN初次入網:在靜態節點拓撲構建完成后,當移動的MN需要加入DODAG時,廣播DIS控制消息,RSSI>閾值的相鄰節點接收到該DIS消息后,便向其回復DIO消息,在MN選出PPN后便加入到DODAG中;2)路由故障修復:當MN移出先前PPN的通信范圍后,網絡中出現鏈路故障,MN通過廣播DIS消息重新申請加入到DODAG中.
本算法在存儲模式下的DAO控制消息主要用于構建下行路由,MN從CPNs中選出PPN后,將攜帶自身地址前綴的DAO控制消息單播到選擇的PPN,用于請求ACK消息,一旦MN接收到PPN發送的ACK消息后,MN入網完成,開啟數據傳輸階段.
為了區分移動節點和靜態節點發送的控制消息,保證MSE-RPL算法的向后兼容性以及避免發送額外控制消息帶來的開銷,修改了DIS消息和DAO消息的幀格式.
如圖2所示,取DIS和DAO幀格式中的標志字段(Flags)的第一比特設置為F字段,該字段用于區分靜態節點和移動節點.如果F=0,則表明此消息是由靜態節點發出的.否則,表明此消息是從移動節點發出的.
本算法精簡了移動節點的控制消息,只允許MN發送DIS和DAO消息,同時以最小比特修改DIS和DAO的幀格式,使所有的RPL中除了根節點之外的靜態節點和移動節點均能夠通告和接收DIS和DAO消息,而不需要添加額外的支持節點移動的控制消息.
本算法采用自適應黑名單機制,MN自適應維護黑名單列表,無需將RSSI>閾值的每個相鄰節點均加入備選父節點集.假定通過對路由器節點發送的多普勒頻率應用邊帶濾波,偏移載波解調,同相/正交解調等方法來測量移動方向,從而獲知MN移動方向與CPN的夾角θ.如圖3所示,若θ>90°,則移動節點正在遠離此相鄰節點,MN在此節點的通信范圍內的時間會很短,故此時無論MN與此節點距離如何,均將此節點的ID號記錄在黑名單列表.

圖3 移出通信范圍的剩余距離計算Fig.3 Calculation of remaining distance out of communication range
最初,在MN的CPNs中沒有備選父節點,因此也沒有PPN,故MN向網絡廣播DIS消息申請加入到DODAG中.在相鄰節點接收到DIS消息之后,如果RSSI值大于閾值,則將攜帶有多普勒頻率和RSSI值的DIO消息發送到移動節點.這是由于RSSI值大于閾值的相鄰節點,即在MN的實際通信范圍內,其與MN的當前鏈路質量才可靠.RSSI值指示節點和相鄰節點之間鏈路的信號強度,通過讀取無線電CC2420芯片上內置的RSSI寄存器來測量RSSI值.MN收到DIO消息后,將θ>90°的相鄰節點加入到黑名單列表中,將θ≤90°的相鄰節點添加到備選父節點列表中.
以圖3為例,MN的RSSI>閾值的相鄰節點有節點1,2,3,4.移動節點將θ>90°的節點3和節點4的ID記錄在黑名單列表,而只考慮節點1和節點2作為備選父節點,即使節點4距離MN比節點2更近.這樣是為了避免MN將RSSI>閾值的每一個相鄰節點均加入備選父節點集,降低了MN的處理時延和能耗.
隨著MN持續移動,此黑名單列表需要持續更新.當MN即將移出當前PPN時,MN開啟發現階段,此時MN基于新的移動位置和變化的相鄰節點需要自適應的更新黑名單列表.
自適應黑名單機制只能根據θ大致判斷移動節點與相鄰節點的相對方向,無法為MN準確的選擇最優PPN.例如圖3中節點1與節點2的θ相等,此時需要進一步的判斷.在4.3節基于移動速度和移動方向計算出移動節點移出各個CPN的通信范圍的預估時間(estimated time,ET)來選擇PPN.
MN從CPNs中選擇PPN時,需要綜合考慮MN的移動方向,移動速度等因素.因此,提出的目標函數綜合考慮了各個度量值,計算出移動節點移出各個CPN的通信范圍的預估時間.由于MN移動速度和方向的隨機性,ET并非精確時間,而是依據MN當前移動速度和方向預估的移出CPN通信范圍的估算時間.ET的計算如下.
4.3.1 計算MN的移動速度
假設移動節點的移動速度是Vm,移動節點和父節點之間的角度是θ,電磁波的速度是c,fd是多普勒頻率,接收到的頻率是fr,路由器節點發送的頻率為ft.
故移動節點的速度,如公式(1)所示:
(1)
4.3.2 計算MN移出CPN通信范圍的剩余距離
如圖3所示,當MN接近或遠離父節點時,MN必須移動一段距離de.為了獲得距離de,需要df的值,df是移動節點和父節點之間的距離,根據接收信號強度指標RSSI值估計df.根據RSSI值隨節點間距離的變化規律來估計該距離,通過從相鄰路由器節點發送一個固定強度的信號,利用移動節點接收到的衰減信號的強度來估計.
兩個節點之間的距離是根據接收信號強度指示RSSI值確定的.然而無線電傳播路徑損耗如房屋障礙、多徑傳播、波的衍射等給RSSI值的測量帶來比較大的影響,從而影響了距離計算的精度.為了解決RSSI在傳播過程中產生的測量誤差,采用高斯濾波法優化RSSI值[14,15].即對多次測量的RSSI值進行濾波優化,篩選出最優的RSSI值,進而提高測距的精度,有效改善了測距的抗干擾性和穩定性.在接收的RSSI數據中,某些數值必然是小概率事件,而大部分的數值還是在合理區間內波動.公式(2)采用高斯濾波法篩選出這些大概率數值.
(2)

(3)
再采用對數正態傳輸模型利用濾波后的RSSI估算值計算距離d.信號的強度與距離成反比,RSSI值在低功耗設備中計算距離如公式(4)所示:

(4)
其中A為1m處接收信號強度,n為路徑損耗指數因子,d為節點間距離.故MN與PPN的距離,如公式(5)所示:
(5)
由于線段df,r和角度θ是已知的,因此MN移出CPN通信范圍的剩余距離de,可以通過應用余弦的第二定律獲得,其中r是CPN的通信半徑.
剩余距離de的計算如公式(6)所示:
(6)
4.3.3 預估時間的計算與使用
利用多普勒頻率來測量移動節點的移動速度,通過信號強度來測量移動節點與備選父節點之間的距離.
公式(7)根據MN移出CPN通信范圍的剩余距離de與移動節點的移動速度Vm之比來計算MN移出CPN通信范圍的預估時間ET.
(7)
當接收到來自相鄰節點的DIO消息后,MN提取DIO消息中包含的多普勒頻率和信號強度RSSI值,然后計算移動節點MN移出某個CPN通信范圍所需時間ET,最后從CPN中選擇這個ET值最大的節點作為PPN.
在網絡拓撲維護階段,移動節點MN在選擇了PPN之后繼續移動,此時為了預測移動節點與當前PPN的鏈路斷開時間,以便于MN在和當前PPN斷開鏈路前及時切換到新的PPN,啟用了DIS計時器.
最初,移動節點還沒有入網時,它必須快速選擇父節點以加入到DODAG.此時設置DIS計時器間隔為Imin,最小化DIS間隔以快速加入網絡拓撲.
在入網完成后,當MN收到選擇的PPN 發送的DAO-ACK消息,此時重置DIS消息的發送間隔為Imax,Imax本應該為MN移出PPN通信范圍所需的時間ET.但由于移動節點的速度和方向的隨機性,ET可能會出現時間差,一旦MN比預估時間更早的移出PPN的通信范圍,由于無法及時切換到新的PPN,會導致丟包率較高的問題.為了克服這個問題,本算法將最大間隔Imax設置為[ET/2,ET]范圍內的隨機數.節點繼續移動,當計時器到期,由于移動速度和方向的隨機性,MN極有可能沒有按照預估時間移出PPN通信范圍.故MN重新基于新的速度和方向計算ET,從而計算最大間隔Imax.若此間隔Imax大于閾值,則等待計時器到期后再重新計算新的Imax.直到Imax小于閾值,此時 MN即將移出PPN的通信范圍,MN立即廣播DIS消息以尋路.在收到相鄰節點發送新的DIO消息之前,DIS計時器最小化為Imin.
本算法的DIS計時器優點如下:1)Imax設置為[ET/2,ET]范圍內的隨機數,考慮了預估時間與實際移出通信范圍時間的時間差,在MN即將移出卻還沒有斷開鏈路時就開始尋找新的父節點,當尋找到了新的父節點再從當前PPN切換到新PPN,而不是鏈路斷開后MN再開始尋路,有效地降低了丟包率;2)在Imax設置到期后,以最小間隔Imin發送DIS消息,有助于快速尋找新PPN.
MN的移動軌跡示例如圖4所示.

圖4 MN的移動軌跡示例Fig.4 Example of MN′s movement trajectory
步驟1.在T1時刻,MN沒有PPN.它的備選父節點列表也為空.MN開啟發現階段,于是MN以Imin為間隔廣播DIS消息.
步驟2.在T2時刻,MN選擇PPN.MN監聽到了來自RSSI值大于閾值的相鄰節點4、節點5的DIO消息,由于θ≤90°,將相鄰節點4、節點5均加入到CPNs中.然后MN從DIO消息中提取多普勒頻率和RSSI值并計算移出各個CPN通信范圍的預估時間ET.MN選擇ET值最大的CPN(節點5)為PPN.MN單播回復 DAO消息給PPN.在從MN接收到DAO消息之后.PPN向MN發送一個DAO-ACK確認消息.于是MN在收到DAO-ACK后重置DIS計時器間隔為Imax,開啟數據傳輸階段.
步驟3.在T3時刻,MN更新PPN.DIS計時器到期,MN即將移出節點5的通信范圍.MN仍使用當前PPN傳輸數據包,同時MN以Imin為間隔廣播DIS消息以重新入網.此時MN收到RSSI>閾值的相鄰節點1、2、6、sink發送的DIO消息.由于MN的移動方向與節點1、6的角度θ>90°.則MN把節點1、6加入到黑名單列表中.而把節點2、sink加入備選父節點列表.然后MN根據計算節點2、sink的ET,選擇ET最大的sink作為PPN.然后斷開與節點5的鏈路,切換到sink并重置DIS計時器為Imax,進入數據傳輸階段.
步驟4.在T4時刻,隨著MN持續移動,DIS計時器到期,MN開啟發現階段以重新尋路.在MN持續移動過程中,按照本算法不斷交替進行數據傳輸階段和發現階段,直至移出所有節點的通信范圍.
本算法使用OPNET14.5軟件進行網絡模型的搭建和仿真,改變網絡拓撲的節點密度,從平均端到端時延、移動節點能耗、丟包率方面,將本算法與標準RPL,Mod-RPL,MAP -RPL進行對比和分析[16].
在仿真中,考慮了一個面積為120×120m2的模擬仿真區域,仿真參數設置如表1所示.假定移動節點在區域內自由移動,與之相連的靜態節點每隔3s(20p/m)向根節點發送一次數據.考慮了移動節點速度在0.6-2.1m/s,這也是人類正常行走速度.研究節點速度的變化對平均端到端時延、移動節點能耗、丟包率的影響.與此同時,網絡拓撲中部署了1個根節點(SINK),6個移動節點(MN),為了研究改變節點密度對于移動場景下RPL路由算法性能的影響,分別部署24和35個靜態節點(SN),即固定節點(SINK+SN)總數為25和36,固定節點呈網格拓撲分布.其中每次仿真重復10次,最終取平均值作為仿真結果.

表1 仿真參數設置Table 1 Simulation parameter settings
6.2.1 平均端到端時延
平均端到端時延(Avg_E2E_Delay)是數據包成功地從源節點到達目的節點所花費的平均時間.可以使用公式(8)進行計算,其中ATi是數據包到達時間,STi是數據包發送時間,n是數據包總數.
(8)
6.2.2 移動節點能耗
能耗對移動節點的壽命有著重要的影響.基于功耗計算移動節點的能耗,功耗是節點運行所需的功率,它主要涉及發送狀態、接收狀態、處理狀態(CPU)和空閑狀態(LPM)等4種狀態.其中PCPU、PLPM、PRX、PTX分別為節點在有源、低功耗、發射、接收階段的功耗.TCPU、TLPM、TRX、TTX分別4種狀態下花費的時間.故EMN為移動節點在仿真時間內的總能耗.
EMN=TCPU×PCPU+TLPM×PLPM+
TRX×PRX+TTX×PTX
(9)
6.2.3 丟包率
丟包率(Packet Loss Rate, PLR)為仿真中所丟失數據包數量占源節點發送數據包數量的比率.如公式(10)所示,其中XR為源節點發送的數據包個數,XT為目的節點成功接收的數據包個數.
(10)
6.3.1 平均端到端時延
圖5顯示了在24個和35個靜態節點(SN)組成的網絡拓撲中移動節點速度的變化對平均端到端時延的影響.

圖5 平均端到端時延對比Fig.5 Comparison of average end-to-end delay
結果表明,隨著移動節點速度的增加,平均端到端時延明顯上升.這是由于隨著移動速度的增加,MN極易移出當前PPN的通信范圍,從而增加了MN鏈路斷開后進行計算和做出決策的處理時延以及丟包后的重傳時延.故平均端到端時延隨著MN速度增加而上升.
在24個和35個靜態節點組成的網絡拓撲中MSE-RPL算法的平均端到端時延分別為372.3ms和324.8ms,與MAP-RPL算法相比,MSE-RPL的平均端到端時延分別下降了8.7%和10.8%,相比于Mod-RPL算法分別下降了9.4%和11.4%.MSE-RPL的平均端到端時延得以明顯改善.這是因為標準RPL、Mod-RPL、MAP-RPL的目標函數度量均過于單一,未考慮到MN的移動速度和方向的隨機性,僅適用于特殊移動場景.如當移動速度為0.6~1.2m/s,MAP-RPL的平均端到端時延分別為374.3ms和329ms,低于Mod-RPL.然而當1.5~2.1m/s,MAP-RPL的平均端到端時延相比于Mod-RPL分別上升了2.3%和2.5%.這是由于MAP-RPL基于跳數選擇PPN,平均端到端時延受跳數影響較大,該算法不具有普適性.而MSE-RPL算法MN基于移動速度和方向計算移出PPN通信范圍的預估時間,選擇通信鏈路連接時間最長的PPN作為下一跳,有效維護了網絡拓撲的穩定性,減少了鏈路斷開后做出決策的處理時延和丟包后的重傳時延.且利用DIS計時器使MN在鏈路斷開前及時尋路,降低了切換時延.故MSE-RPL的平均端到端時延得以明顯改善.
同時相比于24個靜態節點的網絡場景,35個靜態節點構成的網絡拓撲下的4種算法的平均端到端時延均有明顯改善,MSE-RPL算法的平均端到端時延由372.3ms下降到324.8ms,性能提升了12.8%.標準RPL,Mod-RPL,MAP-RPL算法的性能分別提升了10.7%、10.8%以及11.3%.這是由于在相同的場景面積下,35個靜態節點的網絡場景的節點密度更大,移動節點在發現階段尋路的過程中,其通信范圍內的相鄰節點數目更大,從而構建更優的CPNs,有利于移動節點選擇更優的PPN,有效的維護了網絡拓撲的穩定性,減少了移動節點的入網時延和切換時延.
6.3.2 移動節點能耗
圖6顯示了在24個和35個靜態節點(SN)組成的網絡拓撲中移動節點速度的變化對移動節點累計能耗的影響.

圖6 移動節點能耗對比Fig.6 Comparison of energy consumption of mobile nodes
從仿真結果可以得知,隨著移動速度的增加,能耗呈上升趨勢.這是由于隨著移動速度的增加,MN移出當前PPN通信范圍的預估時間越短,MN需要發送更多的控制消息以重新入網,且MN需要重新計算預估時間ET以選擇PPN,故MN的能耗隨著移動速度的增加而上升.
而如圖6所示,35個靜態節點組成的網絡拓撲中MSE-RPL、MAP-RPL、Mod-RPL、標準RPL的移動節點平均能耗分別為60.2mJ、64.6mJ、62mJ和59.4mJ.因此,MSE-RPL的平均能耗比MAP-RPL、Mod-RPL顯著降低,但比標準RPL高約1.3%.這是因為標準RPL的MN無需維護黑名單列表,且使用未修改幀格式的控制消息,能耗較小.Mod -RPL需要在數據傳輸階段頻繁檢測并計算剩余時間來調整溪流計時器以快速做出決策.MAP-RPL的MN的黑名單列表沒有更新機制,開啟新的發現階段均會有新的節點加入黑名單列表,故MN的能耗較大.而MSE-RPL只需在發現階段計算部分相鄰節點移出CPN的預估時間ET,同時精簡了MN的控制消息的幀格式.采用自適應黑名單機制,MN定期更新黑名單列表,降低了MN維護較大的黑名單而帶來的能耗.故MSE-RPL的性能明顯優于其它3種算法.
同時相比于24個靜態節點的網絡場景,35個靜態節點構成的網絡拓撲下的4種算法的移動節點能耗均有明顯改善,MSE-RPL算法的移動節點能耗由65.9mJ下降到60.2mJ,性能提升了8.6%.標準RPL,Mod-RPL,MAP-RPL算法的性能分別提升了7.1%、7.8%以及8.5%.這是由于節點密度更大的網絡場景下移動節點通信范圍內相鄰節點的數目更大,由于MSE-RPL算法的自適應黑名單機制,移動節點無需對所有相鄰節點均加入CPNs以計算目標函數值,故發現階段的能耗不會顯著增加.且有利于移動節點選擇最優的PPN,選擇通信鏈路連接時間最長的PPN作為下一跳,有效的維護了網絡拓撲的穩定性,降低了由于網絡拓撲不穩定移動節點頻繁斷開鏈路后重新尋路所產生的能耗.
6.3.3 丟包率
圖7顯示了在24個和35個靜態節點(SN)組成的網絡拓撲中移動節點速度的變化對丟包率的影響.

圖7 丟包率對比Fig.7 Comparison of Packet loss rate
從仿真結果可以得知,隨著移動速度的增加,丟包率呈上升趨勢.這是由于隨著移動速度的增加,MN移出當前PPN通信范圍的預估時間越短,網絡拓撲不穩定導致MN更頻繁的切換PPN,在切換過程中極易造成丟包,故丟包率隨著移動速度的增加而上升.
而如圖7所示,35個靜態節點組成的網絡拓撲中MSE-RPL、MAP-RPL、Mod-RPL、標準RPL中移動節點的平均丟包率分別為1.3%、2.7%、3.8%和6.5%.因此,MSE-RPL的平均丟包率得以有效改善.這是由于MAP-RPL基于跳數選擇PPN,選擇的PPN均非最優,導致當前通信鏈路不穩定而增大了丟包率,且Mod-RPL發送DIS消息給PPN斷開鏈接后再開始尋找新的父節點,容易造成丟包.而MSE-RPL基于預估時間ET選擇PPN,通信鏈路更穩定.且設定DIS計時器,以便于MN在和當前父節點斷開鏈路前及時切換到新的父節點,有效地降低了丟包率.
同時相比于24個靜態節點的網絡場景,35個靜態節點構成的網絡拓撲下的4種算法的丟包率均有明顯改善,MSE-RPL算法的丟包率由3.7%下降到1.3%,MAP-RPL和Mod-RPL算法的丟包率分別由6.4%和7.8%下降到2.7%和3.8%.這是由于在相同的場景面積下,35個靜態節點的網絡場景的節點密度更大,移動節點在發現階段尋路的過程中,其通信范圍內的相鄰節點數目更大,從而構建更好的CPNs,有利于移動節點從CPN中選擇更優的PPN,有效的維護了網絡拓撲的穩定性,有效緩解了由于通信鏈路頻繁斷開后數據包未能及時切換到新的PPN導致的數據包丟失.
本文針對現有的無線傳感器網絡中移動性RPL路由協議存在控制消息冗余,應用場景不具有普適應,丟包率較大,移動節點能耗較高等問題,提出MSE-RPL算法.本算法精簡了移動節點的控制消息,并引入了自適應黑名單機制,減少了CPNs中的節點數量,降低了MN的能耗.其次基于移動節點的移動速度和方向計算MN移出PPN的通信范圍的預估時間ET,從而選出連接時間最長的CPN作為PPN,提高了路由穩定性,從而有效降低了平均端到端時延.最后在鏈路中斷前,利用DIS計時器及時廣播DIS消息尋路,有效降低了丟包率.仿真結果表明,MSE-RPL算法在降低平均端到端時延、移動節點能耗、丟包率等方面均優于對比算法.在今后的工作中,將從節能方面改進RPL路由協議移動性算法,從而更適用于實際應用中.