天天看點

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門檻值的話。那麼其是能夠解調,即這次傳輸能夠是成功的。直覺的了解。我們能夠覺得一個大嗓門和一個小嗓門同一時候說話,那麼我們是能夠聽清楚大嗓門的。