丢包重传是数据通信应用里面一项非常重要的功能,特别是在无线通信中是一项决定通信协议先进程度的指标。前文详细的介绍了无线通信协议是如何检测数据丢包机制和减少网络丢包率有哪些处理机制,本文接着详细介绍通信协议中系统层重传机制。
有丢包就有重传,针对不同的丢包,重传策略也各不相同。我们还是以zigbee的重传机制为入口,分析通信协议的重传机制。
CSMA/CA是配合载波侦听使用的重传机制。我们在讲载波侦听时说过其原理就是接收一段时间,CSMA/CA的重传机制就是去控制侦听时间。
Zigbee的MAC层在发送消息时,会随机侦听一段时间。这个随机时间也是有讲究的,我们都知道zigbee传输一个字节的时间为32微秒,MAC层规定10个字节的传输时间也就是320微秒为一个“避退周期”。MAC层第一次发送数据时,随机1~8个避退周期的时间来侦听载波,也就是说侦听载波的时间可能是320微秒到2.56毫秒。假设这时有2~3个zigbee设备同时发送MAC层消息,根据概率散布,它们大概率不会侦测到彼此的载波,因此都可机会成功获得发送窗口。但是如果同时发送的zigbee设备数据增加了,肯定就会有zigbee设备抢不到发送窗口,造成载波侦听丢包,这个时候就要重传了。
CSMA/CA的重传也是有讲究的,既然1~8个随机避退周期会有碰撞,索性把避退周期的范围扩大1倍,重传的时候侦听1~16个随机避退周期,这样是不是就降低了避退概率?还不够的话下次重传直接1~32个随机避退周期……但是如果一直有信道冲突,不可能一直无止尽的重传下去吧?而且每次重传都要扩大随机避退的范围,这是一个无底洞。因此通常zigbee的MAC层在3次重传都因为载波侦听丢包后会通过“AF Data Confirm”告诉应用层“老子尽力了就是不行”,剩下该怎么办就该应用层决定了。
在zigbee协议中,在发送MAC帧时如果没有收到MAC-ACK,MAC层也会自动重传3次MAC帧。不同于载波侦听的每次重传需要增加间隔时间,MAC层的重传是不会增加间隔时间的。3次重传如果都失败,同样会用“AF Data Confirm”告知应用层丢包且无力回天了。
MAC丢包重传
但是MAC帧的每次重传,还是会进行载波侦听的。如果MAC层的重传再遇上载波侦听冲突,还会诱发CSMA/CA重传。
Zigbee协议的传输层重传,是用来保证消息有没有传送到最终设备上。APS层在发送消息后,等待6秒钟,没有收到APS-ACK则继续重传。通常APS重传2次,第一次重传是6秒后,第二次重传是12秒后。如果最后一次重传失败,APS层会通过“AF Data Confirm”向应用层报告“死亡通知”。
今天的分享就到这里啦,EBYTE人每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的太阳集团tcy8722官网进行了解,还有客服小姐姐在线答疑哦!
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 杭州办事处戴经理:17512568697
常州办事处崔经理:15906110783 南京办事处葛经理:17626012283
业务邮箱:support@cdhanzaichips.com
全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都太阳集团tcy8722电子科技有限公司【版权所有】 蜀ICP备27697263号-3