CSMA/CD vs CSMA/CA
阿新 • • 發佈:2019-02-05
Aloha vs CSMA
- Aloha協議的特點是有資料立即傳送
- CSMA是在Aloha協議之上增加了一個通道檢測
CSMA/CD
- 監聽通道,如果通道忙,繼續監聽(這個忙應該不需要指數回退,實時監測即可)。
- 如果通道空閒,等待IFG幀間間隙,傳送資料。
- 這個時候如果多個節點發送資料,就會發生衝突。一旦某一個節點檢測到衝突,其就在通道上傳送一個Jamming訊號通知所有節點。
- 退避的時間是slot_time的整數倍
N = 0 ~ (2^k - 1)
。最開始K=0。 - K最大為16。如果退避次數超過了上限,傳送失敗。丟棄該幀,傳送下一幀。
延遲的slot數為
N = 0 ~ (2^k - 1)
,k有範圍
k=1,N = 0~1
k=2,N = 0~3
k=3,N = 0~7
、、、
這樣可以最大程度的避免衝突
CSMA/CA
普通DCF
- 如果通道忙,等待
- 如果通道空閒,接著等待DIFS
- 如果通道忙,等待
- 如果還空閒,立即傳送資料
- 如果沒有收到ACK訊號,說明發生了碰撞
- 等待DIFS,如果空閒,競爭視窗內選擇一定的時隙傳送。
帶RTS/CTS的DCF
CA的載波監聽分為:
- 虛擬載波監聽
- 物理載波監聽
RTS/CTS包的頭部都有一個Duration欄位。因為無線的資料包都是廣播的,很多節點都能收到。非目標節點接收到後,會根據Duration欄位的值來設定各自的NAV(Network Allocation Vector)。NAV指定了可以接入通道的最早時間。
問題
lmz_0:
出於效率考慮,DCF使用離散退避機制。
一個空閒的DIFS的時間片被劃分為時隙,一個節點只能在某個時隙開始的時刻開始傳送資料包,從而避免了使用者傳送資料的隨意性,提高了通道利用速率。
競爭視窗CW的值以2為底的整數。
一個節點真正的傳送時刻是空閒後的
DIFS+隨機退避時間
如何防止某一個節點一直競爭不到通道?
感覺不同的節點的CW的值最開始是一樣的。
如果某一個節點多次接入不了通道,其CW值應該是越來越小的。
lmz_1:
不論是CD還是CA,都會監測通道是否空閒。感覺這個通道狀態的監測是實時的。即忙的時候繼續監測就可以,而不用在這個時候就執行指數回退。
lmz_2:
為什麼無線通道不使用碰撞檢測?
- 隱藏終端的存在檢測不到
- 無線接收不能同時
lmz_3:
- 簡單來說,CA是在監測通道空閒時間達到DIFS後才傳送資料,即實時監測通道時發現空閒,等待DIFS後仍發現空閒,這時才傳送資料。
而CD只要監測到空閒,立即傳送資料(等待的幀間間隔和CA不是一回事)。- CD監測碰撞是實時的,CA監測碰撞是通過ACK的反饋
- 是在傳送之前執行指數回退
lmz_4:
個人感覺所謂的指數回退,不論是在CD還是在CA中都是減少碰撞機率的一種方法。
那麼,無線中的碰撞避免主要體現在哪裡呢?
體現在必須監測到通道空閒一段時間才傳送資料。這就避免了低優先順序的訊號(普通包) 和高優先順序訊號(確認包)的碰撞。
lmz_5:
CA中的通道忙有兩種情況:
- 最初監測到通道忙
- 在DIFS週期內監測到通道忙
tags:opnet