队列调度方法及装置的制作方法

文档序号:7994349阅读:417来源:国知局
专利名称:队列调度方法及装置的制作方法
技术领域
本发明涉及数据传输技术领域,尤其涉及一种队列调度方法及装置。
背景技术
服务质量(Quality of krvice,简称QoS)是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术,其中队列调度技术是QoS中的关键技术。队列调度技术种类较多,目前路由器常用的队列调度技术是基于赤字的轮训调度(Deficit Round Robin, DRR)技术。在DRR技术中,路由器根据配额粒度(Quantum)与权重(Weight)配合形成累计份额(Deficit),所述配额粒度为一个调度周期被调度的队列的填充配额的粒度,所述累计份额为当前被调度的队列剩余的份额,路由器根据预先设置的队列顺序及所述累计份额依次进行调度,同一队列中相邻的报文被调度的时间间隔的变化称为时延抖动,具体实现方式为只要队列的累计份额大于0,路由器就会调度所述队列,将队列的累计份额减去所述队列中报文的报文长度,直到所述队列的累计份额最后变为0或负数时,在此次调度周期内停止所述队列的调度。其中,所述路由器中所有队列开始调度直到所有队列的累计份额都变为0或负数的时间为一个调度周期。当所有队列的累计份额都变为0或负数时,路由器将所述配额粒度与所述权重配合形成的累计份额增加到每个队列中变为0或负数的累计份额上,使得所述累计份额大于0以进行下一个调度周期的调度。在实现本发明实施例的过程中,发明人发现,现有技术至少存在以下技术问题当路由器中多个队列的报文长度差异较大及队列权重差异较大时,会导致一部分队列的累计份额长时间为0或负数而另一部分队列的累计份额长时间大于0,使得路由器一直调度另一部分队列,队列的时延抖动大。

