无线Mesh网络路由器的体系结构研究

2009-03-23 02:40朱建杨朱英宏
计算机时代 2009年1期

朱建杨 朱英宏 程 甲 廖 平

摘要:多网卡多信道技术是当前无线Mesh网络中的研究热点。利用多网卡多信道的技术可以大大提高网络的整体性能,但采用多网卡多信道技术的无线Mesh网络存在容易受到来自网络内部的自身干扰等问题。文章设计了一种无线Mesh网络的路由器体系结构,解决了两个关键领域的问题:第一,给出了能够使用一般硬件实现分离无线路由器(separated Wireless Router,简称SWR)的架构;第二,设计了一个集中式的信道分配算法,这个算法考虑了信道分配和路由的相互影响,从而能使网络达到最大吞吐量。

关键词:Mesh;分离无线路由器;RU;SWR;ETT

0引言

无线Mesh网络(Wireless Mesh Network,简称WMN)是一种与传统的无线网络完全不同的网络,是一种高速率、高容量的多点对多点网络。由于具有不需要集中式的网络管理和基础设施等特点,无线Mesh网在近年来受到越来越多的关注。为了提高WMN的稳定性及容量等,多网卡多信道技术被普遍应用,是当前WMN中的研究热点。但是多接口多信道技术的应用,也为研究工作带来了许多新问题。例如,多接口多信道的WMN容易受到来自外界和网络内部其它相同频率信道的无线干扰,导致网络吞吐量和稳定性的大幅度下降。如何有效地避免邻节点的干扰以及如何进行信道分配,已经成为当前WMN研究的关键技术之一。

Chandra和Bahl发明了一种被称为Multinet的多网卡体系结构。Multinet是专为有单一网卡的节点设计的。它把单一的物理网卡接到两个虚拟网卡中,一个虚拟网卡用于连接网络基础设施,另—个用于连接Mesh网络。但Multinet不能提供支持多信道间网卡转换的所有条件,有其一定的局限性。

Chereddi等人建议利用Linux内核的系统扩展来支持多网卡的信道切换。但是,他们没有考虑到信道分配和多网卡Mesh网部署的系统评估。

由于802.11提供了正交多信道,WMN路由器可装备多个网卡。通过把网卡调谐到正交信道上去,路由器之间可以进行受到最小干扰程度的通信,而且容量问题也可以得到减轻,本文以此设计了一种WMN路由器的体系结构。该体系结构包括硬件结构和软件结构两方面。

1硬件结构

常用的802.11无线网卡的自身干涉问题之所以发生,是常用网卡对相邻节点的影响,网卡内部电路串话和辐射泄漏敏感等问题引起的,另外还有硬件不理想的原因。Raniwala等人通过将网卡之间的天线分离来减少干涉的影响。然而,实验证明,当每个节点有多于两个网卡工作于相同的频率时,这个方法是无效的。

WMN硬件结构源于市场上最新型的路由硬件。在这种硬件中,模块化的设计使得一个路由单元可以支持不同的技术,从而使得无线路由器也能使用不同的无线技术,比如802.11和WiMAX。SWR是根据自身内部的干扰问题得来的。每个SWR包含三个网卡,每个网卡位于一个独立的处理节点(如图1)。

我们将一个网卡和它的处理节点定义为一个网卡单元(Ru)。网卡间通过超宽带无线技术(UWB)进行连接,从而构成一个内部回馈网络。一个需要通过相邻RU发送的包被回馈网络发送到该RU,然后该节点通过无线媒介将其发送。据观察,在SWR中安装常用802.11无线网卡并在其之间有3厘米的间隔距离时,所获得的吞吐量在信道间隔为40MHZ时只有51%,在信道间隔为最大的625MHZ时也低于80%。在大约0.5米或更大(由于硬件设计的需求,此距离应小于1米)的物理分隔时,自身干涉的影响能够有效地减小,而这种分隔在SWR中能很容易地实现。有了适当地物理分隔,能有效地减少相邻干扰问题,并且电路串话和辐射泄漏等问题也能得到解决。通过测量,网卡之间间距大约为0.6米,频带间隔至少50MHZ时,吞吐量高于理想中的87%。因此,我们的SWR结构使得多网卡路由器能够装置同频带的无线网卡。

