李永鋒,姜勝明
(上海海事大學信息工程學院,上海 201306)
在無線網絡環境中,各個移動節點共享同一個信道。由于受到節點發射功率限制和信道衰落的影響,各個移動節點的通信范圍受到限制。當兩個節點處于各自通信范圍外的時候,這兩個節點被稱為各自的隱藏終端。當兩個互為隱藏終端的節點同時向處于各自通信范圍內的同一個節點發送消息的時候,可能產生信息的碰撞,使接收節點無法正常的接收信息。隱藏終端問題會導致信道資源浪費、節點能量消耗,使網絡吞吐量降低并加大網絡延遲。
目前,設計了許多MAC協議來解決隱藏終端的問題,其中運用比較廣泛一種是采用基于單信道的RTSCTS握手機制,其基本思想是,在數據發送之前發送方與接收方通過RTS和CTS幀預約信道,其他鄰居節點聽到RTS和CTS后均延遲自己的發送,直到通信雙方數據傳輸完畢。典型的單信道協議有:CSMA[1](Carrier Sense Multiple Access)、MACA[2](Multiple Access with Collision Avoidance)、IEEE802.11 DCF[3](Distributed Coordinated Function)等。當節點處在密集分布狀態且要求數據快速發送時,RTS-CTS機制會出現因握手所耗費時間過長而導致信道的利用率和節點能量利用率降低的問題。在基于握手機制的MAC協議的基礎上,有人提出了一種自適應重傳超時(Retransmission Time-Out,RTO)[4]的方法。通過一種新的貝葉斯動態線性模型預測往返時間(Round Trip Time,RTT)的值,然后自適應地將RTO調整為預測值,從而解決數據幀的沖突問題,并提高網絡吞吐量。此外還有一些基于流量自適應機制的MAC協議[5],通過對該機制中的退避窗口調節算法進行優化,也能在一定程度上避免隱藏終端的問題,并有效地改善吞吐量。部分基于雙信道和忙音信道的協議,通過對信道的劃分也能用來避免信息沖突 ,如 MARCH[6](Media Access with Reduced Handshake)、DBTMA[7~8](Dual Busy Tone Multiple Access)協議。但是這一系列的方法設計算法復雜,實現困難,不利于廣泛使用。
另一種解決隱藏終端問題是從接收節點開始入手[9],其思路為:使接收節點的鄰居節點知道自己此時不能進行數據發送。然而觸發傳輸的是發送方而不是接收方,因此接收節點往往無法準確提前告知其周圍鄰居節點此時和將來一段時間的接收情況。
本文提出的MAC協議是一種基于握手機制的協議。該協議以接收節點為中心,發送數據的時間被分成兩個部分,握手階段(Handshake Time,HT)和數據發送階段(Data transmission Time,DT)。在HT階段分為兩次握手,首先接收節點處于空閑狀態時,會等待來自發送節點的發送計劃信號(Plan Signal,PS)。當收到第一個PS時,會進入一段等待時間TW,在TW時間內,接收節點將持續保持空閑狀態并接收其他發送節點的PS。發送節點需要發送信息時,首先會進入到偵聽狀態,若偵聽到接收節點處于空閑狀態則會進入隨機等待時間(Backoff Time,BT),每個節點的BT是隨機設定的。BT截止后,各發送節點將發送計劃信號PS發送給接收節點并進入等待狀態。接收節點收到PS后將其存儲在接收計劃表中。
接收節點建立接收計劃后,對接收計劃信息進行處理,然后打包成發送控制包(Send Control Package,SCP),發送給所有的鄰居節點。鄰居節點收到SCP后,將提取接收計劃的信息,然后按照接收計劃信息依次發送消息。該協議最主要的一個特點是,接收節點不只是與唯一的發送節點進行握手,而是在TW時間內與周圍所有需要發送信息的鄰居節點進行握手。這樣在有多個節點需要發送數據的情況下,能夠大大降低握手的等待時間,提高數據發送速率。此外通過握手能夠掌握發送節點的發送信息,以此建立接收節點的接收計劃。將合理的接收計劃告知發送節點后,發送節點根據接收計劃依次發送數據,這樣不僅避免由隱藏終端導致的信息沖突,也避免了由暴露終端導致的信道資源浪費的問題。
(1)握手策略
在HT階段的握手策略是由發送節點主動發起握手。當接收節點處于空閑狀態時會等待來自發送節點的PS。當發送節點有發送意愿的時候會進入到偵聽狀態,若在偵聽過程中發現接收節點處于空閑狀態,則會自動進入BT,當BT結束后,有發送數據意愿的鄰居節點即發送節點,會將發送數據的時間Td記錄到PS中,然后發送給接收節點,此時第一次握手結束。接收節點收到PS后,會將PS中的Td提取出來存儲在接收計劃表中以便在建立接收計劃過程中使用。接收節點的接收計劃建立后,會將接收計劃記錄在SCP中,然后將SCP發送給每一個鄰居節點,鄰居節點收到SCP后,有發送意愿的節點將按照接收計劃依次發送數據,而沒有發送意愿的節點將在整個發送過程中不在發送數據,此時第二次握手結束。本協議的握手流程圖如圖1所示,其中在第一次握手結束后的BT階段,每一個節點的BT都是隨機的,大小可能相同也可能不相同。當發送節點比較多的時候,發送節點將PS發送給接收節點時,產生信息沖突的概率也會大大增加。此時為每一個發送節點增加一個BT,最大程度的錯開PS的發送時間,能在最大程度上降低接收節點接收PS時產生信息沖突的概率。

