1. WiFi 协议栈概览:802.11 协议族演进、分层架构与核心性能指标
各位好,我是老张。在无线网络这行摸爬滚打了十几年,今天咱们来聊聊 WiFi 协议栈性能调优。说实话,很多人一上来就盯着某个参数猛调,结果越调越糟。为什么?因为你不了解协议栈的全貌。
打个比方,你要修一台发动机,总得先知道它有几个缸、油路怎么走吧?WiFi 调优也是这个道理。这一章,我们先搭个框架,把 802.11 协议族的来龙去脉、协议栈的分层结构,以及那几个核心性能指标搞清楚。嗯,这是后面所有调优动作的基础。
1.1 802.11 协议族演进:从蹒跚学步到飞驰电掣
802.11 协议从 1997 年诞生到现在,经历了七代演变。我最早接触的是 802.11b,那时候 11 Mbps 就觉得快得不得了。现在回头看,真是恍如隔世。
下面这张表,我建议你收藏一下。每次调优前,先确认你手里的是哪一代设备,心里就有底了。
| 协议标准 | 推出年份 | 频段 | 理论最大速率 | 关键技术 |
|---|---|---|---|---|
| 802.11 | 1997 | 2.4 GHz | 2 Mbps | FHSS / DSSS |
| 802.11b | 1999 | 2.4 GHz | 11 Mbps | HR-DSSS |
| 802.11a | 1999 | 5 GHz | 54 Mbps | OFDM |
| 802.11g | 2003 | 2.4 GHz | 54 Mbps | OFDM |
| 802.11n (WiFi 4) | 2009 | 2.4 / 5 GHz | 600 Mbps | MIMO、信道绑定 |
| 802.11ac (WiFi 5) | 2013 | 5 GHz | 6.9 Gbps | MU-MIMO、256-QAM |
| 802.11ax (WiFi 6) | 2019 | 2.4 / 5 / 6 GHz | 9.6 Gbps | OFDMA、1024-QAM |
| 802.11be (WiFi 7) | 2024 | 2.4 / 5 / 6 GHz | 46 Gbps | 320MHz、4096-QAM、MLO |
1.2 协议栈分层架构:每一层都有它的脾气
WiFi 协议栈分三层:MAC 层、LLC 层和物理层。你想想看,数据从你的手机发出去,要经过多少道工序?
我习惯把这三层比作一个快递公司:
- 物理层(PHY) —— 就是快递员和货车。负责把包裹(比特)从 A 运到 B。调制方式、编码率、天线数量,都归它管。
- MAC 层 —— 相当于分拣中心。谁先发货、怎么避免撞车、丢了怎么补,都是它说了算。
- LLC 层 —— 是客服和调度。负责把网络层的 IP 包封装成 MAC 帧,再交给分拣中心。
下面这张图,把这三层的关系画清楚了。你仔细看看,尤其是 MAC 层那两个子层,调优时经常跟它们打交道。
1.3 核心性能指标:调优的四个方向盘
做性能调优,你得先知道「好」的标准是什么。我一般只看四个指标:吞吐量、时延、抖动、丢包率。说白了,就是看你的网络跑得快不快、稳不稳、卡不卡、丢不丢。
1.3.1 吞吐量(Throughput)
这是大家最关心的。但注意,我说的是「实际吞吐量」,不是理论速率。理论速率是实验室数据,实际能跑到 60%-70% 就算不错了。
- 影响因素: MCS 索引、信道带宽、空间流数、帧聚合(A-MSDU / A-MPDU)
- 调优方向: 提升 MCS、开启帧聚合、减少协议开销
1.3.2 时延(Latency)
时延就是数据从 A 到 B 的时间。游戏玩家最敏感,超过 50ms 就开始骂娘了。
- 组成: 处理时延 + 排队时延 + 传输时延 + 传播时延
- WiFi 特有: 竞争时延(CSMA/CA 退避)、重传时延
1.3.3 抖动(Jitter)
抖动是时延的变化量。时延高不可怕,可怕的是忽高忽低。VoIP 和视频会议最怕这个。
- 根源: 信道竞争、突发流量、省电模式切换
- 调优手段: 开启 WMM、配置 QoS、固定信道避免 DFS 切换
1.3.4 丢包率(Packet Loss Rate)
丢包率超过 1%,TCP 吞吐量就会断崖式下跌。为什么?TCP 的拥塞控制算法一检测到丢包,立马降速。
- 常见原因: 信号弱、干扰大、缓存溢出、重传超限
- 避坑指南: 我曾经遇到一个项目,丢包率一直 2% 降不下来。查了三天,最后发现是 AP 的 Beacon 间隔配错了,导致终端频繁掉同步。嗯,这种坑踩过一次就记住了。
1.4 本章小结:先画地图,再上路
这一章我们搭了个框架。你知道了 802.11 从 b 到 be 的演进脉络,理解了协议栈三层各自的分工,也记住了调优要盯住的四个仪表盘。
后面每一章,我们都会深入一个具体的技术点。但无论讲什么,我都会先问自己一句:这个东西在协议栈的哪一层?它影响的是吞吐量、时延、抖动还是丢包率?
嗯,把这个习惯养成,你就已经超过 80% 的工程师了。