主动队列管理方法及系统与流程

文档序号:13168860阅读:361来源:国知局
主动队列管理方法及系统与流程

本发明涉及计算机领域,特别是涉及一种主动队列管理方法及系统。



背景技术:

队列管理分为主动队列管理和被动队列管理两种方式,被动队列管理主要是针对设定的固定的阈值进行丢包管理,这种管理方式较为笨拙,不能根据流量的实际情况进行丢包,所以目前采用主动队列管理的方式较为普遍。主动队列管理的核心方法也比较多,常见的red方法以及基于red方法的改进、blue算法,但是这些方法在网络拥塞时控制力度低和系统的吞吐率低。



技术实现要素:

由于现有的主动队列管理方法中丢包率计算方式缺乏公平性,从而导致现有技术的上述缺陷。

鉴于上述发现及为了克服上述现有技术的上述缺陷,本发明要解决的技术问题是提供一种主动队列管理方法及系统,用以增强队列管理的控制力度。

为解决上述技术问题,本发明中的一种主动队列管理方法,包括:

统计在本次更新时间的流公平参数,所述本次更新时间的流公平参数包括在本次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量;

获取在前次更新时间的流公平参数,所述前次更新时间的流公平参数包括在前次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量,以及前次更新时间的丢包率;

基于本次更新时间流的公平参数和前次更新时间的流公平参数,采用流公 平原则并结合blue算法,确定本次更新时间的丢包率;

基于本次更新时间的丢包率,进行主动队列管理。

作为本发明的主动队列管理方法的改进,所述方法还包括:

基于下式确定本次更新时间的所述丢包率:

式中,n为本次更新时间的tcp数据包连接的数量,last_n为前次更新时间的tcp数据包连接的数量,w为本次更新时间的平均窗口值,last_w为前次更新时间的平均窗口值,lenq为本次更新时间的缓冲区队列的长度,last_lenq为前次更新时间的缓冲区队列的长度,det为丢包率的变化幅度值,pmark是前次更新时间的丢包率,为本次更新时间的丢包率。

作为本发明的主动队列管理方法的另一种改进,所述基于本次更新时间的丢包率,进行主动队列管理的步骤,包括:

在确定的本次更新时间的丢包率达到预设的丢包率阈值时,将新进入缓冲区队列的tcp数据包丢弃。

作为本发明的主动队列管理方法的进一步改进,所述方法还包括:

确定在本次更新时间所有tcp数据包占用所述缓冲区队列的长度;

确定占用的所述缓冲区队列的长度和本次更新时间的缓冲区队列的长度的比值;

将所述比值设置为所述丢包率阈值。

作为本发明的主动队列管理方法的又一种改进,所述统计在所述缓冲区队列中所有tcp数据包的平均窗口值步骤,包括:

在所述缓冲区队列中判断每个以太网数据包上层是否是ip数据包;

在判定是ip数据包时,判断所述ip数据包上层是否为tcp数据包;

在判定是tcp数据包时,读取所述tcp数据包的syn报文的窗口值字段的值;

将读取的所有所述tcp数据包的窗口值字段的值进行平均,得到平均窗口值;

所述统计在所述缓冲区队列中tcp数据包连接的数量的步骤,包括:

从所述缓冲区队列的协议栈流表的中读取tcp数据包连接的数量。

为解决上述技术问题,本发明中的一种主动队列管理系统,包括:

参数统计模块,用于统计在本次更新时间的流公平参数,所述本次更新时间的流公平参数包括在本次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量;

参数记录模块,用于获取在前次更新时间的流公平参数,所述前次更新时间的流公平参数包括在前次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量,以及前次更新时间的丢包率;

丢包率计算模块,用于基于本次更新时间流的公平参数和前次更新时间的流公平参数,采用流公平原则并结合blue算法,确定本次更新时间的丢包率;

管理模块,用于基于本次更新时间的丢包率,进行主动队列管理。

作为本发明的主动队列管理系统的改进,所述丢包率计算模块基于下式确定本次更新时间的所述丢包率:

式中,n为本次更新时间的tcp数据包连接的数量,last_n为前次更新时间的tcp数据包连接的数量,w为本次更新时间的平均窗口值,last_w为前次更新时间的平均窗口值,lenq为本次更新时间的缓冲区队列的长度,last_lenq为前次更新时间的缓冲区队列的长度,det为丢包率的变化幅度值,pmark是前次更新时间的丢包率,为本次更新时间的丢包率。

作为本发明的主动队列管理系统的另一种改进,所述管理模块,具体用于在确定的本次更新时间的丢包率达到预设的丢包率阈值时,将在本次更新时间 进入的缓冲区队列的tcp数据包丢弃。

作为本发明的主动队列管理系统的进一步改进,所述管理模块,还用于确定在本次更新时间所有tcp数据包占用所述缓冲区队列的长度;

确定占用的所述缓冲区队列的长度和本次更新时间的缓冲区队列的长度的比值;

将所述比值设置为所述丢包率阈值。

作为本发明的主动队列管理系统的又一种改进,所述参数统计模块,还用于在所述缓冲区队列中判断每个以太网数据包上层是否是ip数据包;

在判定是ip数据包时,判断所述ip数据包上层是否为tcp数据包;

在判定是tcp数据包时,读取所述tcp数据包的syn报文的窗口值字段的值;

将读取的所有所述tcp数据包的窗口值字段的值进行平均,得到平均窗口值;以及

从所述缓冲区队列的协议栈流表的中读取tcp数据包连接的数量。

本发明有益效果如下:

本发明主动队列管理方法及系统通过采用流公平原则并结合blue算法,基于本次更新时间的流公平参数和前次更新时间的流公平参数,确定本次更新时间的丢包率,并据此进行主动队列管理,从而不仅能对拥塞流量进行有效的控制,同时也提高系统吞吐率。

附图说明

图1是本发明实施例中一种主动队列管理方法的详细流程图;

图2是本发明实施例中一种主动队列管理方法的吞吐量变化图;

图3是本发明实施例中主动队列管理方法的丢包率变化图;

图4是本发明实施例中一种主动队列管理系统的结构示意图。

具体实施方式

为了解决现有技术的问题,本发明提供了一种主动队列管理方法及系统,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不限定本发明。

本发明实施例中的一种主动队列管理方法,包括:

s101,统计在本次更新时间的流公平参数,所述本次更新时间的流公平参数包括在本次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量;

s102,获取在前次更新时间的流公平参数,所述前次更新时间的流公平参数包括在前次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量,以及前次更新时间的丢包率;

s103,基于本次更新时间流的公平参数和前次更新时间的流公平参数,采用流公平原则并结合blue算法,确定本次更新时间的丢包率;

s104,基于本次更新时间的丢包率,进行主动队列管理。

在本发明的一个实施方式中,所述方法还包括:

基于下式确定所述丢包率:

式中,n为本次更新时间的tcp数据包连接的数量,last_n为前次更新时间的tcp数据包连接的数量,w为本次更新时间的平均窗口值,last_w为前次更新时间的平均窗口值,lenq为本次更新时间的缓冲区队列的长度,last_lenq为前次更新时间的缓冲区队列的长度,det为丢包率的变化幅度值,pmark是前次更新时间的丢包率,为本次更新时间的丢包率。

具体说,s104步骤包括:

在确定的本次更新时间的丢包率达到预设的丢包率阈值时,将新进入缓冲区队列的tcp数据包丢弃。

在本发明的又一个实施方式中,所述方法还包括:

确定在本次更新时间所有tcp数据包占用所述缓冲区队列的长度;

确定占用的所述缓冲区队列的长度和本次更新时间的缓冲区队列的长度的比值;

将所述比值设置为所述丢包率阈值。

本方式中,将丢包率阈值采用动态设置,使得在主动队列管理的过程中进一步保证了流公平原则。当然,丢包率阈值也可以以其他形式进行设置,例如采用1个或多个经验值。

在本发明的另一个实施方式中,所述统计在所述缓冲区队列中所有tcp数据包的平均窗口值步骤,包括:

在所述缓冲区队列中判断每个以太网数据包上层是否是ip数据包;

在判定是ip数据包时,判断所述ip数据包上层是否为tcp数据包;

