一种分发令牌的方法和装置的制造方法

文档序号:9202602阅读:417来源:国知局
一种分发令牌的方法和装置的制造方法
【技术领域】
[0001]本发明属于流量控制技术领域,特别是一种分发令牌的方法和装置。
【背景技术】
[0002]流量整形(Traffic Shaping,TS)是一种主动控制流量输出速率的技术。网络上的应用种类繁多,为了保障主要应用的良好运作,需要在网络上进行流量控制,如通用流量整形(Generic Traffic Shaping,GTS)。
[0003]目前,通常采用令牌桶算法实现GTS。在令牌桶算法中,按照报文的允许转发速率(Committed Informat1n Rate,CIR)在令牌桶中添加令牌,即每隔1/CIR时间在令牌桶中添加一个令牌。当令牌桶加满的时候,新产生的令牌将被丢弃。当令牌桶中有足够的令牌时,报文可以被发送;当令牌桶中的令牌不足时,报文不能被发送,只有等到令牌桶中生成新的令牌时,报文才可以被发送。通过令牌桶算法保证报文输出速率小于等于令牌生成速度,从而达到限制流量的目的。
[0004]在现有技术的GTS中,当有多个报文队列需要分发令牌时,基于相同的时间间隔周期性地为各个队列轮询分发令牌。然而,多个队列之间可能存在CIR差异,对于CIR较大的队列,轮询到时需要分发的令牌数目较多,可能造成分发令牌操作突发,对于CIR较小的队列,轮询到时可能根本不需要分发令牌,从而导致分发令牌操作闲置,这种无差异化的轮询机制可能导致更需要分发令牌的队列不能得到优先处理,因此存在令牌分发效率不高的缺点。

【发明内容】

