無線通信協議CSMA/CA的簡單總結

以IEEE802.15.4的CSMA/CA爲例,其實IEEE802.11的也是一樣的原理。那個什麼複雜的流程圖可以不用看了。

最核心的就是隨機,其實用ALOHA協議的無線系統也可以借鑑這種模式。

所謂隨機,就是無線系統每次有發射(數據包)任務時,先來一個隨機延時,當然第一次隨機延時很短。

延時這段時間內,CCA檢測信道空閒。剛好在這個延時到達點時檢測到空閒(可能不是一個時間點,而是一個backoff時間片段),就發射,如果不空閒,則重試。重試也是一個隨機時間,只是這個隨機範圍會擴大(2倍擴大)。

CSMA的三個關鍵值,MinBE,MaxBE和NB,以IEEE802.15.4的爲例,MinBE=3,MaxBE=5,NB =4。一個backoff的單位時間320us(也就是無線傳輸20個半字節的時間,IEEE802.15.4的基本傳輸單位是半字節)。

NB=4,也就是最多有4次檢測CCA的機會。超過4次,就會算信道檢測失敗,這包數據幀就該扔掉。

MinBE=3,這個和第一次CCA的延時時間相。(2^3-1)=7,即在發射任務開始後第一次CCA,是在一個1~7的隨機時間倍數乘以320us得到一個延時值。如果這個延時後檢測CCA信道空閒,就可以獲得發送通道發送信號出去。通過計算可以得到隨機延遲時間爲0.32ms~2.24ms這個範圍。通過對一些設備的實測,發射前的CCA偵聽時間也就在1ms左右。

然後第二次CCA,BE值加1,那麼隨機倍數就擴大到(2^4-1)=15,即0.32ms~4.8ms。

第三次CCA,延時範圍也就是(2^5-1)*0.32ms=9.92ms。

第四次,受限於MaxBE=5的限制,依然和第三次一樣,是0.32ms~9.92ms。

當然,隨機數最講究的是一個人(gai)品(lv)問題。

在人品不好的情況下,要跑滿4次CCA,每次都是最大時間,即2.24+4.8+9.92+9.92 = 26.88ms(要不要把每次CCA檢測的0.32ms加上,請各位大神指正)。

最快的情況下,0.32ms就可以完成發射。

 

另外,有些非IEEE802.15.4的無線系統,甚至不支持CCA的無線系統,也可以借鑑這種方式。下列一個應用場景:

200盞電燈被同時打開,要把狀態通過無線信號上傳到網關。

首先,通電瞬間,全部的燈都上報一次狀態,剛開始1秒內,可能只有不到10個電燈的狀態上報成功,並收到網關的Acknowledge消息。(假設1秒內可以同時傳輸10個設備的消息)

然後,剩餘的190盞電燈,隨機延時1~4秒,上報狀態。這個時候最多可能只有40個上傳成功。那麼還剩150個。

然後再隨機延時1~8秒,80個又上傳成功,還剩70個。

最後再隨機延時1~16秒,剩下的傳輸完就不在話下了。

當然舉例的有點不科學,但是隨機時間採用2的指數倍擴大範圍,整個系統可以隨着設備數量增多,自適應的增加延遲時間。至少可以保證小網絡系統可以有很好的實時性,不需要做成和大網絡一樣的通信延遲。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章