一种mesh网络流控的方法与流程

文档序号:14477753阅读:266来源:国知局
一种mesh网络流控的方法与流程

本发明涉及无线mesh网络领域,特别涉及一种mesh网络流控的方法。



背景技术:

无线mesh网络是一种与传统的无线网络完全不同的网络。传统的无线接入技术中,主要采用点到点或者点到多点的拓扑结构。这种拓扑结构中一般都存在一个中心节点,例如移动通信系统中的基站、802.11无线局域网(wlan)中的接入点(ap)等等。中心节点与各个无线终端通过单跳无线链路相连,控制各无线终端对无线网络的访问;同时,又通过有线链路与有线骨干网相连,提供到骨干网的连接。而在无线mesh网络中,采用网状mesh拓扑结构,是一种多点到多点网络拓扑结构。在这种mesh网络结构中,各网络节点通过相邻其他网络节点,以无线多跳方式相连。

这些网络节点根据其在mesh网络内所处的层级形成父/子节点关系,实现数据的转发。根节点作为mesh网络的出口,是与路由器直接连接的节点,能够在其子节点和路由器之间转发数据;路由器的接入设备数量及带宽直接影响到网络出口设备访问外部ip网络的吞吐量。

叶子节点只会发送自己产生的数据,不会转发其他节点的数据;中间节点是对叶子节点到根节点之间所有节点的统称,能够在其各自的父节点和子节点之间转发数据。以图3所示的mesh网络为例,节点c、d是中间节点,也是根节点的子节点;节点a、b是节点c的子节点,节点e是节点d的子节点;节点a、b、e为没有子节点的叶子节点。

mesh网络出口吞吐量可能受周围网络环境等其他因素影响而不稳定,为避免丢包,亟需在mesh网络内进行流量控制。另外,还考虑到整个mesh网络的出口可能只有一个,譬如只有网络内的根节点才具有访问外部服务器的能力。如果网络内其他节点不知道根节点与服务器间的连接状态,一味往根节点发送数据包,希望通过根节点转发到服务器。此时就会导致发往根节点的数据包出现丢包,或产生没有必要的发包。



技术实现要素:

本发明的目的在于提供一种mesh网络流控的方法,对上行传输的流量进行控制,以及根据根节点与服务器间的连接状态来确定是否向其发包,从而使mesh网络出口吞吐量稳定,避免丢包或不必要的发包。

为了达到上述目的,本发明通过以下技术方案实现:

提出一种mesh网络流控的方法,在mesh网络的任意一个节点作为父节点时,分别为它的每个子节点的上行数据分配有接收窗口,并对接收窗口的大小进行动态维护。

子节点发包前向父节点发送窗口请求,父节点将窗口请求中与子节点待发送包相对应的请求序列号,与父节点从子节点处最近一次收到的包的序列号进行比对,并计算出接收窗口的大小回复给子节点,子节点根据回复的接收窗口大小发包。

其中,接收窗口大小的计算过程包含:

s1、如果请求序列号与最近一次收到的包的序列号不是递增的关系,将最近一次收到的包的序列号清零后,进行s2或s3;

s2、请求序列号与最近一次收到的包的序列号的差值小于等于窗口最大值时:

s2.1、若“最近一次收到的包的序列号+当前可用窗口大小+1”大于等于请求序列号,将“最近一次收到的包的序列号+当前可用窗口大小+1-请求序列号”作为回复的接收窗口大小;

s2.2、若“最近一次收到的包的序列号+当前可用窗口大小+1”小于请求序列号,则回复的接收窗口大小为0;

s3、请求序列号与最近一次收到的包的序列号的差值大于窗口最大值时,为当前子节点虚拟一次包进出窗口,将最近一次收到的包的序列号加一,最近一次转发的包的序列号加一,回复的接收窗口大小为1。

优选地,父节点为每个子节点动态维护接收窗口的大小时,父节点收到子节点的包会将所述子节点对应的接收窗口减一,父节点将子节点的包转发后会将所述子节点对应的接收窗口加一。

优选地,父节点还为该父节点自己分配有对应的接收窗口,并对接收窗口的大小进行动态维护:

该父节点自己产生一个要发送给该父节点的父节点的包时会将对应该该父节点的接收窗口减一,该父节点发送一个给该父节点的父节点的包后会将对应该父节点自己的接收窗口加一。

优选地,与子节点待发送包相对应的请求序列号,是子节点为发往其父节点的每个包所设置的序列号,该序列号只在子节点和其父节点之间有效;

父节点分别记录从它的每个子节点收到的包的序列号,父节点记录为每个子节点转发的包的序列号。

优选地,子节点是叶子节点时,所述待发送包是该叶子节点自己产生的包,叶子节点对其设置序列号;

子节点是中间节点时,所述待发送包是该中间节点自己产生的包,中间节点对其设置序列号;或者,所述待发送包是从该中间节点的子节点处接收并等待转发给该中间节点的父节点的包,中间节点对其设置序列号。

