1. 1. 多节点网络的冲突处理算法——从 ALOHA 到 PLCA
    1. 1.1. 引言
    2. 1.2. 一、介质共享与多址接入概述
      1. 1.2.1. 1.1 多址接入信道模型
      2. 1.2.2. 1.2 多址接入的核心问题
      3. 1.2.3. 1.3 多址接入协议的分类
      4. 1.2.4. 1.4 信道共享技术总览
      5. 1.2.5. 1.5 本章大纲
    3. 1.3. 二、ALOHA 协议——最原始的竞争协议
      1. 1.3.1. 2.1 协议特性
      2. 1.3.2. 2.2 吞吐量分析
    4. 1.4. 三、Slotted ALOHA——引入时槽,提升一倍效率
      1. 1.4.1. 3.1 改进点
      2. 1.4.2. 3.2 性能公式
      3. 1.4.3. 3.3 两种 ALOHA 的吞吐率对比
    5. 1.5. 四、CSMA——先听后发
      1. 1.5.1. 4.1 核心改进
      2. 1.5.2. 4.2 冲突机制示意
      3. 1.5.3. 4.3 CSMA 分类树
      4. 1.5.4. 4.4 Nonpersistent CSMA
      5. 1.5.5. 4.5 1-persistent CSMA
      6. 1.5.6. 4.6 p-persistent CSMA(折中方案)
      7. 1.5.7. 4.7 如何选取 $p$?
      8. 1.5.8. 4.8 CSMA 系列吞吐率对比
    6. 1.6. 五、CSMA/CD——带冲突检测的有线以太网
      1. 1.6.1. 5.1 改进:边发边听
      2. 1.6.2. 5.2 为什么需要冲突检测?
      3. 1.6.3. 5.3 冲突时序
    7. 1.7. 六、CSMA/CA——冲突避免,无线场景的主流
      1. 1.7.1. 6.1 为何不能”检测”?
      2. 1.7.2. 6.2 算法要点
      3. 1.7.3. 6.3 多节点退避示意
      4. 1.7.4. 6.4 CSMA/CA 时序
      5. 1.7.5. 6.5 CSMA/CA + ACK——单向确认提高可靠性
      6. 1.7.6. 6.6 CSMA/CA + RTS/CTS——预留信道
      7. 1.7.7. 6.7 RTS/CTS 消息流
    8. 1.8. 七、PLCA——物理层冲突避免(10BASE-T1S 的确定性方案)
      1. 1.8.1. 7.1 设计哲学的切换
      2. 1.8.2. 7.2 PLCA 简介
      3. 1.8.3. 7.3 关键参数
      4. 1.8.4. 7.4 性能分析
        1. 1.8.4.1. 7.4.1 测试场景
        2. 1.8.4.2. 7.4.2 负载率分析
        3. 1.8.4.3. 7.4.3 延时分析
        4. 1.8.4.4. 7.4.4 抖动对比
      5. 1.8.5. 7.5 PLCA vs CSMA 家族:核心对比
      6. 1.8.6. 7.6 PLCA 的工程实践要点
    9. 1.9. 八、小结与选型建议
    10. 1.10. 参考资料

车载以太网 - 多节点网络的冲突处理算法——从 ALOHA 到 PLCA

多节点网络的冲突处理算法——从 ALOHA 到 PLCA

引言

在共享介质的网络中,多个节点同时发送数据会导致冲突(Collision)。如何高效地协调多个节点对共享信道的访问,是数据链路层的核心问题之一。本章系统梳理从 ALOHA 到 CSMA/CD、CSMA/CA 再到 PLCA(Physical Layer Collision Avoidance) 的演进过程,对比传统带冲突检测的方案与物理层防碰撞的确定性方案,并基于经纬恒润的实测数据,分析 10BASE-T1S 在多节点场景下的负载率、时延与抖动表现。

本文素材来源:

  1. 讲义 Chapt-06.ppt(Multiple Radio Access, Chapter 6)— ALOHA、Slotted ALOHA、CSMA 系列
  2. 用户提供的 Markdown:C:\ai-projects\minerU\Chapt-06-CSMA\office\Chapt-06-CSMA.md
  3. Zhihu 专栏《深度解析 10BASE-T1S PLCA 的多节点通信效率》— https://zhuanlan.zhihu.com/p/1995067444474159482 (因 Zhihu 反爬限制,内容从同源博客园版本获取:https://www.cnblogs.com/hirain123/p/19033489)

一、介质共享与多址接入概述

1.1 多址接入信道模型

