何智勇
(1.南京工業職業技術學院電氣工程學院, 江蘇 南京 210046;2. 南京工業職業技術學院江蘇風力發電工程技術中心, 江蘇 南京 210046)
Zigbee是一種低功耗、低成本、可靠性好的無線網絡技術,具有延時小和網絡容量大的特點[1-2],目前主要應用于醫療、礦井、環境檢測等,無線傳感器網絡物理層和MAC層采用IEEE 802.15.4協議標準,網絡層采用Cluster-Tree路由算法[3]和AODVjr路由算法[4-5],Cluster-Tree路由算法只需要根據網絡節點之間的父子關系進行轉發,路由方式簡單,不需要存儲路由表。AODVjr路由算法[5]可以在源節點與目的節點之間尋找最優路徑,節點路由發現過程通過廣播形式發送RREQ報文建立路由,節點能量消耗大,節點依靠電池供電,節點的電量絕大部分用于節點之間的分組轉發的通信消耗,由于網絡總體能量有限,特別是在協調器附近的高層節點,隨著網絡運行時間不斷增長,節點能量耗盡,導致網絡鏈路出現中斷,AODVjr路由算法采用本地修復機制,當網絡中出現鏈路中斷,故障鏈路的上游節點重新啟動路由發現過程,通過向網絡中廣播RREQ數據分組來啟動路由發現過程,尋找一條新的可達路由,在發現路由的過程中,鏈路上傳送的數據分組直接被丟失,網絡出現擁塞,延長了數據端到端時間,因此,局部鏈路的快速修復顯得非常重要。
Zigbee網絡國內外學者的研究熱點主要集中在路由局部修改過程中RREQ報文的處理方法和鏈路選擇方面。Shang等[6-7]研究協議運行機制,提出給每個局部修復進程分配優先級,來提高鏈路修復過程中網絡性能,但該算法只是在故障修復過程中對進程的優先級進行分類,沒有減少網絡鏈路中斷出現和對鏈路數據分組進行保護。肖靂[8]提出在網絡鏈路啟動本地修復過程中,首先對鏈路中斷位置上一處節點進行分析,由上游節點發送有限跳數的發現報文RREQ進行局部路由修復,但該算法路由發現過程是在鏈路中斷后啟動修復機制,不能減少因重建路由而產生的數據分組端到端時延。李子璇等[9]提出根據網絡鏈路最大剩余能量來選擇最佳路由,避免局部節點死亡導致的網絡分割,根據鏈路能量選擇路徑,延長網絡生命周期,但是該算法沒有考慮在節點能量耗盡出現死亡,網絡出現鏈路故障的情況。針對以上研究的不足,結合空閑路由節點反向路由機制,本文提出一種改進的Zigbee網絡本地修復機制ILRA-AODVjr(improved local repair algorithm-AODVjr),通過向鄰居節點定期廣播一個具有兩跳生命周期反向路由構建報文S-RREQ,為ZigBee網絡產生多個備用局部路由,增加網絡中節點可達路由數量,提高網絡發現路由過程的效率,縮短網絡局部故障修復時間,減少數據分組丟失。