2软件结构

在分离路由器的软件体系结构设计中我们有两个目标。第一,每个分离路由器要作为一个独立单元路由器并装置着多个接口。这种抽象很重要,否则由于路由协议和网络管理工具属于分离无线路由器,就需要进行修改来识别个别的可视RU。第二个目标是支持现有软件的运行,比如路由协议不需要改变。

SWR的软件体系结构如图2所示。分离无线路由器中的一介RU被指定为主网卡单元。在分离无线路由器中,每个RU处理相应的硬件抽象层。它运行在内核层,以此将发现的RU作为本地接口告诉每个用户空间的应用程序。RU的动态发现过程如下:分离无线路由器的每个RU在回馈网络上周期性地广播它的身份使大家知道它的存在。在我们的实现中,广播每分钟一次。RU的列表由软状态保持,每三分钟超时。

硬件抽象层还揭露了两个基本的前置单元——为了单播和广播发送——在无线路由器上运行着,没有作更改。这个前置比如路由协议等是软件的根本。单播单元确保去往下一跳路由器的包准确地通过分离无线路由器运送到一个邻近的RU,然后该RU通过无线媒介将包传送到下一跳。

为了支持这个前置单元,分离路由器里的所有RU周期性地通过回馈网络改变它们观察到的相邻节点的设置。在我们的实现中,这种改变每秒一次。每个节点保持邻节点信息作为软状态。这个状态在邻节点暂停时间后结束,我们将这个时间设置为2秒。同样,广播单元确保了那些要求mesh—wide分发的包由每个RU广播和接收。

3实现

分离无线路由器通过Linux的Netfilter内核模块实现,该内核模块支持ETT度量。ETT的计算公式是根据De Couto等人提出的期望传输次数(ETX,Expected Transmission Count)得来的:

ETT=ETX×S/B

式中,S表示数据包的大小(例如,1024比特),B表示链路的带宽(原始数据率)。ETT计算的结果每5秒向信道分配服务器(CAS)报告一次,CAS位于Mesh网络网关的位置。

我们使用SRCR作为路由协议,以WCETT作为路由选择的度量。在实验中,把WCETT的B参数设置为0.5。这样就赋予了路径的信道多样化和其包传输延迟以同样的权重。

我们用最短路径算法(Dijkstra)实现信道分配。其算法描述如下:

1:输入:

P=AP目录;m=Mesh冲突图:T=邻居连通图

2:while notAIIAPsFound{P}do

3:d=head(P)

4:n=findGateway(d)

5:从n到d的Dijkstra搜索中让PQ成为优先队列

6:while true dO

7:

makePermanent(n)

8:for all ri such that ri is a radio Of n dO

9:

for all ri such that rj is a neighbor of n do

10:

neigh=getRelayContainingRadio(rj)

11:

使用m选择没有冲突的信道c作为链路(ri;rj)

12:

if c不存在then

13:

选择一个随机信道为链路(ri;rj)

14:

endif

15:

cost=computePathCostWithNewLink(d,(ri,rj)),c)

16:

if cost

17:

visit(neigh)

18:

setTentativeChannelForLink((ri;rj)),c)

19:

addToPriorityQueue(PQ,neigh)

20:

end if

21:

end for

22:end for

23:r=findMinimuminPriodtyQueue(PQ)

24: if r=d then

25:

finalizeChannelsOnPathTo(r)

26:

break

27:end if

28:end while

29:end while

30:给没有被分配到持久的信道的网卡分配信道

CAS调用拓扑发现的周期为5分钟(我们发现,周期为5分钟对了解链路长远的性能特点是足够的)。通过上述算法可以发现,AP的次序可以影响到Mesh中信息之间的干扰。作为下一步的工作,我们计划探索利用AP次序进一步优化TIC性能的技术。