李永鋒,姜勝明
(上海海事大學(xué)信息工程學(xué)院,上海 201306)
在無線網(wǎng)絡(luò)環(huán)境中,各個移動節(jié)點共享同一個信道。由于受到節(jié)點發(fā)射功率限制和信道衰落的影響,各個移動節(jié)點的通信范圍受到限制。當(dāng)兩個節(jié)點處于各自通信范圍外的時候,這兩個節(jié)點被稱為各自的隱藏終端。當(dāng)兩個互為隱藏終端的節(jié)點同時向處于各自通信范圍內(nèi)的同一個節(jié)點發(fā)送消息的時候,可能產(chǎn)生信息的碰撞,使接收節(jié)點無法正常的接收信息。隱藏終端問題會導(dǎo)致信道資源浪費、節(jié)點能量消耗,使網(wǎng)絡(luò)吞吐量降低并加大網(wǎng)絡(luò)延遲。
目前,設(shè)計了許多MAC協(xié)議來解決隱藏終端的問題,其中運用比較廣泛一種是采用基于單信道的RTSCTS握手機(jī)制,其基本思想是,在數(shù)據(jù)發(fā)送之前發(fā)送方與接收方通過RTS和CTS幀預(yù)約信道,其他鄰居節(jié)點聽到RTS和CTS后均延遲自己的發(fā)送,直到通信雙方數(shù)據(jù)傳輸完畢。典型的單信道協(xié)議有:CSMA[1](Carrier Sense Multiple Access)、MACA[2](Multiple Access with Collision Avoidance)、IEEE802.11 DCF[3](Distributed Coordinated Function)等。當(dāng)節(jié)點處在密集分布狀態(tài)且要求數(shù)據(jù)快速發(fā)送時,RTS-CTS機(jī)制會出現(xiàn)因握手所耗費時間過長而導(dǎo)致信道的利用率和節(jié)點能量利用率降低的問題。在基于握手機(jī)制的MAC協(xié)議的基礎(chǔ)上,有人提出了一種自適應(yīng)重傳超時(Retransmission Time-Out,RTO)[4]的方法。通過一種新的貝葉斯動態(tài)線性模型預(yù)測往返時間(Round Trip Time,RTT)的值,然后自適應(yīng)地將RTO調(diào)整為預(yù)測值,從而解決數(shù)據(jù)幀的沖突問題,并提高網(wǎng)絡(luò)吞吐量。此外還有一些基于流量自適應(yīng)機(jī)制的MAC協(xié)議[5],通過對該機(jī)制中的退避窗口調(diào)節(jié)算法進(jìn)行優(yōu)化,也能在一定程度上避免隱藏終端的問題,并有效地改善吞吐量。部分基于雙信道和忙音信道的協(xié)議,通過對信道的劃分也能用來避免信息沖突 ,如 MARCH[6](Media Access with Reduced Handshake)、DBTMA[7~8](Dual Busy Tone Multiple Access)協(xié)議。但是這一系列的方法設(shè)計算法復(fù)雜,實現(xiàn)困難,不利于廣泛使用。
另一種解決隱藏終端問題是從接收節(jié)點開始入手[9],其思路為:使接收節(jié)點的鄰居節(jié)點知道自己此時不能進(jìn)行數(shù)據(jù)發(fā)送。然而觸發(fā)傳輸?shù)氖前l(fā)送方而不是接收方,因此接收節(jié)點往往無法準(zhǔn)確提前告知其周圍鄰居節(jié)點此時和將來一段時間的接收情況。
本文提出的MAC協(xié)議是一種基于握手機(jī)制的協(xié)議。該協(xié)議以接收節(jié)點為中心,發(fā)送數(shù)據(jù)的時間被分成兩個部分,握手階段(Handshake Time,HT)和數(shù)據(jù)發(fā)送階段(Data transmission Time,DT)。在HT階段分為兩次握手,首先接收節(jié)點處于空閑狀態(tài)時,會等待來自發(fā)送節(jié)點的發(fā)送計劃信號(Plan Signal,PS)。當(dāng)收到第一個PS時,會進(jìn)入一段等待時間TW,在TW時間內(nèi),接收節(jié)點將持續(xù)保持空閑狀態(tài)并接收其他發(fā)送節(jié)點的PS。發(fā)送節(jié)點需要發(fā)送信息時,首先會進(jìn)入到偵聽狀態(tài),若偵聽到接收節(jié)點處于空閑狀態(tài)則會進(jìn)入隨機(jī)等待時間(Backoff Time,BT),每個節(jié)點的BT是隨機(jī)設(shè)定的。BT截止后,各發(fā)送節(jié)點將發(fā)送計劃信號PS發(fā)送給接收節(jié)點并進(jìn)入等待狀態(tài)。接收節(jié)點收到PS后將其存儲在接收計劃表中。
接收節(jié)點建立接收計劃后,對接收計劃信息進(jìn)行處理,然后打包成發(fā)送控制包(Send Control Package,SCP),發(fā)送給所有的鄰居節(jié)點。鄰居節(jié)點收到SCP后,將提取接收計劃的信息,然后按照接收計劃信息依次發(fā)送消息。該協(xié)議最主要的一個特點是,接收節(jié)點不只是與唯一的發(fā)送節(jié)點進(jìn)行握手,而是在TW時間內(nèi)與周圍所有需要發(fā)送信息的鄰居節(jié)點進(jìn)行握手。這樣在有多個節(jié)點需要發(fā)送數(shù)據(jù)的情況下,能夠大大降低握手的等待時間,提高數(shù)據(jù)發(fā)送速率。此外通過握手能夠掌握發(fā)送節(jié)點的發(fā)送信息,以此建立接收節(jié)點的接收計劃。將合理的接收計劃告知發(fā)送節(jié)點后,發(fā)送節(jié)點根據(jù)接收計劃依次發(fā)送數(shù)據(jù),這樣不僅避免由隱藏終端導(dǎo)致的信息沖突,也避免了由暴露終端導(dǎo)致的信道資源浪費的問題。
(1)握手策略
在HT階段的握手策略是由發(fā)送節(jié)點主動發(fā)起握手。當(dāng)接收節(jié)點處于空閑狀態(tài)時會等待來自發(fā)送節(jié)點的PS。當(dāng)發(fā)送節(jié)點有發(fā)送意愿的時候會進(jìn)入到偵聽狀態(tài),若在偵聽過程中發(fā)現(xiàn)接收節(jié)點處于空閑狀態(tài),則會自動進(jìn)入BT,當(dāng)BT結(jié)束后,有發(fā)送數(shù)據(jù)意愿的鄰居節(jié)點即發(fā)送節(jié)點,會將發(fā)送數(shù)據(jù)的時間Td記錄到PS中,然后發(fā)送給接收節(jié)點,此時第一次握手結(jié)束。接收節(jié)點收到PS后,會將PS中的Td提取出來存儲在接收計劃表中以便在建立接收計劃過程中使用。接收節(jié)點的接收計劃建立后,會將接收計劃記錄在SCP中,然后將SCP發(fā)送給每一個鄰居節(jié)點,鄰居節(jié)點收到SCP后,有發(fā)送意愿的節(jié)點將按照接收計劃依次發(fā)送數(shù)據(jù),而沒有發(fā)送意愿的節(jié)點將在整個發(fā)送過程中不在發(fā)送數(shù)據(jù),此時第二次握手結(jié)束。本協(xié)議的握手流程圖如圖1所示,其中在第一次握手結(jié)束后的BT階段,每一個節(jié)點的BT都是隨機(jī)的,大小可能相同也可能不相同。當(dāng)發(fā)送節(jié)點比較多的時候,發(fā)送節(jié)點將PS發(fā)送給接收節(jié)點時,產(chǎn)生信息沖突的概率也會大大增加。此時為每一個發(fā)送節(jié)點增加一個BT,最大程度的錯開PS的發(fā)送時間,能在最大程度上降低接收節(jié)點接收PS時產(chǎn)生信息沖突的概率。
圖1 握手流程圖
(2)接收計劃建立過程
在HT階段,當(dāng)發(fā)送節(jié)點向接收節(jié)點發(fā)送PS后,接收節(jié)點將根據(jù)PS到達(dá)的順序和PS內(nèi)的Td來建立接收計劃。接收計劃主要用來為每一個發(fā)送節(jié)點設(shè)定數(shù)據(jù)傳輸次序、劃分?jǐn)?shù)據(jù)傳輸時隙和預(yù)留信道。接收計劃的建立過程如圖2所示。發(fā)送節(jié)點1、發(fā)送節(jié)點2與發(fā)送節(jié)點3經(jīng)過BT的等待后,開始發(fā)送PS給接收節(jié)點1。當(dāng)發(fā)送節(jié)點1的PS最先到達(dá)接收節(jié)點1時,接收節(jié)點1將為發(fā)送節(jié)點1設(shè)定一個發(fā)送優(yōu)先級(Send Priority Level,SPL),并令 SPL=1。發(fā)送節(jié)點 2 的 PS 第二個到達(dá)后,則其SPL=2,發(fā)送節(jié)點3的PS第三個到達(dá),則SPL=3。SPL劃分完成后,接收節(jié)點會將發(fā)送節(jié)點所發(fā)送的PS里的Td取出來與每個節(jié)點的SPL一起記錄在接收計劃表中。全部記錄完畢后,接收節(jié)點將根據(jù)SPL和Td為每個發(fā)送節(jié)點設(shè)定發(fā)送等待時間TSi。當(dāng)SPL=1時,TS1=TSIFS,即發(fā)送節(jié)點經(jīng)過短幀間間隔(Short Inter Frame Space,SIFS)的等待后開始發(fā)送數(shù)據(jù)。當(dāng)SPL=2時,TS2=TS1+Td1,即發(fā)送節(jié)點需要等待的時間為上一個發(fā)送節(jié)點的發(fā)送等待時間和發(fā)送時間之和。當(dāng)SPL=3時,TS3=TS1+TS2+Td2。依次類推,當(dāng)SPL=n 時,TSn=TS1+TS2+TS3+...+TS(n-1)+Td(n-1)。當(dāng)發(fā)送節(jié)點的發(fā)送等待時時間設(shè)定完畢后,將其記錄在SCP中發(fā)送給發(fā)送節(jié)點。同時,接收節(jié)點將設(shè)定一個接收數(shù)據(jù)時間Tr,其值Tr=TSn+Tdn。至此接收計劃制定完畢,接收節(jié)點發(fā)送完SCP后會經(jīng)過SIFS的等待后進(jìn)入接收數(shù)據(jù)的狀態(tài),并開始計時。
圖2 接收計劃建立過程
(3)沖突避免機(jī)制
隱藏終端問題是本協(xié)議所需要解決的關(guān)鍵問題,在本協(xié)議的握手階段,將會針對由隱藏終端問題導(dǎo)致的信息沖突給出解決方案。首先,在第一次握手階段,在發(fā)送PS前通過隨機(jī)的BT等待,可以避免發(fā)送節(jié)點發(fā)送PS到接收節(jié)點的過程中產(chǎn)生信息沖突,而沒有發(fā)送意愿的節(jié)點若收到PS將進(jìn)入到退避狀態(tài)。當(dāng)接收節(jié)點發(fā)送SPC后,無發(fā)送意愿的鄰居節(jié)點接收到SCP提取出接收節(jié)點的等待時間Tr,開啟計時器,并保持退避狀態(tài),直到Tr結(jié)束。在Tr期間無發(fā)送意愿的鄰居節(jié)點可以進(jìn)行信息的接收,但不能進(jìn)行數(shù)據(jù)的發(fā)送,從而避免了隱藏終端和暴露終端的問題。
(4)數(shù)據(jù)傳輸
經(jīng)過HT階段的握手后進(jìn)入到DT階段,接收節(jié)點將SCP發(fā)送出去后便進(jìn)入數(shù)據(jù)接收狀態(tài),同時開啟計時器,直到Tr結(jié)束。發(fā)送節(jié)點接收到SCP后將提取對應(yīng)的發(fā)送等待時間TSi。然后開啟計時器,等待數(shù)據(jù)的發(fā)送。數(shù)據(jù)傳輸過程如圖3所示。發(fā)送節(jié)點1的SPL=1,在經(jīng)過TS1的等待后開始發(fā)送數(shù)據(jù)。當(dāng)發(fā)送節(jié)點1數(shù)據(jù)發(fā)送結(jié)束后,由于發(fā)送節(jié)點2的SPL=2,所以在等待TS2后開始發(fā)送數(shù)據(jù)。接收節(jié)點3也在等待TS3后開始發(fā)送數(shù)據(jù)。每一個發(fā)送節(jié)點在收到SCP后均開啟計時器然后進(jìn)入數(shù)據(jù)等待發(fā)送狀態(tài)。在整個數(shù)據(jù)傳輸過程中,通過為每一個發(fā)送節(jié)點設(shè)定發(fā)送等待時間TSi,使每一個節(jié)點在自己的時間區(qū)域內(nèi)發(fā)送數(shù)據(jù),從而避免由于隱藏終端導(dǎo)致的數(shù)據(jù)發(fā)送沖突。當(dāng)Tr截止后,接收節(jié)點停止接收數(shù)據(jù),清空接收計劃表,重新進(jìn)入到HT階段。
圖3 數(shù)據(jù)傳輸過程
本文將對本協(xié)議在靜態(tài)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中進(jìn)行仿真,使用仿真軟件為Exata。仿真主要對協(xié)議的行為和性能進(jìn)行驗證,并與現(xiàn)有的基于802.11協(xié)議的RTSCTS握手機(jī)制進(jìn)行對比。在靜態(tài)網(wǎng)絡(luò)拓?fù)渲?,仿真場景大小?000m×1000m,在場景中隨機(jī)分布5個節(jié)點。節(jié)點的傳輸范圍為500m。數(shù)據(jù)的傳輸速率為2Mb/s,數(shù)據(jù)包的長度為512byte,則數(shù)據(jù)包傳輸持續(xù)時間為0.125us。TW的時間設(shè)定為5ms。本文將從吞吐量、丟包率和時延這三個指標(biāo)來評價本協(xié)議的性能。
(1)吞吐量
網(wǎng)絡(luò)吞吐量是指在單位時間內(nèi)所收到的數(shù)據(jù)包的字節(jié)數(shù)。如圖4所示,當(dāng)提供的負(fù)載較低時,兩種協(xié)議的吞吐量相差不大。這是由于當(dāng)負(fù)載很小時,數(shù)據(jù)包發(fā)送沖突也小,兩種協(xié)議在握手過程中表現(xiàn)的性能相差不大。當(dāng)負(fù)載逐步增加時,本MAC協(xié)議的在吞吐量的表現(xiàn)上開始優(yōu)于RTS-CTS握手機(jī)制。當(dāng)負(fù)載大于20時優(yōu)勢開始明顯。這是由于當(dāng)負(fù)載增大后,RTSCTS機(jī)制在握手過程中需要耗費更多的等待時間。而本MAC協(xié)議在TW時間內(nèi)與多個發(fā)送節(jié)點握手,能夠大大降低握手等待的時間,從而提高吞吐量。
圖4 本MAC協(xié)議與RTS/CTS機(jī)制吞吐量比較
(2)丟包率
丟包率是指接收到數(shù)據(jù)包的個數(shù)與發(fā)送數(shù)據(jù)包個數(shù)的比值。圖5所示為本MAC協(xié)議與RTS-CTS機(jī)制丟包率的比較。隨著負(fù)載的增加,兩種協(xié)議的丟包率均出現(xiàn)一定程度的增加。當(dāng)負(fù)載小于30時,本MAC協(xié)議的丟包率比RTS-CTS的丟包率略小,當(dāng)負(fù)載大于40時,RTS-CTS機(jī)制的丟包率比本MAC協(xié)議的丟包率逐漸變得更大。這表明,RTS-CTS機(jī)制和本MAC協(xié)議都能通過握手控制由隱藏帶來的數(shù)據(jù)沖突問題,從而降低丟包率。在負(fù)載逐漸增加變大的情況下,本MAC協(xié)議比RTS-CTS機(jī)制具有一定的優(yōu)勢。但是兩種協(xié)議隨著負(fù)載的增加均出現(xiàn)了丟包率增加的現(xiàn)象,說明還不能完全解決由隱藏終端帶來的數(shù)據(jù)沖突問題。
圖5 本MAC協(xié)議與RTS/CTS機(jī)制丟包率比較
(3)端到端時延
在圖6我們對比了本MAC協(xié)議與RTS-CTS機(jī)制的時延。當(dāng)負(fù)載小于33.66時,本MAC協(xié)議與RTSCTS機(jī)制在時延上基本上沒有區(qū)別,并且上升的變化很小。這是由于負(fù)載小,數(shù)據(jù)發(fā)生沖突的量很小,兩種協(xié)議都需要在數(shù)據(jù)發(fā)送之前通過握手來預(yù)訂信道,所以兩種協(xié)議在發(fā)送數(shù)據(jù)之前都需要等待一定的時間,即造成的時延相差不大。當(dāng)負(fù)載大于33.66時,本MAC協(xié)議的時延要比RTS-CTS的時延要小,這是由于本MAC協(xié)議在握手過程中,通過接收節(jié)點和多個發(fā)送節(jié)點握手,從而降低了握手的等待時間。此外握手完成后,節(jié)點按照接收計劃進(jìn)行數(shù)據(jù)發(fā)送也極大地減少了數(shù)據(jù)幀的沖突,所以其時延小于RTS-CTS。
本文針對無線網(wǎng)絡(luò)中隱藏終端和暴露終端的問題,設(shè)計了一種基于握手機(jī)制的以接收節(jié)點決策為主的新型MAC協(xié)議。該協(xié)議以接收節(jié)點在握手階段與多個發(fā)送節(jié)點進(jìn)行握手來獲取發(fā)送信息并制定接收計劃,合理安排信息的發(fā)送,從而解決了隱藏終端和暴露終端帶來的數(shù)據(jù)發(fā)送沖突問題。通過在仿真平臺上的大量模擬,并與RTS-CTS機(jī)制在吞吐量、丟包率和時延進(jìn)行對比,結(jié)果表明本協(xié)議能夠獲得較高的吞吐量,比較低的丟包率和時延。
圖6 本MAC協(xié)議與RTS/CTS機(jī)制時延比較