在判定是tcp数据包时,读取所述tcp数据包的syn报文的窗口值字段的值;

将读取的所有所述tcp数据包的窗口值字段的值进行平均,得到平均窗口值;

所述统计在所述缓冲区队列中tcp数据包连接的数量的步骤,包括:

从所述缓冲区队列的协议栈流表的中读取tcp数据包连接的数量。

以下举一具体应用例,详细说明。

如图1所示,一种主动队列管理方法包括:

1)检查时间轮询器是否到了更新时间,如果此时到了更新时间执行第2步骤,否则执行第5步骤。

2)根据以太网数据包的特征(tcpsyn包包含“窗口值”这个字段),统计队列中所有tcp数据包的平均窗口值大小,tcpsyn包的窗口值字段的值取平均。

即首先判断以太网数据包上层是否是ip数据包,然后根据ip数据包特征 判断上层是否为tcp数据包,根据tcp数据包特征即可统计出平均窗口值大小。

3)根据数据包占用队列的情况,可直接统计出已使用的队列占用空间比例,此时根据协议栈流表的特征可直接获取流表已建立连接的个数。

4)丢包率计算公式如下:

其中n为此时tcp连接的数量,即此刻流表中占用的数量,可由系统直接获取其数值,last_n为保存的上次连接数。而w为平均窗口值的大小,在快速包标记阶段同时计算而出的值,last_w为记录的上次平均窗口值大小的值。lenq代表此时缓冲区队列的长度,last_lenq代表上次记录的缓冲区队列长度。det是丢包率的变化幅度值,即丢包率增加或减小的幅度值,这里取上一次丢包率的幅度变化值。pmark是上一次更新时间内的丢包率,是本次更新时间内修正后的丢包率。

由公式1-1计算出此时的丢包率,根据此丢包率以及丢包率阈值来决定新进入的数据包是丢弃还是放在队列中正常服务。丢包率阈值可设置一个或者多个,这里设置为一个,计算方法为当前缓冲队列中已经占用的长度与缓冲队列总长度的比值。当丢包率大于该阈值时,将新到来的数据包丢弃;反之,则接收处理新到来的数据包。

5)将时间修改为当前时间。

本发明实施例中主动队列管理方法,有效解决web防火墙应对突发流量时一般的主动队列管理方式表现的控制力不足以及缺乏tcp间的流公平性问题,本发明根据丢包率和tcp流的数量以及平均端口值大小成二次方的关系,并结合blue算法在队列闲暇和拥塞时的控制幅度不同的思想发明出控制力较强、对拥塞控制比较明显的计算丢包率的方法。实验证明该方法不仅能对拥塞流量进行有效的控制,同时比其他方法也提高了系统吞吐率。

本发明中的一种主动队列管理系统,包括:

参数统计模块40,用于统计在本次更新时间的流公平参数,所述本次更新时间的流公平参数包括在本次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量;

参数记录模块42,用于获取在前次更新时间的流公平参数,所述前次更新时间的流公平参数包括在前次更新时间的缓冲区队列的长度、在所述缓冲区队列中所有tcp数据包的平均窗口值和tcp数据包连接的数量,以及前次更新时间的丢包率;

丢包率计算模块44,用于基于本次更新时间流的公平参数和前次更新时间的流公平参数,采用流公平原则并结合blue算法,确定本次更新时间的丢包率;

管理模块46,用于基于本次更新时间的丢包率,进行主动队列管理。

在本发明的一个实施方式中,所述丢包率计算模块基于下式确定:

式中,n为本次更新时间的tcp数据包连接的数量,last_n为前次更新时间的tcp数据包连接的数量,w为本次更新时间的平均窗口值,last_w为前次更新时间的平均窗口值,lenq为本次更新时间的缓冲区队列的长度,last_lenq为前次更新时间的缓冲区队列的长度,det为丢包率的变化幅度值,pmark是前次更新时间的丢包率,为本次更新时间的丢包率。

进一步说,所述管理模块,具体用于在确定的本次更新时间的丢包率达到预设的丢包率阈值时,将新进入缓冲区队列的tcp数据包丢弃。

具体说,所述管理模块,还用于确定在本次更新时间所有tcp数据包占用所述缓冲区队列的长度;

