首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Roaming:无感知的切换

漫游是WLAN技术的一个重要应用。

有了漫游技术,可以实现真正的移动办公。

特别是快速漫游技术,可以让用户在不同的地点快速、安全的接入不同的AC,不同的AP,而对用户的工作却无任何影响。

漫游的意思,在目前普遍使用的AC+FITAP的WLAN组网中,就是一个接入STA从一个AC下的AP,迅速连接到另一个AC下的AP或者从相同AC下的AP迅速连接到另一个AP上。

漫游必须快速而安全,漫游的条件大概有:

(1)漫游前后的AP具有相同的SSID;

(2)STA(网卡)具有漫游能力;

(3)如果是不同的AC间,有正确的数据同步机制;

漫游是一种客户端行为,无论是IEEE或者Wi-Fi联盟都没有指出一个无线客户端应该什么时候、采取什么样的方式或者选择哪些接入点去进行漫游。

不同的终端厂家的实现都是私有的,且肯定存在差异。

漫游实际上就是客户端发现了更合适的AP,连接新的AP之后自己可以获取更好的服务质量;但是在可能需要漫游之前,客户端可以通过一些方法来提高当前连接的质量而不是立刻去漫游。

(1)数据重传:802.11协议标准规定,在无线客户端和AP之间的每一个单播数据帧都需要一个ACK响应;

所以,在没有成功接收到ACK的时候发送端应该进行数据重传。

(2)数据速率转换:802.11abgn以及

802.11ac、802.11ax都支持一系列的数据发送速率,当无线客户端或者AP检测到无线连接的质量降低的时候,可以尝试使用更低的速率来发送数据。

漫游的时机

至于什么时候应该漫游了,虽然每个厂家的无线终端实现不尽相同,但是有一些通用的条件还是存在的,大概有如下几点:

(1)数据重传:达到了最大数据重传门限,这是一个公共的漫游标准;

(2)RSSI:当RSSI低于门限的时候客户端可以选择去漫游;

(3)SNR:当SNR低于门限的时候客户端可以选择去漫游;

(4)负载均衡:达到了某些负载均衡的条件,即为了各个AP的接入均衡,某些AP负载过大,需要客户端漫游到其他负载较小的AP上;

信道扫描

漫游时客户端一定要经过网络扫描的过程,这样它才能选择出能够为自己提供更好服务的AP去漫游。

(1)Active scan:

客户端通过发送probe request来实现。客户端在某个信道发送probe request来等待AP的probe response,主动扫描的关键点是客户端应该在这个信道上等待多长时间,802.11协议并没有指出这个等待时间,但是最短也应该能够完整接收到一个probe response,否则可能会影响到此功能的实现。

Active scan的实现原理:

实现过程是:

(a)跳变到一个信道;

(b)发送probe request;

(c)等待一个时间;

(d)跳变到下一个信道;

(e)整理所有扫描到的信息;

各个厂家的实现都遵守这个实现,唯一不同的可能就是等待时间略有不同。

大多数厂家实现的Active scan都是相同的,下面所说的这两种实现方式也是通用的:

(a)Diredted probe:

STA送出probe request使用了特定的SSID,这样只有符合要求的AP才会给出应答;

(b)Broadcast probe:

STA送出的probe request使用广播的SSID,实际上就是一个空的SSID,这样它能够接收到的响应就会很多了。

(2)Passive scan:

客户端停留在某个信道等待网络内的AP周期发出的Beacon。因为涉及到Beacon周期的问题,一般厂家的实现都是100ms的周期,所以客户端至少要等待100ms在这个信道。

(3)漫游扫描

在信道扫描的过程中,客户端是不能够和AP进行数据交互的,所以应该尽量将这种情况的影响降到最低,而漫游的时候需要经过扫描才能进行:

(a)Background scan:

即客户端在漫游之前进行扫描。这允许客户端在决定漫游之前将自己可以接入的AP的信息扫描存储,当有必要进行漫游时直接使用。

(b)On-roam scan:

实际上对照Background scan,就是扫描的时机不同,这个扫描是在客户端已经决定要漫游的时候进行的。那么就可以采取一些方法来减小漫游的时延了,如11g只扫描非重叠信道。

虽然终端厂家实现各不相同,但是还是存在一些共同点的:大多数厂家实现的都是执行Active scan和On-roam scan。

快速漫游PKC

PKC:Proactive Key Caching,也叫Opportunistic Key Caching,即OKC。

