当前位置: 首页 > news >正文

以太网实时性不好,载波监听机制可不背锅~


正文


大家好,我是bug菌~

最近跟同事聊到为什么现在的以太网还是够不上实时以太网呢?其中有个同事说了下主要是因为载波监听机制,导致发送的以太网数据存在碰撞,于是我又想了想,不对呀,现在不都是用交换机吗?交换机都是直接转发的,也没有什么碰撞呀,于是探究了一下。

1

载波监听

首先我们来聊一下什么是网络中的载波监听机制,其实全称也叫"载波监听多路访问/冲突检测”,别说真的挺长的,英文缩写为:CSMA/CD。

它其实是以太网的核心媒体访问控制协议,它就是用来解决: 当有多个设备同时当多个设备共享同一根线缆(或集线器)时,如何协调发送,以及发生冲突后如何恢复。

他的工作流程总结下来就是:先听后说,边听边说;冲突则停,随机重传。

先载波监听,检测线路上是否有其他设备在发送,空闲了才发送;由于存在发送延时和信号传播存在延迟,两台设备可能几乎同时开始发送,导致信号在线上叠加、破坏,这就是冲突,等待一段随机时间后重新尝试发送,当然这中间还有一些退避算法,其避免避免反复碰撞死锁。

载波监听只能防止自己撞别人,不能防止别人撞自己。这就是著名的“暴露站问题”:你听着没声音开始发,但如果远处另一个节点也在同一时刻听着没声音开始发,信号传播到中间时还是会撞上。

2

交换机消灭冲突

其实CSMA/CD在集线器的半双工时代做贡献 ,当我们进入廉价的交换机时代,交换机将从两个层面优化了这个过程:

1、首先交换机每个端口都是一个独立的冲突域

不像集线器会把信号复制给所有端口,交换机解析帧里的目标 MAC 地址,只向对应端口转发。

这就好比把“大群对讲机”拆成了“交换机居中,每个人跟交换机之间是一根专线”。

端口 A 给端口 B 发数据时,端口 C 和 D 完全不受影响。多个端口对可以同时通信,互不干扰。

2、交换机端口通常工作在全双工模式,而且有缓存

物理上收发分开:网线里的发送线对和接收线对是独立的,设备可以在发的同时也收,不需要像对讲机那样“按下去就聋了”。

缓存代替冲突解决:如果多个端口同时要向同一个目标端口发数据,交换机会把后来的帧暂时缓存起来,排队转发。数据不会在介质上撞成一团,只是多等一会儿。

于是,既没有信号碰撞,也不需要在发之前侦听信道有没有人,更不用“发中检测冲突”。

于是,CSMA/CD 的两大任务——“先听后说”和“碰撞检测”——全都不需要了。协议虽然还在,但实际物理层上已经不用它了。

可能你会问如果我不用交换机,两根网线直连会不会触发CSMA/CD?

在现代网卡直连即使没有交换机的情况下,通常不会触发载波监听(CSMA/CD),因为链路会工作在全双工模式。载波监听只在半双工模式下才会激活。

而且全双工交换式以太网中网卡不再需要靠载波监听来避免冲突,但载波监听电路仍然工作,但解决的是“物理链路是否可用”,而不是冲突。

3

为什么还不是实时网络?

既然交换机把路径都拉顺了,为什么现在的以太网还是不能成为实时以太网呢?

交换机的本质是“存储-转发”,遇到多个入口同时想往同一个出口发帧,就会排队,就是这一排队,实时性就没了。

比如说你在交换机端口1,想给端口8发一个控制指令帧,只有一帧,非常小,你觉的应该很快就能够到达目的地。

可是刚巧,与此同时,端口2、端口3正在往端口8发满带宽的巨型文件——它们先到达输出队列

你的小指令帧就只能乖乖排在后面,等前面的帧发完。

而这个等待时间,取决于当时其他端口的流量,而那些流量可能是突发的、不可预测的;队列可能深可能浅,有的还有优先级,但标准以太网的优先级只是“尽力而为”,不能给你硬性保障。

于是:这一帧的延迟是不可预知的,时大时小,最坏情况可能是几十甚至上百毫秒。对工业运动控制等场景来说,这已经失效了——它要的是“每 1ms 必达,抖动小于 1μs”。

