2. WiFi协议栈与吞吐瓶颈定位

做吞吐测试,如果不了解物理层,那就像开车不看仪表盘——能跑,但出了问题你完全不知道怎么回事。这一章我带你把WiFi物理层的基础打牢。说白了,你只有搞懂了频段、信道、带宽、MIMO和调制方式,才能明白为什么有时候信号满格,吞吐却上不去。

核心观点:吞吐速率 = 信道带宽 × 空间流数 × 调制效率 × 编码率。这四个变量,任何一个掉链子,速率都上不去。

2.1 2.4GHz vs 5GHz:两个频段的性格差异

我刚开始做测试那会儿,总觉得2.4G穿墙好,5G速度快,选哪个不是明摆着吗?后来踩的坑多了才发现,事情没那么简单。

2.4GHz频段:频率低,波长长,绕射能力强。穿一堵承重墙,2.4G可能还能跑个50Mbps,5G直接掉到10Mbps以下。但它的致命伤是干扰——蓝牙、微波炉、无线鼠标、邻居家的老路由器,全挤在2.4G这锅粥里。你想想看,一个信道里十几二十个设备在抢,吞吐能稳定才怪。

5GHz频段:频率高,波长短,穿透力弱。但它的优势是信道多、干扰少。5G有20多个非重叠信道,而2.4G只有3个(1、6、11)。我在写字楼里做过一次对比测试:2.4G下平均吞吐只有80Mbps,抖动还特别大;切到5G后,直接飙到350Mbps,曲线稳得像一条直线。

特性 2.4GHz 5GHz
频率范围 2.400 – 2.4835 GHz 5.150 – 5.850 GHz
非重叠信道数 3(1/6/11) 20+(取决于国家)
穿墙能力 强 弱
干扰程度 严重(蓝牙/微波炉/邻居) 较轻
典型单流吞吐 ~100-200 Mbps ~300-800 Mbps
我的习惯:做吞吐测试时,优先用5GHz。除非你专门测覆盖或穿墙场景,否则2.4G的干扰会让你很难复现问题。

2.2 信道与带宽:20/40/80/160MHz到底怎么选?

信道带宽,说白了就是一条路有多宽。20MHz是单车道,40MHz是双车道,80MHz是四车道,160MHz就是八车道。车道越宽,能同时过的车(数据)就越多。

但这里有个坑——信道绑定。WiFi用20MHz作为基本信道单位,40MHz就是把两个20MHz绑在一起,80MHz绑四个,160MHz绑八个。绑得越宽,速率越高,但干扰风险也越大。

我记得有一次在公寓里帮朋友测WiFi,他买了个高端路由器,开了160MHz带宽。结果一测,速率还不如80MHz稳定。为什么?因为160MHz需要占用8个连续信道,在5GHz频段里,这样的连续空闲信道很难找。周围邻居的路由器一干扰,160MHz就自动回退到80MHz甚至40MHz,速率反而更差。

带宽 所需连续信道数(5GHz) 理论单流速率(802.11ac) 实际建议
20 MHz 1 ~86.7 Mbps 干扰严重时保底用
40 MHz 2 ~200 Mbps 家庭日常够用
80 MHz 4 ~433 Mbps 推荐,平衡速率与稳定性
160 MHz 8 ~867 Mbps 干扰少的环境才推荐
避坑指南:我曾经在写字楼里开160MHz做测试,结果发现AP频繁回退,吞吐曲线像心电图。后来用Wireshark抓包一看,全是CSA(Channel Switch Announcement)帧——AP在不停换信道。所以,除非你确认周围干扰极少,否则80MHz是最稳妥的选择。

2.3 MIMO与空间流:多天线到底能快多少?

MIMO,全称是Multiple-Input Multiple-Output,多入多出。简单说,就是多发多收。一根天线发一路数据,两根天线就能同时发两路,速率翻倍。每一路数据就叫一个空间流。

但这里有个很多人搞混的概念:天线数量 ≠ 空间流数量。一个3×3的MIMO(3发3收),不一定支持3个空间流。有些廉价路由器虽然有三根天线,但只支持2个空间流,第三根天线是用来做接收分集的。我见过不少厂商拿这个当卖点忽悠人,你买回来一测,实际只有2条流。

空间流对吞吐的影响是线性的:

  • 1条流:基础速率
  • 2条流:速率翻倍
  • 3条流:速率翻3倍
  • 4条流:速率翻4倍

举个例子,802.11ac在80MHz带宽、256-QAM调制下,单流速率是433Mbps。如果是4条流,理论速率就是433×4=1732Mbps。但实际测试中,因为协议开销和干扰,能跑到70%-80%就算不错了。

