無線傳感器網絡(wireless sensor networks,簡稱WSNs)是當前在國際上備受關注的涉及多學科高度交叉的熱點研究領域。
它綜合了傳感器技術、嵌入式計算技術、現代網絡及無線通信技術等,能夠通過各類集成化的微型傳感器協同工作,完成指定的任務,并進行自組織無線通信網絡以多跳中繼方式將所感知信息傳送到用戶終端。
WSNs一般運行在人們無法接近的惡劣甚至危險的遠程環(huán)境中,并且傳感器節(jié)點通常攜帶不能補充的有限能量。低能耗、低延遲、自動修復路徑成了WSNs最根本的要求。目前所存在的WSNs路由協議大都不能同時滿足這樣的條件,或者需要依靠特殊硬件才能實現這些功能,本文提出了一種快速可靠的低能耗路由(a fast andreliable protocol,簡稱為FRP),不僅可以滿足上面的基本要求,還可以工作于任務查詢方式及事件驅動方式,并具有較強的路徑修復能力。
FRP主要分為3個部分。首先是構建路由樹結構,SINK點以洪泛方式向傳感器網絡傳播路由樹組建消息,使得網絡中的每個節(jié)點都擁有自己的級別值和父節(jié)點,然后SINK點將所要查詢的任務通過路由樹發(fā)布出去;最后源節(jié)點將選擇最短路徑將數據反饋給SINK點。FRP主要能夠實現以下幾種功能:任務查詢、事件驅動以及路徑自我修復。而這些僅依靠普通的射頻芯片即可實現,以下將做詳細介紹。
1 FRP路由的建立與運行
1.1 路由樹的建立
在無線傳感器網絡里,由于受到射頻芯片通信距離的限制,單個節(jié)點無法了解網絡中全部節(jié)點,只能知道其鄰節(jié)點的一些信息。因此第一步需要建立路由樹結構,讓節(jié)點了解其所處的級別及父節(jié)點。SINK點首先通過洪泛方式向網絡傳播路由樹組建消息。組建消息由組建標志位、發(fā)送節(jié)點ID、發(fā)送節(jié)點級值組成。收到該組建消息的節(jié)點將發(fā)送節(jié)點ID記錄為父節(jié)點,然后將級值加1,并以自身ID和級值更新消息后繼續(xù)向鄰節(jié)點傳播,直到網絡中所有節(jié)點都擁有自己父節(jié)點和級值。由于洪泛傳輸中可能會導致已經發(fā)出消息的節(jié)點再次收到鄰節(jié)點將級值加1后重新發(fā)送來的消息,從而導致消息循環(huán)。
為了解決該問題,文中制定如下規(guī)則:當一個節(jié)點從鄰節(jié)點處收到組建消息時,首先檢查消息中級值是否低于自身級值,如果是,則以該級值更新,并向鄰節(jié)點發(fā)送新的組建消息;否則將不予處理。在組建消息傳播過程中,節(jié)點選擇最早發(fā)送其消息,級值更低的節(jié)點作為父節(jié)點。圖1所示為路由樹的初始化過程。
1.2 任務查詢機制
當SINK點進行任務查詢時,首先以洪泛方式向整個網絡發(fā)布任務查詢命令,該命令主要由任務查詢標志位、任務發(fā)送節(jié)點ID、任務發(fā)送節(jié)點級別、任務條件、任務存活時間等字段組成。收到該命令的節(jié)點,將以記錄的形式將本次任務存儲在本地存儲器里,每一條記錄代表不同的任務。當節(jié)點收到任務查詢命令時,首先檢查命令中的發(fā)送節(jié)點級別,若低于本身節(jié)點,則與本地存儲的任務記錄表相比較,如果不存在該任務,則添加該任務記錄。然后檢查自身是否滿足該任務條件,若不滿足,則以本身級點更新任務查詢命令中的任務發(fā)送節(jié)點ID、任務發(fā)送節(jié)點級別,然后轉發(fā)該命令;否則該節(jié)點即為源節(jié)點,并從任務查詢命令中取出任務發(fā)送節(jié)點ID,作為目標節(jié)點,準備向其發(fā)送任務確認命令。
該命令由任務確認標志位、源節(jié)點ID、數據發(fā)送節(jié)點ID、測量數據等字段組成。收到任務確認命令的節(jié)點從中取出數據發(fā)送節(jié)點ID,存儲在任務記錄中,作為以后相同任務的子節(jié)點,然后以自身ID作為新的數據發(fā)送節(jié)點ID更新命令,并從任務列表中取出該任務的任務發(fā)送節(jié)點作為目標節(jié)點繼續(xù)傳輸任務確認命令,直到返回至SINK點。同時,其它未收到任務確認命令的節(jié)點將會在任務存活時間到期后,將存儲器中的任務記錄刪除。在任務查詢命令廣播過程中,若接收節(jié)點檢測到本地任務記錄表中存在相同任務,則從該記錄中取出子節(jié)點作為目標節(jié)點,向其發(fā)送任務查詢命令,避免洪泛傳播,從而大大節(jié)約了能量。
1.3 事件驅動
當某事件被傳感器節(jié)點捕捉時,則該節(jié)點即為源節(jié)點,并向其父節(jié)點發(fā)送事件命令。該命令由事件類型、源節(jié)點ID、發(fā)送節(jié)點ID、測量數據組成。收到事件命令的節(jié)點,以自身ID作為新的發(fā)送節(jié)點ID更新命令,向其父節(jié)點繼續(xù)傳輸事件驅動命令,直到數據傳輸至SINK點。
2 路由修復機制
本文中的節(jié)點傳輸路徑是唯一的,這樣可以節(jié)約能量,提高效率。但是由于這種唯一性,如果一個節(jié)點電池耗盡或者物理損害而失效,則會導致其下級節(jié)點也脫離了網絡。目前有些無線傳感器路由協議針對這一問題,采用通過由SINK點發(fā)起洪泛協議進行路徑修復的辦法來解決,但是這樣明顯浪費能量,而且在洪泛期間,失效節(jié)點的鄰節(jié)點若產生事件將無法傳遞,導致了數據丟失。
FRP路徑修復機制分為2個部分:節(jié)點狀態(tài)檢測和新目標節(jié)點的選擇。文中采用應答機制來進行節(jié)點狀態(tài)檢測。當節(jié)點發(fā)送數據給目標節(jié)點后,若在一定時間內,收到目標節(jié)點的ACK,則認為目標節(jié)點仍然正常工作,并已將數據向前傳輸;否則目標節(jié)點已經死亡,需要另行尋找新的目標節(jié)點。
如果在任務查詢方式運行過程中,某節(jié)點檢測到子節(jié)點死亡時,按相反路徑發(fā)送命令通知SINK點,進行本次任務的重新路由,建立新的任務路徑。如果在事件驅動方式下,當節(jié)點發(fā)現其父節(jié)點死亡,則發(fā)送SEARCH消息,鄰節(jié)點將返回ACK。節(jié)點從中選取響應時間低的低級別節(jié)點作為目標節(jié)點。若無低級別的節(jié)點應答,則該節(jié)點將以洪泛方式發(fā)送命令通知SINK點進行新的路由樹的建立。
其過程如圖2,圖3所示。
3 軟件仿真
本文采用了Visual C++開發(fā)了無線傳感器網絡路由仿真平臺。分別研究了從100到500個節(jié)點共5個不同規(guī)模的傳感器區(qū)域。我們建立參數如表1所示。
PEQ將根據上述參數在相同的仿真環(huán)境下與Directed Diffusion協議(DD協議)進行測試并進行以下幾個方面的比較:SINK點-源節(jié)點-SINK點時間延遲;平均延遲;平均消耗能量,以下將分別作以說明。
SINK點-源節(jié)點-SINK點的時間延遲指的是從SINK點發(fā)出查詢信息,到數據返回到SINK點所消耗的時間。低的延遲時間可以保證用戶有更充足的時間來處理突發(fā)事件。FRP主要通過SINK點發(fā)布任務查詢命令建立路徑,源節(jié)點沿著該路徑反方向將數據傳輸給SINK點。而DD協議則是通過SINK點發(fā)布興趣給網絡,當源節(jié)點收到后,源節(jié)點通過多個路徑傳送數據給SINK點,SINK點收到后,并從中選擇更快捷的路徑加強,進行數據傳輸。FRP比DD協議在步驟上更簡潔,從而獲得更低的延遲效果。其仿真數據如圖4所示:
平均延遲指的是仿真中所產生的事件從源節(jié)點傳播到SINK點需要的平均時間。仿真數據如圖5所示,結果表明,隨著網絡規(guī)模的擴大,PEQ協議顯示了比DD協議更好的延遲特性。
平均消耗能量指的是仿真結束后,節(jié)點平均所消耗的能量。仿真數據如圖6所示,結果表明,FRP比DD更節(jié)約能量。原因在于FRP在數據傳輸中僅使用單一路徑,而DD協議在數據傳輸中會使用多個傳輸路徑,并對其中傳輸速度慢的路徑進行反向增強,產生了能量消耗。
4 結 論
本文提出了一種新的無線傳感器路由協議FRP,經過與DD協議仿真比較,實驗數據顯示,無論是小規(guī)模網絡(100個節(jié)點),還是中大規(guī)模網絡(300~500個節(jié)點),FRP都具有更短的時間延遲和較低的能量消耗。并且該協議已經在基于MSP430F123和NRF2401的硬件節(jié)點上成功應用。現場試驗表明,該路由反應迅速,自我修復能力強,可以滿足無線傳感器實時監(jiān)測應用的要求。