当然如果你的是小数据、局域网、低负载 + UDP,经过合理的实时性调优(实时内核、核隔离、中断绑定等),也不是不可以实现可靠的 1 ms 周期通信。

总的来说在没有任何改造的标准交换式以太网,那确实很难达到硬实时。所以才有了TSN 及各种工业实时以太网协议。

1、标准的TSN(时间敏感网络):在标准以太网上增加时间同步(802.1AS)、门控调度(802.1Qbv)、帧抢占(802.1Qbu)、流预留(802.1Qav)等,把排队变得可预测且可调度。

2、大名鼎鼎的EtherCAT:虽然物理层用标准以太网,但数据帧处理机制完全改变,从站“飞速”读取/插入数据,根本没有传统交换机的存储转发排队。

3、西门子的PROFINET IRT:在交换周期中划分实时通道和开放通道,对实时帧用 TDMA 方式调度,确保没有排队干扰。

最后

好了,今天就跟大家分享这么多了,如果你觉得有所收获,一定记得点个~

bug菌唯一、永久、免费分享嵌入式技术知识平台~

推荐专辑 点击蓝色字体即可跳转

MCU进阶专辑

嵌入式C语言进阶专辑

“bug说”专辑

专辑|Linux应用程序编程大全

专辑|学点网络知识

专辑|手撕C语言

专辑|手撕C++语言

专辑|经验分享

专辑|电能控制技术

专辑 | 从单片机到Linux

http://www.jsqmd.com/news/717392/

相关文章:

  • 零代码数据查询革命:DB-GPT让你的数据库说人话![特殊字符]
  • 终极指南:Pycord Cogs架构设计——模块化机器人开发的最佳实践
  • uTLS Roller自动轮换:实现持续有效的指纹抵抗
  • 数据驱动精准农业:高标准农田地力与微环境多维异构数据集建设深度解析(WORD)
  • 如何为Simplenote iOS贡献代码:完整的开发者指南
  • 锦囊专家:2026十大央国企AI场景标杆案例集
  • CSS如何改变单个网格项目的对齐方式
  • 如何使用gpt-repository-loader:将代码仓库转换为LLM友好格式的终极指南
  • tabulate与其他C++表格库对比分析:为什么选择tabulate
  • Linux -- 互斥锁
  • Universal-G-Code-Sender与UGS Platform对比:选择适合你的CNC控制方案
  • 灌浆料生产厂家哪家好?2026浙江灌浆料/石膏基自流平/水泥基自流平厂家实力分析与品牌优选推荐 - 栗子测评
  • GUITION JC4880P433开发板:物联网与边缘AI的硬件利器
  • Lighthouse性能优化终极指南:从性能杀手到体验加速器的实战秘籍
  • 厨房自动灭火装置哪家好?2026厨房灭火设备厂家推荐/厨房自动灭火设备厂家推荐:顺康鑫领衔,优质厨房灭火设备生产厂家盘点 - 栗子测评
  • Get-cookies.txt-LOCALLY:浏览器Cookie本地化管理的革命性解决方案
  • powertoys下载 微软powertoys中文版安装
  • 2026年最新EDTA四钠厂家/EDTA二钠厂家盘点与推荐:南风领衔,口碑好|供货稳的品牌盘点 - 栗子测评
  • 对标OpenClaw,版国产“小龙虾” WorkBuddy正式上线了!
  • FastSpeech2完整指南:从零开始构建高效的文本转语音系统
  • UnityExplorer终极指南:如何在游戏运行时调试和修改Unity游戏
  • 2025年微前端终极指南:彻底告别框架绑定困境
  • 甘肃凤铝门窗总代理商盘点:兰州凤铝门窗厂家哪家好?2026年口碑好的凤铝门窗加盟厂家/凤铝门窗源头厂家推荐:鑫恒发领衔 - 栗子测评
  • Complete-Data-Science项目实战:从数据预处理到模型部署的完整流程
  • 实时数字孪生 × 可执行元神:镜像视界终结仿真滞后时代
  • 零数据出境:PrivateGPT本地化部署实现GDPR合规的终极方案
  • MEGAcmd性能优化技巧:提升文件传输速度与资源利用率
  • Universal-G-Code-Sender多语言支持教程:打造国际化CNC操作界面
  • React-swipeable:终极React滑动事件处理钩子完全指南
  • 为什么你的运放电路波形失真?可能是压摆率(SR)在捣鬼(附OPA333实测数据)