丟包重傳是數(shù)據(jù)通信應(yīng)用里面一項非常重要的功能,特別是在無線通信中是一項決定通信協(xié)議先進(jìn)程度的指標(biāo)。前文詳細(xì)的介紹了無線通信協(xié)議是如何檢測數(shù)據(jù)丟包機制和減少網(wǎng)絡(luò)丟包率有哪些處理機制,本文接著詳細(xì)介紹通信協(xié)議中系統(tǒng)層重傳機制。
有丟包就有重傳,針對不同的丟包,重傳策略也各不相同。我們還是以zigbee的重傳機制為入口,分析通信協(xié)議的重傳機制。
CSMA/CA是配合載波偵聽使用的重傳機制。我們在講載波偵聽時說過其原理就是接收一段時間,CSMA/CA的重傳機制就是去控制偵聽時間。
Zigbee的MAC層在發(fā)送消息時,會隨機偵聽一段時間。這個隨機時間也是有講究的,我們都知道zigbee傳輸一個字節(jié)的時間為32微秒,MAC層規(guī)定10個字節(jié)的傳輸時間也就是320微秒為一個“避退周期”。MAC層第一次發(fā)送數(shù)據(jù)時,隨機1~8個避退周期的時間來偵聽載波,也就是說偵聽載波的時間可能是320微秒到2.56毫秒。假設(shè)這時有2~3個zigbee設(shè)備同時發(fā)送MAC層消息,根據(jù)概率散布,它們大概率不會偵測到彼此的載波,因此都可機會成功獲得發(fā)送窗口。但是如果同時發(fā)送的zigbee設(shè)備數(shù)據(jù)增加了,肯定就會有zigbee設(shè)備搶不到發(fā)送窗口,造成載波偵聽丟包,這個時候就要重傳了。
CSMA/CA的重傳也是有講究的,既然1~8個隨機避退周期會有碰撞,索性把避退周期的范圍擴大1倍,重傳的時候偵聽1~16個隨機避退周期,這樣是不是就降低了避退概率?還不夠的話下次重傳直接1~32個隨機避退周期……但是如果一直有信道沖突,不可能一直無止盡的重傳下去吧?而且每次重傳都要擴大隨機避退的范圍,這是一個無底洞。因此通常zigbee的MAC層在3次重傳都因為載波偵聽丟包后會通過“AF Data Confirm”告訴應(yīng)用層“老子盡力了就是不行”,剩下該怎么辦就該應(yīng)用層決定了。
在zigbee協(xié)議中,在發(fā)送MAC幀時如果沒有收到MAC-ACK,MAC層也會自動重傳3次MAC幀。不同于載波偵聽的每次重傳需要增加間隔時間,MAC層的重傳是不會增加間隔時間的。3次重傳如果都失敗,同樣會用“AF Data Confirm”告知應(yīng)用層丟包且無力回天了。
MAC丟包重傳
但是MAC幀的每次重傳,還是會進(jìn)行載波偵聽的。如果MAC層的重傳再遇上載波偵聽沖突,還會誘發(fā)CSMA/CA重傳。
Zigbee協(xié)議的傳輸層重傳,是用來保證消息有沒有傳送到最終設(shè)備上。APS層在發(fā)送消息后,等待6秒鐘,沒有收到APS-ACK則繼續(xù)重傳。通常APS重傳2次,第一次重傳是6秒后,第二次重傳是12秒后。如果最后一次重傳失敗,APS層會通過“AF Data Confirm”向應(yīng)用層報告“死亡通知”。
今天的分享就到這里啦,EBYTE人每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,還有客服小姐姐在線答疑哦!
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機:028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號-3