概念
- 无线漫游是指无线设备(如手机这种station)在移动过程中,能够自动从当前连接的无线AP切换到另一个信号更强的AP。
- 切换过程中,用户感知的网络连接未中断,切换后IP地址不变,我们也可以称之为无缝隙的wifi切换。
我们这里不考虑使用AC+AP的方案,先基于基础漫游版本
漫游软件框架

无线漫游示意图

简单点比喻:在使用手机通过的过程中,随着手机的位移,连接到了信号更好的基站,此时通话继续进行,并未感觉到基站变化带来的卡顿
为什么需要无线漫游?
- 解决单一路由器信号覆盖不足:因为单个无线路由器信号范围有限,穿墙后衰减严重,通过多个接入点,可实现全屋或大面积区域覆盖
- 保障移动设备体验:如果没有漫游,手机从客厅走到卧室,可能会一直连着客厅的弱信号,导致网速极慢、卡顿,直至彻底断开后重新搜索连接,导致体验差
漫游使用到了那些技术协议
- 漫游的关键技术:802.11k/v/r 协议
802.11k/v/r三协议的作用与功能:
- 802.11k(邻居报告):帮助设备提前了解周围有哪些可用的接入点,也就是提供邻居AP列表,缩短扫描时间
- 802.11v(网络辅助):当设备连接信号过差时,网络可主动引导它切换到更优的接入点,解决终端设备的"粘滞"问题
- 802.11r(快速BSS切换):相当关键,简化了设备在新接入点上的认证过程,大幅缩短切换时间(从数百毫秒降至几十毫秒),对于网络通话、视频会议等对延迟敏感的应用尤为重要
我们再换个方式理解如上三个协议:
- 11k协议通过收集网络中的ap信号强度、信噪比及干扰等细腻系,帮助设备判断何时需要切换
- 11v协议提供了无线网络管理功能,协调漫游切换过程,使得设备可以漫游到目的优选AP
- 11r协议实现了快速BSS切换,简化了认证过程,相当于提升了连接速度
三个协议组合,解决了:触发切换漫游困难 、切换AP后连接wifi慢 、切换AP选择慢的问题
802.11k
- 802.11k协议是IEEE 802.11无线局域网标准中的一个重要补充,全称为"无线资源测量协议" (Radio Resource Measurement, RRM)
作用
- 目标是在解决传统Wi-Fi网络中设备对周围环境"视而不见"的问题,通过让AP和客户端共享无线环境信息,从而优化网络性能,提升漫游体验
如何查看ap是否支持11K协议
beacon帧过滤:
wlan.fc.type_subtype == 0x08

- 查看Neighbor Report位是否被置为 1,如果为1,则说明该AP明确支持802.11k协议
Probe Response帧过滤:wlan.fc.type_subtype == 0x05

- 除了信标帧,AP也也在 探测响应(Probe Response)声明此能力
如何查看无线终端是否支持11K协议
在Reassociation Request帧:(wlan.fc.type_subtype == 0x02)
- 明确表示该设备实现了802.11k协议

- 支持详情

- 或者看association Request(wlan.fc.type_subtype == 0x00)帧:

协议交互
因为我们讨论的是漫游模式,所以我们在这里说明的是漫游场景下的交互
协议(Action Code)类型

必须知道11K的RRM(无线电资源测量)帧有哪些类型,才能在后面的例程中走下去
协议交互方向
- 11K协议中,邻居请求报告 的交互方向是双向的,也就是说既可以ap主动请求,也可以被请求

但在漫游中交互方向是客户端请求、AP响应的模式
邻居报告请求流程:

- 客户端请求(wlan.fixed.category_code == 5 and wlan.fixed.action_code == 4)
客户端主动向当前连接的AP发送一个 邻居报告请求帧

- AP响应(wlan.fixed.category_code == 5 and wlan.fixed.action_code == 5)
AP 收到请求后,会根据自身存储的邻居信息(比如周围其他 AP 的信道、BSSID 等),回复邻居报告响应帧,这个帧中,会包含一个或者多个ap信息的列表

客户端在漫游前主动获取无线AP信息报告,通过这个报告,客户端在信号变弱时,就知道应该优先尝试切换到哪个 AP,而无需浪费时间去扫描所有信道
802.11v
- 全称为"无线网络管理"(Wireless Network Management,WNM)协议

- 不同的action code代表了不同的功能场景:

- Action code功能列举如下

