CSMA/CA 介质访问控制协议

CSMA/CA vs CSMA/CD

特性

CSMA/CD(以太网)

CSMA/CA(WiFi)

碰撞处理

检测并重传

预先避免

半双工/全双工

全双工

半双工

为什么不同

有线可检测碰撞

无线无法可靠检测碰撞

WiFi 使用 CA(Collision Avoidance,避免碰撞)而非 CD(Collision Detection,检测碰撞),因为:

  1. 发送方无法监听:自身发射信号远强于接收信号

  2. 隐藏终端问题:A 和 C 都听不到对方,但都能干扰 B

  3. 暴露终端问题:C 可以发送给 D,但不需要等待 A→B 完成

CSMA/CA 工作流程

基本流程

1. 监听信道(Carrier Sense)
   ├── 物理层载波侦听(PHY-CS):检测能量电平
   └── MAC 层虚拟载波侦听(VCA):NAV 计数器

2. 信道空闲?
   ├── 是 → 等待 DIFS,然后发送
   └── 否 → 等待信道空闲 → DIFS → 进入退避

3. 退避(Backoff)
   ├── 随机选择 backoff counter ∈ [0, CW]
   ├── 每经过一个 slot time,counter -1
   ├── 信道变忙?→ 暂停 counter
   ├── 信道空闲 ≥ DIFS?→ 恢复计数
   └── counter = 0?→ 发送帧

4. 等待 ACK
   ├── 收到 ACK → 成功,CW 重置为 CWmin
   └── 未收到 ACK → 失败,CW 翻倍(二进制指数退避)

时间参数

参数

20 MHz

40 MHz

说明

SIFS

16 μs

16 μs

短帧间间隔(高优先级响应)

PIFS

28 μs

28 μs

PCF 帧间间隔

DIFS/DCF-IFS

34 μs

34 μs

分布式帧间间隔

EIFS

492 μs

492 μs

扩展帧间间隔(错误后)

Slot time (2.4G)

20 μs

20 μs

退避时隙

Slot time (5G)

9 μs

9 μs

5 GHz 更短的时隙

CW(Contestation Window)参数

CWmin / CWmax:
- 802.11a/b/g:  CWmin=15, CWmax=1023
- 802.11n/ac/ax: CWmin=15, CWmax=1023(默认)
                 CWmin=15, CWmax=1023(QoS 数据)

退避过程:
第1次尝试: CW = [0, 15]     → 随机选一个数
第2次尝试: CW = [0, 31]     → 翻倍
第3次尝试: CW = [0, 63]     → 继续翻倍
...
第N次尝试: CW = [0, 1023]   → 达到上限后不再增加

RTS/CTS 机制

隐藏终端问题

A ────→ B ←──── C

A 和 C 互相听不到,但都会干扰 B。
当 A 正在发送给 B 时,C 也开始发送 → 碰撞!

RTS/CTS 解决方案

A          B          C
 │          │         │
 │──RTS────→│         │ (C 听到 RTS,设置 NAV)
 │←─CTS────│         │ (C 听到 CTS,延长 NAV)
 │──Data──→│         │ (C 保持沉默)
 │←─ACK───│         │
  • RTS(Request to Send):发送方请求发送,包含数据帧长度

  • CTS(Clear to Send):接收方确认,通知周围设备保持安静

  • NAV(Network Allocation Vector):虚拟载波侦听计数器

何时启用 RTS/CTS?

场景

建议

默认

禁用(开销大)

隐藏终端严重

启用,或设置低 RTS threshold

小帧传输多

谨慎使用(RTS/CTS 开销可能超过数据本身)

EIFS(扩展帧间间隔)

当接收方检测到帧错误(FCS 校验失败)时:

正常情况: DIFS → backoff → transmit
错误后:   EIFS → backoff → transmit

EIFS = SIFS + ACK_time + DIFS

目的:给发送方时间重传,避免接收方在恢复期间抢占信道

性能分析

吞吐量的理论上限(MacGregor- Kleinrock 模型)

S = (Pₜ × Tₜ) / (Tₜ + Tₑ + Tᵢ)

其中:
S   = 吞吐量效率
Pₜ  = 传输成功概率
Tₜ  = 成功传输时间
Tₑ  = 碰撞/失败后的平均等待时间
Tᵢ  = 信道空闲时间

实际观察到的规律

  • 1-2 个竞争设备:效率 > 80%

  • 5-10 个竞争设备:效率 ~ 50-70%

  • 20+ 个竞争设备:效率 < 30%,退避时间占主导