多址接入信道模型

在多址接入(Multiple Access)系统中,每个节点通过发射/接收设备与一条被多个节点共享的信道相连,任何一个节点的发射信号都会被其他节点接收。

1.2 多址接入的核心问题

  • 当超过一个节点同时向 BS(基站)的控制信道发送数据时,冲突(collision)就会发生
  • 因此多址接入协议必须解决:由哪个节点来发送?

1.3 多址接入协议的分类

协议分类

两大类协议:

类型 思路 典型协议
Contention protocols(竞争协议) 允许冲突发生,事后解决 ALOHA、CSMA、BTMA、ISMA
Conflict-free protocols(无冲突协议) 从协议上杜绝冲突发生 Bit-map、Binary Countdown、Token Bus、DQDB

此外还有Collision Resolution 子类(基于 TREE、WINDOW 等算法对已发生的冲突做协商解决),也可归为冲突型协议。

1.4 信道共享技术总览

信道共享技术分为三大类:

  1. Static Channelization(静态信道化):固定分配资源,无冲突。典型:FDMA、TDMA、CDMA
  2. Scheduling(调度):中心或令牌调度,无冲突。典型:Token Bus、DQDB
  3. Dynamic Medium Access(动态介质访问):按需竞争,处理冲突。典型:ALOHA、CSMA

1.5 本章大纲

本章大纲

本章聚焦于竞争协议的演进史:ALOHA → Slotted ALOHA → CSMA → CSMA/CD → CSMA/CA(含 ACK/RTS-CTS),并在最后一节引入PLCA 这一来自 10BASE-T1S 的物理层防碰撞机制。

二、ALOHA 协议——最原始的竞争协议

2.1 协议特性

ALOHA 冲突机制

  • 由夏威夷大学在 1970 年代为分组无线网设计
  • 有数据就发:节点产生数据后立即发送
  • 监听确认:发送方监听来自目的站的广播信号,判断是否成功
  • 冲突重传:若发生冲突,等待随机时间后重传

2.2 吞吐量分析

设业务负载为 $G$(平均每两个分组时间内尝试发送的分组数),则在两个分组时间内到达 $n$ 个分组的概率为:

$$
P_n = \frac{(2G)^n e^{-2G}}{n!}
$$

无冲突成功的概率($n=0$):

$$
P_0 = e^{-2G}
$$

吞吐量为:

$$
S = G \cdot e^{-2G}
$$

ALOHA 的最大吞吐率为 18.4%(当 $G = 0.5$ 时)。

三、Slotted ALOHA——引入时槽,提升一倍效率

3.1 改进点

Slotted ALOHA 冲突机制

  • 将时间划分为等长的时槽(Slot)
  • 节点只能在时槽开始时刻发送分组
  • 冲突窗口从「两个分组时间」压缩到「一个分组时间」

3.2 性能公式

无冲突成功的概率(恰好 1 个分组到达):

$$
P_1 = G e^{-G}
$$

吞吐量为:

$$
S = G \cdot e^{-G}
$$

Slotted ALOHA 最大吞吐率为 36.8%(当 $G = 1$ 时),是 Pure ALOHA 的两倍。

3.3 两种 ALOHA 的吞吐率对比

吞吐率对比

协议 最大吞吐率
Pure ALOHA 18.4%
Slotted ALOHA 36.8%

即便时槽化后,ALOHA 系列的吞吐率仍不足以支撑高负载场景,需要进一步提升。

四、CSMA——先听后发

4.1 核心改进

Slotted ALOHA 的最大吞吐率 0.368 已到瓶颈,CSMA(Carrier Sense Multiple Access) 通过先听后发进一步降低不必要的冲突:

在发送分组之前先监听信道是否空闲,避免可避免的冲突。

4.2 冲突机制示意

CSMA 冲突机制

注意:CSMA 仍然存在冲突,因为存在传播延迟(Propagation Delay)。如上图,Node 1 和 Node 2 可能在同一时刻都检测到信道空闲,但实际上信号尚未到达对方,从而产生冲突。

4.3 CSMA 分类树

CSMA 分类

大类 子类
Nonpersistent CSMA(非坚持) Unslotted Nonpersistent、Slotted Nonpersistent
Persistent CSMA(坚持) 1-persistent、p-persistent

4.4 Nonpersistent CSMA

算法步骤:

  1. 若信道空闲,立即发送
  2. 若信道忙碌,等待一段随机时间后回到步骤 1
  • 随机退避降低了冲突概率
  • 若退避时间过长,会浪费信道空闲时间