确定占用的所述缓冲区队列的长度和本次更新时间的缓冲区队列的长度的比值;

将所述比值设置为所述丢包率阈值。

在本发明的另一个实施方式中,所述参数统计模块,还用于在所述缓冲区队列中判断每个以太网数据包上层是否是ip数据包;

在判定是ip数据包时,判断所述ip数据包上层是否为tcp数据包;

在判定是tcp数据包时,读取所述tcp数据包的syn报文的窗口值字段的值;

将读取的所有所述tcp数据包的窗口值字段的值进行平均,得到平均窗口值;以及

从所述缓冲区队列的协议栈流表的中读取tcp数据包连接的数量。

下面通过在局域网真实环境中实施本发明实施例方法及系统,已验证本发明实施例方法及系统的效果。

(1)检测实例

为了验证方法的合理性正确性和有效性,实验将本方法(流公平的blue算法)与web防火墙原有的red、blue、blue+方法进行了参数对比。实验设计着重考察方法的正确性。

实验环境具体参见表1。

其中apache服务器的网络带宽为1000mbps,存放web文档。客户端利用apache压力测试工具测试apache服务器。客户端流量经过交换机、web防火墙到达apache,然后服务器将文档经web防火墙、交换机返回给客户机。

(2)实验及分析

如图2和图3所示,在该实验中,客户端采用专用http压力测试工具http_load对web防火墙的拥塞控制进行测试。http_load软件是针对web服务器的一种性能测试工具,以并行的方式运行,用以测试web服务器的最大吞吐量和对客户并发量的支持性能。

实验验证了流公平的blue算法的平均丢包率增长率要高于其他方法。这是因为在判断出来是拥塞流量时,流公平的blue算法能对数据包进行有效的过滤,能根据流量的连接数和窗口值大小进行数据包的丢弃。而其他方法的丢包率都是基于流量所占队列百分比进行丢弃,控制力度并不理想。

同时从吞吐率实验上也验证了流公平的blue算法的平均吞吐率要高于其他方法。这是因为在判断出来是拥塞流量时,流公平的blue算法能对数据包进行有效的过滤,从而对正常的服务质量影响减少到最小。而其他方法的丢包率都是基于流量所占队列百分比进行丢弃,再加上并不能针对tcp流量进行公平的过滤,所以存在将多条流的关键数据包全部丢弃或者死锁的现象。

结合本申请所公开示例描述的主动队列管理方法方法,可直接体现为硬件、由处理器执行的软件模块或者二者结合。例如,图4中所示功能框图中的一个或多个功能框图和/或功能框图的一个和/或多个组合(例如,参数统计模块、参数记录模块等),既可以对应于计算机程序流程的各个软件模块,亦可以对应于各个硬件模块。这些软件模块,可以分别对应于图1所示的各个步骤。这些硬件模块例如可利用现场可编程门阵列(fpga)将这些软件模块固化而实现。

软件模块可以位于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动硬盘、cd-rom或者本领域已知的任何其他形式的存储介质。可以将一种存储介质藕接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息;或者该存储介质可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路中。该软件模块可以存储在移动终端的存储器中,也可以存储在可插入移动终端的存储卡中。例如,若移动终端采用的是较大容量的mega-sim卡或者大容量的闪存装置,则该软件模 块可存储在该mega-sim卡或者大容量的闪存装置中。

针对图4描述的功能框图中的一个或多个和/或功能框图的一个或多个组合(例如,管理模块),可以实现为用于执行本申请所描述功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或晶体管逻辑器件、分立硬件组件或者其任意适当组合。针对图4中描述的功能框图中的一个或多个和/或功能框图的一个或多个组合,还可以实现为计算机设备的组合,例如,dsp和微处理器的组合、多个微处理器、与dsp通信结合的一个或多个微处理器或者任何其他这种配置。

虽然本申请描述了本发明的特定示例,但本领域技术人员可以在不脱离本发明概念的基础上设计出来本发明的变型。本领域技术人员在本发明技术构思的启发下,在不脱离本发明内容的基础上,还可以对本发明的方法做出各种改进,这仍落在本发明的保护范围之内。

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