4、双频并发调度策略
双频并发,圈内人常说的DBDC(Dual Band Dual Concurrent),是WiFi芯片吞吐量突破的关键一战。说白了,就是让一颗芯片同时工作在2.4GHz和5GHz两个频段上。听起来简单,做起来坑不少。
我最早接触DBDC是在做一款企业级AP芯片的时候。客户要求单芯片同时支持两个频段,还要保证互不干扰。嗯,那会儿真是踩了不少坑。今天我把这些经验整理出来,希望能帮你少走弯路。
4.1 DBDC架构的核心设计
DBDC架构,本质上是在一颗芯片内部集成了两套独立的射频链路。一套跑2.4G,一套跑5G。两套链路共享基带和MAC层资源,但物理层各自独立。
关键设计要点:
- 独立的射频前端:2.4G和5G的PA、LNA、滤波器必须分开。混在一起会出大问题。
- 共享的基带处理:基带资源可以复用,但调度器要能区分两个频段的数据流。
- 统一的MAC管理:两个频段的MAC层需要协同工作,不能各自为政。
我记得有一次,团队为了省成本,试图让2.4G和5G共用一部分射频链路。结果呢?互调干扰严重,吞吐量直接腰斩。从那以后,我再也不敢在射频前端上省钱了。
4.2 负载均衡策略
负载均衡,说白了就是让两个频段各司其职。2.4G覆盖广、穿墙强,但速率低、干扰大。5G速率高、干扰小,但覆盖范围有限。怎么分配?我个人的习惯是:
- 按终端能力分配:支持5G的设备优先连5G,老旧设备留在2.4G。
- 按业务类型分配:视频流、大文件传输走5G,IoT设备、低速率业务走2.4G。
- 动态调整:根据实时信道质量,把终端在两个频段间迁移。
避坑指南:我曾经在项目中遇到过终端频繁切换频段的问题。原因是负载均衡算法太激进,终端刚连上5G,信号稍微波动就被踢回2.4G。后来我加了一个滞回阈值,信号低于-70dBm才触发切换,问题就解决了。
4.3 频段切换算法
频段切换,是DBDC里最容易出问题的环节。切换太快,终端会频繁掉线。切换太慢,负载均衡又失效。我常用的算法是:
// 频段切换决策伪代码
if (当前频段信号 < 阈值_TH1) {
if (目标频段信号 > 阈值_TH2) {
if (切换次数 < 最大切换次数) {
执行切换();
} else {
保持当前频段();
记录异常日志();
}
}
}
你想想看,为什么要有最大切换次数限制?因为有些终端在信号边缘地带会反复切换,这叫「乒乓效应」。我见过最夸张的一次,一个终端在10秒内切换了20多次,直接把AP搞崩溃了。
我个人建议,切换算法要加入三个关键参数:
- 信号稳定时间:至少持续2秒以上才触发切换
- 切换间隔:两次切换之间至少间隔5秒
- 历史记录:记录每个终端的切换历史,避免重复切换
4.4 多链路聚合(MLO)在WiFi 7中的应用
MLO是WiFi 7的重头戏。它和DBDC最大的区别是什么?DBDC是两个频段独立工作,MLO是把两个频段绑在一起用。说白了,MLO让终端可以同时通过2.4G和5G传输数据,吞吐量直接翻倍。
我记得第一次看到MLO的测试数据时,确实被震撼到了。单链路跑800Mbps,双链路聚合直接冲到1.5Gbps。但别高兴太早,MLO的实现难度比DBDC高一个量级。
MLO实现难点:
- 时序同步:两个频段的数据包必须精确对齐,否则接收端无法重组。
- 缓存管理:两个链路的传输速率不同,缓存策略要动态调整。
- 重传机制:一个链路丢包,另一个链路要不要重传?这是个问题。
我在项目中遇到过MLO的一个典型问题:2.4G链路干扰大,频繁丢包,导致整个聚合链路性能下降。后来我们加了一个「链路健康检测」机制,当某个链路的丢包率超过10%时,自动降级为单链路模式。嗯,效果还不错。
4.5 实战建议
说了这么多,总结几条实战经验:
- 先做好DBDC,再考虑MLO:DBDC是基础,MLO是进阶。基础不牢,地动山摇。
- 重视射频隔离:2.4G和5G的射频链路之间要做好隔离,否则互调干扰会让你头疼。
- 算法要留有余地:负载均衡和切换算法都要有保护机制,防止极端情况。
- 多测试真实场景:实验室环境太理想了,一定要在真实的家庭、办公室环境中测试。
最后说一句:双频并发调度,说到底是个系统工程。射频、基带、MAC、算法,哪个环节出问题都不行。我做了十几年WiFi芯片,最大的体会就是:别想着一步到位,先跑通,再优化,最后才是极致性能。