4.5 1-persistent CSMA

算法步骤:

  1. 若信道空闲,立即发送
  2. 若信道忙碌,持续监听直到信道空闲后立即发送
  • 若两个节点都想重传,必然会发生冲突
  • 实际系统一般会设置尝试上限

4.6 p-persistent CSMA(折中方案)

适用于时槽化信道:

  1. 若信道空闲,以概率 $p$ 发送;以概率 $1-p$ 在最坏传播延迟(一个分组时间)后重新检查
  2. 若信道忙碌,持续监听直到空闲,回到步骤 1
  3. 若本次被推迟一个时槽,回到步骤 1 继续

在 Nonpersistent 和 1-persistent 之间提供了良好的折中。

4.7 如何选取 $p$?

  • 假设有 $N$ 个节点都有分组要发送,且信道从忙变闲
  • 那么 $Np$ 是信道空闲后期望尝试发送的节点数
  • 若 $Np > 1$,冲突必然会发生

因此网络必须确保 $Np < 1$ 以避免冲突,其中 $N$ 是最大可能的活动节点数。

4.8 CSMA 系列吞吐率对比

CSMA 系列吞吐率

协议 吞吐率大小(同一负载下)
0.01-persistent CSMA 接近 1(理论极限)
Nonpersistent CSMA 中等
0.1-persistent CSMA 中高
0.5-persistent CSMA 中
1-persistent CSMA 中低
Slotted ALOHA 低
Pure ALOHA 最低

五、CSMA/CD——带冲突检测的有线以太网

5.1 改进:边发边听

在 CSMA 基础上增加冲突检测(Collision Detection):

  1. 若信道空闲,立即发送
  2. 若信道忙碌,持续监听直到空闲后发送
  3. 若在发送过程中检测到冲突,立即停止发送
  4. 等待随机时间后再次尝试

5.2 为什么需要冲突检测?

在 CSMA 中,若两个终端同时开始发送分组,每个终端都会完整地发完整个分组(尽管冲突正在发生),这会浪费一整个分组时间的信道。CSMA/CD 通过尽早停止冲突分组的发送来提升效率。

5.3 冲突时序

CSMA/CD 时序

时刻 事件
$T_0$ 节点 A 开始发送
$T_0 + \tau - \epsilon$ 节点 B 因没听到 A 的信号也开始发送(实际冲突)
$T_0 + \tau$ B 检测到冲突
$T_0 + 2\tau - \epsilon$ A 即将发完时检测到冲突

其中 $\tau$ 是单程传播延迟。

该时序解释了以太网为何有最小帧长限制:要确保在最坏情况下也能可靠检测到冲突。CSMA/CD 是有线半双工以太网的成功关键。

六、CSMA/CA——冲突避免,无线场景的主流

6.1 为何不能”检测”?

无线场景下存在隐蔽站问题(Hidden Terminal Problem)且信号衰减快,难以可靠检测冲突。因此改为避免冲突(Collision Avoidance):在发送前主动回避可能的冲突。

6.2 算法要点

  1. 所有终端都监听同一信道(同 CSMA/CD)
  2. 准备发送的终端先感知信道
  3. 若信道忙碌,等到当前传输结束
  4. 再额外等待一个 DIFS(Distributed Inter Frame Space) 时间
  5. 在竞争窗口(Contention Window) 内选取一个随机数的时槽数作为退避计数
  6. 若其他终端在此期间开始传输,冻结自身计数器
  7. 其他终端结束后 + DIFS,继续倒计数;归零时立即发送

6.3 多节点退避示意

CSMA/CA 节点行为

Node B、C 同时侦听到信道空闲并各自选取一个随机退避:

  • C 选到较小的退避值,先到达零,开始发送
  • B 在 C 传输期间冻结自身计数器
  • C 结束后 + DIFS,B 解冻继续倒计数

6.4 CSMA/CA 时序

CSMA/CA 时序

  • DIFS:分布式帧间间隔,所有节点需等待的”决策窗口”
  • 竞争窗口(CW):退避计数器在其中倒计
  • 退避时槽(Slot):基本的退避时间单位

6.5 CSMA/CA + ACK——单向确认提高可靠性

接收端在收到数据帧后无需感知信道,直接等待 SIFS(Short Inter Frame Space) 后回送 ACK:

CSMA/CA + ACK 时序

  • SIFS < DIFS,确保 ACK 不会被其他节点”插队”
  • 若 ACK 丢失则触发重传

DIFS 和 SIFS 的不同优先级是 IEEE 802.11 DCF 实现的关键魔法。

