一種快速可靠的無(wú)線(xiàn)傳感器網(wǎng)絡(luò )路由
引 言
無(wú)線(xiàn)傳感器網(wǎng)絡(luò )(wireless sensor networks,簡(jiǎn)稱(chēng)WSNs)是當前在國際上備受關(guān)注的涉及多學(xué)科高度交叉的熱點(diǎn)研究領(lǐng)域。它綜合了傳感器技術(shù)、嵌入式計算技術(shù)、現代網(wǎng)絡(luò )及無(wú)線(xiàn)通信技術(shù)等,能夠通過(guò)各類(lèi)集成化的微型傳感器協(xié)同工作,完成指定的任務(wù),并進(jìn)行自組織無(wú)線(xiàn)通信網(wǎng)絡(luò )以多跳中繼方式將所感知信息傳送到用戶(hù)終端。
WSNs一般運行在人們無(wú)法接近的惡劣甚至危險的遠程環(huán)境中,并且傳感器節點(diǎn)通常攜帶不能補充的有限能量。低能耗、低延遲、自動(dòng)修復路徑成了WSNs最根本的要求。目前所存在的WSNs路由協(xié)議大都不能同時(shí)滿(mǎn)足這樣的條件,或者需要依靠特殊硬件才能實(shí)現這些功能,本文提出了一種快速可靠的低能耗路由(a fast andreliable protocol,簡(jiǎn)稱(chēng)為FRP),不僅可以滿(mǎn)足上面的基本要求,還可以工作于任務(wù)查詢(xún)方式及事件驅動(dòng)方式,并具有較強的路徑修復能力。
FRP主要分為3個(gè)部分。首先是構建路由樹(shù)結構,SINK點(diǎn)以洪泛方式向傳感器網(wǎng)絡(luò )傳播路由樹(shù)組建消息,使得網(wǎng)絡(luò )中的每個(gè)節點(diǎn)都擁有自己的級別值和父節點(diǎn),然后SINK點(diǎn)將所要查詢(xún)的任務(wù)通過(guò)路由樹(shù)發(fā)布出去;最后源節點(diǎn)將選擇最短路徑將數據反饋給SINK點(diǎn)。FRP主要能夠實(shí)現以下幾種功能:任務(wù)查詢(xún)、事件驅動(dòng)以及路徑自我修復。而這些僅依靠普通的射頻芯片即可實(shí)現,以下將做詳細介紹。
1 FRP路由的建立與運行
1.1 路由樹(shù)的建立
在無(wú)線(xiàn)傳感器網(wǎng)絡(luò )里,由于受到射頻芯片通信距離的限制,單個(gè)節點(diǎn)無(wú)法了解網(wǎng)絡(luò )中全部節點(diǎn),只能知道其鄰節點(diǎn)的一些信息。因此第一步需要建立路由樹(shù)結構,讓節點(diǎn)了解其所處的級別及父節點(diǎn)。SINK點(diǎn)首先通過(guò)洪泛方式向網(wǎng)絡(luò )傳播路由樹(shù)組建消息。組建消息由組建標志位、發(fā)送節點(diǎn)ID、發(fā)送節點(diǎn)級值組成。收到該組建消息的節點(diǎn)將發(fā)送節點(diǎn)ID記錄為父節點(diǎn),然后將級值加1,并以自身ID和級值更新消息后繼續向鄰節點(diǎn)傳播,直到網(wǎng)絡(luò )中所有節點(diǎn)都擁有自己父節點(diǎn)和級值。由于洪泛傳輸中可能會(huì )導致已經(jīng)發(fā)出消息的節點(diǎn)再次收到鄰節點(diǎn)將級值加1后重新發(fā)送來(lái)的消息,從而導致消息循環(huán)。為了解決該問(wèn)題,文中制定如下規則:當一個(gè)節點(diǎn)從鄰節點(diǎn)處收到組建消息時(shí),首先檢查消息中級值是否低于自身級值,如果是,則以該級值更新,并向鄰節點(diǎn)發(fā)送新的組建消息;否則將不予處理。在組建消息傳播過(guò)程中,節點(diǎn)選擇最早發(fā)送其消息,級值更低的節點(diǎn)作為父節點(diǎn)。圖1所示為路由樹(shù)的初始化過(guò)程。

