从状态转移看:载波侦听多路访问/冲突避免(CSMA/CA)
CSMA/CA是寫入IEEE802.11的無線網(wǎng)絡(luò)MAC層標(biāo)準(zhǔn)協(xié)議,相信看到這篇文章的讀者都知道它是用來做什么的。但許多短文對(duì)這個(gè)協(xié)議的解釋都有所缺乏,因此本文用狀態(tài)轉(zhuǎn)換圖的形式詳細(xì)說明協(xié)議的工作流程。(好吧其實(shí)是作者看到一個(gè)狀態(tài)圖有感而發(fā),見參考資料)
?
請(qǐng)看下面的狀態(tài)轉(zhuǎn)換圖:
?
?
其中,CS=1(0)意味著載波被占用(可用),Q=1表示隊(duì)列中有(無)待發(fā)送的幀(frame)。感興趣的讀者可以自行推斷上述狀態(tài)代表什么。
好了,首先說明,CS=1還是CS=0是怎么判斷呢?有時(shí)是通過偵聽載波,有時(shí)是通過RTS/CTS機(jī)制,雖然圖中并未說明。下面沿著狀態(tài)圖簡述CSMA/CA工作流程:
(初始狀態(tài)為I, 節(jié)點(diǎn)有待發(fā)的幀,于是開始偵聽載波)
I:idle,發(fā)送方偵聽到信道忙,則轉(zhuǎn)到D,否則轉(zhuǎn)到T。
D:defer,若信道忙,等待一段時(shí)間后,若信道空閑,轉(zhuǎn)到B。
T:transmit,若信道可用,等待一個(gè)DCF之后發(fā)送一個(gè)RTS。若收到的CTS中包含自己的地址,說明預(yù)約信道成功,開始傳輸數(shù)據(jù)幀。傳輸過程中遇到出錯(cuò),則轉(zhuǎn)到B,進(jìn)入退避過程;遇到信道被占用時(shí)轉(zhuǎn)到D。
B:backoff,即CSMA/CA的退避機(jī)制,用于處理傳輸出錯(cuò)的情況。出錯(cuò)一般只由兩種情況導(dǎo)致,即沖突(collision)和信道噪聲(carrier noise)。退避時(shí),從{1, 3, 7, 15, ... 2^m-1}中選擇一個(gè)時(shí)間進(jìn)行延時(shí)。
? ?
? ? 退避過程:DCF在退避狀態(tài)下有一個(gè)競爭窗口機(jī)制,如果一次傳輸成功了,發(fā)送端需要將競爭窗口置為最小值(802.11中規(guī)定contention window最小為31)。對(duì)于重傳的節(jié)點(diǎn),每一次傳輸失敗都將contention window的大小成倍放大,即第一次重傳時(shí)窗口大小為63,第二次是127,直到達(dá)到重傳次數(shù)上限,則作丟包處理。競爭窗口越小,越有利于競爭。
? ? 另附MAC層中自私行為的實(shí)現(xiàn):
1,增大CCA threshold。
? ? ? ? ? CCA (空閑信道評(píng)估,Clear Channel Assessment)用于監(jiān)測(cè)信道是否空閑。節(jié)點(diǎn)監(jiān)測(cè)信道中的RSSI并于閾值進(jìn)行比較,若超出閾值則認(rèn)為信道忙,否則信道可用。自私節(jié)點(diǎn)通過增大這一閾值,使得自身對(duì)于信道是否可用不敏感,因此在信道忙的時(shí)候仍然發(fā)包,導(dǎo)致其他節(jié)點(diǎn)的傳輸收到干擾。這種行為屬于暴力自私行為,因?yàn)樵诟蓴_下自私節(jié)點(diǎn)自身的包也會(huì)丟失。
2,減小backoff time,即選擇小甚至最小的CW。
? ? ? ? ? 通過選擇最小的CW,自私節(jié)點(diǎn)在傳輸出錯(cuò)的時(shí)候總是先于沖突節(jié)點(diǎn)發(fā)包,從而導(dǎo)致不公平性。篡改backoff time的自私行為是最難以解決的問題之一。
?
參考資料:Utpal Paul, Passive Measurement of Interference in WiFi?Networks with Application in Misbehavior?Detection[J], TMC, 2013.
?
轉(zhuǎn)載于:https://www.cnblogs.com/zhchngzng/p/3376626.html
總結(jié)
以上是生活随笔為你收集整理的从状态转移看:载波侦听多路访问/冲突避免(CSMA/CA)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZOJ 3228(AC自动机+修改的匹配
- 下一篇: (c语言)二叉树中序线索(数据结构十七)