1. Roaming

Roaming指STA从一个AP associate到另一个AP(并不要求在同一ESS)。基本流程如下图。

Roaming process

数据传输是否会中断要看实际的实现(通常而言,同一个ESS中的Roaming应该是支持数据传输的连续性的)。图上的RSNA过程可能包括full 802.1X流程,是多帧的交互。可以看到,Roaming的流程由于包含大量帧的交互,耗时较多。

2. PMK caching & Pre-authentication

Faster roaming只应用于相同ESS下的Roaming,主要包括以下几种方式:PMK caching,OKC caching,pre-authentication,FT等。

802.11i定义了两种减少Roaming过程时间的方式——PMK caching和Pre-authentication。

PMK caching是指:当一个STA和AP完成了完整认证之后会生成对应的PMK和PMKID,这些信息放在一起就叫做PMKSA;该AP将PMKSA缓存;当STA和AP断开后并不直接删除该信息;当STA重新和该AP关联时,在reassociation request 帧中包含PMKID,如果AP验证过该PMKID,那么跳过802.1X认证,直接进入4-way handshake过程。PMK caching有一个很大的局限性,那就是只有当STA是Roaming到之前关联过的AP才起作用,所以可以称PMK caching技术是fast roaming back。

PMK caching

Pre-authentication:指当STA和ESS中的一个AP关联后,可以通过该AP和ESS中的其他AP完成802.1X认证,从而生成和其他AP的PMKSA并缓存。当STA向其他AP发出关联请求时,若PMK仍然有效,则跳过802.1X认证直接进入4-way handshake过程。Pre-authentication的一个问题是进行了太多无效的802.1X认证,缓存了太多无用的PMK:可能每个STA都存着ESS中所有AP的PMKSA,每个AP也存着所有连接过该ESS的STA的PMKSA。

pre-authentication

3. OKC & CCKM

由于802.11i定义的上述两种方式实在是不怎么好使,所以各产商根据标准中的PMK caching做了改进,例如OKC就是其一。当STA和ESS中的一个AP关联后,生成的PMK是整个MD共享的。当STA Roaming到另一个AP时,由于各自都已经有了PMK,因此不再需要进行802.1X认证。

OKC

此外,CCKM也是vendor的一个改进[1]。它和OKC的主要区别在于,其在reassoc交互时提供了nonce、MIC等信息用于PTK的产生,因此甚至省略了4-way handshake过程。

4. Meru solution[4]

Roaming过程无论多快,总会有个gap,这个gap短则十几毫秒,多则长达几秒。但是Meru这个厂商不走寻常路,选择了一种让Client不Roam的方式。

在传统的Roaming过程中,由于rssi的降低,信号减弱,STA会考虑Roam到在另一个channel上的AP中。换句话说,不同的AP工作在不同的channel,甚至是在不同的频段。这种方式称之为MCA(Multi-Channel Architecture),绝大多数的厂商都采用这种方案。而Meru则采用另一种方案,SCA(Single-Channel Architecture),即所有的AP都工作在同一信道上,当STA在ESS范围内移动时,由WLAN Controller控制哪个AP来处理STA的信息。而STA则发现不了其实是不同的AP在和自己互相通信。

5. FT[3]

FT在802.11r标准被定义。它将密钥分为几个层次:1)PMK-R0 2)PMK-R1 3)PTK。其中,PMK-R0是一个STA和一个MD(mobility domain,可以理解为一个ESS范围内)对应的;PMK-R1是一个STA和MD中的一个AP对应的;PTK则是临时会话密钥。当STA和MD中的一个AP关联之后,生成的PMK-R0由Authentication server保存,随后计算并分发各个AP的PMK-R1。R0KH即WLAN Controller,R1KH即ESS中的AP们。当STA准备Roaming到其他AP时,在authentication/reassociation帧中附带相关信息用于生成PTK,这样就省去了4-way handshake流程了。

FT 密钥层次

AP和STA在RSNIE的AKM中包含FT over 802.1X以表示对FT的支持。并且包含一个MD的tag,其中确定了该MD的ID以及FT的方式(over the air or over DS)[2]。在STA关联到某个MD的AP(original AP)后,AP的association response帧中存在一个FT BSS Transition Tag,其中包含了R0KH和R1KH的ID。当STA准备Roam到另一个AP(target AP)时,发起的authentication request帧中包含R0KH和其他信息(nonce,MIC等);target AP收到auth request后计算PTK,回复authentication response,其中包含R0KH,R1KH以及其他信息;STA收到回复后,同样计算PTK,并回复reassociation request;AP回复reassociation response,其中还额外包含GTK信息。

FT over the air

FT over DS和FT over the air的区别在于,STA和target AP之间的authentication是通过original AP传送Action frame(FT request,FT response)完成的。

6. 参考资料

[1] 802.11 WLAN Roaming and Fast-Secure Roaming on CUWN - Cisco

[2] CWSP-802.11r FT Association | mrn-cciew

[3] IEEE SA - IEEE 802.11r-2008

[4] The Power of Virtual Cell Wi-Fi

