基于多路径路由协议实现自组网拥塞控制的方法与流程

文档序号:12699202阅读:248来源:国知局
基于多路径路由协议实现自组网拥塞控制的方法与流程

本发明属于无线通信技术领域,特别涉及一种实现自组网拥塞控制的方法,可用于Ad Hoc网络。



背景技术:

Ad Hoc网络是一种由若干无线数据传输设备临时组成的、不需要固定通信设施支持的无中心网络。网络节点既是通信终端,又可以作为路由器为其他节点转发数据。

近年来,各国学者围绕Ad Hoc网络中的拥塞控制开展了积极的研究,提出了若干种方法。最常见的方法是TCP协议中的拥塞控制方法,它的拥塞控制主要依赖于拥塞窗口cwd,窗口值的大小代表能够一次性发送出去的字节数,显然窗口越大,数据发送的速度也就越快,但是也有可能使得网络出现拥塞,所以TCP中采用了慢启动、拥塞避免、加速递减和快速重传等技术来动态调整拥塞窗口的大小。然而TCP协议在Ad Hoc网络中的性能远不如它在传统的有线网络中的性能,这主要是由于Ad Hoc网络和有线网络的特性差异。例如,在Ad Hoc网络中,传输媒介是局部共享的。另外,TCP协议判断网络拥塞的依据是报文丢失,而在Ad Hoc网络中报文的丢失原因不仅仅是网络拥塞,还有链路中断、路由频繁变化等原因。主动队列管理AQM也是一种常见的拥塞控制方法,它是一种预见式的队列管理方法,该方法对网络的状态进行评价,从而预测是否将要出现拥塞的状况。当预测到路由器将要发生拥塞时,在路由器的队列还没有充满时就按照一定的规则丢弃数据包并向发送端通告拥塞情况,以降低发送端的传输速率。但是,在目前的AQM机制中为了简化设计通常忽略了系统中的延迟环节,在延迟比较小的情况下,忽略延迟对系统性能的影响较小;然而在延迟比较大的情况下,忽略延迟往往会导致系统不稳定。经过大量仿真实验结果表明,几种典型的AQM算法在延迟较大的情况下存在以下缺点,首先是队列大幅震荡,增加了端到端的延时抖动,其次是链路利用率低,网络吞吐量大幅降低,最后是队列长度不能收敛,节点出现大量丢包的情况。



技术实现要素:

本发明的目的在于针对上述现有技术的不足,提出了一种基于多路径路由协议实现自组网拥塞控制的方法,以提高网络吞吐量,降低节点丢包率。

实现本发明目的的技术方案是:通过对节点拥塞情况的检测,根据不同的拥塞原因采取不同的缓解手段,其具体步骤包括如下:

(1)网络中的每个节点将它的邻居节点记为ni,i=1,2,3,.....K,其中K表示邻居节点的个数,并等待一个拥塞周期T,统计该周期内本节点发送给每个邻居节点ni的数据分组数和本节点从每个邻居节点ni接收的数据分组数

(2)网络中的每个节点根据本节点缓存队列的长度,判断是否拥塞,若是,将本节点记为“拥塞节点”,执行步骤(4),否则,将本节点记为“非拥塞节点”,执行步骤(3);

(3)非拥塞节点关闭缓存队列随机丢包机制,返回步骤(1);

(4)拥塞节点判断是否已经开启了缓存队列随机丢包机制,若是,则返回步骤(1),否则,执行步骤(5);

(5)分析拥塞节点的拥塞原因:

(5a)令初始参数i=1;

(5b)判断拥塞节点到它的邻居节点ni的链路是否是一条低速链路,若是,则执行步骤(5c),否则,执行步骤(5f);

(5c)假设网络中的数据分组大小为D比特,且每个分组大小一致,计算拥塞节点到邻居节点ni的平均传输时延和拥塞节点到它的其它邻居节点nj的平均传输时延

其中为拥塞节点到它的邻居节点ni这条链路的传输速率,j不等于i,为拥塞节点到它的邻居节点nj这条链路的传输速率,为拥塞节点发送给它的邻居节点nj的数据分组数;

(5d)计算拥塞节点的假设队列长度qa

qa=q-EN

其中q为拥塞节点当前缓存队列的实际长度,EN为在该周期内拥塞节点额外多传输的数据分组数,为拥塞节点发送给它的邻居节点ni的数据分组数,N为和这两个平均传输时延的比值,

(5e)假设拥塞节点缓存队列长度为qa,判断拥塞节点是否不再拥塞,若是,则拥塞的原因是使用了拥塞节点到邻居节点ni这条低速链路所致,执行步骤(6),否则,执行步骤(5f);

(5f)判断初始参数i是否大于邻居节点的个数K,若是,则拥塞的原因是由于拥塞节点的总流量过大所致,执行步骤(7),否则,令i=i+1,返回步骤(5b);

(6)拥塞节点将步骤(5e)中的邻居节点ni记为低速节点,通过抑制低速链路的手段缓解由拥塞节点到低速节点这条链路引起的拥塞,返回步骤(1);

(7)拥塞节点通过流量调度或随机丢包的手段缓解由拥塞节点总流量过大引起的拥塞。

本发明与现有技术相比较具有如下优点:

1.相较于基于路由器支持的主动队列管理AQM,本发明通过分析拥塞发生的原因,采用了抑制低速链路的手段缓解由拥塞节点到低速节点这条链路引起的拥塞,避免了传统路由协议的盲目性,提高了自组网路由协议的效率。

2.本发明通过分析拥塞发生的原因,采用了流量调度或随机丢包的手段缓解由拥塞节点总流量过大引起的拥塞,避免了AQM方法的单纯丢包和在系统时延较大情况下的弊端,使拥塞的缓解更具针对性和高效性。

附图说明

图1是本发明的实现总流程图;

图2是本发明中拥塞节点通过抑制低速链路缓解链路引起的拥塞的子流程图;

图3是本发明中拥塞节点通过流量调度或随机丢包缓解流量过大引起的拥塞的子流程图;

图4是本发明中分流节点寻找有效替换路由的子流程图;

图5是本发明的使用场景示意图;

具体实施方式

下面结合附图和实施例对本发明内容做详细叙述,本实施例以本发明技术方案为前提下进行实施,给出了详细实施方式和操作过程,但本发明的保护范围不限于下面的实施例。

参照图5,本发明使用的网络场景为Ad Hoc自组织网络。节点的网络层采用多路径表驱动协议,MAC层采用TDMA协议,拥塞节点是根据本节点缓存队列长度判断为拥塞状态的节点,分流节点是拥塞节点选出来进行流量调度的节点,接入节点是分流节点主路由上的第三跳节点,分流族节点是主路由经过分流节点到拥塞节点这条链路的节点。

参照附图1,本发明的实现步骤如下:

步骤1、网络中每个节点周期性的统计数据。

网络中的每个节点将它的邻居节点记为ni,i=1,2,3,.....K,其中K表示邻居节点的个数,并等待一个拥塞周期T,统计该周期内本节点发送给每个邻居节点ni的数据分组数和本节点从每个邻居节点ni接收的数据分组数。

步骤2、网络中的每个节点根据本节点缓存队列的长度,判断是否拥塞。

(2a)计算缓存队列中缓存的数据包数q和缓存大小Q的比值:再根据r值大小,分为以下三种情况判断:

当r≤η1时,本节点正常,判定为非拥塞状态,执行步骤3;

当η1<r≤η2时,本节点可能会发生拥塞,需要进一步判断,执行步骤(2b);

当η2<r时,本节点缓存的分组已经过多,判定为拥塞状态,执行步骤4;

(2b)节点计算分组的输入速率λ和分组的输出速率μ:

其中为本节点从每个邻居节点ni接收的数据分组数,K为本节点邻居节点个数,T为拥塞周期,Ts为分组的平均服务时间,分组的服务时间指从分组处于缓存队列头部开始到分组被发送为止的时间;

(2c)计算分组的输入速率λ与分组的输出速率μ之比:再根据ρ值大小,分为以下两种情况判断:

当ρ≤1时,本节点正常,判定为非拥塞状态,执行步骤3;

当ρ>1时,本节点的分组会进一步增多,判定为拥塞状态,执行步骤4。

步骤3、非拥塞节点关闭缓存队列随机丢包机制。

缓存队列随机丢包机制开启后,就以某概率P随机丢弃要输入缓存队列的数据分组,通过丢弃数据分组来向发送端发出拥塞通告,收到拥塞通告的发送端降低数据分组传输速率,避免队列满载溢出,对拥塞状态进行缓解,再返回步骤1。

步骤4、拥塞节点判断是否已经开启了缓存队列随机丢包机制,若是,则返回步骤1,否则,执行步骤5;

步骤5、分析拥塞节点的拥塞原因。

(5a)令初始参数i=1;

(5b)判断拥塞节点到它的邻居节点ni的链路是否是一条低速链路,若是,则执行步骤(5c),否则,执行步骤(5f);

