一种队列的控制方法及控制装置与流程

文档序号:16977857发布日期:2019-02-26 19:11阅读:151来源:国知局
一种队列的控制方法及控制装置与流程

本发明涉及领域互联网领域,尤其涉及一种队列的控制方法和控制装置。



背景技术:

qos(qualityofservice,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是用来解决网络延迟和阻塞等问题的一种技术。目前qos的主要技术一般包括流分类、流量管理、流量整形、拥塞管理等。系统首先对各种数据流和业务进行识别和区分,当数据包进入网络时进行流量管理;当数据包流出节点前进行流量整形;当系统产生拥塞时对队列进行拥塞管理。

当网络发生拥塞的时候,所有的数据流都有可能被丢弃。传统的qos队列管理机制,会对每个队列设置一个最大值(以包为单位),然后接受包进入队列直到队长达到最大值,接下来到达的包就要被拒绝进入队列直到队长下降,因此,丢包多是发生在队列满时,这会导致在很长的时间里,队列都处于充满或几乎充满的状态,导致网络质量下降,甚至发生“死锁”现象。

为满足用户对不同应用不同服务质量的要求,就需要网络能根据用户的要求分配和调度资源,在队列的当前使用长度超过预设阈值后,对不同优先级别的数据包提供不同的服务质量:对优先级别高的数据包提供较高的服务质量;对于优先级别低的数据包提供相对较低的服务质量,并优先丢弃。因此,需要在队列管理中针对不同的优先级别的需求,提供不同的处理机制。



技术实现要素:

本发明实施例所要解决的技术问题是提供一种队列的控制方法,以保证在队列的当前使用长度超过预设阈值时,对优先级别高的数据包提供较高的服务质量。

相应的,本发明实施例还提供了一种队列的控制装置、计算机可读存储介质及计算机程序产品,用以保证上述方法的实现及应用。

为了解决上述问题,本发明实施例公开了一种队列的控制方法,所述方法包括:

判断所述队列的当前使用长度是否超过预设阈值;

若所述队列的当前使用长度超过所述预设阈值,则根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包;

若所述队列的当前使用长度未超过所述预设阈值,则将所述当前数据包插入所述队列。

进一步的,所述根据当前数据包的配置信息计算与所述当前数据包对应的丢包率包括:

根据所述配置信息中的优先级系数和/或带宽限制系数计算与所述当前数据包对应的丢包率,所述带宽限制系数包括保证带宽系数和限制带宽系数,所述保证带宽系数小于所述限制带宽系数。

进一步的,所述根据所述配置信息中的优先级系数计算与所述当前数据包对应的丢包率包括:

计算所述配置信息中的优先级系数,所述优先级系数为所述当前数据包的优先级与所述队列支持的优先级总数的比值;

根据当前网络总的丢包率计算所述当前数据包的数据处理率;

根据所述计算得到的优先级系数与所述数据处理率的乘积,确定所述当前数据包对应的丢包率。

进一步的,所述根据所述配置信息中的优先级系数和带宽限制系数计算与所述当前数据包对应的丢包率包括:

根据所述配置信息中的优先级系数计算的丢包率及所述带宽限制系数,确定所述当前数据包对应的丢包率。

进一步的,所述根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包包括:

通过所述当前网络总的丢包率计算所述当前数据包的数据处理系数;

判断所述队列的当前使用长度是否小于等于所述队列的总长度与所述数据处理系数的乘积;

若小于等于,则将所述当前数据包插入所述队列;

若大于,则将所述当前数据包丢弃。

根据本发明的另一方面,还提供一种队列的控制装置,包括以下程序单元:

判断单元,用于判断队列的当前使用长度是否超过预设阈值;

计算单元,用于在所述队列的当前使用长度超过预设阈值时,根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

控制单元,用于根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包;

插入单元,用于当所述队列的当前使用长度未超过预设阈值时,将所述当前数据包插入所述队列。

所述计算单元,具体用于根据所述配置信息中的优先级系数和/或带宽限制系数计算与所述当前数据包对应的丢包率,所述带宽限制系数包括保证带宽系数和限制带宽系数,所述保证带宽系数小于所述限制带宽系数。

进一步的,所述计算单元包括:

计算模块,用于计算所述配置信息中的优先级系数,所述优先级系数为所述当前数据包的优先级与所述队列支持的优先级总数的比值;

所述计算模块,还用于根据当前网络总的丢包率计算所述当前数据包的数据处理率;

确定模块,用于根据所述计算得到的优先级系数与所述数据处理率的乘积,确定所述当前数据包对应的丢包率。

所述计算模块,还用于根据所述配置信息中的优先级系数计算的丢包率及所述带宽限制系数,确定所述当前数据包对应的丢包率。

进一步的,所述控制单元包括:

计算模块,用于通过所述当前数据包的丢包率计算所述当前数据包的数据处理系数;

判断模块,用于判断所述队列的当前使用长度是否小于等于所述队列的总长度与所述数据处理系数的乘积;

插入模块,用于若所述队列的当前使用长度小于等于所述队列的总长度与所述数据处理系数的乘积,则将所述当前数据包插入所述队列;

丢弃模块,用于若所述队列的当前使用长度大于所述队列的总长度与所述数据处理系数的乘积,则将所述当前数据包丢弃。

根据本发明的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:

判断队列的当前使用长度是否超过预设阈值;

若所述队列的当前使用长度超过预设阈值,则根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包;

若所述队列的当前使用长度未超过预设阈值,则将所述当前数据包插入所述队列。

根据本发明的另一方面,还提供一种电子设备,包括上述计算机可读存储介质,以及一个或多个处理器,用于执行所述计算机可读存储介质中的程序。

根据本发明的另一方面,还提供一种计算机程序产品,其包括处理器可执行的程序,其特征在于,该程序被处理器执行时实现以下步骤:

判断队列的当前使用长度是否超过预设阈值;

若所述队列的当前使用长度超过预设阈值,则根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包;

若所述队列的当前使用长度未超过预设阈值,则将所述当前数据包插入所述队列。

本发明的队列管理机制,可保证在队列长度超过预设阈值后,按照本发明的方法计算丢包率并依据队列总长度控制是否丢包,进而保证优先级别高的队列能够较少丢包,使其获得较高的服务质量。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种队列控制方法实施例的流程示意图。

图2为本发明另一种队列控制方法实施例的流程示意图。

图3为本发明一种队列控制装置实施例的结构示意图。

图4为本发明一种队列控制装置实施例中计算单元的结构示意图。

图5为本发明一种队列控制装置实施例中控制单元的结构示意图。

具体实施方式

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

本发明主要是针对拥塞控制中的队列管理机制。队列管理就是按照用户配置规则对进入系统的不同业务进行相应的调度与服务,使这些业务按照用户的预定策略进行转发。

如图1所示,一种队列的控制方法,所述方法包括:

步骤s110,判断队列的当前使用长度是否超过预设阈值。

预设阈值可以根据网络状态人为设置,不同的网络、不同的队列可以有不同的预设阈值。

具体的,预设阈值可以为设定的队列长度,即当队列的当前使用长度超过设定的队列长度后,执行步骤s120;否则,执行步骤s140。比如,预设阈值设定的队列长度为队列总长度的一半,即当前队列长度超过队列总长度一半时,执行步骤s120,否则,执行步骤s140。

作为本步骤的另一种实施方式,预设阈值也可以为设定的队列长度与队列总长度的比值,此时判断队列当前使用长度与队列总长度的比值是否超过该预设阈值,若超过,则执行步骤s120;否则,执行步骤s140。

步骤s120,若所述队列的当前使用长度超过预设阈值,则根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别。

不同的数据包有不同的优先级别,优先级别越高的数据包越希望获得高质量的服务,因此,可根据当前数据包的配置信息先对当前数据包进行优先级别的标记。

优先级别可以用优先级系数表示,也可以用带宽限制系数表示,还可以用优先级系数和带宽限制系数一起表示:

用优先级系数表示时,优先级系数为所述当前数据包的优先级与所述队列支持的优先级总数的比值。在同等带宽情况下,优先级系数高的数据包计算出来的丢包率会低于优先级系数低的数据包计算出来的丢包率。具体的,首先,计算配置信息中的优先级系数,之后,根据当前网络总的丢包率计算所述当前数据包的数据处理率,数据处理率=1-网络总的丢包率,最后,根据计算得到的优先级系数与数据处理率的乘积,确定所述当前数据包对应的丢包率。

由于一个数据包只有一个带宽限制类型,或者为保证带宽类型,或者为限制带宽类型,因此,用带宽限制系数表示时,具体又分为保证带宽系数和限制带宽系数,保证带宽系数小于限制带宽系数。由于保证带宽数据包的带宽限制系数小于限制带宽数据包的带宽限制系数,因此,同等条件下,用保证带宽系数计算出来的丢包率总是小于用限制带宽系数计算出来的丢包率。具体的,首先,计算配置信息中的带宽限制系数,之后,根据当前网络总的丢包率计算所述当前数据包的数据处理率,数据处理率=1-网络总的丢包率,最后,根据计算得到的带宽限制系数与数据处理率的乘积,确定所述当前数据包对应的丢包率。

用优先级系数和带宽限制系数一起表示时,可以将带宽限制类型与优先级绑定,比如,对于保证带宽的数据包赋予高的优先级,对于限制带宽的数据包赋予低的优先级。首先,计算配置信息中考虑了优先级系数的带宽限制系数,之后,根据当前网络总的丢包率计算所述当前数据包的数据处理率,数据处理率=1-网络总的丢包率,最后,根据计算得到的考虑了优先级系数的带宽限制系数与数据处理率的乘积,确定所述当前数据包对应的丢包率。

步骤s130,根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包。

具体的,首先,通过步骤s120计算得到的当前数据包的丢包率来计算所述当前数据包的数据处理系数,数据处理系数=1-当前数据包的丢包率,之后,判断队列的当前使用长度是否小于等于队列的总长度与数据处理系数的乘积:若小于等于,则将所述当前数据包插入所述队列,否则,将当前数据包丢弃。

步骤s140,若所述队列的当前使用长度未超过预设阈值,则将所述当前数据包插入所述队列。

本发明的队列管理机制,可保证在队列长度超过预设阈值后,按照本发明的方法计算丢包率并依据队列总长度控制是否丢包,进而保证优先级别高的队列能够较少丢包,使其获得较高的服务质量。

图2所示为本发明的另一实施例,在图1所示实施例的核心思想上,详细说明在用优先级系数和带宽限制系数一起表示优先级别的情况下,提供的一种队列的控制方法,具体包括如下步骤:

步骤s210,获取待传输的当前数据包。

当数据包到达系统后,先对数据包进行分类,相同的源地址和目的地址,相同的源端口号和目的端口号,相同的协议号的数据包均属于同一个流。

依据配置的优先级别对获取的当前数据包进行标记。

根据不同业务的优先级别,将不同的数据包缓存到不同的qos队列中,等待转发。

步骤s220,判断队列的当前使用长度是否超过预设阈值。

预设阈值为设定的队列长度,即当队列的当前使用长度超过设定的队列长度后,执行步骤s230;否则,执行步骤s250。

步骤s230,根据当前数据包的配置信息计算当前数据包对应的丢包率。

具体的,用优先级系数和带宽限制系数一起表示优先级别的情况下,获取当前数据包的优先级系数p、带宽限制类型q以及当前网络的总丢包率z,并根据其计算所述当前数据包的带宽限制系数α。

优先级系数p为所述当前数据包的优先级prio与队列支持的总优先级数量prio的比值,即

根据当前网络总的丢包率计算所述当前数据包的数据处理率β,β=1-z。

根据计算得到的优先级系数p与所述队列的数据处理率β的乘积,计算当前数据包的带宽限制系数α,进而确定所述当前数据包对应的丢包率t。

带宽限制系数会影响队列的丢包率计算结果,不同的优先级系数及带宽限制类型,会计算得到不同的带宽限制系数,换句话说,带宽限制系数的计算由于与优先级系数及带宽限制类型有关,因此计算出的带宽限制系数值的大小,将直接影响后续计算丢包率的值的大小。当当前数据包的带宽限制系数为保证带宽系数时,带宽限制系数α为α1=1-βp;当当前数据包的带宽限制系数为限制带宽系数时,带宽限制系数α为α2=1+βp。

当然,带宽限制系数α的计算公式并不局限于此,只要可以通过优先级系数及带宽限制类型限定带宽限制系数的计算方法均可以,比如,当所述当前数据包的带宽限制系数为保证带宽系数时,所述带宽限制系数α为α1=1-zp;当所述当前数据包的带宽限制系数为限制带宽系数时,所述带宽限制系数α为α2=1+zp。

获取所述当前数据包在所述队列中的位置x,并根据其与预设阈值γ的关系,计算丢包率t,t=α×(x-γ)。

步骤s240,根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包。

具体的,设队列长度为l,当计算所得的队列丢包率小于或等于0时,将当前数据包插入队列;当计算所得的队列的丢包率t大于0时,计算当前队列中的现有数据包数量是否小于或等于l×(1-t),若是,则将所述当前数据包插入队列;否则,将所述当前数据包丢弃。比如,队列长度为20个数据包,假设限制带宽的qos队列丢包率为20%,保证带宽的qos队列丢包率为10%,则对于限制带宽队列而言,当数据包在第16个以后就要进行丢弃处理了;对于保证带宽而言,当数据包在第18个以后就要进行丢弃处理了,相比较而言,保证带宽的数据包得到了更多的传送机会,因而会得到更好的服务质量。

步骤s250,若所述队列的当前使用长度未超过所述预设阈值,则将所述当前数据包插入所述队列。

本发明根据优先级和带宽限制类型来计算丢包率,可有效保证限制带宽的数据包不会占满队列,保证带宽的数据包可以占满队列,进而为高优先级的流量或保证带宽的流量提供了高质量的服务。而且本发明根据拥塞控制启动阈值,可在qos队列充满之前即对拥塞做出反应,主动考虑丢包的问题,以便为保障qos提供调整的空间,在超过拥塞控制启动阈值临界点时,及时启动拥塞控制机制,避免了现有技术中当网络发生拥塞时,无论是高优先级还是低优先级的包都会被大量丢弃,网络在相当长的时间内都会是满负荷的状况发生。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域的技术人员也应该知悉,说明书中所描述的实施例均为优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

根据本发明的另一方面,如图3所示,还提供一种队列的控制装置300,包括以下程序单元:

判断单元310,用于判断队列的当前使用长度是否超过预设阈值;

计算单元320,用于在所述队列的当前使用长度超过预设阈值时,根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

其中,计算单元320,具体用于根据所述配置信息中的优先级系数和/或带宽限制系数计算与所述当前数据包对应的丢包率,所述带宽限制系数包括保证带宽系数和限制带宽系数,所述保证带宽系数小于所述限制带宽系数。

如图4所示,计算单元320进一步包括:

计算模块321,用于计算所述配置信息中的优先级系数,所述优先级系数为所述当前数据包的优先级与所述队列支持的优先级总数的比值;还用于根据当前网络总的丢包率计算所述当前数据包的数据处理率;还用于根据所述配置信息中的优先级系数计算的丢包率及所述带宽限制系数,确定所述当前数据包对应的丢包率。

确定模块322,用于根据所述计算得到的优先级系数与所述数据处理率的乘积,确定所述当前数据包对应的丢包率。

控制单元330,用于根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包。

其中,如图5所示,控制单元330又进一步包括:

计算模块331,用于通过所述当前数据包的丢包率计算所述当前数据包的数据处理系数;

判断模块332,用于判断所述队列的当前使用长度是否小于等于所述队列的总长度与所述数据处理系数的乘积;

插入模块333,用于若所述队列的当前使用长度小于等于所述队列的总长度与所述数据处理系数的乘积,则将所述当前数据包插入所述队列;

丢弃模块334,用于若所述队列的当前使用长度大于所述队列的总长度与所述数据处理系数的乘积,则将所述当前数据包丢弃。

插入单元340,用于当所述队列的当前使用长度未超过预设阈值时,将所述当前数据包插入所述队列。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处请参见方法实施例的部分说明即可。

根据本发明的另一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现以下步骤:

判断队列的当前使用长度是否超过预设阈值;

若所述队列的当前使用长度超过预设阈值,则根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包;

若所述队列的当前使用长度未超过预设阈值,则将所述当前数据包插入所述队列。

根据本发明的另一方面,还提供一种计算机程序产品,其包括处理器可执行的程序,该程序被处理器执行时实现以下步骤:

判断队列的当前使用长度是否超过预设阈值;

若所述队列的当前使用长度超过预设阈值,则根据当前数据包的配置信息计算与所述当前数据包对应的丢包率,所述配置信息用于表示所述当前数据包的优先级别;

根据所述当前数据包的丢包率以及所述队列的总长度,控制是否丢弃所述当前数据包;

若所述队列的当前使用长度未超过预设阈值,则将所述当前数据包插入所述队列。

本发明实施例能够在拥塞发生之前,通过早期有目的的丢掉部分数据包,可有效防止拥塞发生,保证高优先级或保证带宽的流量享受高的质量服务。

需要说明的是,在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的程序模块可以是或者也可以不是物理上分开的,作为程序模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

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