学一点Wi-Fi:Roaming相关推荐

  1. 大学生学python到底有没有有-为什么我会想建议每个大学生都学一点编程?

    原标题:为什么我会想建议每个大学生都学一点编程? 一个今年上岸.成功录取到中山大学的同学,昨天疯狂轰炸我: 他没想到导师主动联系他,让他参加非常重要的课题研究. "当初抱着试一试的心态学的编 ...

  2. 人人都要学一点深度学习(1)- 为什么我们需要它

    人人都要学一点深度学习(1)- 为什么我们需要它 版权声明 本文由@leftnoteasy发布于 http://leftnoteasy.cnblogs.com, 如需全文转载或有其他问题请联系whee ...

  3. 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

    学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 原文 学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践 感谢大家在上一篇 学一 ...

  4. wifi频率和zigbee干扰_浅谈ZigBee和Wi—Fi的共存和干扰

    龙源期刊网 http://www.qikan.com.cn 浅谈 ZigBee 和 Wi - Fi 的共存和干扰 作者:姜伟 朱凯 刘童 来源:<科技视界> 2013 年第 16 期 [摘 ...

  5. 串行异步通信_每天学一点/ 电工:PLC:串行通信

    每天学一点/ 电工案例:西门子PLC STEP7-SMARTPLC:串行通信 1. 并行通信与串行通信 并行通信以字节或字为单位传输数据,已很少使用.串行通信每次只传送二进制数的一位,最少需要两根线就 ...

  6. 比较802.11ac(Wi‑Fi 5)和802.11ax(Wi‑Fi 6)

    MIMO 802.11ac仅在下行模式下,支持多用户MIMO. 802.11ax不仅下行链路:也在上行链路支持MIMO功能,因此多个用户可以同时上传视频. 调制方法 802.11ax具有更高的调制方案 ...

  7. 学一点django基础

    学一点Django基础 目录 文章目录 目录 一.Django框架的介绍 Django的安装 Django框架开发 创建项目的指令 Django项目的目录结构 URL 介绍 视图函数(view) Dj ...

  8. 【Arcgis每天学一点】从无人机航测的DSM上提取准确的高程点

    最近,想着要分享一些Arcgis软件的使用心得,但却一直无从入手,不知道写点什么.实际上在各大平台上已经有了大量的Arcgis教程,不管对于初学者,还是有点基础想要进阶的,都可以找到很多的学习资源. ...

  9. 学一点SQL注入基础

    文章目录 学一点SQL注入基础 思维导图 注入原理 MySQL三种注释 MySQL三种注入方式 联合查询注入 确定字段数 常规步骤 sqlmap的使用 跨库注入 MySQL注入获取最高权限-文件操作 ...

  10. 学一点Redis基础

    文章目录 学一点Redis基础 **Redis介绍** **安装** **配置文件详解** **数据类型** **字符串类型(string)** **==位图操作bitmap==** **列表数据类型 ...

最新文章

  1. java文本框背景_background 设置文本框背景图
  2. python学习之路-第七天-python面向对象编程简介
  3. MySQL触发器 trigger学习
  4. [html] html5中的meta标签http-equiv属性有什么作用?
  5. C++ 学习杂谈:sizeof和sizeof(string)的问题
  6. scATAC-seq建库原理,质控方法和新R包Signac的使用
  7. 【IDEA工具】java通过IDEA打包项目
  8. css两张图片怎么合在一起_PhotoShop怎么把两张图片合成一张?怎么用ps把两张图片合成一张?...
  9. 与机器对话,阿里达摩院挑战新一代人机对话技术
  10. python 处理word 分页符、分节符
  11. 在波点音乐听周杰伦新歌专辑,一起“用音乐穿越”
  12. 倾斜摄影静态单体化 BIM模型调用解决思路
  13. JavaScript函子(随笔)
  14. 移植wxX11到开发板上
  15. html字数不同相同宽度的按钮,HTML_按钮在IE中两边被拉伸的 BUG,大家在写按钮(input、button) - phpStudy...
  16. 前端十年的思索:前端专业方向的尽头
  17. trainging contest#1(2011大连现场赛)C BY bly
  18. html css星级评分,纯css实现星级评分效果
  19. 干货分享 | 万字讲解Kafka 从基础到高级(附图讲解)
  20. office2003稿纸加载项的删除解决方法

热门文章

  1. 移动金融客户端应用软件备案、中国支付清算协会“聚合支付”业务备案、工业和信息化部网站备案系统(ICP备案)
  2. VOIP技术连载之一 VOIP简介
  3. bios中基本开机设置
  4. Python 使用 OpenCC 实现中文简繁转换
  5. 王之泰201771010131《面向对象程序设计(java)》第七周学习总结
  6. 全球最牛逼的并发架构,抖音排第二,它排第一!
  7. SAP采购定价过程-条件技术介绍
  8. 秦纪二 秦始皇帝二十年(甲戌,公元前227年)——摘要
  9. 2014年9月至2015年1月
  10. 【戏言、昔言、惜言】谭惜言写了一辈子的戏,真情假意,全在戏言里。