王國玲,楊文忠,張振宇,夏揚波,殷亞博,楊慧婷
(1.新疆大學(xué) 軟件學(xué)院,烏魯木齊 830046; 2.新疆大學(xué) 信息科學(xué)與工程學(xué)院,烏魯木齊 830046)
移動無線傳感器網(wǎng)絡(luò)是一種以數(shù)據(jù)為中心的延遲容忍無線網(wǎng)絡(luò)[1],節(jié)點由電池提供能量,并且當(dāng)節(jié)點的能量耗盡時給節(jié)點充電或更換電池極其困難,其次節(jié)點的通信距離有限并且由于節(jié)點的移動,節(jié)點間的鏈路連接動態(tài)變化[2-3]。在移動無線傳感器網(wǎng)絡(luò)中,設(shè)計有效的數(shù)據(jù)傳輸策略成為一個研究熱點,并且隨著人們對移動無線傳感器網(wǎng)絡(luò)的深入研究,使其廣泛應(yīng)用于野生動物監(jiān)測[4]、移動智能照明控制[5]等。
為了解決移動無線傳感器網(wǎng)絡(luò)的數(shù)據(jù)傳輸問題,學(xué)者們從不同的角度提出了相應(yīng)的算法。當(dāng)考慮節(jié)點屬性時,文獻(xiàn)[6]提出一種具有能量感知且負(fù)載均衡的路由算法,根據(jù)節(jié)點的剩余能量特征選出下一跳節(jié)點并進(jìn)行數(shù)據(jù)消息的傳輸。文獻(xiàn)[7]提出一種路由算法,考慮節(jié)點的位置坐標(biāo)和剩余能量,最終實現(xiàn)數(shù)據(jù)消息的傳輸。文獻(xiàn)[8]提出一種路由協(xié)議EAEpidemic (Energy Aware Epidemic),兩個節(jié)點相遇時彼此交換一個消息,包含節(jié)點緩存里的數(shù)據(jù)消息、能量水平和剩余緩存空間大小,選擇剩余能量和剩余緩存大小大于自己的鄰居節(jié)點,并向該鄰居節(jié)點復(fù)制對方?jīng)]有的數(shù)據(jù)消息。文獻(xiàn)[9]提出一種基于能耗自選演進(jìn)機制的延遲容忍網(wǎng)絡(luò)路由算法,依據(jù)節(jié)點的剩余能量狀態(tài),利用策略博弈模型確定節(jié)點是否轉(zhuǎn)發(fā)數(shù)據(jù)消息。文獻(xiàn)[10]提出一種路由算法LDM(a new routing algorithm based Location and Direction of Motion),基于隨機運動模型,考慮節(jié)點的運動方向與當(dāng)前位置分三種情況計算節(jié)點的傳輸概率??梢钥闯錾鲜鑫墨I(xiàn)提出的路由算法僅考慮節(jié)點的剩余能量、節(jié)點的剩余緩存和節(jié)點的運動方向,在現(xiàn)實生活中很多數(shù)據(jù)消息都有延遲要求,并且很多數(shù)據(jù)消息都是大小不一的,為此僅考慮節(jié)點屬性設(shè)計路由算法,缺乏一定的實用性。
當(dāng)考慮數(shù)據(jù)消息屬性時,文獻(xiàn)[11]提出一個自適應(yīng)的多步路由協(xié)議,選擇距離sink節(jié)點最近的相遇節(jié)點作為轉(zhuǎn)發(fā)節(jié)點,并且每一步路由都根據(jù)數(shù)據(jù)消息的延遲容忍度計算數(shù)據(jù)消息的副本數(shù),以便用最少的副本數(shù)達(dá)到期望的傳輸概率。文獻(xiàn)[12]提出一種路由協(xié)議FLDEAR(Fuzzy-Logic based Distance and Energy Aware Routing protocol),根據(jù)數(shù)據(jù)消息的大小、節(jié)點與sink節(jié)點的距離以及節(jié)點與sink的歷史訪問頻率計算節(jié)點的傳輸概率,從而選擇傳輸概率最大的鄰居節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)消息。為了提高數(shù)據(jù)消息的投遞率,文獻(xiàn)[13-14]根據(jù)數(shù)據(jù)消息的延遲容忍度對節(jié)點隊列里的數(shù)據(jù)消息排序,使得延遲容忍度低的數(shù)據(jù)消息可以優(yōu)先轉(zhuǎn)發(fā);可以看出沒有考慮節(jié)點的剩余能量屬性,這樣會導(dǎo)致網(wǎng)絡(luò)中節(jié)點的能量消耗不均勻,部分節(jié)點過早死亡,從而縮短網(wǎng)絡(luò)的生命周期。
為了彌補上述的不足,本文提出一種基于虛擬貨幣的路由策略,在選擇下一跳的時候既考慮節(jié)點的屬性又考慮數(shù)據(jù)消息的屬性,使得提出的路由策略更加合乎現(xiàn)實要求,而且能均衡網(wǎng)絡(luò)中節(jié)點的能量消耗,延長網(wǎng)絡(luò)的生命周期。需要發(fā)送數(shù)據(jù)消息的一方為買方,接收方為賣方,當(dāng)買方和賣方相遇時,根據(jù)節(jié)點的剩余能量和剩余緩存大小以及數(shù)據(jù)消息的延遲容忍度和數(shù)據(jù)消息的大小計算出價和要價,當(dāng)出價大于或等于要價時議價成功,買方向賣方發(fā)送數(shù)據(jù)消息并更新各自的財富值。
本文研究的是同構(gòu)傳感器網(wǎng)絡(luò),整個網(wǎng)絡(luò)的構(gòu)成包括一個位置固定在正方形監(jiān)測區(qū)域中心的sink節(jié)點和分布在該區(qū)域內(nèi)做隨機運動的普通傳感器節(jié)點,如圖1所示。普通傳感器節(jié)點擁有相同的存儲空間、相同的通信半徑R、相同的初始能量、相同的初始財富值M。
圖1 節(jié)點的分布
這里的財富值是借鑒經(jīng)濟學(xué)里的概念,財富值的大小表示節(jié)點的可用資源情況。節(jié)點的可用資源指節(jié)點的剩余能量和節(jié)點的剩余緩存空間。
定義1 移動模型。采用隨機移動模型Random Waypoint,運動的節(jié)點通過GPS或其他定位方法知道此次運動起點的位置,并且隨機確定此次運動的目的地,朝著目的地以某個位于[vmin,vmax]的速度做勻速直線運動,到達(dá)目的地后隨機停留一段時間,然后以此次的目的地作為下一次的運動的起點。如圖2所示。
圖2 節(jié)點的運動模型
定義2 議價模型。兩個節(jié)點相遇時,需要轉(zhuǎn)發(fā)或發(fā)送數(shù)據(jù)消息的一方視為買方,接收數(shù)據(jù)消息的一方視為賣方。買方和賣方都是根據(jù)數(shù)據(jù)的延遲容忍度、數(shù)據(jù)大小、自己的剩余能量和緩存空間利用率進(jìn)行定價,當(dāng)出價大于或等于要價時交易成功,即可進(jìn)行消息的復(fù)制并轉(zhuǎn)發(fā);否則交易失敗,節(jié)點繼續(xù)運動,等待跟其他節(jié)點的相遇。
定義3 數(shù)據(jù)消息的延遲容忍度。每個傳感器都裝有一個計時器,當(dāng)采集到某個數(shù)據(jù)并形成數(shù)據(jù)消息時開始倒計時,如果在數(shù)據(jù)消息被成功傳輸?shù)絪ink節(jié)點之前延遲容忍度Tj減為0,則該數(shù)據(jù)消息失效。為簡明起見,數(shù)據(jù)消息從買方被復(fù)制到賣方所花的時間忽略不計。
定義4 緩存空間利用率。緩存空間利用率Sj表示節(jié)點j中已占用的空間與初始緩存空間的比值,緩存空間利用率越高,表示剩余緩存空間就越小。sink節(jié)點的緩存空間不受限,普通傳感器節(jié)點的緩存空間都受限,一旦剩余緩存空間為0,則再來數(shù)據(jù)消息時將與節(jié)點緩存隊列里延遲容忍度最大的數(shù)據(jù)消息比較,并決定是否替換。
針對移動無線傳感器網(wǎng)絡(luò)中節(jié)點做隨機運動的路由問題,前人作了相應(yīng)的研究,提出了相關(guān)的路由算法??梢钥闯龃蠖喽际腔谙嘤龉?jié)點的傳輸概率進(jìn)行數(shù)據(jù)消息的復(fù)制轉(zhuǎn)發(fā);而且節(jié)點在計算傳輸概率時考慮的因素不全,沒有綜合考慮節(jié)點的屬性和數(shù)據(jù)消息的屬性;此外節(jié)點在進(jìn)行隨機運動時,其運動速度和運動方向都是隨機的,過分依靠節(jié)點的傳輸概率進(jìn)行數(shù)據(jù)消息的復(fù)制轉(zhuǎn)發(fā)意義不是很大,反而會浪費節(jié)點寶貴的能量資源和計算資源,甚至?xí)e過最佳的數(shù)據(jù)消息轉(zhuǎn)發(fā)機會。因此有效的數(shù)據(jù)消息路由算法應(yīng)該具備以下幾個特點:1)下一跳節(jié)點的選擇應(yīng)該綜合考慮節(jié)點的剩余能量、緩存空間大小等節(jié)點屬性以及數(shù)據(jù)消息大小、延遲容忍度等數(shù)據(jù)消息的屬性;2)刪除無效數(shù)據(jù)消息,避免無效消息帶來的資源浪費,甚至影響有效數(shù)據(jù)消息的轉(zhuǎn)發(fā)和傳輸;3)均衡整個網(wǎng)絡(luò)中節(jié)點的能量消耗,避免部分節(jié)點能量消耗過大,從而延長網(wǎng)絡(luò)的生命周期。
采用簡單無線通信能耗模型[15]。由于通信模塊的能量消耗最大[16],簡單起見,只考慮節(jié)點在發(fā)送數(shù)據(jù)消息和接收數(shù)據(jù)時的能量消耗,忽略其他方面帶來的能量消耗。節(jié)點在發(fā)送數(shù)據(jù)消息時的能量消耗與距離d和數(shù)據(jù)長度L有關(guān),當(dāng)d小于距離閾值d0時采用自由空間模型,當(dāng)d大于距離閾值d0時采用多徑衰減模型。
圖3 能耗模型
如果節(jié)點發(fā)送Lb的數(shù)據(jù),傳輸距離為d時,所消耗的能量滿足以下公式:
(1)
其中:Eelec為發(fā)送的能耗,εfs和εmp是功率放大這部分能耗的系數(shù)。
如果節(jié)點接收Lb的數(shù)據(jù)包,那么能量消耗如下:
ERX(l)=lEelec
(2)
本文假設(shè)節(jié)點的通信半徑R小于d0,兩個節(jié)點相遇時,節(jié)點發(fā)送長度為Lb的數(shù)據(jù)消息時能量消耗為:
ERX(l)=lEelec+lεfsd2
(3)
節(jié)點發(fā)送和接收長度為Lb的數(shù)據(jù)消息時總能量消耗為:
E(l)=2lEelec+lεfsd2
(4)
為了解決節(jié)點基于隨機運動模型的路由問題,本文提出了一種基于虛擬貨幣的低能耗數(shù)據(jù)傳輸機制——DTVC(Data Transmission based on Virtual Currency)。數(shù)據(jù)消息字段如圖4所示,Nop表示協(xié)議信息,Seq表示數(shù)據(jù)消息的ID,SID表示源節(jié)點ID,JID表示目的節(jié)點的ID,L表示數(shù)據(jù)消息的長度,RSD表示數(shù)據(jù)消息的延遲容忍度?;舅枷朊枋鋈缦拢簲y帶數(shù)據(jù)消息的節(jié)點在隨機運動的過程中若與其他節(jié)點相遇,先向?qū)Ψ桨l(fā)送一個包含需要轉(zhuǎn)發(fā)或傳輸?shù)臄?shù)據(jù)消息的ID、數(shù)據(jù)消息的目的節(jié)點的ID、數(shù)據(jù)消息的大小、發(fā)送節(jié)點的剩余能量以及數(shù)據(jù)消息的延遲容忍度的hello包;收到hello包后先查看數(shù)據(jù)消息的ID和目的節(jié)點的ID,若接收節(jié)點緩存里沒有該數(shù)據(jù)消息,則回復(fù)一個包含接收節(jié)點的ID、接收節(jié)點的剩余能量和該數(shù)據(jù)消息的ID的ACK確認(rèn)信息;發(fā)送節(jié)點查看ACK確認(rèn)信息后,若接收節(jié)點是數(shù)據(jù)消息的目的節(jié)點,則直接發(fā)送數(shù)據(jù)消息,否則根據(jù)定價規(guī)則進(jìn)行出價,接收節(jié)點根據(jù)定價規(guī)則進(jìn)行要價,如果成交則把數(shù)據(jù)消息發(fā)送給接收節(jié)點并更新財富值,否則繼續(xù)運動等待與其他節(jié)點相遇。
圖4 數(shù)據(jù)消息的構(gòu)成
Fig. 4 Composition of data messages
兩個節(jié)點相遇后,根據(jù)規(guī)定的定價機制進(jìn)行定價,如果買方的出價大于或等于賣方的要價即c≥b,則交易成功。設(shè)買方的出價為c,賣方的要價為b,對應(yīng)如下:
(5)
其中:α、β和γ為節(jié)點的剩余緩存空間、數(shù)據(jù)的延遲容忍度和節(jié)點剩余能量對應(yīng)的權(quán)重,且α+β+γ=1,L是數(shù)據(jù)消息的長度,Tm指當(dāng)前數(shù)據(jù)消息m的延遲容忍度,Tinit指數(shù)據(jù)消息產(chǎn)生時的延遲容忍度,Sj指節(jié)點j的空間利用率,Ej_res指節(jié)點j的剩余能量,Einit指節(jié)點j的初始能量。
(6)
其中:Tinit、Tm和Einit的含義跟上式相同,Sk指節(jié)點k的空間利用率,Ek_res指節(jié)點k的剩余能量,ω、η和θ是對應(yīng)的權(quán)重,且ω+η+θ=1。買方和賣方按規(guī)定的定價機制進(jìn)行定價,從而決定此次交易是否成功。
由式(5)可知α、β、γ為節(jié)點緩存空間、數(shù)據(jù)消息延遲容忍度和節(jié)點剩余能量對應(yīng)的權(quán)值。矩陣A里的aij表示要素i較要素j的重要程度,所以矩陣的對角線上都取值為1,并且aij=1/aji。對買方來說,希望把延遲容忍度小的數(shù)據(jù)消息傳輸出去,并且剩余緩存空間越小以及剩余能量越小越急切把消息傳輸出去,所以緩存空間較延遲容忍度重要性小一些,較剩余能量重要性也小一些,延遲容忍度較剩余能量重要性小一些。A里的第一行取值為1,1/3和1/5,第二行取值為3,1,1/7,判斷矩陣A的全部取值如下:
由式(6)可知ω、η、θ為節(jié)點緩存空間、數(shù)據(jù)消息延遲容忍度和節(jié)點剩余能量對應(yīng)的權(quán)值。矩陣B里的每個值的含義與A類似,對賣方來說,當(dāng)節(jié)點的剩余能量很小以及緩存空間小時就不愿意接收消息,所以緩存空間較延遲容忍度重要性大一些,較剩余能量重要性也小一些,延遲容忍度較剩余能量重要性小一些。B里的第一行取值為1、5和1/7,第二行取值為7、1、1/3,判斷矩陣B的全部取值如下:
采用動態(tài)多副本進(jìn)行數(shù)據(jù)消息的轉(zhuǎn)發(fā),具體的轉(zhuǎn)發(fā)過程描述如下:
步驟1 準(zhǔn)備階段。節(jié)點j攜帶數(shù)據(jù)消息s和節(jié)點k相遇,首先節(jié)點j向節(jié)點k發(fā)送一個hello包,之后收到來自節(jié)點k的確認(rèn)信息ACK,若節(jié)點k的緩存里沒有數(shù)據(jù)消息s并且是數(shù)據(jù)s的目的節(jié)點,節(jié)點j直接發(fā)送數(shù)據(jù)消息s,轉(zhuǎn)步驟5;否則節(jié)點j根據(jù)式(5)計算出價c,轉(zhuǎn)步驟2。
步驟2 服務(wù)請求。節(jié)點j向節(jié)點k發(fā)出包含數(shù)據(jù)消息s的ID、長度l和出價c的服務(wù)請求。
步驟3 服務(wù)應(yīng)答。節(jié)點k對該請求消息進(jìn)行查看,如果緩存里的數(shù)據(jù)消息的ID跟數(shù)據(jù)消息s的ID都不同,則節(jié)點k根據(jù)(6)計算要價b,并把b和c進(jìn)行比較,如果c≥b,給出一個包含數(shù)據(jù)消息ID以及成交價格0.5(b+c)的確認(rèn)信息,表示愿意接收該數(shù)據(jù)消息,轉(zhuǎn)步驟4;否則此次交易失敗,節(jié)點j攜帶數(shù)據(jù)消息s繼續(xù)運動。
步驟4 數(shù)據(jù)發(fā)送。節(jié)點j收到確認(rèn)信息后,如果節(jié)點j對數(shù)據(jù)s是源節(jié)點,需要對數(shù)據(jù)s進(jìn)行一次復(fù)制;否則不復(fù)制直接發(fā)送數(shù)據(jù)消息s給節(jié)點k。
步驟5 財富值更新。節(jié)點j的財富值減0.5(b+c),節(jié)點k的財富值增加0.5(b+c)。
假設(shè)當(dāng)前有k′個節(jié)點進(jìn)入節(jié)點j的通信范圍,即有k′個節(jié)點與節(jié)點j相遇,令Σ={Ψk|1≤k′}表示k′個相遇節(jié)點的集合。數(shù)據(jù)消息傳輸算法如下:
輸入:相遇節(jié)點;
輸出:滿足條件的相遇節(jié)點并判斷是否需要復(fù)制。
Φ=?
fork=1 tok′
//識別相遇節(jié)點
do ifkis sink node
forward message(d,k);
//節(jié)點j直接把s發(fā)送給k
else nodejandkcalculate the pricecandb
ifc≥bthen
Φ=Φ∪Ψk;
end if
end if
end for
if the data messagesis sensed by nodej
forn=1 to |Φ|
do copy and forward message(s,Φn);
//節(jié)點j復(fù)制并轉(zhuǎn)發(fā)給滿足條件的節(jié)點Φn
else forn=1 to |Φ|
forward message(s,Φn);
//節(jié)點直接轉(zhuǎn)發(fā)給滿足條件的節(jié)點Φn
end for
end for
end if
時間復(fù)雜度分析 對于含n個節(jié)點的傳感器網(wǎng)絡(luò),識別鄰居節(jié)點所花的時間為O(n),之后節(jié)點進(jìn)行數(shù)據(jù)消息的復(fù)制和傳輸所花的時間為O(1),刪除無效數(shù)據(jù)消息所花的時間也為O(1),所以最終算法的時間復(fù)雜度為O(n)。
空間復(fù)雜度分析 網(wǎng)絡(luò)中每個節(jié)點存儲的數(shù)據(jù)消息數(shù)為O(1)個,對于規(guī)模為n的傳感器網(wǎng)絡(luò),其空間復(fù)雜度為O(n)。
當(dāng)sink節(jié)點收到某個經(jīng)過中間節(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)消息后,廣播一個包含該數(shù)據(jù)消息ID的消息,網(wǎng)絡(luò)中的其他節(jié)點查看自己緩存空間里數(shù)據(jù)消息的ID,若有某個數(shù)據(jù)消息的ID跟sink節(jié)點廣播的數(shù)據(jù)消息ID相同,則直接刪除,根據(jù)文獻(xiàn)[17]可知sink節(jié)點廣播消息對網(wǎng)絡(luò)中正常數(shù)據(jù)消息傳輸?shù)挠绊懖淮?,為此本文忽略該影響。此外?jié)點會定期檢查自己緩存隊列里的數(shù)據(jù)消息,當(dāng)數(shù)據(jù)消息的延遲容忍度減為0時,作刪除處理。
選取文獻(xiàn)[12]提出的路由算法(FLDEAR)、文獻(xiàn)[9]提出的路由算法(一種基于能耗自選演繹機制的延遲容忍網(wǎng)絡(luò)路由算法)和FAD算法作為比較對象,選擇的原因是文獻(xiàn)[12]和文獻(xiàn)[9]提出的路由算法分別是2018年和2017年提出來的,比較新,F(xiàn)AD算法是比較經(jīng)典的路由算法。四種算法在默認(rèn)的仿真條件下針對網(wǎng)絡(luò)生命周期、數(shù)據(jù)消息傳送成功率和每個數(shù)據(jù)消息的平均副本數(shù)這幾個性能指標(biāo)進(jìn)行比較,并通過改變節(jié)點數(shù)從而改變節(jié)點密度以及改變節(jié)點的傳輸半徑觀察四種算法中每個數(shù)據(jù)消息平均副本數(shù)和數(shù)據(jù)消息的投遞率;值得注意的是,每個數(shù)據(jù)消息的平均副本數(shù)反映了網(wǎng)絡(luò)中節(jié)點的能量消耗情況,平均副本數(shù)越多,能耗越大。此外當(dāng)節(jié)點的緩存空間已滿,即緩存空間利用率為100%時,四種路由算法下節(jié)點只接收數(shù)據(jù)延遲容忍度比緩存列表中最大延遲容忍度小的數(shù)據(jù),并替換緩存列表中延遲容忍度最大的數(shù)據(jù)消息。以下實驗結(jié)果如未特別說明,均為50次實驗結(jié)果的平均值。
本文依據(jù)數(shù)據(jù)消息的延遲容忍度對消息進(jìn)行排隊,旨在提高網(wǎng)絡(luò)中數(shù)據(jù)消息的投遞率,因為延遲容忍度越低則優(yōu)先級越高,可以優(yōu)先得到傳輸。實驗部分將通過數(shù)據(jù)消息的投遞率和副本數(shù)指標(biāo)對算法進(jìn)行驗證。對于算法的時間效率,可以通過算法的時間復(fù)雜度分析得到。
1)網(wǎng)絡(luò)生命周期。
本文定義網(wǎng)絡(luò)的生命周期為從網(wǎng)絡(luò)開始運行到有一半傳感器節(jié)點能量耗盡時的時間間隔。
2)數(shù)據(jù)傳送成功率。
指最后被sink節(jié)點成功接收的所有數(shù)據(jù)消息的數(shù)目與所有源節(jié)點發(fā)送的數(shù)據(jù)消息數(shù)目的比值。反映的是在數(shù)據(jù)消息的有效期內(nèi),能夠成功被傳輸?shù)絪ink節(jié)點的數(shù)據(jù)消息的情況,數(shù)據(jù)消息投遞成功率越高表示網(wǎng)絡(luò)的效率越高。對應(yīng)的計算式為:Dsec=Dd/Ds,Dd表示被sink節(jié)點成功接收的數(shù)據(jù)消息的數(shù)量,Ds表示所有源節(jié)點發(fā)送的數(shù)據(jù)消息的數(shù)量。
3)數(shù)據(jù)消息的平均副本數(shù)。
指網(wǎng)絡(luò)中所有數(shù)據(jù)消息的數(shù)目與不同的數(shù)據(jù)消息個數(shù)的比值。每個數(shù)據(jù)消息的平均副本數(shù)反映數(shù)據(jù)消息在網(wǎng)絡(luò)中的冗余度以及網(wǎng)絡(luò)的能量消耗情況,平均副本數(shù)越多,冗余度越大,網(wǎng)絡(luò)中的能量消耗越多。
使用Matlab作為仿真軟件,主要仿真參數(shù)設(shè)置如表1所示。
表1 仿真實驗參數(shù)
3.2.1 節(jié)點通信半徑對性能的影響
傳感器節(jié)點通信半徑越大,與sink節(jié)點和網(wǎng)絡(luò)中其他傳感器節(jié)點相遇的可能性越大,那么數(shù)據(jù)消息的投遞率也隨之變大。為了驗證通信半徑對算法性能的影響,改變傳感器節(jié)點的通信半徑,并觀察4種路由算法下數(shù)據(jù)消息的投遞率和副本數(shù)的變化。仿真實驗結(jié)果如圖5所示。
圖5 節(jié)點通信半徑對算法性能的影響
從圖5(a)可以看出隨著傳感器節(jié)點的通信半徑逐漸增大,4種路由算法對應(yīng)的消息投遞率曲線都呈現(xiàn)上升的變化,其中本文提出的路由算法DTVC的消息投遞率高于其他3個算法。這是因為隨著節(jié)點通信半徑的增大,網(wǎng)絡(luò)中的節(jié)點可相遇的節(jié)點數(shù)增多,所以4種路由算法對應(yīng)的消息投遞率增大。本文提出的路由算法DTVC中,節(jié)點在傳輸數(shù)據(jù)消息的時候既考慮相遇節(jié)點的投遞能力又考慮數(shù)據(jù)消息的延遲容忍度,此外通過刪除網(wǎng)絡(luò)中的無效數(shù)據(jù)消息,從而節(jié)省網(wǎng)絡(luò)中節(jié)點的能量消耗并提高節(jié)點緩存空間的有效利用,所以網(wǎng)絡(luò)中數(shù)據(jù)消息的投遞率最高。FAD算法中,數(shù)據(jù)消息的傳輸類似于傳染算法,之后依據(jù)消息的容錯大小決定其轉(zhuǎn)發(fā)優(yōu)先級,但是傳感器節(jié)點的存儲空間有限,隨著網(wǎng)絡(luò)的運行傳感器節(jié)點的緩存隊列很快就會被用完,節(jié)點會刪除容錯最大的數(shù)據(jù)消息,當(dāng)網(wǎng)絡(luò)中節(jié)點產(chǎn)生數(shù)據(jù)消息的頻率很高時,數(shù)據(jù)消息還來不及傳輸就被節(jié)點刪除。文獻(xiàn)[12]提出的路由算法只考慮傳感器節(jié)點剩余能量和距離2個因素,沒有考慮數(shù)據(jù)消息的屬性,延遲容忍度較低的數(shù)據(jù)消息可能會因為沒有及時被傳輸而失效。文獻(xiàn)[9]提出的路由算法中,傳感器節(jié)點根據(jù)自身的剩余能量決定是否轉(zhuǎn)發(fā)接收到的數(shù)據(jù)消息,導(dǎo)致很多數(shù)據(jù)消息被中間轉(zhuǎn)發(fā)節(jié)點直接丟棄,其次沒有對節(jié)點的緩存隊列進(jìn)行有效地管理。
從圖5(b)可以看出隨著傳感器節(jié)點的通信半徑逐漸增大,4種路由算法對應(yīng)的數(shù)據(jù)消息平均副本數(shù)曲線都呈現(xiàn)上升的趨勢。其中路由算法DTVC的消息平均副本數(shù)低于其他3個算法。這是因為當(dāng)網(wǎng)絡(luò)中的節(jié)點可相遇的節(jié)點數(shù)增多時,滿足條件的鄰居節(jié)點數(shù)隨著增多。本文提出的路由算法DTVC中,為了控制數(shù)據(jù)消息的副本數(shù),規(guī)定只有源節(jié)點可以復(fù)制數(shù)據(jù)消息。而其他3個路由算法中,復(fù)制數(shù)據(jù)消息時不分源節(jié)點和中繼節(jié)點,所以會使得數(shù)據(jù)消息的冗余度大于DTVC。
3.2.2 節(jié)點密度對性能的影響
本文通過改變網(wǎng)絡(luò)中的傳感器節(jié)點數(shù)目控制節(jié)點密度。不失一般性,節(jié)點密度越大,網(wǎng)絡(luò)中任意2個節(jié)點相遇的可能性也就越大,數(shù)據(jù)消息的投遞率也會隨著增大;但是隨著節(jié)點密度的增加,采用多副本傳輸時網(wǎng)絡(luò)中數(shù)據(jù)消息的副本數(shù)也會增多,從而增加網(wǎng)絡(luò)的負(fù)載和能量消耗。圖6(a)顯示了節(jié)點密度對4種算法中數(shù)據(jù)消息投遞率的影響,可以看出隨著節(jié)點密度的逐漸增大,4種路由算法對應(yīng)的數(shù)據(jù)消息投遞率都在增大,但是增加的幅度越來越小。這是因為隨著節(jié)點密度的增大,數(shù)據(jù)消息可以通過源節(jié)點直接傳輸給sink節(jié)點和通過中繼節(jié)點轉(zhuǎn)發(fā)給sink節(jié)點的可能性都在增大,但是隨著節(jié)點數(shù)的不斷增多,增加的數(shù)據(jù)消息副本數(shù)帶來的投遞率就不那么明顯了。從圖6(b)可以看出節(jié)點密度對4種算法平均副本數(shù)的影響,可以看出消息的副本數(shù)隨著節(jié)點密度的增大而增多。原因如前面所述。
本文在前人工作的基礎(chǔ)上,通過對移動傳感器網(wǎng)絡(luò)中基于多副本傳輸?shù)穆酚蓡栴}作進(jìn)一步研究,當(dāng)節(jié)點做隨機運動時提出了低能耗數(shù)據(jù)消息傳輸機制DTVC。按照傳統(tǒng)思想,發(fā)送節(jié)點在轉(zhuǎn)發(fā)數(shù)據(jù)消息的時候大多從鄰居節(jié)點中選擇傳輸概率比自己大的節(jié)點,本文不依賴于相遇節(jié)點的傳輸概率,而是根據(jù)發(fā)送節(jié)點和接收節(jié)點的屬性以及數(shù)據(jù)消息的屬性來決定是否進(jìn)行數(shù)據(jù)消息的轉(zhuǎn)發(fā)。此外為了減少網(wǎng)絡(luò)中不必要的能量消耗,刪除無效數(shù)據(jù)消息。下一步的工作是考慮網(wǎng)絡(luò)異構(gòu)時如何實現(xiàn)數(shù)據(jù)的有效傳輸路由問題。
圖6 節(jié)點密度對算法性能的影響