包含了哪些主要功能呢?
- 802.11v协议的核心就是这两大功能:网络引导漫游(BTM)和增强的省电管理
这里我们不讨论省电管理,因为我们讨论的是漫游模式,所以我们在这里说明的是漫游场景下的交互
在漫游功能中的作用
- AP可以主动建议或要求终端漫游到特定的目标AP,11v协议中的BTM帧,更是解决了传统wifi漫游中终端"粘滞"在弱信号AP上的问题
如何查看ap是否支持11K协议
- Extended Capabilities字段下可以看到BSS Transition support值是否被置为1
- 过滤条件:wlan.fc.type_subtype == 0x05

如何查看无线终端是否支持11V协议
- 在Reassociation Request帧(wlan.fc.type_subtype == 0x0002)或者看associationRequest帧(wlan.fc.type_subtype == 0x0000)中的ExtendedCapabilities字段下可以看到BSS Transition support的值

BTM协议交互
先给出交互流程(只能此方向)

- BTM Request只能AP发出(wlan.fixed.category_code == 10 and wlan.fixed.action_code == 7)

- BTM Response只能STA发出(wlan.fixed.category_code == 10 and wlan.fixed.action_code == 8)

802.11r
- 协议全称:快速漫游协议(Fast Roaming),或者称为"快速BSS转换"协议
主要目的
- 非常明确:大幅缩短无线终端在漫游过程中的认证延迟
效果:
- 其作用是将漫游切换时间从传统的几百毫秒 缩短到50毫秒以内,从而让用户几乎无法察觉的"无缝"体验
如何加速漫游切换的?
- 终端切换到新AP时,要重新进行完整的身份认证和密钥协商(四次handshake),这个过程通常耗时数百毫秒,是造成漫游卡顿的主要原因,802.11r协议则通过"提前握手"的机制加速了这一环节,看起来就像无需认证和握手一样
快速漫游类型
这里有两种实现方式:
- Over-the-Air
- Over-the-DS
Over-the-Air (OTA),这是最常见、效率也更高的方式,STA直接与目标AP通信,跳过标准流程中耗时的重认证环节
如何查看ap是否支持11R协议
- 支持802.11r的AP,会在其发出的Beacon(wlan.fc.type_subtype == 0x08)帧或Probe Response帧中宣告这一能力(Mobility Domain)

- 或看AP回复 FT Authentication Response(wlan.fc.type_subtype == 0x0b)是否带FT

如何查看无线终端是否支持11R协议
- Reassociation Request帧(wlan.fc.type_subtype == 0x02)应该带有Fast BSS Transition字段

- FT Authentication Request(wlan.fc.type_subtype == 0x0b)中应该带有Fast BSS Transition字段

11v协议交互
- Over-the-Air

- Over-the-DS

从上面3协议的介绍,如果需要高体验的漫游,上述协议缺一不可
以RRM帧为例的帧发送进行流程梳理
-
从以前的文章中可以看出

所以会进行hostapd 初始化控制接口

-
控制接口的初始化函数,核心作用是创建一个通信通道,让外部程序(如 hostapd_cli、wpa_cli )能够与正在运行的 hostapd 进程进行交互

-
hostapd 控制接口的核心处理函数,每当通过控制接口发送命令时,这个函数就会被调用来处理命令


-
负责识别客户端发送的命令,调用相应的处理函数

-
构造并发送 802.11k 的 Radio Measurement Request 帧(信标测量请求)给指定的客户端


-
函数是hostapd中驱动层发送 Action 帧的封装函数,作用是统一处理 Action 帧的发送逻辑,特别是处理 Public
Action 帧的 BSSID 特殊规则

-
hostapd 中 nl80211 驱动接口的函数指针表,是hostapd与底层wifi驱动之间的回调




-
nl80211 驱动中向内核发送 NL80211_CMD_FRAME 命令的核心函数。它的作用是通过 netlink 向 Linux 内核发送 802.11 帧



-
调用到内核代码:

-
Linux内核cfg80211子系统中处理 NL80211_CMD_FRAME 命令函数,负责调用驱动层的mgmt_tx回调函数



-
驱动代码:

-
最终调用到驱动的管理帧发送函数

疑问
- 准确判断一个设备(AP或终端)是否支持802.11r协议?
Tag: Fast BSS Transition是核心证据,而Fast BSS Transition over DS: 0x1是一个重要的子功能标志,所以最好以Fast BSS Transition为标志判断11r支持情况 - 若成功快速漫游,抓包中可以看到四次握手阶段吗?
不能