趙 建,杜秀娟*,2,3
(1. 青海師范大學(xué)計(jì)算機(jī)學(xué)院,青海 西寧810008;2. 藏語(yǔ)智能信息處理及應(yīng)用國(guó)家重點(diǎn)實(shí)驗(yàn)室,青海 西寧810008;3. 高原科學(xué)與可持續(xù)發(fā)展研究院,青海 西寧 810008)
水聲網(wǎng)絡(luò)(Underwater Acoustic Networks,UANs)是一種無(wú)線(xiàn)通信網(wǎng)絡(luò),其功能由大量傳感器節(jié)點(diǎn)實(shí)現(xiàn)[1]。各節(jié)點(diǎn)以協(xié)作的方式對(duì)其中的信息進(jìn)行收集、處理和傳輸,最后發(fā)送給網(wǎng)絡(luò)所有者以供使用和分析。UANs作為一種分布式網(wǎng)絡(luò),具有大規(guī)模、動(dòng)態(tài)性、可靠性高等特點(diǎn),現(xiàn)被廣泛應(yīng)用于軍事、醫(yī)療、環(huán)境監(jiān)測(cè)等領(lǐng)域,在未來(lái)具有很高的發(fā)展?jié)摿Α?/p>
路由協(xié)議通過(guò)建立源節(jié)點(diǎn)與目的節(jié)點(diǎn)之間的一條消息傳輸路徑來(lái)實(shí)現(xiàn)路由功能。路由協(xié)議的功能包含了兩個(gè)方面:尋找最優(yōu)路徑和數(shù)據(jù)分組交換[2]。在陸地?zé)o線(xiàn)傳感器網(wǎng)絡(luò)中,研究者已經(jīng)提出了很多路由協(xié)議,但由于水下環(huán)境的特殊性,如節(jié)點(diǎn)稀疏、水下環(huán)境復(fù)雜、拓?fù)鋭?dòng)態(tài)變化、節(jié)點(diǎn)能量受限等,所以陸地傳感器網(wǎng)絡(luò)中的協(xié)議不能直接應(yīng)用于UANs。同時(shí),由于聲波的多普勒效應(yīng),水流的移動(dòng)速度,會(huì)給傳感器節(jié)點(diǎn)傳輸信息時(shí)帶來(lái)的頻率偏移較大,必然會(huì)在很大程度上影響移動(dòng)通信,同時(shí)也給水聲網(wǎng)絡(luò)中路由協(xié)議的開(kāi)發(fā)帶來(lái)了巨大的挑戰(zhàn)[3]。
針對(duì)以上問(wèn)題,本文提出了一種基于層級(jí)的水聲網(wǎng)絡(luò)自適應(yīng)地理路由協(xié)議(LB-AGR)。其基于層級(jí)的路由轉(zhuǎn)發(fā)機(jī)制,減少了能量消耗、端到端延時(shí),提高了數(shù)據(jù)的交付率。仿真結(jié)果表明LB-AGR協(xié)議具有良好的適應(yīng)性。
與陸地網(wǎng)絡(luò)不同,UANs具有定向通信的特點(diǎn)[4]。UANs由位于水面的節(jié)點(diǎn)與隨機(jī)分布在水下的若干傳感器節(jié)點(diǎn)組成,水下傳感器節(jié)點(diǎn)通過(guò)水聲網(wǎng)絡(luò)將水下的數(shù)據(jù)通過(guò)逐跳傳輸?shù)姆绞絺鞯絪ink節(jié)點(diǎn),sink節(jié)點(diǎn)通過(guò)無(wú)線(xiàn)射頻信號(hào)將收集的水下信息上傳到互聯(lián)網(wǎng)中,供網(wǎng)絡(luò)所有者所使用。網(wǎng)絡(luò)模型如圖1。
圖1 水聲網(wǎng)絡(luò)模型
sink節(jié)點(diǎn)的功能有:①sink節(jié)點(diǎn)發(fā)送下行的控制報(bào)文進(jìn)行整個(gè)UANs的初始化;②sink節(jié)點(diǎn)接收來(lái)源節(jié)點(diǎn)的上行數(shù)據(jù)報(bào)文并將數(shù)據(jù)通過(guò)水面基站轉(zhuǎn)發(fā)至數(shù)據(jù)中心;③sink附近的鄰居節(jié)點(diǎn)不僅可以偵聽(tīng)和產(chǎn)生數(shù)據(jù),還具有傳輸和轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文的功能。sink節(jié)點(diǎn)和其周?chē)?jié)點(diǎn)作為UANs的關(guān)鍵環(huán)節(jié),與整個(gè)網(wǎng)絡(luò)的運(yùn)轉(zhuǎn)密不可分。
在LB-AGR中,還為每個(gè)節(jié)點(diǎn)指定一個(gè)層級(jí),用來(lái)表示節(jié)點(diǎn)的重要程度。這里的層級(jí)定義為傳感器節(jié)點(diǎn)到sink節(jié)點(diǎn)所經(jīng)過(guò)的跳數(shù)[5]。除此之外,還為每個(gè)節(jié)點(diǎn)的層級(jí)定義了老化時(shí)間,當(dāng)節(jié)點(diǎn)層級(jí)的老化時(shí)間過(guò)期后,該節(jié)點(diǎn)淪為孤立節(jié)點(diǎn),不與Sink節(jié)點(diǎn)連通;因此,節(jié)點(diǎn)的層級(jí)在老化時(shí)間過(guò)期前需要定期更新,才能與sink節(jié)點(diǎn)保持連通。
在LB-AGR路由協(xié)議中包括網(wǎng)絡(luò)初始化階段和傳輸數(shù)據(jù)階段。在傳輸數(shù)據(jù)之前,需要通過(guò)網(wǎng)絡(luò)初始化來(lái)得到拓?fù)渲懈鱾€(gè)節(jié)點(diǎn)的位置和層級(jí)信息等。在網(wǎng)絡(luò)初始化過(guò)程中,sink節(jié)點(diǎn)向下游節(jié)點(diǎn)廣播發(fā)送控制報(bào)文。報(bào)文頭部包括層級(jí)字段、目的和發(fā)送節(jié)點(diǎn)ID字段、數(shù)據(jù)類(lèi)型字段(control、data、ack)、數(shù)據(jù)流向字段、位置字段等,其中層級(jí)字段表示上一跳鄰居節(jié)點(diǎn)的層級(jí)信息,其值在網(wǎng)絡(luò)初始化過(guò)程中不斷更新。網(wǎng)絡(luò)初始化完成之后,各個(gè)傳感器節(jié)點(diǎn)通過(guò)偵聽(tīng)和接收?qǐng)?bào)文動(dòng)態(tài)更新鄰居表信息。傳輸水下數(shù)據(jù)時(shí),由源節(jié)點(diǎn)發(fā)送數(shù)據(jù)報(bào)文到sink節(jié)點(diǎn)。中間節(jié)點(diǎn)(1)中間節(jié)點(diǎn):源節(jié)點(diǎn)和sink節(jié)點(diǎn)之間負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)的傳感器節(jié)點(diǎn)。若偵聽(tīng)到報(bào)文的接收節(jié)點(diǎn)為自己,并且該數(shù)據(jù)報(bào)文來(lái)自下游節(jié)點(diǎn),便接收該報(bào)文。接收數(shù)據(jù)報(bào)文后進(jìn)行更新鄰居表和報(bào)文頭部信息的操作,并根據(jù)上行路由機(jī)制在鄰居表中尋找最佳的下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn)。否則只更新鄰居表不轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)文。路由機(jī)制是根據(jù)節(jié)點(diǎn)的AP(2)AP:當(dāng)前節(jié)點(diǎn)的剩余能量。、節(jié)點(diǎn)的密度(density)和節(jié)點(diǎn)的層級(jí)為鄰居表中的候選節(jié)點(diǎn)計(jì)算出一個(gè)期望值,期望值最高的節(jié)點(diǎn)作為作為最佳的下一跳節(jié)點(diǎn),用來(lái)轉(zhuǎn)發(fā)報(bào)文[6]。將這個(gè)期望值稱(chēng)為綜合轉(zhuǎn)發(fā)因子。為了增加整個(gè)UANs的壽命,LB-AGR路由協(xié)議優(yōu)先選擇AP較高的節(jié)點(diǎn)用來(lái)轉(zhuǎn)發(fā)報(bào)文,以應(yīng)對(duì)不斷變化的網(wǎng)絡(luò)拓?fù)?。不同的?bào)文流向采用不同的路由機(jī)制。
在LB-AGR中,每個(gè)節(jié)點(diǎn)需要維護(hù)一張鄰居表,用來(lái)存儲(chǔ)鄰居節(jié)點(diǎn)信息,如表1所示,其中包括了各鄰居節(jié)點(diǎn)的地理位置信息、ID、層級(jí)信息、AP、老化時(shí)間等。鄰居表信息隨著網(wǎng)絡(luò)拓?fù)涞淖兓粩喔耓7]。
表1 鄰居信息表
在LB-AGR路由協(xié)議中,初始化除sink以外的節(jié)點(diǎn)層級(jí)為0xFF(255),sink節(jié)點(diǎn)的層級(jí)為0。sink節(jié)點(diǎn)定向泛洪控制報(bào)文到UANs中的所有節(jié)點(diǎn)。中間節(jié)點(diǎn)若偵聽(tīng)到報(bào)文類(lèi)型為“control”便進(jìn)行接收。當(dāng)報(bào)文中頭部的Lpre(3)Lcur:當(dāng)前節(jié)點(diǎn)的層級(jí)。小于Lcur(4)Lpre:報(bào)文更新前頭部字段的層級(jí)信息,即上一跳鄰居節(jié)點(diǎn)的信息。時(shí),則Lcur=Lpre+1,并將上一跳節(jié)點(diǎn)的ID、層級(jí)、AP信息等插入到自己的鄰居表中。隨后將報(bào)文頭部字段替換為自己的信息,進(jìn)行轉(zhuǎn)發(fā)[8]。
當(dāng)一個(gè)已取得自己層級(jí)并且層級(jí)信息未超過(guò)老化時(shí)間的中間節(jié)點(diǎn)接收到控制報(bào)文時(shí),將提取報(bào)文頭部的Lpre和自己比較,如果Lcur較大,便將新的鄰居節(jié)點(diǎn)的信息更新到鄰居表,然后將Lpre+1變?yōu)樽约旱膶蛹?jí)。并將報(bào)文頭部字段替換為自己的信息,進(jìn)行轉(zhuǎn)發(fā)[8]。
網(wǎng)絡(luò)初始化過(guò)程如圖2。
圖2 網(wǎng)絡(luò)初始化工作流程圖
此時(shí),整個(gè)UANs已完成了初始化,整個(gè)網(wǎng)絡(luò)處于正常運(yùn)作狀態(tài),各個(gè)傳感器節(jié)點(diǎn)均獲得了自己的層級(jí)信息。源節(jié)點(diǎn)發(fā)送攜帶數(shù)據(jù)信息的報(bào)文至sink節(jié)點(diǎn),各中間節(jié)點(diǎn)偵聽(tīng)報(bào)文頭部信息,若報(bào)文的傳輸方向?yàn)樯闲星医邮展?jié)點(diǎn)為自己,則進(jìn)行接收并執(zhí)行圖4的上行流量(5)上行流量:由源節(jié)點(diǎn)發(fā)送,經(jīng)過(guò)層層轉(zhuǎn)發(fā),其目的為sink節(jié)點(diǎn)的數(shù)據(jù)。路由機(jī)制,層級(jí)為L(zhǎng)cur-1的節(jié)點(diǎn)均為候選節(jié)點(diǎn)。
為了最大程度地延長(zhǎng)UANs的壽命并平衡節(jié)點(diǎn)能耗,LB-AGR路由協(xié)議傾向于選擇密度更高的節(jié)點(diǎn)作為候選節(jié)點(diǎn),并綜合考慮了剩余能量等因素,以避免某些節(jié)點(diǎn)過(guò)多的消耗能量甚至用完。在協(xié)議中,為每個(gè)候選節(jié)點(diǎn)定義了一個(gè)轉(zhuǎn)發(fā)的期望值desired_tmp,期望值最大的候選節(jié)點(diǎn)便用來(lái)轉(zhuǎn)發(fā)報(bào)文。
desired_tmp=α1*density/∑i+α2*AP/APinit
(1)
數(shù)據(jù)傳輸過(guò)程如圖3。
圖3 傳輸水下數(shù)據(jù)工作流程圖
中間節(jié)點(diǎn)接收到數(shù)據(jù)報(bào)文后,遍歷自己的鄰居表,首先判斷一跳鄰居節(jié)點(diǎn)中是否有sink節(jié)點(diǎn),如果有,則把該鄰居節(jié)點(diǎn)當(dāng)做下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn),進(jìn)行轉(zhuǎn)發(fā);其次判斷兩跳鄰居節(jié)點(diǎn)中是否有sink節(jié)點(diǎn),如果有則把第一跳鄰居節(jié)點(diǎn)當(dāng)做下一跳轉(zhuǎn)發(fā)節(jié)點(diǎn)進(jìn)行轉(zhuǎn)發(fā);如果鄰居表中沒(méi)有sink節(jié)點(diǎn),則把鄰居表中層級(jí)為L(zhǎng)cur-1的鄰居節(jié)點(diǎn)作為候選節(jié)點(diǎn),在其中挑選期望值最大的作為最佳下一跳進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)代碼如圖4。
圖4 上行流量路由實(shí)現(xiàn)代碼
本文中,通過(guò)NS3仿真軟件對(duì)LB-AGR路由協(xié)議進(jìn)行仿真,并和DBR協(xié)議和LEER協(xié)議進(jìn)行性能對(duì)比。
將20、30、40、50、70個(gè)節(jié)點(diǎn)分別隨機(jī)布置在一個(gè)1500m×1500m×2500m的三維環(huán)境中。包的數(shù)據(jù)量為134字節(jié);設(shè)置節(jié)點(diǎn)的SetTxPowerDb(傳輸功率)值為-42.65,代表其傳輸范圍為1000m;初始化各節(jié)點(diǎn)的能量為1000焦耳,發(fā)送功率為0.1W,接收功率為0.05W,空閑功率為0.005W,休眠功率為0.0001W[9]。
在本文中,采用單位數(shù)據(jù)包能耗、端到端延時(shí)和數(shù)據(jù)報(bào)文的交付率三個(gè)指標(biāo)來(lái)測(cè)試LB-AGR路由協(xié)議的性能。為了避免實(shí)驗(yàn)數(shù)據(jù)的偶然性,每個(gè)節(jié)點(diǎn)數(shù)各做15組實(shí)驗(yàn),采取實(shí)驗(yàn)數(shù)據(jù)的平均值。
從圖5中可以看出,隨著節(jié)點(diǎn)數(shù)目的增多,LB-AGR路由協(xié)議的交付率穩(wěn)定在90.87%-94.30%,在節(jié)點(diǎn)數(shù)為30時(shí)達(dá)到最高值。這是因?yàn)楣?jié)點(diǎn)數(shù)目越多,產(chǎn)生的沖突越多,對(duì)節(jié)點(diǎn)的收發(fā)造成了一定的干擾。在DBR協(xié)議中,隨著節(jié)點(diǎn)的增多,交付率由43.53%上升到了70.53%;在LEER協(xié)議中,節(jié)點(diǎn)的交付率穩(wěn)定在79.33%-82.33%之間。通過(guò)比較,LB-AGR路由協(xié)議在交付率方面更具有優(yōu)勢(shì)。
圖5 數(shù)據(jù)報(bào)文交付率對(duì)比
在圖6中,隨著節(jié)點(diǎn)數(shù)目的增多LB-AGR協(xié)議與DBR協(xié)議的端到端延遲均有一定程度的增大,但DBR協(xié)議的上升幅度更大,由4.82s上升到了5.57s。而LEER協(xié)議的平均端到端延時(shí)隨著節(jié)點(diǎn)的增多逐漸減少。通過(guò)比較,LB-AGR路由協(xié)議的端到端延時(shí)性能比DBR協(xié)議表現(xiàn)更好,相對(duì)于LEER協(xié)議稍有劣勢(shì)。
圖6 端到端延時(shí)對(duì)比
從圖7中可以看出,LB-AGR協(xié)議DBR協(xié)議和LEER協(xié)議的單位數(shù)據(jù)包所耗費(fèi)的能量呈上升的趨勢(shì),這是因?yàn)閁ANs中參與數(shù)據(jù)轉(zhuǎn)發(fā)的節(jié)點(diǎn),即數(shù)據(jù)報(bào)文經(jīng)過(guò)的跳數(shù)也在隨之增加。但通過(guò)比較,在LB-AGR協(xié)議中單位數(shù)據(jù)包的耗能上升趨勢(shì)最小。因此LB-AGR協(xié)議在單位數(shù)據(jù)包能耗方面的優(yōu)勢(shì)更加明顯。
圖7 單位數(shù)據(jù)包能耗對(duì)比
綜上,LB-AGR協(xié)議在數(shù)據(jù)報(bào)文的交付率和單位數(shù)據(jù)包能耗方面表現(xiàn)更好,而平均端到端延時(shí)性能優(yōu)于DBR協(xié)議,稍劣于LEER協(xié)議,后期有待改進(jìn)。
本文基于層級(jí)的概念,提出了一種水聲網(wǎng)絡(luò)單徑路由協(xié)議。所做的主要貢獻(xiàn)主要有如下三點(diǎn)[10]:
1)協(xié)議基于層級(jí)和地理位置的路由機(jī)制,空曠區(qū)域問(wèn)題被有效的解決。
2)通過(guò)NS3進(jìn)行了仿真,驗(yàn)證了LB-AGR的高交付率與低耗能更能適應(yīng)水下環(huán)境多變和供能有限的環(huán)境:交付率可達(dá)到94.37%;
端到端延時(shí)平均值為3.045s;單位數(shù)據(jù)包能耗為6.686J,明顯低于其它兩種協(xié)議。
3)該仿真工作將模擬真實(shí)的水下環(huán)境進(jìn)行,對(duì)后期在水下環(huán)境的部署和測(cè)試提供了一定的數(shù)據(jù)參考。