首页
学习
活动
专区
圈层
工具
发布

物联网设备频繁丢包?可能是退避算法没选对,一文带你搞懂

CSMA/CD、非坚持、1-坚持、P-坚持……无线信道冲突这样解决

一、什么是载波监听多路访问技术?

载波监听多路访问(CSMA) 技术,也称做先听后说(LBT,Listen Before Talk)。要传输数据的站点首先对媒体上有无载波进行监听,以确定是否有别的站点在传输数据。

任何站点要向公共介质发送信息时,首先要侦听介质上是否有其他站点正在传送信息:

如果通信介质上无载波(即没有被占用),则可以利用通信介质进行传送

如果已监听到介质上有载波(即有其它站点正在传送信息),则必须等待介质平静之后才能进行传送

这样就会使信道上的冲突大大减少。

CSMA的局限

在CSMA中,由于通道的传播延迟,当两个站点监听到总线上没有存在信号而发送帧时,仍会发生冲突。由于CSMA算法没有冲突检测功能,即使冲突已发生,仍然要将已破坏的帧发送完,使总线的利用率降低。

改进方案:CSMA/CD

改进方案是使站点在传输时间继续监听媒体,一旦检测到冲突,就立即停止发送,并向总线上发一串短的阻塞报文(Jam),通知总线上各站冲突已发生,可以提高总线的利用率。

流程如下:

监听,若空闲则发送

忙则监听直到空闲,立即发送

检测到冲突,立即停止,发送阻塞信号

随机等待,重新尝试发送

这就需要有一种退避算法来决定避让的时间。常用的退避算法有非坚持、1-坚持、P-坚持三种。

二、三种退避算法详解

1. 非坚持算法(Non-persistent CSMA)

算法规则:

假如媒体是空闲的,则可以立即发送

假如媒体是忙的,则等待一个由概率分布决定的随机重发延迟后,再重复前一步骤

特点:

采用随机的重发延迟时间可以减少冲突发生的可能性

缺点:即使有几个站点都有数据要发送,但由于大家都在延迟等待过程中,媒体仍可能处于空闲状态,使用率降低

2. 1-坚持算法(1-persistent CSMA)

算法规则:

假如媒体空闲,则可以立即发送

假如媒体是忙的,则继续监听,直至检测到媒体空闲,立即发送

假如有冲突(在一段时间内未收到肯定的回复),则等待一随机量的时间,重复步骤~

特点:

优点:只要媒体空闲,站点就立即可发送,避免了媒体利用率的损失

缺点:假若有两个或两个以上的站点有数据要发送,冲突就不可避免

3. P-坚持算法(P-persistent CSMA)

算法规则:

监听总线,假如媒体是空闲的,则以 P的概率 发送,而以 (1-P)的概率 延迟一个时间单位(一个时间单位通常等于最大传播时延的2倍)

延迟一个时间单位后,再重复步骤

假如媒体是忙的,继续监听直至媒体空闲并重复步骤

特点:

通过概率P平衡冲突概率与信道利用率

适用于时隙信道

三、总结与现状

随着网络技术的发展,全双工以太网逐渐取代了半双工以太网。在全双工模式下,发送和接收使用独立的信道,不存在冲突问题,因此 CSMA/CD 和退避算法已经不再需要

但在 无线局域网(WLAN)物联网(IoT) 中,由于无线信道的广播特性和半双工本质,退避算法仍然发挥着至关重要的作用

无论是Wi-Fi的CSMA/CA,还是LoRa、Zigbee等物联网协议的信道竞争机制,背后都离不开载波监听与退避算法的影子。

小贴士:如果你的无线模块在密集环境中出现频繁丢包、重传,不妨检查一下退避参数配置是否合理——P值、重试次数、竞争窗口大小,都是影响网络吞吐量的关键因素。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O5mH2zZ_jY5xPQhd1GR5tRXQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券