测试技巧:判断你的设备支持几条空间流,最简单的方法就是看MCS索引表。比如802.11ac,MCS 0-7是单流,MCS 8-15是双流,MCS 16-23是三流,以此类推。抓包看AP发的Beacon帧里的HT/VHT Capabilities,一目了然。

2.4 调制方式:BPSK、QPSK、QAM到底在干什么?

调制方式,说白了就是一个符号能扛多少比特。你想想看,同样是一秒钟发出去的信号,如果每个符号只带1个比特(BPSK),那速率肯定慢;如果每个符号带8个比特(256-QAM),那速率就快得多。

常见的调制方式从低到高:

  • BPSK:1个符号 = 1比特。抗干扰最强,速率最低。信号差的时候保命用。
  • QPSK:1个符号 = 2比特。比BPSK快一倍,抗干扰还行。
  • 16-QAM:1个符号 = 4比特。中等速率,中等抗干扰。
  • 64-QAM:1个符号 = 6比特。速率高,但对信噪比要求也高。
  • 256-QAM:1个符号 = 8比特。802.11ac的标配,需要很好的信号质量。
  • 1024-QAM:1个符号 = 10比特。802.11ax(WiFi 6)引入,对信噪比要求极高。

这里有个关键点:调制方式是动态调整的。WiFi芯片会根据当前的信号质量(SNR)自动选择调制方式。信号好就用256-QAM,信号差就回退到QPSK甚至BPSK。这就是为什么你离路由器远的时候,虽然信号还有两格,但速率掉得厉害——因为调制方式已经降级了。

调制方式 每符号比特数 典型SNR要求 适用场景
BPSK 1 ~6 dB 信号极差,保连接
QPSK 2 ~10 dB 信号较差,勉强可用
16-QAM 4 ~16 dB 中等信号
64-QAM 6 ~22 dB 良好信号
256-QAM 8 ~28 dB 强信号,近距离
1024-QAM 10 ~33 dB 极强信号,WiFi 6专属
我曾经踩过的坑:有一次测试,终端离AP只有3米,但吞吐死活上不去。查了MCS索引,发现一直在用16-QAM。后来用频谱仪一测,发现那个位置有强烈的同频干扰,把SNR拉低了。所以,信号强度(RSSI)好不等于信噪比(SNR)好,这个一定要记住。

2.5 一张图看懂物理层速率公式

下面这张图把上面讲的所有要素串起来了。你盯着看一分钟,就能明白WiFi物理层速率的全貌。

WiFi物理层速率公式:R = B × N × log₂(M) × CR 信道带宽 B 20/40/80/160 MHz 空间流数 N 1/2/3/4 条流 调制阶数 M BPSK~1024QAM 编码率 CR 1/2, 2/3, 3/4, 5/6 × × × 实际吞吐 = 理论速率 × (1 - 协议开销) × 环境因子 影响各要素的常见因素 带宽受限原因 • 信道干扰 • DFS雷达避让 空间流受限原因 • 终端天线数不足 • AP能力限制 调制降级原因 • SNR不足 • 多径干扰 编码率受限原因 • 误码率过高 • 重传率上升 吞吐测试的本质:找出四个变量中哪个是瓶颈 测带宽 → 看信道利用率;测空间流 → 看MCS索引;测调制 → 看SNR;测编码率 → 看误码

2.6 实战:如何快速判断当前物理层状态?

做吞吐测试时,你不能光看iPerf的最终数字。你得学会看物理层的实时状态。我个人最常用的工具是Wireshark + 无线网卡监控模式。

抓包后重点关注这几个字段:

  1. MCS索引:在802.11n/ac/ax帧的HT/VHT/HE-SIG字段里。MCS值直接告诉你调制方式和编码率。
  2. 信道带宽:看帧头里的Channel Width字段,是20、40还是80MHz。
  3. NSS(空间流数):在VHT/HE字段里,NSS=1就是单流,NSS=2就是双流。
  4. RSSI和SNR:在Radiotap头部里。RSSI看信号强度,SNR看信号质量。
快速判断法:如果你看到MCS索引在0-7之间(单流),但信号强度很好(RSSI > -50dBm),那大概率是终端能力受限——它只支持1条流。换一台支持3×3 MIMO的终端再试,吞吐可能直接翻倍。

嗯,这一章的内容就到这里。物理层是吞吐测试的根基,你把这些概念吃透了,后面讲速率计算、测试方法、问题定位的时候,就会轻松很多。