李 華,劉占偉,郭育艷
(1.河南工程學院 a.計算機學院; b.理學院, 鄭州 451191;2.河南財經政法大學 科研處, 鄭州 450046)
無線傳感器網絡(wireless sensor network,WSN)是低成本、小型和能量有限的多功能微型傳感器節點的集合[1],已被廣泛應用于戰場監測、醫療保健、環境監測、國土安全等領域[2-4]。當WSN中節點密集部署時,通常會產生冗余數據,將這些冗余數據傳輸到基站會增加網絡中的能量消耗和擁塞。 此時可以用一個聚合節點將這些數據包收集起來,然后再轉發給基站。將多個數據包轉換為一個數據包的過程稱為數據聚合[5]。目前,數據聚合的方法主要包括統計方法[6]、概率方法和人工智能[7]等。
現有的用于數據傳輸的數據聚合協議大致分為兩類:基于結構[8]和無結構[9-10]的數據聚合協議。在基于結構的數據聚合中,傳感器節點以不同的結構收集數據,通過創建鏈、樹、聚類、樹聚類或層次聚類將數據傳輸到基站。結構化數據聚合的性能取決于從下游節點接收到的中間節點數據的等待時間。一個小的等待期可能會導致較差的聚合,而長時間的等待可能會導致較高的延遲。文獻[11]提出一種基于樹的協議,在所有傳感器節點中隨機選擇根節點,然后開始構建分層路徑以形成樹結構。文獻[12]提出一種樹狀數據收集協議TCDGP,它是基于樹和簇的混合。TCDGP根據傳感器節點的位置和能量信息形成簇,在最小生成樹中建立一條路徑。接收器計算簇頭之間的距離以形成樹。 然而,這些基于結構的數據聚合協議在網絡結構的構建過程中消耗了大量的能量。
在無結構的數據聚合方法中,具有相似數據的多個源選擇相同的下游節點,使得冗余數據可以在該節點聚合,并且不需要構建結構而消耗能量。文獻[13]中提出一種無結構數據聚合協議,不使用任何顯式的結構進行數據聚合。該協議通過基于MAC層任意傳播的方法實現了空間收斂,稱為數據感知式傳播(DAA)。文獻[14]提出另一種無結構的數據聚合協議(RAG)處理冗余數據而不消耗構建結構所需的能量。RAG使用智能等待策略處理實時WSN中的時間和空間冗余。智能等待策略在中間節點處計算每個轉發報文的等待時間,使得它可以在規定的時間范圍內傳送給基站。然而,由于節點向所有相鄰節點廣播控制消息,導致協議能量消耗增加。在接近匯聚節點處,報文可能經歷更多的延遲,并且RAG增加報文傳輸的速度以滿足期限約束,這增加了更多的能量消耗并且可能導致擁塞。文獻[15]提出一種在多跳網絡中運行的無結構和能量平衡的數據聚合協議(SFEB)。它假設具有相同事件標識(EID)的數據包可以被聚合,通過將網絡劃分為平行四邊形來選擇主要聚合器和次要聚合器。通過選擇等待時間來提高數據聚合效果。但是,在無結構的數據聚合中,用于接收數據包的下游節點的數量并不固定,容易引起網絡擁塞[10]。因此,還需要一個有效的緩沖區管理和調度方案來避免網絡擁塞并提高吞吐量。
本文在無結構數據聚合方法的基礎上,提出了一種基于近源數據聚合的路由協議,以確保有效的數據聚合和避免網絡擁塞,且不需要對結構進行明確的維護。本文方法主要分為3個部分:① 下一跳節點選擇,即根據下一跳節點的剩余能量、可用緩存空間以及與當前節點的鏈路強度來計算成本函數,根據成本函數來選擇下一跳。 ② 無結構近源數據聚合,即為每個節點設定合理的數據接收時間,并對大量數據進行數據聚合,去除冗余數據,減少傳輸能耗。③ 擁塞控制,即每個節點根據當前接收的數據量和緩存狀況,自適應調整接收率,避免節點擁塞實現能量均衡,并降低傳輸延遲。上述3個部分相互協作,下一跳節點選擇用于動態構建最佳傳輸路由;近源數據聚合用于降低數據包維度;擁塞控制用于均衡節點能量。 當一個節點啟動擁塞控制時,其上一跳節點會重啟節點選擇過程,選擇其他節點進行數據傳輸。
拓撲控制使用最小的功率保持連接,可以減少多余節點及其密集部署所產生的能耗。在邏輯拓撲構建階段,傳感器節點必須知道自己、相鄰節點和基站的位置。
在一定區域內部署傳感器之后,基站通過廣播“HELLO”消息來啟動拓撲結構構建過程。接收到這個“HELLO”消息的節點向下一節點發送“HELLO”消息。每個節點在隨機設定的等待時間之后發送“HELLO”消息以避免對等節點之間的沖突。“HELLO”消息包含節點ID、位置信息、能量級別、緩沖區狀態和到達基站的跳數(hc)。基站廣播的HELLO消息中hc=0。收到從基站發送的HELLO消息時,傳感器節點將其hc設置為1,并發送HELLO消息到下一跳節點。接收到這個HELLO消息的節點將其hc設置為2,依此類推。節點會從接收到的多個HELLO消息中選擇具有最小hc值的鄰居,并將自己的hc設置為hc+1。該過程持續,直到所有節點都包含在層次結構中。對未包含在邏輯拓撲中的孤立節點,廣播HELLO消息使鄰居節點知道它們的位置。孤立節點在接收到來自鄰居的HELLO消息后設置它們的位置和hc。
本文不構建靜態結構,而是使用無結構拓撲,其中傳感器節點的層次結構決定數據轉發到某個非特定節點。在拓撲構建階段之后,每個節點知道其無線電范圍內的所有相鄰節點的可用能量、位置和緩沖器占用率。邏輯拓撲在開始時只構造1次,不需像基于結構的拓撲結構一樣需要重復構建。WSN本質上是動態的,當節點死亡時拓撲發生變化。基于結構的拓撲控制協議在網絡能量低于閾值能量水平時,或者在網絡中有大量節點死亡之后會重啟拓撲構建階段。這增加了網絡中大量的能源消耗。
本文提出的協議通過采用無結構的數據傳輸方法節省能量。在附近節點死亡的情況下,根據成本函數選擇新節點進行數據傳輸。因此,所提出的協議可以在不重構拓撲的情況下處理拓撲變化。
在一些WSN應用中,需要較高的檢測可靠性,所以會將傳感器節點密集部署,但這樣會產生高度相關和冗余的數據。可以選擇性地將感測到的數據轉發到聚合點,以此來最小化數據傳輸時的能量消耗。
例如,在森林資源監控應用中,整個森林可以分為多個子區域。需要對森林的不同分區進行不同程度的監測。含有珍貴樹木的分區域需要受到高度關注。同樣,在基于WSN的醫療保健應用中,ICU患者應該比普通患者受到更多的關注。因此,可以給子區域分配不同的可靠性權重(wj, 1≤j≤ns),其中ns是子區域的數量。分配給子區域的權重因子決定了該區域的QoS要求,如延遲和數據傳輸率。
本文所提出的方法基于所需的可靠性要求等級將整個感測區劃分成子區域。用于感測數據的傳感器數量是根據該區域的可靠性要求決定的。事件發生在可靠性要求較高的地區,需要從傳感器節點收集更多的數據。因此,需要智能傳輸數據以達到區域所需的可靠性水平并節約能源。
如果事件發生在傳感半徑(dsense)內,則傳感器節點可以感測事件。在感測到事件之后,每個傳感器節點將可靠性因子(rf)分配給其感測的數據。感測數據的rf根據距離度量來計算,表示如下:
(1)
式中:dEvent_Sensor是事件與感知節點之間的距離,dsense是傳感器節點的感應半徑。
傳感器節點根據其rf決定是否傳輸數據。如果rf≥trf,則決定傳輸數據。節點的trf是事件的可靠性閾值。一個節點的trf通過下式計算:

(2)
基于結構的路由協議中源節點與目的地之間存在用于數據傳輸的固定路徑。當路徑中某個節點的能量耗盡或者網絡故障導致路由失敗時,建立新的路徑。因此,路由維護成本高。另一方面,無結構路由協議動態選擇下一跳節點進行數據轉發。在每輪通信中,可以動態地選擇不同的路徑。這種無結構的路由可以提供負載均衡和容錯能力,減少擁塞的可能性。
下一跳節點的選擇是無結構聚合和路由協議中的重要問題。算法1顯示了本文協議中基于成本函數的下一跳選擇過程的偽代碼。

算法1:下一跳選擇過程定義:DID為下一節點的ID;cfi為節點i的成本函數。執行傳感器節點發送DS;如果接收到的控制包非空,則 將此控制包的DID作為下一個節點的ID; 為該節點設置傳輸時間表;否則 傳感器節點開始感測事件E的數據DS; 對于每個節點i 計算其成本函數cfi; 將cfi中的最大值賦值給cfmax; 將具有cfmax的節點的ID作為下一個節點的ID; 為該節點設置傳輸時間表;結束結束
在所提出的協議中,下一跳節點是基于成本函數來選擇的。 根據下一跳節點的剩余能量、可用緩存空間以及當前節點與下一跳之間的鏈路強度來計算成本函數。
每個傳感器節點維護一個鄰居信息表,這有助于在數據轉發期間計算成本函數和下一跳節點選擇。鄰居信息表包含下一跳鄰居節點的節點id(NID)、坐標位置(N(x,y))、可用緩沖區(Buffst)、鏈路強度(ls)和剩余能量(Eresd)等信息。
當一個節點檢測到數據或從其他節點接收到數據報文后需要轉發給基站時,該節點首先從鄰居信息表中為其所有下一跳節點計算成本函數。節點j(Nj)會選擇具有最大成本函數值(cfmax)的下一跳節點i(Ni)。cfmax計算如下。
(3)
式中:N表示Nj的一組鄰居,∝是根據Nj和Ni之間距離的倒數計算的權重因子。
(4)
節點i的剩余能量計算如下:
Eresd.i=Elevel.i-{(ETX(k,dtran))+
(5)
ETX(k,d)是將k個比特傳輸到距離dtran所需要的能量,其中dtran等于傳感器節點的最大傳輸范圍;RRX(k)是接收數據包所需的能量,且RRX(k)=Eelec×k;Eagg是用來聚合np數據包所需的能量。
可用緩沖區空間是根據當前的緩沖區狀態和從Nj鄰居節點傳輸數據的預期數量來計算的。Buffst和Elevel通常包含在用于數據包發送的確認包中,并在鄰居信息表中更新。可用于節點i的緩沖區計算如下:

(6)
當鄰居節點收到確認報文時,根據式(7)更新鄰居節點的鏈路強度ls。鏈路強度是Nj和Ni之間鏈路的信號干擾噪聲比(SINR)。RecSignal Power功率由式(8)計算得到,其中Recno.of bits是來自鄰居節點Ni的確認報文數據中的比特數。
(7)
RecSignal Power使用文獻[16]中公式計算得出:

(8)
式中Pr(d)是距離為d時的平均接收功率,由距離為d0時的參考功率Pr(d0)計算得到。β是路徑損耗指數,Xdb是均值為零、標準差為δdb的高斯隨機變量。
近源數據匯聚可以減少能源消耗、延遲和流量負載。在基于結構的數據聚合中,數據從其所有子節點定期收集,然后聚合形成單個數據包。基于結構的數據聚合在路由中聚合固定數量的數據包。需要匯聚的報文數量取決于路由結構。在無結構聚合中,聚合數據包的數量因節點而異。隨著數據包數量的增加,流量負載、緩存需求和網絡擁塞也會增加。因此,本文盡可能早地為事件聚合選定數據包。
有數據傳輸的節點在控制周期開始時將其定時器設置為(100-rf),然后開始遞減定時器。當一個節點的定時器變為零時,它將把控制數據包發送給相鄰節點。其他節點暫停它們的定時器并監聽該發送者的控制數據包。控制報文包含源ID、下一跳ID、報文類型和等待時間。鄰居節點設置它們的傳輸時間并將數據轉發到下一跳節點。所選擇的下一跳節點聚合接收到的數據,并將數據轉發到通向基站的下一跳節點。
接收到的數據包在聚合節點處被緩沖以用于數據聚合,然后將其發送到下一跳。聚合節點用于接收數據包的等待時間直接關系到聚合精確性和數據傳輸時延。如果等待時間過長,會造成傳輸時延較大;如果等待時間過短,又會使數據聚合不充分。為此,本文考慮網絡延遲約束,在滿足約束條件下合理設置等待時間,以提高聚合效果,降低網絡傳輸能耗。
設定聚合節點在數據聚合之前等待twexpt以收集大量的數據包,twexpt使用式(9)計算。對于WSN中的實時數據傳輸而言,感知的數據包必須滿足一定的時延限制報告給基站。總延遲取決于傳播延遲(τpro_delay)、傳輸延遲(τtran_delay)、信道接入延遲(τchan_delay)和緩沖延遲(τbuff_delay)。
twexpt={ (TTD-τpro_delay)-(hc[τtran_delay+
τchan_delay+τbuff_delay])} -β
(9)
截止時間(TTD)即剩余時間。τpro_delay表示為dn BS/ps,其中dn BS是聚合節點與基站之間的距離。ps是波的傳播速度。τtran_delay表示為k/rt,即以rt的數據速率發送k比特數據的時間。為了簡化計算,本文假設每跳緩沖時延和信道接入延遲不變。β是隨機松弛時間裕度,用于保證聚合數據在期限內傳送到BS。
本文假設WSN中傳感器節點最初是隨機部署的,但在空間上是一致的,基站位于網絡拓撲結構的特定點。每個傳感器節點都有1個唯一標識(NID)。源節點的數量是變化的。基站通過外部網絡連接到數據采集中心。設定每個節點都知道它的位置和基站的位置。 基站沒有資源限制,傳感器采用電池供電,能耗有限,物理性能相同。如果能量耗盡,傳感器不再工作。而且,源節點可以發送不同類型的數據報文,中間節點負責執行相同類型的報文網內聚合。不相鄰的節點通過逐跳相互通信。節點發送n個大小為k位的數據包到距離d,經過數據聚合后將這些數據包變為1個數據包。如果聚合后的數據包大于k,它將被分割為大小為k的多個包。如果聚合后的數據包小于k,它將被放大到k。算法2顯示了用于數據聚合的偽代碼。

在WSN中,基于結構的路由協議常被用來發現源-目的地對之間的用于數據傳輸的固定路徑。當下一跳節點的能量耗盡或者網絡故障導致路由失敗時,建立新的路徑。因此,路由維護成本高,控制負載均衡也是一項艱巨的任務。另一方面,無結構路由協議動態選擇下一跳節點進行數據轉發。因此,在每輪通信中,可以動態地選擇不同的路由路徑。這種無結構的路由可以提供負載均衡和容錯能力,減少擁塞的可能性。
路由協議中發生擁塞的原因可以歸納為:路由中下一跳節點的選擇采用啟發式策略,導致網絡中連接密度大的節點接收到大量報文,而當該類節點想要再次將接收到的報文信息轉發給目的節點時,所需的時間會很長。如果節點接收報文的速率大于報文發送的速率,隨著時間的推移,節點的剩余可用緩存逐漸減少,最后出現緩存溢出現象,也叫作節點擁塞。
在路由協議中,節點A依照數據轉發算法向節點B轉發報文m。為了防止節點B中出現緩存溢出現象,本文設置一個閾值,用來限制節點接收報文:當節點B接收到m報文后,節點B在C時間段內將接收到的所有報文信息成功轉發給目的節點的概率是PC,設定一個節點B的閾值pThres,那么節點B接收報文m的條件為PC>pThres,如果此條件不滿足,則拒絕接收。利用pThres來調整節點的擁塞程度。
由以上描述,在節點接收報文時附加一個額外條件,使節點的報文接收和報文發送呈現平衡狀態,避免了節點擁塞情況的發生。網絡中每個節點都能根據自身情況,合理、動態地調整自身閾值,使網絡中的擁塞達到最小,實現擁塞控制。以下為基于接收閾值的擁塞控制策略具體步驟:
步驟1節點A和節點B通過鄰居發現互相檢測。
步驟2節點A和節點B把自身攜帶信息中有關對方的目的地址互相遞交,節點A依照數據轉發算法,把自身緩存中能傳遞給節點B 的報文信息打包放入一個List1列表中,整體傳遞給節點B。該報文信息主要包括標識符ID、報文被傳輸的跳數hop、目的節點DstID等。
步驟3節點B接收報文信息的集合List1,并計算出其能在C時間段內將所有報文信息成功轉發給目的節點的概率PC。如果PC>pThres,則節點B將該報文信息的(ID、hop、PC)打包放入List2列表中。
步驟4節點B告知節點A自身需要的報文種類及順序。
步驟52個節點A、B間的報文接收轉發完成后,節點B更新自身的擁塞程度,并動態地調整自身閾值。
圖1給出了本文提出的路由協議基本流程圖。
本文通過NS-2.30來評估提出協議的性能。仿真的目的是將本文提出的協議與現有的無結構數據聚合協議RAG[14]和SFEB[15]進行比較。表1總結了所提出的協議的仿真參數。

圖1 本文協議流程
本文考慮在500 m×500 m的區域內隨機部署200~1 000個傳感器節點。傳感器節點的傳輸范圍(dtran)被設置為50 m,數據速率為1~100 kbit/s。傳感器節點的感應范圍是50 m。數據包長度為60個字節。每個傳感器節點具有0.6 J的初始能量。發送和接收比特的能量消耗是50 nJ/bit。傳感、聚合和無線電放大所消耗的能量分別為0.083 J/s、5 nJ/bit/signal信號和10 pJ/bit/m2。事件是每隔一定時間間隔(3~10 s)隨機產生的。具有相同事件ID的數據包可以被聚合。每個節點的緩沖區長度設置為65個數據包。傳感區域被隨機分為若干子區域,每個子區域在每個模擬中隨機分配傳感可靠性要求。本文運行模擬10次,每次35 s。取其平均值作為最終結果。
比較本文提出的協議與其他現有協議在平均能量消耗、丟包率和端到端延遲方面的表現。平均能量消耗是評估WSN性能的最重要參數。它顯示了數據傳輸過程中的能耗,有助于預測整個傳感器網絡的使用壽命。本文為每個生成的數據包設置RAG中的“Time-To-Deadline(TTD)”,以計算丟包率。端到端延遲是指從生成數據包傳送到目的地的時間。

表1 仿真參數
4.2.1平均能量消耗
圖2~4分別給出了3種協議在不同數據速率、事件生成時間和節點數量方面的平均能量消耗比較。由圖可知,隨著數據速率、感知能力、事件生成時間和節點數量的增加,本文協議比RAG協議和SFEB協議節省更多的能量。RAG協議采用等待策略來有效聚合數據包,以節約能源并消除原始數據的固有冗余。在SFEB協議中,所有節點都傳輸數據。在本文協議中,由于選擇性地轉發和聚合數據,這樣就節省了將數據包廣播給整個鄰居節點的時間,減少了多跳傳輸中的流量負載。
4.2.2丟包率
圖5~7分別給出了3種協議在不同數據速率、事件生成時間和節點數量方面的丟包率比較。當一個事件發生在一個感知域時,RAG協議和SFEB協議傳輸所有源節點的感知數據,本文協議則有選擇地傳輸數據包以滿足傳輸可靠性標準。

圖2 不同數據速率的平均能量消耗

圖3 不同事件生成時間的平均能量消耗

圖4 不同節點數量的平均能量消耗
在圖5中,丟包率隨著數據速率的增加而增加。由于本文協議中源節點的數量少于RAG協議和SFEB協議,所以本文協議比RAG協議和SFEB協議有更小的丟包率。圖6中,隨著事件生成間隔時間的增加,3種協議的丟包率均逐漸減小。流量負載隨著事件生成間隔時間的增加而減小,因此丟包率也越來越小。此外,由于本文協議中的流量負載較少,所以本文協議的丟包率比RAG協議和SFEB協議要小。圖7為節點數量和丟包率的關系。由于在WSN中部署密集的傳感器來感知區域中事件的發生,所以一個區域中可能有大量的傳感器節點,一個事件可能被多個傳感器感知和傳送。本文協議采用近源匯聚對事件信息進行匯總,在節點數量較高時表現出優異的性能。

圖5 不同數據速率下的丟包率

圖6 不同事件生成時間的丟包率

圖7 不同節點數量的丟包率
4.2.3端到端延遲
圖8~10給出了3種協議在不同數據速率、事件生成時間和節點數量方面的端到端延遲比較。本文的等待策略根據數據包的最后期限動態調整聚合節點中的等待時間限制。
從圖8可以看出,3種協議的端到端延遲隨著數據速率的增加而增加。在RAG協議中,由于數據速率的增加,路徑擁塞也增加,導致端到端延遲緩慢增加。而由于路徑擁塞、等待時間等因素,SFEB協議的端到端延遲隨著數據速率的增加而成比例地增加。由于本文協議選擇的發送者數量較少,所以比RAG協議和SFEB協議具有更少的流量負載。另外,本文協議融合了基于接收閾值的擁塞控制策略,因此在端到端延遲方面,本文協議的性能優于其他協議。圖9顯示了不同事件生成時間的端到端延遲。流量負載和事件報告頻率隨著事件發生時間的增加而降低。因此,3種協議的端到端延遲減少。
3種協議的端到端延遲與節點數量的關系如圖10所示。在SFEB協議中,數據聚合時間取決于聚合樹的下游節點。聚合樹隨著節點密度的增長而增長,因此SFEB協議中的端到端延遲增加。RAG協議的等待時間是通過聚合過程中的中間節點計算的。它基于敏感的報文傳送時間(截止時間TTD)來聚集報文。在RAG協議和本文協議中,數據包的優先傳輸時間表有助于滿足延遲敏感數據包的截止期限。因此,在高節點密度下,RAG協議和本文協議比SFEB協議執行更好的數據包傳輸。然而,由于實時數據包的優先級數據轉發,本文提出的協議在延遲方面優于RAG協議和SFEB協議。

圖8 不同數據速率的端到端延遲

圖9 不同事件生成時間的端到端延遲

圖10 不同節點數量的端到端延遲
本文提出了一種能量有效的近源數據聚合路由協議。在該協議中,將感測區域分成可靠性要求不同的子區域,允許選定數量的發送者根據可靠性要求發送感測數據。這不僅節省了傳感器的能耗,而且減少了網絡中的流量負載。較少的流量負載和融入的擁塞控制策略也減少了由于擁塞和丟失恢復造成的端到端延遲。此外,本文協議中使用的無結構近源數據聚合方法還節省了由于結構構建而導致的能量消耗,提高了無線傳感器網絡的性能。
在將來的研究中,考慮將提出的協議進一步進行修改和測試,使其能應用到動態環境的需求。