结论边界
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。
问题在这里:
ERP STA 能理解 ERP-OFDM
non-ERP STA 可能听不懂 ERP-OFDM
听不懂就无法读取 Duration
无法读取 Duration 就无法正确更新 NAV
802.11 的介质共享不只依赖能量检测,还依赖虚拟载波侦听。旧 STA 即使检测到能量,也未必知道该退避多久。hidden node 场景下,旧 STA 甚至可能听不到 ERP STA,却能干扰 AP。
ERP Protection 的核心就是:
先发 legacy STA 能理解的保护帧
让旧 STA 设置 NAV
再发 ERP-OFDM DATA
ERP PHY 能力
排障时常见的 2.4 GHz PHY 组合:
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。
字段很短:
Element ID: ERP Information
Length: 1
ERP Information: 1 octet
低 3 位最关键:
Bit 0: NonERP_Present
Bit 1: Use_Protection
Bit 2: Barker_Preamble_Mode
Bit 3-7: Reserved
这三个 bit 的含义:
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 实现比较保守;
- 状态老化不及时,字段短时间保持。
不要误读成:
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 对相关传输使用保护机制。
抓包中通常会看到:
RTS -> CTS -> ERP-OFDM DATA
或:
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。
常见时间基线:
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:
ERP STA -> AP RTS,legacy STA 能理解
AP -> ERP STA CTS,AP 附近 legacy STA 设置 NAV
ERP STA -> AP ERP-OFDM DATA
CTS-to-self:
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:
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. 再看数据帧前是否有保护
查找:
RTS/CTS
CTS-to-self
低速 legacy control frame
判断保护是否真的发生,而不是只看 Beacon bit。
3. 算 airtime 成本
不要只看 PHY rate。保护开销包括:
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 共同作用 |
现场记录模板
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 排障按这条线查:
是否存在 non-ERP 影响?
AP 是否置 Use_Protection?
数据帧前是否真的出现保护帧?
保护帧使用什么 rate?
long slot / long preamble / low basic rate 是否叠加?
吞吐下降是否与保护 airtime 对得上?
如果只看“连接速率 54 Mbps”,会漏掉真正消耗 airtime 的兼容成本。
回复 / 留言