Wi-Fi漫游的工作原理
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漫游的工作原理的更多相关文章
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)
通过分析update.zip包在具体Android系统升级的过程,来理解Android系统中Recovery模式服务的工作原理.我们先从update.zip包的制作开始,然后是Android系统的启动 ...
- keeplived工作原理及配置
一.keepalived简介及作用 Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能 keepal ...
- 【科普】Web(瓦片)地图的工作原理
[译者按:在看MapBox Guides文档时,看到这篇 How do web maps work?,这篇文档通俗易懂地阐述了Web地图是如何工作的,其实更偏向讲瓦片地图的工作原理,鉴于之前很多人不了 ...
- Wifi模块的工作原理
http://www.wifitop1.com/news/content-98.html 在无线网络领域里面,无线wifi是最火的名词.对于串口wifi模块的工作是什么呢?串口wifi模块又有什么功能 ...
- Android系统Recovery工作原理之使用update.zip升级过程分析(一)---update.zip包的制作【转】
本文转载自:http://blog.csdn.net/mu0206mu/article/details/7399822 这篇及以后的篇幅将通过分析update.zip包在具体Android系统升级的过 ...
- WireGuard 教程:WireGuard 的工作原理
原文链接:https://fuckcloudnative.io/posts/wireguard-docs-theory/ WireGuard 是由 Jason Donenfeld 等人用 C 语言编写 ...
- keepalived的工作原理解析以及安装使用
一.keepalived keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalived官网http://www.keepali ...
- 菜鸟学Struts2——Struts工作原理
在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...
- 【夯实Nginx基础】Nginx工作原理和优化、漏洞
本文地址 原文地址 本文提纲: 1. Nginx的模块与工作原理 2. Nginx的进程模型 3 . NginxFastCGI运行原理 3.1 什么是 FastCGI ...
随机推荐
- FastReport 动态修改连接字符串
代码如下: Report rp = new Report(); rp.Load(@"Print\aa.frx"); rp.Dictionary.Connections[0].Con ...
- hdu 1869
题意是给m组人物关系,然后判断是否符合六度分离,代码主要就是三个for那里 然后要记得后面判断的时候是大于7,这题除了Florde算法,还有另外一种算法,不过我没记.... #include < ...
- python 下的数据结构与算法---7:查找
一:线性查找(Sequential Search) 线性查找可以说是我们用的最早也会是用的最多的查找方式了.其对应的是线性数据结构,回顾一下线性数据结构,其特点是先后加入的元素是有顺序的,相邻的.而线 ...
- java沙箱机制原理
参考文档如下: http://www.2cto.com/kf/201012/79578.html
- 杀掉linux所有进程的命令
ps -ef|grep 'opt/*/tomcat_ssi'|grep -v "grep"|awk '{print $2}'|xargs kill -9
- url的非法字符有哪些
需要过滤的特殊字符及字符串有: net user xp_cmdshell /add exec master.dbo.xp_cmdshell net localgroup administrators ...
- php中iconv函数的一个小bug--转载
iconv转换字符集很好用,但是有时候你会发现iconv转换的时候会返回false或者空字符串,严格说来这算不上是iconv的问题,这其实是字符集的问题,但是实际编码中应该算是iconv的bug了. ...
- Java内存分配和GC
Java内存分配和回收的机制概括的说,就是:分代分配,分代回收. 对象将根据存活的时间被分为:年轻代(Young Generation).年老代(Old Generation).永久代(Permane ...
- 分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
BOOL型变量:if(!var) int型变量: if(var==0) float型变量: const float EPSINON = 0.00001; if ((x > ...
- jS放大镜效果
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="demo4.aspx.cs& ...