任秀麗,陳 洋
(遼寧大學 信息學院,沈陽 110036)
由于無線傳感器網絡(Wireless Sensor Network,WSN)的低成本性,因此被廣泛應用在各種領域。它是由一組有限的移動或靜態(tài)的節(jié)點組成,感知各種現象并將感知信息轉發(fā)到目的地[1]。傳感器網絡具有很強的應用相關性,不同應用中的路由協議可能差別很大,沒有一個通用的路由協議[2]。對于一些低延時事件,要解決由于網絡流量大而造成的數據包端到端延時較高的問題,同時保證節(jié)點間數據傳輸的質量。
文獻[3]中提出了基于簇的延時約束和能量高效的多跳(Delay-Constrained Energy Multi-hop,DCEM)路由協議,該協議提出能量成本函數和端到端延時函數用于簇間多跳路由算法,但是沒有考慮到節(jié)點間通信鏈路的質量對于數據包端到端延時的影響。文獻[4]中提出了無線傳感網中事件驅動的延時和能量高效的主動路由協議(Delay and Energy Efficient Proactive routing protocol for event-driven WSNs,DEEP),該協議構造了一個基于能量和延時的最短路徑樹,在感知相同事件的節(jié)點之間進行聚簇,通過最短路徑樹將數據發(fā)送到基站,但是在網絡流量大時可能產生較大的排隊延時。文獻[5]中提出了能量感知事件驅動的路由協議和動態(tài)傳輸方案(Energy Aware Event Driven Routing protocol and dynamic delivering scheme,EAEDR),該協議將低延時事件分割成兩個數據包,通過兩條路徑傳輸;由于在Sink節(jié)點處需要進行數據包的合并,因此難以保證兩個數據包會在延時容忍范圍內同時到達。文獻[6]中提出了基于鏈路質量和延時的復合負載均衡路由協議(link quality and delay based Composite Load Balancing routing protocol,ComLoB),該協議使用分組排隊延時和預期傳輸計數來度量節(jié)點到基站的路徑質量,通過隨機選擇下一跳節(jié)點公平地分配流量負載以避免擁塞;但路由表的更新以及隊列的監(jiān)控將產生更多的數據包在網絡中發(fā)送并占用數據包隊列,使得該協議的端到端延時更高。文獻[7]中提出了擁塞避免多路徑路由協議(Congestion Avoidance multipath routing protocol based on Routing Protocol for Low-power and lossy network,CA-RPL),該協議有效地結合了延時、鏈路可靠性和負載平衡因子,降低了平均延時和丟包率;但CA-RPL是在較低的數據流量情況下進行評估的,且隨著數據流量的降低,丟包率較RPL(Routing Protocol for Low-power and lossy network)[8]具有上升的趨勢。文獻[9]中提出了一種基于期望傳輸時間的多徑OLSR(MultiPath Optimized Link State Routing protocol based on Expected Transmission Time,SETT_MPOLSR),節(jié)點間的路由選擇基于預期傳輸次數以及帶寬值;但當節(jié)點的發(fā)包率增加后,網絡的分組投遞率下降較快。文獻[10]中提出了高魯棒性低延遲的路由協議(Robust Delay-aware Routing protocol,RDR),該協議通過路徑探測尋找延時表現最優(yōu)的路徑和潛在的協助節(jié)點,在數據發(fā)送階段使用多播動態(tài)選取路徑;但是,多播的使用會增加網絡中的數據包而造成數據包的碰撞和擁塞。
針對上述協議存在的數據傳輸延時較高以及丟包嚴重的問題,本文提出了一種數據傳輸延時優(yōu)化路由協議(Routing Protocol Optimized for Data Transmission Delay,RPODTD)。RPODTD給出一個新的路由選擇函數,綜合考慮節(jié)點的有效探測占比與傳輸效率等因素進行路由選擇,提高路由選擇的精確度;同時提出一種延時優(yōu)化策略,通過更改數據包傳輸的路徑,有效地降低數據包的排隊延時。
本文采用與文獻[11-12]相同的無線通信能耗模型。在該模型中,無線通信模塊發(fā)送數據的能耗主要在發(fā)送電路和功率放大電路,接收數據的能量消耗主要在接收電路。在保證合理信噪比的條件下,節(jié)點發(fā)送數據能耗為:
(1)
其中:k表示發(fā)送的二進制位數;d表示發(fā)送距離;Eelec(nJ/bit)表示射頻能耗系數;Efs(pJ/(bit·m2))和Emp(pJ/(bit·m4))表示不同信道傳播模型下的功率放大電路能耗系數。
節(jié)點接收數據能耗為:
ERx(k)=kEelec
(2)
本文假設無線傳感器網絡具有如下性質,與文獻[13-14]類似:
1)節(jié)點具有唯一的ID編號且均勻分布在監(jiān)測區(qū)域;
2)所有節(jié)點位置固定且能量有限;
3)基站位置固定且具有充足的能量;
4)所有節(jié)點具有相同的發(fā)送能力;
5)節(jié)點可根據接收信號的強度計算彼此之間的距離。
對于數據延時要求較高且網絡流量較大的網絡,數據包需要盡可能以較低的延時和丟包率發(fā)送到基站。本文采用的節(jié)點鏈路度量指標能夠更精確地度量節(jié)點之間的傳輸質量,保證數據的傳輸效率;同時,提出的延時優(yōu)化策略能夠有效地解決網絡流量大帶來的數據包端到端延時較高的問題。
數據傳輸過程中,節(jié)點間通信鏈路的質量直接影響數據包能否成功傳輸。當節(jié)點間傳輸數據時,節(jié)點成功發(fā)送數據包或者丟包之前要經過多次傳輸嘗試,用于探測信道是否空閑。根據IEEE 802.15.4的載波偵聽多路訪問/沖突避免(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA)算法,當節(jié)點有數據傳輸時,允許節(jié)點進行至多4次的信道探測[15]。根據數據包是否被成功接收,將節(jié)點的探測情況分為有效探測與無效探測,以下給出相關定義。
定義1 有效探測。節(jié)點在進行c(c≤4)次的探測后,成功地發(fā)送了數據包且收到了確認包,則稱節(jié)點進行了c次有效探測。
定義2 無效探測。節(jié)點在進行c(c≤4)次的探測后,放棄傳輸或者沒有收到確認包,則稱節(jié)點進行了c次無效探測。
圖1所示為節(jié)點的傳輸示意圖。圖1(a)為節(jié)點成功發(fā)送數據包的示意圖。當節(jié)點A進行c次探測后,信道空閑,則節(jié)點A發(fā)送數據包,A收到ACK表示數據被成功接收。圖1(b)為節(jié)點確認失敗的示意圖。節(jié)點A在c次探測后發(fā)送數據包,但沒有收到ACK,表明數據包在傳輸過程中丟失。圖1(c)為數據包發(fā)送失敗的示意圖。節(jié)點A進行4次探測后信道仍然繁忙,因此,放棄此次傳輸。
圖1 傳輸示意圖Fig. 1 Schematic diagram of transmission
2.1.1 節(jié)點有效探測占比度量
節(jié)點在信道探測后能否成功地發(fā)送數據包直接反映了節(jié)點間鏈路的質量。在一定時間內,節(jié)點有效探測的次數占總的探測次數的比例越大,表示節(jié)點間傳輸數據的質量越好。對于任意節(jié)點Nx,用Rxk表示節(jié)點Nk轉發(fā)節(jié)點Nx的數據包的有效探測占比,由式(3)給出:
(3)
其中:s表示成功發(fā)送數據包的個數;u表示數據包傳輸失敗的次數;ci表示第i次數據傳輸時探測信道的次數。
2.1.2 節(jié)點傳輸效率度量
本文將節(jié)點的傳輸效率作為評價節(jié)點之間通信能力的另一指標。節(jié)點的傳輸效率越高,表示節(jié)點間通信能力越好。用Exk表示節(jié)點Nk轉發(fā)節(jié)點Nx的數據包的傳輸效率度量,由式(4)給出:
(4)
2.1.3 節(jié)點的路由選擇函數
路由選擇函數是數據發(fā)送節(jié)點進行路由選擇的依據,包括節(jié)點的有效探測占比度量以及傳輸效率度量,是兩者的復合計算。為了消除量綱的影響,對其進行標準化處理,處理后的結果由式(5)和式(6)給出:
(5)
其中:maxRx和minRx分別表示節(jié)點Nx的候選路由節(jié)點的有效探測占比度量的最大值和最小值;rxk表示節(jié)點Nk的有效探測占比度量的標準化數值。
(6)
其中:maxEx和minEx分別表示節(jié)點Nx的候選路由節(jié)點的傳輸效率度量的最大值和最小值;exk表示節(jié)點Nk的傳輸效率度量的標準化數值。
對于節(jié)點Nx,其路由選擇函數由式(7)給出:
selectx(Nk)=αrxk+βexk
(7)
其中:selectx(Nk)是節(jié)點Nk在節(jié)點Nx路由表中的路由選擇函數的值;α,β為各度量指標的權重系數,且α+β=1。所有指標的數據值都是越大越好,因此節(jié)點選擇select值最大的候選路由節(jié)點作為下一跳。設置α=0.6,β=0.4,將在3.2節(jié)給出權重系數取值的實驗分析。
網絡初始化階段,Sink節(jié)點廣播初始化消息。節(jié)點間發(fā)送數據探測包,計算路由選擇函數的值,節(jié)點選擇靠近基站方向的鄰節(jié)點作為候選路由節(jié)點,保存到路由表。節(jié)點保存多個候選路由節(jié)點,使得數據傳輸不易受到節(jié)點失效的影響。
候選路由節(jié)點按照select值由大到小分配優(yōu)先級(1,2,…,n)。如果在一段時間內節(jié)點Nx的候選路由節(jié)點參與數據包傳輸,則根據已傳輸的數據包計算路由選擇函數的值;否則,鄰節(jié)點間周期性地發(fā)送數據探測包更新路由表。
Sink節(jié)點一跳范圍以內的節(jié)點直接向Sink發(fā)送數據,Sink節(jié)點一跳范圍以外的節(jié)點采用多跳的方式向Sink發(fā)送數據。每次傳輸數據時,數據發(fā)送節(jié)點在候選路由節(jié)點中選擇優(yōu)先級最高的作為下一跳節(jié)點。當節(jié)點的剩余能量不足以進行數據傳輸時,則從路由表中刪除該節(jié)點。
當監(jiān)測區(qū)域產生突發(fā)事件且流量較大時,數據需要盡可能以較低的延時發(fā)送到基站。由于網絡中的數據流量較大,網絡的擁塞和碰撞現象會造成數據包的丟失或延遲轉發(fā),使得數據包在節(jié)點處產生較大的排隊延時。在本節(jié)中,提出一種延時優(yōu)化策略,可以有效地降低數據包的排隊延時,從而使數據包盡可能以較低的延時傳輸到基站。該策略是通過改變數據包傳輸路徑,以解決排隊延時增加的問題。給定最大和最小兩個排隊延時閾值用于劃分排隊延時區(qū)間,數據接收節(jié)點根據數據包的排隊延時所屬的區(qū)間決定是否通知數據發(fā)送節(jié)點更改傳輸路徑。以下分為5部分敘述該延時優(yōu)化策略:閾值的取值分析、排隊延時的計算、路徑更改的判斷、路徑選擇及其實現。
2.3.1 閾值的取值分析
最小排隊延閾值Min和最大排隊延時閾值Max的最佳設置在傳感器節(jié)點的高效利用以及較低的平均端到端延時之間進行權衡。同時閾值的最佳設置也取決于節(jié)點緩沖區(qū)的大小。當閾值取值較小,在網絡流量較大時,數據發(fā)送節(jié)點會頻繁地更換路徑,降低傳感器節(jié)點的利用率;同時也意味著節(jié)點對于數據包傳輸過程中存在的突發(fā)狀況,例如數據包碰撞、丟包等原因造成的數據包延遲轉發(fā),具有較低的容忍度。當閾值的取值較大時,對于節(jié)點之間的鏈路較差的情況,會延長無效鏈路持續(xù)的時間,增加數據包的端到端延時。
2.3.2 排隊延時的計算
RPODTD中的排隊延時表示即將進入隊列的數據包從進入隊列到發(fā)送成功所需要的等待時間,即為當前緩沖區(qū)數據包全部發(fā)送完所需的時間。由于數據包傳輸過程中的擁塞和碰撞會導致數據包被延遲轉發(fā),因此數據包實際的傳輸時間會大于理論上的傳輸時間,本文通過數據包的實際延時以及理論延時的差值估算數據包的排隊延時,排隊延時Tque由式(8)給出:
(8)
(9)
t=tsend+2ttrans
(10)
如圖2所示為節(jié)點間傳輸數據包的示意圖。由節(jié)點A計算數據包p進入隊列到開始發(fā)送所需要的排隊時間。
圖2 數據包傳輸示意圖Fig. 2 Schematic diagram of data packet transmission
2.3.3 路徑更改的判斷
由2.3.2節(jié)計算得到數據包的排隊延時Tque,節(jié)點根據排隊延時所屬的區(qū)間判斷是否可以繼續(xù)接收數據。根據排隊延時所屬區(qū)間的判斷存在以下3種情況。
1)當Tque≤Min時,節(jié)點可以繼續(xù)接收數據,數據發(fā)送節(jié)點不需要切換路徑;
2)當Tque≥Max時,節(jié)點不能繼續(xù)接收數據,數據發(fā)送節(jié)點需要切換路徑;
3)當Min 針對情況3),本文采用如下兩種信息作為節(jié)點Nx判斷是否繼續(xù)接收數據的依據: (11) 其中:n表示節(jié)點Nx候選路由節(jié)點的個數;selectxi表示節(jié)點Nx第i個候選路由節(jié)點的路由選擇函數的值。 (12) (13) 當Dec值為1時,表明節(jié)點Nx不適合繼續(xù)接收數據,當Dec值為0時,表明節(jié)點適合繼續(xù)接收數據。設置一個flag標志位,如果節(jié)點不可以繼續(xù)接收數據,則將flag置為1;否則,將flag置為0。 2.3.4 路徑選擇 節(jié)點在持續(xù)接收一段時間數據后,不再滿足接收數據的條件,則通過ACK消息向數據發(fā)送節(jié)點返回flag=1的消息,通知其更改路徑。節(jié)點每次更改路徑時,依次選擇路由表中優(yōu)先級較高的節(jié)點發(fā)送數據,判斷是否可以傳輸數據。當節(jié)點收到數據包且滿足flag=0時,則僅返回ACK消息;否則,通過ACK消息攜帶flag=1的信息。當數據發(fā)送節(jié)點收到flag=1的消息或者在最大重傳等待時間后沒有收到ACK消息,則重新選擇節(jié)點;否則,選擇當前節(jié)點作為下一跳節(jié)點繼續(xù)傳輸數據。當路由表中節(jié)點的flag值均為1時,為了防止更多的數據包在網絡中傳輸,加重網絡負擔,同時保證發(fā)送的數據包可以被接收,數據發(fā)送節(jié)點降低數據的發(fā)送速率,選擇優(yōu)先級較高的節(jié)點發(fā)送數據且只有在最大重傳等待時間后未收到ACK包時才會重新選擇路由節(jié)點。 2.3.5 延時優(yōu)化策略實現 以下給出延時優(yōu)化策略執(zhí)行的步驟。 步驟1 計算排隊延時。數據接收節(jié)點根據2.3.2節(jié)所描述的方法計算排隊延時。 步驟2 路徑更改判斷。節(jié)點根據2.3.3節(jié)所描述的方法判斷是否可以繼續(xù)接收數據,滿足繼續(xù)接收數據的條件,則flag=0;否則,flag=1,并將flag返回給數據發(fā)送節(jié)點。 步驟3 路徑更改。數據發(fā)送節(jié)點根據flag的值判斷是否更改路徑,若更改路徑,則執(zhí)行步驟4;否則,執(zhí)行步驟5。 步驟4 節(jié)點選擇。路徑更改時,節(jié)點根據2.3.4節(jié)所描述的方法在路由表中選擇合適的節(jié)點作為下一跳節(jié)點。 步驟5 數據傳輸。數據發(fā)送節(jié)點向選擇好的下一跳節(jié)點發(fā)送數據。 為了評價本文提出的路由協議的性能,使用OMNeT++仿真環(huán)境對RPODTD的性能進行驗證。整個仿真實驗包括3部分: 1)驗證式(7)中α,β的取值對于數據包平均端到端延時的影響; 2)對排隊延時閾值Min以及Max的取值進行分析; 3)將RPODTD與ComLoB、CA-RPL在網絡時效性、網絡可靠性、網絡能效性等方面進行比較。 使用OMNet++對網絡協議進行仿真。將100個節(jié)點隨機分布在100 m×100 m的區(qū)域內,節(jié)點初始能量為0.5 J,數據包大小為500 B,節(jié)點初始通信半徑R0=20 m。 為了驗證式(7)中有效探測占比度量以及傳輸效率度量這兩個指標的權重系數對于端到端延時的影響,在相同的網絡環(huán)境下,取9種情況(Q1,Q2,…,Q9)下的權重系數值進行仿真,如表1所示。通過對比不同取值下的平均端到端延時情況判斷最佳的權重系數值。 表1 權重系數取值 Tab. 1 Values of weight coefficients 圖3是權重系數取值與平均端到端延時關系的比較,由圖3可知,當α=0.6,β=0.4(Q6)時,RPODTD可以獲得較好的性能。 圖3 權重系數取值與平均端到端延時關系Fig. 3 Relationship between weight coefficient value and average end-to-end delay 為了驗證Min與Max的取值對數據包端到端延時的影響,在相同網絡環(huán)境下,取不同的閾值數值進行仿真。實驗中,首先在一跳鄰節(jié)點間發(fā)送數據包,計算單跳傳輸延時,經過多次實驗得出單跳傳輸延時的平均值為0.03 s,最小值為0.02 s。閾值的取值范圍根據緩沖區(qū)的大小估算,區(qū)間為(T,T·buf),其中,T為一個數據包的傳輸延時,值取0.03;buf為緩沖區(qū)大小,值取15,因此,在本節(jié)實驗中,Min的取值從0.03開始以0.02的步長升序選取,Max的取值從0.45開始以0.02的步長降序選取,本節(jié)僅展示9種閾值取值的情況(Q1,Q2,…,Q9),如表2所示。圖4是閾值取值與平均端到端延時比較。由圖4可知,當閾值取值過小或者過大,均會增加數據包的端到端延時。當Min=0.15,Max=0.33(Q7)時,網絡性能較好,因此,本文中相關實驗的閾值取值為:Min=0.15,Max=0.33。 表2 閾值取值 Tab. 2 Values of thresholds 圖4 閾值取值與平均端到端延時關系Fig. 4 Relationship between threshold value and average end-to-end delay 3.4.1 網絡時效性 分析單跳節(jié)點間數據包的傳輸延時,通過更換路由節(jié)點使得網絡流量分布在不同的鏈路上,有效地減小了每一個節(jié)點處數據包隊列的排隊延時。數據包的傳輸延時主要取決于節(jié)點處的排隊延時,雖然更換路由節(jié)點需要一定的處理時間,但與排隊延時相比可以忽略。 本文采用數據包的平均端到端延時來評估網絡的時效性。數據包的端到端延時是實時性數據重要的評價參數之一,表示為數據包從數據產生節(jié)點發(fā)送到基站所需要的時間。圖5是不同數據包發(fā)送速率下,數據包平均端到端延時的變化情況。由圖5可以看出,隨著節(jié)點發(fā)送數據包速率的增加,ComLoB和CA-RPL的數據包端到端延時呈快速上升的趨勢,而RPODTD的上升趨勢較緩慢。與ComLoB和CA-RPL相比,RPODTD的平均端到端延時分別降低了78.87%和51.81%。 圖5 3種協議的數據包平均端到端延時對比Fig. 5 Average end-to-end delay comparison of data packets of three protocols 3.4.2 網絡可靠性 數據包之間的碰撞會導致數據包的丟失,當網絡流量升高時,節(jié)點的丟包率會隨之上升。通過對節(jié)點間鏈路質量的度量,可以有效地保證節(jié)點間通信的質量;同時,多路徑的使用可以提高鏈路的可靠性,減少無效鏈路的使用時間,降低數據包因鏈路無效而丟失的概率。 本文采用節(jié)點的丟包率評價網絡的可靠性。節(jié)點的丟包率表示為數據傳輸過程中丟失的數據包數量與總的發(fā)送數據包數量的比值。圖6是不同數據包發(fā)送速率下,節(jié)點丟包率的變化情況。由圖6可以看出,與ComLoB和CA-RPL相比,RPODTD的丟包率分別降低了40.71%和68.43%,因此RPODTD能夠有效地降低節(jié)點的丟包率。 圖6 3種協議的節(jié)點丟包率對比Fig. 6 Node packet loss rate comparison of three protocols 3.4.3 網絡能效性 與持續(xù)監(jiān)測節(jié)點的隊列流量并在到達臨界值時便發(fā)送警戒消息的ComLoB相比,RPODTD只有在節(jié)點間有數據傳輸時才會發(fā)送flag消息,有效地減少了網絡中控制包的傳輸數量,降低了能量開銷。 本文采用節(jié)點的死亡率評價網絡的能效性。圖7是隨著網絡運行時間的遞增,節(jié)點的死亡率變化情況。由圖7可以明顯看出,ComLoB和CA-RPL的節(jié)點死亡率高于RPODTD。與ComLoB和CA-RPL相比,RPODTD節(jié)點的死亡率分別降低了25.42%和44.62%。 圖7 3種協議的節(jié)點死亡率對比Fig. 7 Node mortality rate comparison of three protocols 針對無線傳感器網絡中對數據實時性以及可靠性要求較高的應用,本文提出了一種數據傳輸延時優(yōu)化的路由協議(RPODTD)。該協議給出一個新的路由選擇函數,考慮信道探測次數以及信道探測時間對于節(jié)點間數據傳輸質量的反映,引入節(jié)點有效探測占比以及傳輸效率對節(jié)點進行評估,有效地提高了節(jié)點間數據傳輸的質量和效率;同時,本文還提出了延時優(yōu)化策略,根據數據包的實際延時以及理論延時的差值估算數據包的排隊延時;分析并確定最大和最小排隊延時閾值,根據數據包排隊延時所屬的閾值區(qū)間,對是否更換路由節(jié)點進行決策。仿真結果表明,RPODTD能夠有效地減少數據包的端到端延時,降低丟包率。 RPODTD能夠很好地應用于高可靠低延時的環(huán)境;但是該協議在能耗方面仍存在不足之處,后續(xù)研究將進一步考慮節(jié)點能耗方面的優(yōu)化,減少網絡中無關數據包的探測和轉發(fā),以降低網絡的能量開銷。3 仿真結果與分析
3.1 實驗參數設置
3.2 權重系數的選取
3.3 閾值的取值
3.4 協議性能分析
4 結語