6.6 CSMA/CA + RTS/CTS——预留信道

为解决隐蔽站问题,引入 RTS(Request to Send)/ CTS(Clear to Send) 握手:

  1. 发送方在信道空闲 DIFS 后发送 RTS
  2. 接收方等待 SIFS 后回送 CTS
  3. 双方在 SIFS 后开始真正的数据帧传输,再 SIFS 后 ACK

RTS/CTS 时序

RTS/CTS 只可能在小控制帧上发生冲突,业务数据帧几乎不会碰撞。

6.7 RTS/CTS 消息流

RTS/CTS 消息流

握手过程揭示了传播延迟在协议中的作用——这是为何需要 SIFS/DIFS 等时序参数的根本原因。

七、PLCA——物理层冲突避免(10BASE-T1S 的确定性方案)

7.1 设计哲学的切换

CSMA/CD 和 CSMA/CA 都属于”允许冲突发生,再用算法恢复“的设计思想。在汽车以太网 10BASE-T1S 场景下:

  • 半双工、单对线、总线型拓扑(≥2 节点,可达 8 节点以上)
  • 距离短(≤ 25 m / 15 m,节点数 ≤ 8 时)
  • 对延迟确定性要求极高(实时控制)

传统 CSMA/CD 的”碰撞随机退避”无法满足实时性需求。10BASE-T1S 引入了 PLCA(Physical Layer Collision Avoidance)——在物理层就避免冲突,本质是”时分确定性调度”。

7.2 PLCA 简介

PLCA(Physical Layer Collision Avoidance)是 10BASE-T1S 实现多节点互联的核心机制。它通过指定总线唯一协调者(Node0)节点对当前总线时间进行划分和分时调度,协调各节点允许发送数据的时机:

  • 只有当轮到某一节点的传输机会时,才可以发送数据
  • 传输机会没有优先级的概念(采用 round robin 的方式分配传输时机)
  • 每个新的传输周期,节点 0 都会发送一个 BEACON 帧

7.3 关键参数

参数 含义 备注
Node ID 网络中唯一标识,0 为协调者 全网必须唯一
Node Count PLCA 调度循环包含的节点总数 仅协调者设置有效
TO Timer 每个节点的发送窗口长度 全网所有节点必须相同
Max Burst Count 单次 TO 内允许连续发送的帧数 决定节点带宽占比
Burst Timer 连续发送时的总窗口限制 全网需一致

7.4 性能分析

7.4.1 测试场景

选取 10BASE-T1S 与 CANXL 进行横向对比,分别发送相同的应用数据:

场景一:长报文,慢周期

  • 控制总线节点数量:4、6、8 个
  • 每个节点发送:5 ms 周期报文
  • Payload 长度:600 字节

场景一设置

场景二:短报文,快周期

  • 控制总线节点数量:4、6、8 个
  • 每个节点发送:1 ms 周期报文
  • Payload 长度:120 字节

场景二设置

针对以上两个场景中发送的数据长度,可以计算出每一帧报文的发送时间:

帧发送时间

7.4.2 负载率分析

场景一下的负载率对比:

场景一负载率

  • 在 10M 速率下,由于 CANXL 报文中报头的速率较低,10BASE-T1S 的负载率大致是 CANXL 的 70% 左右
  • 需注意:CANXL 是竞争型总线,测试场景一下 10M CANXL 的负载率过高,无法保证报文时延
  • 在设置为 20M 后,CANXL 负载降低至可接收范围
  • 结论:运行在同等速率下,10BASE-T1S 的报文效率比 CANXL 更高

场景二下的负载率对比:

场景二负载率

  • 10BASE-T1S 与 CANXL 的负载率均有所上涨
  • 但 10BASE-T1S 负载率增长的幅度远小于 CANXL
  • 结论:在短报文、短周期的场景下,10BASE-T1S 的负载率仍优于 CANXL

7.4.3 延时分析

对比相同报文长度和周期下的报文最坏延时。

场景一下的延时对比:

场景一延时

  • 10BASE-T1S 由于 PLCA 机制的存在,需要排队等待其他节点报文报送完成后才可以发送,无法进行抢占
  • 所有报文的最坏延时一致,且节点数量越多,最坏延时时间越长
  • CANXL 可以根据 CANID 竞争发送机会,优先级高的报文可以优先发送
  • 结论:对于尽快发送要求高的场景,CANXL 表现更优

场景二下的延时对比:

