Fast BSS Transition

1.协议介绍

IEEE802.11r(Fast BSS Transition)定义了STA在同一移动域 (MD)中的不同AP之间漫游时的交互细则,提供了实现BSS快速切换的标准。802.11r快速漫游实现方法为:STA首次关联MD内的AP时,利用802.1x认证获得的主会话密钥(MSK,由于该密钥为认证者和申请者共享,也称为成对主密钥PMK)和MD内各个AP的R1KH_ID计算出不同的PMK_R1分发给MD内的其它AP;STA切换AP时,STA直接利用之前发送到目标AP上的PMK_R1协商出成对临时密钥(PTK)和组临时密钥(GTK),以此缩短漫游切换时间,避免再重复进行耗时的802.1x认证。

2.秘钥体系

802.11r则将密钥管理分为三层,三层密钥分别为PMK_R0,PMK_R1,PTK。PMK_R0和PMK_R1的计算是80211r特有的。

PTK的计算方式与80211i的计算方式也有所不同,80211i是通过伪随机函数(PRF)展开PMK来获得PTK,而80211r则是通过密钥派生函数(KDF)来展开PMK,KDF函数实际上是PRF的变种。
    1).PMK_R0为第一层密钥,它由MSK(PMK)或PSK推演出来,由PMK_R0密钥持有者保存(即R0_KH和S0_KH)。
    2).PMK_R1为第二层密钥,它由R0KH和S0KH共同推演而来,由PMK_R1密钥持有者保存(即R1KH和S1KH)。
    3).PTK为第三层密钥,它是由R1KH和S1KH共同推演而来。R0KH和R1KH为认证者端的结构,与之对应的S0KH和S1KH为客户端的结构。

组网要求加密方式相同,同一个AP的不同频段,ESS网络的不同AC都有自己的MAC,且唯一,MD中记录这个ESS/BSSID的R1KH_ID,然后ROKH+SOKH计算出PMK_R1,R0KH将PMK_R1分发给所有R1KHs,保证同一个MD中所有AP/AC都有个与该STA对应的PMKH_R1,当获取不到PMK_R1时,可能新增了AP或者MD中的这个AP挂了,因为PMK_R1有根据MAC地址计算,所有PMK_R1唯一。漫游时,获取到PMK_R1后基本上可以确定具体的STA切换到具体某个AP上了,装载PTK就漫游成功了。所有要特别注意初始关联,会有信息登记到MDIE

3. FT认证过程

    FT初始化关联是指STA要接入MD中AP的第一次关联,是后面进行快速漫游切换的前提。如果STA支持802.11r,它就会在(Re)Association_Requese帧中加入移动区域信息单元(MDIE);如果支持IEEE802.11i就会加入健壮安全网络信息单元(RSNIE)。当IEEE802.1x认证通过后(如果是PSK方式则没有这一步),STA和AP就会进行4次握手。握手完毕后IEEE 802.1x的受控端口打开,FT的三层密钥结构建立。

  1. AP在Beacon帧和Probe Response帧里添加所属移动域的信息(MDIE)和RSNIE,告知STA本AP的相关信息;
  2. STA与AP进行802.11链路认证,认证方法为OPEN,而不是shared key或FT(FT验证算法只用于Over_the_air方式的快速切换);
  3. STA进行关联操作,如果STA支持80211r则会在关联报文中添加MDIE,如果支持80211i则添加RSNIE,AP收到assoc req帧后会拿这两个信息元素和自身的MDIE,RSNIE对比(也就是写入Beacon帧里的MDIE),如果不一致会导致关联失败,关联成功后,AP向STA发送assoc resp帧,并告知STA其R0KH_ID和R1KH_ID。为以后生产三层密钥(PMK_R0,PMK_R1,PTK)做准备;
  4. 关联成功后则进行802.1x的验证(为PSK则跳过这个步骤),802.1x验证完成后认证者将MSK发给STA(由于该MSK由双方共享,故也称为PMK)。
  5. 收到MSK后的R0KH和S0KH开始计算PMK_R0和PMKR0Name,同时废除以前的,与当前STA相关的PMK_R0安全关联,随后遍历MD内的R1KH_ID计算出PMK_R1安全关联并发布给所有的R1KH(FT-PMK-R1-SA-PUSH)。
  6. 在FT-INIT-GET-R1_SA阶段,R1KH从R0KH获取到PMK_R1后,随后计算随机值Anonce,接下来开始四次握手。

STA在和TargetAP进行FT时,首先进行auth验证交互:
步骤一:Auth报文中的FTAA代表该验证请求帧的验证算法为FT,而不是Open和shared key;帧中的MDIE必须和Target AP自身的MDIE一致,否则会导致验证失败;同样的,如果PMKR0name不可用或者R0KH(这里的R0KH_ID必须是进行初始化关联阶段所获得的R0KH_ID)不可达,同样会报错。