1.2 任務(wù)查詢(xún)機制
當SINK點(diǎn)進(jìn)行任務(wù)查詢(xún)時(shí),首先以洪泛方式向整個(gè)網(wǎng)絡(luò )發(fā)布任務(wù)查詢(xún)命令,該命令主要由任務(wù)查詢(xún)標志位、任務(wù)發(fā)送節點(diǎn)ID、任務(wù)發(fā)送節點(diǎn)級別、任務(wù)條件、任務(wù)存活時(shí)間等字段組成。收到該命令的節點(diǎn),將以記錄的形式將本次任務(wù)存儲在本地存儲器里,每一條記錄代表不同的任務(wù)。當節點(diǎn)收到任務(wù)查詢(xún)命令時(shí),首先檢查命令中的發(fā)送節點(diǎn)級別,若低于本身節點(diǎn),則與本地存儲的任務(wù)記錄表相比較,如果不存在該任務(wù),則添加該任務(wù)記錄。然后檢查自身是否滿(mǎn)足該任務(wù)條件,若不滿(mǎn)足,則以本身級點(diǎn)更新任務(wù)查詢(xún)命令中的任務(wù)發(fā)送節點(diǎn)ID、任務(wù)發(fā)送節點(diǎn)級別,然后轉發(fā)該命令;否則該節點(diǎn)即為源節點(diǎn),并從任務(wù)查詢(xún)命令中取出任務(wù)發(fā)送節點(diǎn)ID,作為目標節點(diǎn),準備向其發(fā)送任務(wù)確認命令。該命令由任務(wù)確認標志位、源節點(diǎn)ID、數據發(fā)送節點(diǎn)ID、測量數據等字段組成。收到任務(wù)確認命令的節點(diǎn)從中取出數據發(fā)送節點(diǎn)ID,存儲在任務(wù)記錄中,作為以后相同任務(wù)的子節點(diǎn),然后以自身ID作為新的數據發(fā)送節點(diǎn)ID更新命令,并從任務(wù)列表中取出該任務(wù)的任務(wù)發(fā)送節點(diǎn)作為目標節點(diǎn)繼續傳輸任務(wù)確認命令,直到返回至SINK點(diǎn)。同時(shí),其它未收到任務(wù)確認命令的節點(diǎn)將會(huì )在任務(wù)存活時(shí)間到期后,將存儲器中的任務(wù)記錄刪除。在任務(wù)查詢(xún)命令廣播過(guò)程中,若接收節點(diǎn)檢測到本地任務(wù)記錄表中存在相同任務(wù),則從該記錄中取出子節點(diǎn)作為目標節點(diǎn),向其發(fā)送任務(wù)查詢(xún)命令,避免洪泛傳播,從而大大節約了能量。
1.3 事件驅動(dòng)
當某事件被傳感器節點(diǎn)捕捉時(shí),則該節點(diǎn)即為源節點(diǎn),并向其父節點(diǎn)發(fā)送事件命令。該命令由事件類(lèi)型、源節點(diǎn)ID、發(fā)送節點(diǎn)ID、測量數據組成。收到事件命令的節點(diǎn),以自身ID作為新的發(fā)送節點(diǎn)ID更新命令,向其父節點(diǎn)繼續傳輸事件驅動(dòng)命令,直到數據傳輸至SINK點(diǎn)。
2 路由修復機制
本文中的節點(diǎn)傳輸路徑是唯一的,這樣可以節約能量,提高效率。但是由于這種唯一性,如果一個(gè)節點(diǎn)電池耗盡或者物理?yè)p害而失效,則會(huì )導致其下級節點(diǎn)也脫離了網(wǎng)絡(luò )。目前有些無(wú)線(xiàn)傳感器路由協(xié)議針對這一問(wèn)題,采用通過(guò)由SINK點(diǎn)發(fā)起洪泛協(xié)議進(jìn)行路徑修復的辦法來(lái)解決,但是這樣明顯浪費能量,而且在洪泛期間,失效節點(diǎn)的鄰節點(diǎn)若產(chǎn)生事件將無(wú)法傳遞,導致了數據丟失。
FRP路徑修復機制分為2個(gè)部分:節點(diǎn)狀態(tài)檢測和新目標節點(diǎn)的選擇。文中采用應答機制來(lái)進(jìn)行節點(diǎn)狀態(tài)檢測。當節點(diǎn)發(fā)送數據給目標節點(diǎn)后,若在一定時(shí)間內,收到目標節點(diǎn)的ACK,則認為目標節點(diǎn)仍然正常工作,并已將數據向前傳輸;否則目標節點(diǎn)已經(jīng)死亡,需要另行尋找新的目標節點(diǎn)。如果在任務(wù)查詢(xún)方式運行過(guò)程中,某節點(diǎn)檢測到子節點(diǎn)死亡時(shí),按相反路徑發(fā)送命令通知SINK點(diǎn),進(jìn)行本次任務(wù)的重新路由,建立新的任務(wù)路徑。如果在事件驅動(dòng)方式下,當節點(diǎn)發(fā)現其父節點(diǎn)死亡,則發(fā)送SEARCH消息,鄰節點(diǎn)將返回ACK。節點(diǎn)從中選取響應時(shí)間低的低級別節點(diǎn)作為目標節點(diǎn)。若無(wú)低級別的節點(diǎn)應答,則該節點(diǎn)將以洪泛方式發(fā)送命令通知SINK點(diǎn)進(jìn)行新的路由樹(shù)的建立。其過(guò)程如圖2,圖3所示。