圖1 AODVjr本地算法修復過程Fig.1 AODVjr local algorithm repair process
如圖1所示,在AODVjr路由算法建立路徑的過程中,源節點S要發送數據分組到目的節點D,S首先查找本身路由表,尋找源節點到目的節點的路徑,如果節點路由表不能找到目的節點的路由,由源節點S啟動路由發現過程,通過廣播RREQ 報文進行建立路由,路由建立成功后,發送數據分組到目的節點。在AODVjr路由算法中,節點選擇下一跳路由的原則是選擇先返回RREP報文的節點,隨著網絡運行時間增長,節點能量耗盡失效,導致鏈路中斷,特別是網絡中高層節點數據轉發頻繁,節點能量損耗快,網絡會提前出現分割現象。如圖1所示的網絡結構中,節點1是網絡關鍵節點,數據分組轉發頻繁,節點能量耗盡死亡,網絡出現鏈路中斷,{7,1}、{8,1}、{13,1}變成中斷鏈路不能發送數據分組,AODVjr啟動局部修復機制,由中斷鏈路的上游節點7重新啟動路由發現過程,向網絡中廣播發送RREQ報文再次尋找到目的節點的路由{S,6,7,2,8,12,13,14,D},由于RREQ是廣播發送,增加網絡節點的負擔,網絡中傳送的數據分組被直接丟棄,直接影響網絡傳輸效率,增大了網絡數據分組端到端時延。
本文提出的改進的Zigbee網絡本地修復算法ILRA-AODVjr的基本思想是網絡節點處于空閑狀態時,即節點在一個時間段內除了與向鄰居節點發送KEEP_ALIVE報文進行路由維護之外,不進行任何其他數據分組的發送、轉發和接收,充分利用網絡節點空閑時間,通過空閑路由節點反向路由機制,向鄰居節點廣播一個具有兩跳生命周期反向路由構建報文S-RREQ,節點產生多個備用局部路由,減少路由發現等待過程,縮短網絡局部故障修復時間。
源節點通過路由發現過程建立鏈路之后,路由進入路由維護階段。在鏈路有效時間內,目的節點定期向源節點發送KEEP_ALIVE數據分組來維持鏈路信息,如果源節點成功收到KEEP_ALIVE數據分組,鏈路可達,否則認為鏈路失效,重新進行路由發現過程,KEEP_ALIVE路由維護報文發送如圖2所示。

圖2 ILRA-AODVjr算法產生備用路由過程Fig.2 Generation of a standby routing process by ILRA-AODVjr algorithm
在網絡運行過程中,路徑{S,6,7,2,8,12,13,14,D}的節點有數據分組發送,不屬于空閑鏈路。網絡中節點在一定周期Tidle內,系統設置的空閑超時時間為T,節點沒有任何數據分組、RREQ報文或RREP報文發送或者轉發,該節點處于空閑狀態。在整個Zigbee網絡中,同一時間內有很多的節點處于沒有數據分組轉發的狀態,以節點2為例,當節點2的Tidle>T,為了節省網絡資源,節點2向網絡發送生命周期為2的路由發現報文S-RREQ建立備用路由,算法具體執行步驟如下:
(1)空閑節點Tidle>T時,向鄰居節點發送TTL=2的路由發現報文S-RREQ,對2跳范圍內能到達的節點建立備用路由,收到S-RREQ數據分組的節點回復RREP報文進行路徑建立確認。
(2)備用路由建立成功后,節點定期對已建立的路由進行維護,讓已存在的備用路由不會因為超時被刪除,如圖2所示,節點2建立的備用路由{2,3,9},{2,3,19},{2,8,9},{2,8,12},{2,8,1}在鏈路時間到期,目的節點發送KEEP_ALIVE數據分組到節點2確定路由存在,刷新路由信息。
(3)節點發起新的路由過程后,節點向網絡中發送RREQ報文,空閑節點維護的路由表中有備用路由信息,節點19要發送數據分組到目的節點D,向網絡中廣播RREQ報文啟動路由發現過程,節點3收到RREQ報文,對比本身存儲的路由信息,由于節點有備用路由,節點3直接給節點19回復響應RREP報文確定鏈路的建立,大大提高了路由發現過程的效率。
(4)節點能量耗盡鏈路出現斷裂,網絡出現中斷,如節點1能量耗盡死亡,路徑{1,7}、{1,8}、{1,13}中斷,上游節點7發起局部路由修復機制,向全網發送RREQ報文,等待目的節點D回復RREP數據分組確定路由的建立,由于節點7到目的節點的跳多,響應時間慢。通過空閑路由節點反向路由信息,節點2收到節點7發起的路由發現報文后,查看自身的路由表,節點2維護的路由表中有到過目的節點的路由信息,節點2直接回復RREP報文給節點7,路由本地修復完畢,節點2到節點D的新路徑重新構建完畢,大大減少了網絡節點故障本地修復時間。
整個算法的流程如圖3 所示。

