发明内容
为了解决上述技术问题,本发明的目的是提供一种能动态调整权重值,提高灵活性的一种基于动态权重计算的队列调度方法。
本发明所采用的技术方案是:
一种基于动态权重计算的队列调度方法,包括以下步骤:
A、接收数据包,并对其进行分类进而将其存放于对应的业务队列中;
B、读取测量每个业务队列中数据包的信息;
C、根据读取的各业务队列中数据包的信息和收益最大判断准则,计算各个业务队列的最优权重值;
D、根据计算得到各业务队列的最优权重值,加权轮询调度器对业务队列中的数据包进行调度输出。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤A包括:
A1、接收数据包并读取其带宽需求和时延需求;
A2、根据数据包的带宽需求和时延需求,将其分为A类业务数据包、B类业务数据包和C类业务数据包;
A3、将分类后的数据包存放于对应的业务队列中。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤C中A类业务队列的最优权重值计算公式为:
其约束条件为:
wk≥1,wk∈N,
其中,wk表示除低时延队列外的其他A类业务的权重值,wl表示低延时队列的权重值,wi表示第i个队列的权重值,Ci和Cl分别表示队列i和队列l中一个数据包的价格,Li和Ll分别表示第i个队列和第l个队列的平均数据包大小,m表示队列的数量,表示第k个业务类别中每个业务流所应得到的带宽,B表示总带宽值,Nl和Nk分别表示低时延队列和其他业务队列中包含的激活的数据流的数量,ρ表示令牌桶的平均速率,σ表示令牌桶深度,表示Ll中的最小值,表示Lk中的最大值,Dl表示数据包的时延,r表示收益。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤C中B类业务队列的最优权重值计算公式为:
其约束条件为:
wk≥1,wk∈N,
其中,wk表示B类业务的权重值,wi表示第i个队列的权重值,Ci表示队列i中一个数据包的价格,Li表示第i个队列的平均数据包大小,m表示队列的数量,表示第k个业务类别中每个业务流所应得到的带宽,B表示总带宽值,Nk表示当前对应队列中包含的激活的数据流的数量,r表示收益。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤C中C类业务队列的最优权重值计算公式为:
其约束条件为:
wk≥1,wk∈N,
其中,wk表示C类业务的权重值,wi表示第i个队列的权重值,Ci表示队列i中一个数据包的价格,Li表示第i个队列的平均数据包大小,m表示队列的数量,Bk表示整个业务队列的带宽需求值,B表示总带宽值,Nk表示当前对应队列中包含的激活的数据流的数量,r表示收益。
本发明的有益效果是:
本发明一种基于动态权重计算的队列调度方法能根据业务流数据包的带宽需求和时延需求,以及当前网络的负载状况动态调整各业务队列中数据包的权重值,大大提高灵活性,能更好地适应网络及业务需求,有效提升网络服务质量。
具体实施方式
参考图1-图2,本发明一种基于动态权重计算的队列调度方法,包括以下步骤:
A、接收数据包,并对其进行分类进而将其存放于对应的业务队列中;
B、读取测量每个业务队列中数据包的信息;
C、根据读取的各业务队列中数据包的信息和收益最大判断准则,计算各个业务队列的最优权重值;
D、根据计算得到各业务队列的最优权重值,加权轮询调度器对业务队列中的数据包进行调度输出。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤A包括:
A1、接收数据包并读取其带宽需求和时延需求;
A2、根据数据包的带宽需求和时延需求,将其分为A类业务数据包、B类业务数据包和C类业务数据包;
A3、将分类后的数据包存放于对应的业务队列中。
其中,A类业务数据包表示对带宽和时延均有要求的业务,B类业务数据包表示仅对带宽有要求的业务,C类业务数据包表示对带宽和时延均没有要求的业务。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤C中A类业务队列的最优权重值计算公式为:
其约束条件为:
wk≥1,wk∈N,
其中,wk表示除低时延队列外的其他A类业务的权重值,wl表示低延时队列的权重值,wi表示第i个队列的权重值,Ci和Cl分别表示队列i和队列l中一个数据包的价格,Li和Ll分别表示第i个队列和第l个队列的平均数据包大小,m表示队列的数量,表示第k个业务类别中每个业务流所应得到的带宽,B表示总带宽值,Nl和Nk分别表示低时延队列和其他业务队列中包含的激活的数据流的数量,ρ表示令牌桶的平均速率,σ表示令牌桶深度,表示Ll中的最小值,表示Lk中的最大值,Dl表示数据包的时延,r表示收益。当r取得的最大值时,能有最优权重值。
进一步,加权轮询调度中有几个服务队列,且每一服务队列都有对应的权重值,这样在每一调度循环周期,队列i就能平均发送wiLi比特的数据,如果网络中共有m个输入队列,就可以得到在一个循环周期内传输的平均数据量为:
这样将所有队列的平均数据包大小以及权重值考虑进行,就可以近似得到第k个队列的输出带宽为:
k∈[1;m],
其中B为总带宽值。
假定每一业务类别对应加权轮询调度器中的一个队列,上式表示的是整个业务类别所分配的带宽,如果第k类业务包含Nk个激活的数据包,那么每一数据包所得到的带宽可表示为:
其中表示第k个业务类别中每个业务流所应得到的带宽。
当业务类别对时延保证具有一定的要求时,因为加权轮询调度器采用循环的方式来调度队列,数据包的处理时延可以表示为:
为了区别对待时延,引入低时延队列,它可以工作于两种模式:严格优先级模式和可选优先模式。在严格优先级模式下,加权轮询调度器通常首先从低时延队列输出数据包。采用可选优先级模式低时延队列就在其他业务类别之间进行调度,这样低时延队列中数据包的时延就为:
由于在加权轮询调度器中,每一队列在一个循环中允许传输的数据包不多于wl个。假设低时延队列通过索引l来识别,l∈[1;m]。这样就可以加权轮询调度器在一个循环周期内输出的数据量为:
这样就可以得到满足每一业务类别的所有带宽需求的最小权重值为:
低时延队列的最小权重为:
上述约束只为正常的队列和低时延队列保留带宽,但是他们不提供任何的延时保证,假定业务类别中的每一数据包都有时延需求,则采用令牌桶来进行考虑,令牌桶的平均速率为ρ,令牌桶深度为σ。因此,在理想情况下加权轮询调度器可通过σ/B秒来传输接收到令牌。然而,如果σ大于wlLl,则需要更多的时间来输出令牌,因为加权轮询调度器要开始调度下一队列。当调度器调度队列时,低时延队列中的数据包的时延为:
因此,在低时延队列中数据包的队列时延为:
其中D表示最差情况下的时延,表示低时延队列被其他队列打扰的次数。如果σ小于则;令牌在一次循环中就被传输完成。以前的表达式没有考虑初始时低时延队列延时的时间,因此,加入一个误差估计后,D为
基于σ和的值,可以得到以下两种情况:
上面第一式子对应数据包可以在第一个循环中输出完成,然后业务类别通常有多个数据包,这样其令牌桶深度就会大于σ小于Nlσ,这样数据率的时延为:
即:
在低时延队列模式下,其收益为:
其中Cl表示低时延队列中一个数据包的价格,Ci表示队列i中一个数据包的价格。
通常的自适应模型对于加权轮询调度器来说由价格函数和其约束组成,
提出的功能不是依赖于活动流的数量,实际上,一定时间周期内能够传输的数据量是一定的,因此,通过调整权重wi就可以得到瞬间收益。
最后一组权重约束条件指定权重值是整数值必须大于或等于1,它确保在一次轮询过程中每个队列至少有一个数据包能够被传输。
对于上式其约束条件为
wk≥1,wk∈N,
对于上述提到的自适应模型是一个整数线性优化问题,由于加权轮询调度器权重是一个整数值,因此上述优化问题的解必定是一系列整数值。其目标是计算得到权重值wl。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤C中B类业务队列的最优权重值计算公式为:
其约束条件为:
wk≥1,wk∈N,
其中,wk表示B类业务的权重值,wi表示第i个队列的权重值,Ci表示队列i中一个数据包的价格,Li表示第i个队列的平均数据包大小,m表示队列的数量,表示第k个业务类别中每个业务流所应得到的带宽,B表示总带宽值,Nk表示当前对应队列中包含的激活的数据流的数量,r表示收益。当r取得的最大值时,能有最优权重值。
作为所述的一种基于动态权重计算的队列调度方法的进一步改进,所述步骤C中C类业务队列的最优权重值计算公式为:
其约束条件为:
wk≥1,wk∈N,
其中,wk表示C类业务的权重值,wi表示第i个队列的权重值,Ci表示队列i中一个数据包的价格,Li表示第i个队列的平均数据包大小,m表示队列的数量,Bk表示整个业务队列的带宽需求值,B表示总带宽值,Nk表示当前对应队列中包含的激活的数据流的数量,r表示收益。当r取得的最大值时,能有最优权重值。
若通过价格收益来进行考虑,通过加权轮询调度器一次轮询来考虑其收益情况,因此,一次轮询的平均收益应为:
其中Ci表示队列i中一个数据包的价格。
如果某项应用只对于带宽保证有要求,其延时的约束就可移除不进行考虑,只需使用简化后的价格函数和约束条件:
其约束条件为
wk≥1,wk∈N,
对于上述提到的自适应模型是一个整数线性优化问题,由于加权轮询调度器权重是一个整数值,因此上述优化问题的解必定是一系列整数值。其目标是计算得到权重值wl。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。