文獻標識碼: A
文章編號: 0258-7998(2012)07-0140-04
ZigBee網絡協議在PHY層和MAC層采用802.15.4協議標準,在EWK(網絡)層和APL(應用)層則采用由ZigBee聯盟定義的ZigBee協議標準,具有低功耗、低速率、高穩健、可靠、靈活的特點[1]。隨著ZigBee協議的不斷升級,基于ZigBee技術的無線傳感網絡(簡稱ZigBee網絡)將在家庭網絡、工業控制、工業無線定位、汽車自動化、樓宇自動化和醫療設備等多個領域實現更廣泛的應用[2-3]。本文研究的重點是將ZigBee網絡與其他網絡進行鏈接,提出一種有效降低節點能耗、增加網絡安全、延長網絡生存時間的高效路由算法。結合AODVJr(按需路由協議的簡化版)和樹路由算法,并將SRP(安全遠程密碼協議)算法[4]加以考慮,提出一種具有降低網絡開銷、提高網絡安全的路由安全協議。
1 節能算法的提出
ZigBee網絡中,若路由節點的電池能量消耗較大,會導致網絡分割時刻提前,使網絡的吞吐量、傳輸時延等性能指標急劇惡化。適當地降低網絡路由節點的能量開銷對于網絡具有更大的優化效果。
AODVJr算法繼承了AODV(按需路由協議)算法的特性,同時在AODV算法基礎上取消了Hello包的發送,并規定只有目的節點對RREQ(路由請求)包進行應答,中間節點不會產生RREP(路由響應)。通過采用這種端到端的通信方式,可以大大降低網絡的開銷。雖然AODVJr算法在尋找路徑的過程中有較大的優勢,然而該算法在路由發現過程中仍然會產生一些多余的RREQ分組,該分組雖然也參與了路由發現過程,然而卻對最終結果卻不起任何作用,如果在路由發現過程中去除掉這些RREQ包,將會有效地降低節點的開銷,增加網絡的生存時間。
問題的提出:
(1)按照圖1所示的樹路由傳輸規律,節點3發送數據給節點17要經過3跳,如果在RREQ分組跳數大于4的情況下仍然繼續泛洪,則對最終找到路徑沒有任何作用;
(2)當節點12需要發送數據到節點7時,若節點12沒有到節點7的路由表項,則節點12向其所有的鄰居節點發送RREQ分組進行路由發現過程。由于節點7并不是節點12的后裔節點,所以節點12向其后裔節點發送RREQ分組對于需找到節點7的最優路徑絲毫不起任何作用;
(3)若節點12發送數據到其后裔節點19,從而節點12發送RREQ分組到其父節點3來尋找最優路徑所起的作用也不大。
(4)由于AODVJr協議過于簡化,沒有考慮路由的安全性,使得路徑信息可能被更改,數據在傳輸過程中也極有可能被丟棄或者篡改,不利于安全機制的運行。
針對這些問題,本文將TR算法和AODVJr算法相結合,并適當限制路由過程中RREQ分組的泛洪,規定在改進算法中RREQ的最大傳輸范圍為網絡最大深度L的2倍,這樣當RREQ的傳輸范圍超過2L時,節點便丟棄接收到的RREQ分組。
2 降低能耗的安全算法設計
在上述提出降低能耗的基礎上,結合SRP安全算法,使得改進的算法既起到降低能耗又能保障路徑傳輸數據的安全。由于SRP與AODVJr在路由機制上略有差異,本文在此對SRP算法也進行了一些適用于AODVJr的改進:
(1)考慮到AODVJr協議禁止中間節點對路由請求作出響應,本文也將SRP算法限制中間節點對路由請求作出響應。
(2)根據AODVJr協議中的“最快即最好”原則,本文同樣對SRP進行一些設定,即目的節點只響應最先收到的RREQ,對之后接收到的全部丟掉。
(3)考慮到AODVJr協議中的RREP(路由響應)報文只能以單播的方式傳送回源節點,因此在SRP算法中,目的節點發出的RREP包只能以逆著接收到RREQ報文來的路徑傳回到源節點。
在SRP和AODVJr協議基礎上,對RREQ分組中增加flag標志位和隨機問詢標志QID,flag=0表示當前節點的父節點不應該轉發RREQ分組,flag=1表示當前節點的后裔節點不宜轉發RREQ分組。為避免中間節點將同一問詢轉發多次或者目的節點對同一問詢作出多次響應,應使源節點在同一次發出的問詢獲得相同的標志。結合樹路由算法、AODVJr協議和SRP協議的改進路由算法步驟如下:
(1)如果ZigBee網絡中的RFD(終端)節點要發送數據到該網絡中的其他節點,則RFD首先將數據發送給其具有路由功能的父節點,再由其父節點進行轉發。
(2)如果具有路由功能的FFD節點要發送數據到網絡中的其他節點,則RFD首先查看目的節點是否在鄰居列表中,如果沒有則啟動路由發現請求;否則,直接進行數據轉發。
(3)將源節點IP地址、目的節點IP地址、問詢標示QID地址、flag標志位、SRP消息識別碼MAC和初始值為0的跳數值hops加入到RREQ包中。其中QID是在源節點發起RREQ時激發產生的一個32 bit隨機問詢標志,在路由發現階段,中間節點通過該標志來識別路由請求,如果轉發成功,則跳數值hops加1。而MAC碼是由目的節點地址,源節點地址和共享的鑰匙KS、D作為單向散列函數的輸入,通過計算其輸出[6],可以獲得相應的MAC碼。
(4)當源節點需要與另一節點進行通信而又沒有通往該節點的路徑信息時,源節點便向鄰居節點廣播一個路由請求消息RREQ發起一個路徑尋找過程[5]。
(5)假如節點M作為中間轉發節點收到節點N發送來的RREQ包時,首先查看分組RREQ分組里的跳數值和對隨機問詢標志QID提取,如果跳數hops>2L或者是當QID與節點問詢表的某個入口相符合時,則丟棄該RREQ包。
(6)否則若QID與節點問詢表的某個入口不相符合且hops<2L時,節點M繼續提取出源節點和目的節點地址,與QID一起在問詢表中創建一個入口,且同時查看RREQ包里的flag值:如果flag=0,則說明N的父節點不適合轉發此RREQ包;如果flag=1,說明N的子節點不適合轉發RREQ。
(7) 路徑上的每個中間節點都會重復步驟(5)~(6),同時檢測從鄰節點接收到問詢的頻率次數。檢測到的頻率次數大于預先設定的一個頻率次數值時,可以將該鄰居節點看成一個壞節點而丟棄,這樣壞節點就達不到消耗網絡資源、消耗網絡性能的目的了。
(8) 當目的節點接收到RREQ包時,利用改進的SRP算法來驗證該RREQ是否有效,如果有效則目的節點開始構造響應的路由響應RREP,并將該響應RREP逆著RREQ來的路徑傳輸回源節點。
(9) 當接收到來自目的節點的路由響應時,源節點先檢查RREP中源節點地址、目的地址和問詢標志QID,如果與當前最迫切的問詢不一致,則將RREP丟棄;若一致,則源節點利用參考文獻[6]計算消息識別碼MAC。若結果與RREP中的MAC碼相符合,則源節點就會認為路由請求確實完好無損地到達了目的節點,并且目的節點的響應能夠沿著該路徑被源節點S成功,從而證實了該連接信息的有效性。具體的實現過程如圖2、圖3、圖4所示。
3 改進算法的仿真及圖形分析
網絡仿真軟件采用NS-2對改進后的ZigBee算法進行模擬實驗。模擬的區域是1 000 m×1 000 m,節點的總數為100個,隨機分布在這個區域內,每個節點的初始能量均為1 000 J,數據包長度為128 bit,信道傳輸數據的傳輸率為250 kb/s。將改進安全算法與傳統AODVJr算法的仿真結果進行比較,如圖5和圖6所示。
圖5中,曲線1表示傳統的AODVjr路由算法運行時網絡消耗的總能量,曲線2表示改進算法運行時網絡消耗的總體能量。由于改進算法引入了鄰居列表,在路由傳輸的過程中綜合考慮了路由跳數并限制了路由泛洪,在網絡運行到6 s時大約節省17.0%的網絡總能量。
圖6中,曲線3表示傳統網絡在受到惡意節點攻擊時,數據包的丟失率隨惡意節點的增多而變化的曲線。曲線4表示由于考慮了網絡的路由安全,將SRP算法與AODVJr算法相結合,提高了網絡的安全性,即使存在惡意節點的攻擊時,數據包的丟失率相對曲線3和會減少很多。而在初始時刻,不存在惡意節點時,曲線3曲線4幾乎相聚于零點,因而可以得出在無攻擊的惡意節點時,兩種算法的丟包率接近,且都非常小。
針對傳統的ZigBee路由算法,本文提出一種在傳統的ZigBee路由算法的基礎上,引入鄰居表,在數據傳輸過程中,考慮了跳數hops,并與SRP算法相結合,通過實驗驗證了該算法降低了網絡總能耗,提高了網絡安全。但是該算法僅僅考慮了局部的路由跳數而沒有考慮整體的路由跳數的最優化,同時只采用了傳統的SRP算法,面對惡意節點的攻擊時還不能很好地保護傳輸數據。今后的工作中,可以在這兩方面做進一步的研究。
參考文獻
[1] ZigBee Alliance. ZigBee Specification(version 1.1)[S].2006.
[2] 謝川. 基于ZigBee的AODVjr算法研究[J].計算機工程. 2011,37(10):87-89.
[3] 鐘永鋒,劉永俊. ZigBee無線傳感網絡[M].北京:北京郵電大學出版社,2011:93-95.
[4] MARSHALL J. An analysis of SRP for mobile Ad Hoc networks[C].Proceeding of the 2002 Internation Multi Conference in Computer Science. Las Vegas,USA.2002.
[5] 戴逸民, 王培康, 陳巍. 通信網的安全理論與技術[M].北京:清華大學出版社,2006:126-246.
[6] 鄭東,李祥學,黃征.密碼學—密碼算法與協議[M].北京:電子工業出版社,2009:84-90.