[0005]本发明提出一种分发令牌的方法和装置,从而提高令牌分发效率。
[0006]本发明实施方式的技术方案如下:
[0007]根据本发明实施方式的一方面,提出一种分发令牌的方法,该方法包括如下步骤:
[0008]基于每个队列的CIR及其上次令牌分发时间,确定每个队列的本次应分发令牌数;
[0009]基于每个队列的本次应分发令牌数,确定全部队列中的最高优先级队列;
[0010]基于所述全部队列中的最高优先级队列的本次应分发令牌数,为所述全部队列中的最高优先级队列分发令牌。
[0011 ] 优选地,该方法还包括:
[0012]设置N个CIR区间,基于每个队列的CIR确定每个队列所处的CIR区间,其中N为2以上的正整数;
[0013]所述基于每个队列的本次应分发令牌数,确定全部队列中的最高优先级队列包括:
[0014]在属于同一 CIR区间内的队列之间,基于本次应分发令牌数进行排序,并确定每个CIR区间内的最高优先级队列;
[0015]在各个CIR区间内的最高优先级队列之间,基于本次应分发令牌数进行排序,并确定所述全部队列中的最高优先级队列。
[0016]优选地,该方法还包括:
[0017]设置N个CIR区间,其中N为2以上的正整数,其中每个CIR区间具有CIR设定值;
[0018]所述基于每个队列的CIR及每个队列的上次令牌分发时间,确定每个队列的本次应分发令牌数包括:
[0019]基于每个队列的CIR确定每个队列所处的CIR区间,并基于所确定的CIR区间的CIR设定值及每个队列的上次令牌分发时间,确定每个队列的本次应分发令牌数;
[0020]所述基于每个队列的本次应分发令牌数,确定全部队列中的最高优先级队列包括:
[0021]在属于同一 CIR区间内的队列之间,基于本次应分发令牌数进行排序,并确定每个CIR区间内的最高优先级队列;
[0022]在各个CIR区间内的最高优先级队列之间,基于本次应分发令牌数进行排序,并确定所述全部队列中的最高优先级队列。
[0023]优选地,所述CIR设定值为该CIR区间的最大值或平均值。
[0024]优选地,所述上次令牌分发时间为Tlast,当前时间为Tmt;所述本次应分发令牌数为Md ;所述确定本次应分发令牌数为:Add = (Tcurrent-Tlast) XCIRo
[0025]优选地,该方法还预先包括:
[0026]确定每个队列的当前可用令牌数,并将当前可用令牌数为非负数的队列设置为不分发令牌;和/或
[0027]将CIR为零的队列设置为不分发令牌。
[0028]根据本发明实施方式的另一方面,提出一种分发令牌的装置,该装置包括:
[0029]令牌数计算模块,用于基于每个队列的CIR及每个队列的上次令牌分发时间,确定每个队列的本次应分发令牌数;
[0030]优先级确定模块,用于基于每个队列的本次应分发令牌数,确定全部队列中的最高优先级队列;
[0031]令牌分发模块,用于基于所述全部队列中的最高优先级队列的本次应分发令牌数,为所述全部队列中的最高优先级队列分发令牌。
[0032]优选地,优先级确定模块,用于设置N个CIR区间,基于每个队列的CIR确定每个队列所处的CIR区间,其中N为2以上的正整数;在属于同一 CIR区间内的队列之间,基于本次应分发令牌数进行排序,并确定每个CIR区间内的最高优先级队列;在各个CIR区间内的最高优先级队列之间,基于本次应分发令牌数进行排序,并确定所述全部队列中的最高优先级队列。
[0033]优选地,优先级确定模块,用于设置N个CIR区间,其中N为2以上的正整数,其中每个CIR区间具有CIR设定值;
[0034]令牌数计算模块,用于基于每个队列的CIR确定每个队列所处的CIR区间,并基于所确定的CIR区间的CIR设定值及每个队列的上次令牌分发时间,确定每个队列的本次应分发令牌数;
[0035]优先级确定模块,用于在属于同一 CIR区间内的队列之间,基于本次应分发令牌数进彳丁排序,并确定每个CIR区间内的最尚优先级队列;在各个CIR区间内的最尚优先级的队列之间,基于本次应分发令牌数进行排序,并确定所述全部队列中的最高优先级队列。
[0036]优选地,所述CIR设定值为该CIR区间的最大值或平均值。
[0037]优选地,所述上次令牌分发时间为Tlast,当前时间为Tmt;所述本次应分发令牌数为Md ;所述确定本次应分发令牌数为:Add = (Tcurrent-Tlast) XCIRo
[0038]还包括:
[0039]设置模块,用于确定每个队列的当前可用令牌数,并将当前可用令牌数为非负数的队列设置为不分发令牌;和/或,用于将CIR为零的队列设置为不分发令牌。
[0040]在本发明中,基于每个队列的CIR及其上次令牌分发时间,确定每个队列的本次应分发令牌数;基于每个队列的本次应分发令牌数,确定全部队列中的最高优先级队列;基于全部队列中的最高优先级队列的本次应分发令牌数,为全部队列中的最高优先级队列分发令牌。可见,本发明不再是无差异化的周期性轮询分配令牌,而是根据各个队列的上次令牌分发时间和CIR配置属性确定出优先需要分发令牌的队列,并主动选择更需要分发令牌的队列进行令牌分发操作,从而提高令牌分发效率。
[0041]而且,本发明实施方式中,CIR较大的队列更可能具有较高优先级,因此更有机会分发令牌,从而有效避免轮询机制中的令牌数突发;CIR较小的队列更可能具有较低优先级,从而有效避免轮询机制中的分发令牌操作闲置。
[0042]还有,在本发明实施方式中,对于当前令牌数非负及CIR为零的队列,不进行令牌分发动作,从而进一步提高分发令牌的效率。
【附图说明】
[0043]图1为本发明分发令牌的方法流程图;
[0044]图2为本发明第一实施方式的分发令牌的方法流程图;
[0045]图3为本发明第二实施方式的分发令牌的方法流程图;
[0046]图4为本发明分发令牌的装置结构图;
[0047]图5为本发明第三实施方式的分发令牌的装置结构图。
【具体实施方式】
[0048]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
[0049]在现有技术中,当有多个(大于一个)队列需要分发令牌时,由于各个队列的CIR差异,周期性轮询机制导致队列的加令牌动作变得不均匀。本发明实施方式不再是无差异化的周期性轮询分配令牌,而是差异化对待各个队列,根据各个队列的上次令牌分发时间和CIR配置属性确定出优先需要分发令牌的队列,并主动选择优先需要分发令牌的队列进行令牌分发操作。
[0050]图1为本发明分发令牌的方法流程图,该方法适用于具有多个队列的应用环境。[0051 ] 如图1所示,该方法包括:
[0052]步骤101:基于每个队列的CIR及每个队列的上次令牌分发时间,确定每个队列的本次应分发令牌数。
[0053]在这里,在当前时间点处,分别基于每个队列的CIR及该队列的上次令牌分发时间,计算每个队列的本次应分发令牌数。
[0054]比如,假设有M个队列,M为至少为2的正整数,当前时间为T—。
[0055]对于第m个队列,上次令牌分发时间为Tlast m,本次应分发令牌数为Add_m ;CIR为CIR_m,m的取值范围为[1,M];
[0056]那么,第m个队列的本次应分发令牌数为:Add_m = (Tcurrent-Tlast m) X CIR_m ;
[0057]基于上述算法,可以计算出M个队列的各自的本次应分发令牌数。
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1