圖1 握手流程圖
(2)接收計劃建立過程
在HT階段,當發送節點向接收節點發送PS后,接收節點將根據PS到達的順序和PS內的Td來建立接收計劃。接收計劃主要用來為每一個發送節點設定數據傳輸次序、劃分數據傳輸時隙和預留信道。接收計劃的建立過程如圖2所示。發送節點1、發送節點2與發送節點3經過BT的等待后,開始發送PS給接收節點1。當發送節點1的PS最先到達接收節點1時,接收節點1將為發送節點1設定一個發送優先級(Send Priority Level,SPL),并令 SPL=1。發送節點 2 的 PS 第二個到達后,則其SPL=2,發送節點3的PS第三個到達,則SPL=3。SPL劃分完成后,接收節點會將發送節點所發送的PS里的Td取出來與每個節點的SPL一起記錄在接收計劃表中。全部記錄完畢后,接收節點將根據SPL和Td為每個發送節點設定發送等待時間TSi。當SPL=1時,TS1=TSIFS,即發送節點經過短幀間間隔(Short Inter Frame Space,SIFS)的等待后開始發送數據。當SPL=2時,TS2=TS1+Td1,即發送節點需要等待的時間為上一個發送節點的發送等待時間和發送時間之和。當SPL=3時,TS3=TS1+TS2+Td2。依次類推,當SPL=n 時,TSn=TS1+TS2+TS3+...+TS(n-1)+Td(n-1)。當發送節點的發送等待時時間設定完畢后,將其記錄在SCP中發送給發送節點。同時,接收節點將設定一個接收數據時間Tr,其值Tr=TSn+Tdn。至此接收計劃制定完畢,接收節點發送完SCP后會經過SIFS的等待后進入接收數據的狀態,并開始計時。

圖2 接收計劃建立過程
(3)沖突避免機制
隱藏終端問題是本協議所需要解決的關鍵問題,在本協議的握手階段,將會針對由隱藏終端問題導致的信息沖突給出解決方案。首先,在第一次握手階段,在發送PS前通過隨機的BT等待,可以避免發送節點發送PS到接收節點的過程中產生信息沖突,而沒有發送意愿的節點若收到PS將進入到退避狀態。當接收節點發送SPC后,無發送意愿的鄰居節點接收到SCP提取出接收節點的等待時間Tr,開啟計時器,并保持退避狀態,直到Tr結束。在Tr期間無發送意愿的鄰居節點可以進行信息的接收,但不能進行數據的發送,從而避免了隱藏終端和暴露終端的問題。
(4)數據傳輸
經過HT階段的握手后進入到DT階段,接收節點將SCP發送出去后便進入數據接收狀態,同時開啟計時器,直到Tr結束。發送節點接收到SCP后將提取對應的發送等待時間TSi。然后開啟計時器,等待數據的發送。數據傳輸過程如圖3所示。發送節點1的SPL=1,在經過TS1的等待后開始發送數據。當發送節點1數據發送結束后,由于發送節點2的SPL=2,所以在等待TS2后開始發送數據。接收節點3也在等待TS3后開始發送數據。每一個發送節點在收到SCP后均開啟計時器然后進入數據等待發送狀態。在整個數據傳輸過程中,通過為每一個發送節點設定發送等待時間TSi,使每一個節點在自己的時間區域內發送數據,從而避免由于隱藏終端導致的數據發送沖突。當Tr截止后,接收節點停止接收數據,清空接收計劃表,重新進入到HT階段。