场景二延时

  • 得益于 PLCA 机制,10BASE-T1S 在缩短报文长度后,报文发送时间变短,发送周期循环加快,报文等待时间变短,最坏延时大幅度降低
  • 在数值上与 CANXL 几乎相同
  • 设计参考:在 10BASE-T1S 通信矩阵的设计上,较短的报文可有效降低延时

7.4.4 抖动对比

报文接收端最小延时和最坏延时表征了报文周期的变化范围。

抖动对比

  • 表格中纵向数值为接收报文周期相对于发送报文周期的变化率
  • 与延时测试类似:发送长报文时,10BASE-T1S 数据周期抖动较大,CANXL 比 10BASE-T1S 抖动情况小
  • 发送短报文时,10BASE-T1S 数据周期抖动明显降低,且略微优于 CANXL
  • 抖动验证同样印证了相同的结论:较短的报文可有效降低延时

7.5 PLCA vs CSMA 家族:核心对比

维度 ALOHA / Slotted ALOHA CSMA / CSMA-CD CSMA-CA PLCA
冲突发生 是 是 减少冲突 物理层避免冲突
调度方式 随机发送 监听 + 退避 监听 + 随机退避 协调者 BEACON + 轮询
实时性 差 中 中 确定性
适用场景 早期无线分组网 有线以太网 无线 Wi-Fi 汽车短距离总线
标准 - IEEE 802.3 早期 IEEE 802.11 DCF IEEE 802.3cg (10BASE-T1S)
拓扑 总线/无线 总线 无线 总线/混合
是否需协调者 否 否 否 是(Node ID = 0)

7.6 PLCA 的工程实践要点

以下实战经验来源于公开技术资料的整合,可作为调试时的检查清单。

  1. 全网必须使能 PLCA——总线中超过 2 个节点通信时,任何一个节点没开 PLCA 都会扰乱整条总线
  2. Node Count 仅协调者设置——跟随节点的 Node Count 设置被忽略
  3. TO Timer 必须全网一致——不一致会导致部分节点窗口被错过,引起通信异常
  4. Node ID 必须全网唯一——重复 ID 会造成数据冲突
  5. Node Count 过大——不会造成通信错误,但增加 cycle 长度中的”空转”开销,降低带宽利用率
  6. 通过 Max Burst Count 调节带宽占比——需要保证总带宽占比时,设置更高的 Max Burst Count
  7. 总线两端各需一个终端电阻(典型 100 Ω),是 10BASE-T1S 物理层稳定工作的前提

八、小结与选型建议

场景 推荐协议
高负载有线总线(半双工) CSMA/CD(传统以太网)
无线 LAN CSMA/CA + ACK(802.11 DCF)
无线 Mesh / 隐蔽站严重 CSMA/CA + RTS/CTS
汽车短距离实时控制总线 PLCA(10BASE-T1S)
多业务流混合实时网络 PLCA + TSN 双层调度
已弃用演示(教学) Pure ALOHA、Slotted ALOHA

演进规律:从 ALOHA 的”放任冲突” → CSMA 的”先听后发” → CSMA/CD 的”边发边检” → CSMA/CA 的”主动避让” → PLCA 的”时分调度,从根本上无冲突”——本质都是在与传播延迟、节点数量、业务实时性需求这三者的对抗中不断升级。

经纬恒润的实测数据揭示了一个重要结论:在短报文、快周期场景下,10BASE-T1S + PLCA 的负载率、延时和抖动均可与 20M CANXL 持平甚至更优——这对汽车 E/E 架构从 CAN/CAN XL 向 10BASE-T1S 演进具有重要的工程参考价值。


参考资料

  1. Chapt-06.ppt — Multiple Radio Access, 第 6 章. 课程讲义,包含 ALOHA、Slotted ALOHA、CSMA、CSMA/CD、CSMA/CA 等算法的原始图示。
  2. IEEE Std 802.3-2022 — Clause 147 (10BASE-T1S). 工业以太网 MAC 与 PHY 标准.
  3. IEEE Std 802.3cg-2019 — 10BASE-T1S PHY 和 PLCA Reconciliation Sublayer 标准定义.
  4. 深度解析 10BASE-T1S PLCA 的多节点通信效率(经纬恒润) —
    同源博客园版本:https://www.cnblogs.com/hirain123/p/19033489
  5. PLCA Parameter Interpretation — https://blog.csdn.net/2401_84369443/article/details/149642603 — PLCA 参数详解与实战测试.
  6. 10BASE-T1S 协议解读系列 — https://zhuanlan.zhihu.com/p/685108918 — 知乎相关文章.