徐潔 黃虎
【摘要】網(wǎng)絡(luò)層的路由協(xié)議是ZigBee協(xié)議規(guī)范的研究重點(diǎn)之一,因?yàn)榫W(wǎng)絡(luò)節(jié)點(diǎn)中節(jié)點(diǎn)的能量資源、計(jì)算能力和帶寬都非常有限,路由算法優(yōu)化與否對(duì)整個(gè)網(wǎng)絡(luò)的性能有著至關(guān)重要的作用。從控制RREQ分組以及能量均衡的角度出發(fā),對(duì)AODVjr算法提出了改進(jìn)。通過(guò)仿真實(shí)驗(yàn),將改進(jìn)的算法與原AODVjr算法進(jìn)行性能參數(shù)的比較分析,實(shí)驗(yàn)結(jié)果驗(yàn)證了改進(jìn)后的算法的有效性。
【關(guān)鍵詞】ZigBee路由算法AODVjr無(wú)線(xiàn)傳感器網(wǎng)絡(luò)
一、引言
近年來(lái),作為在低速率的無(wú)線(xiàn)傳感器網(wǎng)絡(luò)和控制網(wǎng)絡(luò)中最受矚目的技術(shù)之一,ZigBee以其低成本、低功耗、低速率、高可靠性等特性,廣泛應(yīng)用于工業(yè)、醫(yī)療、軍事、智能家居等需要低功耗、低成本,對(duì)數(shù)據(jù)傳輸速率和服務(wù)質(zhì)量要求不高的無(wú)線(xiàn)通信應(yīng)用場(chǎng)合[1]。
ZigBee網(wǎng)絡(luò)層(NWK)介于MAC層和應(yīng)用層之間,是由ZigBee聯(lián)盟制定的。ZigBee網(wǎng)絡(luò)層的主要功能就是確保ZigBee的MAC層能正常工作,并且提供適合的服務(wù)接口給應(yīng)用層。網(wǎng)絡(luò)層提供了兩個(gè)必要的功能服務(wù)實(shí)體用于向應(yīng)用層提供接口:數(shù)據(jù)服務(wù)實(shí)體和管理服務(wù)實(shí)體[1-2]。
NWK主要功能有:(1)加入和離開(kāi)網(wǎng)絡(luò);(2)幀的安全機(jī)制管理;(3)根據(jù)路由發(fā)送幀到目的地址;(4)發(fā)現(xiàn)和維護(hù)路由;(5)發(fā)現(xiàn)單跳鄰居節(jié)點(diǎn)和維護(hù)鄰居節(jié)點(diǎn)信息。
二、ZigBee網(wǎng)絡(luò)層技術(shù)簡(jiǎn)介
2.1網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)及地址分配
ZigBee網(wǎng)絡(luò)中存在三種網(wǎng)絡(luò)節(jié)點(diǎn),分別為中心協(xié)調(diào)器、路由節(jié)點(diǎn)和終端節(jié)點(diǎn)。協(xié)調(diào)器是整個(gè)ZigBee網(wǎng)絡(luò)的中心,是協(xié)調(diào)點(diǎn),負(fù)責(zé)整個(gè)網(wǎng)絡(luò)的組織、維護(hù)和管理工作,必須由FFD(全功能設(shè)備)構(gòu)成;路由節(jié)點(diǎn)負(fù)責(zé)數(shù)據(jù)的傳輸和轉(zhuǎn)發(fā)功能,必須由FFD構(gòu)成,但路由節(jié)點(diǎn)必須由協(xié)調(diào)器控制;終端節(jié)點(diǎn)負(fù)責(zé)自身數(shù)據(jù)的發(fā)送并接收其他節(jié)點(diǎn)傳過(guò)來(lái)的數(shù)據(jù),可以由FFD或RFD(精簡(jiǎn)功能設(shè)備)構(gòu)成。
ZigBee網(wǎng)絡(luò)有星型、網(wǎng)狀型和樹(shù)型三種拓?fù)浣M織形式。由于樹(shù)型網(wǎng)絡(luò)結(jié)合了星型結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)的優(yōu)點(diǎn),且具有較好的擴(kuò)展性,所以ZigBee網(wǎng)絡(luò)一般采用簇樹(shù)拓?fù)浣Y(jié)構(gòu)組織節(jié)點(diǎn)。中心協(xié)調(diào)器啟動(dòng)后就創(chuàng)建一個(gè)網(wǎng)絡(luò),設(shè)置自身網(wǎng)絡(luò)地址為0,路由節(jié)點(diǎn)和終端節(jié)點(diǎn)選擇相應(yīng)的有路由功能的父節(jié)點(diǎn)加入網(wǎng)絡(luò),形成父子關(guān)系。成功加入網(wǎng)絡(luò)后,該節(jié)點(diǎn)獲得父節(jié)點(diǎn)分配的一個(gè)唯一的網(wǎng)絡(luò)地址。
規(guī)定每個(gè)父節(jié)點(diǎn)最多可以連接Cm個(gè)子節(jié)點(diǎn),這些子節(jié)點(diǎn)中最多可以有Rm個(gè)路由節(jié)點(diǎn),網(wǎng)絡(luò)的最大深度為L(zhǎng)m,Cskip(d)是網(wǎng)絡(luò)深度為d的父節(jié)點(diǎn)為其子節(jié)點(diǎn)分配的地址之間的偏移量,它的值按公式(1)計(jì)算,分配給第k個(gè)子路由節(jié)點(diǎn)的地址Ak滿(mǎn)足式(2),分配給第n個(gè)子路由器節(jié)點(diǎn)的地址Ak滿(mǎn)足式(3)。其中,Afather代表父節(jié)點(diǎn)的地址。
2.2Cluster-tree路由算法
Cluster-tree算法根據(jù)樹(shù)結(jié)構(gòu)轉(zhuǎn)發(fā)分組,如果終端節(jié)點(diǎn)要發(fā)送數(shù)據(jù)包到網(wǎng)絡(luò)中的其他節(jié)點(diǎn),則直接將該數(shù)據(jù)包轉(zhuǎn)發(fā)給其父節(jié)點(diǎn),由父節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā)。
如果一個(gè)路由器節(jié)點(diǎn)要轉(zhuǎn)發(fā)數(shù)據(jù)包到網(wǎng)絡(luò)地址為D的目的節(jié)點(diǎn),已知該路由器節(jié)點(diǎn)的網(wǎng)絡(luò)地址和深度分別為A和d。
首先,該路由器節(jié)點(diǎn)會(huì)依據(jù)下述表達(dá)式判斷目的節(jié)點(diǎn)是否是其后裔節(jié)點(diǎn):
RREQ分組。
此外,由于網(wǎng)絡(luò)中某些節(jié)點(diǎn)傳輸數(shù)據(jù)量過(guò)大,特別是距離中心協(xié)調(diào)器越近的節(jié)點(diǎn),從而提前耗盡自身能量,容易造成網(wǎng)絡(luò)分割,影響了整個(gè)網(wǎng)絡(luò)的通信,縮短了網(wǎng)絡(luò)的壽命。
針對(duì)以上問(wèn)題,本文從控制RREQ分組以及能量均衡的角度出發(fā),提出一種改進(jìn)的算法,有效的限制AODVjr路由發(fā)現(xiàn)過(guò)程中的RREQ的廣播,延遲網(wǎng)絡(luò)分割出現(xiàn)的時(shí)間,從而提高網(wǎng)絡(luò)的性能。
3.2改進(jìn)的路由算法M_ZBR
3.2.1冗余RREQ分組的控制
改進(jìn)的路由算法M_ZBR在路由發(fā)現(xiàn)階段,利用Cluster-tree結(jié)構(gòu)及算法的特點(diǎn),根據(jù)公式(4)判斷出目的節(jié)點(diǎn)與當(dāng)前節(jié)點(diǎn)的關(guān)系,從而判斷出RREQ分組轉(zhuǎn)發(fā)最佳的大致方向。因此,M_ZBR算法在RREQ分組中增加一個(gè)標(biāo)志位flag。當(dāng)目的節(jié)點(diǎn)為當(dāng)前節(jié)點(diǎn)的后裔節(jié)點(diǎn)時(shí),flag=0,即表示當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)不宜轉(zhuǎn)發(fā)該RREQ分組;當(dāng)目的節(jié)點(diǎn)不是當(dāng)前節(jié)點(diǎn)的后裔節(jié)點(diǎn)時(shí),flag=1,即表示當(dāng)前節(jié)點(diǎn)的后裔節(jié)點(diǎn)不宜轉(zhuǎn)發(fā)該RREQ分組。
另外,從樹(shù)結(jié)構(gòu)可以看出,若在使用Cluster-tree路由算法時(shí),可能存在的最長(zhǎng)路徑應(yīng)是網(wǎng)絡(luò)最大深度的2倍。由此,M_ZBR算法通過(guò)設(shè)定最大傳輸跳數(shù)也可以減少部分冗余的RREQ分組,本算法中,當(dāng)跳數(shù)hops>2Lm時(shí),節(jié)點(diǎn)便丟棄該RREQ分組。
3.2.2節(jié)點(diǎn)能量的控制
M_ZBR算法根據(jù)ZigBee路由算法的特點(diǎn),對(duì)ZigBee網(wǎng)絡(luò)中的路由節(jié)點(diǎn)采用了能量控制機(jī)制,這對(duì)延長(zhǎng)網(wǎng)絡(luò)壽命,延遲死亡節(jié)點(diǎn)以及網(wǎng)絡(luò)分割出現(xiàn)的時(shí)間都是十分必要的。因此,M_ZBR算法定義了節(jié)點(diǎn)最小路由能量Emin,當(dāng)節(jié)點(diǎn)的能量低于Emin時(shí),路由節(jié)點(diǎn)將不再發(fā)起路由發(fā)現(xiàn),即不再采用AODVjr路由算法。
在ZigBee網(wǎng)絡(luò)中,越靠近中心協(xié)調(diào)器的節(jié)點(diǎn)參與數(shù)據(jù)傳輸就越頻繁,對(duì)整個(gè)網(wǎng)絡(luò)的通信來(lái)說(shuō)也就越重要,所以Emin的能量控制應(yīng)與節(jié)點(diǎn)深度成反比,深度越小節(jié)點(diǎn)應(yīng)具有相對(duì)較大的最小路由能量,因此,將Emin定義為:
其中,Elimit為節(jié)點(diǎn)正常工作需要的最小能量值,為控制系數(shù),可以根據(jù)需要人為的控制Emin的大小,d為節(jié)點(diǎn)的深度。
此外,M_ZBR算法依據(jù)節(jié)點(diǎn)最小路由能量的定義,設(shè)置一個(gè)節(jié)點(diǎn)能量警戒值Ewarning:
其中,k為大于1的控制系數(shù)。
依據(jù)以上節(jié)點(diǎn)能量閾值的設(shè)置,M_ZBR算法在RREQ分組中增加了能量標(biāo)志位energy_flag,用于統(tǒng)計(jì)RREQ分組傳輸過(guò)程中統(tǒng)計(jì)處于能量警戒區(qū)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)。
3.2.3算法流程
(1)當(dāng)RFD節(jié)點(diǎn)要給網(wǎng)絡(luò)中其他節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),直接采用Cluster-tree算法,即將數(shù)據(jù)轉(zhuǎn)發(fā)給其父節(jié)點(diǎn),由其父節(jié)點(diǎn)轉(zhuǎn)發(fā)。(2)當(dāng)FFD節(jié)點(diǎn)要發(fā)送數(shù)據(jù)到網(wǎng)絡(luò)中其他節(jié)點(diǎn)時(shí),首先查找路由表中有無(wú)到目的節(jié)點(diǎn)的路由表項(xiàng),若有則按路由表轉(zhuǎn)發(fā)數(shù)據(jù)包,若無(wú)則啟動(dòng)路由發(fā)現(xiàn)過(guò)程。(3)在路由發(fā)現(xiàn)階段,任意節(jié)點(diǎn)收到RREQ分組時(shí),首先檢測(cè)本節(jié)點(diǎn)是不是該RREQ分組的目的節(jié)點(diǎn),如果不是,則轉(zhuǎn)(4);若是,則轉(zhuǎn)(9)。(4)判斷節(jié)點(diǎn)自身的剩余能量,如果剩余能量小于節(jié)點(diǎn)最小路由能量Emin則直接丟棄RREQ分組,否則轉(zhuǎn)(5)。(5)查看RREQ分組中的跳數(shù)值,若hops>2Lm,則丟棄RREQ分組,否則轉(zhuǎn)(6)。(6)查看RREQ分組中的標(biāo)志位flag,若flag=0,轉(zhuǎn)(7),若flag=1,則轉(zhuǎn)(8)。(7)flag=0表明本節(jié)點(diǎn)不宜轉(zhuǎn)發(fā)子節(jié)點(diǎn)發(fā)送的分組,需判斷本節(jié)點(diǎn)是否為前一跳的父節(jié)點(diǎn),若是,則丟棄RREQ分組;若不是,則判斷目的節(jié)點(diǎn)是否為當(dāng)前節(jié)點(diǎn)的后裔節(jié)點(diǎn),如果是,flag的值繼續(xù)為0,直接轉(zhuǎn)發(fā)分組,若目的節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的后裔節(jié)點(diǎn),則設(shè)置flag=1。(8)flag=1表明本節(jié)點(diǎn)不宜轉(zhuǎn)發(fā)父節(jié)點(diǎn)發(fā)送的分組,需判斷本節(jié)點(diǎn)是否為前一跳的子節(jié)點(diǎn),若是,則丟棄該分組;若不是,則需判斷目的節(jié)點(diǎn)是否為當(dāng)前節(jié)點(diǎn)后裔節(jié)點(diǎn),如果是,則設(shè)置flag=0,若目的節(jié)點(diǎn)不是當(dāng)前節(jié)點(diǎn)的后裔節(jié)點(diǎn),flag的值繼續(xù)為1,直接轉(zhuǎn)發(fā)分組。(9)當(dāng)目的節(jié)點(diǎn)收到RREQ分組時(shí),判斷自身剩余能量,若小于Emin,直接回復(fù)RREP;否則將收到的分組放入緩存區(qū),在緩存時(shí)間t內(nèi),比較各RREQ分組的能量標(biāo)志位energy_flag,選擇energy_flag最小的RREQ分組且回復(fù)RREP。
四、仿真結(jié)果分析
為了驗(yàn)證改進(jìn)算法的實(shí)際效果,通過(guò)仿真實(shí)驗(yàn)對(duì)比原來(lái)的AODVjr算法,分別比較了死亡節(jié)點(diǎn)個(gè)數(shù)以及總能量損耗,仿真結(jié)果證明了算法的可行性和有效性。
圖3是原AODVjr算法與改進(jìn)算法死亡節(jié)點(diǎn)數(shù)的比較,曲線(xiàn)(1)是原AODVjr算法隨數(shù)據(jù)流量增加而變化的死亡節(jié)點(diǎn)數(shù),曲線(xiàn)(2)是改進(jìn)后的算法的死亡節(jié)點(diǎn)數(shù)。當(dāng)數(shù)據(jù)流量較小時(shí),節(jié)點(diǎn)能耗就較少,節(jié)點(diǎn)死亡數(shù)相對(duì)就比較少。當(dāng)數(shù)據(jù)流量增加時(shí),死亡節(jié)點(diǎn)數(shù)也會(huì)增加,改進(jìn)的算法通過(guò)能量標(biāo)志位的判斷,選取能量標(biāo)志位最小的RREQ分組并回復(fù),明顯比原算法的死亡節(jié)點(diǎn)數(shù)增加的緩慢。
圖4比較了改進(jìn)算法與原算法的網(wǎng)絡(luò)總能量耗損。曲線(xiàn)(1)是原AODVjr算法隨數(shù)據(jù)流量增加而變化的網(wǎng)絡(luò)總能量耗損,曲線(xiàn)(2)是改進(jìn)后的算法的網(wǎng)絡(luò)總能量耗損。顯然,改進(jìn)的AODVjr算法通過(guò)控制了RREQ分組減少了網(wǎng)絡(luò)的耗能。
五、結(jié)論
本文主要針對(duì)ZigBee的路由協(xié)議進(jìn)行分析,基于能量均衡對(duì)ZigBee現(xiàn)有的路由算法AODVjr提出了改進(jìn),通過(guò)限制路由發(fā)現(xiàn)過(guò)程中的RREQ的廣播,很好的延遲網(wǎng)絡(luò)分割出現(xiàn)的時(shí)間,從而提高網(wǎng)絡(luò)的性能。仿真實(shí)驗(yàn)將原算法和改進(jìn)的算法進(jìn)行了比較,改進(jìn)的路由算法有效地減少了總耗能與死亡節(jié)點(diǎn)數(shù)。
參考文獻(xiàn)
[1] ZigBee Alliance. ZigBee Document 053474r13 [S]. December 1, 2006.
[2]朱向慶,王建明. ZigBee協(xié)議網(wǎng)絡(luò)層的研究與實(shí)現(xiàn).電子技術(shù)應(yīng)用. 2006.1:129
[3] Hakeres I D, KleinBerodt. AODVjr,AODV simplified[J]. Mobile Computing and Communication Review, 2002, 6(3):100-101.[4]班艷麗,柴喬林,王芳.改進(jìn)的ZigBee網(wǎng)絡(luò)路由算法.計(jì)算機(jī)工程與應(yīng)用,2009,45(5):95-97
[4]謝川.基于ZigBee的AODVjr算法研究.計(jì)算機(jī)工程,2011,37(10):87-89
[6]張擎,劉淑美,柴喬林.能量高效的ZigBee網(wǎng)絡(luò)改進(jìn)路由策略.計(jì)算機(jī)工程,2010,36(7):108-110