3 軟件仿真
本文采用了Visual C++開(kāi)發(fā)了無(wú)線(xiàn)傳感器網(wǎng)絡(luò )路由仿真平臺。分別研究了從100到500個(gè)節點(diǎn)共5個(gè)不同規模的傳感器區域。我們建立參數如表1所示。

PEQ將根據上述參數在相同的仿真環(huán)境下與Directed Diffusion協(xié)議(DD協(xié)議)進(jìn)行測試并進(jìn)行以下幾個(gè)方面的比較:SINK點(diǎn)-源節點(diǎn)-SINK點(diǎn)時(shí)間延遲;平均延遲;平均消耗能量,以下將分別作以說(shuō)明。
SINK點(diǎn)-源節點(diǎn)-SINK點(diǎn)的時(shí)間延遲指的是從SINK點(diǎn)發(fā)出查詢(xún)信息,到數據返回到SINK點(diǎn)所消耗的時(shí)間。低的延遲時(shí)間可以保證用戶(hù)有更充足的時(shí)間來(lái)處理突發(fā)事件。FRP主要通過(guò)SINK點(diǎn)發(fā)布任務(wù)查詢(xún)命令建立路徑,源節點(diǎn)沿著(zhù)該路徑反方向將數據傳輸給SINK點(diǎn)。而DD協(xié)議則是通過(guò)SINK點(diǎn)發(fā)布興趣給網(wǎng)絡(luò ),當源節點(diǎn)收到后,源節點(diǎn)通過(guò)多個(gè)路徑傳送數據給SINK點(diǎn),SINK點(diǎn)收到后,并從中選擇更快捷的路徑加強,進(jìn)行數據傳輸。FRP比DD協(xié)議在步驟上更簡(jiǎn)潔,從而獲得更低的延遲效果。其仿真數據如圖4所示:
平均延遲指的是仿真中所產(chǎn)生的事件從源節點(diǎn)傳播到SINK點(diǎn)需要的平均時(shí)間。仿真數據如圖5所示,結果表明,隨著(zhù)網(wǎng)絡(luò )規模的擴大,PEQ協(xié)議顯示了比DD協(xié)議更好的延遲特性。
平均消耗能量指的是仿真結束后,節點(diǎn)平均所消耗的能量。仿真數據如圖6所示,結果表明,FRP比DD更節約能量。原因在于FRP在數據傳輸中僅使用單一路徑,而DD協(xié)議在數據傳輸中會(huì )使用多個(gè)傳輸路徑,并對其中傳輸速度慢的路徑進(jìn)行反向增強,產(chǎn)生了能量消耗。

4 結 論
本文提出了一種新的無(wú)線(xiàn)傳感器路由協(xié)議FRP,經(jīng)過(guò)與DD協(xié)議仿真比較,實(shí)驗數據顯示,無(wú)論是小規模網(wǎng)絡(luò )(100個(gè)節點(diǎn)),還是中大規模網(wǎng)絡(luò )(300~500個(gè)節點(diǎn)),FRP都具有更短的時(shí)間延遲和較低的能量消耗。并且該協(xié)議已經(jīng)在基于MSP430F123和NRF2401的硬件節點(diǎn)上成功應用?,F場(chǎng)試驗表明,該路由反應迅速,自我修復能力強,可以滿(mǎn)足無(wú)線(xiàn)傳感器實(shí)時(shí)監測應用的要求。
評論