WDS 的两种实现方式
转自:http://blog.chinaunix.net/uid-26527046-id-3627627.html
WDS 的两种实现方式
WDS(Wireless Distribution System),无线分布式系统是指AP将BSS内的数据发往BSS外或者将BSS外数据收入BSS内。通过WDS,AP能够将BSS的范围进行扩展。
WDS链路的两端均为AP,如果把AP与BSS内的STATION之间的接口看做Access接口,那么可以把AP与其他AP之间的接口看做WDS接口。一个AP如果与多个外部的AP建立联系,则它就拥有多个WDS接口。
在Access链路上传输的数据帧只有3个地址域:DA,SA和BSSID。在WDS链路上传输的数据帧具有4个地址域:RA,TA,DS和SA。考虑AP内部的数据转发,总共有四种情况:
- 从Access接口进入,从Access接口发出。对于这种情况,进入AP的数据帧的DA就是本BSS内部其它STATION的地址,因此只需要在AP内桥接转发即可。
- 从Access接口进入,从WDS接口发出。不难看出,此时的关键是需要确定RA。RA其实就是对端AP的地址,因此它与WDS接口是对应的。所以,对于通过WDS转发的情况,关键是确定用那个WDS接口转发。
- 从WDS接口进入,从WDS接口发出。这种情况下虽然进入的数据帧有TA和RA,但仍然不能直接确定发出的数据帧的RA,即通过那个WDS接口发出。
- 从WDS接口进入,从Access接口发出。对于这种情况,AP能够根据进入数据帧的DA判断出该帧是发往本BSS内的STATION的,所以它能够根据本地维护的STATION表把数据帧传递到正确的Access链路上。
可见,关键的问题在于数据帧需要从WDS发出时,怎么确定RA,也就是怎么选择WDS接口的问题。有以下两种实现方法。
1. 二层桥接AP
一个数据帧进入AP后,究竟是通过Access接口发出还是通过WDS接口发出是根据DA来决定的。如果DA是本BSS中的某个STATION,则从Access口发出;否则说明这个数据帧发往其它BSS中的STATION的,因此需要由WDS口发出。
如果能够知道每个WDS接口的对端AP中的STATION列表,那么就可以根据DA来决定该数据帧应该通过哪个WDS接口发出,从而就能够确定RA。
这种AP要求STA在向AP发送数据时,必须准确地指定DA。对于本BSS中的其他STA,这个地址很容易获得;而如果是其他BSS中的DA,这个地址就比较难以得到。因此要求AP具备网桥功能,将同一IP子网中其他BSS中的STA的信息也传递到本BSS中。
按照802.11f,每个AP在STATION关联、离开后都会通知其他AP,因此理论上网络中的AP都可以获得所有其它AP的完整STATION列表,从而可以实现桥接转发。
此外,AP之间还应该能够转发APR请求、ARP响应等。
按照这种方式实现的AP为网桥AP。
网桥AP需要支持802.1D规定的特性,具备学习能力、STP等。
2. 三层路由AP
上面一种方法是从横向来考虑,如果从纵向来考虑,则可以采用路由的方法。一个数据帧进入AP后,如果能在本BSS内转发,则通过Access口发出;否则需要通过WDS接口发出,但选择哪个WDS接口由更上层的功能决定。
为每个WDS接口设定一个IP子网地址范围(A.B.C.D/M),每个进入的数据帧根据其IP地址来决定应该往哪个WDS接口发出。
按照这种方案实现的WDS转发是三层的路由转发,这种AP是路由AP。
这种AP并不要求STA在向AP发送数据时准确指定DA。尤其是当该数据要发往DS时,STA可能只知道对方IP地址,却不知道MAC地址。
以上两种方案各有优缺点。
桥接转发的好处是效率较高,直接在MAC层就可以转发了。其缺点是灵活性差,只能适用于小规模网络。为了实现比较完备的桥接功能,需要在AP中实现802.1d网桥,具备智能式学习能力和生成树算法STP。
另外,桥接只能保证链路层通,而不能保证网络层通。因此,如果是不同的网段相连,需要路由。
路由转发的好处是可以采用成熟高效的路由算法,而且灵活性高,适用于大规模网络。不过对于小规模网络,采用路由AP可能有些浪费。
WDS 的两种实现方式的更多相关文章
- Web APi之认证(Authentication)两种实现方式【二】(十三)
前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...
- Android中BroadcastReceiver的两种注册方式(静态和动态)详解
今天我们一起来探讨下安卓中BroadcastReceiver组件以及详细分析下它的两种注册方式. BroadcastReceiver也就是"广播接收者"的意思,顾名思义,它就是用来 ...
- Android中Fragment与Activity之间的交互(两种实现方式)
(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...
- JavaScript 函数的两种声明方式
1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...
- Redis两种持久化方式(RDB&AOF)
爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...
- struts2+spring的两种整合方式
也许有些人会因为学习了struts1,会以为struts2.struts1与spring的整合也是一样的,其实这两者相差甚远.下面就来讲解一下struts2与spring的整合两种方案.(部分转载,里 ...
- easyui datagride 两种查询方式
easyui datagride 两种查询方式function doReseach() { //$('#tt').datagrid('load', { // FixedCompany: $('.c_s ...
- 【Visual Lisp】两种出错处理方式
两种出错处理方式:一种是对出错函数进行重定义,一种是对错误进行捕捉处理. ;;============================================================= ...
- 两种include方式及filter中的dispatcher解析
两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...
随机推荐
- 【转】MYSQL入门学习之四:MYSQL的数据类型
转载地址:http://www.2cto.com/database/201212/175536.html 一.整型 www.2cto.com 整数类型是数据库中最基本的数据类型 ...
- js笔记----(运动)淡入淡出
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- vsftp 使用匿名帐号登陆
1.正常安装. 2.改配置文件:vi /etc/vsftpd/vsftpd.conf #允许匿名用户登录FTP anonymous_enable=YES #设置匿名用户的登录目录(如需要,需自己添加并 ...
- iOS高仿app源码:纯代码打造高仿优质《内涵段子》
iOS高仿app源码:纯代码打造高仿优质<内涵段子>收藏下来 字数1950 阅读4999 评论173 喜欢133 Github 地址 https://github.com/Charlesy ...
- thinkphp隐藏中url的index.php
在本地进行测试 1.修改apache配置文件将如下代码#去掉 #LoadModule rewrite_module modules/mod_rewrite.so 在index.php 目录下新建文 ...
- 华东交通大学2016年ACM“双基”程序设计竞赛 1007
Problem Description ACM小学妹在今天的暑假训练结束后,想看球赛放松一下.当他打开电脑时查询到联盟今天直播N场球赛,每场球赛的起止时间(S1,E1),(S2,E2),...,(SN ...
- 解析xml,几种方式
市面上解析xml分两种方式,1.dom 2.sax ,xml解析常见的一共有三种开发包,1.jaxp 2.jdom 3.dom4j,这三种方式最常用的是dom4j,jaxp和jdom很少有人用, ...
- 【Java】List集合按数量分组
有时候,我们需要将大的集合按指定的数量分割成若干个小集合.(比如:集合作为SQL中IN的参数,而SQL又有长度限制,所以需要分批分几次进行查询) 虽然此需求感觉不常见,但偶也写过几次类似的方法,故记录 ...
- sh和bash的区别
在鸟哥的私房菜的一书中,介绍了UNIX的版本以及众多的SHELL版本. 早在UNIX年代,发展者众多,所以由于shell依据发展者的不同就有许多版本,比如sh,C SHell,K SHell,还有TC ...
- ZooKeeper报错
运行python 出现exception=java.io.IOException: Can't get master address from ZooKeeper; znode data == nul ...