目标AP的R1KH利用PMKR0Name和帧中的其它信息计算出PMKR1Name。如果AP没有PMKR1Name标识的Key(PMK_R1),R1KH就会从STA指示的R0KH获得这个Key。目标AP收到一个新的PMK_R1后就会删除以前的PMK_R1安全关联以及它计算出的PTKSAs。STA和目标AP计算PTK和PTKName时需要用到PMK_R1,PMKR1Name,ANonce和SNonce。认证完成后,若是在TIE(Reassociate Deadline )时间到期前未收到重关联帧,那么目标AP就要将PTKSA删除。如果目标AP在重关联时间[TIE(Reassociate Deadline )]到期前没有从STA那里收到Reassociation Request帧,AP就将PTKSA删除。

如果目标AP经过计算找不到PMK_R1,则向R0KH发送请求,R0KH计算出PMK_R1后,将PMK_R1SA发给R1KH。R1KH随后计算随机值Anonce,并通过3.7式计算出PTK,返回一个Auth response帧给工作站。

步骤二:

Auth response帧中的R0KH_ID必须和Auth request帧中的一样,都为初始化关联时的R0KH_ID。R1KH_ID为target AP的R1KH_ID;PMKR0name用于找到对应的PMK_R1,其余字段用于确认。收到auth response帧后,S1KH进入利用3.7式计算出PTK,如此一来,双方都有了共同的PTK。

随后是重关联阶段:

重关联请求帧里的PMKR1Name、ANonce、SNonce、MIC值、R1KH_ID和R0KH_ID都是为了与AP端确认,AP端会将自身的值与这些信息比较,如果发现不同,关联就会失败。Target AP收到请求帧并且验证无误的话,回复Reassoc response帧给STA,帧内带有加密后的GTK,STA可以用PTK解密获取GTK。重关联完成后,802.1x受控端口打开。

4. 测试方法

使用多台wlr4125进行测试,配置相同的无线参数

00:0B:C0:03:14:C9  192.168.1.1

00:0B:C0:03:14:2A  192.168.1.2

00:0B:C0:03:12:71  192.168.1.3

88:ae:07:9c:f3:eb      sta (iphone6)

4.1测试方法(测试过程STA使用wifi魔盒查看丢包率及切换时间)

4.1.1) sta与192.168.1.1进行初始连接(后台查看进行4次握手)

4.1.2) sta远离192.168.1.1靠近192.168.1.2(后台查看进行认证,重关联后使用FT不进行4次握手)

4.1.3) sta远离192.168.1.2靠近192.168.1.3(后台查看进行认证,重关联后使用FT不进行4次握手)

4.1.4) sta远离192.168.1.3靠近192.168.1.1(后台查看进行认证,重关联后使用FT不进行4次握手)

  4.2.测试结论

使用80211r初次关联后,后续在其他节点进行切换时发生ieee80211x过程不会进行4次握手,使用wifi魔盒测试发现sta在各AP之间进行切换时丢包率及切换时间与其要检测到的目标AP信号有关,信号强则无时延及无丢包,信号弱则切换时间及丢包率较大。(测试时使用了各AP之间信道完全差看及各AP均设置相同信道进行测试验证)

5. FT无线配置参数

Ieee80211r        

mobility_domain  

ft_over_ds       

ft_psk_generate_local 

reassonciation_deadline

nas_identifier

r0_key_holder

r1_key_holder

r0kh

r1kh

pmk_r1_push

Ieee80211r             开启ieee80211r协议

reassonciation_deadline  重关联超时时间,超过该时间段仍未关联上则会进行初始化连接

nas_identifier           标识身份可与当前AP r0身份ID相同

r0_key_holder                    r0身份ID

r1_key_holder                    r1身份ID

mobility_domain       移动域 ,根据该字段来判断AP是否属于同一个快速切换的移动域内,所有的AP该字段值需保持一致

ft_over_ds        切换方式

ft_over_ds = 0使用Over_the_air方式(STA直接和target AP通信)

ft_over_ds = 1使用Over_the_ds方式(STA通过current AP与target AP通信)

ft_psk_generate_local 生成PMK_R1的方式

  ft_psk_generate_local=1 各AP进行自己计PMK_R1由各AP

  ft_psk_generate_local=0 各AP的PMK_R1由初始AP进行计算后通过有线下发到各AP,由各AP进行本地保存,移动域内所有AP均需要通过有线连接在一起

ft_psk_generate_local为0时需要设置一下参数

r0kh  r0身份ID列表

r1kh  r1身份ID列表

pmk_r1_push 是否需要将PMK_R1进行下发

ft_psk_generate_loca=0时必须pmk_r1_push=1

ft_psk_generate_loca=1时必须pmk_r1_push=0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值