802.11協議精讀3:CSMA/CD與CSMA/CA


序言


在前一份文檔中,我們具體記錄了有關802.11中DCF模式以及其核心CSMA/CA的一些內容與細節。

對照無線網絡,有線網絡的集線器和中繼器設計中。採用了CSMA/CD技術。該技術早期是用來解決有線網絡中,共享介質下的多路網絡接入問題,該技術仍然在當今的10M/100M半雙工網絡中使用。在更高的帶寬情況下,比方千M網絡,則採用全雙工技術以取代CSMA/CD。

本文主旨是希望能理清CSMA/CD和CSMA/CA的關系與差別。接下來。我們首先會說明最基礎的CSMA協議的工作機制,然后我們說明CSMA/CD的工作機制。最后,對照前一份文檔,我們分析CSMA/CD和CSMA/CA的差別。

注:本文中有關有線網絡的理論非常多參考自《Ethernet:The Definitive Guide》。


CSMA


CSMA的全稱是Carrier Sense Multiple Access。在筆者的理解中。其更趨向於一種理論研究的隨機接入協議。或者說,基於其思想誕生了比方CSMA/CD與CSMA/CA這種詳細協議。

CSMA能夠分成下面三種:

  • 1-persistentes CSMA(1堅持-CSMA)
  • 0-persistentes CSMA(0堅持-CSMA)
  • p-persistentes CSMA(p堅持-CSMA)

從歷史上而言,CSMA實際上是源於aloha協議。為了理清協議的設計思路的脈絡關系,我們還是有必要對原始的aloha協議做一個說明。Aloha是為無線工作環境設計的一個協議,其最初的思想非常easy:“一個aloha節點僅僅要有數據的話,該節點就能夠馬上發送。當該節點數據發送完之后。其須要等待接收方反饋的ACK。若成功接收到ACK之后,那么這一次傳輸成功。假設沒有收到ACK的話,那么這一次傳輸失敗。該aloha節點會覺得網絡中還存在另外一個aloha節點也在發送數據,所以造成接收方發生了沖突。最后這些沖突的節點會隨機選擇一個時間進行回退(backoff),以避免下一次沖突。

若沖突節點回退完畢。其才干夠又一次進行發送"。

實際上從初始的aloha協議中。我們就能夠看到如今CSMA/CA的影子,網絡協議的設計都是符合KISS原則的(Keep It Simple and Stupid),所以實際中我們所應用到的網絡協議,其思想都不會是特別復雜。基於aloha協議的思想,CSMA協議對其最大的改進即是引入了LBT機制(Listen Before Talk),在CSMA中的CS(Carrier Sense)即是指Listen監聽機制。

在LBT機制下CSMA的思想就是:“CSMA節點在每一次發送之前先監聽信道是否是空暇的,假設信道不是空暇的話。那么就不發送數據,等待一會再進行嘗試。僅僅有確保是空暇的情況下,才干夠發送數據,從而避免打斷其它節點正在進行的傳輸過程"。

