一种基于主副桶的高精度令牌桶限速的方法

文档序号:7554868阅读:243来源:国知局
专利名称:一种基于主副桶的高精度令牌桶限速的方法
技术领域
本发明涉及网络流量控制领域,尤其涉及一种基于主副桶的高精度令牌桶限速的方法。
背景技术
QoS (Quality of Service,服务质量)中的流量监管(Traffic Policing)就是对流量进行控制,通过监督进入网络端口的流量速率,对超出部分的流量丢弃或是延迟发送,使进入端口的流量被限制在一个合理的范围之内。QoS流量监管功能是采用令牌桶(Token-Bucket)机制进行的。令牌桶是指网络设备的内部存储池,而令牌则是指以给定速率填充令牌桶的虚拟信息包。交换机在接收每一帧数据时都将添加一个令牌到令牌桶中,但这个令牌桶底部有一个孔,不断地按照指定的速度(即平均通信速率,单位为b/s)从桶中删除令牌(相当于一个水桶的上边连接一根进水管,而下边又连接一根连接到用水的地方的出水管)。在每次向令牌桶中添加新的令牌时,交换机都会检查令牌桶中是否有足够容量(相当于向水桶中加水前,先要检查是桶内是否已满),如果没有足够的空间,新添加的令牌将被标记为不符规定的包,将其丢弃或缓存(就相当于如果当前水桶满了,但进水管还要进水,那么就是让这些水流到桶外,或者把这些水用其它容器先装起来,等水桶中不满时再倒进去),整个令牌桶的基本工作原理如图1来表示。令牌桶填满的时间长短是由令牌桶深度(类似于水桶的深度,单位为bit)、令牌漏出速率(类似桶出水管的水速)和超过平均速率的突发通信流(类似于进水管突发的急速水流)持续的时间三个方面共同决定的。令牌桶的大小利用突发时长上限乘以点对点传输时的帧数限制得出(也就类似突发水流持续的时间*突发水流的流速)。如果突发时间比较短,令牌桶不会溢出,在通信流上不会发生行为。但是,如果突发时间比较长,并且速率比较高,令牌桶将溢出,这时将对突发过程中的帧采取相应的流监管策略行为。

令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。当网络设备衡量流量是否超过额定带宽时,需要查看令牌桶,而令牌桶中会放置一定数量的令牌,一个令牌允许接口发送或接收Ibit数据,当接口通过Ibit数据后,同时也要从桶中移除一个令牌。令牌桶按用户设定的速度向桶中放置令牌,如果令牌桶中有足够的令牌可以用来发送报文,则报文直接被继续发送下去,同时令牌桶中的令牌量按报文的长度做相应的减少。当桶里没有令牌的时候,任何流量都被视为超过额定带宽,只有当桶中有令牌时,数据才可以通过接口。令牌桶中的令牌不仅仅可以被移除,同样也可以往里添加,所以为了保证接口随时有数据通过,就必须不停地往桶里加令牌,由此可见,往桶里加令牌的速度,就决定了数据通过接口的速度。因此,可以通过控制往令牌桶里加令牌的速度从而控制用户流量的带宽。但是在现有技术中,当令牌桶限制流量值较大时会产生精度低、误差大的问题。

发明内容
(一)要解决的技术问题针对上述缺陷,本发明要解决的技术问题是如何避免限速值精度低、误差大的问题,增大令牌桶的限速值范围。(二)技术方案为解决上述问题,本发明提供了一种使用主副桶的高精度令牌桶限速的方法,所述方法具体包括:S1:将所述令牌桶分为主桶和副桶,并分别计算主桶限速值和副桶限速值; S2:根据所述令牌桶中总的令牌数量和所述主桶限速值计算所述主桶的一个单位限速值对应的令牌数量,根据所述令牌桶中总的令牌数量和所述副桶限速值计算所述副桶的一个单位限速值对应的令牌数量;S3:当有报文需要处理时,首先从给所述副桶中提取令牌进行报文处理,当所述副桶中的令牌数量不足时向所述主桶借用令牌将所述副桶填满再进行报文处理。进一步地,所述计算主桶限速值和副桶限速值具体包括:根据所述令牌桶的总限速值对精度取余得到所述副桶限速值,根据所述令牌桶的总限速值和所述精度相除得到所述主桶限速值。进一步地,在所述令牌桶计算之前还包括:
对所述主桶限速值进行放大,将所述主桶限速值放大到与所述副桶限速值相同的数量级,即将所述主桶限速值乘以所述精度得到放大的主桶限速值。进一步地,当所述主桶中令牌数量也不足时才达到令牌桶的总限速值。(三)有益效果本发明提供了一种基于主副桶的高精度令牌桶限速的方法,通过设置主桶和副桶,依靠副桶提高限速值精度,避免限速值大时精度低、误差大,增大了令牌桶限速值的范围,实现了全范围的高精度限速。


图1为现有技术中令牌桶的基本工作原理图2为本发明实施例中的一种基于主副桶的高精度令牌桶限速的方法的步骤流程图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。本发明实施例中提供了一种基于主副桶的高精度令牌桶限速的方法,步骤流程如图2所示,具体包括以下步骤:步骤S1:将令牌桶分为主桶和副桶,并分别计算主桶限速值和副桶限速值。在令牌桶算法中,令牌桶最关键的就是令牌的使用和填充,与现有技术不同的是本实施例中就是将令牌桶分为了主桶和副桶两个令牌桶,其中副桶用来控制小流量的精度,主桶用来控制大流量的精度。其中,计算主桶限速值和副桶限速值具体包括:根据令牌桶的总限速值X对精度P取余得到副桶限速值m,即m=x%p ;根据令牌桶的总限速值X和精度P相除得到主桶限速值n,即n=x/p。在令牌桶计算之前还包括:对主桶限速值η进行放大,将主桶限速值η放大到与副桶限速值m相同的数量级,即将主桶限速值η乘以精度P得到放大的主桶限速值n&±!g =n*p。步骤S2:根据令牌桶中总的令牌数量y和主桶限速值计算主桶的一个单位限速值对应的令牌数量yl,yl=y/n 根据令牌桶中总的令牌数量y和副桶限速值m计算副桶的一个单位限速值对应的令牌数量y2, y2=y/m。步骤S3:当有报文需要处理时,首先从给副桶中提取令牌进行报文处理,当副桶中的令牌数量不足时向主桶借用令牌将副桶填满再进行报文处理。其中副桶需要向主桶借用(m/n)*y个令牌将副桶填满。只有当主桶中令牌数量也不足时才达到令牌桶的总限速值。因为计算主要是依赖副桶中的令牌对流量进行控制,本实施例中的精度是由副桶决定的,而副桶的精度比主桶的精度高,所以依赖于副桶的精度比不分主副桶的精度高,因而对流量控制的误差也大大减小。通过上述方法,通过设置主桶和副桶,依靠副桶提高限速值精度,避免限速值大时精度低、误差大,增大了令牌桶限速值的范围,实现了全范围的高精度限速。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发 明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种基于主副桶的高精度令牌桶限速的方法,其特征在于,其中所述令牌桶分为主桶和副桶,所述方法具体包括: S1:将所述令牌桶分为主桶和副桶,并分别计算主桶限速值和副桶限速值; 52:根据所述令牌桶中总的令牌数量和所述主桶限速值计算所述主桶的一个单位限速值对应的令牌数量,根据所述令牌桶中总的令牌数量和所述副桶限速值计算所述副桶的一个单位限速值对应的令牌数量; 53:当有报文需要处理时,首先从给所述副桶中提取令牌进行报文处理,当所述副桶中的令牌数量不足时向所述主桶借用令牌将所述副桶填满再进行报文处理。
2.如权利要求1所述的方法,其特征在于,所述计算主桶限速值和副桶限速值具体包括: 根据所述令牌桶的总限速值对精度取余得到所述副桶限速值,根据所述令牌桶的总限速值和所述精度相除得到所述主桶限速值。
3.如权利要求1所述的方法,其特征在于,在所述令牌桶计算之前还包括: 对所述主桶限速值进行放大 ,将所述主桶限速值放大到与所述副桶限速值相同的数量级,即将所述主桶限速值乘以所述精度得到放大的主桶限速值。
4.如权利要求1所述的方法,其特征在于,当所述主桶中令牌数量也不足时才达到令牌桶的总限速值。
全文摘要
本发明公开了一种基于主副桶的高精度令牌桶限速的方法,将令牌桶分为主桶和副桶,并分别计算主桶限速值和副桶限速值;根据令牌桶中总的令牌数量和主桶限速值计算主桶的一个单位限速值对应的令牌数量,根据令牌桶中总的令牌数量和副桶限速值计算副桶的一个单位限速值对应的令牌数量;当有报文需要处理时,首先从给副桶中提取令牌进行报文处理,当副桶中的令牌数量不足时向主桶借用令牌将副桶填满再进行报文处理。本发明通过设置主桶和副桶,依靠副桶提高限速值精度,避免限速值大时精度低、误差大,增大了令牌桶限速值的范围,实现了全范围的高精度限速。
文档编号H04L12/851GK103248580SQ20131011948
公开日2013年8月14日 申请日期2013年4月8日 优先权日2013年4月8日
发明者朱志博 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1