何智勇
(1.南京工業(yè)職業(yè)技術(shù)學(xué)院電氣工程學(xué)院, 江蘇 南京 210046;2. 南京工業(yè)職業(yè)技術(shù)學(xué)院江蘇風(fēng)力發(fā)電工程技術(shù)中心, 江蘇 南京 210046)
Zigbee是一種低功耗、低成本、可靠性好的無線網(wǎng)絡(luò)技術(shù),具有延時(shí)小和網(wǎng)絡(luò)容量大的特點(diǎn)[1-2],目前主要應(yīng)用于醫(yī)療、礦井、環(huán)境檢測等,無線傳感器網(wǎng)絡(luò)物理層和MAC層采用IEEE 802.15.4協(xié)議標(biāo)準(zhǔn),網(wǎng)絡(luò)層采用Cluster-Tree路由算法[3]和AODVjr路由算法[4-5],Cluster-Tree路由算法只需要根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)之間的父子關(guān)系進(jìn)行轉(zhuǎn)發(fā),路由方式簡單,不需要存儲路由表。AODVjr路由算法[5]可以在源節(jié)點(diǎn)與目的節(jié)點(diǎn)之間尋找最優(yōu)路徑,節(jié)點(diǎn)路由發(fā)現(xiàn)過程通過廣播形式發(fā)送RREQ報(bào)文建立路由,節(jié)點(diǎn)能量消耗大,節(jié)點(diǎn)依靠電池供電,節(jié)點(diǎn)的電量絕大部分用于節(jié)點(diǎn)之間的分組轉(zhuǎn)發(fā)的通信消耗,由于網(wǎng)絡(luò)總體能量有限,特別是在協(xié)調(diào)器附近的高層節(jié)點(diǎn),隨著網(wǎng)絡(luò)運(yùn)行時(shí)間不斷增長,節(jié)點(diǎn)能量耗盡,導(dǎo)致網(wǎng)絡(luò)鏈路出現(xiàn)中斷,AODVjr路由算法采用本地修復(fù)機(jī)制,當(dāng)網(wǎng)絡(luò)中出現(xiàn)鏈路中斷,故障鏈路的上游節(jié)點(diǎn)重新啟動路由發(fā)現(xiàn)過程,通過向網(wǎng)絡(luò)中廣播RREQ數(shù)據(jù)分組來啟動路由發(fā)現(xiàn)過程,尋找一條新的可達(dá)路由,在發(fā)現(xiàn)路由的過程中,鏈路上傳送的數(shù)據(jù)分組直接被丟失,網(wǎng)絡(luò)出現(xiàn)擁塞,延長了數(shù)據(jù)端到端時(shí)間,因此,局部鏈路的快速修復(fù)顯得非常重要。
Zigbee網(wǎng)絡(luò)國內(nèi)外學(xué)者的研究熱點(diǎn)主要集中在路由局部修改過程中RREQ報(bào)文的處理方法和鏈路選擇方面。Shang等[6-7]研究協(xié)議運(yùn)行機(jī)制,提出給每個(gè)局部修復(fù)進(jìn)程分配優(yōu)先級,來提高鏈路修復(fù)過程中網(wǎng)絡(luò)性能,但該算法只是在故障修復(fù)過程中對進(jìn)程的優(yōu)先級進(jìn)行分類,沒有減少網(wǎng)絡(luò)鏈路中斷出現(xiàn)和對鏈路數(shù)據(jù)分組進(jìn)行保護(hù)。肖靂[8]提出在網(wǎng)絡(luò)鏈路啟動本地修復(fù)過程中,首先對鏈路中斷位置上一處節(jié)點(diǎn)進(jìn)行分析,由上游節(jié)點(diǎn)發(fā)送有限跳數(shù)的發(fā)現(xiàn)報(bào)文RREQ進(jìn)行局部路由修復(fù),但該算法路由發(fā)現(xiàn)過程是在鏈路中斷后啟動修復(fù)機(jī)制,不能減少因重建路由而產(chǎn)生的數(shù)據(jù)分組端到端時(shí)延。李子璇等[9]提出根據(jù)網(wǎng)絡(luò)鏈路最大剩余能量來選擇最佳路由,避免局部節(jié)點(diǎn)死亡導(dǎo)致的網(wǎng)絡(luò)分割,根據(jù)鏈路能量選擇路徑,延長網(wǎng)絡(luò)生命周期,但是該算法沒有考慮在節(jié)點(diǎn)能量耗盡出現(xiàn)死亡,網(wǎng)絡(luò)出現(xiàn)鏈路故障的情況。針對以上研究的不足,結(jié)合空閑路由節(jié)點(diǎn)反向路由機(jī)制,本文提出一種改進(jìn)的Zigbee網(wǎng)絡(luò)本地修復(fù)機(jī)制ILRA-AODVjr(improved local repair algorithm-AODVjr),通過向鄰居節(jié)點(diǎn)定期廣播一個(gè)具有兩跳生命周期反向路由構(gòu)建報(bào)文S-RREQ,為ZigBee網(wǎng)絡(luò)產(chǎn)生多個(gè)備用局部路由,增加網(wǎng)絡(luò)中節(jié)點(diǎn)可達(dá)路由數(shù)量,提高網(wǎng)絡(luò)發(fā)現(xiàn)路由過程的效率,縮短網(wǎng)絡(luò)局部故障修復(fù)時(shí)間,減少數(shù)據(jù)分組丟失。
圖1 AODVjr本地算法修復(fù)過程Fig.1 AODVjr local algorithm repair process
如圖1所示,在AODVjr路由算法建立路徑的過程中,源節(jié)點(diǎn)S要發(fā)送數(shù)據(jù)分組到目的節(jié)點(diǎn)D,S首先查找本身路由表,尋找源節(jié)點(diǎn)到目的節(jié)點(diǎn)的路徑,如果節(jié)點(diǎn)路由表不能找到目的節(jié)點(diǎn)的路由,由源節(jié)點(diǎn)S啟動路由發(fā)現(xiàn)過程,通過廣播RREQ 報(bào)文進(jìn)行建立路由,路由建立成功后,發(fā)送數(shù)據(jù)分組到目的節(jié)點(diǎn)。在AODVjr路由算法中,節(jié)點(diǎn)選擇下一跳路由的原則是選擇先返回RREP報(bào)文的節(jié)點(diǎn),隨著網(wǎng)絡(luò)運(yùn)行時(shí)間增長,節(jié)點(diǎn)能量耗盡失效,導(dǎo)致鏈路中斷,特別是網(wǎng)絡(luò)中高層節(jié)點(diǎn)數(shù)據(jù)轉(zhuǎn)發(fā)頻繁,節(jié)點(diǎn)能量損耗快,網(wǎng)絡(luò)會提前出現(xiàn)分割現(xiàn)象。如圖1所示的網(wǎng)絡(luò)結(jié)構(gòu)中,節(jié)點(diǎn)1是網(wǎng)絡(luò)關(guān)鍵節(jié)點(diǎn),數(shù)據(jù)分組轉(zhuǎn)發(fā)頻繁,節(jié)點(diǎn)能量耗盡死亡,網(wǎng)絡(luò)出現(xiàn)鏈路中斷,{7,1}、{8,1}、{13,1}變成中斷鏈路不能發(fā)送數(shù)據(jù)分組,AODVjr啟動局部修復(fù)機(jī)制,由中斷鏈路的上游節(jié)點(diǎn)7重新啟動路由發(fā)現(xiàn)過程,向網(wǎng)絡(luò)中廣播發(fā)送RREQ報(bào)文再次尋找到目的節(jié)點(diǎn)的路由{S,6,7,2,8,12,13,14,D},由于RREQ是廣播發(fā)送,增加網(wǎng)絡(luò)節(jié)點(diǎn)的負(fù)擔(dān),網(wǎng)絡(luò)中傳送的數(shù)據(jù)分組被直接丟棄,直接影響網(wǎng)絡(luò)傳輸效率,增大了網(wǎng)絡(luò)數(shù)據(jù)分組端到端時(shí)延。
本文提出的改進(jìn)的Zigbee網(wǎng)絡(luò)本地修復(fù)算法ILRA-AODVjr的基本思想是網(wǎng)絡(luò)節(jié)點(diǎn)處于空閑狀態(tài)時(shí),即節(jié)點(diǎn)在一個(gè)時(shí)間段內(nèi)除了與向鄰居節(jié)點(diǎn)發(fā)送KEEP_ALIVE報(bào)文進(jìn)行路由維護(hù)之外,不進(jìn)行任何其他數(shù)據(jù)分組的發(fā)送、轉(zhuǎn)發(fā)和接收,充分利用網(wǎng)絡(luò)節(jié)點(diǎn)空閑時(shí)間,通過空閑路由節(jié)點(diǎn)反向路由機(jī)制,向鄰居節(jié)點(diǎn)廣播一個(gè)具有兩跳生命周期反向路由構(gòu)建報(bào)文S-RREQ,節(jié)點(diǎn)產(chǎn)生多個(gè)備用局部路由,減少路由發(fā)現(xiàn)等待過程,縮短網(wǎng)絡(luò)局部故障修復(fù)時(shí)間。
源節(jié)點(diǎn)通過路由發(fā)現(xiàn)過程建立鏈路之后,路由進(jìn)入路由維護(hù)階段。在鏈路有效時(shí)間內(nèi),目的節(jié)點(diǎn)定期向源節(jié)點(diǎn)發(fā)送KEEP_ALIVE數(shù)據(jù)分組來維持鏈路信息,如果源節(jié)點(diǎn)成功收到KEEP_ALIVE數(shù)據(jù)分組,鏈路可達(dá),否則認(rèn)為鏈路失效,重新進(jìn)行路由發(fā)現(xiàn)過程,KEEP_ALIVE路由維護(hù)報(bào)文發(fā)送如圖2所示。
圖2 ILRA-AODVjr算法產(chǎn)生備用路由過程Fig.2 Generation of a standby routing process by ILRA-AODVjr algorithm
在網(wǎng)絡(luò)運(yùn)行過程中,路徑{S,6,7,2,8,12,13,14,D}的節(jié)點(diǎn)有數(shù)據(jù)分組發(fā)送,不屬于空閑鏈路。網(wǎng)絡(luò)中節(jié)點(diǎn)在一定周期Tidle內(nèi),系統(tǒng)設(shè)置的空閑超時(shí)時(shí)間為T,節(jié)點(diǎn)沒有任何數(shù)據(jù)分組、RREQ報(bào)文或RREP報(bào)文發(fā)送或者轉(zhuǎn)發(fā),該節(jié)點(diǎn)處于空閑狀態(tài)。在整個(gè)Zigbee網(wǎng)絡(luò)中,同一時(shí)間內(nèi)有很多的節(jié)點(diǎn)處于沒有數(shù)據(jù)分組轉(zhuǎn)發(fā)的狀態(tài),以節(jié)點(diǎn)2為例,當(dāng)節(jié)點(diǎn)2的Tidle>T,為了節(jié)省網(wǎng)絡(luò)資源,節(jié)點(diǎn)2向網(wǎng)絡(luò)發(fā)送生命周期為2的路由發(fā)現(xiàn)報(bào)文S-RREQ建立備用路由,算法具體執(zhí)行步驟如下:
(1)空閑節(jié)點(diǎn)Tidle>T時(shí),向鄰居節(jié)點(diǎn)發(fā)送TTL=2的路由發(fā)現(xiàn)報(bào)文S-RREQ,對2跳范圍內(nèi)能到達(dá)的節(jié)點(diǎn)建立備用路由,收到S-RREQ數(shù)據(jù)分組的節(jié)點(diǎn)回復(fù)RREP報(bào)文進(jìn)行路徑建立確認(rèn)。
(2)備用路由建立成功后,節(jié)點(diǎn)定期對已建立的路由進(jìn)行維護(hù),讓已存在的備用路由不會因?yàn)槌瑫r(shí)被刪除,如圖2所示,節(jié)點(diǎn)2建立的備用路由{2,3,9},{2,3,19},{2,8,9},{2,8,12},{2,8,1}在鏈路時(shí)間到期,目的節(jié)點(diǎn)發(fā)送KEEP_ALIVE數(shù)據(jù)分組到節(jié)點(diǎn)2確定路由存在,刷新路由信息。
(3)節(jié)點(diǎn)發(fā)起新的路由過程后,節(jié)點(diǎn)向網(wǎng)絡(luò)中發(fā)送RREQ報(bào)文,空閑節(jié)點(diǎn)維護(hù)的路由表中有備用路由信息,節(jié)點(diǎn)19要發(fā)送數(shù)據(jù)分組到目的節(jié)點(diǎn)D,向網(wǎng)絡(luò)中廣播RREQ報(bào)文啟動路由發(fā)現(xiàn)過程,節(jié)點(diǎn)3收到RREQ報(bào)文,對比本身存儲的路由信息,由于節(jié)點(diǎn)有備用路由,節(jié)點(diǎn)3直接給節(jié)點(diǎn)19回復(fù)響應(yīng)RREP報(bào)文確定鏈路的建立,大大提高了路由發(fā)現(xiàn)過程的效率。
(4)節(jié)點(diǎn)能量耗盡鏈路出現(xiàn)斷裂,網(wǎng)絡(luò)出現(xiàn)中斷,如節(jié)點(diǎn)1能量耗盡死亡,路徑{1,7}、{1,8}、{1,13}中斷,上游節(jié)點(diǎn)7發(fā)起局部路由修復(fù)機(jī)制,向全網(wǎng)發(fā)送RREQ報(bào)文,等待目的節(jié)點(diǎn)D回復(fù)RREP數(shù)據(jù)分組確定路由的建立,由于節(jié)點(diǎn)7到目的節(jié)點(diǎn)的跳多,響應(yīng)時(shí)間慢。通過空閑路由節(jié)點(diǎn)反向路由信息,節(jié)點(diǎn)2收到節(jié)點(diǎn)7發(fā)起的路由發(fā)現(xiàn)報(bào)文后,查看自身的路由表,節(jié)點(diǎn)2維護(hù)的路由表中有到過目的節(jié)點(diǎn)的路由信息,節(jié)點(diǎn)2直接回復(fù)RREP報(bào)文給節(jié)點(diǎn)7,路由本地修復(fù)完畢,節(jié)點(diǎn)2到節(jié)點(diǎn)D的新路徑重新構(gòu)建完畢,大大減少了網(wǎng)絡(luò)節(jié)點(diǎn)故障本地修復(fù)時(shí)間。
整個(gè)算法的流程如圖3 所示。
圖3 改進(jìn)的路由算法處理過程Fig.3 Improved routing algorithm process
通過NS2平臺驗(yàn)證本文提出的ILRA-AODVjr算法,仿真實(shí)驗(yàn)中,網(wǎng)絡(luò)覆蓋面積為100×100,節(jié)點(diǎn)120個(gè),信道數(shù)據(jù)傳輸率為200 kbit/s,節(jié)點(diǎn)初始能量為5 J,仿真時(shí)間為200 s,數(shù)據(jù)包長度為128 bit,本仿真實(shí)驗(yàn)中,節(jié)點(diǎn)能量低于初始能量2%,節(jié)點(diǎn)被認(rèn)為是死亡節(jié)點(diǎn),系統(tǒng)設(shè)置空閑超時(shí)時(shí)間為T=0.01 s。仿真實(shí)驗(yàn)從平均節(jié)點(diǎn)故障修復(fù)時(shí)間、數(shù)據(jù)分組端到端延時(shí)和網(wǎng)絡(luò)剩余能量比率三方面與AODVjr算法進(jìn)行了比較。
網(wǎng)絡(luò)運(yùn)行后,改進(jìn)ILRA-AODVjr路由算法與AODVjr算法節(jié)點(diǎn)故障平均修復(fù)時(shí)間對比圖見圖4,由于改進(jìn)算法在網(wǎng)絡(luò)節(jié)點(diǎn)處于空閑狀態(tài)時(shí),通過空閑路由節(jié)點(diǎn)反向路由機(jī)制,建立備用鏈路信息,在網(wǎng)絡(luò)中構(gòu)建多條備用路由信息,網(wǎng)絡(luò)中節(jié)點(diǎn)能量耗盡死亡,網(wǎng)絡(luò)中出現(xiàn)鏈路中斷,由于ILRA-AODVjr路由算法中有備用鏈路存在,減少路由發(fā)現(xiàn)過程,縮短網(wǎng)絡(luò)局部故障修復(fù)時(shí)間,ILRA-AODVjr路由算法優(yōu)于AODVjr路由算法。
數(shù)據(jù)分組端到端延時(shí)仿真結(jié)果見圖5,隨時(shí)間的增長,網(wǎng)絡(luò)中有節(jié)點(diǎn)能量耗盡死亡,節(jié)點(diǎn)數(shù)據(jù)分組端到端延時(shí)不斷增加,由于改進(jìn)ILRA-AODVjr路由算法采用備用路由機(jī)制,提高了節(jié)點(diǎn)故障修復(fù)時(shí)間,避免了數(shù)據(jù)分組的丟失,ILRA-AODVjr路由算法優(yōu)于AODVjr路由算法。
網(wǎng)絡(luò)剩余能量比率仿真結(jié)果見圖6,隨網(wǎng)絡(luò)運(yùn)行時(shí)間的增長,網(wǎng)絡(luò)中數(shù)據(jù)分組不斷發(fā)送需要消耗能量,AODVjr算法在網(wǎng)絡(luò)出現(xiàn)鏈路中斷后,AODVjr上游節(jié)點(diǎn)啟動路由發(fā)現(xiàn)過程,廣播RREQ報(bào)文,節(jié)點(diǎn)能量消耗快,改進(jìn)的ILRA-AODVjr路由算法采用空閑路由節(jié)點(diǎn)反向路由機(jī)制,避免了RREQ報(bào)文泛洪,有效保護(hù)了節(jié)點(diǎn)剩余能量,網(wǎng)絡(luò)剩余能量比率ILRA-AODVjr路由算法優(yōu)于AODVjr路由算法。
圖4 節(jié)點(diǎn)故障平均修復(fù)時(shí)間對比圖Fig.4 Comparison graph of the average repair time for node failure
圖5 數(shù)據(jù)分組端到端延時(shí)對比圖Fig.5 Comparison graph of data packet end-to-end delay
圖6 網(wǎng)絡(luò)剩余能量比率對比圖Fig.6 Comparison graph of Network Residual Energy Ratio
本文在對Zigbee路由協(xié)議進(jìn)行深入研究的基礎(chǔ)上,提出了改進(jìn)ILRA-AODVjr路由算法,通過空閑路由節(jié)點(diǎn)反向路由機(jī)制,向鄰居節(jié)點(diǎn)發(fā)送TTL=2反向路由構(gòu)建報(bào)文S-RREQ,在網(wǎng)絡(luò)中產(chǎn)生多個(gè)備用局部路由,當(dāng)網(wǎng)絡(luò)高層節(jié)點(diǎn)能量耗盡,鏈路出現(xiàn)中斷后,減少路由發(fā)現(xiàn)等待過程,縮短網(wǎng)絡(luò)局部故障修復(fù)時(shí)間,減輕了網(wǎng)絡(luò)擁塞和延遲現(xiàn)象。通過仿真實(shí)驗(yàn),將改進(jìn)ILRA-AODVjr路由算法與AODVjr路由算法進(jìn)行比較,ILRA-AODVjr算法在節(jié)點(diǎn)故障平均修復(fù)時(shí)間和數(shù)據(jù)分組端到端延時(shí)方面有優(yōu)勢,延長了網(wǎng)絡(luò)生命周期。
參考文獻(xiàn):
[1]周武斌,羅大庸. ZigBee路由協(xié)議的研究[J].計(jì)算機(jī)工程與科學(xué),2009,31(6):12-14.
[2]趙博,吳靜. 基于ZigBee無線網(wǎng)絡(luò)的Cluster-Tree路由算法研究[J].電子技術(shù)應(yīng)用,2016,42(4):116-119.
[3]LEE K K, KIM S H, CHOI Y S, et al. A mesh routing protocol using cluster label in the ZigBee network[EB/OL].[2017-09-01].http://dx.dor.org/ 10.1109/MOBHOC.2006.278654.
[5]QIU F, WANG J M, LENG J, Design and implementation of a wireless personal area network based on AODVjr Routing[EB/OL].[2017-09-01]. http://dx.doi.org/ 10.1049/cp:20061277.
[6]SHANG T, WU W, LIU X D, et al. AODVjr routing protocol with multiple feedback policy for ZigBee network[EB/OL].[2017-09-01]. http://dx.doi.org/ 10.1109/ISCE.2009.5156814.
[7]韓林呈, 陳喜春. AODV協(xié)議局部修復(fù)機(jī)制改進(jìn)[J].微型電腦應(yīng)用,2016,32(4):65-67.
[8]肖靂. AODV路由協(xié)議路由修復(fù)研究和改進(jìn)[D].北京:北京郵電大學(xué),2010.
[9]李子璇, 童孟軍,江浩然. AOMDV 多路徑協(xié)議的研究和改進(jìn)[J].計(jì)算機(jī)時(shí)代,2016,8(8):7-12.