wifi漫游(Roaming)802.11kvr 全协议梳理

张开发
2026/4/13 11:11:40 15 分钟阅读

分享文章

wifi漫游(Roaming)802.11kvr 全协议梳理
概念无线漫游是指无线设备如手机这种station在移动过程中能够自动从当前连接的无线AP切换到另一个信号更强的AP。切换过程中用户感知的网络连接未中断切换后IP地址不变我们也可以称之为无缝隙的wifi切换。我们这里不考虑使用ACAP的方案先基于基础漫游版本漫游软件框架无线漫游示意图简单点比喻在使用手机通过的过程中随着手机的位移连接到了信号更好的基站此时通话继续进行并未感觉到基站变化带来的卡顿为什么需要无线漫游解决单一路由器信号覆盖不足因为单个无线路由器信号范围有限穿墙后衰减严重通过多个接入点可实现全屋或大面积区域覆盖保障移动设备体验如果没有漫游手机从客厅走到卧室可能会一直连着客厅的弱信号导致网速极慢、卡顿直至彻底断开后重新搜索连接导致体验差漫游使用到了那些技术协议漫游的关键技术802.11k/v/r 协议802.11k/v/r三协议的作用与功能802.11k邻居报告帮助设备提前了解周围有哪些可用的接入点也就是提供邻居AP列表缩短扫描时间802.11v网络辅助当设备连接信号过差时网络可主动引导它切换到更优的接入点解决终端设备的“粘滞”问题802.11r快速BSS切换相当关键简化了设备在新接入点上的认证过程大幅缩短切换时间从数百毫秒降至几十毫秒对于网络通话、视频会议等对延迟敏感的应用尤为重要我们再换个方式理解如上三个协议11k协议通过收集网络中的ap信号强度、信噪比及干扰等细腻系帮助设备判断何时需要切换11v协议提供了无线网络管理功能协调漫游切换过程使得设备可以漫游到目的优选AP11r协议实现了快速BSS切换简化了认证过程相当于提升了连接速度三个协议组合解决了触发切换漫游困难、切换AP后连接wifi慢、切换AP选择慢的问题802.11k802.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 Requestwlan.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 5AP 收到请求后会根据自身存储的邻居信息比如周围其他 AP 的信道、BSSID 等回复邻居报告响应帧这个帧中会包含一个或者多个ap信息的列表客户端在漫游前主动获取无线AP信息报告通过这个报告客户端在信号变弱时就知道应该优先尝试切换到哪个 AP而无需浪费时间去扫描所有信道802.11v全称为“无线网络管理”Wireless Network ManagementWNM协议不同的action code代表了不同的功能场景Action code功能列举如下包含了哪些主要功能呢802.11v协议的核心就是这两大功能网络引导漫游BTM和增强的省电管理这里我们不讨论省电管理因为我们讨论的是漫游模式所以我们在这里说明的是漫游场景下的交互在漫游功能中的作用AP可以主动建议或要求终端漫游到特定的目标AP11v协议中的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 7BTM Response只能STA发出wlan.fixed.category_code 10 and wlan.fixed.action_code 8802.11r协议全称快速漫游协议Fast Roaming或者称为“快速BSS转换”协议主要目的非常明确大幅缩短无线终端在漫游过程中的认证延迟效果其作用是将漫游切换时间从传统的几百毫秒缩短到50毫秒以内从而让用户几乎无法察觉的“无缝”体验如何加速漫游切换的终端切换到新AP时要重新进行完整的身份认证和密钥协商四次handshake这个过程通常耗时数百毫秒是造成漫游卡顿的主要原因802.11r协议则通过“提前握手”的机制加速了这一环节看起来就像无需认证和握手一样快速漫游类型这里有两种实现方式Over-the-AirOver-the-DSOver-the-Air (OTA)这是最常见、效率也更高的方式STA直接与目标AP通信跳过标准流程中耗时的重认证环节如何查看ap是否支持11R协议支持802.11r的AP会在其发出的Beaconwlan.fc.type_subtype 0x08帧或Probe Response帧中宣告这一能力Mobility Domain或看AP回复 FT Authentication Responsewlan.fc.type_subtype 0x0b是否带FT如何查看无线终端是否支持11R协议Reassociation Request帧(wlan.fc.type_subtype 0x02)应该带有Fast BSS Transition字段FT Authentication Requestwlan.fc.type_subtype 0x0b中应该带有Fast BSS Transition字段11v协议交互Over-the-AirOver-the-DS从上面3协议的介绍如果需要高体验的漫游上述协议缺一不可以RRM帧为例的帧发送进行流程梳理从以前的文章中可以看出所以会进行hostapd 初始化控制接口控制接口的初始化函数核心作用是创建一个通信通道让外部程序如 hostapd_cli、wpa_cli 能够与正在运行的 hostapd 进程进行交互hostapd 控制接口的核心处理函数每当通过控制接口发送命令时这个函数就会被调用来处理命令负责识别客户端发送的命令调用相应的处理函数构造并发送 802.11k 的 Radio Measurement Request 帧信标测量请求给指定的客户端函数是hostapd中驱动层发送 Action 帧的封装函数作用是统一处理 Action 帧的发送逻辑特别是处理 PublicAction 帧的 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支持情况若成功快速漫游抓包中可以看到四次握手阶段吗不能

更多文章