詳細CSMA的工作機制關聯着我們之前所敘述的三種CSMA模式,下面我們分別進行敘述:

  • 1-persistentes CSMA:“節點須要持續監聽信道。一旦節點發現信道空暇后,則立馬發送數據。”。


  • 0-persistentes CSMA:“節點不連續監聽信道,若該時刻節點監聽信道為busy,那么等待一段時間后。再次進行監聽。

    若節點該時刻監聽信道為空暇,則立馬發送數據。

  • p-persistentes CSMA:“節點須要持續監聽信道,一旦發現信道空暇后,節點以p的概率立馬發送數據。以1-p的概率不發送數據。

    若節點該時刻不發送數據。那么等待一段時間后。再次進行監聽,並以p概率再次發送”。(注:這里所述的p概率能夠理解成拋骰子賭大小,假設拋大,那么就發送,反之不發送。當中拋大的概率就是p,而拋小的概率就是1-p


在以上三種CSMA機制中,若節點傳輸發送沖突。則類似aloha的基本算法,隨機等待一個時間之后,再次進行重試。

以上,我們分析了CSMA的基本工作模式。或者稱之為CSMA的基本思想,接下來,我們詳細討論有線網絡所應用到的CSMA/CD協議。


CSMA/CD


CSMA/CD的全稱是Carrier Sense Multiple Access with Collision Detection,即基於沖突檢測的載波監聽多路訪問技術。CSMA/CD也是最初802.3中的核心,應用在10M/100M的半雙工有線網絡中。眼下CSMA/CD的應用場景少了非常多,大部分都直接基於全雙工工作。

CSMA/CD從思想上應該是源自於1-堅持CSMA,即1-persistentes CSMA。在其基礎上。增加了CD(Collision Detection)的機制。沖突檢測。即CD的機制主要是用來發現沖突。並解決沖突的。

我們以下描寫敘述CSMA/CD的詳細工作機制:

節點發送數據之前須要持續監聽信道。一旦節點發現信道空暇,則立馬發送數據。在發送數據的同一時候,節點持續監聽信道,"探測" 是否有別的節點也在該時刻發送數據。

若傳輸過程中沒有檢測到別的節點的傳輸,那么成功傳輸。

在成功傳輸后,節點須要等待幀間間隔IFG(interframe gap)時間后。能夠進行下一次傳輸。


若在傳輸過程中,探測到別的節點也在傳輸,那么則檢測到沖突。發生沖突后,節點立馬停止當前的傳輸。而且發送特定的干擾序列(JAM序列),用以加強該次沖突(用以保證其余全部節點都檢測到該次沖突),在JAM序列發送完之后,節點隨機選擇一個時間倒數進行backoff。當backoff完畢之后。節點能夠嘗試再次重傳”。

在上述的描寫敘述中,我們能夠發現,CSMA/CD和1-堅持CSMA是很相近的,與傳統的aloha相比,CSMA/CD不只加入了LBT的機制。還引入了沖突檢測(Collision Detection)機制,用以在傳輸中立馬發現沖突。而不是依靠ACK的反饋來推斷是否有沖突發生,從而提高網絡效率。

在CSMA中。我們還須要描寫敘述一些細節內容:

  • 載波檢測(CS:carrier sense):在有線網絡中,載波檢測實際上即是接收信道上的信息,並加以解析。用這種方式推斷共享信道上有沒有節點正在傳輸信息。從而達到監聽(listen)的作用。當中載波檢測這個名字實際上是從AM/FM接收中來的。即載波就是攜帶調制信息的模擬信號,從而載波監聽就是對是不是有AM/FM信號進行偵聽。

  • 沖突檢測(CD:collision detection):在一些理論中,介紹沖突檢測為“發送的同一時候,接收同一個信道上的數據,並比較發送數據Tx與接收數據Rx”。若Tx=Rx,則沒有沖突發生,若Tx≠Rx。則識別到一個沖突。在一些project介紹中。介紹檢測沖突的方法是“介質依賴法”。連接段介質(實際上是電纜)擁有傳輸和接受數據的獨立路徑(雙絞線中有單獨的發送和接受回路)。沖突檢測是在同一個接收段收發器中,借助同一時候發生在傳輸和接收數據路徑上的活動來完畢的。

    在同軸電纜介質上,收發器通過檢測同軸電纜的DC(即直流信號)信號等級來檢測沖突。當兩個或者多個基站同一時候傳輸時,同軸上的平均DC電壓可達到觸發同軸收發器中的沖突檢測電壓等級。同軸收發器連續檢測同軸電纜上的平均電壓等級,若平均電壓等級表明。有多個基站同一時候傳輸內容后。其會發送JAM信號到以太網接口處。

    發送JAM信號的這個過程比沖突檢測時間較長,多出的時間包括了依據10Mbps以太網上總信號延遲算出的時間(即包括了JAM信號的傳輸時間)。

  • 時隙與捕獲效應:在有線網絡中,捕獲效應被定義為1個時隙長度內沒有沖突發生。同一時候時隙被定義為512bit在10Mbps或100Mbps網絡的發送時間。在有線網絡中選擇為512bit作為一個時隙的參考值。是考量了為發送信號到對端的最大往返時間。該最大往返時間包括了電磁波通過物理層的往返時間以及傳輸JAM信號所花費的時間。(JAM信號是加強沖突的一個通知信號)。若節點已捕獲信道,即已發送512bit。那么對方不一定會來打斷你當前的傳輸,1.即確保對方能檢測到你,2.而且反饋的JAM信號也能通知到你。同一時候。若從電磁波傳輸的角度而言,512bit在10M中傳輸的時間換算成電磁波可以傳播的距離大約是2800米,512bit在100M中傳輸的時間換算成電磁波傳播的距離大約是200米,對照有線網絡的雙絞線長度(大約100米)而言,這些參數還是可以接受的。

    在1000Mbps網絡以及其上,都是默認物理層採用全雙工模式的。若還是採用CSMA/CD的模式。那么這里的時隙長度會被定義為512byte的長度,只是眼下這個可能是學術上的使用方法。而非協議的定稿。

  • 重傳機制(Backoff與BEB機制):若節點檢測到沖突發生在前512個字節,即一個時隙內。那么節點首先進行backoff,然后進行重傳。這里backoff是採用BEB(二進制指數回退算法),即在一個隨機窗體內。選擇一個隨機數並乘以時隙(time slot)進行回退。在第0~10次回退過程中。每回退一次,隨機窗體放大一倍,在第11次到第16次過程中。依舊進行回退,並嘗試又一次發送數據包。可是不放大窗體大小。第17次若失敗,則丟包。依照普通情況下,沖突不會發生在512字節以后的部分,即已經發生了捕獲效應,即節點已經捕獲到了信道。

    只是比方時間不同步這種一些情況出現。導致沖突發生在512字節之后。貌似是不進行重傳,直接丟包的。


CSMA/CD與CSMA/CA


在綜述完CSMA/CD后。對照我們前一次敘述的CSMA/CA,我們總結這兩者之間的聯系和差別。

  • 聯系:CSMA/CD與CSMA/CA機制都從屬於CSMA的思路,其核心就是LBT機制。換言之,兩個在接入信道之前都須要進行監聽。當發現信道空暇后,其才干夠進行接入。


  • 差別
    • 在思想上:
      • CSMA/CD是源自於1-堅持CSMA,而CSMA/CA是源自於p-堅持CSMA。即CSMA/CD是持續監聽信道,一旦發現信道空暇,則立馬傳輸。

      • CSMA/CA是邊進行backoff回退過程邊進行監聽。若信道空暇則進行backoff。否則掛起隨機倒數計數器。

        僅僅有當backoff counter(即隨機倒數計數器)回退至0時,其才可發送數據。

    • 在沖突檢測上:
      • CSMA/CD中是採用沖突檢測+JAM機制。即邊發送邊監聽實時信道狀態,能夠在傳輸過程中,實時推斷信道中是否有沖突發生,一旦發現了沖突。則發送JAM信號以加強沖突,其余節點也因識別到該JAM信號,從而停止當前傳輸。

        若整個過程中,節點都沒有發現沖突以及JAM反饋。那么該次傳輸成功。

      • CSMA/CA是源自於aloha的ACK反饋機制,若接收到對方反饋的ACK后。那么這一次傳輸成功。否則失敗。
    • 在監聽機制上
      • 因為CSMA/CD是有線網絡,故其監聽是直接解調有線介質上的信息。若沒有信息,則信道空暇,若存在信息,則信道繁忙。
      • 在CSMA/CA中,不僅引入了物理載波監聽與虛擬載波監聽這兩種技術,同一時候在物理載波監聽中,還分為能量檢測(Energy Detection)和載波感知(Carrier sense)。

        同一時候該載波感知所指是利用無線幀物理層頭部中的固定序列(即preamble),利用已知序列和其做相關運算(自相關或者互相關運算)進行識別。具體的一些內容能夠參考上一篇有關DCF和CSMA/CA的文章。

    • 在回退(backoff)機制上
      • 在CSMA/CD中,回退僅僅有在沖突之后才會發生,節點選擇選擇一個隨機時間進行回退,該隨機事件詳細是時隙乘以回退窗體內的一個隨機數。當中為了避免多次沖突的問題,在每一次沖突后。節點的回退窗體也會運行BEB算法,即將回退窗體進行翻倍。

        在CSMA/CD中,回退一共能夠進行16次。當中。第1~9次存在會對回退窗體進行翻倍。在第10~16次中,窗體大小不變(窗體最大1024),再次重試。

        第16次若失敗,則進行丟包處理。

      • 在CSMA/CA中,節點的每一次傳輸之前都須要進行backoff過程。在CSMA/CA的backoff過程中,節點會在每個slot中對信道進行監聽(這里包括物理載波監聽和虛擬載波監聽)。若信道監聽為空暇,那么進行backoff,即隨機倒數計數器減1。若信道監聽為信道忙,則掛起該計數器,僅僅有當該計數值為0時,節點才干夠發送數據。

        在CSMA/CA中,若發生沖突后,對競爭窗體(Contention Window)進行BEB操作,在1~6次中,窗體大小翻倍,第6次時。窗體大小不變(窗體最大也是1024)。再次重試。若第7次傳輸失敗,則進行丟包處理。

    • 在時隙的定義上:
      • 在CSMA/CD中,時隙被定義在一個固定數據片大小在固定速率的媒介上傳輸的時間,比方在10M/100M網絡中。時隙為512位在10M/100M網絡下相應傳輸的延遲。

      • 在CSMA/CA中。時隙中包括三個方面的內容,即傳播延遲。信道檢測(CCA)以及收發天線轉換。時隙時間詳細與其相應的802.11協議版本號有關,比方802.11b中。時隙即是20us。

    • 在捕獲效應的定義上:
      • 在CSMA/CD中,捕獲效應被定義為節點成功傳輸1個時隙的數據,從而節點能夠確保自己已經捕獲了信道。其余節點也都已感知到了這點。從而確保不會有沖突發生。
      • 在CSMA/CA中,捕獲效應是指因為信號功率的不同。比方有兩個節點同一時候向接收方發送數據。當中一者信號強度大(即SNR大)。一者信號強度小(即SNR小)。

        在這樣的情況下。若信號較好的SNR能夠達到解調其數據所需最低的SNR閾值的話。那么其是能夠解調,即這次傳輸能夠是成功的。直觀的理解。我們能夠覺得一個大嗓門和一個小嗓門同一時候說話,那么我們是能夠聽清楚大嗓門的。

以上是總結的一些筆者理解CSMA/CA和CSMA/CD的差別。其它還存在的一些差別,比方在802.11DCF模式中所採用的RTS/CTS機制,在有線網中就不存在或者相應存在差別,在此就不再一一贅述了。

注:在上述的討論中。有線網絡的部分知識主要是源於《Ethernet:The Definitive Guide》,而無線網絡的部分主要來源於筆者的研究經歷。在無線網絡中。也有想要實現類似於有線網絡的CSMA/CN的工作機制。筆者的一部分工作也是來源於此。有興趣能夠自行閱讀。以上討論中。假設存在錯誤,還請見諒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM