wifi快速漫游实例分析

wifi快速漫游实例分析

公司使用realtek的wifi方案做mesh路由器,这段时间一直在研究这个方案的快速漫游(Fast Transition BSS,简称FT)功能。今天把这段时间的收获记录一下,免得以后忘记。

FT就是802.11r的内容,所谓快速,就是比正常漫游少一些消息互换过程,能节省几百毫秒,详细说明,可参考Fast Transition BSS原理简介。对于某些特殊的实时系统,可能有一定意义,对一般上网看小视频帮助不大。不过既然方案支持,而且出于兼容性考虑,是需要把这个功能调出来的。

FT分初次接入和漫游两个流程。分初接入就是终端第一次接入当前BSS环境的过程,其与AP之间的交互流程与普通认证关联类似,Open System的Auth消息,Association消息请求和应答,然后4-way eapol消息认证。
在这里插入图片描述
FT漫游分over-the-air和over-the-ds两种,就是直接与目标AP通信还是基于原来AP作为中介与目标AP通信两种。

在这里插入图片描述
在这里插入图片描述
这里我们还要清楚FT体系中KEY管理架构,如下图所示:
在这里插入图片描述
realtek的FT功能需要驱动和应用层共同实现。其中应用层运行后台程序ftd,处理驱动发出的事件,与其他AP上的ftd进行通信,实现信息同步和事件传递。驱动与应用ftd之间通信signal通信,使用ioctl操作从驱动获取信息和对驱动进行控制。大致的机制描述如下图:
在这里插入图片描述
不同AP中的FTD通过RRB(Remote Request Broker)方式通信。802.11协议中有对此通信方式作描述,这里简单介绍一下。消息类型号为0x890d,对应以太网包中的ether type;payload type为1,从table H-1可看出,payload type为其他值,对应其他协议。消息的payload如表table 13-2所示。其中FT packet type为0是请求,1是应答。

在这里插入图片描述
在这里插入图片描述
realtek的FTD程序利用rrb消息,并扩展了FT Packet Type。增加了100、200、201、202四个类型,分别为INFORM、PULL、PULL_RESP、PUSH操作。其中的PULL/PUSH推拉操作,实现不同AP之间FTD信息的同步。在一个BSS中,不同FTD充当不同角色,有一个FTD作为r0kh角色,其他为r1kh角色。

在这里插入图片描述
如上图所示,pull/push操作为:
1)PUSH操作:当STA1首次连上作为r0kh的AP1时,它会生成PMK-R0,只存放在AP1中;同时为AP1、AP2、AP3生成PMK-R1-ap1、PMK-R1-ap2、PMK-R1-ap3,其中PMK-R1-ap1直接存放在AP1中;PMK-R1-ap2和PMK-R1-ap3通过扩展的rrb消息分别push到AP2和AP3。这样,当STA1漫游到AP2或AP3时,能正常认证通过。
2)PULL操作:当STA2首次连上AP2时,AP2中没有其对应的PMK-R1,于是通过扩展rrb消息向AP1发出pull操作请求;AP1根据请求消息中的信息生成PMK-R1,并通过rrb消息回应给AP2。AP2就可以对STA2进行认证。

realtek方案中,关于PMK-R0、PMK-R1的计算,是在驱动中实现。应用程序FTD通过ioctl调用功能SIOCGIFTGETKEY,获取PMK-R1,然后加密后在rrb消息中传递。

当一个STA从一个AP快速漫游到另一个AP时,因为快速漫游过程不会对原来AP发出disauth或disassoc消息,所以原来的AP还保留着STA的连接信息。为了及时释放资源,可通过扩展的rrb消息——INFORM,来通知原来AP进行STA资源释放。在这里插入图片描述
总结:realtek方案通过一个FTD进程负责rrb消息的收发,实现FT漫游。本文主要讲述了over-the-air的方式,对于over-the-ds方式,也是通过rrb消息的传递实现,原理较简单,这里不作赘述。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两只勤劳的蜜蜂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值