Wi-Fi网络的一个极其重要的特点就是移动性。例如,一个人可以在使用Wi-Fi电话进行通话或是从服务器上下载大数据量的文件时穿过一幢建筑物。用户设备内部的Wi-Fi无线电可以从一个接入点漫游至另一个接入点,这样就提供了无缝连接。至少,这是我们所希望实现的!

过去,我曾遇到过漫游的问题,所以我决定做一些测试,来看看其中的究竟。我尤其感到好奇的是漫游实际上有多快,以及它是否对无线应用造成破坏。

我的测试配置包含两个接入点,一个接入点(AP-1)设置为信道1,另外一个(AP-2)设置为信道6。其它设置都采用缺省值,比如信标间隔为 100毫秒,屏蔽RTS(请求发送)/CTS(允许发送)功能,等等。两个接入点被安装在一幢典型的办公建筑上,通过每一个接入点的广播蜂窝提供最低25分贝的信噪比,且蜂窝间有20%的重叠。这都是些无线语音应用的工业标准。在我的测试中,漫游客户端是一台内置了Centrino Wi-Fi 广播(Intel 2915ABG)的笔记本电脑。

当手持无线客户端站立在离AP-1几英尺距离内的时候,我使用AirMagnet笔记本电脑分析仪(通过另一个Wi-Fi卡插入笔记本电脑的PCMCIA插槽)来确保我与AP-1之间保持关联。然后,我开始从服务器向笔记本电脑进行FTP大文件传输,并且使用AirMagnet分析仪测量802.11数据包的踪迹。在整个测试过程中下载文件时,我向AP-2移动,直到我直接靠近它。有了数据包踪迹,我就能查看802.11数据帧的交换情况,计算漫游的延时,还能知道FTP流是否遭到明显的破坏。

一旦客户端广播决定重新关联,它就会向AP-1发送一些802.11解除关联帧来开始重新关联的过程。然后,广播发出802.11探测请求以在客户端的有效信号范围内获得接入点的响应。这样做是为了确保客户端广播能够在决定与哪个接入点关联之前收到这些候选的最新信息(信标信号强度)。

AP-2响应了802.11探测请求。因为仅有的响应来自AP-2,客户端射频卡决定与AP-2关联。正如我们所预料的,与AP-2关联的过程包括802.11认证帧和关联帧的交换(基于802.11公开系统认证)。重新关联的过程用时68毫秒,是指自客户端广播向AP-1发送第一帧解除关联帧起、到客户端收到来自AP-2的最终关联帧(响应)为止所经历的时间。还不错,我发现了一些与其它厂家生产的接入点相似的数值。

然而,整个漫游过程会中断无线应用,并且时间还挺长。例如,据我的测试,在射频卡开始重新关联过程(即,向AP-1发出第一个解除关联帧)之前,FTP过程平均暂停5秒。我测量的802.11数据包的踪迹显示,在放弃传输数据并开始与AP-2重新关联之前,客户端广播向AP-1反复重新传输数据(由于信号强度弱)。这些数量可观的重新传输打断了文件下载过程,使我测试中的实际漫游延迟达到平均5秒!我测试所使用的Centrino射频卡因为这种问题而受人诟病,但是我发现这也是大多数其它射频卡的问题。

生产厂商或许可以使射频卡拖延重新关联,来避免过早的、额外的重新关联(接入点跳跃?)。不幸的是,这样会中断一些无线应用。如果你打算部署移动无线应用,那么务必测试漫游如何影响你的应用。

各型号的射频卡在漫游过程中的工作方式各异,这缘于专有机制,而且,一些卡比其它卡要好些。只要记住漫游所需时间可能比预想的要长得多,所以在部署无线局域网应用的时候,尤其是无线语音,它对超过100毫秒的漫游延迟是无法接受的。

Wi-Fi漫游的工作原理的更多相关文章

  1. Android系统Recovery工作原理之使用update.zip升级过程分析(一)

    通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...

  2. keeplived工作原理及配置

    一.keepalived简介及作用 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 keepal ...

  3. 【科普】Web(瓦片)地图的工作原理

    [译者按:在看MapBox Guides文档时,看到这篇 How do web maps work?,这篇文档通俗易懂地阐述了Web地图是如何工作的,其实更偏向讲瓦片地图的工作原理,鉴于之前很多人不了 ...

  4. Wifi模块的工作原理

    http://www.wifitop1.com/news/content-98.html 在无线网络领域里面,无线wifi是最火的名词.对于串口wifi模块的工作是什么呢?串口wifi模块又有什么功能 ...

  5. Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...

  6. WireGuard 教程:WireGuard 的工作原理

    原文链接:https://fuckcloudnative.io/posts/wireguard-docs-theory/ WireGuard 是由 Jason Donenfeld 等人用 C 语言编写 ...

  7. keepalived的工作原理解析以及安装使用

    一.keepalived keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalived官网http://www.keepali ...

  8. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  9. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

随机推荐

  1. repeater 分页显示数据

    表名:ChinaStates 控件:Repeater 查询代码DA: public class ChinaStatesDA { private DataClassesDataContext Conte ...

  2. CSS3中的transform变形

    在CSS3中,用Transform功能可以实现文字或图像的旋转.缩放.倾斜.移动这四种类型的变形,这四种变形分别使用rotate.scale.skew和translate这四种方法来实现.将这四种变形 ...

  3. Android 聊天气泡

    网上搜到的只有一篇是自定义的TextView,其使用比较麻烦,所以采用大众化的方法--使用9.png来实现. 这里主要介绍sdk tool的draw9patch.bat的使用. 这个bat执行文件打开 ...

  4. zepto源码研究 - zepto.js-3 (常用的工具)

    pluck: /** * 根据是否存在此属性来获取当前集合,返回一组属性值 * @param property * @returns {*} */ pluck: function(property){ ...

  5. 武汉科技大学ACM:1007: 文本编辑器

    Problem Description YB打算写一个功能强大的文本编辑器,并取一个炫酷拉风,高端优雅的名字,比如“YB牌文本编辑器”之类的.既然功能强大,那肯定得有个查找功能吧.但是他在完成这个功能 ...

  6. class类名的管理

    var a=document.querySelector(".div1"); a.classList.remove("div2");//减掉一个 a.class ...

  7. Linux下Fork与Exec使用

    Linux下Fork与Exec使用   一.引言 对于没有接触过Unix/Linux操作系统的人来说,fork是最难理解的概念之一:它执行一次却返回两个值.fork函数是Unix系统最杰出的成就之一, ...

  8. PLSQL developer连接不上64位Oracle的解决方法

    PLSQL developer连接不上64位Oracle的解决方法 64位下装Oracle 11g 64位,PLSQL Developer使用出现问题. 问题描述: 登录对话框中,数据库下拉框为空: ...

  9. jquery keyup 在IOS设备上输入中文时不触发

    今天做一个异步查询功能的时候发现在IOS设备上查询中文时keyup没有触发,在其他设备上时可以的,后来在stackoverflow上找到下面这种解决方法,贴出来算是抛砖引玉了. $h_input.on ...

  10. Struts2请求处理流程及源码分析

    1.1 Struts2请求处理 1. 一个请求在Struts2框架中的处理步骤: a) 客户端初始化一个指向Servlet容器的请求: b) 根据Web.xml配置,请求首先经过ActionConte ...