优选地,子节点离开父节点,中间没有切换父节点,重新加入离开的父节点时,子节点设置的序列号是在离开时的序列号基础上递增的;子节点切换父节点后,序列号从1开始重新设置。

优选地,父节点为离开的子节点保存历史记录,所述历史记录包括最近一次收到的包的序列号,最近一次转发的包的序列号,当前窗口内滞留的包个数;

父节点为新加入的子节点提供一个初始化的值:

新加入的子节点在该父节点处有历史记录时,初始化的值包括最近一次收到的包的序列号,最近一次转发的包的序列号,当前窗口内滞留的包个数;新加入的子节点在该父节点处没有历史记录时,初始化的值为0。

优选地,子节点发包前通过发送流控请求包,向父节点发送窗口请求;所述流控请求包,包含:mesh包头,流控请求,窗口大小,待发送包的序列号,802.11帧头部,包体;

父节点通过向子节点发送流控回复包来提供接收窗口的大小,所述流控回复包包含:mesh包头,流控回复,回复窗口大小,最近一次收到包的序列号,802.11帧头部,包体。

还提出一种mesh网络流控的方法,该方法是根节点将自己与服务器的连接状态信息通过wi-fi的管理帧,发送给mesh网络内的其他节点;

任意一个其他节点在收到的管理帧中的连接状态信息表示根节点与服务器连接正常时,通过mesh网络给根节点发包,由根节点将数据通过路由器转发给服务器。

附图说明

图1是流控方法流程图;

图2是流控请求包;

图3是流控回复包;

图4是mesh网络内的节点通信例子;

图5是接收窗口队列。

具体实施方式

在本发明提供的一种mesh网络流控的方法中,对上行传输的流量进行控制。任意节点作为父节点时,为它的每个子节点及该父节点自己分配一定大小的接收窗口(用以缓存数据),并动态维护接收窗口的大小;父节点收到子节点的包会将接收窗口减一,父节点将子节点的包转发后会将接收窗口加一。任意节点作为中间节点时,自己产生一个要发送给其父节点的包会将接收窗口减一,该节点发送一个给其父节点的包后会将接收窗口加一。

任意节点为发往其父节点的每个包设置一个序列号,序列号只在该节点和其父节点之间有效。父节点记录从每个子节点收到的包的序列号,父节点也记录为每个子节点转发的包的序列号。

任意节点发包前会向其父节点发送一个流控请求包,以发送窗口请求;父节点会向该节点回复一个流控回复包,来告知接收窗口的大小。该节点在发送的流控请求包中包含待发送包的序列号,也称为请求序列号。

该节点是叶子节点时,只发送自己产生的包,为其发送给父节点的包编一次序列号。该节点是中间节点时,为其自己产生并发送给父节点的包设置序列号;该节点同时还要转发其子节点的包,因而也需要为发送给父节点的包再编一次序列号。

任意一个子节点离开父节点,并在中间没有切换父节点的情况下,重新加入离开的父节点时,序列号延续离开前的序列号进行设置;子节点切换父节点后,序列号重新计。

父节点为离开的子节点保存历史记录,包括最近一次收到的包的序列号,最近一次转发的包的序列号,当前窗口内滞留的包个数。

当父节点收到来自子节点的包时,如果这个包里的序列号从1开始计,那说明子节点中间切换过其他父节点。如果这个包里的序列号在父节点维护的序列号基础上维持增长状态,说明没有切换过。

如果新加入的子节点有历史记录的话,父节点为新加入的子节点初始化一个新的值,包括最近一次收到的包的序列号,最近一次转发的包的序列号及当前窗口内滞留的包个数。如果新加入的子节点没有历史记录的话,就初始化为0。

如附图1流程图所示,流控方法包含以下过程:

父节点收到流控请求包后,取出子节点待发送包的请求序列号,对比最近一次收到的包的序列号并计算出一个接收窗口的大小,通过流控回复包向子节点回复;

s1、如果请求序列号与最近一次收到的包的序列号不是递增的关系,将最近一次收到的包的序列号清零。

s2、请求序列号与最近一次收到的包的序列号的差值小于等于窗口最大值时:若“最近一次收到的包的序列号+当前可用窗口大小+1”大于等于请求序列号,将“最近一次收到的包的序列号+当前可用窗口大小+1-请求序列号”作为回复的窗口大小;反之,若小于请求序列号,则回复的窗口大小为0。

s3、请求序列号与最近一次收到的包的序列号的差值大于窗口最大值时:为当前子节点虚拟一次包进出窗口,将最近一次收到的包的序列号加一,最近一次转发的包的序列号加一,回复窗口大小为1。