发明内容
本发明的实施例提供一种队列调度方法及装置,能够解决现有技术中由于路由器中多个队列的报文长度差异较大及队列权重差异较大时导致在调度过程中的队列流量时延抖动大的问题。为达到上述目的,本发明的实施例采用如下技术方案一种队列调度方法,包括每次调度之后,从待调度队列中获取目标队列,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值;若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,将所述目标队列设置为等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列;
若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,将所述目标队列设置为等待队列并将原等待队列设置为待调度队列;调度待调度队列。一种队列调度装置,包括获取单元,用于每次调度之后,从待调度队列中获取目标队列,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值;第一设置单元,用于若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,将所述目标队列设置为等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列;第二设置单元,用于若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,将所述目标队列设置为等待队列并将原等待队列设置为待调度队列;调度单元,用于调度待调度队列。一种路由器,包括上述的队列调度装置。本发明实施例提供的队列调度方法及装置,由于每次调度之后,从待调度队列中获取目标队列,根据所述目标队列的粒度消耗参数的大小,获取到等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列,调度待调度队列并暂停等待队列的调度。这样使得累计份额消耗速率大的队列暂停调度,而去调度累计份额消耗速率小的队列。与现有技术相比,本发明实施例能够解决现有技术中由于路由器中多个队列的报文长度差异较大及队列权重差异较大时导致在调度过程中的队列流量时延抖动大的问题。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的队列调度方法的流程图;图2为本发明又一实施例提供的队列调度方法的流程图;图3为本发明又一实施例提供的队列调度方法中一轮调度中报文的调度结果示意图;图4为本发明实施例提供的队列调度装置的结构示意图一;图5为本发明实施例提供的队列调度装置的结构示意图二。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为使本发明技术方案的优点更加清楚,下面结合附图和实施例对本发明作详细说明。如图1所示,本发明实施例提供的队列调度方法,所述方法包括步骤101、每次调度之后,从待调度队列中获取目标队列。其中,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值。若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,执行步骤102 ;若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,执行步骤103。其中,所述第一阈值可以为0,但不仅局限于此。步骤102、将所述目标队列设置为等待队列。执行步骤104。其中,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列。步骤103、将所述目标队列设置为等待队列并将原等待队列设置为待调度队列。执行步骤104。步骤104、调度待调度队列。本发明实施例提供的队列调度方法,由于每次调度之后,从待调度队列中获取目标队列,根据所述目标队列的粒度消耗参数的大小,获取到等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列,调度待调度队列并暂停等待队列的调度。这样使得累计份额消耗速率大的队列暂停调度,而去调度累计份额消耗速率小的队列。与现有技术相比,本发明实施例能够解决现有技术中由于路由器中多个队列的报文长度差异较大及队列权重差异较大时导致在调度过程中的队列流量时延抖动大的问题。为了使得本领域的技术人员更好的理解本发明实施例提供过的技术方案,下面将通过又一个具体实例来进一步介绍本发明实施例中提供的队列调度方法。如图2所示,本发明又一实施例提供的队列调度方法,所述方法包括步骤201、每次调度之后,从待调度队列中获取目标队列。其中,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值。例如可以用如下公式表示Deficit Rate 2 = Deficit Raterpkt-len/ffeight ;其中,Deficit Rate 2表示调度之后的粒度消耗参数;
Deficit Rate1表示调度之前的粒度消耗参数;pkt-len表示待调度队列的报文长度;Weight表示待调度队列的权重;pkt-1 en/Weight表示累计份额消耗度速率。若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,执行步骤202。其中,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列。若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,执行步骤203。若所述目标队列对应的粒度消耗参数小于所述第一阈值,执行步骤204。其中,所述第一阈值可以为0,但不仅局限于此。步骤202、将所述目标队列设置为等待队列。执行步骤205。步骤203、将所述目标队列设置为等待队列并将原等待队列设置为待调度队列。执行步骤205。步骤204、将所述目标队列设置为搁置队列。执行步骤205。其中,所述搁置队列为本轮调度中不会再被调度的队列。步骤205、调度待调度队列。例如,以4个队列为例,若其中一个队列为等待队列,另一个队列为搁置队列,剩余的两个队列为待调度队列,则所述一个队列和另一个队列的调度机会可以平均分配给剩余的两个待调度队列,但不仅局限于此。步骤206、调度时若所述待调度队列个数为零,将所述等待队列设置为待调度队列并进行队列调度。步骤207、调度后若所述待调度队列以及所述等待队列的个数均为零,结束一轮调度。其中,所述一轮调度包括多次调度。此时将队列都设置为搁置队列,搁置队列的粒度消耗参数小于所述第一阈值,例如所述搁置队列的粒度消耗参数小于0。步骤208、根据配额粒度与搁置队列的粒度消耗参数生成调度之前的粒度消耗参数,使得所述调度之前的粒度消耗参数大于所述第一阈值。步骤209、将所述搁置队列设置为待调度队列。返回执行步骤201。通过步骤209,搁置队列设置为待调度队列,能够开始下一轮调度。下面针对上述方法列举一组数据来说明,值得说明的是,本组数据仅仅是本发明实施例中的其中一组数据,其目的是为了更清楚的说明本发明实施例,任何熟悉本领域的技术人员都能轻而易举地得到其他数据。例如以队列个数是4为例,4个队列分别为WO、WU W2、W3,4个队列的权重为 1:2:4: 1,配额粒度为100字节,4个队列的每个数据包得一个报文长度都为60字节, 根据上述公式Deficit Rate 2 = Deficit Ratefpkt-len/Weight得到如图3所示的一轮调度中报文的调度结果,其中DR为粒度消耗参数,所述方法中4个队列W0、W1、W2、W3中每一个队列的调度较均勻的分布于一轮调度中,则在多轮调度中,4个队列中每一个队列的调度较均勻,这样减小了队列的时延抖动。本发明又一实施例提供的队列调度方法,由于每次调度之后,从待调度队列中获取目标队列,根据所述目标队列的粒度消耗参数的大小,获取到等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列,调度待调度队列并暂停等待队列的调度。这样使得累计份额消耗速率大的队列暂停调度,而去调度累计份额消耗速率小的队列。与现有技术相比,本发明实施例能够解决现有技术中由于路由器中多个队列的报文长度差异较大及队列权重差异较大时导致在调度过程中的队列流量时延抖动大的问题。本发明实施例提供的队列调度装置,如图4所示,包括获取单元41,用于每次调度之后,从待调度队列中获取目标队列,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值。其具体实现方式参见图1中步骤101所示,此处不再赘述。第一设置单元42,用于若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,将所述目标队列设置为等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列。其具体实现方式参见图1中步骤102所示,此处不再赘述。第二设置单元43,用于若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,将所述目标队列设置为等待队列并将原等待队列设置为待调度队列。其具体实现方式参见图1中步骤103所示,此处不再赘述。调度单元44,用于调度待调度队列。其具体实现方式参见图1中步骤104所示,此处不再赘述。进一步的,如图5所示,所述装置,还包括第三设置单元45,用于若所述目标队列对应的粒度消耗参数小于所述第一阈值, 将所述目标队列设置为搁置队列。其具体实现方式参见图2中步骤204所示,此处不再赘述。进一步的,如图5所示,所述装置,还包括第四设置单元46,用于调度时若所述待调度队列个数为零,将所述等待队列设置为待调度队列。其具体实现方式参见图2中步骤206所示,此处不再赘述。进一步的,如图5所示,所述装置,还包括结束单元47,用于调度后若所述待调度队列以及所述等待队列的个数均为零,结束一轮调度。其中,所述一轮调度包括多次调度。其具体实现方式参见图2中步骤207所示,此处不再赘述。本发明实施例提供的队列调度装置,由于获取单元在每次调度后,从待调度队列中获取目标队列,第一设置单元及第二设置单元根据所述目标队列的粒度消耗参数的大小,获取到等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列,调度待调度队列并暂停等待队列的调度。这样使得累计份额消耗速率大的队列暂停调度,而去调度累计份额消耗速率小的队列。与现有技术相比,本发明实施例能够解决现有技术中由于路由器中多个队列的报文长度差异较大及队列权重差异较大时导致在调度过程中的队列流量时延抖动大的问题。本发明实施例提供的路由器,包括上述实施例中的队列调度装置,其具体实现方式参见上述队列调度装置的实施例。本发明实施例提供的路由器,由于通过路由器内的队列调度装置在每次调度之后从待调度队列中获取目标队列,根据所述目标队列的粒度消耗参数的大小,获取到等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列,调度待调度队列并暂停等待队列的调度。这样使得累计份额消耗速率大的队列暂停调度,而去调度累计份额消耗速率小的队列。与现有技术相比,本发明实施例能够解决现有技术中由于路由器中多个队列的报文长度差异较大及队列权重差异较大时导致在调度过程中的队列流量时延抖动大的问题。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
权利要求
1.一种队列调度方法,其特征在于,包括每次调度之后,从待调度队列中获取目标队列,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值;若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,将所述目标队列设置为等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列;若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,将所述目标队列设置为等待队列并将原等待队列设置为待调度队列;调度待调度队列。
2.根据权利要求1所述的方法,其特征在于,还包括若所述目标队列对应的粒度消耗参数小于所述第一阈值,将所述目标队列设置为搁置队列。
3.根据权利要求1-2任一项所述的方法,其特征在于,还包括调度时若所述待调度队列个数为零,将所述等待队列设置为待调度队列。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括调度后若所述待调度队列以及所述等待队列的个数均为零,结束一轮调度,所述一轮调度包括多次调度。
5.一种队列调度装置,其特征在于,包括获取单元,用于每次调度之后,从待调度队列中获取目标队列,所述待调度队列为每次调度之后允许下一次继续调度的队列,所述目标队列为所述待调度队列中粒度消耗参数最小的队列,所述粒度消耗参数为所述每次调度之前的粒度消耗参数减去累计份额消耗速率的差值,所述累计份额消耗速率为所述每次调度的报文长度与该待调度队列的权重的比值;第一设置单元,用于若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值, 且等待队列的个数为零,将所述目标队列设置为等待队列,所述等待队列为粒度消耗参数大于预先设置的第一阈值且下一次调度暂停调度的队列;第二设置单元,用于若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,将所述目标队列设置为等待队列并将原等待队列设置为待调度队列;调度单元,用于调度待调度队列。
6.根据权利要求5所述的装置,其特征在于,还包括第三设置单元,用于若所述目标队列对应的粒度消耗参数小于所述第一阈值,将所述目标队列设置为搁置队列。
7.根据权利要求5-6任一项所述的装置,其特征在于,还包括第四设置单元,用于调度时若所述待调度队列个数为零,将所述等待队列设置为待调度队列。
8.根据权利要求5-7任一项所述的装置,其特征在于,还包括结束单元,用于调度后若所述待调度队列以及所述等待队列的个数均为零,结束一轮调度,所述一轮调度包括多次调度。
9. 一种路由器,其特征在于,包括权利要求5-8任一项所述的队列调度装置。
全文摘要
本发明实施例公开了一种队列调度方法及装置,涉及数据传输技术领域,解决了现有技术中队列时延抖动大的问题。所述队列调度方法包括,每次调度之后,从待调度队列中获取目标队列,若所述目标队列对应的粒度消耗参数大于预先设置的第一阈值,且等待队列的个数为零,将所述目标队列设置为等待队列,若所述目标队列对应的粒度消耗参数大于所述第一阈值且小于等待队列对应的粒度消耗参数,将所述目标队列设置为等待队列并将原等待队列设置为待调度队列,调度待调度队列。本发明适用于基于赤字的轮训调度技术领域。
文档编号H04L12/56GK102420758SQ20111039019
公开日2012年4月18日 申请日期2011年11月30日 优先权日2011年11月30日
发明者张永平, 汤成, 王风利 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1