结论边界

802.11g/ERP 的复杂点不在“最高 54 Mbps”,而在 2.4 GHz 上和 802.11b 共存。

先写清边界:

  • ERP 是 802.11g 引入的 Extended Rate PHY,工作在 2.4 GHz。
  • ERP-OFDM 帧旧 802.11b STA 不一定能解码,旧 STA 也就不能从其中读取 Duration/NAV。
  • ERP Protection 的目的,是在 ERP-OFDM 传输前,用旧设备能理解的帧预约介质。
  • Beacon/Probe Response 里的 ERP Information 是判断保护状态的入口。
  • NonERP_Present、Use_Protection、Barker_Preamble_Mode 是三个不同含义,不能混用。
  • RTS/CTS 和 CTS-to-self 都能用于保护,但覆盖范围不同。

ERP Protection 是兼容性成本,不是性能优化。它可能让 802.11g 与 802.11b 共存,但会增加 airtime 开销。

ERP 解决的问题

802.11b 主要使用 DSSS/HR-DSSS/CCK。802.11g 在同一 2.4 GHz 频段引入 ERP-OFDM。

问题在这里:

protocol trace
ERP STA 能理解 ERP-OFDM
non-ERP STA 可能听不懂 ERP-OFDM
听不懂就无法读取 Duration
无法读取 Duration 就无法正确更新 NAV

802.11 的介质共享不只依赖能量检测,还依赖虚拟载波侦听。旧 STA 即使检测到能量,也未必知道该退避多久。hidden node 场景下,旧 STA 甚至可能听不到 ERP STA,却能干扰 AP。

ERP Protection 的核心就是:

protocol trace
先发 legacy STA 能理解的保护帧
让旧 STA 设置 NAV
再发 ERP-OFDM DATA

ERP PHY 能力

排障时常见的 2.4 GHz PHY 组合:

protocol trace
DSSS:        1 / 2 Mbps
HR-DSSS CCK: 5.5 / 11 Mbps
ERP-OFDM:    6 / 9 / 12 / 18 / 24 / 36 / 48 / 54 Mbps

协议语境里还会看到:

  • ERP-DSSS/CCK:兼容 802.11b 的 DSSS/CCK 发送;
  • ERP-OFDM:802.11g 常见高速 OFDM;
  • DSSS-OFDM:可选机制,实际部署不如 ERP-OFDM 常见;
  • ERP-PBCC:可选能力,现场通常不是主线。

工程排障里,重点放在 ERP-OFDM 与 DSSS/CCK 设备共存,以及保护帧带来的 airtime 成本。

ERP Information

判断 BSS 是否要求 ERP Protection,先看 Beacon/Probe Response 中的 ERP Information element。

字段很短:

protocol trace
Element ID: ERP Information
Length: 1
ERP Information: 1 octet

低 3 位最关键:

protocol trace
Bit 0: NonERP_Present
Bit 1: Use_Protection
Bit 2: Barker_Preamble_Mode
Bit 3-7: Reserved

这三个 bit 的含义:

protocol trace
NonERP_Present      环境里存在 non-ERP 影响
Use_Protection      AP 要求 ERP STA 使用保护
Barker_Preamble_Mode 需要 Barker/长前导码相关兼容

NonERP_Present

NonERP_Present = 1 表示 AP 认为当前 BSS 或邻近环境中存在 non-ERP 影响。

可能来源:

  • 有 802.11b/non-ERP STA 关联到本 BSS;
  • AP 检测到邻近 non-ERP BSS 或旧设备影响;
  • AP 实现比较保守;
  • 状态老化不及时,字段短时间保持。

不要误读成:

protocol trace
NonERP_Present = 1
=> 当前关联列表里一定有 802.11b 设备

它是 AP 广播的环境判断,不是完整设备清单。

排障时继续查:

  • AP 是否处于 b/g/n mixed;
  • 是否允许 802.11b rates;
  • 是否有旧设备关联;
  • 是否有邻近 BSS 触发保护;
  • 数据帧前是否真的出现 RTS/CTS 或 CTS-to-self。

Use_Protection

Use_Protection = 1 表示 AP 要求 ERP STA 对相关传输使用保护机制。

抓包中通常会看到:

protocol trace
RTS -> CTS -> ERP-OFDM DATA

或:

protocol trace
CTS-to-self -> ERP-OFDM DATA

注意两个边界:

  • Use_Protection = 1 不表示每一帧都一定被保护,实际还受帧长、RTS threshold、驱动策略影响。
  • Use_Protection = 0 不表示网络一定高效,弱信号、同频干扰、低速 STA 仍然会影响吞吐。

性能影响主要来自:

  • 多出来的控制帧;
  • SIFS 间隔;
  • 控制帧使用 legacy/basic rate,占用更长 airtime;
  • 小包场景中保护开销比例更高。

Barker_Preamble_Mode

Barker_Preamble_Mode = 1 表示 BSS 中存在需要 Barker/长前导码兼容的条件。

要区分三个概念:

  • Long Preamble:实际空口 PLCP 格式,老 802.11b 基础兼容方式;
  • Short Preamble:802.11b 后续可选优化,要求双方支持;
  • Barker_Preamble_Mode:ERP Information 中的状态 bit,表示当前 BSS 不能假设所有 STA 都支持短前导码。

它不等于某一帧已经使用 long preamble。单帧前导码仍要看 PHY metadata。

常见时间基线:

protocol trace
802.11b long preamble:  192 us
802.11b short preamble:  96 us

如果大量 DSSS/CCK 控制或管理帧使用 long preamble,airtime 成本会变高。

RTS/CTS 与 CTS-to-self

ERP Protection 常用两类方式。

RTS/CTS:

protocol trace
ERP STA -> AP      RTS,legacy STA 能理解
AP      -> ERP STA CTS,AP 附近 legacy STA 设置 NAV
ERP STA -> AP      ERP-OFDM DATA

CTS-to-self:

protocol trace
ERP STA -> 周围 STA CTS-to-self,RA = 自己
ERP STA -> AP      ERP-OFDM DATA

差异:

  • RTS/CTS 保护范围更偏接收方附近,适合 hidden node 风险更高的场景;
  • CTS-to-self 开销小,但主要保护发送方附近能听到该 CTS 的 STA;
  • CTS-to-self 不确认接收方是否能响应;
  • 两者都可能用低速 legacy/basic rate。

不要把 CTS-to-self 写成 RTS/CTS 的等价替代。它们设置 NAV 的空间范围不同。

抓包判断路径

1. 先看 Beacon/Probe Response

记录 ERP Information:

protocol trace
NonERP_Present:
Use_Protection:
Barker_Preamble_Mode:

同时记录:

  • supported/basic rates;
  • 是否允许 1/2/5.5/11 Mbps;
  • 是否 b/g/n mixed;
  • 是否 short slot time;
  • 是否 short preamble。

2. 再看数据帧前是否有保护

查找:

protocol trace
RTS/CTS
CTS-to-self
低速 legacy control frame

判断保护是否真的发生,而不是只看 Beacon bit。

3. 算 airtime 成本

不要只看 PHY rate。保护开销包括:

protocol trace
RTS 或 CTS-to-self airtime
CTS airtime
SIFS
后续 DATA airtime
ACK airtime
backoff
retry

如果控制帧走 1/2/5.5/11 Mbps,而 DATA 用 54 Mbps,吞吐仍可能被保护帧拖低。

4. 区分 ERP 保护与普通干扰

ERP 保护的证据:

  • ERP Information 相关 bit 置位;
  • DATA 前出现 RTS/CTS 或 CTS-to-self;
  • 保护帧使用 legacy/basic rate;
  • 保护开销与吞吐下降时间相关。

普通干扰/弱信号的证据:

  • FCS/PHY error 增多;
  • retry 增多;
  • RSSI/SNR 差;
  • CCA busy 高;
  • 与 ERP bit/保护帧无明显对应关系。

常见误判

现象不能直接下的结论下一步确认
NonERP_Present=1 当前一定有 802.11b STA 关联 它是 AP 的环境判断,还要查关联列表、邻近 BSS 和保护帧
Use_Protection=1 所有帧都一定 RTS/CTS 实际保护受帧长、threshold、驱动策略影响
Use_Protection=0 网络一定高效 弱信号、OBSS、低速 STA、重传仍会拖慢
Barker_Preamble_Mode=1 每帧都是 long preamble 单帧前导码要看 PHY metadata
看到 CTS-to-self 等价于 RTS/CTS CTS-to-self 保护范围偏发送方
协商 54 Mbps 但慢 PHY 速率虚标 可能是 ERP protection、long slot、低速 basic rate、retry 共同作用

现场记录模板

protocol trace
BSS / AP:
频段 / 信道:
AP 模式:b/g/n mixed 或其他
Supported rates:
Basic rates:
Short slot:开 / 关
Short preamble:开 / 关
ERP NonERP_Present:0 / 1
ERP Use_Protection:0 / 1
ERP Barker_Preamble_Mode:0 / 1
数据帧前保护:RTS/CTS / CTS-to-self / 无
保护帧 rate:
DATA rate:
Retry / FCS error:
CCA busy:
吞吐/时延现象:
结论:
缺失证据:

来源与核验

  • IEEE Std 802.11:ERP PHY、ERP Information element、RTS/CTS、CTS-to-self、Duration/NAV、slot time、preamble 相关语义。
  • Wireshark/radiotap:ERP Information、supported/basic rates、frame type、Duration、rate、preamble、FCS/PHY error、timestamp。
  • AP/驱动日志:关联设备能力、basic rate 配置、protection mode、retry、CCA busy。

最后结论

ERP Protection 排障按这条线查:

protocol trace
是否存在 non-ERP 影响?
AP 是否置 Use_Protection?
数据帧前是否真的出现保护帧?
保护帧使用什么 rate?
long slot / long preamble / low basic rate 是否叠加?
吞吐下降是否与保护 airtime 对得上?

如果只看“连接速率 54 Mbps”,会漏掉真正消耗 airtime 的兼容成本。