龔本燦,周 峰,陳 鵬,任 東
1.三峽大學(xué) 計(jì)算機(jī)與信息學(xué)院,湖北 宜昌443002
2.三峽大學(xué) 湖北省農(nóng)田環(huán)境監(jiān)測(cè)工程技術(shù)研究中心,湖北 宜昌443002
無(wú)線傳感網(wǎng)WSN(Wireless Sensor Networks)廣泛應(yīng)用于環(huán)境監(jiān)測(cè)、軍事偵察、醫(yī)療監(jiān)護(hù)、空間探索、搶險(xiǎn)救災(zāi)等多種領(lǐng)域,具有重要的科研價(jià)值和廣闊的應(yīng)用前景。目前,WSN 的研究主要集中在MAC 層、網(wǎng)絡(luò)層和傳輸層,以及各層之間的跨層交互。網(wǎng)絡(luò)層負(fù)責(zé)將傳感器節(jié)點(diǎn)采集的數(shù)據(jù)逐跳轉(zhuǎn)發(fā)至Sink,其性能至關(guān)重要,是WSN 的研究熱點(diǎn)。資源的局限性給WSN 路由協(xié)議的設(shè)計(jì)帶來(lái)了巨大的挑戰(zhàn),和傳統(tǒng)路由協(xié)議相比,WSN路由協(xié)議更加關(guān)注能量的使用效率和數(shù)據(jù)傳輸?shù)目煽啃訹1]?;谧钚√鴶?shù)的路由協(xié)議實(shí)現(xiàn)簡(jiǎn)單,每次都采用從當(dāng)前節(jié)點(diǎn)到Sink 的最大距離進(jìn)行數(shù)據(jù)傳輸,網(wǎng)絡(luò)延遲少,因而得到了廣泛的應(yīng)用[2]。目前國(guó)內(nèi)外研究人員提出了許多基于跳數(shù)的路由協(xié)議及其改進(jìn)算法。
最早的基于跳數(shù)的多路徑路由協(xié)議[3]是在定向擴(kuò)散協(xié)議和洪泛協(xié)議的基礎(chǔ)上,引入了跳數(shù)的概念,以當(dāng)前節(jié)點(diǎn)到達(dá)Sink 的跳數(shù)作為路由的依據(jù),在一定程度上緩解了洪泛協(xié)議的內(nèi)爆和重疊問(wèn)題,極大地減少了數(shù)據(jù)包的傳輸量和網(wǎng)絡(luò)的能耗,因其新穎的設(shè)計(jì)思想而備受關(guān)注。文獻(xiàn)[4]提出了一種基于跳數(shù)的多路徑環(huán)路由協(xié)議(Multipath Ring Routing),其路由形成機(jī)制如下:網(wǎng)絡(luò)部署完畢后,Sink 廣播拓?fù)浒l(fā)現(xiàn)分組,分組中攜帶了從當(dāng)前節(jié)點(diǎn)到Sink 的跳數(shù)(初值為0),收到拓?fù)浒l(fā)現(xiàn)分組的節(jié)點(diǎn)將跳數(shù)加1,如果該分組的跳數(shù)比節(jié)點(diǎn)的當(dāng)前值更小,則更新節(jié)點(diǎn)的跳數(shù),并再次廣播,當(dāng)拓?fù)浒l(fā)現(xiàn)分組傳遍整個(gè)網(wǎng)絡(luò)時(shí),每個(gè)節(jié)點(diǎn)就都找到了自己到達(dá)Sink的最小跳數(shù)。數(shù)據(jù)傳輸時(shí),節(jié)點(diǎn)采用定向廣播的方式發(fā)送分組,分組中攜帶了節(jié)點(diǎn)的跳數(shù),所有鄰節(jié)點(diǎn)收到分組后,如果其跳數(shù)更小,則再次廣播,直到Sink。由于在數(shù)據(jù)傳輸過(guò)程中所有跳數(shù)更小的鄰節(jié)點(diǎn)都將轉(zhuǎn)發(fā)數(shù)據(jù),造成轉(zhuǎn)發(fā)節(jié)點(diǎn)的數(shù)量過(guò)多,加劇了網(wǎng)絡(luò)的能量消耗。文獻(xiàn)[5]提出了一種基于跳數(shù)梯度場(chǎng)的路由協(xié)議,源節(jié)點(diǎn)產(chǎn)生的消息中攜帶了梯度值及其鄰節(jié)點(diǎn)的最小剩余能量,鄰節(jié)點(diǎn)可根據(jù)這些信息判斷是否轉(zhuǎn)發(fā)該消息,從而控制了轉(zhuǎn)發(fā)節(jié)點(diǎn)的數(shù)量,有效避開(kāi)了剩余能量過(guò)低的節(jié)點(diǎn),該協(xié)議能延長(zhǎng)網(wǎng)絡(luò)的壽命,但消息的洪泛仍會(huì)造成過(guò)多的能耗。文獻(xiàn)[6]提出了一種具有可靠性感知能力的自適應(yīng)多徑路由協(xié)議,根據(jù)網(wǎng)絡(luò)的可靠性要求和路徑權(quán)重,適當(dāng)?shù)剡x取部分路徑進(jìn)行傳輸,以此來(lái)滿足預(yù)定的網(wǎng)絡(luò)可靠性,在網(wǎng)絡(luò)可靠性、網(wǎng)絡(luò)開(kāi)銷、傳輸時(shí)延等方面,該路由協(xié)議的性能都有明顯提升。但是Sink 需要獲取網(wǎng)絡(luò)中所有鏈路、路徑和傳感器的狀態(tài)信息,并由Sink 集中進(jìn)行路由決策,路由決策信息的收集和擴(kuò)散會(huì)帶來(lái)開(kāi)銷,不適合分布式網(wǎng)絡(luò)環(huán)境。
前述幾種基于跳數(shù)的路由協(xié)議由于采用多路徑傳輸,雖然提高了傳輸?shù)目煽啃裕珜?lái)較高的能耗,這對(duì)能量受限的傳感網(wǎng)來(lái)說(shuō)是一個(gè)較大的制約因素。為了節(jié)省能量,一個(gè)有效的方法是采用單路徑傳輸。文獻(xiàn)[7]提出了基于最小跳數(shù)的傳感網(wǎng)路由協(xié)議,在路由控制包中包含了節(jié)點(diǎn)ID、剩余能量和到Sink 的跳數(shù),節(jié)點(diǎn)根據(jù)這些信息來(lái)建立路由表,路由表中記錄了所有的父節(jié)點(diǎn)(比自己的跳數(shù)小1)、兄弟節(jié)點(diǎn)(與自己的跳數(shù)相等)、子節(jié)點(diǎn)(比自己的跳數(shù)大1)及這些節(jié)點(diǎn)的ID 和剩余能量,數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)節(jié)點(diǎn)優(yōu)先從其父節(jié)點(diǎn)中選擇一個(gè)剩余能量最大的節(jié)點(diǎn)轉(zhuǎn)發(fā)。協(xié)議提供了多條后備路徑,具有較強(qiáng)的健壯性,但沒(méi)有考慮與父節(jié)點(diǎn)間的通信距離,且缺乏保證數(shù)據(jù)傳輸可靠性的機(jī)制。文獻(xiàn)[8]對(duì)最小跳數(shù)路由算法的組網(wǎng)和數(shù)據(jù)傳播階段進(jìn)行了改進(jìn),節(jié)點(diǎn)主動(dòng)發(fā)送Join報(bào)文來(lái)加入網(wǎng)絡(luò),解決了節(jié)點(diǎn)實(shí)時(shí)加入網(wǎng)絡(luò)的問(wèn)題,為了節(jié)省能量,節(jié)點(diǎn)每次只選擇一個(gè)父節(jié)點(diǎn)轉(zhuǎn)發(fā)報(bào)文,父節(jié)點(diǎn)對(duì)每個(gè)收到的報(bào)文都進(jìn)行確認(rèn),但協(xié)議沒(méi)有考慮通信鏈路的質(zhì)量,可能引發(fā)多次重傳,增加網(wǎng)絡(luò)的能耗。文獻(xiàn)[9]提出了一種高效的基于跳數(shù)的移動(dòng)Ad Hoc 網(wǎng)絡(luò)路由查找算法,它是一種在傳輸功率和跳數(shù)之間進(jìn)行折衷的自適應(yīng)路由協(xié)議,它假定網(wǎng)絡(luò)節(jié)點(diǎn)都具有不同的發(fā)射功率,當(dāng)節(jié)點(diǎn)收到源節(jié)點(diǎn)廣播的路徑查找消息時(shí),該節(jié)點(diǎn)將其功率與預(yù)設(shè)的閾值功率進(jìn)行比較,如果大于閾值功率,則選擇跳數(shù)最少的路徑,否則,選擇跳數(shù)更大的路徑。所提出的協(xié)議能夠減少能量消耗和端到端的延遲,但該協(xié)議假定節(jié)點(diǎn)都具有不同的發(fā)射功率,并且路由的建立是按需驅(qū)動(dòng)的,不適合需要周期性采集傳感數(shù)據(jù)的場(chǎng)合。文獻(xiàn)[10]從理論上分析了在無(wú)線多跳網(wǎng)絡(luò)中跳數(shù)對(duì)網(wǎng)絡(luò)穩(wěn)定性和路徑可靠性的影響。
基于跳數(shù)的單路徑路由協(xié)議雖然比多路徑路由協(xié)議節(jié)省了能量,但由于節(jié)點(diǎn)總是選擇跳數(shù)最少的路徑傳輸數(shù)據(jù),造成節(jié)點(diǎn)傳輸?shù)木嚯x遠(yuǎn),網(wǎng)絡(luò)的丟包率很高。研究表明在路由建立的過(guò)程中如果考慮節(jié)點(diǎn)間的鏈路質(zhì)量,將能有效地提高網(wǎng)絡(luò)的包投遞率。文獻(xiàn)[11]提出了一種改進(jìn)的基于跳數(shù)的無(wú)線傳感器網(wǎng)絡(luò)路由算法(R-MHC),對(duì)最小跳數(shù)路由算法的組網(wǎng)和數(shù)據(jù)傳播階段進(jìn)行了改進(jìn)。源節(jié)點(diǎn)優(yōu)先選取跳數(shù)最小的父節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn),如果多個(gè)鄰節(jié)點(diǎn)跳數(shù)相同,則綜合考慮鄰節(jié)點(diǎn)的剩余能量、鏈路狀態(tài)和接收信號(hào)強(qiáng)度,并通過(guò)權(quán)值公式選取權(quán)值最大的父節(jié)點(diǎn)作為最優(yōu)轉(zhuǎn)發(fā)節(jié)點(diǎn),改進(jìn)后的算法在可靠性、負(fù)載均衡、網(wǎng)絡(luò)壽命和路由開(kāi)銷等方面具有一定的優(yōu)勢(shì)。但算法優(yōu)先選取跳數(shù)最小的父節(jié)點(diǎn)作為轉(zhuǎn)發(fā)節(jié)點(diǎn),如果當(dāng)前節(jié)點(diǎn)與父節(jié)點(diǎn)之間的鏈路質(zhì)量較差,則仍會(huì)帶來(lái)較高的丟包率。文獻(xiàn)[12]提出了一種具有鏈路質(zhì)量感知能力的基于隊(duì)列的路由協(xié)議(LRP),在稀疏和密集部署的傳感器網(wǎng)絡(luò)中,LRP 能夠避免路徑環(huán)路和分組丟失,提高了數(shù)據(jù)的傳遞率,但是缺乏對(duì)數(shù)據(jù)延遲的控制,不適用于實(shí)時(shí)性網(wǎng)絡(luò)。文獻(xiàn)[13]提出了一種鏈路質(zhì)量和能量感知的路由協(xié)議(LQEAR),它根據(jù)鏈路質(zhì)量、節(jié)點(diǎn)的剩余能量、轉(zhuǎn)發(fā)節(jié)點(diǎn)與Sink 之間的距離來(lái)選擇下一跳節(jié)點(diǎn),LQEAR 能夠提供更高的傳輸可靠性,并能有效地平衡節(jié)點(diǎn)的能量消耗,該協(xié)議要求每個(gè)節(jié)點(diǎn)能夠準(zhǔn)確獲得自己的位置信息以便計(jì)算節(jié)點(diǎn)間的距離,它只適合于節(jié)點(diǎn)具備定位功能的傳感網(wǎng)場(chǎng)合。文獻(xiàn)[14]提出了一種應(yīng)用鏈路質(zhì)量和節(jié)點(diǎn)的能量狀態(tài)進(jìn)行路由發(fā)現(xiàn)的LE-AODV 路由協(xié)議,有效地提高了包投遞率和網(wǎng)絡(luò)的生存時(shí)間,但該協(xié)議是針對(duì)移動(dòng)自組網(wǎng)設(shè)計(jì)的,不太適合以數(shù)據(jù)為中心的傳感網(wǎng)。文獻(xiàn)[15]提出了一種基于壓力傳感器的可靠路由協(xié)議(PSBR),它依靠鏈路質(zhì)量估計(jì)器、節(jié)點(diǎn)深度及節(jié)點(diǎn)的剩余能量來(lái)選擇數(shù)據(jù)轉(zhuǎn)發(fā)節(jié)點(diǎn),達(dá)到了很高的數(shù)據(jù)傳輸效率。文獻(xiàn)[16]針對(duì)水聲傳感器網(wǎng)絡(luò)提出了一種可靠、節(jié)能的路由協(xié)議(RRP),它融合了基于方向的洪泛路由和基于矢量的避障協(xié)議的特點(diǎn),通過(guò)逐跳測(cè)量節(jié)點(diǎn)之間的鏈路質(zhì)量來(lái)控制轉(zhuǎn)發(fā)數(shù)據(jù)包的節(jié)點(diǎn)數(shù)量以提高可靠性,PSBR 和RRP 協(xié)議僅適合于水聲傳感網(wǎng)。文獻(xiàn)[17]提出了一種基于鏈路質(zhì)量的能量高效的分布式路由協(xié)議(EEDR),它具有較小的跳數(shù)、較低的時(shí)延和較高的吞吐量,但它僅考慮了與鄰節(jié)點(diǎn)的鏈路質(zhì)量,不能保證整條路徑所有鏈路的綜合質(zhì)量最優(yōu)。
以上路由協(xié)議在一定程度上提高了網(wǎng)絡(luò)分組的投遞率,減少了網(wǎng)絡(luò)的能耗,但這些方法都只基于本節(jié)點(diǎn)及鄰節(jié)點(diǎn)的局部信息進(jìn)行路由決策,容易限入局部最優(yōu),為了解決這一問(wèn)題,本文提出了一種基于路徑質(zhì)量的無(wú)線傳感網(wǎng)路由協(xié)議,以路徑質(zhì)量(包括跳數(shù)、綜合鏈路質(zhì)量和節(jié)點(diǎn)能量)作為網(wǎng)絡(luò)路由選擇的標(biāo)準(zhǔn),各節(jié)點(diǎn)能夠根據(jù)路由發(fā)現(xiàn)分組中包含的路徑質(zhì)量信息選擇一條到達(dá)Sink 的最佳路徑,進(jìn)一步改進(jìn)網(wǎng)絡(luò)的性能,達(dá)到全局最優(yōu)。
定義1一個(gè)無(wú)線傳感網(wǎng)可表示為一個(gè)加權(quán)圖G=(V,E,W),其中,V 表示由傳感器節(jié)點(diǎn)組成的集合,V={v1,v2,…,vn},E 表示由通信鏈路組成的集合,E={e1,e2,…,en},W 是由節(jié)點(diǎn)之間的鏈路質(zhì)量組成的集合,W={w1,w2,…,wn}。
定義2鏈路質(zhì)量指示LQI(Link Quality Indicator),用于表示接收到的幀的質(zhì)量,其值可根據(jù)物理層所接收到的無(wú)線信號(hào)強(qiáng)度RSSI(Received Signal Strength Indi‐cator)計(jì)算出來(lái),計(jì)算公式如下:
定義3設(shè)p(s,d)表示從源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d 的路徑,其中,s,d ∈V,則綜合鏈路質(zhì)量GLQI(Global Link Quality Indicator)的定義如下:
LQI僅反映了兩個(gè)相鄰節(jié)點(diǎn)間的鏈路質(zhì)量信息,而GLQI 反映了從Sink 到當(dāng)前節(jié)點(diǎn)的所有鏈路的質(zhì)量信息,其值越大,則路徑的質(zhì)量越高。
定義4路徑包投遞率PPDR(Path Packet Delivery Rate)的定義如下:
其中,packet_loss(e)為路徑中每條鏈路的丟包率。
定義5假設(shè)網(wǎng)絡(luò)的節(jié)點(diǎn)數(shù)為n,節(jié)點(diǎn)i 所消耗的能量為E(i),Sink 收到的數(shù)據(jù)包的個(gè)數(shù)為N,則平均包能耗APEC(Average Packet Energy Consumption)的計(jì)算公式如下:
APEC 表示了Sink 每收到一個(gè)數(shù)據(jù)包所消耗的網(wǎng)絡(luò)能量。
本文采用的網(wǎng)絡(luò)模型如下:n個(gè)傳感器節(jié)點(diǎn)隨機(jī)分布在一個(gè)正方形區(qū)域內(nèi),周期性地收集周圍的環(huán)境信息上傳給Sink,并且具有如下性質(zhì):
(1)所有傳感器節(jié)點(diǎn)部署后不再移動(dòng),Sink唯一。
(2)所有節(jié)點(diǎn)沒(méi)有安裝GPS,不知道其具體位置。
(3)所有節(jié)點(diǎn)能夠根據(jù)接收到的無(wú)線信號(hào)強(qiáng)度計(jì)算出鏈路質(zhì)量LQI。
在無(wú)線通信中,發(fā)射功率的大小、通信距離的遠(yuǎn)近和外界噪聲干擾的強(qiáng)弱是影響丟包率的主要因素,接收方可以根據(jù)物理層所接收到的無(wú)線信號(hào)強(qiáng)度,按照公式(1)計(jì)算出當(dāng)前鏈路的質(zhì)量信息。當(dāng)發(fā)射功率和噪聲干擾相同時(shí),鏈路質(zhì)量間接反映了節(jié)點(diǎn)間的通信距離。
以圖1 為例說(shuō)明基于鏈路質(zhì)量的最小跳數(shù)路由算法存在的問(wèn)題,以及本文提出的基于路徑質(zhì)量的路由算法PQR 的設(shè)計(jì)思想。圖1 顯示了網(wǎng)絡(luò)節(jié)點(diǎn)的分布情況及每條鏈路的丟包率和LQI值。例如,從Sink 到節(jié)點(diǎn)1的丟包率為40%,鏈路質(zhì)量為7。
圖1 路徑選擇示意圖
在路由建立階段,Sink 節(jié)點(diǎn)廣播路由發(fā)現(xiàn)分組,路由發(fā)現(xiàn)分組分別沿路徑1(Sink→節(jié)點(diǎn)1→節(jié)點(diǎn)2→節(jié)點(diǎn)3→節(jié)點(diǎn)S)和路徑2(Sink→節(jié)點(diǎn)4→節(jié)點(diǎn)5→節(jié)點(diǎn)6→節(jié)點(diǎn)S)到達(dá)節(jié)點(diǎn)S。節(jié)點(diǎn)S 是選擇路徑1 還是路徑2 作為數(shù)據(jù)轉(zhuǎn)發(fā)路徑需要由路由算法來(lái)決定。
如果采用基于鏈路質(zhì)量的最小跳數(shù)路由算法,由于路徑1 和路徑2 的跳數(shù)相等,都是4 跳,因此,將根據(jù)鏈路質(zhì)量來(lái)選擇路徑。對(duì)于路徑1,節(jié)點(diǎn)S 到鄰節(jié)點(diǎn)3 的鏈路質(zhì)量為10。對(duì)于路徑2,節(jié)點(diǎn)S 到鄰節(jié)點(diǎn)6 的鏈路質(zhì)量為8。因?yàn)槁窂?的鏈路質(zhì)量高于路徑2,所以節(jié)點(diǎn)S 會(huì)選擇路徑1 來(lái)傳輸數(shù)據(jù)。但事實(shí)上,如果以包投遞率作為路徑優(yōu)劣的評(píng)價(jià)標(biāo)準(zhǔn),則路徑2 要優(yōu)于路徑1。具體計(jì)算如下:
根據(jù)公式(3),路徑1的包投遞率=(1-40%)×(1-10%)×(1-10%)×(1-10%)=43.74%。路徑2 的包投遞率=(1-30%)×(1-10%)×(1-10%)×(1-10%)=51.03%??梢?jiàn)路徑2 優(yōu)于路徑1。基于鏈路質(zhì)量的最小跳數(shù)路由算法只考慮了當(dāng)前節(jié)點(diǎn)到鄰節(jié)點(diǎn)的單段鏈路的質(zhì)量,而沒(méi)有考慮路徑上其他鏈路的質(zhì)量,所以選出的路徑不一定是最優(yōu)的。
如果采用本文提出的基于路徑質(zhì)量的路由算法,在跳數(shù)相等的情況下,節(jié)點(diǎn)S 將根據(jù)公式(2)計(jì)算出的綜合鏈路質(zhì)量GLQI來(lái)選擇路徑。路徑1的綜合鏈路質(zhì)量為7,路徑2 的綜合鏈路質(zhì)量為8。因?yàn)槁窂? 的綜合鏈路質(zhì)量高于路徑1,因此,節(jié)點(diǎn)S 會(huì)選擇路徑2 來(lái)傳輸數(shù)據(jù)。
從以上分析可以看出:基于鏈路質(zhì)量的路由算法缺乏全局意識(shí),而基于路徑質(zhì)量的路由算法全面考慮了從Sink 到當(dāng)前節(jié)點(diǎn)的所有鏈路的質(zhì)量信息,因此,能夠篩選出全局最優(yōu)的路徑,能更有效地提高網(wǎng)絡(luò)的包投遞率。
為了獲取當(dāng)前節(jié)點(diǎn)到Sink 的路徑質(zhì)量信息,并控制數(shù)據(jù)分組的傳輸,需要定義如表1 和表2 所示的網(wǎng)絡(luò)分組格式。
表1 路由發(fā)現(xiàn)分組的格式
表2 網(wǎng)絡(luò)數(shù)據(jù)分組的格式
PQR分路由建立和數(shù)據(jù)傳輸兩個(gè)階段,PQR的路由建立過(guò)程如圖2所示。
圖2 PQR的路由建立過(guò)程
網(wǎng)絡(luò)啟動(dòng)后,Sink 廣播路由發(fā)現(xiàn)分組,對(duì)于收到路由發(fā)現(xiàn)分組的每一個(gè)節(jié)點(diǎn),取出包首部的Hops、GLQI、Energy、SenderID、SinkID 等參數(shù),將Hops 加1 得到新的跳數(shù)newHops;根據(jù)接收信號(hào)強(qiáng)度按公式(1)計(jì)算出鏈路質(zhì)量LQI,并按公式(2)計(jì)算出新的綜合鏈路質(zhì)量newGLQI;然后將newHops、newGLQI 和Energy 與節(jié)點(diǎn)當(dāng)前保存的currentHops 和currentGLQI 和currentEnergy進(jìn)行比較,如果其值更優(yōu),則更新路徑質(zhì)量信息,并將SenderID 記錄為父節(jié)點(diǎn),表示該節(jié)點(diǎn)已加入網(wǎng)絡(luò);最后根據(jù)新的路徑質(zhì)量信息修改分組的首部,并重新廣播路由發(fā)現(xiàn)分組。
新的路徑質(zhì)量是否優(yōu)于節(jié)點(diǎn)的當(dāng)前值的判斷原則是:鄰節(jié)點(diǎn)的剩余能量要高于門(mén)檻值(初始能量的30%),并且跳數(shù)和綜合鏈路質(zhì)量滿足以下規(guī)則之一:
規(guī)則1(isConnected=false)&&(LQI >=ThresholdLQI)
規(guī)則2(currentHops >newHops)&&(newGLQI >=currentGLQI||newGLQI >=GoodLQI)
規(guī)則3(currentHops=newHops)&&(newGLQI >currentGLQI)
規(guī)則4(currentHops=newHops-1)&&(currentGLQI <GoodLQI)(newGLQIcurrentGLQI >=GoodLQI-ThresholdLQI)
其中,ThresholdLQI 和GoodLQI 是兩個(gè)實(shí)驗(yàn)參數(shù),前者是鏈路質(zhì)量的門(mén)檻值,用于淘汰質(zhì)量太差的鏈路,后者是丟包率低于10%時(shí)的鏈路質(zhì)量值,表示鏈路質(zhì)量很好。
規(guī)則1 表示:如果節(jié)點(diǎn)尚未加入網(wǎng)絡(luò),且鏈路質(zhì)量不是太差,則加入網(wǎng)絡(luò)。
規(guī)則2 表示:新的路徑跳數(shù)更少,且綜合鏈路質(zhì)量更優(yōu)或很好。
規(guī)則3 表示:新的路徑和當(dāng)前路徑跳數(shù)相等,且綜合鏈路質(zhì)量更優(yōu)。
規(guī)則4 表示:新的路徑比當(dāng)前路徑跳數(shù)更大,但當(dāng)前路徑的綜合鏈路質(zhì)量不高,且新路徑的綜合鏈路質(zhì)量遠(yuǎn)優(yōu)于當(dāng)前路徑的值。
路由建立階段結(jié)束后,網(wǎng)絡(luò)進(jìn)入數(shù)據(jù)傳輸階段,此時(shí)如果網(wǎng)絡(luò)層收到應(yīng)用層傳來(lái)的傳感器節(jié)點(diǎn)采集的數(shù)據(jù),則將數(shù)據(jù)加入發(fā)送緩沖隊(duì)列中,等待發(fā)送。如果網(wǎng)絡(luò)層收到MAC 層傳來(lái)的數(shù)據(jù)分組,則先判斷自己是否為該分組的接收方,如果是,則接收。再進(jìn)一步判斷,如果自己是Sink,則表明數(shù)據(jù)已到達(dá)目的地,將數(shù)據(jù)上交應(yīng)用層處理,否則,將轉(zhuǎn)發(fā)該分組。PQR 數(shù)據(jù)傳輸?shù)膫未a如下:
FOR each node DO
IF 收到傳感器采集的數(shù)據(jù)THEN
SeqNum++//包序號(hào)加1
將數(shù)據(jù)封裝成分組,并加入發(fā)送緩沖隊(duì)列TXBuffer
ENDIF
IF MAC層收到數(shù)據(jù)分組THEN
取出包中的下一跳地址NextHop
IF(NextHop=self)THEN//self 表示自己的地址
IF(self=sin kID)THEN
將分組上交應(yīng)用層
ELSE//轉(zhuǎn)發(fā)分組
修改分組首部的信息(SenderID、NextHop)
將分組加入發(fā)送緩沖隊(duì)列
ENDIF
ENDIF
ENDIF
IF isConnected THEN//節(jié)點(diǎn)已加入網(wǎng)絡(luò)
WHILE(!TXBuffer.empty())DO//發(fā)送緩沖隊(duì)列非空
讀取發(fā)送緩沖隊(duì)列的首元素,并發(fā)送
TXBuffer.pop()//刪除發(fā)送緩沖隊(duì)列的首元素
ENDWHILE
ENDIF
ENDFOR
仿真實(shí)驗(yàn)采用的操作系統(tǒng)為Ubuntu 14.04,網(wǎng)絡(luò)仿真軟件為OMNET++4.6[18]。將本文提出的基于路徑質(zhì)量的路由協(xié)議PQR和基于鏈路質(zhì)量的路由協(xié)議EEDR[17]進(jìn)行了對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)參數(shù)如表3 所示。區(qū)域面積從100 m×100 m 到300 m×300 m,每次增加20 m,共11 種區(qū)域。對(duì)每一區(qū)域面積重復(fù)實(shí)驗(yàn)10 次,取平均值,每次實(shí)驗(yàn)采用不同的隨機(jī)數(shù)種子來(lái)生成節(jié)點(diǎn)的隨機(jī)分布圖。
當(dāng)區(qū)域面積為180 m×180 m 時(shí),隨機(jī)生成的網(wǎng)絡(luò)節(jié)點(diǎn)分布圖如圖3 所示,PQR 所生成的網(wǎng)絡(luò)結(jié)構(gòu)圖如圖4所示??梢钥闯鼍W(wǎng)絡(luò)結(jié)構(gòu)圖較為合理,絕大多數(shù)節(jié)點(diǎn)都找到了到達(dá)基站的跳數(shù)較少且鏈路質(zhì)量較高的最優(yōu)路徑,但也有個(gè)別節(jié)點(diǎn)的路徑不是最優(yōu),原因在于:在路由建立階段,基站廣播路由發(fā)現(xiàn)分組時(shí)存在丟包現(xiàn)象,如果從最優(yōu)路徑傳來(lái)的路由發(fā)現(xiàn)分組丟失,則節(jié)點(diǎn)將選擇次優(yōu)路徑進(jìn)行數(shù)據(jù)傳輸。
表3 仿真實(shí)驗(yàn)參數(shù)
圖3 隨機(jī)生成的網(wǎng)絡(luò)節(jié)點(diǎn)分布圖
圖4 PQR所生成的網(wǎng)絡(luò)結(jié)構(gòu)圖
網(wǎng)絡(luò)的包投遞率對(duì)比圖如圖5 所示??梢钥闯觯簩?duì)于不同的區(qū)域面積,PQR 的包投遞率都高于EEDR,當(dāng)區(qū)域面積小于等于220 m×220 m 時(shí),PQR 的包投遞率高于80%,隨著網(wǎng)絡(luò)區(qū)域面積的繼續(xù)增大,兩種協(xié)議的包投遞率都迅速下降。包投遞率下降的原因在于:當(dāng)區(qū)域面積增大時(shí),節(jié)點(diǎn)間的距離也相應(yīng)增加,造成丟包率增加。另外,當(dāng)區(qū)域面積等于100 m×100 m 時(shí),網(wǎng)絡(luò)的包投遞率并非取得最大值,因?yàn)楫?dāng)區(qū)域面積太小時(shí),節(jié)點(diǎn)間相距較近,通信干擾較大,所以造成網(wǎng)絡(luò)容易丟包。總體來(lái)看,PQR比EEDR的平均包投遞率高9.3%。
圖5 網(wǎng)絡(luò)的包投遞率對(duì)比圖
根據(jù)公式(4)計(jì)算出網(wǎng)絡(luò)的平均包能耗,兩種協(xié)議的對(duì)比圖如圖6 所示??梢钥闯觯簩?duì)于不同的區(qū)域面積,PQR 的包能耗都低于EEDR,當(dāng)區(qū)域面積小于等于260 m×260 m 時(shí),兩種協(xié)議的包能耗都隨著區(qū)域面積的增加而增大,當(dāng)區(qū)域面積繼續(xù)增大時(shí),包能耗反而下降。因?yàn)楫?dāng)區(qū)域面積過(guò)大時(shí),節(jié)點(diǎn)的分布將非常稀疏,造成部分遠(yuǎn)離Sink 的節(jié)點(diǎn)無(wú)法接入到網(wǎng)絡(luò)中,這樣只有離Sink 較近的節(jié)點(diǎn)能夠接入網(wǎng)絡(luò),并發(fā)送數(shù)據(jù),而離Sink較近的節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)包,轉(zhuǎn)發(fā)次數(shù)少,因此,包能耗會(huì)下降??傮w來(lái)看,PQR比EEDR的平均包能耗低5.2%。
圖6 平均包能耗對(duì)比圖
本文提出了一種基于路徑質(zhì)量的無(wú)線傳感網(wǎng)路由協(xié)議,在路由發(fā)現(xiàn)過(guò)程中,節(jié)點(diǎn)能夠根據(jù)路由控制包中所攜帶的路徑質(zhì)量信息(包括跳數(shù)、綜合鏈路質(zhì)量和節(jié)點(diǎn)能量)選出一條質(zhì)量最好的路徑,從而提高了網(wǎng)絡(luò)的包投遞率,降低了網(wǎng)絡(luò)的能耗。仿真實(shí)驗(yàn)結(jié)果表明:PQR 比EEDR 的平均包投遞率高9.3%,比EEDR 的平均包能耗低5.2%。