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

概念

  • 无线漫游是指无线设备(如手机这种station)在移动过程中,能够自动从当前连接的无线AP切换到另一个信号更强的AP。
  • 切换过程中,用户感知的网络连接未中断,切换后IP地址不变,我们也可以称之为无缝隙的wifi切换。

我们这里不考虑使用AC+AP的方案,先基于基础漫游版本

漫游软件框架

无线漫游示意图

简单点比喻:在使用手机通过的过程中,随着手机的位移,连接到了信号更好的基站,此时通话继续进行,并未感觉到基站变化带来的卡顿

为什么需要无线漫游?

  1. 解决单一路由器信号覆盖不足:因为单个无线路由器信号范围有限,穿墙后衰减严重,通过多个接入点,可实现全屋或大面积区域覆盖
  2. 保障移动设备体验:如果没有漫游,手机从客厅走到卧室,可能会一直连着客厅的弱信号,导致网速极慢、卡顿,直至彻底断开后重新搜索连接,导致体验差

漫游使用到了那些技术协议

  • 漫游的关键技术:802.11k/v/r 协议

802.11k/v/r三协议的作用与功能:

  1. 802.11k(邻居报告):帮助设备提前了解周围有哪些可用的接入点,也就是提供邻居AP列表,缩短扫描时间
  2. 802.11v(网络辅助):当设备连接信号过差时,网络可主动引导它切换到更优的接入点,解决终端设备的"粘滞"问题
  3. 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响应的模式
邻居报告请求流程:
  1. 客户端请求(wlan.fixed.category_code == 5 and wlan.fixed.action_code == 4)
    客户端主动向当前连接的AP发送一个 邻居报告请求帧
  2. 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帧为例的帧发送进行流程梳理

  1. 从以前的文章中可以看出

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

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

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

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

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

  6. 函数是hostapd中驱动层发送 Action 帧的封装函数,作用是统一处理 Action 帧的发送逻辑,特别是处理 Public

    Action 帧的 BSSID 特殊规则

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



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


  9. 调用到内核代码:

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


  11. 驱动代码:

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

疑问

  1. 准确判断一个设备(AP或终端)是否支持802.11r协议?
    Tag: Fast BSS Transition是核心证据,而Fast BSS Transition over DS: 0x1是一个重要的子功能标志,所以最好以Fast BSS Transition为标志判断11r支持情况
  2. 若成功快速漫游,抓包中可以看到四次握手阶段吗?
    不能
相关推荐
MAXrxc4 小时前
VRRP初体验
网络
qq_260241234 小时前
将盾CDN:移动网络环境下的安全接入技术
网络·安全
咖喱o5 小时前
策略路由
网络
white-persist5 小时前
【vulhub spring CVE-2018-1270】CVE-2018-1270 Spring Messaging 远程命令执行漏洞 完整复现详细分析解释
java·服务器·网络·数据库·后端·python·spring
听到微笑5 小时前
MCP传输协议演进:从SSE到Streamable HTTP
网络·网络协议·http
徒 花5 小时前
HCIP学习05 链路聚合(Eth-Trunk)+ VRRP
服务器·网络·学习·hcip
kyle~5 小时前
工程数学---机器人变化矩阵求解
网络·矩阵·机器人
爱学习的小囧5 小时前
VCF 9 实验室网络部署全攻略:从硬件连接到配置实操
开发语言·网络·php
xiaoyaohou116 小时前
015、Neck结构改进(三):路径聚合网络(PANet)的增强策略
网络·yolo