在OKC方式中,STA和AP总会存储一个PMKSA。当STA漫游时,STA会动态计算出PMKID放在关联请求中发送给AP,AP使用相同的计算公式计算出PMKID与STA发送来的进行比较。

由于PMKSA是相同的,因此STA和AP计算出的PMKID也一定是相同的。

之后AP就会直接与STA进行4次握手协商密钥。

它是业界一种通用的快速漫游的方法,每次STA要漫游时要重新计算PMKID。

根据802.11i标准定义,PMKSA包括:

-PMK(32 bytes)

-BSSID(6 bytes)

-STA的MAC(6 bytes)

-其他

根据PMKSA的信息计算PMKID:

PMKID=HMAC-SHA1-128(PMK,"PMK Name"BSSIDSPA)

因此对每个BSSID都会重新计算一个PMKID。

如下PMKID,在终端发生漫游时,发给将要漫游AP的关联消息中携带了此PMKID域,则可以进行快速漫游。

但是前提是如果是AC间漫游,需要有密钥同步机制。

快速漫游SKC

苹果的终端不支持OKC,所以其快速漫游使用SKC的方式

最初是Cisco针对苹果终端实现的漫游方式,目前基本所有WLAN厂商都支持了。

在SKC方式中,AP和STA都保存之前使用的PMKID。

当STA做漫游时,它发现新AP对应的PMKSA和PMKID它已经有了,就直接将此PMKID发送给AP,希望AP能够想起这个STA。

此时由于AP保存着此PMKID,二者比较一致后直接开始4此握手协商密钥,完成STA的快速漫游。

简单的说,就是STA记住原来关联成功时使用的PMKID,后续继续使用这个PMKID。所以,在这种方法的漫游过程中,STA可能会断开重新进行连接。

理论上使用SKC方式设备应该缓存多个PMKID的信息,因为设备无法确认使用这种方式的终端到底使用的是哪次产生的PMKID,而OKC方式就不用,因为每次都是重新生成的。

快切802.11r

快切,即快速切换,指的是802.11r的内容。

802.11r在2008年成为标准,以Cisco的CCKM为基础形成的协议。

一个无线终端连接在无线网络上,典型的过程是无线MAC层连接、802.1x认证、四步握手;

上面所说的快速漫游,无论是OKC还是SKC,都是省略了802.1x认证的过程,即客户端只有MAC层连接和四步握手的过程,从而节省了漫游接入的时间。

而802.11r则更进一步,省略了四步握手的过程,将密钥协商放在了MAC层连接中完成,从而节省了802.1x认证和四步握手两个过程,只留MAC层连接一个过程,具体实现见802.11r的介绍,后面我会写。

漫游的时间

基本所有使用无线设备的客户都会对漫游时间有要求,而普遍的要求大概是漫游的时间一定要在50ms以内,或者换一种说法,不能丢失超过3个连续的包以上,那么这个50ms的时间是指什么时间?

漫游时间,指的是漫游Client向原始接入AP发送的最后一个数据报文到向漫游目标AP发送的第一个数据报文的时间间隔。

有些厂家支持OKC或者SKC,宣称漫游时间是20ms以内,理论分析上是可能的,但是实际测试基本没可能,除非是非加密的客户端,所以应该算作忽悠的行列。如果使用的是802.11r的方法是可以实现的。

至于不能丢失超过3个连续的包,这个主要是针对实时媒体业务的要求,如果漫游时间小于50ms,与一般的媒体打包时间对照,则不会连续丢失3个包以上,所以其同漫游时间的要求是一致的。

漫游时间内的丢包

当客户端发生快速漫游的时候是否可以空口抓包来确认丢失了多少个报文么?

答案是否定的,实现不了。

客户端在漫游开始的时候基本上存在两种处理方法,如下:

(1)首先向原始连接的AP发送去认证帧,然后关联漫游AP;

(2)直接向漫游AP发送重关联帧(或者认证帧);

如果客户端采用的是第一种方式,那么从发送去认证帧开始这个客户端就不会和设备交互数据报文了(密钥协商报文除外),也就是开始丢包了;

如果客户端采用的是第二种方式,那么在漫游目的AP接收到客户端的重关联消息之后,初始连接的AP一般的实现就会删除这个客户端的数据结构,否则会有环路的危险,而漫游目的AP此时还没有完成认证,所以也就是从此时报文就开始丢失了

当然,一些特殊如果,如缓存报文,不包含在内。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180210G06CYQ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券