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