劉瀟花,彭 勇
(江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇無(wú)錫 214122)
ZigBee是一種低速率、低功耗、適應(yīng)性強(qiáng)的短距離無(wú)線通信技術(shù),在智能家居、家庭保健以及環(huán)境監(jiān)測(cè)等無(wú)線通信場(chǎng)合得到了廣泛應(yīng)用[1-2]。ZigBee網(wǎng)絡(luò)節(jié)點(diǎn)是依靠電池供電的,由于節(jié)點(diǎn)體積小,因此節(jié)點(diǎn)能量十分有限。當(dāng)節(jié)點(diǎn)的能量消耗殆盡,容易導(dǎo)致網(wǎng)絡(luò)分割,甚至?xí)斐蒢igBee網(wǎng)絡(luò)癱瘓。所以,提高節(jié)點(diǎn)生存率、降低網(wǎng)絡(luò)能耗是解決阻礙ZigBee網(wǎng)絡(luò)應(yīng)用發(fā)展前景的關(guān)鍵[3]。ZigBee主要支持3種網(wǎng)絡(luò)拓?fù)洌ㄐ切屯負(fù)?star)、樹形拓?fù)?tree)和網(wǎng)狀拓?fù)?mesh)[4]。其中,網(wǎng)狀網(wǎng)絡(luò)是具有“自恢復(fù)”能力和高可靠性的網(wǎng)絡(luò),可以為節(jié)點(diǎn)提供多條數(shù)據(jù)傳輸路徑。Mesh網(wǎng)絡(luò)拓?fù)湟话悴捎肁ODVjr路由算法,AODVjr路由算法是在AODV的基礎(chǔ)上發(fā)展而來(lái)的,它支持端到端的傳輸[5]。AODVjr算法采用最短路徑傳輸機(jī)制,目的節(jié)點(diǎn)回復(fù)最先達(dá)到的RREQ分組建立路由路徑。正是由于這樣的傳輸機(jī)制,AODVjr算法的一些節(jié)點(diǎn)易于因頻繁參與數(shù)據(jù)轉(zhuǎn)發(fā)而造成節(jié)點(diǎn)死亡。為解決AODVjr算法的這些問(wèn)題,文獻(xiàn)[6]基于節(jié)點(diǎn)角色差異性和節(jié)點(diǎn)能量狀態(tài)提出一種改進(jìn)的AODVjr路由算法,文獻(xiàn)[7-8]提出基于能量均衡的改進(jìn)ZigBee路由算法,文獻(xiàn)[9]基于分層思想提出的網(wǎng)狀網(wǎng)絡(luò)路由算法,都在一定程度上降低了節(jié)點(diǎn)死亡率和網(wǎng)絡(luò)能耗。
本文在深入分析ZigBee網(wǎng)絡(luò)路由算法的基礎(chǔ)上,針對(duì)現(xiàn)有AODVjr算法節(jié)點(diǎn)利用率低、網(wǎng)絡(luò)能量消耗大的問(wèn)題,提出一種改進(jìn)的 F-AODVjr路由算法。
采用AODVjr路由算法的網(wǎng)狀網(wǎng)絡(luò)采用預(yù)先地址分配方式,網(wǎng)絡(luò)中存在3類節(jié)點(diǎn):中心協(xié)調(diào)器,路由器和終端節(jié)點(diǎn)。協(xié)調(diào)器和路由器存儲(chǔ)容量大、計(jì)算能力強(qiáng),是全功能設(shè)備(Full Function Device,F(xiàn)FD),可以作為父節(jié)點(diǎn)為新加入的子節(jié)點(diǎn)分配網(wǎng)絡(luò)地址,而終端節(jié)點(diǎn)為精簡(jiǎn)功能設(shè)備(Reduced Function Device,RFD),只有數(shù)據(jù)收發(fā)功能,作為網(wǎng)絡(luò)葉節(jié)點(diǎn)。
網(wǎng)絡(luò)中,父節(jié)點(diǎn)能夠接納子節(jié)點(diǎn)的最大數(shù)量為Cm,其中,路由器數(shù)量最大為Rm,網(wǎng)絡(luò)中的最大深度為L(zhǎng)m,可通過(guò)式(1)定義深度為d的父節(jié)點(diǎn)所擁有的地址空間Cskip(d)[10]:
入網(wǎng)子節(jié)點(diǎn)的類型不同,分配給子節(jié)點(diǎn)的地址的計(jì)算方法也不一樣,如果子節(jié)點(diǎn)為第n個(gè)加入的路由器節(jié)點(diǎn),父節(jié)點(diǎn)分配給子路由器的地址A由式(2)計(jì)算,父節(jié)點(diǎn)的地址為Ap。若子節(jié)點(diǎn)是第n個(gè)加入的終端節(jié)點(diǎn),則使用式(3)為其分配網(wǎng)絡(luò)地址:
AODVjr路由分為路由發(fā)現(xiàn)和路由維護(hù)2個(gè)過(guò)程。在發(fā)現(xiàn)路由環(huán)節(jié)中,存儲(chǔ)路由信息必須通過(guò)路由表以及路由發(fā)現(xiàn)表來(lái)實(shí)現(xiàn)。其中,路由表的條目可以保存很長(zhǎng)時(shí)間,是持續(xù)的,而路由發(fā)現(xiàn)表?xiàng)l目?jī)H能持續(xù)一個(gè)路由發(fā)現(xiàn)操作的期限。
ZigBee網(wǎng)絡(luò)中每個(gè)節(jié)點(diǎn)都維護(hù)離自己一跳距離的鄰居節(jié)點(diǎn)信息,每個(gè)具有路由功能的節(jié)點(diǎn)都維護(hù)一張路由表,記錄本節(jié)點(diǎn)與其他節(jié)點(diǎn)已經(jīng)存在的路徑信息。AODVjr路由算法分組傳輸如圖1所示。
當(dāng)源節(jié)點(diǎn)C向目的節(jié)點(diǎn)L傳輸數(shù)據(jù)時(shí),如果C中存在到L的路由表項(xiàng),則根據(jù)該路由表項(xiàng)轉(zhuǎn)發(fā)數(shù)據(jù)分組。如果不存在則開啟路由發(fā)現(xiàn),發(fā)送RREQ分組搜索目的節(jié)點(diǎn)。當(dāng)開啟路由發(fā)現(xiàn)時(shí),C向周圍節(jié)點(diǎn)廣播RREQ分組,直到找到目的節(jié)點(diǎn)為止。目的節(jié)點(diǎn)收到RREQ分組后,選擇最先達(dá)到的RREQ分組進(jìn)行回復(fù)建立傳輸路徑,如圖1中的C-A-B-L路徑。此時(shí),算法存在以下問(wèn)題:(1)在發(fā)起RREQ尋址之前,若能利用鄰居表找到目的節(jié)點(diǎn),則可避免開啟路由發(fā)現(xiàn)過(guò)程,減少能量消耗,但AODVjr算法在尋址前沒有使用鄰居表;(2)AODVjr算法最短路徑的尋址思想使得網(wǎng)絡(luò)中的一些節(jié)點(diǎn),如A,B由于頻繁參與轉(zhuǎn)發(fā)數(shù)據(jù)而使節(jié)點(diǎn)能量很快偏低,若繼續(xù)使用這些能量偏低節(jié)點(diǎn),容易造成其死亡進(jìn)而引起網(wǎng)絡(luò)能耗增大甚至網(wǎng)絡(luò)癱瘓問(wèn)題。本文為優(yōu)化AODVjr算法,解決以上影響AODVjr算法性能的2個(gè)主要問(wèn)題,提出改進(jìn)的FAODVjr路由算法。
圖1 AODVjr算法分組傳輸
由于鄰居表是每個(gè)ZigBee節(jié)點(diǎn)自動(dòng)維護(hù)的,不需要額外的能量消耗,因此在啟動(dòng)路由發(fā)現(xiàn)之前,如果能根據(jù)鄰居表尋址到目的節(jié)點(diǎn),將能降低網(wǎng)絡(luò)能量消耗。網(wǎng)絡(luò)初始化時(shí)每個(gè)節(jié)點(diǎn)都更新離自己一跳距離的鄰居節(jié)點(diǎn)信息,鄰居表存儲(chǔ)內(nèi)容如表1所示。
路由節(jié)點(diǎn)在啟動(dòng)路由發(fā)現(xiàn)過(guò)程前,執(zhí)行下列偽代碼,實(shí)現(xiàn)鄰居表搜索目的節(jié)點(diǎn)功能。
如果目的節(jié)點(diǎn)不在鄰居表傳輸范圍內(nèi),則開啟路由發(fā)現(xiàn),發(fā)送洪泛到目的節(jié)點(diǎn)的RREQ分組。RREQ分組只考慮路徑跳數(shù),雖然能找到最短路徑,但會(huì)使某些節(jié)點(diǎn)過(guò)度使用成為死亡節(jié)點(diǎn)。在網(wǎng)絡(luò)運(yùn)行后期,死亡節(jié)點(diǎn)無(wú)法再轉(zhuǎn)變?yōu)槟芰砍渥愎?jié)點(diǎn)參與路由轉(zhuǎn)發(fā),其他節(jié)點(diǎn)傳輸數(shù)據(jù)時(shí)必須繞過(guò)死亡節(jié)點(diǎn),能量消耗巨大。所以,為減少死亡節(jié)點(diǎn)數(shù)和降低網(wǎng)絡(luò)能量消耗,在路由發(fā)現(xiàn)時(shí),需解決以下問(wèn)題:(1)盡量避免低能量節(jié)點(diǎn)的使用,降低死亡節(jié)點(diǎn)率;(2)改進(jìn)原算法只將路徑跳數(shù)作為路徑代價(jià)進(jìn)行路徑選擇的思想,結(jié)合剩余能量、鏈路質(zhì)量綜合考慮路由成本,達(dá)到降低網(wǎng)絡(luò)開銷的目的。路由成本最少的路徑為最優(yōu)路徑,數(shù)據(jù)傳輸時(shí)路由代價(jià)較小。
4.2.1 節(jié)點(diǎn)死亡率
為降低節(jié)點(diǎn)死亡率,改進(jìn)算法根據(jù)剩余能量和能量閾值劃分節(jié)點(diǎn)等級(jí),使網(wǎng)絡(luò)在運(yùn)行時(shí)能夠判斷哪些節(jié)點(diǎn)為能量不足節(jié)點(diǎn),從而在路由時(shí)盡量避開這些節(jié)點(diǎn),由能量充足節(jié)點(diǎn)充當(dāng)主要路由角色,以此減少死亡節(jié)點(diǎn)數(shù),降低節(jié)點(diǎn)死亡率。
改進(jìn)算法設(shè)定一個(gè)動(dòng)態(tài)更新的能量閾值Ex(n),當(dāng)剩余能量大于Ex(n)時(shí)為能量充足節(jié)點(diǎn);當(dāng)剩余能量小于Ex(n)時(shí)為能量偏低節(jié)點(diǎn)。能量充足節(jié)點(diǎn)可以用于數(shù)據(jù)傳輸,而能量偏低節(jié)點(diǎn)只轉(zhuǎn)發(fā)目的節(jié)點(diǎn)在一跳范圍內(nèi)的數(shù)據(jù)分組或者接收目的節(jié)點(diǎn)為自身的數(shù)據(jù)分組,在路由過(guò)程中盡量避免使用低能量節(jié)點(diǎn)。Ex(n)可按式(4)計(jì)算:
其中,當(dāng)n=1時(shí),Ex(1)=ε,Ex(1)為網(wǎng)絡(luò)設(shè)定的初始能量閾值,ε為特定系數(shù),用來(lái)調(diào)整初始閾值的設(shè)定。Ex(n-1)表示更新之前的能量閾值,σ為一特定系數(shù),作用在于控制能量閾值的減小速度。Ntotal指總節(jié)點(diǎn)個(gè)數(shù),為常量,n為變量。為中心協(xié)調(diào)器設(shè)置2個(gè)內(nèi)部計(jì)數(shù)器C1,C2。如果一個(gè)節(jié)點(diǎn)的剩余能量值低于當(dāng)前Ex(n)值,則應(yīng)向協(xié)調(diào)器發(fā)送本節(jié)點(diǎn)能量偏低消息,協(xié)調(diào)器使計(jì)數(shù)器C1的計(jì)數(shù)值加1。根據(jù)計(jì)數(shù)器C1的計(jì)數(shù)值,中心協(xié)調(diào)器可以算出能量偏低節(jié)點(diǎn)與網(wǎng)絡(luò)總節(jié)點(diǎn)的個(gè)數(shù)比值q。設(shè)定一個(gè)閾值Etreshold(0<Etreshold<1),當(dāng) q>Etreshold時(shí),協(xié)調(diào)器使C2計(jì)數(shù)值加1,n值即為C2的計(jì)數(shù)值。這樣n值加1發(fā)生改變,使得 Ex(n)值完成一次更新。更新完Ex(n)值,C1置0,C2不變。由式(4)可得Ex(n)值為:
由Ex(n)計(jì)算方法可知,在網(wǎng)絡(luò)運(yùn)行初期,能量閾值Ex(n)遞減緩慢,而當(dāng)n增大,Ex(n)值的遞減幅度越來(lái)越小。在網(wǎng)絡(luò)運(yùn)行后期,節(jié)點(diǎn)能量普遍不足,F(xiàn)AODVjr算法能量閾值遞減幅度變慢可以使大部分節(jié)點(diǎn)都能作為能量充足節(jié)點(diǎn)參與路由轉(zhuǎn)發(fā),避免因參與路由節(jié)點(diǎn)過(guò)少而引發(fā)的網(wǎng)絡(luò)擁塞現(xiàn)象,減少因網(wǎng)絡(luò)擁塞造成能量的浪費(fèi)。
4.2.2 路由成本
避開低能量節(jié)點(diǎn)使用后的AODVjr算法還需進(jìn)一步優(yōu)化。不同的RREQ分組達(dá)到目的節(jié)點(diǎn)后,使網(wǎng)絡(luò)中存在多條可傳輸路徑。本文從這些路徑中,選擇路由成本最低的路徑為最優(yōu)傳輸路徑,路由成本越低,數(shù)據(jù)傳輸時(shí)路由代價(jià)越小。路由成本根據(jù)式(5)確定,式(5)綜合考慮了跳數(shù)、剩余能量和鏈路質(zhì)量對(duì)路由成本的影響。
F-AODVjr路由算法更全面地考慮了影響路由性能的因素。在網(wǎng)絡(luò)運(yùn)行初期,節(jié)點(diǎn)性能相同,F(xiàn)AODVjr路由算法優(yōu)勢(shì)不明顯。網(wǎng)絡(luò)運(yùn)行一段時(shí)間后,節(jié)點(diǎn)剩余能量、鏈路質(zhì)量發(fā)生變化,改進(jìn)算法可以選擇一條路由成本最低的路徑,并使數(shù)據(jù)有更高的發(fā)送成功率,從而降低網(wǎng)絡(luò)能量消耗。
路由發(fā)現(xiàn)過(guò)程如圖2所示。
圖2 路由發(fā)現(xiàn)過(guò)程
算法流程具體如下:
(1)在網(wǎng)絡(luò)初始化時(shí),中心協(xié)調(diào)器為每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)分配唯一的網(wǎng)絡(luò)地址,每個(gè)節(jié)點(diǎn)初始化自己的鄰居表,中心協(xié)調(diào)器廣播Ex(1)值。中心協(xié)調(diào)器根據(jù)式(4)計(jì)算能量閾值,每當(dāng)能量閾值發(fā)生變化,中心協(xié)調(diào)器便向各節(jié)點(diǎn)重新廣播能量閾值。
(2)源節(jié)點(diǎn)查看鄰居表(包括父節(jié)點(diǎn)和子節(jié)點(diǎn)),若目的節(jié)點(diǎn)在鄰居表中,則直接發(fā)送給目的節(jié)點(diǎn);否則轉(zhuǎn)步驟(3)。
(3)查看目的節(jié)點(diǎn)與源節(jié)點(diǎn)的鄰居表(包括父節(jié)點(diǎn)與子節(jié)點(diǎn)),若存在相同節(jié)點(diǎn),則將數(shù)據(jù)分組轉(zhuǎn)發(fā)給此相同節(jié)點(diǎn),否則轉(zhuǎn)步驟(4)。
(4)此時(shí),目的節(jié)點(diǎn)必在離源節(jié)點(diǎn)兩跳之外。由于RFD節(jié)點(diǎn)不具有路由功能,因此如果源節(jié)點(diǎn)為FFD節(jié)點(diǎn)則直接開啟一個(gè)路由發(fā)現(xiàn)過(guò)程,若不是,則交由父節(jié)點(diǎn)開啟路由發(fā)現(xiàn)過(guò)程,當(dāng)一個(gè)RFD節(jié)點(diǎn)收到RREQ分組時(shí)就立即丟棄。如果目的節(jié)點(diǎn)為RFD節(jié)點(diǎn),則由其父節(jié)點(diǎn)轉(zhuǎn)交。路由發(fā)現(xiàn)過(guò)程按以下步驟執(zhí)行:1)RREQ分組達(dá)到一個(gè)節(jié)點(diǎn),該節(jié)點(diǎn)若不是FFD節(jié)點(diǎn)則丟棄RREQ分組,如果是FFD節(jié)點(diǎn)則轉(zhuǎn)步驟2)。2)判斷自己是否為目的節(jié)點(diǎn)或者為RFD節(jié)點(diǎn)的父節(jié)點(diǎn),如果是則回復(fù)路由應(yīng)答(Route Reply,RREP)分組建立路由路徑,否則轉(zhuǎn)步驟3)。3)查看自己的剩余能量,根據(jù)能量閾值判斷是否是低能量節(jié)點(diǎn),若是則丟棄RREQ分組,并向中心協(xié)調(diào)器發(fā)送能量偏低信息,使計(jì)數(shù)器C1加1,若不是低能量節(jié)點(diǎn)轉(zhuǎn)步驟4)。4)查看自己是否已存在到源節(jié)點(diǎn)的路由表項(xiàng),如果存在則轉(zhuǎn)步驟5),如果不存在則轉(zhuǎn)步驟6)。5)比較路由表和RREQ分組中的路由成本TC。路由成本越小,表明傳輸數(shù)據(jù)付出的代價(jià)越小。如果RREQ分組中的路由成本高于路由表中的路由成本,則丟棄RREQ分組。否則根據(jù)式(5)計(jì)算并更新兩者的路由成本,繼續(xù)廣播RREQ分組。6)建立到源節(jié)點(diǎn)的路由表項(xiàng),并繼續(xù)廣播RREQ分組。
(5)中心協(xié)調(diào)器設(shè)置目的節(jié)點(diǎn)等待RREQ分組到達(dá)的時(shí)間常數(shù)T[12],超過(guò)設(shè)置的時(shí)間則停止等待。目的節(jié)點(diǎn)收到RREQ分組后選擇路由成本最低的路徑建立路由路徑,回復(fù)RREP。
改進(jìn)算法針對(duì)節(jié)點(diǎn)的能量狀況,根據(jù)式(4)不斷動(dòng)態(tài)更新能量閾值,使得不同狀態(tài)節(jié)點(diǎn)對(duì)RREQ分組采取不同的處理方式,從而保護(hù)低能量節(jié)點(diǎn)。更重要的是,能量閾值的更新速度變慢,使得低能量節(jié)點(diǎn)在網(wǎng)絡(luò)運(yùn)行后期轉(zhuǎn)為能量充足節(jié)點(diǎn)重新參與路由,防止了網(wǎng)絡(luò)擁塞現(xiàn)象。在路由發(fā)現(xiàn)階段,路由成本公式計(jì)算簡(jiǎn)單,由各節(jié)點(diǎn)獨(dú)立計(jì)算完成。在搜索鄰居表時(shí),假設(shè)鄰居節(jié)點(diǎn)個(gè)數(shù)為n,算法遍歷每個(gè)鄰居節(jié)點(diǎn),此時(shí),算法時(shí)間復(fù)雜度為O(n),算法在多項(xiàng)式時(shí)間內(nèi)完成。
為評(píng)估改進(jìn)算法的性能,在NS2仿真軟件中對(duì)原AODVjr算法、改進(jìn)的F-AODVjr算法和文獻(xiàn)[6]中的改進(jìn)的AODVjr算法進(jìn)行仿真。通過(guò)網(wǎng)絡(luò)的能量消耗、節(jié)點(diǎn)生存率和平均分組成功投遞率進(jìn)行對(duì)比分析。仿真實(shí)驗(yàn)的網(wǎng)絡(luò)范圍為300×300,通信半徑為15 m,節(jié)點(diǎn)初始能量為10 J,數(shù)據(jù)流類型為CBR,數(shù)據(jù)流大小為80 Byte,仿真時(shí)間為80 s,數(shù)據(jù)分組的源節(jié)點(diǎn)和目標(biāo)節(jié)點(diǎn)隨機(jī)選擇。
表2為3種算法的數(shù)據(jù)分組成功投遞率仿真對(duì)比,數(shù)據(jù)分組成功投遞率指的是目的節(jié)點(diǎn)正確接收到的數(shù)據(jù)分組個(gè)數(shù)與源節(jié)點(diǎn)發(fā)送的全部數(shù)據(jù)分組個(gè)數(shù)的比值。用Ps表示源節(jié)點(diǎn)發(fā)送的分組數(shù)目,Pr表示成功接收到的分組數(shù)目,數(shù)據(jù)分組成功投遞率為:
由表2可知,當(dāng)設(shè)置網(wǎng)絡(luò)節(jié)點(diǎn)個(gè)數(shù)為50時(shí),3種算法都具有較高的成功投遞率,都在95%以上。隨著節(jié)點(diǎn)個(gè)數(shù)增多,網(wǎng)絡(luò)變得復(fù)雜,數(shù)據(jù)在傳輸時(shí)發(fā)生碰撞幾率增大,所以,3種算法的數(shù)據(jù)分組成功投遞率都有所下降。節(jié)點(diǎn)在傳輸數(shù)據(jù)時(shí),如果目的節(jié)點(diǎn)死亡,數(shù)據(jù)分組將永遠(yuǎn)不可達(dá),而中間節(jié)點(diǎn)的死亡,會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞,阻礙分組投遞。F-AODVjr和改進(jìn)的AODVjr算法盡量避開了能量不足節(jié)點(diǎn)的使用,所以,數(shù)據(jù)分組成功投遞率大于AODVjr。在此基礎(chǔ)上,F(xiàn)-AODVjr在數(shù)據(jù)分組傳輸時(shí)還考慮了節(jié)點(diǎn)的鏈路質(zhì)量,使節(jié)點(diǎn)具有更高的成功投遞率。
表2 數(shù)據(jù)分組成功投遞率 %
3種算法的剩余能量百分比如圖3所示。
圖3 剩余能量百分比
在網(wǎng)絡(luò)初始運(yùn)行時(shí),網(wǎng)絡(luò)節(jié)點(diǎn)的剩余能量、鏈路質(zhì)量相同,3個(gè)算法的剩余能量百分比相差不大。隨著網(wǎng)絡(luò)運(yùn)行,開始出現(xiàn)能量偏低節(jié)點(diǎn)。AODVjr算法繼續(xù)使用能量偏低節(jié)點(diǎn)造成其死亡,在網(wǎng)絡(luò)運(yùn)行后期,當(dāng)大部分節(jié)點(diǎn)能量偏低時(shí),低能量節(jié)點(diǎn)變?yōu)槟芰砍渥愎?jié)點(diǎn)繼續(xù)用以傳輸數(shù)據(jù)。而AODVjr算法由于死亡節(jié)點(diǎn)無(wú)法再變成充足節(jié)點(diǎn)繼續(xù)使用,其他節(jié)點(diǎn)在傳輸數(shù)據(jù)時(shí)都要繞過(guò)這些死亡節(jié)點(diǎn),大量消耗網(wǎng)絡(luò)能量,其剩余能量百分比降低幅度增大,而改進(jìn)的AODVjr算法與F-AODVjr算法卻避免了這一現(xiàn)象的產(chǎn)生,遞減幅度小于 AODVjr算法。雖然改進(jìn)的AODVjr算法能量不足節(jié)點(diǎn)不再用于數(shù)據(jù)傳輸,但仍參與路由發(fā)現(xiàn),所以,其能量消耗大于F-AODVjr算法。并且網(wǎng)絡(luò)運(yùn)行一段時(shí)間后,路徑剩余能量、鏈路質(zhì)量都發(fā)生變化,跳數(shù)最少的路徑并不一定最優(yōu),F(xiàn)AODVjr算法能找到一條路由成本最低的路徑,所以,F(xiàn)-AODVjr算法的剩余能量百分比始終高于AODVjr算法和改進(jìn)的AODVjr算法。
3種算法的節(jié)點(diǎn)生存率如圖4所示。
圖4 節(jié)點(diǎn)生存率
節(jié)點(diǎn)生存率為網(wǎng)絡(luò)可用節(jié)點(diǎn)率。如果一個(gè)節(jié)點(diǎn)的剩余能量低于初始能量的3%,則被看作是死亡節(jié)點(diǎn)。網(wǎng)絡(luò)運(yùn)行結(jié)束后,計(jì)算生存節(jié)點(diǎn)個(gè)數(shù)。節(jié)點(diǎn)生存率計(jì)算公式為:
其中,Nable是網(wǎng)絡(luò)運(yùn)行結(jié)束后生存節(jié)點(diǎn)個(gè)數(shù);Ntotal是網(wǎng)絡(luò)總節(jié)點(diǎn)個(gè)數(shù)。在網(wǎng)絡(luò)運(yùn)行初期,節(jié)點(diǎn)能量充足,節(jié)點(diǎn)生存率降低幅度不大。由于F-AODVjr算法盡量避免使用低能量節(jié)點(diǎn)參與路由,因此節(jié)點(diǎn)死亡數(shù)較少,節(jié)點(diǎn)生存率始終高于AODVjr算法和改進(jìn)的AODVjr算法。在網(wǎng)絡(luò)運(yùn)行后期,雖然三者的節(jié)點(diǎn)生存率下降幅度都有所增大,但F-AODVjr算法和改進(jìn)的AODVjr算法的網(wǎng)絡(luò)拓?fù)浞指瞵F(xiàn)象不嚴(yán)重,所以,節(jié)點(diǎn)生存率下降幅度都小于AODVjr算法。
本文針對(duì)AODVjr算法存在的問(wèn)題提出了一種改進(jìn)的F-AODVjr算法。改進(jìn)算法在進(jìn)行發(fā)現(xiàn)路由過(guò)程前,使用ZigBee節(jié)點(diǎn)自身維護(hù)的鄰居表尋找目的節(jié)點(diǎn),如果能通過(guò)鄰居表找到目的節(jié)點(diǎn),將大大降低網(wǎng)絡(luò)能量消耗。如果目的節(jié)點(diǎn)不在鄰居表傳輸范圍內(nèi),則進(jìn)行路由發(fā)現(xiàn)。在路由發(fā)現(xiàn)過(guò)程中,改進(jìn)算法能提高節(jié)點(diǎn)生存率、降低網(wǎng)絡(luò)能量消耗和增大數(shù)據(jù)分組成功投遞率。但改進(jìn)算法的不足之處是沒有考慮網(wǎng)絡(luò)節(jié)點(diǎn)的移動(dòng)情況,在路由過(guò)程中會(huì)因產(chǎn)生對(duì)尋址無(wú)效的RREQ分組而浪費(fèi)能量。所以,今后將進(jìn)一步探討如何減少路由過(guò)程中RREQ分組的洪泛并將其投入到實(shí)際應(yīng)用中。
[1]李文仲,段朝玉.ZigBee2006無(wú)線網(wǎng)絡(luò)與無(wú)線定位實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2008.
[2]Baronti P,Pillai P,Chook V W C,et al.Wireless Sensor Networks:A Survey on the State of the Art and the 802.15.4 and Zigbee Standards[J].Computer Communications,2007,30(7):1655-1695.
[3]蔣 挺,趙成林.ZigBee技術(shù)及其應(yīng)用[M].北京:北京郵電大學(xué)出版社,2006.
[4]陳 波.Zigbee路由算法分析及改進(jìn)[D].天津:南開大學(xué),2009.
[5]Chakeres I D,Berndt K.AODVjr,AODV Simplified[J].Mobile Computing and Communication Review,2002,6(3):100-101.
[6]王 芳,柴喬林,班艷麗.一種改進(jìn)的ZigBee Mesh網(wǎng)絡(luò)路由算法[J].計(jì)算機(jī)應(yīng)用,2008,28(11):2788-2794.
[7]李予東,黃宏光,向西西.基于能量均衡的Zigbee路由算法優(yōu)化[J].計(jì)算機(jī)工程與設(shè)計(jì),2011,32(2):397-400.
[8]Ran P,Sun M H,Zou Y M.ZigBee Routing Selection Strategy Based on Date Services and Energy Balanced Zigbee Routing[C]//Proceedings of 2006 IEEE Asia Pacific Conference on Services Computing.Washington D.C.,USA:IEEE Computer Society,2006:400-404.
[9]Ha J Y,Park H S,Choi S,et al.Enhanced Hierarchical Routing Protocol for ZigBee Mesh Networks[J].IEEE Communications Letters,2007,11(12):1028-1030.
[10]張 擎,劉淑美,柴喬林.能量高效的Zigbee網(wǎng)絡(luò)改進(jìn)路由策略[J].計(jì)算機(jī)工程,2010,36(7):108-111.
[11]Ashraf U,Abdellatif S,Juanole G.An Interference and Link-quality Aware Routing Metric for Wireless Mesh Network[C]//Proceedings of the 68th Vehicular Technology Conference.[S.l.]:IEEE Press,2008:1-5.
[12]謝 川.Zigbee中改進(jìn)的Cluster-Tree路由算法[J].計(jì)算機(jī)工程,2011,37(7):115-117.