本申请涉及通信领域,尤其涉及一种调度报文的方法和装置。
背景技术:
拥塞管理的中心内容是当拥塞发生时如何制定一个策略,用于决定报文转发的处理次序和丢弃原则,一般采用队列技术。队列指的是在缓存中对报文进行排序的逻辑。当流量的速率超过接口带宽或超过为该流量设置的带宽时,报文就以队列的形式暂存在缓存中。报文离开队列的时间、顺序以及各个队列之间报文离开的相互关系由队列调度算法决定。
加权差分轮询(英文全称:Weighted Deficit Round Robin,英文缩写:WDRR)调度算法的队列调度原理如下:一轮调度,为待调度的每个队列按权重分配一个可配置的服务额度,作为每个队列的可用带宽,并按照分配的服务额度发送各个队列的报文,每轮所分配的服务额度均以队列的权重因子为基数,服务额度与权重因子以及每个队列的权重的比项正相关;如果一个队列在本轮调度中的报文长度大于分配给该队列的服务额度,那么本轮调度中该报文将不被发送,并将本轮调度的服务额度加到该队列下一轮调度的服务额度中,作为队列下一轮调度的可用带宽。而在一些改进的WDRR算法中,如果一个队列在本轮调度中的报文长度大于分配给该队列的服务额度,且服务额度大于或等于零时,那么本轮调度中该报文仍会被发送出去,而超支的额度将在下一轮调度中扣除。在进一步改进的WDRR算法中,为了保证队列每次被选择时都能发出至少1个报文,要求服务额度大小至少为该队列中最大报文长度的大小,否则,若配置的服务额度较小,当上一轮调度中调度出两个较大的报文后,超支的服务额度大于本轮调度中分配的服务额度,那么扣除上一轮超支服务额度后服务额度将小于零,从而导致本轮调度无法调度出报文。
由于每个队列的服务额度至少为该队列的最大报文长度的大小,保证每次被调度选择时都能发出至少1个报文,而对于队列中最大报文的长度与其 他短报文相差较大的情况下,则有可能在一轮调度中发出较多的短报文,导致报文突发严重,并且该队列有可能经过几轮调度之后所有报文都被调度出,后续的调度过程中只会调度出其他队列的报文,这对于整个调度过程,会导致流量抖动过大,而影响了传输报文的稳定性。
技术实现要素:
本申请提供了一种调度报文的方法和装置,可实现提高报文传输的稳定性。
第一方面,提供一种调度报文的方法,包括:
确定第一队列在上一轮被调度出的报文中最大报文的长度;
根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;
根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
根据所述第一调度长度从所述第一队列中调度出相应数目的报文。
本申请所提供的调度报文的方法中,确定第一队列在上一轮次被调度出的报文中最大报文的长度,根据所述最大报文的长度设置所述第一队列的权重因子,这样,便能保证本轮调度中为所述第一队列分配权重因子后,扣除上一轮超支的额度后,第一队列的权重因子值大于零,即,使得所述第一队列在本轮调度中至少能调度出一个报文;所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括第二比项和所述第一队列对应的所述第一比项;根据所述第一调度长度从所述第一队列中调度出相应数目的报文。这样,在进行每轮调度之前,第一队列的权重因子均为动态设置,既保证了每轮调度均能从所述第一队列中调度出至少一个报文,又能避免在一轮调度过程中因为权重因子过大调度过多报文造成的报文突发的问题,从而提高了报文传输的稳定性。
一种可能的实现方式中,当所述权重比的最大公约数不为1时,所述方 法还包括:
用所述最大公约数分别整除所述第一比项与所述第二比项。
本申请的调度报文的方法,若第一队列与第二队列的权重比较大,那么在一轮调度中,基于分配的权重因子与权重比的比项所得到的调度长度较大,所能调度出的报文数目也较多,会导致报文突发严重。本申请的报文调度方法中,当第一队列与第二队列的权重比的最大公约数不为1时,则用所述最大公约数分别整除所述第一比项与所述第二比项,这样,使得第一比项与第二比项都较小,从而在一轮调度中,所得到的调度长度较小,从而所调度出的报文较少,减轻了报文突发状况。
例如,第一队列与第二队列发送报文按定长包100字节,配置权重因子为100字节,两个队列的权重比为10:20,那么,所述第一队列对应的第一比项为10,所述第二队列对应的第二比项为20,在一轮调度中,第一队列的调度长度为100*10=1000字节,因此,第一队列将被调度出10个报文,第二队列的调度长度为100*20=2000字节,因此,第二队列将被调度出20个报文。而所述第一队列与所述第二队列的权重比的最大公约数为10,那么,本申请的报文调度方法中,还可以用所述最大公约数10分别整除所述第一比项10与所述第二比项20,得到所述第一队列与所述第二队列的权重比为1:2,所以,通过本申请的调度报文的方法中,在一轮调度中,第一队列的调度长度为100*1=100字节,第一队列将被调度出一个报文,第二队列的调度长度为100*2=200字节,第二队列将被调度出两个报文。
一种可能的实现方式中,所述根据所述第一调度长度从所述第一队列中调度出相应数目的报文包括:
根据所述第一调度长度的加权值从所述第一队列中调度出相应数目的报文;所述第一调度长度的加权值为:所述第一调度长度除以权重系数,所述权重系数为2N;所述N满足:所述第一比项与所述第二比项中最小的比项大于或等于2N,且小于2N+1。
本申请的调度报文的方法,当配置第一队列与第二队列的权重比为7:11这类最小的比项不为1,且无法进行最大公约数相约为较小的权重比时,若以此权重比进行报文调度,那么在一轮调度中,所计算得到的调度长度较大, 被调度出的报文会比较多,同样会引起报文突发的问题。所以在本申请报文调度方法中,计算出调度长度后,再将调度长度除以权重系数得到一个服务额度,并以此服务额度作为调度队列中报文数目的长度。由于在物理实现中,报文一般取值2的整数次幂,所以权重系数为2N,所述N满足:所述第一比项与第二比项中最小的比项大于或等于2N,且小于2N+1,这样,使得计算得到较大的调度长度后,除以合适的权重系数,得到合理的服务额度,使得报文调度确保每次调度的最小权重队列出队1~2个报文,以减少因最小权重配置值非1引入的报文突发。
第二方面,提供了一种调度报文的装置,所述调度报文的装置具有实现上述方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
一种可能的实现方式中,本申请所提供的调度报文的装置包括发送器和处理器;其中,
所述处理器,用于确定第一队列在上一轮次被调度出的报文中最大报文的长度;
所述处理器还用于,根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;
所述处理器还用于,根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
所述发送器,用于根据所述第一调度长度从所述第一队列中调度出相应数目的报文。
另一种可能的实现方式中,所述调度报文的装置包括:
确定单元,用于确定第一队列在上一轮次被调度出的报文中最大报文的长度;
设置单元,用于根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;
第一计算单元,用于根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
调度单元,用于根据所述第一调度长度从所述第一队列中调度出相应数目的报文。
附图说明
图1为本申请提供的一种调度报文的方法的示意图;
图2为本申请提供的另一调度报文的方法的示意图;
图3为本申请提供的一种调度报文的装置的结构示意图;
图4为本申请提供的另一种调度报文的装置的结构示意图。
具体实施方式
本申请提供了一种调度报文的方法,用于提高了报文传输的稳定性。
参照图1所示,本申请提供了一种调度报文的方法,包括:
101、确定第一队列在上一轮次被调度出的报文中最大报文的长度;
网络设备,具体为网络设备中的调度报文的装置,在设置所述第一队列的权重因子之前,先确定所述第一队列在上一轮次被调度出的报文中最大报文的长度。
102、根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;
在每轮调度中,需要给每个队列设置带宽,才能调度出队列中的报文,所以需要在每轮调度中为每个队列设置权重因子。为了防止为第一队列设置的权重因子过大,从而导致在当前轮次调度中便调度出较多的报文,导致各个队列的调度不平均,后续则会造成其他队列的流量突发严重,造成整个调度中流量抖动过大,而影响了报文传输的稳定,所以所述权重因子还需要小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度,所述预设门值不宜设置过大,所述预设门值可以接近所述最大报文的长度,所述预设门值的上限设置应符合使得本申请的调度报文的方法能够解决现有技术中 报文突发严重,流量抖动过大的基本要求。
103、根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
由于网络设备不同的端口所设置的最大带宽可能不相同,为了防止报文传输拥塞,会给需要进行报文调度的两个或两个以上的队列设置权重比,而每个队列对应的比项可能不为相同,根据权重因子以及第一队列对应的第一比项便能计算得到第一调度长度,一般的,第一调度长度通过所述第一队列的权重因子与所述第一比项相乘得到。
104、根据所述第一调度长度从所述第一队列中调度出相应数目的报文;
每个队列中报文的排列顺序是既定的,在本轮调度中,排在最前的报文必然会被调度出,若第一调度长度减去被调度出的报文的长度得到的值仍然大于或等于零,则还能将下一个报文调度出。
本申请所提供的调度报文的方法中,确定第一队列在上一轮次被调度出的报文中最大报文的长度,根据所述最大报文的长度设置所述第一队列的权重因子,这样,便能保证本轮调度中为所述第一队列分配权重因子后,扣除上一轮超支的额度后,第一队列的权重因子值大于零,即,使得所述第一队列在本轮调度中至少能调度出一个报文;所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括第二比项和所述第一队列对应的所述第一比项;根据所述第一调度长度从所述第一队列中调度出相应数目的报文。这样,在进行每轮调度之前,第一队列的权重因子均为动态设置,既保证了每轮调度均能从所述第一队列中调度出至少一个报文,又能避免在一轮调度过程中因为权重因子过大调度过多报文造成的报文突发的问题,从而提高了报文传输的稳定性。
在图1所示方法的基础上,进一步地,请参照图2所示,本申请提供了另一调度报文的方法,包括:
201、当权重比的最大公约数不为1时,用所述最大公约数分别整除所述 第一比项与第二比项;
在所述对两个或两个以上的队列进行权重比的配置之后,可能配置的权重比较大,比如第一队列与第二队列的权重比配置为10:20,由于调度长度是通过权重因子与权重比的比项相乘所得到的,所以会造成调度长度过大,从而在当前轮次调度中调度出过多的报文。因为10:20与1:2相等,当所述第一比项与第二比项的最大公约数不为1时,网络设备,具体为网络设备中的调度报文的装置,可以先对所述第一比项与第二比项进行最大公约数相约,即,用所述最大公约数分别整除所述第一比项与所述第二比项。
202、确定第一队列在上一轮次被调度出的报文中最大报文的长度;
详细内容参照步骤101所述。
可选的,若本轮调度为所述第一队列的第一次调度时,则可获取所述第一队列中最大报文的长度,并根据所述第一队列中最大报文的长度设置权重因子。
203、根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;所述权重因子取值2的整数次幂;所述预设门值取值2的M次幂(2M),所述M满足:所述最大报文的长度大于2的(M-1)次幂(2M-1),且小于或等于2的M次幂(2M);
由于网络设备在带宽的物理分配上均是以2的整数次幂实现的,所以为了实现方便,权重因子也可取值2的整数次幂。例如上一轮次的调度出队报文均是100字节,那么本轮调度中权重因子quantum=128,若上一轮此调度的最大报文长度是251字节,那么当前轮次中权重因子quantum=256字节,若上一轮次调度的最大报文长度是500字节,那么这一轮次权重因子quantum=512字节。
204、根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
详细内容参照步骤103所述。
205、根据所述第一调度长度的加权值从所述第一队列中调度出相应数目 的报文;所述第一调度长度的加权值为:所述第一调度长度除以权重系数,所述权重系数为2的N次幂(2N),所述N满足:所述第一比项与所述第二比项中最小的比项大于或等于2的N次幂(2N),且小于2的(N+1)次幂(2N+1);
由于在配置队列权重比时,可能会配置例如7:11、7:13这样的权重比,其中最小比项不为1,而最大公约数为1,因此无法替换为较小的等值权重比。若配置这类的权重比,那么每一轮所分配的调度长度值会很大,导致在一轮调度中,调度出较多的报文。例如,第一队列中有7个报文,第二队列中有20个报文,两个队列发送报文按定长包100字节,配置权重因子quantum=100字节,两个队列的权重比为7:11,即每轮调度前按权重分配队列调度长度,第一队列分配(100*7)=700字节,第二队列分配(100*11)=1100字节。那么在第一轮调度中,第一队列的7个报文全部被调度出,第二队列调度出11个报文,第二轮调度中,就只能调度出第二队列剩余的9个报文,这样,则引起了较大的流量抖动。
所以在本申请的报文调度方法中,在配置队列权重比的同时,配置权重系数ratio,权重系数ratio取值2N,根据权重系数ratio进行相应的服务额度增值进行优化。具体操作如下:
根据配置的队列的权重比中最小的比项,决定权重系数ratio中N的取值;最小的比项介于2N和2N+1之间,例如:
当配置的队列的权重比中最小的比项为1时,则N=0;
当配置的队列的权重比中最小的比项为2~3时,则N=1;
当配置的队列的权重比中最小的比项为4~7时,则N=2;
当配置的队列的权重比中最小的比项为8~15时,则N=3;
当配置的队列的权重比中最小的比项为16~31时,则N=4;
当配置的队列的权重比中最小的比项为32~63时,则N=5;
当配置的队列的权重比中最小的比项为64~100时,则N=6;
每轮增加的服务额度为(比项*权重因子)/权重系数,即为调度长度的加权值;按WDRR调度算法调度出队,当所有队列服务额度为负值时,进入下一轮调度。
例如:权重比为10:20,配置权重系数ratio=8,实际调度效果为1.25:2.5;
权重比为7:13,配置动态权重系数ratio=4,实际调度效果为1.75:3.25;
权重比为7:11,配置动态权重系数ratio=4,实际调度效果为1.75:2.75;
例如,第一队列与第二队列发送报文按定长包100字节,配置权重因子quantum=为100字节,两个队列的权重比为10:20,则配置权重系数ratio=8,即每轮调度前按权重分配队列调度额度,第一队列分配(100*10)÷8=125字节,第二队列分配(100*20)÷8=250字节。第一轮调度中两个队列分别出队1个和2个报文。这样的调度效果接近于按1:2的报文数目调度,缓解了报文突发的情况。
再例如,两个队列发送报文按定长包100字节,配置quantum=为100字节,两个队列的权重比为7:11,则配置权重系数ratio=4,即每轮调度前按权重分配队列调度长度,第一队列分配(100*7)÷4=175字节,第二队列分配(100*11)÷4=275字节。第一轮调度中两个队列分别出队1个和2个报文。这样的调度效果接近于按7:11的报文数目调度,缓解了报文突发的情况。
权重系数ratio根据每轮调度权重比中最小的比项优化增加服务额度的基数,确保每次调度出权重比中最小的比项对应的队列1~2个报文,以减少因最小权重配置值非1引入的报文突发。
参照图3所示,本申请提供一种调度报文的装置,用于上述实现图1和图2所示的调度报文的方法,所述调度报文的装置300包括:
确定单元301,用于确定第一队列在上一轮次被调度出的报文中最大报文的长度;
详细内容参照图1实施例中步骤101所述。
设置单元302,用于根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;
详细内容参照图1实施例中步骤102所述。
第一计算单元303,用于根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
详细内容参照图1实施例中步骤103所述。
调度单元304,用于根据所述第一调度长度从所述第一队列中调度出相应数目的报文;
详细内容参照图1实施例步骤104所述。
可选的,当所述权重比的最大公约数不为1时,所述装置还包括:
第二计算单元305,用于用所述最大公约数分别整除所述第一比项与所述第二比项。
详细内容参照图2实施例步骤201所述。
可选的,所述调度单元包括:
调度子单元3041,用于根据所述第一调度长度的加权值从所述第一队列中调度出相应数目的报文;所述第一调度长度的加权值为:所述调度长度除以权重系数,所述权重系数为2N;所述N满足:所述第一比项与所述第二比项中最小的比项大于或等于2N,且小于2N+1。
详细内容参照图2实施例中步骤205所述。
基于本申请上述提供的调度报文的方法,本申请提供一种调度报文的装置400,用于实现上述图1和图2所示调度报文的方法,如图4所示,所述调度报文的装置400包括处理器401和发送器402,其中,所述处理器401和所述发送器402之间通过总线403相互连接。
所述处理器401,用于确定第一队列在上一轮次被调度出的报文中最大报文的长度;
所述处理器401还用于根据所述最大报文的长度设置所述第一队列的权重因子,所述权重因子大于或等于所述最大报文的长度且小于或等于预设门值,所述预设门值大于或等于所述最大报文的长度;
所述处理器401还用于根据所述权重因子以及权重比中所述第一队列对应的第一比项计算所述第一队列对应的第一调度长度,所述权重比包括所述第一比项和第二比项;
发送器402,用于根据所述第一调度长度从所述第一队列中调度出相应数目的报文。
可选的,当所述权重比的最大公约数不为1时,所述处理器401还用于用所述最大公约数分别整除所述第一比项与所述第二比项。
可选的,所述发送器402具体用于根据所述第一调度长度的加权值从所述第一队列中调度出相应数目的报文;所述第一调度长度的加权值为:所述第一调度长度除以权重系数,所述权重系数为2N;所述N满足:所述第一比项与所述第二比项中最小的比项大于或等于2N,且小于2N+1。
相关说明可以对应参阅图1以及图2的方法实施例部分所对应的相关描述和效果进行理解,本处不做过多赘述。
所述处理器401包括专用集成电路(Application Specific Integrated Circuit,简称:ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称:FPGA)或者其他可编程逻辑器件等。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。