圖3 改進的路由算法處理過程Fig.3 Improved routing algorithm process
通過NS2平臺驗證本文提出的ILRA-AODVjr算法,仿真實驗中,網絡覆蓋面積為100×100,節點120個,信道數據傳輸率為200 kbit/s,節點初始能量為5 J,仿真時間為200 s,數據包長度為128 bit,本仿真實驗中,節點能量低于初始能量2%,節點被認為是死亡節點,系統設置空閑超時時間為T=0.01 s。仿真實驗從平均節點故障修復時間、數據分組端到端延時和網絡剩余能量比率三方面與AODVjr算法進行了比較。
網絡運行后,改進ILRA-AODVjr路由算法與AODVjr算法節點故障平均修復時間對比圖見圖4,由于改進算法在網絡節點處于空閑狀態時,通過空閑路由節點反向路由機制,建立備用鏈路信息,在網絡中構建多條備用路由信息,網絡中節點能量耗盡死亡,網絡中出現鏈路中斷,由于ILRA-AODVjr路由算法中有備用鏈路存在,減少路由發現過程,縮短網絡局部故障修復時間,ILRA-AODVjr路由算法優于AODVjr路由算法。
數據分組端到端延時仿真結果見圖5,隨時間的增長,網絡中有節點能量耗盡死亡,節點數據分組端到端延時不斷增加,由于改進ILRA-AODVjr路由算法采用備用路由機制,提高了節點故障修復時間,避免了數據分組的丟失,ILRA-AODVjr路由算法優于AODVjr路由算法。
網絡剩余能量比率仿真結果見圖6,隨網絡運行時間的增長,網絡中數據分組不斷發送需要消耗能量,AODVjr算法在網絡出現鏈路中斷后,AODVjr上游節點啟動路由發現過程,廣播RREQ報文,節點能量消耗快,改進的ILRA-AODVjr路由算法采用空閑路由節點反向路由機制,避免了RREQ報文泛洪,有效保護了節點剩余能量,網絡剩余能量比率ILRA-AODVjr路由算法優于AODVjr路由算法。

圖4 節點故障平均修復時間對比圖Fig.4 Comparison graph of the average repair time for node failure

圖5 數據分組端到端延時對比圖Fig.5 Comparison graph of data packet end-to-end delay

圖6 網絡剩余能量比率對比圖Fig.6 Comparison graph of Network Residual Energy Ratio
本文在對Zigbee路由協議進行深入研究的基礎上,提出了改進ILRA-AODVjr路由算法,通過空閑路由節點反向路由機制,向鄰居節點發送TTL=2反向路由構建報文S-RREQ,在網絡中產生多個備用局部路由,當網絡高層節點能量耗盡,鏈路出現中斷后,減少路由發現等待過程,縮短網絡局部故障修復時間,減輕了網絡擁塞和延遲現象。通過仿真實驗,將改進ILRA-AODVjr路由算法與AODVjr路由算法進行比較,ILRA-AODVjr算法在節點故障平均修復時間和數據分組端到端延時方面有優勢,延長了網絡生命周期。
參考文獻:
[1]周武斌,羅大庸. ZigBee路由協議的研究[J].計算機工程與科學,2009,31(6):12-14.
[2]趙博,吳靜. 基于ZigBee無線網絡的Cluster-Tree路由算法研究[J].電子技術應用,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協議局部修復機制改進[J].微型電腦應用,2016,32(4):65-67.
[8]肖靂. AODV路由協議路由修復研究和改進[D].北京:北京郵電大學,2010.
[9]李子璇, 童孟軍,江浩然. AOMDV 多路徑協議的研究和改進[J].計算機時代,2016,8(8):7-12.