譚 勁,張曼曼
(中國計量學院信息工程學院,杭州310018)
無線傳感器網絡(WSN)是由大量通信能力、處理能力和能量供應都十分受限的微型傳感器節(jié)點,以自組織和多跳的方式構成的無線通信網絡,通過協(xié)作感知、采集和處理監(jiān)測區(qū)域的數據,以實現(xiàn)環(huán)境監(jiān)測的目的。一旦部署成功,WSN通常要長期工作在無人協(xié)助的環(huán)境中,在此期間為了適應環(huán)境和網絡拓撲的動態(tài)變化,需要相應的改變用戶的部分需求,并隨之調整軟件的功能,這都需要對傳感節(jié)點上的應用程序進行再編程。同時,由于網絡部署的隨機性、規(guī)模性和工作環(huán)境的特定性,使得傳統(tǒng)的手工再編程已經不切實際,甚至是不可行的。這就需要網絡再編程,即通過無線通信的方式遠程對節(jié)點進行軟件更新。
網絡再編程主要包含兩部分內容:第一部分是傳感節(jié)點上已裝入更新代碼的安裝機制,屬于操作系統(tǒng)與硬件結構研究的范疇;第二部分是分布更新軟件到傳感節(jié)點的傳播機制,屬于網絡協(xié)議的范疇,是目前研究的重點和熱點[1]。已有的網絡再編程協(xié)議,根據傳感節(jié)點資源受限的特點,通過無線信道,采用單跳或多跳的空中加載技術,將軟件影像傳輸到整個網絡。然而,這些協(xié)議大多假定網絡是同構的,即將同一軟件影像傳輸到網絡中的所有節(jié)點,不具有范圍選擇功能。實際上,為了增強網絡的可靠性和延長整個網絡的生命周期,傳感節(jié)點在傳感對象、通信能力、硬件資源(CPU處理能力、帶寬、能量)等方面都是異構的[2-3]。不同的節(jié)點或者節(jié)點集會運行不同功能的應用程序,以完成不同的傳感任務。由于傳感節(jié)點的異構性、傳感任務的多樣性和軟件對地點的可能的依賴性,使得將軟件影像傳輸到整個網絡是不合適的[4],這就需要在軟件傳輸過程中對網絡中的節(jié)點進行動態(tài)的選擇,即對運行某種特定應用程序的所有節(jié)點進行再編程。
本文提出了一種能量有效的基于虛擬骨干網的WSN范圍選擇再編程協(xié)議。該協(xié)議首先根據要更新的應用程序、節(jié)點的剩余能量、有效度數和節(jié)點間的鏈路質量,選出合適的核心節(jié)點,創(chuàng)建虛擬骨干網,然后分兩個階段實現(xiàn)數據傳輸。在第一階段軟件影像由Sink節(jié)點通過流水線的方式,先可靠傳輸給核心節(jié)點;在第二階段由核心節(jié)點并行傳輸到需要的普通節(jié)點。有效地減少了參與再編程的節(jié)點數,節(jié)省了能量,實現(xiàn)了范圍選擇。另外,采用協(xié)調調度并引進睡眠機制,使得不參與數據傳輸的節(jié)點關閉無線通信裝置,進一步減少能量消耗。性能分析和仿真實驗表明:與已有的協(xié)議ThreeStages和Aqueduct相比,本協(xié)議節(jié)省了大約5.6% ~24.8%的平均延時和5.1% ~27.7%的能量消耗。
文獻[5-6]對現(xiàn)有的網絡再編程協(xié)議給出了很好的總結。這些協(xié)議大多假定網絡中的所有節(jié)點都需要同一版本的軟件影像。Trickle[7]通過周期性的廣播軟件影像的元數據(Meta-Data)來檢測鄰域內的節(jié)點是否需要進行軟件更新。動態(tài)的調整廣播率對控制消息起到了抑制作用,減少了由廣播風暴引起的數據冗余。Deluge[8]對Trickle進行了擴展,將較大的軟件影像分割成固定大小的數據頁,引進流水線操作,實現(xiàn)了空間的多路復用。循環(huán)冗余碼校驗CRC的引入,保證了軟件更新的可靠性。MNP[9-10]引進發(fā)送者選擇機制,選擇鄰域內接收到請求最多的節(jié)點為本次的發(fā)送者。支持流水線操作,實現(xiàn)了數據的快速傳播。同時,MNP引進了睡眠機制,通過減少節(jié)點無線通信活躍的時間來節(jié)省能量的消耗。Sprinkler[11]和 CORD[12]采用層次結構的方式分發(fā)軟件影像,即將網絡再編程分成兩個不同的階段。第一階段:由Sink節(jié)點將軟件影像可靠的傳播到網絡中的核心節(jié)點(Core Node);第二階段:核心節(jié)點并行的將軟件影像傳播給自己鄰域內的非核心(Non-Core Node)節(jié)點。這種類型的協(xié)議可以有效的減少能量的消耗,而關鍵是在網絡中創(chuàng)建有效的虛擬骨干網,也就是連通支配集(CDS)。
近期的文獻開始著重研究異構WSN的具有范圍選擇的再編程協(xié)議。Melete[13]根據傳感節(jié)點任務的不同,分成不同的分組。分組內部使用Trickle算法傳輸數據,分組間通過構造“轉發(fā)區(qū)域”進行數據傳輸,并采用TTL(Time To Live)的方式限制傳輸的范圍。Aqueduct[14]對 Deluge 進行了擴展,使其具有范圍選擇功能。通過創(chuàng)建成員節(jié)點間的最短路徑,建立起成員節(jié)點間的中間橋梁,從而進行軟件的分發(fā)。文獻[15]引進了一個準備階段,在這個階段中每個節(jié)點獲得自己的角色分配。角色分為3種,分別是需要更新的節(jié)點,轉發(fā)節(jié)點和完全不參與的節(jié)點。再編程的范圍選擇,通過每個需要更新的節(jié)點,以樹形方式向Sink節(jié)點發(fā)送消息實現(xiàn)。作者的前期工作,ThreeStages協(xié)議[16]變傳統(tǒng)的 ADV-REQDATA三次握手協(xié)議為路由形成、代碼傳送、請求丟失包三個階段協(xié)議;中間轉發(fā)節(jié)點通過獲取一跳范圍內希望接收更新代碼數據的節(jié)點序列,采取單播或組播方式有針對性傳送更新代碼,而不是泛洪式的廣播,減少了REQ確認信息包。但該協(xié)議并未考慮節(jié)點的剩余能量問題,路由上的節(jié)點可能由于能量不足,而無法實現(xiàn)軟件影像的可靠傳輸。另外,可以通過引進適當的睡眠機制,進一步節(jié)省能耗。Pasztor[17]等人將無線傳感器網絡應用到野生動物的監(jiān)測上,根據動物或人類都是社會群體,具有明顯的社會模式和群體交互,提出了針對動態(tài)網絡的具有范圍選擇的再編程協(xié)議。
然而,目前在具有范圍選擇的網絡再編程協(xié)議的研究方面,還存在一些問題:協(xié)議一般是基于3次握手機制的,眾多的REQ會帶來確認爆炸問題;不能做出正確、有效的范圍選擇;很少考慮節(jié)點的剩余能量問題,導致可能由于節(jié)點的能量不足,而不能實現(xiàn)軟件影像的可靠傳輸。
本文的系統(tǒng)模型如下:
(1)整個網絡有一個基站Sink,節(jié)點隨機分布在一個二維區(qū)域中,每個節(jié)點擁有唯一的ID,并都能以單跳或多跳的方式,將自己感知的數據傳輸到Sink。如圖1所示,圖中有矩形、圓形、菱形三類節(jié)點,對菱形節(jié)點進行軟件更新,即菱形節(jié)點為本次的成員節(jié)點。
(2)用一個連通圖G=(V,E),來表示WSN。其中,V是節(jié)點的集合即WSN中的所有傳感節(jié)點的集合,E是節(jié)點間邊的集合。用R(si)表示節(jié)點si的通信半徑,d(si,sj)表示節(jié)點si和sj之間的歐式距離,每條邊 e=(si,sj)∈E(其中,si,sj∈V)都有 d(si,sj)<R(si)[18]。
(3)研究的WSN是靜態(tài)的,且無線通信是雙向的,并且是在網絡運行一定時間的基礎上對網絡進行再編程。根據之前數據交換時數據包的丟失率,統(tǒng)計得到節(jié)點間的鏈路質量 Quv,且 Quv=min(Qu->v,Qv->u)[12]。每個節(jié)點中都保存有自己的鄰居列表,鄰居列表包括該節(jié)點的所有鄰居節(jié)點和鄰居節(jié)點與該節(jié)點間的鏈路質量。
(4)再編程開始時,Sink節(jié)點會將軟件影像分割成數據頁,每頁包含K個數據包(最后一頁包含的數據包的數量可以小于K)。同時,記錄下起始時間,并將時間分成長度為L的時間片。時間片相對較長,長到可以完整可靠的傳輸完一個數據頁的K個數據包。
圖1 再編程網絡結構(對菱形節(jié)點進行再編程)
本文使用到的新的定義:
定義1 核心節(jié)點:是將WSN看作是一個連通圖而構造的虛擬骨干網上的節(jié)點,Sink節(jié)點默認為虛擬骨干網上的核心節(jié)點。
定義2 非核心節(jié)點:在創(chuàng)建虛擬骨干網時,上層核心節(jié)點在自己的鄰居節(jié)點中選擇符合條件的節(jié)點為下層核心節(jié)點,并發(fā)送通知消息給所有鄰居節(jié)點,收到通知消息而未被選為核心節(jié)點的鄰居節(jié)點為下層非核心節(jié)點。
定義3 剩余節(jié)點:虛擬骨干網創(chuàng)建完成之后,網絡中除核心節(jié)點與非核心節(jié)點之外,可能還有剩余的節(jié)點,這些節(jié)點為剩余節(jié)點。
定義4 普通節(jié)點:網絡中除虛擬骨干網上的核心節(jié)點之外的節(jié)點,包括非核心節(jié)點和剩余節(jié)點。
定義5 父節(jié)點:一個節(jié)點的父節(jié)點,是能夠與該節(jié)點直接通信的上游核心節(jié)點。如圖1中Sink節(jié)點是節(jié)點2、節(jié)點4和節(jié)點12的父節(jié)點。
定義6 有效度數d(si):一個節(jié)點的有效度數,是從自己的所有鄰居節(jié)點中減去自己的鄰居節(jié)點與父節(jié)點的鄰居節(jié)點的交集后,該節(jié)點所剩的鄰居節(jié)點數,如圖1中節(jié)點4的有效度數是2。
定義7 權重w(si):一個節(jié)點的權重,是將該節(jié)點的剩余能量和有效度數綜合考慮的結果。w(si)=Er(si)>Es&&d(si)>Ds,其中 Es表示核心節(jié)點剩余能量的閾值,Er(si)為節(jié)點si的剩余能量,Ds為核心節(jié)點有效度數的閾值,&&表示邏輯且。如果節(jié)點的剩余能量和有效度數都分別超過對應的閾值,則w(si)為1,否則為0。
本文協(xié)議設計分為兩個部分:
(1)根據要更新的應用程序、節(jié)點的剩余能量、有效度數和節(jié)點間的鏈路質量,選出合適的核心節(jié)點,創(chuàng)建虛擬骨干網。
(2)傳輸軟件更新:分兩個階段實現(xiàn)軟件更新的傳輸,在第一階段軟件影像由Sink節(jié)點通過流水線的方式,先傳輸給核心節(jié)點;在第二階段由核心節(jié)點并行傳輸到需要軟件更新的普通節(jié)點。
本協(xié)議中使用了以下7種消息,消息格式見圖2。
圖2 協(xié)議中使用的消息
CLAIM:核心節(jié)點的聲明消息,消息中的“應用程序的版本號Vi”包含兩層意思,需要更新的是什么類型的軟件和該軟件更新到什么程度?!皶r間偏移O”是第一個時間片開始的時間到現(xiàn)在的時間偏移?!肮?jié)點在網絡中的層數”是節(jié)點距離Sink節(jié)點的具體跳數。
COMPETE:同屬于一個父節(jié)點,并與父節(jié)點具有良好鏈路質量,且權重為1的節(jié)點競爭成為核心節(jié)點時發(fā)送的消息。成員節(jié)點具有競爭優(yōu)先權。
ANNOUNCE:通知消息,父節(jié)點從參與競爭的節(jié)點中選擇出核心節(jié)點,通過ANNOUNCE消息通知自己的鄰居節(jié)點。
ADV:傳輸數據的廣告消息,整個軟件影像分割成了固定大小的數據頁,并對數據頁進行編號,按照編號由小到大的順序,以數據頁為單位進行傳輸。每個數據頁內部同樣對包含的數據包進行了編號。
REQ:數據請求消息,如果由于某種原因(如:數據包在傳輸過程中丟失),需要重傳某些數據包,或者普通節(jié)點需要核心節(jié)點ADV廣告的數據,則請求節(jié)點需要發(fā)送REQ消息。
DATA:數據發(fā)送消息,分為兩種情況,如果是REQ請求的數據,則根據收到的REQ中的相關字段,發(fā)送對應的某個數據頁的某些數據包;否則,則根據之前發(fā)送的ADV的相關字段,發(fā)送對應的某個數據頁的所有數據包。
TEST:測試消息,在虛擬骨干網創(chuàng)建完成之后,網絡中可能存在一些剩余節(jié)點。這些節(jié)點可能不知道自己是否需要更新,則在數據傳輸階段,發(fā)送TEST消息給與自己鏈接質量最好的鄰居節(jié)點,查看是否需要軟件更新,并做出相應處理。
協(xié)議的關鍵是虛擬骨干網的創(chuàng)建,在創(chuàng)建虛擬骨干網選擇核心節(jié)點時,協(xié)議充分考慮了節(jié)點的剩余能量問題,以保證核心節(jié)點有充足的能量,來實現(xiàn)軟件影像的可靠傳輸。由于一般的傳感節(jié)點不具備直接測量其剩余能量的功能,本協(xié)議采用一種間接的方法計算節(jié)點的剩余能量。傳感節(jié)點的耗能模塊分別是傳感模塊、通信模塊和處理模塊,則節(jié)點的剩余能量為初始能量減去這3個耗能模塊消耗的能量的總和(假定在網絡開始運行時,傳感節(jié)點都具有相同的初始能量)。用E0表示初始能量,Er表示剩余能量,Esen表示傳感模塊消耗的能量,Ecom表示通信模塊消耗的能量,Ecpu表示處理模塊消耗的能量,可得:
然而傳感節(jié)點的通信模塊的功耗,遠比傳感模塊和通信模塊大得多,且通信模塊在節(jié)點的生命周期內一般都是開啟的,進而得到傳感節(jié)點的通信模塊,遠比傳感模塊和處理模塊消耗的能量多。因此,傳感節(jié)點的剩余能量約等于初始能量減去通信模塊消耗的能量,可得:
再編程開始時,Sink節(jié)點會根據要傳輸的軟件影像的大小,計算出虛擬骨干網上的核心節(jié)點完成整個再編程任務時,需要消耗的能量,繼而給出核心節(jié)點剩余能量的閾值Es。傳感節(jié)點根據式(2)計算出自己的剩余能量Er,只有Er大于Es時才可以成為核心節(jié)點。
節(jié)點的有效度數與節(jié)點間的鏈路質量,與WSN的部署環(huán)境和網絡的分布密度有關,根據實際經驗選取對應的有效度數的閾值Ds和鏈路質量的閾值Qs。
本文對文獻[18-19]提出的虛擬骨干網的算法進行了改進,使得需要更新的成員節(jié)點具有成為核心節(jié)點的優(yōu)先權,對異構的WSN的再編程做出了范圍選擇的處理。以下是虛擬骨干網創(chuàng)建的過程:
(1)核心節(jié)點(最初是Sink節(jié)點)根據鄰居列表,將CLAIM消息組播給所有鄰居節(jié)點。
(2)節(jié)點收到CLAIM消息后,如果已知自己在網絡中的分層,且分層小于或等于CLAIM消息中“節(jié)點在網絡中的層數”則丟棄不做處理。否則,復制CLAIM內容,選擇發(fā)送CLAIM消息的源節(jié)點為父節(jié)點,與其保持同步,存儲父節(jié)點的ID,計算自己在網絡中的分層為父節(jié)點的網絡層數加1(Sink節(jié)點在網絡中的分層為0)。如果收到上層多個核心節(jié)點發(fā)送來的CLAIM消息,則選擇ID最小的源節(jié)點為父節(jié)點,將其他CLAIM消息丟棄不做處理。
圖3 虛擬骨干網創(chuàng)建的主要流程圖
(3)與父節(jié)點具有良好鏈路質量(與父節(jié)點之間的鏈路質量達到閾值Qs),且權重為1的節(jié)點,在收到CLAIM消息后,單播COMPETE消息給父節(jié)點,父節(jié)點從中選擇核心節(jié)點。在這些節(jié)點中:(a)如果有成員節(jié)點,則選擇所有的成員節(jié)點為核心節(jié)點,且不再選擇同層的非成員節(jié)點為核心節(jié)點;(b)如果沒有成員節(jié)點,則選擇有效度數最大的節(jié)點為核心節(jié)點(如果有效度數相同,則選擇ID最小的節(jié)點)。父節(jié)點做出決定后,組播ANNOUNCE消息給所有鄰居節(jié)點。
(4)回到步驟(1),并循環(huán)執(zhí)行步驟(1)~步驟(3),直到找到網絡中最后一個核心節(jié)點為止。
這時網絡中可能存在一些剩余節(jié)點,這些節(jié)點可能不知道自己是否需要軟件更新,在數據傳輸階段將會對其進行處理。
虛擬骨干網創(chuàng)建完成之后,進入到數據傳輸階段,并分為兩個階段進行數據的分發(fā)。由于在第一階段將軟件影像由Sink節(jié)點分發(fā)給核心節(jié)點時,使用了流水線操作,導致同時發(fā)送數據的兩個節(jié)點間至少有3跳的距離,才能避免數據干擾,如圖4所示。因此采用與 CORD[12]類似的時間調度方案。調度由重復的長度為L的時間片組成,在數據傳輸時每個核心節(jié)點輪流進入發(fā)送、接收和睡眠狀態(tài)。我們將這些在時間調度中連續(xù)的時間片,分別用SSlot、R-Slot和Q-Slot來表示。核心節(jié)點的時間調度即是重復S-R-Q。圖5闡明了處于3個網絡分層的鄰接的核心節(jié)點u、v、w的時間調度情況。
圖4 流水線傳輸
圖5 3個鄰接核心節(jié)點的協(xié)調調度
數據傳輸的兩個階段:
(1)由Sink節(jié)點開始,將軟件影像以數據頁為單位傳輸給虛擬骨干網中的核心節(jié)點。傳輸采用流水線操作,伴隨著時間調度,以單播或者組播的方式進行。主要算法見圖6。
圖6 數據傳輸第一階段
(2)核心節(jié)點并行的將軟件影像傳輸給需要更新的普通節(jié)點。傳輸以單播或者組播的方式進行。主要算法見圖7。
圖7 數據傳輸第二階段
在虛擬骨干網創(chuàng)建完成之后,網絡中可能存在一些剩余節(jié)點。這些節(jié)點可能不知道自己是否需要更新,則在數據傳輸的第一階段,以單播的方式發(fā)送TEST消息給與自己鏈路質量最好的鄰居,這個鄰居節(jié)點收到消息后根據保存的CLAIM消息,判斷TEST的發(fā)送節(jié)點是否需要軟件更新。(這個鄰居可能是核心節(jié)點,也可能是緊鄰核心節(jié)點的非核心節(jié)點)如果不需要更新,則不做處理;如果需要更新則在數據傳輸的第二階段做以下操作:(a)如果這個鄰居是核心節(jié)點,則該核心節(jié)點在組播了ADV消息,并收到非核心的成員節(jié)點發(fā)送的REQ消息后,將軟件影像一起組播給需要的成員節(jié)點和這個發(fā)送TEST消息的節(jié)點;(b)如果這個鄰居是非核心節(jié)點,則在這個鄰居的父節(jié)點組播了ADV消息后,這個鄰居節(jié)點向其父節(jié)點單播REQ請求軟件更新。獲得完整軟件后,再轉發(fā)給需要的鄰居節(jié)點。
在不同軟件更新大小傳輸下,我們利用OMNet++4.0網絡仿真環(huán)境,比較Aqueduct和作者前期提出的ThreeStages協(xié)議,與本協(xié)議在平均時間延遲和能量消耗方面的性能。仿真的網絡模型和參數與ThreeStages協(xié)議相同。實驗假定傳感節(jié)點隨機分布于7*7的網格內,節(jié)點的總數是49,再編程的成員節(jié)點(菱形節(jié)點)為20個,非成員節(jié)點(圓形節(jié)點)為29個。如圖8所示。
模擬參數見表1,模擬結果見圖9~圖11。
表1 模擬參數
圖9 不同軟件更新大小下的平均延時
圖10 不同軟件更新大小下的消息總數
圖11 不同軟件更新大小下是否采用休眠機制的能量消耗
圖8中菱形表示再編程節(jié)點即本次的成員節(jié)點,圓形為非成員節(jié)點。如圖8(1)所示,本實驗根據上文提出的虛擬骨干網創(chuàng)建算法,選出了20個核心節(jié)點,構成整個虛擬骨干網(如圖中實線連接的部分),將網絡分成了9層(核心節(jié)點中的數字表示該核心節(jié)點在網絡中的層數)。網絡中剩余的29個節(jié)點中,包含24個非核心節(jié)點,與5個剩余節(jié)點。
圖8(1)是在假定節(jié)點都有充足的剩余能量,來實現(xiàn)軟件影像可靠傳輸的理想情況下形成的。實際上,由于再編程是網絡運行一段時間之后開始的,耗能模塊主要是通信模塊對傳感節(jié)點有限的能量進行了消耗。再編程進行時,傳感節(jié)點的剩余能量可能不足以完成對應的再編程任務。尤其是虛擬骨干網上的核心節(jié)點,由于需要參與數據傳輸的兩個階段,對剩余能量要求較高。因此,在創(chuàng)建虛擬骨干網選擇核心節(jié)點時,要充分考慮節(jié)點的剩余能量。圖8的(2)是在(1)的實驗基礎上設定節(jié)點15的剩余能量不足,因而不能參與競爭成為核心節(jié)點,則其父節(jié)點8選擇節(jié)點16為下一層的核心節(jié)點,繼而逐層選擇核心節(jié)點形成新的虛擬骨干網。
本協(xié)議總的時間延遲,包括虛擬骨干網的創(chuàng)建時間和數據傳輸時間兩部分。而數據傳輸部分又包含兩個階段。用T表示總的傳輸時間,Tcds表示虛擬骨干網的創(chuàng)建時間,Ttf表示數據傳輸第一階段的時間,Tts表示數據傳輸第二階段的時間,可得:
虛擬骨干網創(chuàng)建時間,是由選取網絡中每一層的核心節(jié)點的時間構成的。用L表示將網絡分成的最大層數,用Ncom表示每一層中向自己的父節(jié)點,發(fā)送COMPETE消息的節(jié)點數,可得:
數據傳輸的第一階段,是由Sink節(jié)點將軟件影像通過流水線的方式,先傳輸給核心節(jié)點。結合流水線傳輸和協(xié)調調度,可得:
數據傳輸的第二階段,是由核心節(jié)點將軟件影像并行傳輸到需要的普通節(jié)點。由于傳輸時最多只有兩跳,所以無法使用流水線操作,可得:
圖9顯示了本協(xié)議與ThreeStages和Aqueduct,在平均延時方面的對比。可以得到本協(xié)議在平均延時方面優(yōu)于ThreeStages和Aqueduct,降低了大約5.6% ~24.8%的平均延時。原因是Aqueduct的中間節(jié)點在轉發(fā)每一個數據頁后,都要等待一個時間片,延長了再編程的時間。ThreeStages在數據傳輸時沒有使用流水線操作。而本協(xié)議在創(chuàng)建完虛擬骨干網之后,在數據傳輸的第一階段,上層核心節(jié)點只需根據自己存儲的下層核心節(jié)點的ID,以流水線的方式單播或者組播發(fā)送ADV和數據。在第二階段,核心節(jié)點并行的將軟件更新傳輸給需要的節(jié)點,而需要軟件更新的節(jié)點距離自己的核心節(jié)點最多只有2跳,可以實現(xiàn)數據的快速傳輸。
因為通信模塊遠比處理模塊和傳感模塊消耗的能量多,對于網絡的耗能問題,我們沒有直接測試每個節(jié)點的能量消耗,而是轉化為統(tǒng)計出所有節(jié)點收發(fā)的消息總數。本協(xié)議的總消息數,包含創(chuàng)建虛擬骨干網時收發(fā)的消息數和數據傳輸時收發(fā)的消息數兩部分。其中,創(chuàng)建虛擬骨干網時的消息為CLAIM、COMPETE和ANNOUNCE消息,都是控制消息,而在數據傳輸時的消息為ADV、REQ、TEST和DATA消息,前3者是控制消息,而DATA消息為數據消息。用N表示消息總數,Ncds表示創(chuàng)建虛擬骨干網的消息數,Nt表示傳輸數據時的消息數,可得:
由圖10可以看出與ThreeStages和Aqueduct相比,本協(xié)議在能量消耗方面優(yōu)勢明顯,降低了大約5.1% ~27.7%的能量消耗。原因是在Aqueduct中所有的節(jié)點都廣播ADV消息,并且每個節(jié)點都有可能成為數據的發(fā)送者。ThreeStages在路由形成時,采用泛洪的廣播方式轉發(fā)了比較多的消息,在代碼傳送階段采用組播或單播的形式傳送。在本協(xié)議中,虛擬骨干網創(chuàng)建時就采用組播或單播的方式轉發(fā)消息,在數據傳送階段只有核心節(jié)點才會發(fā)送ADV和數據,并且遵循固定的調度,有效減少了收發(fā)的消息總數。
結合傳感器節(jié)點在發(fā)送消息、接收消息、空閑監(jiān)聽和休眠這4種狀態(tài)下的功耗情況,即節(jié)點在發(fā)送消息時,功耗最多;接收消息和空閑監(jiān)聽的功耗相當,且比發(fā)送消息功耗略小;休眠狀態(tài)下遠比前3者的功耗小。根據數據傳輸第一階段的傳輸時間和協(xié)調調度,得到在數據傳輸第一階段的能量消耗情況。
圖11對比了在數據傳輸第一階段不引進睡眠機制和引進睡眠機制時,網絡消耗的能量,且容易得到后者明顯優(yōu)于前者。原因是引進睡眠機制后,節(jié)點將原來的空閑監(jiān)聽狀態(tài)改為了睡眠狀態(tài),有效降低了能耗。
針對異構的無線傳感器網絡,本文提出了一種能量有效的基于虛擬骨干網的WSN范圍選擇再編程協(xié)議。協(xié)議的關鍵是建立層次路由,即在軟件更新的數據傳輸之前,綜合考慮更新的應用程序、剩余能量、有效度數和節(jié)點間的鏈路質量,選出合適的核心節(jié)點,創(chuàng)建虛擬骨干網。減少了參與再編程的節(jié)點數,降低了能量消耗,實現(xiàn)了范圍選擇。在虛擬骨干網的創(chuàng)建過程中,同時完成節(jié)點與其父節(jié)點之間的同步設置,以便于數據傳輸時協(xié)調調度并引進睡眠機制,從而進一步節(jié)省能量的消耗。數據傳輸分為兩個階段,在第一階段軟件影像首先由Sink節(jié)點通過流水線的方式,可靠的傳輸給核心節(jié)點;在第二階段由核心節(jié)點并行傳輸到需要的普通節(jié)點,有效減少了時間的延遲。協(xié)議中假定了,再編程時只負責轉發(fā)的非成員節(jié)點,不考慮自身的能耗問題,“無私”的完成轉發(fā)軟件影像的任務。再編程結束后,這些節(jié)點可能由于能量所剩無幾,而無法繼續(xù)正常的傳感工作。將來主要研究,非成員節(jié)點如何根據要傳輸的軟件影像的大小和節(jié)點的剩余能量,在保證后續(xù)工作能夠正常進行的情況下參與再編程,完成軟件影像的可靠轉發(fā)。
[1]譚勁,陳曉竹,劉硯秋.無線傳感網絡再編程研究[J].電子器件,2008,31(3):1049-1053.
[2]Shilpa M,Jyoteesh M.Energy Efficient Control Strategies in Heterogeneous Wireless Sensor Networks:A Survey[J].International Journal of Computer Application,2011,14(6):31-37.
[3]潘巨龍,李善平,吳震東,等.一種基于無線傳感器網絡安全的社區(qū)衛(wèi)生保健監(jiān)護系統(tǒng)設計[J].傳感技術學報,2009,22(6):838-843.
[4]Nils Aschenbruck,Jan Bauer,Jakob Bieling,et al.Selective and Secure Over-the-air Programming for Wireless Sensor Networks[C]//2012 21st International Conference on Computer Communications and Networks,ICCCN 2012.
[5]Wang Qiang,Zhu Yaoyao,Cheng Liang.Reprogramming Wireless Sensor Networks:Challenges and Approaches[C]//IEEE Network,2006,20(3):48-55.
[6]Sun Junzhao.Dissemination Protocols for Reprogramming Wireless Sensor Networks:A Literature Survey[C]//4th International Conference on Sensor Technologies ans Applications,Sensorcomm,2010:151-156.
[7]Levis P,Patel N,Shenker S,et al.Trickle:A Self-regulating Algorithm for Code Propagation and Maintenance in Wireless Sensor Networks[C]//Proceedings of the First USENIX/ACM Symposium on Networked Systems Design and Implementation(NSDI),2004,15-28.
[8]Jonathan W Hui,David Culler.The Dynamic Behavior of a Data Dissemination Protocol for Network Programming at Scale.[C]//Proc.SenSys’04,Baltimore,Maryland,USA,November 2004.
[9]Sanded S.Kulkarni,Limin Wang.MNP:Multihop Network Programming for Sensor Networks[C]//Proc 25th IEEE International Conference on Distributed Computing Systems(ICDCS 2005),Columbus OH,June 2005,7-16.
[10]Sandeep S.Kulkarni,Limin Wang,Energy-Efficient Multi-hop Reprogramming For Sensor Networks[J].ACM Transactions on Sensor Networks(TOSN),2009,5(2): - .
[11]Nail V,Arora A,Sinha P,et al.Sprinkler:a Reliable and Energy Efficient Data Dissemination Service forWireless Embedded devices[C]//Proc.of the 26th IEEE International Real-Time Systems Symposium(RTSS 2005),Miami,F(xiàn)L,USA,December 2005.
[12]Leijun Huang,Sanjeev Setia.CORD:Energy-efficient Reliable Bulk Data Dissemination in Sensor Networks[C]//27th IEEE Communications Society Conference on Computer Communications,INFOCOM,2008,1247-1255.
[13]Yu Y,Rittle L J.Supporting Concurrent Application in Wireless Sensor Networks[C]//Conference On Embeded Networked Sensor Systems,.ACM Press,2006,139-152.
[14]Phillips L A.Aqueduct:Robust and Efficient Code Progagation in Heterogeneous Wireless Sensor Networks[D].Master’s thesis,University of Colorado,2005.
[15]Lee K,Kim J,Thuy D D,et al.Multi-hop Network Re-programming Model for Wireless Sensor Networks[C]//5th IEEE Conference on Sensor,2006,884-887.
[16]譚勁,張曼曼.具有范圍選擇的傳感網絡再編程協(xié)議算法研究[J].傳感技術學報,2012,25(2):251-257.
[17]Pasztor B,Mottola L,Mascolo C,et al.Selective Reprogramming of Mobile Sensor Network through Social Community Detection[C]//Proc.of the European Conference on Wireless Sensor Networks,Coimbra,Portugal,F(xiàn)ebruary 2010.
[18]趙仕俊,陳琳,李曉東.能量高效的傳感器網絡虛擬骨干網構造算法[J].計算機應用,2007,27(8):1839-1845.
[19]Cheng X,Ding M,Du D,et al.Virtual Backbone Construction in Multichip Ad Hoc Wireless Networks[J].Wireless Communications and Mobile Computing,2006,6:183-190.