如附图2,图3的示例中,所述流控请求包包含:mesh包头,流控请求,窗口大小,待发送包的序列号,802.11帧头部,包体;所述流控回复包包含:mesh包头,流控回复,回复窗口大小,最近一次收到包的序列号,802.11帧头部,包体。为了与流控回复包的结构一致,在流控请求包中设置了“窗口大小”字段,该字段可以清零。

如附图4所示,与路由器直接连接的根节点,其数据来源有根节点自己产生的上行数据,和来自中间节点的上行数据。中间节点是从叶子节点到根节点之间转发数据的节点,其数据来源有中间节点自己产生的上行数据,和来自叶子节点的上行数据。叶子节点只会发送自己产生的数据,不会转发其他节点的数据。

中间节点维护一个结构体:如附图5所示的接收窗口队列中最近一次收到的包的序列号seqno_in;最近一次转发的包的序列号seqno_out;当前窗口内滞留的包个数pending,窗口大小size。

以中间节点c为例,其具有一个缓存队列,这个队列里存放来自中间节点c自己以及两个子节点a,b的数据。中间节点c将这个缓存队列分配给了三个数据来源分别为接收窗口1,接收窗口2,接收窗口3。接收窗口1缓存来自自己的数据;接收窗口2缓存来自子节点a的数据;接收窗口3缓存来自子节点b的数据:

接收窗口1(seqno_in1,seqno_out1,pending1)

接收窗口2(seqno_in2,seqno_out2,pending2)

接收窗口3(seqno_in3,seqno_out3,pending3)

正常情况也就是子节点与中间节点c保持稳定连接且没有丢包的情况下,seqno_in≥seqno_out,pending=seqno_in-seqno_out,且size减去pending的值就是当前可用窗口大小的值。

在非正常情况,如子节点频繁更换父节点,或与父节点之间有丢包,中间节点c跟子节点的连接不稳定,子节点离开中间节点c又加入等情况下,通过以下的具体例子说明本发明的流控方法:

以接收窗口2为例,设请求序列号与回复的窗口大小分别为x,y;

当x与历史记录的seqno_in2不是递增关系时:

seqno_in2=0;则x-seqno_in2=x;

若x≤size2时:

若size2-pending2+1≥x,y=size2-pending2+1-x;

若size2-pending2+1<x,y=0;

若x>size2时:seqno_in2=0+1,seqno_out2=seqno_out2+1,y=1。

当x与历史记录的seqno_in2是递增关系时:

若x-seqno_in2≤size2时:

若seqno_in2+size2-pending2+1≥x,y=seqno_in2+size2-pending2+1-x;

若seqno_in2+size2-pending2+1<x,y=0;

若x-seqno_in2>size2时:

seqno_in2=seqno_in2+1,seqno_out2=seqno_out2+1,y=1。

所述x-seqno_in>size时的操作,可以处理如下两种情况:

一种情况是子节点与父节点之间发生了丢包。譬如,子节点的请求序列号为x=1,问完得到y=5个窗口后,发来的5个包父节点一个也没收到,也就是父节点此时的(seqno_in,seqno_out,pending)是(0,0,0);子节点接下来的请求序列号为x=6,此时若x-seqno_in>size就走到了这种情况的处理。通过虚拟一次包的进出,将(seqno_in,seqno_out,pending)刷新成了(1,1,0),然后正常回复一个窗口给子节点。子节点收到后发来对应请求序列号x=6的包,则(seqno_in,seqno_out,pending)为(6,1,1),后续处理流程都将正常。

还有一种情况是父节点重启。譬如,父节点重启后,父节点这边(seqno_in,seqno_out,pending)是(0,0,0),那么原来连着的子节点中的请求序列号很大,甚至x>size;此时因为seqno_in=0,所以x-seqno_in>size就走到了这种情况的处理。与上述类似的,通过虚拟一次包的进出,使后续处理流程正常。

本发明还提供一种mesh网络流控的方法,根节点将自己与服务器的连接状态信息放在wi-fi的管理帧,如beacon中广播出去,通过mesh网络内的信息传递,使得网络内每个节点都可以获得这个信息;其他节点在得知根节点与服务器连接正常(即根节点有能力将数据转发给服务器)之后,其他节点再通过mesh网络内的信息传递,发包给根节点。

如果在收到的管理帧中,连接状态信息表示根节点与服务器连接不正常的,则其他节点不直接向根节点发包:例如可以在收到根节点与服务器连接正常后重新发送的管理帧时,再向根节点发包,但本发明对此情况下的处理方式不作限定。

本发明可以在实际应用时将两种流控方法进行融合。例如,实施例一的根节点具备实施例二所述在管理帧中提供连接状态信息的功能,根节点的子节点则会根据该状态判断是否向根节点发送数据包。又例如,实施例二的根节点,譬如在其与服务器连接受限时(但不限于此),也可以根据实施例一所述根据流控请求回复窗口大小来控制其子节点的上行数据流量。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1