(5c)假设网络中的数据分组大小为D比特,且每个分组大小一致,计算拥塞节点到邻居节点ni的平均传输时延和拥塞节点到它的其它邻居节点nj的平均传输时延

其中为拥塞节点到它的邻居节点ni这条链路的传输速率,j不等于i,为拥塞节点到它的邻居节点nj这条链路的传输速率,为拥塞节点发送给它的邻居节点nj的数据分组数;

(5d)计算拥塞节点的假设队列长度qa

qa=q-EN

其中q为拥塞节点当前缓存队列的实际长度,EN为在该周期内拥塞节点额外多传输的数据分组数,为拥塞节点发送给它的邻居节点ni的数据分组数,N为和这两个平均传输时延的比值,

(5e)假设拥塞节点缓存队列长度为qa,判断拥塞节点是否不再拥塞,若是,则拥塞的原因是使用了拥塞节点到邻居节点ni这条低速链路所致,执行步骤6,否则,执行步骤(5f);

(5f)判断初始参数i是否大于邻居节点的个数K,若是,则拥塞的原因是由于拥塞节点的总流量过大所致,执行步骤7,否则,令i=i+1,返回步骤(5b);

步骤6、拥塞节点将步骤(5e)中的邻居节点ni记为低速节点,通过抑制低速链路的手段缓解由拥塞节点到低速节点这条链路引起的拥塞。

参照图2,本步骤的具体实现如下:

(6a)令初始参数i=1,M等于拥塞节点路由表中路由项目条数;

(6b)检查拥塞节点的第i条路由项目的主路由,判断该主路由的下一跳节点是否为低速节点,若是,则执行步骤(6c),否则,执行步骤(6i);

(6c)在第i条路由项目上,记录该低速节点;

(6d)判断第i条路由项目的次路由是否存在,若是,则执行步骤(6e),否则,执行步骤(6h);

(6e)判断上述次路由中,拥塞节点到下一跳节点的链路是否是一条低速链路,若是,则执行步骤(6f),否则,执行步骤(6g);

(6f)将步骤(6e)中的下一跳节点也记为低速节点,记录在第i条路由项目上,执行步骤(6h);

(6g)用第i条路由项目的次路由覆盖主路由,执行步骤(6i);

(6h)清空第i条路由项目,待下次有数据分组查看该路由项时,直接丢弃数据分组,执行步骤(6i);

(6i)判断初始参数i是否大于等于拥塞节点路由表中路由项目条数M,若是,则执行步骤(6j),否则,令i=i+1,返回步骤(6b);

(6j)拥塞节点再等待下一个拥塞周期T,并统计本节点发送给每个邻居节点ni的数据分组数和本节点从每个邻居节点ni接收的数据分组数且在该拥塞周期T内,不使用低速节点发送的路由消息更新本节点路由表中记录了低速节点的路由项目;

(6k)根据拥塞节点缓存队列的长度,判断是否拥塞,若是,则执行步骤(6l),否则,执行步骤(6m);

(6l)拥塞节点开启队列随机丢包机制,执行步骤(6n);

(6m)判断拥塞节点到低速节点的链路是否仍是一条低速链路,若是,则返回步骤(6j),否则,执行步骤(6n);

(6n)拥塞节点删除记录的低速节点,且在下一个拥塞周期T内使用低速节点发送的路由信息正常更新本节点的路由表,返回步骤1。

步骤7、拥塞节点通过流量调度或随机丢包的手段缓解由拥塞节点总流量过大引起的拥塞。

参照图3,本步骤采用但不限于用流量调度手段对由拥塞节点总流量过大引起的拥塞,具体实现如下:

(7a)拥塞节点计算应卸载的输入速率:f=λ-μ,其中λ为分组输入速率,μ为分组输出速率,再根据f值的大小,分以下两种情况进行处理:

当f≤0时,拥塞节点的拥塞情况会好转,返回步骤1;

当f>0时,拥塞节点应该卸载一部分流量,执行步骤(7b);

(7b)拥塞节点计算它的每个邻居节点ni的分组输入速率:i=1,2,3,.....K,K为邻居节点的个数,为本节点从每个邻居节点ni接收的数据分组数,T为拥塞周期;

(7c)拥塞节点判断是否存在一个邻居节点的分组输入速率λi大于等于应卸载的输入速率f,若是,则执行步骤(7e),否则,执行步骤(7d);

(7d)拥塞节点开启队列随机丢包机制,返回步骤1;

