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

文档序号:7846951阅读:130来源:国知局
专利名称:队列调度方法和装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种队列调度方法和装置。
背景技术
在路由器或交换机等负责队列调度的设备中,需要按照一定的规则调度等待发送的业务数据包,使得每个队列都能得到公平的调度机会,以便每个队列的数据都能均勻的发送出去。传统的方法是采用权重公平调度(Weighted Fair Queue,WFQ)。具体的,等待发送的业务数据包组成一个个队列在调度设备的输入端等待调度,首先给所有参与本次调度的队列都预设一个响应积分的初始值(比如0)。当一个队列有数据包通过时该队列的响应积分就相应的累积,对于单个队列来说通过的数据包字节数越大则累积的响应积分越多,同时每个队列都预定义一个权重比,该权重比反应了各个队列的优先级,使得优先级高的队列通过同样字节数的数据包时累积的响应积分少,而优先级低的队列通过同样字节数的数据包时累积的响应积分则相对较多。在队列调度的过程中,总是对所有响应积分都做比较运算并选择其中响应积分最小的队列进行调度,同时给该队列累积响应积分。这样每个队列都会均勻的得到调度并且按照预定义的权重比决定每个队列被调度的频率。但是由于选择调度队列时需要比较响应积分的大小,并且为了防止响应积分累积溢出需要周期性的统一削减所有响应积分,导致调度设备上比较和减法计算量大,而调度设备的计算能力是有限的,从而不能同时处理较大数量的输入队列,并且复杂的运算使得发送数据包的速率大幅降低,限制了输出带宽。为了能够同时处理较大数量的输入队列,并提高发送数据包的速率,现有技术中提出另一种队列调度方法,采用改进的借债式轮循调度(Modified Deficit Round Robin, MDRIO。该方法具体为轮流给予参与调度的各个队列调度的机会,一个队列调度一次后调度相邻的下一个队列,以此类推最后循环调度。这样轮流调度的方式不需要复杂的比较和减法运算,提高了调度发送数据包的速率,调度器无需具备强大的计算能力便可以支持较大数量的输入队列。但是该轮循调度的方法一次调度一个队列,并且必须在完成该队列所允许发送的所有数据后,才会轮到下一个队列。权重比大的队列在一次调度中允许发送的数据量大,当队列之间权重比相差较大时,当轮到权重较大的队列发送业务数据时,允许发送的数据量较多,权重较小的队列被搁置的时间便很长;而权重比较小的队列在一次调度中允许发送的数据量很少,其他队列需要等待的时间便很短;导致各队列不能均勻的发送业务数据。在实现上述队列调度的过程中,发明人发现现有技术中至少存在如下问题:WFQ 中实现了各队列均勻的发送业务数据,但是响应积分的比较使得计算复杂,导致不能处理大量的输入队列。MDRR能够满足较大数量的输入队列,但是每个队列被调度时允许发送的数据量相差太大,导致各个队列不能均勻的发送业务数据
发明内容
本发明的实施例提供一种队列调度方法和装置,既能实现大量队列的调度,又能保证各个队列均勻的发送业务数据。为达到上述目的,本发明的实施例采用如下技术方案—种队列调度方法,包括分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据;若确定所述待调度数据队列中有业务数据且允许所述待调度数据队列发送数据, 则将所述待调度数据队列的队列标记放入标记队列中;从所述标记队列中依次调度出所述待调度数据队列的队列标记,根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。一种队列调度装置,包括确定单元,用于分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据;入队单元,用于在所述确定单元确定所述待调度数据队列中有业务数据且允许所述待调度数据队列发送数据时,将所述待调度数据队列的队列标记放入标记队列中;发送单元,用于从所述标记队列中依次调度出所述待调度数据队列的队列标记, 根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。本发明实施例提供的队列调度方法和装置,通过分别判断各个队列是否被允许发送数据来实现队列的调度,无需进行队列之间复杂的比较运算,从而不要求调度器有较高的运算能力,能够实现大量队列的调度。并且,按照标记队列中的队列标记依次被调度的数据队列每次发送的数据量是定值,被调度的数据队列发送预订数据量的业务数据后便被搁置,轮到标记队列中下一个队列标记对应的待调度数据队列发送预订数据量业务数据,以这种方式依次调度标记队列中的队列标记对应的待调度数据队列,使得各个队列的业务数据能够均勻发送。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例1的方法流程图;图2为本发明实施例2的方法流程图;图3为本发明实施例3中的装置组成示意图;图4为本发明实施例3中的另一种装置组成示意图;图5为本发明实施例3中的另一种装置组成示意图;图6为本发明实施例3中的另一种装置组成示意图;图7为本发明实施例3中的另一种装置组成示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例1本发明实施例提供一种队列调度方法,如图1所示,该方法包括101、分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据。其中,确定待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据,是待调度数据队列达到调度要求的两个条件。在每次允许发送待调度数据队列发送的数据量更新时,或每次待调度数据队列接收到新的业务数据时,都会进行判断,必须同时满足两个条件才能得到调度,反之其中任何一个条件不满足时,均视为不满足调度条件,因此搁置不满足调度条件的队列。其中,若允许所述待调度数据队列发送的数据量为非负数,则确定允许所述待调度数据队列发送数据;若允许所述待调度数据队列发送的数据量不为非负数,则确定不允许所述待调度数据队列发送数据。102、若确定所述待调度数据队列中有业务数据且允许所述待调度数据队列发送数据,则将所述待调度数据队列的队列标记放入标记队列中。 其中,所述标记队列是由满足调度条件的待调度数据队列的队列标记组成的。根据队列的性质,将队列标记放入标记队列时是从队尾放入的,此时待调度数据队列是不发送业务数据的,只有位于标记队列的队头的队列标记所对应的队列才能发送数据。另外,在一个调度器中可以有多个标记队列,具体的,可以将待调度数据队列进行分组,每个组分别对应一个标记队列,通过多个标记队列同时处理队列标记的入队和出队,可以提高调度器的处理速度。需要说明的是,各标记队列的调度,可以采用轮循调度、严格优先级调度,也可以是其他规则的调度,对于各标记队列的调度方式本发明实施例不做限制。103、从所述标记队列中依次调度出所述待调度数据队列的队列标记,根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。其中,根据标记队列的性质,标记队列调度出队列标记的方式从队头开始依次向后调度的。标记队列的实现可以采用单条链表或多条链表的形式,并且每个标记队列都至少有一个队头、一个队尾以及表示标记队列是否为空的标识,以便各个待调度数据队列依次向数据接收队列发送业务数据。并且,为了保证业务数据的均勻性,被调度的数据队列只能发送不超过预定数据量的业务数据,也就是说每个队列被调度一次发送的数据量规定是相同的,但实际发送的数据量可以不相同。需要说明的是,发送的业务数据量是否达到了预定的数据量,是在每个完整的数据包的结尾判断的,并不会在达到预定的数据量时,立即在一个数据包发送的中途进行打断,保证了数据的完整性。预定数据发送量可以设定为很小,以便被调度的队列迅速完成业务数据的发送,从而让每个在标记队列的待调度数据队列轮流发送业务数据,不会因为各队列发送的数据量不均勻而长时间被搁置。需要说明的是,当被调度的数据队列中的业务数据的数据量不足预定数据发送量时,被调数据度的队列发送全部业务数据后便结束本次数据发送,轮到标记队列中的下一个队列标记对应的待调度数据队列发送业务数据。本发明实施例提供的队列调度方法,通过分别判断各个队列是否被允许发送数据来实现队列的调度,无需进行队列之间复杂的比较运算,从而不要求调度器有较高的运算能力,能够实现大量队列的调度。并且,按照标记队列中的队列标记依次被调度的数据队列每次发送的数据量是定值,被调度的数据队列发送预订数据量的业务数据后便被搁置,轮到标记队列中下一个队列标记对应的待调度数据队列发送预订数据量业务数据,以这种方式依次调度标记队列中的队列标记对应的待调度数据队列,使得各个队列的业务数据能够均勻发送。实施例2本发明实施例提供一种队列调度方法,如图2所示,该方法包括201、接收数据接收队列返回的实际允许所述数据接收队列发送的数据量。其中,所述数据接收队列是本级调度器的数据输出队列,同时也是下一级调度器的数据输入队列,即下一级调度器的待调度数据队列。和本级调度器的待调度数据队列一样,下一级调度器的待调度数据队列也有允许所述下一级调度器的待调度数据队列发送的数据量,并且随数据的发送而实时变化,用于判断是否允许下一级调度器的待调度数据队列发送数据。对于本级调度器而言,下一级调度器的待调度数据队列就是数据接收队列。所以,将上述实际允许数据接收队列发送的数据量反向发送给本级调度器,以便本级调度器接收上述实际允许数据接收队列发送的数据量后控制本级调度器的数据流量。202、将理论允许所述数据接收队列发送的数据量和实际允许所述数据接收队列发送的数据量进行比较,得到允许所述待调度数据队列发送的数据量的数据量调节参数。其中,理论允许所述数据接收队列发送的数据量是在系统设置、复位或编程等阶段预先定义的系统参数,可以是通过样本数据训练得到的经验值,用于为实际允许所述数据接收队列发送的数据量设定一个理论值。实际值在这个理论值附近波动时,代表网络处于合理的拥挤程度。当实际允许所述数据接收队列发送的数据量高于理论允许所述数据接收队列发送的数据量时,说明网络处于相对空闲的状态;当实际允许所述数据接收队列发送的数据量低于理论允许所述数据接收队列发送的数据量时,说明网络处于相对拥挤的状态。所以将实际值和理论值进行比较,例如求差值,得到的数据量调节参数便可以代表传输带宽的使用情况,以便调节各个待调度数据队列允许发送的数据量。203、将所述数据量调节参数进行低通滤波处理。其中,由于实际允许接收队列发送的数据量是随数据的发送而随时变化的,所以由实际允许接收队列发送数据量和理论允许接收队列发送的数据量比较得出的数据量调节参数也随时变化。然而数据量调节参数的瞬间大幅变化并不能代表输出带宽的总体使用情况,所以需要对数据量调节参数进行低通滤波处理,得到滤波后的数据量调节参数,以便调度器根据低通滤波处理后的数据量调节参数,调整允许所述待调度数据队列发送的数据量。
其中,低通滤波器可以是有限冲击响应(Finite Impulse Response,FIR),也可以是无限冲击响应(Infinite Impulse Response, IIR)等形式。例如,低通滤波模块由一个 IIR滤波器和一个饱和限幅器组成,数据量调节参数通过低通滤波器后取出了瞬间突变的杂波,然后通过饱和限幅器将数据量调节参数的幅值限制在W,l]区间中。204、根据低通滤波处理后的数据量调节参数,调整允许所述待调度数据队列发送的数据量。其中,调整允许所述待调度数据队列发送的数据量的具体步骤为根据所述待调度数据队列的保证信息率(Committed Information Rate, CIR)、最大信息率(Peak Information Rate, PIR)以及所述数据量调节参数进行计算,得到允许所述待调度数据队列发送的数据量的数据量增加值;将所述允许所述待调度数据队列发送的数据量,加上所述数据量增加值,得到调整后的允许所述待调度数据队列发送的数据量。根据调度器输出带宽使用情况来反向调节允许所述待调度数据队列发送的数据量,权重比大的待调度数据队列对应的允许所述待调度数据队列发送的数据量增加的快,权重比小的待调度数据队列对应的允许所述待调度数据队列发送的数据量增加的慢,从而控制调度器的各个输入队列的发送带宽。其中,数据量增加值可以通过预定义的调节函数计算得到。例如,预定义的调节函数中可以包含预定义的CHR和PIR、滤波处理后的数据量调节参数K等,例如调节函数可以是BW = CIR+(PIR-CIR) XK0计算得到的BW代表应分配给待调度数据队列发送数据的发送带宽,所以得到允许所述待调度数据队列发送的数据量每秒应增加的数据量增加值为BW 个字节。需要说明的是,可以根据各个待调度数据队列的优先级和权重比,预定义不同的 CIR^PIR和调节函数,将待调度数据队列分成若干个优先级组,或者单独管理每个待调度数据队列的权重,以实现灵活的输出带宽分配。205、分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据。当既确定待调度数据队列中有业务数据,又确定允许所述待调度数据队列发送数据时,执行步骤206 ;当两个条件中有任何一个不满足时,执行步骤209。其中,确定待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据,是待调度数据队列达到调度要求的两个条件。在每次允许待调度数据队列发送的数据量更新时,或每次待调度数据队列接收到新的业务数据时,都会进行判断,必须同时满足两个条件才能得到调度,反之其中任何一个条件不满足时,均视为不满足调度条件,因此搁置不满足调度条件的队列。其中,若允许所述待调度数据队列发送的数据量为非负数,则确定允许所述待调度数据队列发送数据;若允许所述待调度数据队列发送的数据量不为非负数,则确定不允许所述待调度数据队列发送数据。206、将所述待调度数据队列的队列标记放入标记队列中。其中,所述标记队列是由满足调度条件的待调度数据队列的队列标记组成的。根据队列的性质,将队列标记放入标记队列时是从队尾放入的,此时待调度数据队列是不发送业务数据的,只有位于标记队列的队头的队列标记所对应的队列才能发送数据。207、从所述标记队列中依次调度出所述待调度数据队列的队列标记,根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。其中,根据标记队列的性质,标记队列调度出队列标记的方式从队头开始依次向后调度的。标记队列的实现可以采用单条链表或多条链表的形式,并且每个标记队列都至少有一个队头、一个队尾以及表示标记队列是否为空的标识,以便各个待调度数据队列依次向数据接收队列发送业务数据。另外,在一个调度器中可以有多个标记队列,具体的,可以将待调度数据队列进行分组,每个组分别对应一个标记队列,通过多个标记队列同时处理队列标记的入队和出队,可以提高调度器的处理速度。需要说明的是,各标记队列的调度,可以采用轮循调度、严格优先级调度,也可以是其他规则的调度,对于各标记队列的调度方式本发明实施例不做限制。并且,为了保证业务数据的均勻性,被调度的数据队列只能发送不超过预定数据量的业务数据,也就是说每个队列被调度一次发送的数据量规定是相同的,但实际发送的数据量可以不相同。需要说明的是,是否发送的业务数据量是否达到了预定的数据量,是在每个完整的数据包的结尾判断的,并不会在达到预定的数据量时,立即在一个数据包发送的中途进行打断,保证了数据的完整性。预定数据发送量可以设定为很小,以便被调度的队列迅速完成业务数据的发送,从而让每个在标记队列的待调度数据队列轮流发送业务数据,不会因为各队列发送的数据量不均勻而长时间被搁置。需要说明的是,当被调度的数据队列中的业务数据的数据量不足预定数据发送量时,被调数据度的队列发送全部业务数据后便结束本次数据发送,轮到标记队列中的下一个队列标记对应的待调度数据队列发送业务数据。例如,规定队头的队列标记对应的待调度数据队列发送不超过1000字节的业务数据,当队列标记对应的待调度数据队列中总共的业务数据只有500字节,则将500字节的业务数据发送完毕后退出标记队列。当队列标记对应的待调度数据队列中总共的业务数据有 3000字节时,则按完整的数据包发送数据,假定一个数据包的长度为600字节,则该队列本次可以发送两个完整的数据包。此时若判断该队列的允许发送数据量为非负,并且还有待发送的数据,则将该队列对应的队列标记重新加入标记队列的队尾。208、将允许所述待调度数据队列发送的数据量减去所述待调度数据队列已发送的业务数据量。其中,每个待调度数据队列都对应一个动态可调的整形器shaper,在shaper中存储了预定义的调节函数,包括PIR和CIR的配置、允许待调度数据队列发送的数据量,以及允许待调度数据队列发送的数据量的上限值。shaper接收数据量调节参数k,并将接收到的动态变化的数据量调节参数k代入调节函数,计算得到允许待调度数据队列发送数据量的增加值,从而增加允许待调度数据队列发送数据量,起到调节各个队列的发送带宽的作用。同时,一旦待调度数据队列被调度,并发送业务数据后,被调度的数据队列对应的允许待调度数据队列发送数据量就会得到一个减少值,这个允许待调度数据队列发送数据量的减少值就是所述被调度的数据队列已发送的数据量。其中,允许待调度数据队列发送的数据量的上限值,是为了防止允许待调度数据队列发送的数据量溢出,若允许待调度数据队列发送的数据量达到上限值,则停止增加。另外,本级调度器的shaper还将允许待调度数据队列发送的数据量,反向发送给上一级调度器,作为上一级调度器判断输出带宽是否拥堵的依据。209、搁置待调度数据队列。
其中,在步骤208中待调度数据队列每次发送业务数据后,允许待调度数据队列发送的数据量都要减去已发送的数据量,此时允许待调度数据队列发送的数据量可能变成了负数,于是调度器将不再允许该待调度数据队列发送数据,所以搁置待调度数据队列。若网络拥挤或待调度数据队列的权重比小,则允许待调度数据队列发送的数据量的增加量就小,待调度数据队列搁置过程中允许待调度数据队列发送的数据量会逐渐增加,直到允许待调度数据队列发送的数据量再次成为非负数,才会允许该待调度数据队列发送数据。本发明实施例提供的队列调度方法,通过分别判断各个队列是否被允许发送数据来实现队列的调度,无需进行队列之间复杂的比较运算,从而不要求调度器有较高的运算能力,能够实现大量队列的调度。并且,按照标记队列中的队列标记依次被调度的数据队列每次发送的数据量是定值,被调度的数据队列发送预订数据量的业务数据后便被搁置,轮到标记队列中下一个队列标记对应的待调度数据队列发送预订数据量业务数据,以这种方式依次调度标记队列中的队列标记对应的待调度数据队列,使得各个队列的业务数据能够均勻发送。实施例3本发明实施例提供一种队列调度装置,如图3所示,包括确定单元31、入队单元 32、发送单元33。确定单元31,用于分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据。其中,确定待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据,是待调度数据队列达到调度要求的两个条件。必须同时满足两个条件才能得到调度,反之其中任何一个条件不满足时,均视为不满足调度条件,因此搁置不满足调度条件的队列。其中,若允许所述待调度数据队列发送的数据量为非负数,则确定允许所述待调度数据队列发送数据;若允许所述待调度数据队列发送的数据量不为非负数,则确定不允许所述待调度数据队列发送数据。入队单元32,用于在所述确定单元31确定所述待调度数据队列中有业务数据且允许所述待调度数据队列发送数据时,将所述待调度数据队列的队列标记放入标记队列中。其中,所述标记队列是由满足调度条件的待调度数据队列的队列标记组成的。根据队列的性质,将队列标记放入标记队列时是从队尾放入的,此时待调度数据队列是不发送业务数据的,只有位于标记队列的队头的队列标记所对应的队列才能发送数据。发送单元33,用于从所述标记队列中依次调度出所述待调度数据队列的队列标记,根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。其中,根据标记队列的性质,标记队列调度出队列标记的方式从队头开始依次向后调度的。标记队列的实现可以采用单条链表或多条链表的形式,并且每个标记队列都至少有一个队头、一个队尾以及表示标记队列是否为空的标识,以便各个待调度数据队列依次向数据接收队列发送业务数据。并且,为了保证业务数据的均勻性,被调度的数据队列只能发送不超过预定数据量的业务数据,也就是说每个队列被调度一次发送的数据量规定是相同的,但实际发送的数据量可以不相同。需要说明的是,是否发送的业务数据量是否达到了预定的数据量,是在每个完整的数据包的结尾判断的,并不会在达到预定的数据量时,立即在一个数据包发送的中途进行打断,保证了数据的完整性。预定数据发送量可以设定为很小,以便被调度的队列迅速完成业务数据的发送,从而让每个在标记队列的待调度数据队列轮流发送业务数据,不会因为各队列发送的数据量不均勻而长时间被搁置。需要说明的是,当被调度的数据队列中的业务数据的数据量不足预定数据发送量时,被调数据度的队列发送全部业务数据后便结束本次数据发送,轮到标记队列中的下一个队列标记对应的待调度数据队列发送业务数据。例如,规定队头的队列标记对应的待调度数据队列发送不超过1000字节的业务数据,当队列标记对应的待调度数据队列中总共的业务数据只有500字节,则将500字节的业务数据发送完毕后退出标记队列。当队列标记对应的待调度数据队列中总共的业务数据有 3000字节时,则按完整的数据包发送数据,假定一个数据包的长度为600字节,则该队列本次可以发送两个完整的数据包。此时若判断该队列的允许发送数据量为非负,并且还有待发送的数据,则将该队列对应的队列标记重新加入标记队列的队尾。进一步的,如图4所示,所述确定单元31包括第一确定模块311,用于确定允许所述待调度数据队列发送的数据量是否为非负数;第二确定模块312,用于在所述第一确定模块311确定所述允许所述待调度数据队列发送的数据量为非负数时,确定允许所述待调度数据队列发送数据;所述第二确定模块312还用于,在所述第一确定模块311确定所述允许所述待调度数据队列发送的数据量不为非负数时,确定不允许所述待调度数据队列发送数据。进一步的,如图5所示,所述确定单元31还包括接收模块313,用于在所述第一确定模块311确定允许所述待调度数据队列发送的数据量是否为非负数之前,接收数据接收队列返回的实际允许所述数据接收队列发送的
数据量。其中,所述数据接收队列是本级调度器的数据输出队列,同时也是下一级调度器的数据输入队列,即下一级调度器的待调度数据队列。和本级调度器的待调度数据队列一样,下一级调度器的待调度数据队列也有允许所述下一级调度器的待调度数据队列发送的数据量,并且随数据的发送而实时变化,用于判断是否允许下一级调度器的待调度数据队列发送数据。对于本级调度器而言,下一级调度器的待调度数据队列就是数据接收队列。所以,将上述实际允许数据接收队列发送的数据量反向发送给本级调度器,以便本级调度器接收上述实际允许数据接收队列发送的数据量后控制本级调度器的数据流量。比较模块314,用于将理论允许所述数据接收队列发送的数据量和实际允许所述数据接收队列发送的数据量进行比较,得到允许所述待调度数据队列发送的数据量的数据量调节参数。其中,理论允许所述数据接收队列发送的数据量是在系统设置、复位或编程等阶段预先定义的系统参数,可以是通过样本数据训练得到的经验值,用于为实际允许所述数据接收队列发送的数据量设定一个理论值。实际值在这个理论值附近波动时,代表网络处于合理的拥挤程度。当实际允许所述数据接收队列发送的数据量高于理论允许所述数据接
11收队列发送的数据量时,说明网络处于相对空闲的状态;当实际允许所述数据接收队列发送的数据量低于理论允许所述数据接收队列发送的数据量时,说明网络处于相对拥挤的状态。所以将实际值和理论值进行比较,例如求差值,得到的数据量调节参数便可以代表传输带宽的使用情况,以便调节各个待调度数据队列允许发送的数据量。调整模块315,用于根据数据量调节参数调整允许所述待调度数据队列发送的数据量。进一步的,如图6所示,所述确定单元31还包括滤波模块316,用于在所述比较模块314得到允许所述待调度数据队列发送的数据量的数据量调节参数之后,将所述数据量调节参数进行低通滤波处理。其中,由于实际允许接收队列发送的数据量是随数据的发送而随时变化的,所以由实际允许接收队列发送数据量和理论允许接收队列发送的数据量比较得出的数据量调节参数也随时变化。然而数据量调节参数的瞬间大幅变化并不能代表输出带宽的总体使用情况,所以需要对数据量调节参数进行低通滤波处理,得到滤波后的数据量调节参数,以便调度器根据低通滤波处理后的数据量调节参数,调整允许所述待调度数据队列发送的数据量。其中,低通滤波器可以是有限冲击响应(Finite Impulse Response,FIR),也可以是无限冲击响应(Infinite Impulse Response, IIR)等形式。例如,低通滤波模块由一个 IIR滤波器和一个饱和限幅器组成,数据量调节参数通过低通滤波器后取出了瞬间突变的杂波,然后通过饱和限幅器将数据量调节参数的幅值限制在W,l]区间中。所述调整模块315还用于,根据低通滤波处理后的数据量调节参数,调整允许所述待调度数据队列发送的数据量。所述调整模块315还用于,根据所述待调度数据队列的保证信息率(Committed Information Rate,CIR)、最大信息率(Peak Information Rate,PIR)以及所述数据量调节参数进行计算,得到允许所述待调度数据队列发送的数据量的数据量增加值;将所述允许所述待调度数据队列发送的数据量,加上所述数据量增加值,得到调整后的允许所述待调度数据队列发送的数据量。根据调度器输出带宽使用情况来反向调节允许所述待调度数据队列发送的数据量,权重比大的待调度数据队列对应的允许所述待调度数据队列发送的数据量增加的快,权重比小的待调度数据队列对应的允许所述待调度数据队列发送的数据量增加的慢,从而控制调度器的各个输入队列的发送带宽。其中,数据量增加值可以通过预定义的调节函数计算得到。例如,预定义的调节函数中可以包含预定义的CHR和PIR、滤波处理后的数据量调节参数K等,例如调节函数可以是BW = CIR+(PIR-CIR) XK0计算得到的BW代表应分配给待调度数据队列发送数据的发送带宽,所以得到允许所述待调度数据队列发送的数据量每秒应增加的数据量增加值为BW 个字节。需要说明的是,可以根据各个待调度数据队列的优先级和权重比,预定义不同的 CIR^PIR和调节函数,将待调度数据队列分成若干个优先级组,或者单独管理每个待调度数据队列的权重,以实现灵活的输出带宽分配。进一步的,如图7所示,该队列调度装置还包括减少单元34,用于在所述发送单元33根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据之后,将允许所述待调度数据队列发送的数据量减去所述待调度数据队列已发送的业务数据量。其中,每个待调度数据队列都对应一个动态可调的整形器shaper,在shaper中存储了预定义的调节函数,包括PIR和CIR的配置、允许待调度数据队列发送的数据量,以及允许待调度数据队列发送的数据量的上限值。diaper接收数据量调节参数k,并将接收到的动态变化的数据量调节参数k代入调节函数,计算得到允许待调度数据队列发送数据量的增加值,从而增加允许待调度数据队列发送数据量,起到调节各个队列的发送带宽的作用。同时,一旦待调度数据队列被调度,并发送业务数据后,被调度的数据队列对应的允许待调度数据队列发送数据量就会得到一个减少值,这个允许待调度数据队列发送数据量的减少值就是所述被调度的数据队列已发送的数据量。其中,允许待调度数据队列发送的数据量的上限值,是为了防止允许待调度数据队列发送的数据量溢出,若允许待调度数据队列发送的数据量达到上限值,则停止增加。需要说明的是,本发明实施例的各个功能模块的具体描述可以参考实施例1和实施例2对应的内容,本发明实施例这里不再一一赘述。本发明实施例提供的队列调度装置,通过分别判断各个队列是否被允许发送数据来实现队列的调度,无需进行队列之间复杂的比较运算,从而不要求调度器有较高的运算能力,能够实现大量队列的调度。并且,按照标记队列中的队列标记依次被调度的数据队列每次发送的数据量是定值,被调度的数据队列发送预订数据量的业务数据后便被搁置,轮到标记队列中下一个队列标记对应的待调度数据队列发送预订数据量业务数据,以这种方式依次调度标记队列中的队列标记对应的待调度数据队列,使得各个队列的业务数据能够均勻发送。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机, 服务器,或者网络设备等)执行本发明各个实施例所述的方法。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
权利要求
1.一种队列调度方法,其特征在于,包括分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据;若确定所述待调度数据队列中有业务数据且允许所述待调度数据队列发送数据,则将所述待调度数据队列的队列标记放入标记队列中;从所述标记队列中依次调度出所述待调度数据队列的队列标记,根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。
2.根据权利要求1所述的队列调度方法,其特征在于,所述确定是否允许所述待调度数据队列发送数据包括确定允许所述待调度数据队列发送的数据量是否为非负数;若所述允许所述待调度数据队列发送的数据量为非负数,则确定允许所述待调度数据队列发送数据;若所述允许所述待调度数据队列发送的数据量不为非负数,则确定不允许所述待调度数据队列发送数据。
3.根据权利要求2所述的队列调度方法,其特征在于,在确定允许所述待调度数据队列发送的数据量是否为非负数之前,还包括接收数据接收队列返回的实际允许所述数据接收队列发送的数据量;将理论允许所述数据接收队列发送的数据量和实际允许所述数据接收队列发送的数据量进行比较,得到允许所述待调度数据队列发送的数据量的数据量调节参数;根据数据量调节参数调整允许所述待调度数据队列发送的数据量。
4.根据权利要求3所述的队列调度方法,其特征在于,在得到允许所述待调度数据队列发送的数据量的数据量调节参数之后,该方法还包括将所述数据量调节参数进行低通滤波处理;所述根据数据量调节参数调整允许所述待调度数据队列发送的数据量为根据低通滤波处理后的数据量调节参数,调整允许所述待调度数据队列发送的数据量。
5.根据权利要求3或4所述的队列调度方法,其特征在于,所述根据数据量调节参数调整允许所述待调度数据队列发送的数据量包括根据所述待调度数据队列的保证信息率CIR、最大信息率PIR以及所述数据量调节参数进行计算,得到允许所述待调度数据队列发送的数据量的数据量增加值;将所述允许所述待调度数据队列发送的数据量,加上所述数据量增加值,得到调整后的允许所述待调度数据队列发送的数据量。
6.根据权利要求1-4任一项所述的队列调度方法,其特征在于,在根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据之后,还包括将允许所述待调度数据队列发送的数据量减去所述待调度数据队列已发送的业务数据量。
7.一种队列调度装置,其特征在于,包括确定单元,用于分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许所述待调度数据队列发送数据;入队单元,用于在所述确定单元确定所述待调度数据队列中有业务数据且允许所述待调度数据队列发送数据时,将所述待调度数据队列的队列标记放入标记队列中;发送单元,用于从所述标记队列中依次调度出所述待调度数据队列的队列标记,根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。
8.根据权利要求7所述的队列调度装置,其特征在于,所述确定单元包括 第一确定模块,用于确定允许所述待调度数据队列发送的数据量是否为非负数;第二确定模块,用于在所述第一确定模块确定所述允许所述待调度数据队列发送的数据量为非负数时,确定允许所述待调度数据队列发送数据;所述第二确定模块还用于,在所述第一确定模块确定所述允许所述待调度数据队列发送的数据量不为非负数时,确定不允许所述待调度数据队列发送数据。
9.根据权利要求8所述的队列调度装置,其特征在于,所述确定单元还包括接收模块,用于在所述第一确定模块确定允许所述待调度数据队列发送的数据量是否为非负数之前,接收数据接收队列返回的实际允许所述数据接收队列发送的数据量;比较模块,用于将理论允许所述数据接收队列发送的数据量和实际允许所述数据接收队列发送的数据量进行比较,得到允许所述待调度数据队列发送的数据量的数据量调节参数;调整模块,用于根据数据量调节参数调整允许所述待调度数据队列发送的数据量。
10.根据权利要求9所述的队列调度装置,其特征在于,所述确定单元还包括滤波模块,用于在所述比较模块得到允许所述待调度数据队列发送的数据量的数据量调节参数之后,将所述数据量调节参数进行低通滤波处理;所述调整模块还用于,根据低通滤波处理后的数据量调节参数,调整允许所述待调度数据队列发送的数据量。
11.根据权利要求9或10所述的队列调度装置,其特征在于,所述调整模块还用于 根据所述待调度数据队列的保证信息率CIR、最大信息率PIR以及所述数据量调节参数进行计算,得到允许所述待调度数据队列发送的数据量的数据量增加值;将所述允许所述待调度数据队列发送的数据量,加上所述数据量增加值,得到调整后的允许所述待调度数据队列发送的数据量。
12.根据权利要求7-11任一项所述的队列调度装置,其特征在于,还包括减少单元,用于在所述发送单元根据所述队列标记调度与所述队列标记对应的待调度数据队列,并使与所述队列标记对应的待调度数据队列发送不超过预定数据量的业务数据之后,将允许所述待调度数据队列发送的数据量减去所述待调度数据队列已发送的业务数据量。
全文摘要
本发明实施例公开了一种队列调度方法和装置,涉及通信技术领域,既能实现大量队列的调度,又能保证各个队列均匀的发送业务数据。本发明的方法包括分别确定每个待调度数据队列中是否有业务数据,以及确定是否允许待调度数据队列发送数据;若确定待调度数据队列中有业务数据且允许待调度数据队列发送数据,则将待调度数据队列的队列标记放入标记队列中;从标记队列中依次调度出待调度数据队列的队列标记,调度与队列标记对应的待调度数据队列,并使与队列标记对应的待调度数据队列发送不超过预定数据量的业务数据。本发明实施例主要用于队列调度的过程中。
文档编号H04L12/56GK102326369SQ201180001481
公开日2012年1月18日 申请日期2011年8月4日 优先权日2011年8月4日
发明者徐兴利 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1