首页 > 编程知识 正文

无线wifi漫游的基本原理及搭建,wifi无缝漫游测试

时间:2023-05-04 18:00:27 阅读:236213 作者:3445

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消息的传递实现,原理较简单,这里不作赘述。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。