圖3 數據傳輸過程
本文將對本協議在靜態網絡拓撲結構中進行仿真,使用仿真軟件為Exata。仿真主要對協議的行為和性能進行驗證,并與現有的基于802.11協議的RTSCTS握手機制進行對比。在靜態網絡拓撲中,仿真場景大小為1000m×1000m,在場景中隨機分布5個節點。節點的傳輸范圍為500m。數據的傳輸速率為2Mb/s,數據包的長度為512byte,則數據包傳輸持續時間為0.125us。TW的時間設定為5ms。本文將從吞吐量、丟包率和時延這三個指標來評價本協議的性能。
(1)吞吐量
網絡吞吐量是指在單位時間內所收到的數據包的字節數。如圖4所示,當提供的負載較低時,兩種協議的吞吐量相差不大。這是由于當負載很小時,數據包發送沖突也小,兩種協議在握手過程中表現的性能相差不大。當負載逐步增加時,本MAC協議的在吞吐量的表現上開始優于RTS-CTS握手機制。當負載大于20時優勢開始明顯。這是由于當負載增大后,RTSCTS機制在握手過程中需要耗費更多的等待時間。而本MAC協議在TW時間內與多個發送節點握手,能夠大大降低握手等待的時間,從而提高吞吐量。

圖4 本MAC協議與RTS/CTS機制吞吐量比較
(2)丟包率
丟包率是指接收到數據包的個數與發送數據包個數的比值。圖5所示為本MAC協議與RTS-CTS機制丟包率的比較。隨著負載的增加,兩種協議的丟包率均出現一定程度的增加。當負載小于30時,本MAC協議的丟包率比RTS-CTS的丟包率略小,當負載大于40時,RTS-CTS機制的丟包率比本MAC協議的丟包率逐漸變得更大。這表明,RTS-CTS機制和本MAC協議都能通過握手控制由隱藏帶來的數據沖突問題,從而降低丟包率。在負載逐漸增加變大的情況下,本MAC協議比RTS-CTS機制具有一定的優勢。但是兩種協議隨著負載的增加均出現了丟包率增加的現象,說明還不能完全解決由隱藏終端帶來的數據沖突問題。

圖5 本MAC協議與RTS/CTS機制丟包率比較
(3)端到端時延
在圖6我們對比了本MAC協議與RTS-CTS機制的時延。當負載小于33.66時,本MAC協議與RTSCTS機制在時延上基本上沒有區別,并且上升的變化很小。這是由于負載小,數據發生沖突的量很小,兩種協議都需要在數據發送之前通過握手來預訂信道,所以兩種協議在發送數據之前都需要等待一定的時間,即造成的時延相差不大。當負載大于33.66時,本MAC協議的時延要比RTS-CTS的時延要小,這是由于本MAC協議在握手過程中,通過接收節點和多個發送節點握手,從而降低了握手的等待時間。此外握手完成后,節點按照接收計劃進行數據發送也極大地減少了數據幀的沖突,所以其時延小于RTS-CTS。
本文針對無線網絡中隱藏終端和暴露終端的問題,設計了一種基于握手機制的以接收節點決策為主的新型MAC協議。該協議以接收節點在握手階段與多個發送節點進行握手來獲取發送信息并制定接收計劃,合理安排信息的發送,從而解決了隱藏終端和暴露終端帶來的數據發送沖突問題。通過在仿真平臺上的大量模擬,并與RTS-CTS機制在吞吐量、丟包率和時延進行對比,結果表明本協議能夠獲得較高的吞吐量,比較低的丟包率和時延。

圖6 本MAC協議與RTS/CTS機制時延比較