本發(fā)明涉及一種水下傳感器網(wǎng)絡(luò)(Underwater Sensor Networks,UWSNs)多信道介質(zhì)訪問控制(Medium Access Control,MAC)協(xié)議通信方法,具體說是一種動態(tài)信道協(xié)商的水下傳感器網(wǎng)絡(luò)多信道MAC協(xié)議通信方法。
背景技術(shù):
UWSNs在海洋資源勘測、環(huán)境污染監(jiān)測、水下輔助導(dǎo)航和監(jiān)視等方面有非常廣泛的應(yīng)用前景。MAC協(xié)議作為UWSNs中的關(guān)鍵問題,近年來受到了很高的重視。隨著水聲通信技術(shù)的發(fā)展,UWSNs實現(xiàn)了多信道通信技術(shù)。為了更好的利用水下帶寬資源,將總信道資源劃分為若干個子信道,通過多個子信道同時傳輸數(shù)據(jù)來提高網(wǎng)絡(luò)整體性能。由于UWSNs多信道網(wǎng)絡(luò)環(huán)境中存在多信道收發(fā)設(shè)備昂貴以及三重隱終端問題,所以針對多信道水下傳感器網(wǎng)絡(luò)設(shè)計MAC協(xié)議具有重大的意義。
針對UWSNs傳輸時延較長帶來的三重隱藏終端問題,Jun-Hong Cui等人提出了基于合作的水下多信道MAC協(xié)議通信方法(Cooperative Underwater Multichannel MAC,CUMAC)。CUMAC在接收節(jié)點收到發(fā)送請求之后,詢問鄰居節(jié)點選擇的信道是否會發(fā)生碰撞,通過與鄰居節(jié)點的合作機制來減少碰撞發(fā)生的概率;但是該方法的局限性在于,不僅需要一個額外的設(shè)備來發(fā)送合作信息,并且為了降低碰撞率該協(xié)議會一直詢問鄰居節(jié)點,直到所有鄰居節(jié)點都認(rèn)為選擇的信道不會產(chǎn)生碰撞,從而導(dǎo)致產(chǎn)生過多的通信消耗。
Kaarthikeyan S等人提出了動態(tài)占空比的多跳冗雜多信道MAC協(xié)議通信方法(Dynamic Duty-cycled Multiple-Rendezvous MultiChannel MAC,DMM-MAC)。DMM-MAC通過動態(tài)占空比的循環(huán)仲裁系統(tǒng)來減少在多跳高負(fù)載和突發(fā)流量情況下碰撞發(fā)生的概率。但是該方法僅適用于多跳高負(fù)載中突發(fā)流量的應(yīng)用場景,當(dāng)網(wǎng)絡(luò)負(fù)載較低時通信效率很低,網(wǎng)絡(luò)性能也隨之下降。
Yishan Su等人提出了節(jié)能的多信道MAC協(xié)議通信方法(Underwater Multi-channel MAC Protocol,UMMAC)。UMMAC通過信道分配和能量控制算法(Channel Allocation And Power Control Algorithm,CAPC)進行信道協(xié)商。該方法能夠有效的減少網(wǎng)絡(luò)的整體能耗,并且有較低的碰撞率,但是該方法的局限性在于所有的節(jié)點必須都在彼此的一跳通信范圍內(nèi)即僅考慮了一個沖突域,無法適用于多跳的網(wǎng)絡(luò)環(huán)境。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種能提高了網(wǎng)絡(luò)性能,在分布式環(huán)境下具有較強的適應(yīng)性的動態(tài)信道協(xié)商的水下傳感器網(wǎng)絡(luò)多信道介質(zhì)訪問控制通信方法。
本發(fā)明的目的是這樣實現(xiàn)的:
(1)將整個通信鏈路劃分成一個控制信道和若干個數(shù)據(jù)信道,節(jié)點在無數(shù)據(jù)收發(fā)任務(wù)時,采用睡眠喚醒機制監(jiān)聽控制信道,記錄自己一跳范圍內(nèi)的網(wǎng)絡(luò)負(fù)載情況、可用信道列表以及鄰居節(jié)點信息,將有數(shù)據(jù)發(fā)送的節(jié)點定義為發(fā)送節(jié)點,將有數(shù)據(jù)接收的節(jié)點定義為接收節(jié)點,將無數(shù)據(jù)發(fā)送接收的節(jié)點定義為空閑節(jié)點;
(2)當(dāng)發(fā)送節(jié)點有數(shù)據(jù)要發(fā)送時,在控制信道空閑時發(fā)送請求包即RTS,如果目標(biāo)節(jié)點收到該RTS,則執(zhí)行步驟(3),如果發(fā)送節(jié)點收到CTS,則直接切換到CTS中協(xié)商好的數(shù)據(jù)信道進行數(shù)據(jù)傳輸;如果發(fā)送節(jié)點收到等待消除發(fā)送包即WCTS,則開啟定時器,如果發(fā)送節(jié)點在定時器超時之前收到CTS,則同樣切換到CTS中包含數(shù)據(jù)信道進行數(shù)據(jù)傳輸;否則在定時器超時之后切換到WCTS中協(xié)商的數(shù)據(jù)信道進行數(shù)據(jù)傳輸;
(3)當(dāng)節(jié)點收到來自發(fā)送節(jié)點的RTS時,從可用信道列表中選擇一個數(shù)據(jù)信道,根據(jù)RTS中包含的發(fā)送數(shù)據(jù)包長度P和網(wǎng)絡(luò)負(fù)載指數(shù)L動態(tài)的采用不同的信道協(xié)商策略;
(4)空閑節(jié)點通過睡眠喚醒機制監(jiān)聽控制信道,當(dāng)監(jiān)聽到RTS和CTS時,更新本地網(wǎng)絡(luò)負(fù)載指數(shù)L、信道占用列表以及鄰居信息表;當(dāng)監(jiān)聽到WCTS時,根據(jù)WCTS中的修正節(jié)點列表判斷是否有權(quán)限進行信道修正;如果具有修正權(quán)限,則根據(jù)本地可用信道列表判斷WCTS中詢問的信道是否會產(chǎn)生碰撞,如果會產(chǎn)生碰撞則在本地可用信道列表中選擇最低的數(shù)據(jù)信道,并在WCTS中指定的時間發(fā)送XCTS;如果不具有修正權(quán)限或者不會產(chǎn)生碰撞,則空閑節(jié)點保持沉默;
(5)接收節(jié)點發(fā)送CTS之后,切換至數(shù)據(jù)信道等待接收數(shù)據(jù),發(fā)送節(jié)點收到CTS或者收到WCTS并超時之后,切換至數(shù)據(jù)信道進行數(shù)據(jù)發(fā)送,接收節(jié)點正確接收完數(shù)據(jù),向發(fā)送節(jié)點發(fā)送確認(rèn)包即ACK,整個通信過程完成,超時后發(fā)送節(jié)點如果沒有收到ACK,將重新發(fā)起RTS進行重傳。
所述不同的信道協(xié)商策略包括:當(dāng)數(shù)據(jù)包長P小于包長閾值Pf并且網(wǎng)絡(luò)負(fù)載指數(shù)L小于Lf時,直接回復(fù)CTS通知發(fā)送節(jié)點選定的數(shù)據(jù)信道;否則,采用基于合作修正的信道協(xié)商過程,發(fā)送WCTS詢問鄰居節(jié)點選擇的信道是否會產(chǎn)生碰撞,在鄰居節(jié)點中回復(fù)的修正清除發(fā)送包即XCTS中選擇出現(xiàn)頻率最高的信道作為最終的數(shù)據(jù)信道,回復(fù)CTS通知發(fā)送節(jié)點。
本發(fā)明的提出了一種動態(tài)信道協(xié)商策略的水下傳感器網(wǎng)絡(luò)多信道MAC協(xié)議通信方法,該方法根據(jù)發(fā)送的數(shù)據(jù)包長度和接收節(jié)點一跳范圍內(nèi)的網(wǎng)絡(luò)負(fù)載情況采用不同的信道協(xié)商策略,在數(shù)據(jù)包長較小并且網(wǎng)絡(luò)負(fù)載較低時采用簡單的信道協(xié)商過程;否則,采用消除發(fā)送包(Clear To Send,CTS)修正的信道協(xié)商過程,在分布式環(huán)境下具有更強的適應(yīng)性。
本發(fā)明的有益效果是:通過結(jié)合數(shù)據(jù)包長以及網(wǎng)絡(luò)負(fù)載動態(tài)的采用不同的信道協(xié)商策略,使得在短數(shù)據(jù)包和低網(wǎng)絡(luò)負(fù)載時采用簡單直接的信道協(xié)商過程,使傳輸更高效;否則采用基于合作修正的信道協(xié)商策略,降低了碰撞發(fā)生的概率,提高了網(wǎng)絡(luò)性能,在分布式環(huán)境下具有較強的適應(yīng)性。
附圖說明
圖1是本發(fā)明的工作時序圖。
圖2是控制幀格式圖。
圖3是最小間距示意圖。
具體實施方式
結(jié)合圖1,本發(fā)明的具體過程如下:
(1)本發(fā)明將整個通信鏈路劃分成一個控制信道和若干個數(shù)據(jù)信道。節(jié)點在無數(shù)據(jù)收發(fā)任務(wù)時,采用睡眠喚醒機制監(jiān)聽控制信道,記錄自己一跳范圍內(nèi)的網(wǎng)絡(luò)負(fù)載情況、可用信道列表以及鄰居節(jié)點信息。為了便于描述,將有數(shù)據(jù)發(fā)送的節(jié)點定義為發(fā)送節(jié)點,將有數(shù)據(jù)接收的節(jié)點定義為接收節(jié)點,將無數(shù)據(jù)發(fā)送接收的節(jié)點定義為空閑節(jié)點。
(2)當(dāng)發(fā)送節(jié)點有數(shù)據(jù)要發(fā)送時,在控制信道空閑時發(fā)送請求包(Request To Send,RTS)。如果目標(biāo)節(jié)點收到該RTS,則執(zhí)行步驟(3)。如果發(fā)送節(jié)點收到CTS,則直接切換到CTS中協(xié)商好的數(shù)據(jù)信道進行數(shù)據(jù)傳輸;如果發(fā)送節(jié)點收到等待消除發(fā)送包(Waitting Clear To Send,WCTS),則開啟定時器。如果發(fā)送節(jié)點在定時器超時之前收到CTS,則同樣切換到CTS中包含數(shù)據(jù)信道進行數(shù)據(jù)傳輸;否則在定時器超時之后切換到WCTS中協(xié)商的數(shù)據(jù)信道進行數(shù)據(jù)傳輸。
(3)當(dāng)節(jié)點收到來自發(fā)送節(jié)點的RTS時,從可用信道列表中選擇一個數(shù)據(jù)信道,根據(jù)RTS中包含的發(fā)送數(shù)據(jù)包長度P和網(wǎng)絡(luò)負(fù)載指數(shù)L動態(tài)的采用不同的信道協(xié)商策略。當(dāng)數(shù)據(jù)包長P小于包長閾值Pf并且網(wǎng)絡(luò)負(fù)載指數(shù)L小于Lf時,直接回復(fù)CTS通知發(fā)送節(jié)點選定的數(shù)據(jù)信道;否則,采用基于合作修正的信道協(xié)商過程,發(fā)送WCTS詢問鄰居節(jié)點選擇的信道是否會產(chǎn)生碰撞,在鄰居節(jié)點中回復(fù)的修正清除發(fā)送包(X Clear To Send,XCTS)中選擇出現(xiàn)頻率最高的信道作為最終的數(shù)據(jù)信道,回復(fù)CTS通知發(fā)送節(jié)點。
(4)空閑節(jié)點通過睡眠喚醒機制監(jiān)聽控制信道,當(dāng)監(jiān)聽到RTS和CTS時,更新本地網(wǎng)絡(luò)負(fù)載指數(shù)L、信道占用列表以及鄰居信息表;當(dāng)監(jiān)聽到WCTS時,根據(jù)WCTS中的修正節(jié)點列表判斷是否有權(quán)限進行信道修正;如果具有修正權(quán)限,則根據(jù)本地可用信道列表判斷WCTS中詢問的信道是否會產(chǎn)生碰撞,如果會產(chǎn)生碰撞則在本地可用信道列表中選擇最低的數(shù)據(jù)信道,并在WCTS中指定的時間發(fā)送XCTS;如果不具有修正權(quán)限或者不會產(chǎn)生碰撞,則空閑節(jié)點保持沉默。
(5)接收節(jié)點發(fā)送CTS之后,切換至數(shù)據(jù)信道等待接收數(shù)據(jù),發(fā)送節(jié)點收到CTS或者收到WCTS并超時之后,切換至數(shù)據(jù)信道進行數(shù)據(jù)發(fā)送。接收節(jié)點正確接收完數(shù)據(jù),向發(fā)送節(jié)點發(fā)送確認(rèn)包(Acknowledgement,ACK),整個通信過程完成,超時后發(fā)送節(jié)點如果沒有收到ACK,將會重新發(fā)起RTS進行重傳。
下面結(jié)合附圖對本發(fā)明提出的動態(tài)信道協(xié)商策略的水下傳感器網(wǎng)絡(luò)多信道MAC協(xié)議做進一步詳細(xì)描述:
(1)協(xié)議幀格式:
如圖2所示,所有控制幀中都包含發(fā)送節(jié)點標(biāo)識、接收節(jié)點標(biāo)識、時間戳以及包類型,分別用來區(qū)分雙方節(jié)點、控制幀發(fā)送時間以及控制幀的類型。RTS幀中包含可用信道列表和數(shù)據(jù)包長,可用信道列表用于通知接收節(jié)點自己當(dāng)前的可用信道,數(shù)據(jù)包長表示發(fā)送節(jié)點發(fā)送的數(shù)據(jù)包長度。CTS中包含信道號,即接收節(jié)點協(xié)商之后的數(shù)據(jù)信道。WCTS幀格式中包含等待時間和修正列表,等待時間是節(jié)點發(fā)送修正數(shù)據(jù)包XCTS的時間,修正列表用于標(biāo)識哪些節(jié)點具有修正的權(quán)限。XCTS幀格式具有很短的幀長,僅包含接收節(jié)點標(biāo)識和信道號,信道號為給出的建議數(shù)據(jù)信道號。
(2)網(wǎng)絡(luò)負(fù)載指數(shù):
網(wǎng)絡(luò)負(fù)載指數(shù)用來衡量節(jié)點一跳范圍內(nèi)的網(wǎng)絡(luò)負(fù)載情況,它與當(dāng)前節(jié)點一跳范圍內(nèi)正在進行數(shù)據(jù)傳輸?shù)墓?jié)點數(shù)量成正比,表達(dá)式為:
其中,L(t)是在t時刻的網(wǎng)絡(luò)負(fù)載指數(shù),N(t)是在t時刻正在進行數(shù)據(jù)傳輸?shù)墓?jié)點的數(shù)量,C是節(jié)點的數(shù)據(jù)信道的數(shù)量,是一個常量。
正在進行數(shù)據(jù)傳輸?shù)墓?jié)點數(shù)量為指定時間段內(nèi)成功的信道協(xié)商次數(shù)之和,表達(dá)式如下:
其中,Δt是時間段區(qū)間長度,Np(t)是t時刻成功的信道協(xié)商次數(shù)。
成功的信道協(xié)商次數(shù)與當(dāng)前的控制包的數(shù)量有關(guān),其表達(dá)式如下:
Np(t)=Nrts(t)+Ncts(t)+Nwcts(t)-Nack(t) (3)
其中,Nrts(t)是t時刻之前所有RTS幀的數(shù)量,Ncts(t)表示t時刻之前所有CTS幀的數(shù)量,Nwcts(t)是t時刻之前所有WCTS的數(shù)量,Nack(t)是t時刻之前所有的應(yīng)答幀ACK的數(shù)量。
聯(lián)立公式(1)、(2)、(3),得到最終的網(wǎng)絡(luò)負(fù)載指數(shù)如下:
(3)生成修正節(jié)點列表和修正發(fā)起時間:
當(dāng)接收節(jié)點采取基于合作修正的信道協(xié)商過程時,首先從可用信道列表中選擇一個數(shù)據(jù)信道,然后從自己的鄰居節(jié)點中通過公式(5)選取部分節(jié)點,這些節(jié)點將有權(quán)對選擇的信道進行修正,通過公式(6)產(chǎn)生修正發(fā)起時間。
本發(fā)明將在接收節(jié)點的鄰居節(jié)點中選取一系列的節(jié)點,使得這些節(jié)點中不存在任意兩個節(jié)點到接收節(jié)點的距離之差小于距離閾值d,來避免修正數(shù)據(jù)包XCTS的碰撞。如圖3所示,節(jié)點A和節(jié)點C在同一時刻向B發(fā)送相同長度的數(shù)據(jù)包,要使B能正確接收數(shù)據(jù)不產(chǎn)生碰撞,則需要B距離A、C的距離之差大于距離閾值d。
節(jié)點的發(fā)送時延與數(shù)據(jù)包長和發(fā)送速率有關(guān)系,其表達(dá)式如下:
其中,TS是發(fā)送時延,Pl是數(shù)據(jù)包長,r表示節(jié)點的發(fā)送速率。
節(jié)點的傳播時延與節(jié)點間的距離和聲的傳播速度關(guān)系,其表達(dá)式如下:
其中,Tp是傳播時延,D是節(jié)點之間的距離,v表示水下聲傳播的速度1500m/s。
如圖3所示的時間點之間的關(guān)系表達(dá)式如下:
Tc=T0+2TS+Tp (7)
Tc-Ta>0 (9)
其中,Tc是節(jié)點C發(fā)送的數(shù)據(jù)包到達(dá)節(jié)點B的時間,T0是節(jié)點A和節(jié)點C的起始發(fā)送時間,d表示節(jié)點A和節(jié)點C距離節(jié)點B的距離之差的絕對值。
聯(lián)立公式(5)、(6)、(7)、(8)、(9)得到最小間距d如下:
為了避免混雜XCTS碰撞,接收節(jié)點會在發(fā)送WCTS前,按照如下公式產(chǎn)生修正時間:
其中,Tx是XCTS發(fā)送時間,Tx1,Tx2...Txn分別為接收節(jié)點的鄰居節(jié)點最近產(chǎn)生的XCTS發(fā)送時間,R為節(jié)點最大傳輸半徑,Tguard為保護時間。
本發(fā)明在整個通信過程中會根據(jù)數(shù)據(jù)包長和節(jié)點的網(wǎng)絡(luò)負(fù)載情況,動態(tài)的采用不同的信道協(xié)商策略,提高網(wǎng)絡(luò)的整體性能,并在分布式環(huán)境下有更強的適應(yīng)性。