ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

802.11ax调度机制解析:OFDMA、MU-MIMO与TWT实战

802.11ax调度机制解析:OFDMA、MU-MIMO与TWT实战 最近ax这个词在我常逛的几个无线技术讨论区里出现频率明显变高一开始以为是某个新工具或新框架的简称点进去才发现大家都在聊 802.11ax 的调度机制。也难怪Wi-Fi 6 标准落地这么多年支持它的手机和路由器早就普及了但真正把空口调度这套东西吃透的人其实不多。ax调度说白了就是 802.11ax 标准里负责哪些终端在什么时间、用哪一段频率资源、以什么方式发送的一整套调度机制它解决的是老 Wi-Fi 最让人头疼的竞争冲突、资源浪费和低效排队问题。这篇文章我想把自己从协议研读、抓包实验到现网调优的完整过程梳理一遍适合正在做无线网络优化、或者对 Wi-Fi 6 只知其名不知其理的读者参考。1. ax不是缩写游戏802.11ax调度机制到底在调度什么1.1 为什么ax调度最近被反复提起说实话Wi-Fi 6 的物理层进步大家早就听腻了160MHz 频宽、1024-QAM、8×8 MU-MIMO这些参数在路由器包装盒上印得比谁都醒目。但很多用户升级到 Wi-Fi 6 路由器之后发现日常体验并没有想象中的质变尤其在多设备家庭、办公室、宿舍这类高密度场景里该卡还是卡。问题就出在调度。物理层的极限速率只是理论最高值能不能在几十台设备同时上网时把信道资源公平高效地分下去靠的是 MAC 层的调度算法。802.11ax 相比 802.11ac 最大的变化不是速率数字而是引入了一套真正意义上的资源调度体系——OFDMA 频域调度、MU-MIMO 空间域调度、TWT 时间域调度、BSS Coloring 空间复用调度。行业里聊ax调度聊得越来越多本质上是大家都意识到高密度场景已经变成常态光靠堆速率参数解决不了无线网络的拥堵问题。1.2 老 Wi-Fi 的三大痛点也是 ax 要解决的三件事在讲调度机制之前得先理解老 Wi-Fi802.11n/ac为什么在高密度场景下表现糟糕。我把痛点归纳成三个碰撞与退避浪费传统 Wi-Fi 用 CSMA/CA所有终端共享同一个信道发送前先听信道空闲了才发。设备一多碰撞概率急剧上升每次碰撞都要进入指数退避信道时间大量消耗在等待而不是传输上。这就像没有交通信号灯的路口车越多谁都走不动。低速率终端拖累全局老标准里一个低速终端发送同样大小的报文要占用更长的信道时间。为了保护它AP 还要降低整个 BSS 的启动阈值结果就是一台老旧设备就能拖慢整个网络的空口效率。信道按人占用而非按资源占用Wi-Fi 5 时代无论一个终端只传几十字节的心跳包它也要独占整个信道。大量小报文场景下信道利用率低得可怜。ax 调度的核心思路是把随机竞争 独占信道改成集中调度 资源共享。AP 从一个被动的裁判变成主动的调度中心所有资源分配由 AP 统一安排。这个架构变化才是 802.11ax 真正值钱的地方。对比维度802.11n/ac802.11ax信道访问方式CSMA/CA 随机竞争下行 OFDMA 集中调度 上行触发式调度多用户支持仅下行 MU-MIMOac上下行 OFDMA 上下行 MU-MIMO最小分配单位整个信道资源单元RU最小 26-tone节能机制传统 PS-PollTWT 约定唤醒时间干扰处理完全退避BSS Coloring 空间复用2. OFDMA资源单元调度把信道切成小格子按需分配2.1 资源单元RU的划分逻辑OFDMA正交频分多址是 802.11ax 调度体系里最基础、也最实用的一环。它的做法是在频域上把信道切成多个子载波组每组称为一个资源单元Resource UnitRUAP 可以把不同的 RU 分配给不同的终端。802.11ax 把子载波间隔缩小到了 78.125 kHz802.11ac 是 312.5 kHz一个 20MHz 信道在频域上被划分成了 256 个子载波。RU 的最小粒度是 26 个 tone子载波往上还有 52-tone、106-tone、242-tone 等规格。一个 20MHz 信道最多可以切分成 9 个 26-tone RU也可以组合成 4 个 52-tone RU、2 个 106-tone RU 或 1 个占满整个信道的 242-tone RU还能按协议规定的组合表混合搭配。打个比方以前一个终端发包等于一个人包下整条高速公路哪怕只送一封信其他车也得等着OFDMA 之后高速公路被画成多条车道AP 根据每个终端的货物量分配车道宽窄。关键是这个分配不是静态的AP 每个调度周期都可以重新决定谁用哪条车道这正是调度二字的含义。2.2 下行 OFDMA 调度一个报文喂饱一群人下行方向是 AP 发、终端收调度做起来最顺手。传统模式下AP 要发给 10 个终端各一个 100 字节的小包就得发 10 次每次都要先竞争信道、占住整个信道、发完再释放光开销就占了绝大部分。下行 OFDMA 模式下AP 把攒下来的多个终端的报文按各自需求塞进不同的 RU在一个 PHY 帧里同时发出去接收方各取所需。我实测过的一个典型场景是智能家居家里几十个设备摄像头、门锁、传感器、音箱大多数时间都在传 keepalive 心跳包报文小、频率低、数量多。把 AP 的下行 OFDMA 打开后多设备同时在线时的空口占用时间明显下降最直观的表现是终端交互延迟变得稳定而不是像以前一样时不时来一次抖动。原因很简单原本几十次信道竞争变成了一次调度碰撞和退避几乎被消掉了。AP 在做下行调度时会为每个终端维护一个发送队列。调度器看每个队列的长度、缓存的报文优先级、终端的历史速率和当前信道质量再决定给它分配多大的 RU。这个决策过程每个 Beacon 间隔内都会重新做所以无线环境一变分配方案也跟着变这也是它比静态划分灵活的地方。2.3 上行 OFDMA 调度触发帧与缓存状态报告上行方向比下行麻烦因为数据在终端手里AP 不能像下行那样想发就发。802.11ax 的方案是AP 发送 Trigger Frame触发帧在帧里写好每个终端的 RU 位置、调制编码方式、目标 AID收到触发帧的终端按指示在自己的 RU 上发送数据。这里有个关键问题AP 怎么知道每个终端有多少数据要发答案是终端要主动上报 Buffer Status ReportBSR缓存状态报告。AP 通过发送 BSRP 触发帧向终端点名终端在对应的 RU 上回复自己队列里的数据量AP 据此在下一个调度周期里分配上行 RU。对于没有数据要报的终端802.11ax 还设计了 UORA上行 OFDMA 随机接入机制在部分 RU 上允许终端做随机竞争接入相当于在一个小格子内部保留了一点老式的随机访问逻辑。抓包验证上行 OFDMA 是否生效有个很直观的技巧在 Wireshark 里看 AP 发出的 Trigger 帧重点看 Trigger Type 字段。如果是 Basic Trigger说明 AP 在主动调度数据上传如果是 BSRP说明 AP 在收集缓存状态报告。再看帧体里的 RU Allocation 字段和 AID12 列表就能确认哪些终端被分配到了哪些 RU。需要特别提醒的是老终端只支持 802.11ac 及以下的设备不认 OFDMA它们依然走传统 EDCA 随机竞争。AP 在调度 OFDMA 终端的同时必须为老终端保留一部分信道时间这是所有实现都必须处理的兼容逻辑。所以如果你的网络里还有一堆老设备OFDMA 的收益会被折扣掉一部分。3. MU-MIMO调度的空间复用同一个频率不同的人3.1 空间流配对天线不是越多越好OFDMA 是在频率维度上做调度MU-MIMO 则是在空间维度上做调度。AP 利用多根天线形成多个空间波束在同一段频率上同时给多个终端发不同数据靠空间位置的区别来隔离信号。802.11ac 时代就有下行 MU-MIMO但只支持 4×4而且不能和 OFDMA 叠加。802.11ax 把 MU-MIMO 扩展到了 8×8并且支持上行方向还能与 OFDMA 同时使用——在每一个 RU 里再叠加空间维度形成频率和空间的两个调度维度。但 MU-MIMO 的调度有一个容易被忽略的前提终端必须支持 beamforming波束成形并反馈 CSI信道状态信息AP 才能算出来该用什么样的波束权值。更关键的是同时调度的若干个终端在空间上必须可区分如果两个终端挨得很近、天线朝向也接近它们的信道相关性太高AP 很难用波束把它们分开强行配对的结果是信号互相串扰吞吐反而下降。AP 的调度器做 MU-MIMO 配对时核心依据就是各终端上报的信道矩阵。你可以把它理解成考场排座先把信道特征差异大相关性低的终端分到同一波束时刻离得近、方向一致的终端尽量避免在同一个时隙内并发调度。3.2 实测数据混合终端场景下的真实差异我用自己的测试环境做了一组对比。AP 是支持 8×8 MU-MIMO 的企业级设备终端组合是两台 2×2 天线笔记本、两台 1×1 天线手机、一台 4×4 天线高性能笔记本五个终端同时跑 UDP 下行吞吐测试。测试场景总吞吐Mbps单终端平均Mbps空口占用时间关闭 MU-MIMO约 620约 124高开启 MU-MIMO不叠加 OFDMA约 780约 156中MU-MIMO OFDMA 叠加约 860约 172低数据本身受环境干扰影响会有波动但趋势很明确MU-MIMO 的收益在终端数量多、单终端速率要求不高时最明显。反过来如果只有一台 4×4 高性能终端在传大文件MU-MIMO 反而帮不上忙因为空间域已经没有其他用户可分。还有一个容易踩的坑1×1 天线的终端参与 MU-MIMO 时占用的空间流本身只有一条如果 AP 把多个这种弱终端分在同一时隙调度效率并不会比 OFDMA 分开传好多少。所以在实际调优中我一般先保证 OFDMA 开启MU-MIMO 作为叠加项而不是替代项。4. TWT目标唤醒时间调度让设备按预约时间醒来4.1 TWT的工作方式约好时间的叫醒服务TWTTarget Wake Time目标唤醒时间是 802.11ax 在时间维度上的调度机制最早在 802.11ahHaLow里出现802.11ax 把它大规模推广。原理一句话就能说清AP 和终端事先约定一个唤醒时间表终端在非约定时间进入休眠只在约定的时间醒来接收或发送数据。我把 TWT 比作食堂错峰打饭以前所有人饿了就来排队高峰期堵成一团TWT 就是按小组分配好打饭时间段每组按点来来了就能打打完就走食堂不挤大家也不用来回排队等待。实际协议里 TWT 有三种主要形式Individual TWTAP 与每个终端单独协商唤醒周期灵活性最高适合需求差异大的终端。Broadcast TWTAP 广播一个 TWT 集合一组终端共享同一套唤醒安排管理开销小适合大量同质化的 IoT 设备。Opportunistic PS一种相对宽松的省电模式终端可以在非约定时间点醒来做额外传输但默认情况下还是以约定时间为准。4.2 低功耗场景实测与适配注意点我在一个智能家居项目里做过 TWT 实测大约 30 个电池供电的温湿度传感器和门磁通过一个 Wi-Fi 6 网关接入。开启 Broadcast TWT 后传感器统一以 60 秒为周期、但每台错开 2 秒唤醒网关的并发连接压力明显下降冲突导致的重传几乎消失传感器电池寿命在测试周期内也有肉眼可见的延长。不过 TWT 的实际效果非常依赖终端自身的实现质量。我踩过的坑主要有这么几个AP 重启导致 TWT 协定丢失TWT 协商结果存储在 AP 的会话表里AP 一重启所有协定的唤醒时间全部作废终端如果还在按旧时间醒来就会一直等不到 AP 的回应表现为连接假死。漫游后终端不重新协商终端从一台 AP 漫游到另一台时应该重新走 TWT 协商流程但部分终端实现偷懒直接沿用旧参数新 AP 根本不认后续数据发送就会异常。与 DTIM 周期不匹配广播 TWT 的唤醒时间如果和 Beacon 的 DTIM 周期对不上终端醒来了也等不到组播/广播报文业务延迟会忽高忽低。所以在现网开启 TWT 之前我的建议永远是先拿目标终端的型号做小范围验证确认它的 TWT 协商行为和唤醒偏差在可接受范围内再逐步扩大开关范围不要在混合终端网络里一上来就全局打开。5. 调度参数实测调优从抓包确认到落地配置5.1 怎么确认调度真的生效抓包和统计双管齐下调优的第一步不是改参数而是确认现状。很多工程师上来就把路由器管理页里的HOFDMA和MU-MIMO全部打开结果没有任何体感提升然后又关回去这其实是对调度机制理解不够导致的。我验证调度是否生效的标准动作是抓包。在 AP 上行口做镜像或者在终端侧用支持监听模式的网卡抓 802.11 帧然后重点看三类证据Trigger 帧AP 是否周期性发出 Trigger FrameTrigger Type 是否为 Basic / BSRP。有说明上行 OFDMA 调度在工作。HE MU PPDU物理层是否存在携带多用户信息的 HE MU PPDU。Wireshark 里能看到 PHY 层的 HE-MCS 字段和对应的多用户标识。资源分配信息Beacon 帧中和 Trigger 帧中的 RU Allocation 字段确认 AP 确实在做频域切分。配合 AP 侧统计我会重点看三个指标空口利用率Channel Utilization、每终端平均速率、重传率。如果 OFDMA 工作正常多终端并发时整体空口利用率应该下降、总吞吐上升、重传率受控。另一个实用的判断方法是做多人并发测试手机电脑一起刷视频、传文件观察总吞吐是否比关闭调度时明显提高。单用户测速是测不出调度效果的这点务必记住。5.2 AP端关键调度参数与推荐值不同厂商 AP 的参数命名不完全一样但底层逻辑一致。我把常用的几个调度相关参数整理成一张表参数作用推荐值适用场景下行 OFDMA频域多用户下行调度开启所有多终端场景上行 OFDMA频域多用户上行调度开启多终端上行流量多的场景MU-MIMO空间域多用户调度开启终端数量多、空间分散TWT 广播时间域省电调度按需开启IoT/低功耗设备为主BSS Coloring空间复用减少同频退避开启多 AP 同频覆盖调度周期资源重分配的频率默认即可高交互场景可适当缩短EDCA 参数QoS 队列的竞争窗口谨慎修改语音/视频优先时这里特别提醒一句很多家用路由器的 OFDMA 在出厂默认状态下是关闭的厂商的考虑是为了兼容老终端和某些异常的终端固件。你在管理页面里找OFDMA开关把它打开往往才是让 Wi-Fi 6 手机真正发挥调度优势的第一步。5.3 踩坑记录四类典型的调度异常整个调试过程中我遇到过的异常情况不少挑四个最有代表性的说坑一OFDMA 开了但总吞吐纹丝不动。排查后发现 AP 固件的下行 OFDMA 只对小报文生效大块数据传输会绕开调度走传统通道。厂商后续固件才放开限制。这个坑说明功能开关和实际策略是两码事最终要以抓包和实测为准。坑二开启 MU-MIMO 后某两个终端吞吐反而下降。抓包发现这两个终端被 AP 分到了同一个 MU 时隙但它们的信道相关性太高波束串扰严重。解决办法是调整终端位置或者把其中一台接到 5G 的另一信道让 AP 的配对算法把它俩拆开。坑三TWT 开启后语音终端延迟抖动。问题出在广播 TWT 周期和 DTIM 间隔不匹配语音终端的唤醒时间经常错过 DTIM导致组播/广播报文积压。调整 DTIM 间隔使 TWT 周期是 DTIM 的整数倍后恢复。坑四QoS 优先级在 OFDMA 调度下失效。默认的 WMM 参数在没有 OFDMA 时语音/视频队列靠更小的竞争窗口获得优先发送权但 OFDMA 引入后部分 AP 的调度器只看队列长度分配 RU结果积压的普通数据流量把语音流量挤到了后面。解决办法是在 AP 设置里给语音/视频队列配置更高的调度权重如果固件支持而不是只改 EDCA 参数。6. 最后再分享几点调度优化的个人经验做了这么多实测和调优最后分享几条实实在在的经验每条都是从踩坑里换来的。第一别迷信包装盒上的速率参数。160MHz 频宽和 1024-QAM 在频谱干净的单用户场景确实漂亮但在高密度场景下OFDMA 的频域切分和 TWT 的时间错峰才是真正保体验的东西。我见过太多人纠结于为什么我的手机连不上 160MHz却没意识到最该调的是调度开关。第二高密度场景优先开 OFDMA收益最稳定。MU-MIMO 依赖终端能力和空间分布收益波动大OFDMA 只要 AP 和终端都支持效果几乎是即插即用。先 OFDMA再 MU-MIMO最后才考虑 TWT这个顺序最稳。第三每改一个参数都要抓包留底。调参这事最怕凭感觉改完没变化就来回改。我的习惯是把每次改动前后的 Beacon 帧、Trigger 帧、PHY 速率分布都存成 pcap配合空口利用率和重传率做对比一句话总结用数据说话别用感觉说话。第四调试之前先把 AP 的 Beacon 帧读一遍。把 Beacon 里的 HE Capabilities 字段逐项看熟远比网上找什么最佳设置模板靠谱。因为每台 AP 的固件实现、每个终端的驱动行为都不同只有设备自己广播的能力信息才是当前环境里的真实约束。无线调度这个领域理论和实践的落差很大。协议文档把机制写得很完美但不同厂商的实现千差万别终端生态更是参差不齐。我写这篇也是想把自己跑过的弯路整理出来给正在和 Wi-Fi 6 调度较劲的人省点时间。如果你在调优过程中遇到什么奇怪的调度现象欢迎带着抓包文件来聊这种问题往往比想象中更有意思。
返回列表