CN103929372B - 主动队列管理方法和设备 - Google Patents
主动队列管理方法和设备 Download PDFInfo
- Publication number
- CN103929372B CN103929372B CN201310010306.0A CN201310010306A CN103929372B CN 103929372 B CN103929372 B CN 103929372B CN 201310010306 A CN201310010306 A CN 201310010306A CN 103929372 B CN103929372 B CN 103929372B
- Authority
- CN
- China
- Prior art keywords
- packet
- bag
- queue
- stream
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种主动队列管理方法和设备。该方法包括接收数据包;确定所述数据包属于的流,以及确定所述数据包到达时的当前队列长度;根据所述当前队列长度以及预设的队列阈值和预设的队列容量,对所述数据包以及所述数据包属于的流的包计数进行处理。本发明实施例可以实现基于流的主动队列管理,并且实现复杂度低。
Description
技术领域
本发明涉及通信技术,尤其涉及一种主动队列管理方法和设备。
背景技术
在网络中,由于总会存在数据输入速率大于数据输出速率的情况,比如多个端口向一个端口转发数据,所以无论多快的网络,拥塞都可能存在。拥塞影响数据的有效传输,对网络性能有不良影响。
目前主要有两类方法可以实现网络拥塞管理。一类是在源节点调整数据发送速率来控制拥塞;比如,传输控制协议(Transmit Control Protocol,TCP)拥塞控制机制就是一种源节点根据数据包丢失的情况控制数据发送速率来实现拥塞控制的方法。另一类是在数据的传输路径上对拥塞进行管理,主要是通过检测拥塞并以某种方式丢弃或标记数据包实现拥塞控制;丢弃或标记数据包可以将网络拥塞信息隐式或显式地传递到源节点,进而影响源节点的数据发送速率,所以也能实现拥塞控制。对于后一类方法,又可进一步分为两类。一类是被动的队列管理策略,以尾部丢包策略为代表。尾部丢包策略仅当队列满的时候才丢弃数据包。在这种策略下,队列平均长度大,通过队列的数据包会经历较长的排队时间,因此端到端延迟高,此外,当队列满时,需要进入队列的数据流会发生大量连续丢包。对于TCP流,这会引起超时重传,进而导致低吞吐率和全局同步问题。另一类是主动队列管理策略,以随机早期侦测(Random Early Detection,RED)()策略为代表。RED的基本思想是,在队列满之前,根据网络拥塞状况以一定概率丢包。RED的问题是实现复杂度高,并且丢包时不区分流。
发明内容
有鉴于此,本发明实施例提供了一种主动队列管理方法和设备,用以解决现有技术中存在的复杂度高、不区分流的问题。
第一方面,提供了一种主动队列管理方法,包括:
确定接收的数据包属于的流;
根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;
根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理。
结合第一方面,在第一方面的第一种可能的实现方式中,所述根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理,包括:
当所述阈值区间是所述当前队列长度小于最小的队列阈值时,将所述数据包放入队列,并将所述数据包属于的流的包计数加1;或者,
当所述阈值区间是所述当前队列长度大于或等于最小的队列阈值,且小于队列容量时,根据预设的阈值区间与丢包间隔的对应关系,确定所述当前队列长度对应的丢包间隔,根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理;或者,
当所述阈值区间是所述当前队列长度等于所述队列容量,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理,包括:
判断所述当前包计数是否小于所述当前队列长度对应的丢包间隔;
当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包放入队列,并将所述数据包所属的流的包计数加1;或者,
当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述预设的阈值区间与丢包间隔的对应关系表明:所述当前队列长度的值越大,则所述丢包间隔越小。
结合第一方面或第一方面的第一种至第三种任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述确定所述数据包属于的流,包括:
对所述数据包的包头信息进行哈希计算,得到哈希值,将得到的哈希值确定为所述数据包所属的流的流号。
第二方面,提供了一种主动队列管理设备,包括:
计算模块,用于确定接收的数据包属于的流;
定位模块,用于根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;
动作模块,用于根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理。
结合第二方面,在第二方面的第一种可能的实现方式中,所述动作模块包括:
第一处理单元,用于当所述阈值区间是所述当前队列长度小于最小的队列阈值时,将所述数据包放入队列,并将所述数据包属于的流的包计数加1;或者,
第二处理单元,用于当所述阈值区间是所述当前队列长度大于或等于最小的队列阈值,且小于队列容量时,根据预设的阈值区间与丢包间隔的对应关系,确定所述当前队列长度对应的丢包间隔,根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理;或者,
第三处理单元,用于当所述阈值区间是所述当前队列长度等于所述队列容量,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第二处理单元包括:
判断子单元,用于判断所述当前包计数是否小于所述当前队列长度对应的丢包间隔;
更新子单元,用于当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包所属的流的包计数加1;或者,当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,将所述数据包所属的流的包计数置为0;
包操作子单元,用于当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包放入队列;或者,当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,丢弃所述数据包。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述第二处理单元采用的所述预设的阈值区间与丢包间隔的对应关系表明:所述当前队列长度的值越大,则所述丢包间隔越小。
结合第二方面或第二方面的第一种至第三种任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述确定模块具体用于:
对所述数据包的包头信息进行哈希计算,得到哈希值,将得到的哈希值确定为所述数据包所属的流的流号;以及,确定所述数据包到达时的当前队列长度。
通过上述技术方案,本发明实施例在进行队列管理时,会确定数据包属于的流,会对该流的包进行针对性的处理,因此可以实现基于流的有区别地处理;在处理时可以根据预设的参数进行处理,相对于现有技术参数难以确定以及处理复杂的问题,可以降低处理复杂度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种主动队列管理方法的流程示意图;
图2为本发明实施例提供的另一种主动队列管理方法的流程示意图;
图3为本发明实施例提供的一种主动队列管理设备的结构示意图;
图4为本发明实施例提供的另一种主动队列管理设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好的与现有技术作对比,先对现有技术描述如下。
尾部丢包(Drop Tail,DT)是网络设备中最为常用的一种队列管理策略。尾部丢包队列管理策略仅在队列满时才将到达的数据包丢弃。其具体实现描述如下:
当一个数据包到达时,
首先,计算数据包进入队列后的队列长度L;
然后,比较L与队列容量Lmax,确定是否丢弃当前数据包:
1)如果L>Lmax,丢弃当前数据包;
2)否则,将数据包放入队列。
在上述描述中,队列长度和队列容量可以按字节计算也可以按包数目计算,因具体实现而异。
尾部丢包策略仅当队列满时才进行丢包,存在以下缺点:
第一,高端到端延迟。尾部丢包策略在队列满之前都不进行拥塞控制,所以队列平均长度大。数据包经过该队列时会经历较长的排队时间,从而导致高端到端延迟。
第二,低吞吐率。当队列满时,要进入该队列的所有数据流的数据包都会被丢弃。这一方面导致大量传输数据丢失,另一方面,对于TCP流而言,当它们发生丢包时,TCP拥塞控制会使得它们降低发送速率。大量TCP流同时降低发送速率,会导致网络吞吐率下降。尤其是当TCP流发生大量连续丢包时,它们往往不能快速重传,而只能通过超时重传恢复数据传输。由于超时时间长(一般为200ms),其间如果TCP发送窗口已满,在超时前TCP流将不再能发送数据,从而导致极低的网络吞吐率极低。
第三,TCP流全局同步。如上一点所述,TCP流同时丢包,使得它们的拥塞控制机制同时起作用,从而导致TCP流同步地改变发送速率,即TCP流全局同步现象。这种同步会使得低TCP流发送速率时网络低吞吐率,高TCP流发送速率时网络拥塞,
随机早期侦测(Random Early Detection,RED)是一种根据平均队列长度按一定概率进行丢包的主动队列管理策略。RED的基本思想是通过监控队列的平均长度来探测拥塞,一旦发现拥塞逼近,就随机地丢包以将网络拥塞反馈给源节点,使它们在队列溢出之前降低发送数据速率,以避免网络拥塞。RED使用了最小队列阈值(Tmin),最大队列阈值(Tmax),队列长度权值(w)和最大丢包概率(Pmax)等参数,它的具体实现如下:
当一个数据包到达时,
首先,计算平均队列长度(AvgQ)。RED采用当前和过去队列长度的指数加权移动平均(Exponential Weighted Moving Average,EWMA)计算平均队列长度。当队列非空时,计算方法可表示为:AvgQk=(1-w)AvgQk-1+w*Qk,其中AvgQk是当前平均队列长度,AvgQk-1是上一次平均队列长度,Qk是当前队列长度,w是权值。当队列空时,计算方法为:AvgQk=(1-w)MAvgQk-1,其中M是队列空闲期间可传输的数据包数,它由带宽、队列空闲时间以及平均包长计算得到。
其次,计算丢包概率(Pa)。当AvgQ<Tmin时,Pa=0;当AvgQ>Tmax时,Pa=1;否则,Pa=1/(1-count*Pb),其中Pb=Pmax*(AvgQ-Tmin)/(Tmax-Tmin),count是自上次丢包以来进入队列的包数目。
第三,以丢包概率Pa进行丢包:当Pa为0时不丢包;当Pa为1时丢包;当0<Pa<1时,按该概率丢包。
RED方法能实现较短的平均队列长度且避免全局同步,但存在以下缺点:
第一,运算复杂,处理时间长。由于AvgQ和Pa的计算涉及大量乘法运算,所以RED方法运算量大,处理时间长,资源要求高。
第二,RED性能受队列长度权值(w)和最大丢包概率(Pmax)等参数影响大,但这些参数的选取与环境相关度大,不容易确定。
第三,RED丢包时不区分流,这使得丢包在各流之间不公平,同时也不利于避免单个流连续丢包。
从上述描述可以看出,现有的主动队列管理策略都存在一定的问题,为此,本发明实施例给出一种新的主动队列管理策略,可以称为基于流的间隔丢包的主动队列管理策略。
本发明实施例提出的基于流的间隔丢包的主动队列管理策略,其基本思想是:根据当前队列的长度,不同的流按其历史信息以不同间隔丢包。其实现中涉及以下元素:一个哈希函数H(key),一张流记录表FTable,k个队列阈值参数Tj(其中,j=0,1,…,k-1且T0<T1<…<Tk-1),k个包间隔参数Ij(其中,j=0,1,…,k-1且I0>I1>…>Ik-1)、一个队列容量Lmax和一套基于流的间隔丢包机制。上述涉及的参数可以由实现者根据实际情况设定。具体实施例可以参见下述实施例。
参见图1,为本发明实施例提供的一种主动队列管理方法的流程示意图,包括:
11:确定接收的数据包属于的流;
可选的,可以对该数据包的包头信息进行哈希计算,得到哈希值,将得到的哈希值作为该数据包属于的流的流号。具有相同哈希值的数据包被认为属于同一个流。
用于哈希计算的包头信息可以由实现者具体指定,以以太网交换机为例,包头信息可以是以太网帧的源媒体接入控制(Media Access Control,MAC)地址或目的MAC地址。
哈希值的取值范围与流表容量有关,若流表容量为N个流表条目,则哈希值的取值为0到N-1。
流表用于记录各流的统计信息。流表的每一行是一个流条目,其行号就是流号,每个流条目存储该流自最近一次丢包以来成功进入队列的包数目,称为包计数(Cv)。流表中包计数的初始值为0,在具体实现中,流表可以是一个容量为N个流条目的大小的表格,如表1所示。为了防止包计数溢出,可以约定一个上限值,当Cv到达上限值后再对Cv自增,Cv值不改变。
表1
流号(行号) | 包计数(Cv) |
0 | C0 |
1 | C1 |
2 | C2 |
… | … |
N-1 | CN-1 |
12:根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;
当前队列长度可以用L表示。当前队列长度是指该数据包到达时的队列长度,不包含该数据包。例如,当该数据包是第一个数据包时,该数据包到达时队列为空,所以当前队列长度为0;当该数据包是第二个数据包时,如果前一个数据包仍在队列中,则当前队列长度为1,依此类推。
其中,可以预设一些队列阈值,例如,预设k个队列阈值,分别为Tj,其中,j=0,1,…,k-1且T0<T1<…<Tk-1。
另外,还可以预设队列容量Lmax,该队列容量是指队列的最大值,也就是说,当队列长度为Lmax时,表明队列满。
根据上述的L、Tj和Lmax,就可以确定出k+2个队列长度阈值区间,分别为[0,T0),[T0,T1),…,[Tk-2,Tk-1)、[Tk-1,Lmax)和[Lmax,Lmax]。
13:根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理;
可以根据L所在的阈值区间进行后续处理。其中处理包括数据包的处理,例如丢弃数据包或者将数据包放入队列,还包括数据包所属流的包计数Cv的更新,例如,将Cv加1或者置为0。
例如,当L所在的阈值区间是[0,T0)时,将数据包放入队列,并将Cv加1。而当L所在的阈值区间是[Lmax,Lmax],也就是说L=Lmax时,丢弃数据包,并将Cv置0。对于中间的阈值区间的具体处理可以参见后续实施例。
本实施例在进行队列管理时,会确定数据包属于的流,会对该流的包计算进行处理,因此可以实现基于流的处理;在处理时可以根据预设的参数进行处理,相当于现有技术参数难以确定以及处理复杂的问题,可以降低处理复杂度。
参见图2,上述13的具体的处理过程可以包括:
21:当所述阈值区间是所述当前队列长度小于最小的队列阈值时,将所述数据包放入队列,并将所述数据包属于的流的包计数加1。
也就是说,当L<T0时,不丢包,Cv加1。
22:当所述阈值区间是所述当前队列长度大于或等于最小的队列阈值,且小于队列容量时,根据预设的阈值区间与丢包间隔的对应关系,确定所述当前队列长度对应的丢包间隔,根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理;
也就是说,当Tj≤L<Tj+1(j=0,…,k-2)时或Tk-1≤L<Lmax时,根据当前的Cv和Ij进行处理。Ij是丢包间隔。
k个队列阈值得到的阈值区间[T0,T1),…,[Tk-2,Tk-1)和[Tk-1,Lmax)分别对应k个丢包间隔Ij(j=0,1,…,k-1)。当L位于某一队列阈值区间时,按对应的丢包间隔进行丢包。k个丢包间隔Ij(j=0,1,…,k-1)满足I0>I1>…>Ik-1,因此队列长度越大,对应的丢包间隔就越小,丢包频率就越高。需要说明的是,队列阈值和队列容量可以以数据包为单位表示也可以以字节为单位表示,因具体实现而异,本发明实施例都以数据包作单位为例进行说明。但是丢包间隔总是以数据包为单位。
也就是说,当L位于[T0,T1),…,[Tk-2,Tk-1)和[Tk-1,Lmax)中的任一区间时,就根据对应的Ij以及当前的Cv进行处理。例如,当L属于[T0,T1),就根据I0以及当前的Cv进行处理。当前的Cv是指处理前的该数据包属于的流的包计数,之后可以对该当前的Cv加1或置0,例如,当前的Cv为3,之后,可能Cv变为4,或者变为0。
具体的,对应的Ij以及当前的Cv进行处理可以包括:
判断所述当前包计数是否小于所述当前队列长度对应的丢包间隔;
当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包放入队列,并将所述数据包所属的流的包计数加1;或者,
当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
也就是说,当Cv<Ij,则不丢包,Cv加1,当Cv≥Ij,则丢包,Cv置0。
23:当所述阈值区间是所述当前队列长度等于所述队列容量,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
也就是说,当L=Lmax时,丢包,Cv置0。
通过上述流程可以完成一个数据包的处理,后续每个数据包可以依此处理。
下面结合上述流程给出两个具体例子。
举例一:假设流表容量为16,预设一个队列阈值T0=10和一个丢包间隔I0=1,预设队列容量Lmax=20。当前队列长度记为L。
假设依次到达的数据包分别为P0,P1,…,P11,它们经过哈希计算后的流号依次为0,1,3,4,0,3,3,0,3,1,3,3。并且为了便于描述队列长度,假设这些包到达期间没有包离开队列。下面描述队列管理机制的工作过程:
初始时,L为0;流表如表2所示,所有包计数皆为初始值0。
表2
流号 | 包计数(Cv) |
0 | 0 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
5 | 0 |
… | … |
15 | 0 |
当第一个数据包P0到来时,计算H(P0)得到流号v为0,比较L与队列阈值发现L<T0(因为L=0,T0=10),故将C0加1(C0变为1),把数据包P0放入队列,将P0放入队列后,L变为1。
当数据包P1,P2,…,P9到达时的情形与P0到达时类似。在将P9放入队列后,流表如表3所示,L为10。
表3
流号 | 包计数(Cv) |
0 | 3 |
1 | 2 |
2 | 0 |
3 | 4 |
4 | 1 |
5 | 0 |
… | … |
15 | 0 |
当数据包P10到来时,计算H(P10)得到流号v为3,比较L与队列阈值发现T0≤L<Lmax(因为L=10,T0=10,Lmax=20),故进一步比较C3和I0,发现C3>I0(因为C3=4,I0=1),因此丢弃数据包P10,并将C3置为0,此时流表如表4所示,L仍为10。
表4
流号 | 包计数(Cv) |
0 | 3 |
1 | 2 |
2 | 0 |
3 | 0 |
4 | 1 |
5 | 0 |
… | … |
15 | 0 |
当数据包P11到来时,计算H(P11)得到流号v为3,比较L与队列阈值发现T0≤L<Lmax(因为L=10,T0=10,Lmax=20),故进一步比较C3和I0,发现C3<I0(因为C3=0,I0=1),因此将数据包P11放入队列,并将C3加1,此时流表如表5所示,L变为11。
表5
流号 | 包计数(Cv) |
0 | 3 |
1 | 2 |
2 | 0 |
3 | 1 |
4 | 1 |
5 | 0 |
… | … |
15 | 0 |
举例二:假设流表容量为32,预设三个队列阈值(T0=10、T1=15和T2=20)和三个丢包间隔(I0=4、I1=2和I2=1),预设队列容量Lmax=40。当前队列长度记为L。
假设某一时刻的流表如表6所示,队列长度L=18。此时一个数据包P到达,计算H(P)得到流号v=4。
表6
流号 | 包计数(Cv) |
0 | 1 |
1 | 1 |
2 | 4 |
3 | 1 |
4 | 2 |
5 | 1 |
… | … |
31 | 0 |
首先,比较L和队列阈值,由于T1≤L<T2(因为T1=15,L=18,T2=20),则进一步比较C4和I1,发现C4≥I1(因为C4=2,I1=2),因此丢弃数据包P,并将C4置为0,此时流表如表7所示,L仍为18。
表7
流号 | 包计数(Cv) |
0 | 1 |
1 | 1 |
2 | 4 |
3 | 1 |
4 | 0 |
5 | 1 |
… | … |
31 | 0 |
本实施例可以通过主动检测队列长度进行丢包可以实现有效的主动的网络拥塞控制;通过基于流进行丢包,可以有效避免同一个数据流连续丢包;通过哈希函数确定每个数据包所属的流,可以实现丢包时所丢的包在各流之间分布更加公平;通过基于流和丢包间隔进行丢包处理,实现算法复杂度低、实现开销小。因此,相对于传统的尾部丢包策略,由于尾部丢包策略是队列满之后才进行拥塞控制,而本发明实施例是在队列满之前就进行了控制,可以避免端到端延迟高的问题;由于本发明实施例可以实现基于流的丢包控制,可以实现丢包在各流之间分布,因此可以避免尾部丢包的所有数据量同时丢包引起的低吞吐率和TCP流全局同步的问题。相对于传统的RED策略,本发明实施例的算法复杂度低,可以表明RED算法运算复杂、处理时间长、参数不易确定的问题;本发明实施例可以实现基于流的控制,可以避免RED不区分流的问题。
图3为本发明实施例提供的一种主动队列管理设备的结构示意图,该设备可以为网络设备中的中间节点,可以具体为基站、控制器、网关等。该设备30包括计算模块31、定位模块32和动作模块33;计算模块31用于确定接收的数据包属于的流;定位模块32用于根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;动作模块33用于根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理。
可选的,所述动作模块包括:
第一处理单元,用于当所述阈值区间是所述当前队列长度小于最小的队列阈值时,将所述数据包放入队列,并将所述数据包属于的流的包计数加1;或者,
第二处理单元,用于当所述阈值区间是所述当前队列长度大于或等于最小的队列阈值,且小于队列容量时,根据预设的阈值区间与丢包间隔的对应关系,确定所述当前队列长度对应的丢包间隔,根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理;或者,
第三处理单元,用于当所述阈值区间是所述当前队列长度等于所述队列容量,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
可选的,所述第二处理单元包括:
判断子单元,用于判断所述当前包计数是否小于所述当前队列长度对应的丢包间隔;
更新子单元,用于当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包所属的流的包计数加1;或者,当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,将所述数据包所属的流的包计数置为0;
包操作子单元,用于当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包放入队列;或者,当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,丢弃所述数据包。
可选的,所述第二处理单元采用的所述预设的阈值区间与丢包间隔的对应关系表明:所述当前队列长度的值越大,则所述丢包间隔越小。
可选的,所述确定模块具体用于:
对所述数据包的包头信息进行哈希计算,得到哈希值,将得到的哈希值确定为所述数据包所属的流的流号;以及,确定所述数据包到达时的当前队列长度。
在硬件实现上,以上计算模块、定位模块和动作模块可以以硬件形式内嵌于或独立于处理器中,也可以以软件形式存储于存储器中,以便于处理器调用执行以上各个模块对应的操作。该处理器可以为中央处理单元(CPU)、微处理器、单片机等。
请参考图4,其为本发明实施例所提供的另一种设备的结构示意图。如图所示,该设备40包括发射机41、接收机42、存储器43以及分别与发射机41、接收机42和存储器43连接的处理器44。当然,该设备还可以包括天线、基带处理部件、中射频处理部件、输入输出装置等通用部件,本发明实施例在此不再任何限制。
其中,存储器中存储一组程序代码,且处理器用于调用存储器中存储的程序代码,用于执行以下操作:
确定接收的数据包属于的流;
根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;
根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理。
需要说明的是,图3和图4所示的设备可以用于实现以上方法实施例所提供的任一种方法,且相关术语及具体实现等的描述同以上方法实施例,在此不再赘述。
本实施例可以通过主动检测队列长度进行丢包可以实现有效的主动的网络拥塞控制;通过基于流进行丢包,可以有效避免同一个数据流连续丢包;通过哈希函数确定每个数据包所属的流,可以实现丢包时所丢的包在各流之间分布更加公平;通过基于流和丢包间隔进行丢包处理,实现算法复杂度低、实现开销小。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (8)
1.一种主动队列管理方法,其特征在于,包括:
确定接收的数据包属于的流;
根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;
根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理;
所述根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理,包括:
当所述阈值区间是所述当前队列长度小于最小的队列阈值时,将所述数据包放入队列,并将所述数据包属于的流的包计数加1;或者,
当所述阈值区间是所述当前队列长度大于或等于最小的队列阈值,且小于队列容量时,根据预设的阈值区间与丢包间隔的对应关系,确定所述当前队列长度对应的丢包间隔,根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理;或者,
当所述阈值区间是所述当前队列长度等于所述队列容量,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理,包括:
判断所述当前包计数是否小于所述当前队列长度对应的丢包间隔;
当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包放入队列,并将所述数据包所属的流的包计数加1;或者,
当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
3.根据权利要求1所述的方法,其特征在于,所述预设的阈值区间与丢包间隔的对应关系表明:所述当前队列长度的值越大,则所述丢包间隔越小。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述确定接收的数据包属于的流,包括:
对所述数据包的包头信息进行哈希计算,得到哈希值,将得到的哈希值确定为所述数据包所属的流的流号。
5.一种主动队列管理设备,其特征在于,包括:
计算模块,用于确定接收的数据包属于的流;
定位模块,用于根据预设的队列阈值和预设的队列容量,确定所述数据包到达时的当前队列长度所在的阈值区间;
动作模块,用于根据所述阈值区间,对所述数据包以及所述数据包属于的流的包计数进行处理;
所述动作模块包括:
第一处理单元,用于当所述阈值区间是所述当前队列长度小于最小的队列阈值时,将所述数据包放入队列,并将所述数据包属于的流的包计数加1;或者,
第二处理单元,用于当所述阈值区间是所述当前队列长度大于或等于最小的队列阈值,且小于队列容量时,根据预设的阈值区间与丢包间隔的对应关系,确定所述当前队列长度对应的丢包间隔,根据所述当前队列长度对应的丢包间隔和所述数据包属于的流的当前包计数,对所述数据包以及所述数据包属于的流的包计数进行处理;或者,
第三处理单元,用于当所述阈值区间是所述当前队列长度等于所述队列容量,丢弃所述数据包,并将所述数据包所属的流的包计数置为0。
6.根据权利要求5所述的设备,其特征在于,所述第二处理单元包括:
判断子单元,用于判断所述当前包计数是否小于所述当前队列长度对应的丢包间隔;
更新子单元,用于当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包所属的流的包计数加1;或者,当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,将所述数据包所属的流的包计数置为0;
包操作子单元,用于当所述当前包计数小于所述当前队列长度对应的丢包间隔时,将所述数据包放入队列;或者,当所述当前包计数大于或等于所述当前队列长度对应的丢包间隔时,丢弃所述数据包。
7.根据权利要求5所述的设备,其特征在于,所述第二处理单元采用的 所述预设的阈值区间与丢包间隔的对应关系表明:所述当前队列长度的值越大,则所述丢包间隔越小。
8.根据权利要求5-7任一项所述的设备,其特征在于,所述计算模块具体用于:
对所述数据包的包头信息进行哈希计算,得到哈希值,将得到的哈希值确定为所述数据包所属的流的流号;以及,确定所述数据包到达时的当前队列长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310010306.0A CN103929372B (zh) | 2013-01-11 | 2013-01-11 | 主动队列管理方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310010306.0A CN103929372B (zh) | 2013-01-11 | 2013-01-11 | 主动队列管理方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103929372A CN103929372A (zh) | 2014-07-16 |
CN103929372B true CN103929372B (zh) | 2017-10-10 |
Family
ID=51147454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310010306.0A Active CN103929372B (zh) | 2013-01-11 | 2013-01-11 | 主动队列管理方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103929372B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453141B (zh) * | 2016-10-12 | 2019-11-15 | 中国联合网络通信集团有限公司 | 全局队列调整方法、业务流队列调整方法和网络系统 |
CN106789701B (zh) * | 2016-12-30 | 2019-04-26 | 北京邮电大学 | 一种数据中心中自适应ecn标记方法及装置 |
CN109391559B (zh) * | 2017-08-10 | 2022-10-18 | 华为技术有限公司 | 网络设备 |
CN109905331B (zh) * | 2017-12-08 | 2021-01-01 | 华为技术有限公司 | 队列调度方法及装置、通信设备、存储介质 |
CN108509148B (zh) * | 2018-02-07 | 2021-08-06 | 新华三技术有限公司 | 一种i/o请求处理方法以及装置 |
CN109347756A (zh) * | 2018-10-07 | 2019-02-15 | 南京理工大学 | 改善公平性的主动队列管理方法和设备 |
CN110113782A (zh) * | 2019-04-29 | 2019-08-09 | 惠州Tcl移动通信有限公司 | 数据传输方法、装置及存储介质 |
CN112054964B (zh) * | 2019-06-05 | 2023-11-28 | 中兴通讯股份有限公司 | 队列拥塞控制方法、装置、设备及存储介质 |
CN110391992B (zh) * | 2019-07-11 | 2021-02-23 | 清华大学 | 基于交换机主动队列管理的拥塞控制方法和装置 |
CN110266606B (zh) * | 2019-07-30 | 2020-11-27 | 中国矿业大学 | 一种边缘网络中主动队列管理优化方法及装置 |
CN113064738B (zh) * | 2021-03-29 | 2022-10-25 | 南京邮电大学 | 基于概要数据的主动队列管理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1379569A (zh) * | 2002-04-29 | 2002-11-13 | 清华大学 | 用于报文转发系统的提供比例丢失率区分的队列管理方法 |
CN1549508A (zh) * | 2003-05-09 | 2004-11-24 | ��Ϊ��������˾ | 一种系统流量控制方法 |
CN101414957A (zh) * | 2007-10-17 | 2009-04-22 | 北京中电华大电子设计有限责任公司 | 一种用于无线局域网的缓冲队列管理方法 |
CN102035719A (zh) * | 2009-09-29 | 2011-04-27 | 华为技术有限公司 | 一种报文处理方法和装置 |
-
2013
- 2013-01-11 CN CN201310010306.0A patent/CN103929372B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1379569A (zh) * | 2002-04-29 | 2002-11-13 | 清华大学 | 用于报文转发系统的提供比例丢失率区分的队列管理方法 |
CN1549508A (zh) * | 2003-05-09 | 2004-11-24 | ��Ϊ��������˾ | 一种系统流量控制方法 |
CN101414957A (zh) * | 2007-10-17 | 2009-04-22 | 北京中电华大电子设计有限责任公司 | 一种用于无线局域网的缓冲队列管理方法 |
CN102035719A (zh) * | 2009-09-29 | 2011-04-27 | 华为技术有限公司 | 一种报文处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103929372A (zh) | 2014-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103929372B (zh) | 主动队列管理方法和设备 | |
CN103929334B (zh) | 网络异常通知方法和装置 | |
US9998357B2 (en) | Multipath transmission based packet traffic control method and apparatus | |
US8509074B1 (en) | System, method, and computer program product for controlling the rate of a network flow and groups of network flows | |
KR101075724B1 (ko) | 통신 시스템에서 패킷 전송 속도 제한 장치 및 방법 | |
US10380047B2 (en) | Traffic-dependent adaptive interrupt moderation | |
US20130254886A1 (en) | Mitigating Low-Rate Denial-Of-Service Attacks in Packet-Switched Networks | |
CN110225474A (zh) | 一种多连接下的数据量上报方法 | |
CN106789701A (zh) | 一种数据中心中自适应ecn标记方法及装置 | |
CN105049368A (zh) | 一种混合网络下基于优先权的负载均衡算法 | |
WO2019153931A1 (zh) | 数据传输控制方法和装置、以及网络传输设备和存储介质 | |
CN107547430A (zh) | 一种报文发送方法及装置 | |
WO2023272532A1 (zh) | 一种拥塞处理方法、装置、网络设备以及存储介质 | |
CN107005538A (zh) | 数据传输的方法、装置和系统 | |
CN104507122B (zh) | 用于移动通信系统中数据链路层的流量控制方法及系统 | |
EP4181479A1 (en) | Method for identifying flow, and apparatus | |
CN104092566B (zh) | 一种区分服务的队列管理方法 | |
CN115442000A (zh) | 一种适用于低带宽、易损耗自组网络下的传输保障方法 | |
Kozačinski et al. | Configuration of quality of service parameters in communication networks | |
CN109067663A (zh) | 一种针对应用程序内控制请求响应速率的系统和方法 | |
CN104852856B (zh) | 用于pots设备的数据流量控制方法及系统 | |
CN108322402A (zh) | 报文处理方法、设备及系统 | |
Patel et al. | Comparative performance analysis of TCP-based congestion control algorithms | |
Baniamerian et al. | NCE: An ECN dual mechanism to mitigate micro-bursts | |
Monakhov et al. | Analysis Of Congestion Control In Data Channels With Frequent Frame Loss |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |