CN1536815A - 采用令牌漏桶进行报文限流的方法 - Google Patents
采用令牌漏桶进行报文限流的方法 Download PDFInfo
- Publication number
- CN1536815A CN1536815A CNA031090915A CN03109091A CN1536815A CN 1536815 A CN1536815 A CN 1536815A CN A031090915 A CNA031090915 A CN A031090915A CN 03109091 A CN03109091 A CN 03109091A CN 1536815 A CN1536815 A CN 1536815A
- Authority
- CN
- China
- Prior art keywords
- token
- message
- bucket
- token number
- current message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于令牌漏桶的报文限流方法,包括如下步骤:在当前报文到来时触发令牌注入的操作;计算该报文与前一报文到来的时间间隔内向令牌漏桶内注入的令牌数;判断桶内的令牌数是否满足传送该报文的要求;当漏桶内的令牌数能够满足传送该报文的要求时,领取传送该报文所需要的令牌数,并允许该报文通过,否则丢弃该报文。本发明可以节省网络设备的系统资源,并提高小流量报文限流的处理效率。
Description
技术领域
本发明涉及网络的报文传送方法,特别涉及一种基于令牌漏桶的报文限流方法。
背景技术
在数据通信网络中,流量模型多属于突发模式。因此需要采取一些限制网络流量的方法来避免突发流量给网络带来诸多问题,典型的就是网络通信阻塞。普通的限流机制在流量突发的时候可能会导致许多报文被不合理地丢弃,所以使用令牌漏桶模型是目前网络设备进行流量限制的常用方法。一般情况下,基于网络处理器的设备向漏桶内添加令牌都是采用定时中断的方式。
下面举例说明常规的令牌漏桶算法。图1是这种常规的令牌漏桶算法的示意图。如图1所示,系统向漏桶中注入令牌,这种令牌的注入操作是定时地进行的。令牌注入速率为用户期望的报文限流速率。如果桶内的令牌数已满(即桶内令牌数等于桶容量(或称高度)H),则停止注入。每当有报文传送到来时,系统就按照该报文的字节数来领取令牌,如果漏桶内有充足的令牌,则允许该报文通过,否则丢弃该报文。
上述算法实质上是一种过滤算法,即滤除数据量超过桶内令牌数的报文。这种方法在目前的网络系统中应用非常广泛。它具有一定的积分效应,所以能够适应网络上的突发流量模式。显然,漏桶的容量即可容纳的令牌数量越大,则能够通过的报文的突发数据量也就可以越大。因此通过增加漏桶容量H,可以提高该方法对突发流量的容纳性。可以理解,漏桶容量H影响突发流量,而令牌注入速率V则影响报文的平均限流速度。
如上所述,这种常规的令牌漏桶算法需要通过定时中断,使用软件向桶内添加令牌。这种方法实质上是对内存进行访问并同时对计数器进行增加计数的操作。网络处理器在访问内存时是需要耗费很多时间的。如果漏桶的数目设置较多,则网络处理器的处理必将复杂,而且网络处理器的定时中断频率也会较高,定时中断程序会频繁地访问内存。这样网络处理器的运行负担会很重,并因此而影响系统对其他中断响应的速度,严重的时候还会导致中断丢失。
另一方面,对于一些流量很小的报文,例如协议报文,网络设备为了防止D.O.S(拒绝服务,一种互联网攻击手段)的攻击,往往需要对它们分门别类地进行限流,由于这些报文的正常流量很小,例如每秒只有几个报文,而网络处理器的定时中断频率很高,因此每秒钟要执行上千次的注入令牌操作。这样在对小流量报文限流的情况下,上述方法的效率非常低。
发明内容
鉴于现有技术的使用定时中断的限流方法进行报文传送对网络系统影响较大和在小流量限流的情况下效率很低的缺陷,本发明提出了一种改进的具有限流机制的报文传送方法。该方法不使用定时中断来注入令牌,而是使用报文的到来作为注入令牌的触发条件。具体地说,本发明的方法包括如下步骤:在当前报文到来时,触发向令牌漏桶内注入令牌的操作;判断桶内的令牌数是否满足传送该报文的要求;当漏桶内的令牌数能够满足传送该报文的要求时,领取传送该报文所需要的令牌数,并允许该报文通过,否则丢弃该报文。
在本发明的上述方法中,判断在该报文到来时在漏桶内的令牌数是否满足传送该报文的要求的步骤可以包括如下步骤:
求出该报文到来时间与上一报文到来时间之差,即两次报文之间的时间间隔;根据该漏桶的令牌注入速率计算出在该时间间隔内注入的令牌数;将所计算的注入该漏桶的令牌数与漏桶中原有的令牌数相加,得到在该报文到来时该漏桶内的令牌数;将该令牌数与该报文长度比较;如果令牌数小于该报文长度,则该令牌数不满足传送该报文的要求,反之则满足传送该报文的要求。
另外,在上述方法中,计算在当前报文与前一报文到来的时间间隔内注入的令牌数的步骤是这样来实现的:将令牌注入速率设置为2的n次幂,将间隔的时间数左移n位,从而计算出在上述时间间隔内注入的令牌数。
根据本发明的方法,由于不采用定时中断的方法来注入令牌,因此可以大大减轻网络处理器的运行负荷,从而节省了宝贵的系统资源。特别对于小流量的报文限流可以显著提高效率。另一方面,由于本发明采用将令牌注入速率设置为2的n次幂的方法,本发明不需要浮点协处理器协助,因此特别适合于一般的无浮点处理器的网络处理器用软件来实现。
附图说明
下面结合附图和实施例对本发明作进一步说明。
图1是常规的令牌漏桶算法的示意图;
图2是本发明的方法的优选实施方案的流程图。
具体实施方式
参考图2说明本发明的报文限流方法的一个优选的实施方案。
在该实施方案中,本发明如上所述,为了避免网络处理器使用定时中断来注入令牌,而使用了一种新的注入令牌的触发机制,即以报文的到来作为触发条件来注入令牌。下面具体说明该方案。
设某报文到来的时间为Tn,该报文与上一个报文到来的时间差设为dT。则在该报文到来的时候,触发向桶内注入令牌的操作,并且计算在时间间隔dT内向桶内注入的令牌数。然后,判断可从桶内领取的令牌数是否大于或等于该报文长度所需要的令牌数。如果桶内令牌数不够,就不允许该报文通过而将其丢弃。否则,即可允许该报文从桶内领取相应数量的令牌并放行。
在本发明的上述方案的一个实施例中,对每个令牌漏桶都设置两个变量:一个是桶内令牌数BT(该变量的长度可以有多个字节,例如可设置为2字节);另一个变量是时戳标记Tp(该变量的长度也可以有多个字节,在本例中设置为4字节)。该时戳标记代表了上一个报文到来的时间。另外还需要设置两个常量:一个常量是漏桶容量H(该常量也可以有多个字节,例如为2字节);另一个常量是令牌注入速率V,也可称为限流速率(该常量也可以有多个字节,例如为2字节)。可以看出,在该实施方案中,限流速率即令牌的注入速率对特定的漏桶是固定的。
当某个报文到来时,网络处理器取出报文长度S,并取出当前的时间值,作为该报文的到来时间Tn。
然后,网络处理器确定作为入口参数的桶号,即首先对报文进行分类,然后根据类别确定桶号,以及相应的令牌漏桶的上述4个参数。即桶内令牌数BT、时戳标记Tp、该漏桶容量H和令牌注入速率V。
然后,计算该报文到达时间Tn与该漏桶的当前时戳标记Tp之差,即dT=Tn-Tp。并记录新的时戳:Tp=Tn。
根据所计算的时间差dT值,计算在该报文到达时漏桶内令牌数。显然,此时该漏桶内令牌数应为在时刻Tp时该漏桶内的令牌数加上在dT所代表的时间段内按照该漏桶的令牌注入速率V向该漏桶内注入的令牌数之和。即用下式表示:
BTn=BT+V×dT
然后,根据所计算出的BTn值,判断漏桶内的令牌数BTn是否大于漏桶容量H。如果漏桶内的令牌数BTn大于漏桶容量H,则表明该漏桶会发生溢出。在这种情况下,由于漏桶内的令牌数不能大于该漏桶的容量H,因此,可知在该报文到达时漏桶内的令牌数等于漏桶的容量H。
需要说明的是,此时由于报文尚未领取令牌,因此该令牌数不是本次操作令牌桶的最后数值,令牌数的最后数值需要等到本次令牌领取后才能确定。
接着,判断该报文能否领取足够的令牌。即,判断令牌数BTn是否大于或等于报文长度S。如果BTn大于或等于S,则表明该报文能够领到足够的令牌。此时就记录新的桶内令牌数,并将该报文放行。新的桶内令牌数BT等于令牌数BTn与报文长度S(即已被该报文领取的令牌数)之差。
相反,如果该报文领不到足够的令牌,即桶内已有令牌数BTn小于报文长度S,则丢弃该报文。同时,新的桶内令牌数BT为本次操作后令牌桶中的令牌数,也就是BTn的值。最后,将修改后的Tp和BT写回存储器中。
在本发明上述方案的一种实施例中,可以进一步包括如下步骤。当判断报文长度大于令牌数BTn而丢弃该报文时,可进一步判断此时BTn是否等于桶容量H,如果二者相等,则表明此时桶内令牌已满,可停止触发令牌注入的操作。
在本发明上述方案的另一种实施例中,可以在报文处理(放行或丢弃)后,触发对漏桶的令牌注入。此时可以在报文处理后进行判断,如果桶内令牌已满,则不触发令牌注入的操作。
在本发明的上述方法中,需要进行V×dT的乘法计算。为此,可以采用网络处理器中的浮点协处理器来进行该项运算。但是,由于一般的网络处理器没有浮点协处理器,因此,在本发明的一个优选实施例中,采用如下的解决方法。
即,将令牌注入速率V设定为2的n次幂,这样V×dT的乘法计算就变为2n×dT的乘法计算,在网络处理器中就可以通过寄存器移位的方法,将2n×dT的计算用对dT左移n位来实现。需要说明的是,这种令牌注入速率即限流速率的限定在绝大多数情况下都是可以满足要求的。另外,如果dT过大,即两次报文到来的间隔较长,就直接把桶注满,这也是和系统的操作原理相符合的。而且这样也可以避免将dT移位后可能产生很大进位而导致计算不准确的情况。
以上的一些实施例只是为了对本发明进行说明而非对本发明的限定。可以在上述实施例所包含的本发明的精神和实质的基础上对本发明进行各种修改和等同方式的替换,以适应各种不同的应用场合的需要。
Claims (7)
1.一种采用令牌漏桶进行报文限流的方法,其特征在于,包括如下步骤:
1)在当前报文到来时,触发向所述令牌漏桶内注入令牌的操作;
2)判断令牌漏桶内的令牌数是否满足传送当前报文的要求;
3)当漏桶内的令牌数能够满足传送当前报文的要求时,领取传送所述当前报文所需数量的令牌,并允许该报文通过,否则丢弃该报文。
2.根据权利要求1所述的方法,其特征在于,所述步骤2)包括如下步骤:
2-1)在当前报文到来时,计算所述当前报文与前一报文到来的时间间隔内向令牌漏桶内注入的令牌数;
2-2)将所计算的注入该漏桶的令牌数与漏桶中原有的令牌数相加,得到在所述当前报文到来时该漏桶内的令牌数;
2-3)将相加得到的令牌数与所述当前报文长度进行比较;
2-4)如果令牌数小于该报文长度,则该令牌数不满足传送所述当前报文的要求,如果令牌数等于或大于该报文长度,则满足传送所述当前报文的要求。
3.根据权利要求2所述的方法,其特征在于,所述步骤2-1)中所述当前报文与前一报文到来的时间间隔内注入的令牌数按如下方式计算:
注入的令牌数=所述时间间隔×所述漏桶的令牌注入速率。
4.根据权利要求2所述的方法,其特征在于,所述步骤2-1)中所述当前报文与前一报文到来的时间间隔内注入的令牌数按如下方式计算:
2-1-1)将所述漏桶的令牌注入速率设置为2的n次幂;
2-1-2)将间隔的时间数左移n位,即为在所述时间间隔内注入的令牌数。
5.根据权利要求2、3或4所述的方法,其特征在于,进一步包括:
当所述注入的令牌数与所述漏桶内剩余的令牌数之和大于所述漏桶的容量时,则确定桶内的令牌数等于所述漏桶的容量。
6.根据权利要求5所述的方法,其特征在于,进一步包括:
当丢弃当前报文时,判断所述漏桶内令牌数是否等于所述漏桶容量,
如果所述漏桶内令牌数等于所述漏桶容量,则不触发所述注入令牌的操作。
7.根据权利要求5所述的方法,其特征在于,进一步包括:
保存所述当前报文的到来时间和当前报文传送后所述漏桶内剩下的令牌数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031090915A CN1302638C (zh) | 2003-04-03 | 2003-04-03 | 采用令牌漏桶进行报文限流的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031090915A CN1302638C (zh) | 2003-04-03 | 2003-04-03 | 采用令牌漏桶进行报文限流的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1536815A true CN1536815A (zh) | 2004-10-13 |
CN1302638C CN1302638C (zh) | 2007-02-28 |
Family
ID=34319184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031090915A Expired - Fee Related CN1302638C (zh) | 2003-04-03 | 2003-04-03 | 采用令牌漏桶进行报文限流的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1302638C (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100454839C (zh) * | 2005-11-24 | 2009-01-21 | 华为技术有限公司 | 一种基于用户防攻击的装置以及方法 |
CN100454897C (zh) * | 2005-08-25 | 2009-01-21 | 华为技术有限公司 | 一种网络设备有效防攻击的方法 |
CN101043457B (zh) * | 2007-03-21 | 2010-07-07 | 华为技术有限公司 | 报文宽带监管方法及其装置、报文丢弃概率标记装置 |
CN101272347B (zh) * | 2008-04-29 | 2010-09-29 | 华为技术有限公司 | 负载分担的方法和设备 |
CN101267387B (zh) * | 2007-03-12 | 2011-02-09 | 瑞昱半导体股份有限公司 | 频宽控制模块及相关控制方法 |
WO2011014998A1 (zh) * | 2009-08-04 | 2011-02-10 | 中兴通讯股份有限公司 | 报文到达时间间隔的计算方法及装置 |
CN102271083A (zh) * | 2010-06-04 | 2011-12-07 | 川崎微电子股份有限公司 | 通信控制装置和整形装置 |
CN102377641A (zh) * | 2010-08-11 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 令牌桶算法的实现方法 |
CN102567549A (zh) * | 2011-11-18 | 2012-07-11 | 中国船舶重工集团公司第七二四研究所 | 基于令牌漏桶法的自适应数据记录/回放技术及其实现方法 |
CN102724222A (zh) * | 2011-03-29 | 2012-10-10 | 北京东方通科技股份有限公司 | 基于esb的流量控制方法 |
CN101741603B (zh) * | 2008-11-11 | 2013-01-16 | 中兴通讯股份有限公司 | 一种基于令牌桶的流量监管方法及设备 |
CN101959236B (zh) * | 2009-07-13 | 2013-06-26 | 大唐移动通信设备有限公司 | 一种流量控制的方法和装置 |
WO2014134958A1 (zh) * | 2013-03-08 | 2014-09-12 | 中兴通讯股份有限公司 | 一种流量监管的方法及装置 |
CN104113487A (zh) * | 2013-04-22 | 2014-10-22 | 中兴通讯股份有限公司 | 流量控制的方法及监控端 |
CN105721331A (zh) * | 2016-01-21 | 2016-06-29 | 盛科网络(苏州)有限公司 | 一种内嵌吞吐量性能测试处理引擎中控制发包速率的方法 |
CN107547433A (zh) * | 2017-07-03 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 基于令牌漏桶进行限流的方法、装置和设备 |
CN109962860A (zh) * | 2017-12-22 | 2019-07-02 | 南京欣网互联网络科技有限公司 | 一种应用于电信运营商电子渠道的软件系统访问限流方法 |
WO2022232976A1 (zh) * | 2021-05-06 | 2022-11-10 | 华为技术有限公司 | 一种基于令牌桶的流量控制方法和网络设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5666353A (en) * | 1995-03-21 | 1997-09-09 | Cisco Systems, Inc. | Frame based traffic policing for a digital switch |
CN1206526A (zh) * | 1995-12-28 | 1999-01-27 | 德纳克公司 | 管理网络资源的方法和设备 |
US6192032B1 (en) * | 1998-01-02 | 2001-02-20 | International Business Machines Corporation | Rate attenuation systems, methods and computer program products for reducing low priority video frame packets transmitted over a network |
US6370116B1 (en) * | 1998-05-26 | 2002-04-09 | Alcatel Canada Inc. | Tolerant CIR monitoring and policing |
-
2003
- 2003-04-03 CN CNB031090915A patent/CN1302638C/zh not_active Expired - Fee Related
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100454897C (zh) * | 2005-08-25 | 2009-01-21 | 华为技术有限公司 | 一种网络设备有效防攻击的方法 |
CN100454839C (zh) * | 2005-11-24 | 2009-01-21 | 华为技术有限公司 | 一种基于用户防攻击的装置以及方法 |
CN101267387B (zh) * | 2007-03-12 | 2011-02-09 | 瑞昱半导体股份有限公司 | 频宽控制模块及相关控制方法 |
CN101043457B (zh) * | 2007-03-21 | 2010-07-07 | 华为技术有限公司 | 报文宽带监管方法及其装置、报文丢弃概率标记装置 |
CN101272347B (zh) * | 2008-04-29 | 2010-09-29 | 华为技术有限公司 | 负载分担的方法和设备 |
CN101741603B (zh) * | 2008-11-11 | 2013-01-16 | 中兴通讯股份有限公司 | 一种基于令牌桶的流量监管方法及设备 |
CN101959236B (zh) * | 2009-07-13 | 2013-06-26 | 大唐移动通信设备有限公司 | 一种流量控制的方法和装置 |
WO2011014998A1 (zh) * | 2009-08-04 | 2011-02-10 | 中兴通讯股份有限公司 | 报文到达时间间隔的计算方法及装置 |
CN101616441B (zh) * | 2009-08-04 | 2011-09-21 | 中兴通讯股份有限公司 | 报文到达时间间隔的计算方法及装置 |
US8717898B2 (en) | 2009-08-04 | 2014-05-06 | Zte Corporation | Method and apparatus for calculating packet arrival time interval |
CN102271083A (zh) * | 2010-06-04 | 2011-12-07 | 川崎微电子股份有限公司 | 通信控制装置和整形装置 |
CN102377641A (zh) * | 2010-08-11 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 令牌桶算法的实现方法 |
CN102724222A (zh) * | 2011-03-29 | 2012-10-10 | 北京东方通科技股份有限公司 | 基于esb的流量控制方法 |
CN102567549A (zh) * | 2011-11-18 | 2012-07-11 | 中国船舶重工集团公司第七二四研究所 | 基于令牌漏桶法的自适应数据记录/回放技术及其实现方法 |
WO2014134958A1 (zh) * | 2013-03-08 | 2014-09-12 | 中兴通讯股份有限公司 | 一种流量监管的方法及装置 |
CN104113487A (zh) * | 2013-04-22 | 2014-10-22 | 中兴通讯股份有限公司 | 流量控制的方法及监控端 |
CN104113487B (zh) * | 2013-04-22 | 2019-04-23 | 中兴通讯股份有限公司 | 流量控制的方法及监控端 |
CN105721331A (zh) * | 2016-01-21 | 2016-06-29 | 盛科网络(苏州)有限公司 | 一种内嵌吞吐量性能测试处理引擎中控制发包速率的方法 |
CN107547433A (zh) * | 2017-07-03 | 2018-01-05 | 阿里巴巴集团控股有限公司 | 基于令牌漏桶进行限流的方法、装置和设备 |
CN107547433B (zh) * | 2017-07-03 | 2020-12-22 | 创新先进技术有限公司 | 基于令牌漏桶进行限流的方法、装置和设备 |
CN109962860A (zh) * | 2017-12-22 | 2019-07-02 | 南京欣网互联网络科技有限公司 | 一种应用于电信运营商电子渠道的软件系统访问限流方法 |
WO2022232976A1 (zh) * | 2021-05-06 | 2022-11-10 | 华为技术有限公司 | 一种基于令牌桶的流量控制方法和网络设备 |
Also Published As
Publication number | Publication date |
---|---|
CN1302638C (zh) | 2007-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1302638C (zh) | 采用令牌漏桶进行报文限流的方法 | |
Čerāns | Decidability of bisimulation equivalences for parallel timer processes | |
US7257080B2 (en) | Dynamic traffic-based packet analysis for flow control | |
EP0954934B1 (en) | Congestion control in a communications network | |
FI110656B (fi) | Puhelun muodostamisen ja jatkumisen ohjaaminen | |
CN1163031A (zh) | 电信网络节点中的过载防护 | |
CN1116751C (zh) | 通信系统中的业务控制 | |
KR100228500B1 (ko) | 채널스플릿 데이타 전송을 감지하는 방법 및 장치 | |
EP2432170A1 (en) | A token bucket based data packet traffic shapping device | |
CN1601963A (zh) | 基于令牌桶算法的接入速率限制方法 | |
CN1988684B (zh) | 网络进程管理方法及装置 | |
CN1170487A (zh) | 电信系统中的业务控制 | |
CN102821423B (zh) | 报文接收方法及装置 | |
US20170272363A1 (en) | System comprising nodes with active and passive ports | |
AU750862B2 (en) | Method and system for detecting the state of dialling a codenumber | |
CN1266878C (zh) | 一种带宽控制装置及方法 | |
CN1758633A (zh) | 一种网管系统通信流量控制的方法 | |
CN1722676A (zh) | 一种性能统计数据收集方法 | |
Lin | Determining the global progress of parallel simulation with FIFO communication property | |
CN103248580A (zh) | 一种基于主副桶的高精度令牌桶限速的方法 | |
CN1155202C (zh) | 异步传送模式交换系统的质量监视装置和方法 | |
CN110380991A (zh) | 一种IOCP机制及基于eFPGA和IOCP的物联网通信加速系统 | |
JP3141880B2 (ja) | パケット制御装置 | |
KR980013153A (ko) | 비동기식 전송모드(atm) 망에서 평균 트래픽 전송율 제어방법 | |
CN1462152A (zh) | 移动通信系统中发送路径检测请求消息的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070228 Termination date: 20160403 |
|
CF01 | Termination of patent right due to non-payment of annual fee |