(7e)拥塞节点将所有邻居节点按分组输入速率λi从小到大排列,依次检查所有邻居节点,直到找到一个邻居节点的分组输入速率λi大于等于应卸载的输入速率f,并将该邻居节点记为分流节点;

(7f)拥塞节点记录分流节点,并给分流节点发送拥塞信息,分流节点收到拥塞信息后,查找一些绕过拥塞节点的可用路由替换原来经过拥塞节点的路由;

参照图4,查找一些绕过拥塞节点的可用路由替换原来经过拥塞节点的路由,其具体实现如下:

(7f1)令初始参数i=1,M等于分流节点路由表中路由项目条数;

(7f2)分流节点检查第i条路由项目的主路由,判断该路由的下一跳节点是否为拥塞节点,并判断目的节点是否不是该拥塞节点,若两者都满足,则执行步骤(7f3),否则,执行步骤(7f11);

(7f3)分流节点在第i条路由项目上记录拥塞节点,该路由项目不再使用含有拥塞节点的路由进行更新;

(7f4)判断第i条路由项目的次路由是否存在,若是,则执行步骤(7f5),否则,执行步骤(7f6);

(7f5)分流节点用第i条路由项目的次路由覆盖主路由,执行步骤(7f11);

(7f6)分流节点将主路由上的第三跳节点记为接入节点;

(7f7)分流节点判断是否存在到接入节点的有效路由,即不经过拥塞节点的路由,若是,则执行步骤(7f8),否则,执行步骤(7f9);

(7f8)分流节点把主路由和步骤(7f8)或步骤(7f9)中的有效路由拼接成新的主路由,并覆盖第i条路由项目的主路由,执行步骤(7f11);

(7f9)分流节点判断是否能通过按需式路由查找方法找到一条到接入节点的有效路由,若是,则执行步骤(7f8),否则,执行步骤(7f10);

所述按需式路由查找方法,其实现步骤如下:

§1.源节点广播一个路由请求分组RREQ,内容包括目的节点、源节点、中间节点列表和路由请求分组ID号,并初始化一个路由查找定时器RT,执行步骤§2;

§2.源节点判断是否收到路由应答分组RREP,若是,则查找到了一条有效路由,即中间节点列表,否则,执行步骤§3;

§3.源节点等待一秒后,将路由查找定时器RT数值减一,并判断路由查找定时器RT是否小于零,若是,则无法找到一条有效路由,否则,返回步骤§2;

§4.中间节点收到路由请求分组RREQ,根据路由请求分组ID号判断本节点是否收到过路由请求分组RREQ,若是,则直接丢弃分组,否则,执行步骤§5;

§5.中间节点判断路由请求分组RREQ中的中间节点表是否包含本节点,若是,则直接丢弃分组,否则,执行步骤§6;

§6.中间节点判断路由请求分组RREQ的目的节点是否为本节点或本节点是否有到目的节点的路由,若是,则执行步骤§8,否则,执行步骤§7;

§7.中间节点把本节点填入路由请求分组RREQ的中间节点列表,并转发该路由请求分组RREQ;

§8.中间节点构造路由应答分组RREP,并反转路由请求分组RREQ中的中间节点列表作为路由应答分组RREP返回源节点的路径;

(7f10)分流节点清空第i条路由项目,待下次有数据分组查看该路由项时,直接丢弃数据分组;

(7f11)判断初始参数i是否大于等于分流节点路由表中路由项目条数M,若是,则执行步骤(7f12),否则,令i=i+1,并执行步骤(7f2);

(7f12)分流节点向邻居节点发送步骤(7f8)中的路由项目;

(7g)拥塞节点等待下一个拥塞周期T,并统计该周期内本节点发送给每个邻居节点ni的数据分组数和本节点从每个邻居节点ni接收的数据分组数

(7h)根据拥塞节点缓存队列的长度,判断是否拥塞,若是,则执行步骤(7i),否则,执行步骤(7j);

(7i)拥塞节点开启队列随机丢包机制,执行步骤(7k);

(7j)判断拥塞节点的分组输入速率λ与分流节点的输入速率λi之和是否小于等于拥塞节点的输出速率μ,若是,则执行步骤(7k),否则,返回步骤(7g);

(7k)拥塞节点删除记录的分流节点,并给它发送撤销拥塞信息,返回步骤1。

本发明通过的上述步骤,对于目的节点G,分流节点D和分流族节点E的数据分组不再经过拥塞节点A,而是经过一条按需式路由查找方法发现的新路由,该新路由依次为分流节点D到节点J到节点K到节点L到接入节点I到目的节点G,即D-J-K-L-I-G,从而到达了分流的效果。

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