胡 君,莫崢嶸
(1.湖南科技職業(yè)學(xué)院軟件學(xué)院,長沙 410004;2.中國人民解放軍海軍工程大學(xué)電子工程學(xué)院二大隊5隊,武漢 430000)
近期,水下傳感網(wǎng)絡(luò)USNs(Underwater Sensor Networks)被廣泛應(yīng)用于潛艇跟蹤、港口監(jiān)控等水面應(yīng)用[1-2]。USNs由部署于水下的傳感節(jié)點和飄浮于水面的聲納浮標(biāo)組成。傳感節(jié)點感測水下環(huán)境數(shù)據(jù),然后以聲信號傳輸至浮標(biāo)。收集感測數(shù)據(jù)后,浮標(biāo)再以無線方式傳輸至控制中心。USNs典型的拓?fù)浣Y(jié)構(gòu)如圖1所示。
圖1 USNs的典型結(jié)構(gòu)
由于水域通信的特性,光纖和無線射頻通信并不適合水下節(jié)點間的通信。而聲通信被認(rèn)為是水下節(jié)點間通信的最有效方式。然而,聲通信也存在帶寬有限、動態(tài)傳輸時延、高通信能耗等不足。
在水下聲通信的傳感網(wǎng)絡(luò)中,由于傳感節(jié)點尺寸、成本和存儲能量限制,傳感節(jié)點無法采用多天線。為了克服此問題,引用協(xié)作通信機制,其充分利用了無線信道的廣播特性,提高了鏈路質(zhì)量和數(shù)據(jù)傳輸?shù)目煽啃訹3-6]。Han[7]研究了水下通信的協(xié)作傳輸技術(shù)。Vajapeyam[8]也提出基于space-time塊編碼的協(xié)作路由。仿真數(shù)據(jù)表明,該路由在多徑信道場景中具有良好的性能。此外,從網(wǎng)絡(luò)方面,利用多跳方式傳輸數(shù)據(jù)能夠降低節(jié)點的能量消耗。原因在于:在多跳通信方式下,每一跳的傳輸距離變短,所需的傳輸發(fā)射功率就低,進(jìn)而降低了能耗。
為此,提出基于鏈路質(zhì)量和物理距離選擇轉(zhuǎn)發(fā)節(jié)點的協(xié)作路由SRCR(Selecting Relays based link quality indicator and physical distances Cooperative Routing)。SRCR路由依據(jù)鏈路質(zhì)量和物理距離選擇下一跳轉(zhuǎn)發(fā)節(jié)點和協(xié)作節(jié)點。仿真數(shù)據(jù)表明,提出的SRCR路由提高了數(shù)據(jù)包傳遞率,并降低了能耗。
圖2顯示了單個轉(zhuǎn)發(fā)節(jié)點的協(xié)作傳輸原理圖。從圖2可知,單個轉(zhuǎn)發(fā)節(jié)點的協(xié)作傳輸模型由一個發(fā)射節(jié)點、一個轉(zhuǎn)發(fā)節(jié)點的和一個接收節(jié)點組成。
圖2 單個轉(zhuǎn)發(fā)節(jié)點的協(xié)作傳輸
在單個轉(zhuǎn)發(fā)節(jié)點的協(xié)作傳輸模型中,引用基于TDMA的信道接入策略。通過占用兩個時隙完成數(shù)據(jù)的傳輸。在第1個時隙,發(fā)射節(jié)點利用廣播方式向接收節(jié)點傳輸數(shù)據(jù),同時協(xié)作轉(zhuǎn)發(fā)節(jié)點監(jiān)聽發(fā)射節(jié)點所廣播的數(shù)據(jù)包;在第二時隙,協(xié)作轉(zhuǎn)發(fā)節(jié)點先對數(shù)據(jù)包進(jìn)行解碼,然后再編碼,最后,再向接收節(jié)點傳輸[9]。這種協(xié)作轉(zhuǎn)發(fā)稱為解碼-轉(zhuǎn)發(fā)協(xié)議,其廣泛應(yīng)用于協(xié)作傳輸。當(dāng)接收到由直接傳輸和協(xié)作傳輸?shù)男盘柡?接收節(jié)點就結(jié)合這兩路信號,進(jìn)而提高數(shù)據(jù)包的接收成功率。
本文考慮多跳水下傳感網(wǎng)絡(luò),其由多個傳感節(jié)點和一個預(yù)定的目的節(jié)點(信宿)組成。傳感節(jié)點隨機地分布于水下監(jiān)測區(qū)域,這些傳感節(jié)點頻繁地監(jiān)測環(huán)境,然后,以多跳方式將感測數(shù)據(jù)傳輸至目的節(jié)點。
在協(xié)作路由中,從源節(jié)點至目的節(jié)點的數(shù)據(jù)傳輸過程中涉及兩類節(jié)點:路由上的轉(zhuǎn)發(fā)節(jié)點RR(Routing Relays)和一跳協(xié)作通信的協(xié)作節(jié)點CR(Cooperative Relays)。圖3顯示了多跳協(xié)作路由的示例。源節(jié)點S選擇節(jié)點2作為轉(zhuǎn)發(fā)節(jié)點,而節(jié)點3作為協(xié)作節(jié)點,它們共同向目的節(jié)點D傳輸數(shù)據(jù)。
圖3 多跳的協(xié)作路由
SRCR路由由4個階段構(gòu)成:鄰居表更新、RCS/CTS消息交互、轉(zhuǎn)發(fā)節(jié)點選擇和數(shù)據(jù)包傳輸。
在初始階段,每個節(jié)點構(gòu)建自己的鄰居表。首先,目的節(jié)點向所有傳感節(jié)點廣播告知數(shù)據(jù)包ADV(Advertisement Packets)。一旦收到ADV包,節(jié)點就從ADV包中提取以下信息:①鏈路的信噪比SNR(Signal Noise Ratio);②離目的節(jié)點的跳數(shù)HC(Number of Hops)。最初,跳數(shù)為零。即目的節(jié)點廣播ADV包時,跳數(shù)值為零。一旦接收了ADV包,傳感節(jié)點就將跳數(shù)加1,再轉(zhuǎn)發(fā)ADV包。通過這種方式,使得傳感節(jié)點知道它離目的節(jié)點的跳數(shù)值;③到達(dá)時間ToA(Time of Arrival)。ToA表示數(shù)據(jù)包到達(dá)時間。節(jié)點利用ADV包內(nèi)的時戳估計ToA值。
例如,傳感節(jié)點s具有3個一跳鄰居節(jié)點,且分別為傳感節(jié)點i、j和k。即NB(s)={i,j,k}。它的鄰居表如表1所示。其中HCi表示傳感節(jié)點i離目的節(jié)點的跳距。而ToA(i→s)表示從節(jié)點s至節(jié)點i鏈路的ToA。相應(yīng)地,SNR(i→s)表示從節(jié)點s至節(jié)點i鏈路的SNR值。
表1 節(jié)點s的鄰居表
當(dāng)初始階段完成后,所有傳感節(jié)點就建立初始的鄰居表。然而,由于部分傳感節(jié)點失效、通信環(huán)境波動,節(jié)點的鄰居表需要進(jìn)行更新。
算法1顯示了鄰居表的更新過程。一旦節(jié)點s收到數(shù)據(jù)包。假定它收到節(jié)點i的數(shù)據(jù)包,它就更新HC、ToA和SNR。
首先,節(jié)點s檢測節(jié)點i是否已加入自己的鄰居集。如果i?NB(s),則節(jié)點s將HC、ToA和SNR信息載入鄰居表,如算法1的Step19至Step22所示。
若i∈NB(s),先判斷節(jié)點i是否離目的節(jié)點更近。即判斷是否滿足HCs≥HCi+1,若滿足,則表明節(jié)點i比節(jié)點s更靠近于目的節(jié)點。因此,節(jié)點s更新HCs,即HCs←HCi+1;若不滿足,就不進(jìn)行更新,如算法1的Step3至Step7所示。
(1)
(2)
Algorithm1:Updatingneighbortableofnodes
Input:Received packets
Output:Neighbor table of nodes
1 When nodesreceives any packet sent by nodei;
2 ifi∈NB(s) then
3 if HCs≥HCi+1 then
4 HCs←HCi+1;
5 else
6 Skip current HCs;
7 end
9 Skip current ToA(i→s);
10 else
12 end
14 Skip current SNR(i→s);
15 else
17 end
18 else
19 NB(s)←i;
20 HCs←HCi+1;
23 end
當(dāng)源節(jié)點有數(shù)據(jù)包要傳輸時,它就向它的鄰居節(jié)點廣播RTS包。一旦收到RTS包,鄰居節(jié)點就依據(jù)算法1更新鄰居表。再依據(jù)鄰居表內(nèi)的信息,鄰居節(jié)點就推薦自己作為潛在的轉(zhuǎn)發(fā)節(jié)點。成為潛在的轉(zhuǎn)發(fā)節(jié)點必須滿足兩個條件:①與源節(jié)點間的鏈路的SNR小于閾值;②比源節(jié)點更靠近于目的節(jié)點。
具體而言,假定源節(jié)點為s,它的鄰居節(jié)點集為NB(s),它的潛在轉(zhuǎn)發(fā)節(jié)點集為PR(s)。首先,源節(jié)點s廣播RTS包。鄰居節(jié)點(假定節(jié)點i)收到RTS包,就檢測是否滿足式(3)。若滿足,則節(jié)點i就成為潛在轉(zhuǎn)發(fā)節(jié)點,并加入PR(s),即PR(s)←i。
{SNR(s→i),SNR(i→s)}≥SNRTand HCs≥HCi
(3)
一旦成為潛在轉(zhuǎn)發(fā)節(jié)點,節(jié)點i就向源節(jié)點s回復(fù)CTS包。若未成為潛在轉(zhuǎn)發(fā)節(jié)點,就不回復(fù)CTS包。圖4顯示了RTS/CTS包的傳輸過程。
圖4 傳輸RTS/CTS包的示意圖
SRCR路由需要選擇RR和CR兩個節(jié)點。RR作為路由轉(zhuǎn)發(fā)節(jié)點,而CR為協(xié)作轉(zhuǎn)發(fā)節(jié)點。
為了提高接收消息的成功率,從NB(s)中選擇信噪比高的節(jié)點作為源節(jié)點s的RR節(jié)點,如式(4)所示:
(4)
確定了RR(s)后,就選擇協(xié)作轉(zhuǎn)發(fā)節(jié)點。協(xié)作節(jié)點必須滿足兩個條件:(1)PR(s)和NB[RR(s)]這兩個集的交集;(2)ToA值最小。ToA值越小,表明離目的節(jié)點越近。仍以源節(jié)點s為例,假定它的協(xié)作轉(zhuǎn)發(fā)節(jié)點為k。選擇k的過程如算法2所示。
Algorithm2:Selectcooperativerelaynode
Input:NB(s),NB(RR(s)),PR(s)
Output:CR(s)
Step 1:fork∈PR(s)∩NB[RR(s)]do
Step 2: if ToA(k→RR(s))=min{ToA(k→RR(s))} then
Step 3: CR(s)←k
Step 4: end
Step 5:end
圖5顯示了源節(jié)點選擇協(xié)作節(jié)點的示例。源節(jié)點s的轉(zhuǎn)發(fā)協(xié)作節(jié)點集為PR(s)={i,u,j,k},假定它選擇節(jié)點u作為路由轉(zhuǎn)發(fā)節(jié)點。而NB[RR(s)]∩PR(s)={i,j,k},然后從中選擇具有最低ToA的節(jié)點作為協(xié)作節(jié)點,即k→CR(s)。
圖5 選擇協(xié)作節(jié)點和轉(zhuǎn)發(fā)節(jié)點的示例
利用OPNET16.0軟件建立仿真平臺。100個傳感節(jié)點隨機分布于3D的水下環(huán)境,環(huán)境體積為500 m×500 m×100 m。信宿位于水面,并由其收集數(shù)據(jù)。同時,引用典型的IEEE 802.11協(xié)議作為媒體接入控制MAC(Medium Access Control)協(xié)議[10-11]。
此外,所有傳感節(jié)點具有相同的傳輸半徑,且為100 m。傳感節(jié)點的操作頻率為30 kHz。每個傳感節(jié)點的能量為1 kJ,最大的傳輸功率為0.5 W。數(shù)據(jù)包尺寸為200 byte,數(shù)據(jù)率為10 kbyte/s。
本次實驗重點分析數(shù)據(jù)包產(chǎn)生率對SRCR路由的性能。數(shù)據(jù)包產(chǎn)生率越大,網(wǎng)絡(luò)流量越大。為此,利用數(shù)據(jù)包到達(dá)間隔PIAT(Packet Inter-Arrival Time)表征數(shù)據(jù)包產(chǎn)生率。PIAT越長,數(shù)據(jù)包產(chǎn)生率越低,反之,數(shù)據(jù)包產(chǎn)生率越高。
為了更好地分析SRCR性能,選擇最短路徑路由SPFR(Shortest Path First Routing)和基于SRN的非協(xié)作路由SRN-R(SNR-based Routing without cooperative)作為參照,并對比分析它們的傳輸時延、數(shù)據(jù)包傳遞率和能耗性能。
3.2.1 端到端傳輸時延
首先,分析路由的平均時延。圖6顯示了數(shù)據(jù)包傳輸?shù)钠骄鶗r延,且PIAT為150 s。仿真時間為7 000 s。
從圖6可知,盡管SPFR路由選擇最小跳數(shù)選擇路由,但它產(chǎn)生了高的端到端傳輸時延。原因在于:SPFR路由在決策路由時,并沒有考慮到鏈路質(zhì)量。以低的鏈路傳輸數(shù)據(jù)包,降低數(shù)據(jù)包傳輸成功率,這就增加數(shù)據(jù)包的重傳次數(shù),最終,延長了數(shù)據(jù)包的傳輸時延。
圖6 平均端到端傳輸時延
此外,觀察圖6可知,提出的SRCR路由有效地控制傳輸時延。這主要是因為:SRCR路由引用協(xié)作概念,并利用SNR和TOA值選擇轉(zhuǎn)發(fā)節(jié)點,提高了數(shù)據(jù)傳輸?shù)某晒β?降低了重傳次數(shù),最終降低了平均時延。
3.2.2 數(shù)據(jù)包傳遞率
由于水域介質(zhì)對信號有強的吸附性,數(shù)據(jù)包傳輸率是估計水域通信路由的重要指標(biāo)。圖7顯示數(shù)據(jù)包傳遞率隨PIAT的變化情況。
圖7 數(shù)據(jù)包傳遞率
從圖7可知,PIAT的增加,增加了數(shù)據(jù)包的傳遞率。原因在于:PIAT越低,網(wǎng)絡(luò)流量越大,傳輸數(shù)據(jù)包的碰撞率也就越高。而PIAT越高,網(wǎng)絡(luò)流量越低,網(wǎng)絡(luò)負(fù)擔(dān)越低,有更多資源傳輸數(shù)據(jù)包,因此,數(shù)據(jù)包傳遞率得到有效提高。
從圖7可知,SPFR路由的數(shù)據(jù)包傳遞率最低,這主要是因為:SPFR路由以最小跳數(shù)選擇路由,增加了數(shù)據(jù)包碰撞率。而提出的SRCR路由引用協(xié)作策略,并依據(jù)鏈路質(zhì)量和距離選擇最優(yōu)的協(xié)作節(jié)點,提高了數(shù)據(jù)包傳輸?shù)目煽啃浴?/p>
3.2.3 平均能耗
平均能耗是指從源節(jié)點傳輸一個比特數(shù)據(jù)到目的節(jié)點所消耗的能量。為此,本次實驗分析PIAT對平均能耗的影響,且PIAT從50 s至400 s變化。
從圖8可知,SPFR路由的平均能耗最高,高于SRCR和SNR-R路由。原因在于:SPFR路由并沒有考慮到信道質(zhì)量,它需要多次重傳才能將數(shù)據(jù)包成功傳輸至信宿。而SRCR路由的平均能耗最低,這主要是因為:SRCR路由利用通過協(xié)作節(jié)點協(xié)作傳輸數(shù)據(jù),提高了數(shù)據(jù)包的傳遞成功率,降低了重傳次數(shù),進(jìn)而降低了能耗。
圖8 平均能耗
為了提高水下傳感網(wǎng)絡(luò)的性能,提出協(xié)作路由SRCR。SRCR路由充分考慮了水域通信環(huán)境的惡劣性,引用協(xié)作通信提高數(shù)據(jù)包傳遞率。并依據(jù)鏈路的信噪比和離目的節(jié)點的跳數(shù)選擇協(xié)作節(jié)點和下一跳的轉(zhuǎn)發(fā)節(jié)點,旨在利用最優(yōu)的節(jié)點作為轉(zhuǎn)發(fā)節(jié)點,進(jìn)而路由性能。仿真數(shù)據(jù)表明,提出的SRCR路由有效地降低了能耗,并提高了數(shù)據(jù)包傳遞率。