在無線網路中怎樣才會觸發二進位退避機制?

在有線網路,我們可以很簡單檢測到衝突,可是在無線網路中呢?


1.有線網路執行CSMA/CD,則就是題主所說的衝突檢測機制。發送者一邊發送,一邊監聽信道中是否發生衝突(即收到的數據不等於自己發送的),若發現衝突,則停止傳輸,並且發送jamming信號,告知其餘節點發生衝突。然後之前的發送節點回退一個固定時間,然後進行下一次的發送(若信道空閑則發送)。

2.在標準的無線網路中(排除一些科研上的文章),802.11是採用CSMA/CA的方式進行衝突迴避,而根據題主這裡所述的二進位指數退避(BEB)機制,所以一般就是802.11所採用,LTE中的衝突時在RACH中競爭選擇preamble的時候造成,與BEB關係不大。在802.11中,一邊發送一邊監聽,由於無線網路的特性是沒有辦法做到的。所以在實際過程中,為了判斷自己的數據包是否發送成功,協議規定,在接收方成功接收數據包之後,只要返回ACK信息。若接收方在發送完數據包後的規定時間內接收到ACK,則代表發送成功,否則,若ack timeout則代表發送失敗,通過這個方法,發送者判斷是否有錯誤發生(這裡的錯誤有可能是衝突造成,也有可能是信道造成,802.11無法細化辨別錯誤發生的原因)。假設一個AP下面關聯了很多個節點,如果這些節點同一個時刻進行數據包的發送(即和有線網一樣,來一個包,若信道空閑立刻發送),那麼必然會發生衝突。為了解決這個問題,基本思想是實現p-堅持演算法,即讓每一個節點以p的概率進行發送,通過這樣的方法來在某一個時刻上,減少同時傳輸的節點的數量(若節點的數量=1,那麼就沒有衝突了)。而二進位指數退避則是這樣思想下進行設計的,在802.11中,我們之前所述,只有通過ACK(或者CTS反饋,這裡不提RTS所以不細關注)反饋才可以知道是否有衝突發生,而這都是數據發送完之後才可以發現的。為了提高效率,CSMA/CA即強調的是衝突避免機制,換言之就是之前所述,避免兩個人同時傳輸,即避免衝突。在CSMA/CA中,在每一個節點要發數據包前,其需要監聽信道兩個SLOT(這裡上次寫錯了,實際上一般說法是等待DIFS時間,而DIFS是由一個SIFS和兩個SLOT組成,而一個SLOT是由CCA:4us,傳播延遲:2us,天線切換時間:4us是三個部分組成,其中CCA就是監聽信道的動作,所以是連續監聽信道兩個SLOT)時間(確保信道空閑),然後不是立刻發送,需要進行backoff(即在一個CW窗口內隨機選擇一個數,然後每一個slot監聽一次信道,若有人傳輸,則凍結住當前的倒數,等信道空閑繼續倒數。當倒數到0的時候,該節點則被允許發送),通過backoff機制,可以讓一些待發送的節點,實際發送的時間在時間軸上錯開來,即避免了衝突的發生,而且這裡的CW窗口如果越大,那麼發送的時間就越離散,衝突的概率也就越低,所以在802.11中規定,如果實際場景下檢測到衝突,那麼CW窗口值的設定需要翻倍(最多翻到第6輪,第七輪保持CW不變再次嘗試發送,若失敗,則丟包),從而減少衝突的概率。

PS:之所以是二進位指數迴避這裡簡單理解就是CW窗口大小的選擇是依據二進位的原則,即翻倍,再翻倍這樣。


發送幀的同時進行接收,將收到的信號逐比特地與發送的信號相比較,如果有不符合的,就說明出現了衝突。


推薦閱讀:

各種不同通信業務的誤碼率是多少?
去哪裡了解更多的WIFI知識,關於802.11一系列的東西,都有需求,有很么推薦?
802.11g 帶寬20M,採樣為啥還是20M?
PTN 與SDH的區別?
超外差接收機工作原理?

TAG:無線網路 | 計算機 | 通信 | 網路通信 | 80211 |