螃蟹WiFi驱动中的Band Steering功能
Band Steering功能简介
在双频路由器中,支持2.4G和5G频段同时接入。当把两个AP的SSID设为相同时,终端(如手机、笔记本)的无线网卡在连接指定的SSID时,可能会连到不同的频段上。一般地,5G频段干扰少,我们会优先连接5G(也可以反过来,优先2.4G),这样,只要用路由器上的Band Steering功能,就可以让终端接入时优先使用指定的频段。
基本原理
我们知道,无线终端在一个环境中,首先会进行scan扫描,找到不同信道中的AP。这是通过在不同的信道中主动或被动的接收AP发出的beacon、probe response帧,获得AP信息。然后通过auth、association帧进行认证和关联,建立连接。Band Steering基本原理就是,在优先的频段上,对终端发出的帧进行回应,在非优先频段则有条件地回应,从而使得终端能优先连接到指定的频段上的AP。
Band Steering的算法可以由厂家自定义,没有统一的标准。各种算法大同小异,这里以RTL的驱动代码为例,简单讲一下基础算法。
首先定义prefer band和other band,代表指定优先使用的频段(5G或2.4G)和另外一个频段。数据结构有preferband队列和block队列,其中preferband队列存储已确认支持优先频段的终端信息,block队列存储在other band中暂时被拒绝连接的终端信息。模块中还有几个定时器:aging表示终端在优先频段中正常处理的时间长度;timerX是终端在block队列中阶段1的时长;