基于吞吐量性能的无线Mesh网络自适应路由方法
技术领域
本发明涉及一种无线网络技术领域的路由方法,具体地说,涉及的是一种基于吞吐量性能的无线Mesh网络自适应路由方法。
背景技术
无线Mesh网络是一种在无线接入、市政管理、灾难救助、安全监控、工业管理、物流协作等领域中应用非常广泛的技术,其路由方法的设计直接影响到无线Mesh网络的性能和效率。因为无线Mesh网络有自组织、自恢复、自适应的性能要求,和可移动、环境多变的背景特征,所以无线Mesh网络的路由方法必须一方面照顾到网络的稳定性,保证数据通信的畅通与高效,另一方面必须能够进行快速收敛,以保证在网络拓扑出现变化的时候,能够最大限度的维持通信的正常进行。一个高效准确、高稳定性的路由方法是构建实用化的无线Mesh网络的基础。而要在这两个互相影响和制约的特性中找到平衡点,是非常困难的。
无线Mesh网络是无线adhoc网络的发展,而基于无线adhoc网络的路由解决策略层出不穷,可分为主动路由、被动路由和混合式路由三类。主动路由采用与传统路由协议相似的策略来维护路由表,比如Murthy和J.J.Garcia-Luna-Aceves所提出的WRP就是由每个节点周期性的广播路由信息分组,交换路由信息来完成主动的路由发现工作的。但是在这种情况下,节点必须主动的去维护所有去往全网的路由,而且路由信息数据的周期性广播也占用了一定的数据带宽,更重要的是,虽然获得了稳定性,但几乎完全舍弃了系统对快速收敛的要求。被动路由根据需要获取路由信息,C.E.Perkins和E.M.Royer提出了AODV协议就是按需路由的典型代表,它只在源节点有分组要发出,但是没有通往目的节点的路由信息时,才通过主动查询的方式去获取路由,路由表是按需建立的。但因为路由信息在出现需求后才进行收敛,就导致了数据包发送前的巨大时延,影响了网络工作的效率。混合式路由通过结合上述两种路由策略来实现,在小区域内使用主动路由策略,保证数据高效的传输,在区域间使用被动路由策略,来减小路由表的规模开销。
经对现有技术文献的检索发现,中国专利申请号为200610145606.X的专利“中继系统中的自适应路由信息广播与路由方法”也是一种拥有自适应特性的路由方法。该专利阐述了一种用于中继系统中的自适应路由信息广播与路由方法。其技术特点为,采用基于跳数的路由生成方法,采用最大跳数作为路由生成的约束条件,采用两个系统负荷门限将整个系统负荷的可能划分为三个不同的档次,针对不同档次采用不同的路由信息格式。该方法采用了主动路由策略,为了减少主动路由策略带来的系统开销,采用了分级的路由信息格式,这是对主动路由策略的优化。采用最大跳数作为路由生成的约束条件使得路由环路出现的可能大大降低。但是该路由方法是基于跳数进行路由选择的,首先这就无法体现网络复杂多变的特性,会导致网络效率的下降。同时,基于最大跳数的约束条件会直接导致在网络规模改变时,系统无法针对网络状况进行最大跳数这个参数的自适应,最终导致系统紊乱。而且,仅使用系统的两个门限负荷作为自适应的条件太过简单,无法对实际应用环境的复杂性做出恰当的反应。
发明内容
本发明的目的在于克服现有技术中的不足,提供一种基于吞吐量性能的无线Mesh网络自适应路由方法,解决因对隐藏节点的考虑不足导致的性能下降,通过对无线Mesh网络内数据链路上不同类型数据包丢包率的探查,同时基于隐藏节点的相关处理,来完成对吞吐量性能的估算,并以此得到一个有代表性的Metric值,最终获得任意两个节点间通过多跳通信的最佳路由,以使网络在整体性能上达到最优。
本发明是通过以下技术方案实现的,本发明包括如下步骤:
第一步,每个无线Mesh节点会以设定的时间间隔发送探针包,同时接受其他节点发送的探针包,并将所接收到探针包的发送节点标记为邻居。
第二步,根据第一步中所使用的探针包的发送频率和一段时间内收到邻居节点的探针包个数,由探针包的丢失率来计算两个节点之间的链路质量,这些由探针包获得的链路质量信息将被放在本地发出的探针包中一起发送出去。
第三步,根据第一步和第二步所描述的探针包发送机制,本地收到的其他节点的探针包信息,以及从其他节点发来的探针包中所携带的本地发出的探针包的信息,计算出一个链路质量metric(度量值)值,并生成一个链路质量数据库记录链路质量信息。同时无线Mesh节点根据信道中信号占用的百分比来确定一个权值,并将这个权值计入链路metric计算,以确保隐藏节点的数据通信不会对基于吞吐量性能选择的路由产生不可知的影响。
第四步,当一个节点需要与其他节点通信时,它将发送出一条路由请求,每个节点都将对这个路由请求进行转发,直到找到目的节点为止。根据第三步所述的链路质量数据库,每个转发路由请求的节点都会将本节点与上一个转发此请求节点的链路质量metric计入请求中,因此通过不同路径到达目的节点的路由将会因为查询过程中代表链路质量的metric值的不同而产生区别,这就是选择最佳路由的依据。最佳路由被选择出来后,所有路由上的节点都会在有效期内缓存此条路由。路由数据经过了有效期后,将被删除,系统如有需要将会重复上述步骤来重新获取路由。
第五步,网关节点主动向网络通告自己的存在,以使得整个网络的节点都能够拥有一条或多条默认路由。而每个节点也会根据第四步所述的方法,通过计算整个路由上metric值的和,去选择一条最优的到达网关节点的路由。
所述的探针包是这样一种数据帧,它包含有本节点的节点编号、节点类型、节点信噪比等物理信息,同时包含了本节点探针包的设定信息(包括发送时延、发送间隔、发送数量)和本节点所接收到的邻居节点探针包的接收率。所以探针包不但能够作为Hello包声明自己的存在,也能够作为链路维持的数据基础,同时还可以使每个节点获知自己发送的探针包在其他节点的接收率,使得每个节点都能双向的了解链路质量信息。根据探针包,系统将维护一张邻居表来表示所有的邻居节点,并为每个邻居建立一张探针信息表(记录每个邻居节点的相关探针包发送和接受统计信息)。
所述的探针包的发送频率,是指认为设定的在一定时间内发送探针包的个数。这个设定将随探针包发送出去,以使得邻居节点可以在这个设定的时间长度内,通过对所接受到的探针包数量的统计,得到探针报的丢包率。这个丢包率将被记录在探针信息表中,同时将被随着之后的探针包发送出去。
所述的链路质量metric值,是对当前网络状况下,对固定数据包的传输时间的一个估计值。任意两个邻居节点间,都会实时维护这样一个metric值,根据网络状况对这个值进行重新收敛和计算,以保证链路的畅通。这个值主要受到三个因素的影响,链路所使用的数据传输速率,链路数据传输的丢包率,和链路被隐藏节点占用的情况。根据链路所使用的数据传输速率,可以计算得到数据包发送的时间m,根据丢包率,可以计算出数据重传的次数和所需要的退避时间k,根据链路占用情况,可以算出权值s,加上链路固定的时间片占用p,可以得到估计数据传输时间,也就是metric值t=(m+k)*s+p。
所述的发送路由请求是指当节点需要将数据包传输给另一个节点,但是在路由表中没有到达目的地的路由信息的时候,节点会向外洪泛一个路由请求,即向周围的所有邻居节点询问到达目的地的路由信息。收到请求的节点如果知道到达目的节点的信息,就会将数据传回,如果不知道,就会将这个请求继续发送,并将自己放入到这个请求包的源路由队列中,使得之后的节点能够知道这个数据包经过了哪些节点。同时,每个节点也根据之前的数据,获知了自己到达源节点的最优路径。
所述的洪泛是指某一个节点向周围广播发送一个数据包,所有能收到这个数据包的节点,向自己的周围广播发送相同的数据包,直到网络中所有的节点都最终收到这个数据包。
所述的源路由队列是指路由请求经过的每个节点将自己添加到路由请求中的特定数据结构后所产生的队列。路由请求会通过多跳源路由到达所请求的目标节点,之后路由请求被回传给源节点,源节点也会受到多个返回包,源节点会根据所收到的源路由队列的相关metric值,计算出最优的路由。同时,每个节点也会根据这些路由请求的数据,获知了自己到源和目的节点的情况。也就是说,路径上的所有节点,都获知了这条最优路由。
所述的所有节点缓存路由是指为了减少系统的开销,每一个转发路由请求的节点都将把这条路由上的相关节点计入路由表中,在路由没有失效前,系统如有通信需要,可以直接使用这条缓存在路由表中的路由,减少路由查询的开销。
所述路由经过了有效期是指为了防止网络出现变化后,系统依然使用之前缓存的最佳路由,系统将会在有效期结束后,将缓存的路由从路由表中删除,当有新的通信需要时,系统将重新发起路由查询请求。
所述的网关节点主动通告网络是指网关节点会向网络内所有的节点通告自己的存在。因为无线Mesh网络是一个接入网,网关节点附近将会有最大的吞吐量。所以,主动维持网关路由能够极大地优化网络性能。
本发明是一种兼顾了主动路由记录和被动路由发现优点的无线Mesh网络路由方法。在无线Mesh网络中,因为出口的相对固定性和链路本身的动态特性,这样的方法在能够很好的适应网络的状态的变化的同时,也能够做到最大限度的降低路由广播和收敛对吞吐量的影响,同时也将隐藏节点对链路的影响考虑在内,非常适合于在目前这种空间电磁波状况复杂的情况下使用。
附图说明
图1为本发明实施例链路状态广播示意图;
图2为本发明实施例路由状态查询示意图。
具体实施方式
下面结合附图对本发明的实施例作详细说明:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
本发明中,每一个无线Mesh网络节点通过向外广播探针包以及接收其邻居节点发送的探针包,并根据探针包的丢包率来维护一个链路质量数据库,通过引入隐藏节点对吞吐量占用的权值以及相关计算,数据库记录了此节点与其邻居节点的之间的链路质量信息,用一个metric值来表示。这个metric值之后被用于计算每一条特定路由的质量。路由请求将根据需求洪泛至整个网络中,拥有最佳metric值的路由最后将被作为最佳路由由每一个节点记录。网关节点通过广播网关信息,维持网关节点在整个无线Mesh网络中的可知和可达,即所有节点对于出口路由的主动追踪。
如图1所示,为本发明实施例链路状态广播图。图中,每一个节点都会向周围所有的节点广播探针包,每个节点都将通过记录邻居节点的探针包信息来获取每一条链路的状态信息,并根据相关的状态信息计算出网络的metric值。由于探针包不断的发送接收,链路状态信息也在不断的调整,因此metric值会发生动态变化。
如图2所示,为本发明实施例链路状态广播图。图中,当节点需要得知到达目标节点的路由信息而路由节点又不在当前已知的路由表中时,节点会发起一次路由查询,每一个节点会向周围所有的邻居转发这样的路由查询信息,直到到达目的地。所有形成环的路由查询转发都会被丢弃,同时,在经过一定的时间后,这条路由查询的请求也会被丢弃,以防止这个路由查询占用太多的吞吐量资源。每一个中间节点都会将自己添加到路由查询包的源路由队列中,目的节点在收到查询路由的请求后,将整个包发回给源节点,源节点通过对多个包中的metric信息的计算来最终获得最优路径。
网关节点一旦确定自己可以与Internet进行通信,也就是确定自己是整个网络的gateway的时候,需要向整个网络宣布这个消息。这个过程与路由信息的查询相类似,但是因为网关只需要宣布自己的身份,不需要用户的回馈,因此这个过程是单向的。而且是每隔一个特定时间就会不断进行的。因为这样才能保证不在某些网关节点失效的情况下,依然有节点选择使用这个网关路径进行数据转发。
以下给出本发明具体应用实施例的描述:
以一座五层住宅为例,假设只有三楼和五楼拥有通向Internet的有线网络接口,需要对所有楼层进行无线接入网络的覆盖。在每一个楼层均放置一个节点,假设二楼四楼由于家具较多,需要放置两个节点。
首先当每个节点开启后,它们会在每10秒时间内发送100个探针包(这个可以根据实际情况调整),同时接受其他节点发送的探针包,并将所接收到探针包的发送节点标记为邻居。这时,每个楼层的无线Mesh节点都能够发现本楼层以及上下相邻楼层的无线Mesh节点,并会将他们标示为邻居。
接着,根据100个探针包收到的比率,可以计算得到本节点与其邻居节点的链路质量数据。同时,这个数据库中的信息将会被放在之后的探针包中,实时的发布出去。
之后,根据本地接收的邻居探针包的情况,和邻居探针包中所包含的本地探针包在邻居节点的情况,计算出和邻居节点之间的链路metric(跃点值)。之后,根据链路占用情况,会将一个权值加入到metric中,得到最终的链路质量metric,这些链路质量metric将会被记录在链路质量数据库中。通过这些步骤,每个节点将会动态的维护一个本地节点和邻居节点之间的链路质量数据库。这个库中的文件将会根据环境的变化而实时更新。
然后,当一楼的节点希望发送数据包发送到三楼的节点时,一楼节点将发送一个路由请求,这个请求被发送到二楼的两个节点,然后发送到三楼的节点。这时,一楼的节点将会得到两个回复,分别通过二楼的两个节点到达三楼的节点。里面分别包含了其链路的metric。一楼的节点将根据metric值的和,选择二楼的某个结点提供的路由,将数据发送到三楼的节点。这个路由信息会在节点中缓存,但会在到期后删除。防止二楼的那个中继节点突然毁坏,或由于某些原因不可用。这时,一楼的节点将会通过重新发送路由请求,而使用二楼的另一个节点来完成信息转发工作。
最后,三楼和五楼的节点发现本地是通向Internet的网关,他们会向全网广播这一信息。同时主动的在所有节点中缓存一条通向外网的路由。这条路由也是动态和自适应的。因此,一楼节点将会收到三楼和五楼节点的网关通告,然后根据metric选择通过三楼的节点访问Internet。当三楼的Internet链路突然中断时,一楼节点将仅收到五楼节点的网关信息广播,并重新维护一条通向五楼网关的路由,保证用户的使用。
本实施例可以解决因对隐藏节点的考虑不足导致的性能下降,使网络在整体性能上达到最优。