漫游扫描就是扫描同一个ESSID(SSID)下的所有AP,这里有一个方法可以加快这个进程,就是开启802.11k,802.11k是射频扫描协议。可以用来获取当前环境的信息。
开启802.11k后,漫游扫描可以得到秒级别的速度提升。
比如一个用户打着电话,从建筑的一侧走到另一侧,然后WIFI信号弱了,当到了-70dBm的时候,设备就会开启漫游。在802.11k开启的情况下,设备会发现同一ESSID的AP还工作在三个信道上。之后设备扫描这三个信道,如果确定信号强度足够,就实施漫游。而如果不开启802.11k,那么就必须逐个扫描各信道,以找到可以漫游的AP,速度会慢得多。
802.11k是通过管理帧neighbor report/response来获取周围的AP的信息的,包括BSSID以及channel信息。
reuqest是这么个格式:
包含了:category - 5 - Radio measurement
action-4- neighbor report request
dialog token-0
SSID parameter - SSID等
一个response的格式:
frame的长度因包含的AP的数量的不同而不同。每一个AP对应13个 bytes的Neighbor report, 包含了BSSID, Operating class以及Channel Number和PHY type。可以通过channel来减少漫游时的扫描量。
Ref: https://support.apple.com/en-us/HT203068