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