CN102377641A - 令牌桶算法的实现方法 - Google Patents

令牌桶算法的实现方法 Download PDF

Info

Publication number
CN102377641A
CN102377641A CN201010251193XA CN201010251193A CN102377641A CN 102377641 A CN102377641 A CN 102377641A CN 201010251193X A CN201010251193X A CN 201010251193XA CN 201010251193 A CN201010251193 A CN 201010251193A CN 102377641 A CN102377641 A CN 102377641A
Authority
CN
China
Prior art keywords
token
num
now
time
formation
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.)
Pending
Application number
CN201010251193XA
Other languages
English (en)
Inventor
王冬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Atheros International Shanghai Co Ltd
Original Assignee
Qualcomm Atheros International Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Atheros International Shanghai Co Ltd filed Critical Qualcomm Atheros International Shanghai Co Ltd
Priority to CN201010251193XA priority Critical patent/CN102377641A/zh
Publication of CN102377641A publication Critical patent/CN102377641A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Abstract

本发明公开了一种令牌桶算法的实现方法,只在一个队列中有数据包发送出去前,才对该队列的令牌桶进行令牌数量更新;

Description

令牌桶算法的实现方法
技术领域
本发明涉及一种以太网的QoS(quality of service,服务质量)实现方法。
背景技术
以太网QoS技术的目的是有效地利用有限的带宽,流量整形(TrafficShaper)是一种常见的QoS实现方法,而令牌桶(Token Bucket)算法是流量整形技术的一种常见算法。
令牌桶算法的基本策略如下:
令牌桶中的每一个令牌都代表一定大小的数据(例如一个字节)。假如用户配置的平均发送速率为r,则每隔1/r的时间一个新令牌被加入到令牌桶中。假设令牌桶最多可以存发b个令牌。如果新令牌到达时令牌桶已经满了,那么这个新令牌会被丢弃。当一个m个字节的数据包到达时,就从令牌桶中删除m个令牌,并且数据包被发送到网络。如果令牌桶中少于m个令牌,那么不会删除令牌,并且认为这个数据包在流量限制之外。对于在流量限制外的数据包可以被丢弃、或者排放在队列中以便当令牌桶中累积了足够多的令牌时再传输、或者继续发送但做特殊标记,一旦网络过载的时候将这些特殊标记的数据包丢弃。令牌桶算法允许最长b个字节的突发,但从长期运行结果看,数据包的速率被限制成常量r。
实际使用中,以太网中存在着多个队列,每个队列均有一个独立的令牌桶。为了节省硬件资源,这多个令牌桶共享一个加法器,该加法器用于计算各个令牌桶的新令牌加入。显然,当队列数量较多(例如为n)时,每个队列的平均传输速率r1、r2、……、rn也可能不相同,这一个加法器不可能按照1/r1、1/r2、……、1/rn的时间间隔对每个令牌桶计算新令牌的加入,取而代之的是以一个扫描周期T对各个令牌桶的令牌数量进行更新。在该扫描周期T中,该加法器依次为每个队列的令牌桶进行数量更新。队列数量n越多,该扫描周期T就取得越大。由于每个队列应该得到相同的扫描几率,这要求T=k×n,其中k表示该加法器完成一个队列的一次令牌更新所需要的时间。
令牌桶算法在更新令牌数量时采用较大的扫描周期会导致其中具有较快平均传输速率的队列更新令牌数量的时间间隔较长,令牌数量经常处于不准确的状态;同时每次更新令牌数量时会增加较大数量的新令牌,呈现大突发(burst)特性。
例如,一个系统中具有8192个队列,即n=8192。该系统中具有一个加法器负责为这些队列进行令牌更新的累加计算,该加法器为一个队列的一次令牌更新计算耗费20ns,即k=20ns。那么该系统中该加法器的扫描周期T=k×n=163.84μs。其中有一个队列的平均传输速率为300Mbps,即rx=300Mbps。该队列每隔T时间才更新一次令牌数量,假设每个令牌代表1个字节,则每次更新的令牌数量为300×106×163.84×10-6÷8=6144个。理想情况下该队列应该是每隔26.67ns增加一个新令牌,可是实际应用时却是每隔163.84μs增加6144个新令牌。
为了解决上述问题,一种可能的解决方案是:采用多个加法器,每个加法器仅计算部分令牌桶的令牌数量更新,从而使每个加法器的扫描周期有所缩小,但这样便增加了硬件资源。
发明内容
本发明所要解决的技术问题是提供一种令牌桶算法的实现方法,该方法在现有硬件资源不变(即仍采用一个加法器对所有令牌桶的令牌数量更新进行计算)的前提下,可以及时对令牌数量进行更新。
为解决上述技术问题,本发明令牌桶算法的实现方法为:只在一个队列中有数据包发送出去前,才对该队列的令牌桶进行令牌数量更新;
Token _ Num ( Now ) = Token _ Num ( LastUpdate ) - m + Time ( Now ) - Time ( LastUpdate ) r
其中Token_Num(Now)为本次令牌数量更新后的令牌数量,Token_Num(LastUpdate)为上一次令牌数量更新后的令牌数量,m为发送的数据包长度,Time(Now)为当前时间,Time(LastUpdate)为上一次令牌数量更新的时间,r为该队列的平均发送速率;
采用上述公式计算的Token_Num(Now)>b时,其中b为该队列的令牌桶的最大容量,则Token_Num(Now)的取值为b;
采用上述公式计算的Token_Num(Now)<0时,则Token_Num(Now)的取值为
Figure BDA0000024338920000032
与b两者中的较小者,且不发送所述的数据包。
本发明对令牌桶算法进行了改进,舍弃了传统地定期扫描更新令牌数量,采用了只在数据包发送前更新令牌数量的实现方法,这种实现可以从根本上克服传统令牌桶算法更新令牌的扫描周期过长,每次增加的令牌数量过大的问题。
具体实施方式
本发明不再采用固定的扫描周期T对所有队列的令牌数量进行更新,而是在每个队列有数据包发送出去之前对该队列的令牌数量进行更新。那么对于数据包发送频繁的队列来说,该队列的令牌桶中的令牌数量也得到及时地更新。而对于数据包发送较少的队列来说,该队列的令牌桶中的令牌数量也只有较少的更新次数。
当某一个队列有一个长度为m的数据包准确发送出去之前,先计算该队列的令牌桶中的令牌数量更新,在判断该数据包能否发送。令牌数量更新的计算公式为:
Token _ Num ( Now ) = Token _ Num ( LastUpdate ) - m + Time ( Now ) - Time ( LastUpdate ) r
上述公式的物理意义为:在上一次令牌数量更新后,加上两次更新的时间间隔内新增加的令牌数量,减去发送所述数据包需要减去的令牌数量,就是本次令牌数量更新后的令牌数量。
显然要求所述数据包的长度m≤b,其中b为该队列的令牌桶的最大容量,也就是该队列所允许最大突发(burst)长度。
上述公式计算的合理取值范围是0≤Token_Num(Now)≤b。
采用上述公式计算的Token_Num(Now)>b时,则Token_Num(Now)的取值为b。
采用上述公式计算的Token_Num(Now)<0时,则Token_Num(Now)的取值为
Figure BDA0000024338920000051
与b两者中的较小者,且不发送所述的数据包。等待之后令牌数量≥m后,再发送所述的数据包。
传统的令牌桶算法在实现时,对于数据包发送频繁的队列与很少有数据包发送的队列一视同仁,按照同样的扫描周期计算每个队列的令牌数量更新。本发明则对数据包发送频繁的队列,也频繁地更新其令牌数量,从而避免了更新令牌的扫描周期过长,每次增加的令牌数量过大的问题。

Claims (4)

1.一种令牌桶算法的实现方法,其特征是,只在一个队列中有数据包发送出去前,才对该队列的令牌桶进行令牌数量更新;
Token _ Num ( Now ) = Token _ Num ( LastUpdate ) - m + Time ( Now ) - Time ( LastUpdate ) r
其中Token_Num(Now)为本次令牌数量更新后的令牌数量,Token_Num(LastUpdate)为上一次令牌数量更新后的令牌数量,m为发送的数据包长度,Time(Now)为当前时间,Time(LastUpdate)为上一次令牌数量更新的时间,r为该队列的平均发送速率;
采用上述公式计算的Token_Num(Now)>b时,其中b为该队列的令牌桶的最大容量,则Token_Num(Now)的取值为b;
采用上述公式计算的Token_Num(Now)<0时,则Token_Num(Now)的取值为
Figure FDA0000024338910000012
与b两者中的较小者,且不发送所述的数据包。
2.根据权利要求1所述的令牌桶算法,其特征是,m≤b。
3.根据权利要求1所述的令牌桶算法,其特征是,0≤Token_Num(Now)≤b。
4.根据权利要求1所述的令牌桶算法,其特征是,当所述长度为m的数据包未发送时,等待该队列的令牌桶的令牌数量≥m后,再发送所述长度为m的数据包。
CN201010251193XA 2010-08-11 2010-08-11 令牌桶算法的实现方法 Pending CN102377641A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010251193XA CN102377641A (zh) 2010-08-11 2010-08-11 令牌桶算法的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010251193XA CN102377641A (zh) 2010-08-11 2010-08-11 令牌桶算法的实现方法

Publications (1)

Publication Number Publication Date
CN102377641A true CN102377641A (zh) 2012-03-14

Family

ID=45795642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010251193XA Pending CN102377641A (zh) 2010-08-11 2010-08-11 令牌桶算法的实现方法

Country Status (1)

Country Link
CN (1) CN102377641A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647729A (zh) * 2013-11-19 2014-03-19 华为技术有限公司 一种基于令牌桶的延迟请求处理方法及装置
CN106789720A (zh) * 2016-12-16 2017-05-31 无锡路通视信网络股份有限公司 一种基于系统硬件使用率的动态令牌桶生成方法
CN106982268A (zh) * 2016-01-18 2017-07-25 腾讯科技(北京)有限公司 一种信息处理方法和服务器
CN109714268A (zh) * 2019-01-23 2019-05-03 平安科技(深圳)有限公司 一种虚拟私有云的流量控制方法及相关装置
CN110096344A (zh) * 2018-01-29 2019-08-06 北京京东尚科信息技术有限公司 任务管理方法、系统、服务器集群和计算机可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536815A (zh) * 2003-04-03 2004-10-13 华为技术有限公司 采用令牌漏桶进行报文限流的方法
CN101005453A (zh) * 2006-12-26 2007-07-25 华为技术有限公司 流量限制技术中刷新令牌桶的方法及装置
EP1833207A2 (en) * 2006-03-08 2007-09-12 Huawei Technologies Co., Ltd. System and method for allocating bandwidth in remote equipment on a passive optical network
CN101674244A (zh) * 2009-09-24 2010-03-17 中兴通讯股份有限公司 带宽控制方法、带宽控制装置以及分组数据网络网关

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1536815A (zh) * 2003-04-03 2004-10-13 华为技术有限公司 采用令牌漏桶进行报文限流的方法
EP1833207A2 (en) * 2006-03-08 2007-09-12 Huawei Technologies Co., Ltd. System and method for allocating bandwidth in remote equipment on a passive optical network
CN101005453A (zh) * 2006-12-26 2007-07-25 华为技术有限公司 流量限制技术中刷新令牌桶的方法及装置
CN101674244A (zh) * 2009-09-24 2010-03-17 中兴通讯股份有限公司 带宽控制方法、带宽控制装置以及分组数据网络网关

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103647729A (zh) * 2013-11-19 2014-03-19 华为技术有限公司 一种基于令牌桶的延迟请求处理方法及装置
US9503385B2 (en) 2013-11-19 2016-11-22 Huawei Technologies Co., Ltd. Delay request processing method and apparatus based on token bucket
CN103647729B (zh) * 2013-11-19 2017-01-04 华为技术有限公司 一种基于令牌桶的延迟请求处理方法及装置
CN106982268A (zh) * 2016-01-18 2017-07-25 腾讯科技(北京)有限公司 一种信息处理方法和服务器
CN106789720A (zh) * 2016-12-16 2017-05-31 无锡路通视信网络股份有限公司 一种基于系统硬件使用率的动态令牌桶生成方法
CN106789720B (zh) * 2016-12-16 2020-06-16 无锡路通视信网络股份有限公司 一种基于系统硬件使用率的动态令牌桶生成方法
CN110096344A (zh) * 2018-01-29 2019-08-06 北京京东尚科信息技术有限公司 任务管理方法、系统、服务器集群和计算机可读介质
CN109714268A (zh) * 2019-01-23 2019-05-03 平安科技(深圳)有限公司 一种虚拟私有云的流量控制方法及相关装置
CN109714268B (zh) * 2019-01-23 2022-06-07 平安科技(深圳)有限公司 一种虚拟私有云的流量控制方法及相关装置

Similar Documents

Publication Publication Date Title
KR102478440B1 (ko) 혼잡 제어 방법 및 네트워크 디바이스
US7415477B2 (en) Method and apparatus for allocating link bandwidth
CN102763385B (zh) 用于计算机网络中的拥塞控制的方法和设备
CN102377641A (zh) 令牌桶算法的实现方法
CN112311494B (zh) 一种报文传输方法、装置及系统
CN101282305B (zh) 分布式系统中的带宽控制方法及业务板
CN105323106B (zh) 一种软件升级管理方法、设备及系统
US7324452B2 (en) Weighted credit-based arbitration using credit history
CN102238068A (zh) 一种报文的传输方法和系统
CN109951849A (zh) 一种在f-ran架构中联合资源分配和内容缓存的方法
CN101582842A (zh) 拥塞控制方法与拥塞控制装置
CN101557348A (zh) 一种基于令牌桶的报文转发方法及装置
CN102326364A (zh) 通信装置、通信系统以及频带分配方法
CN103841046A (zh) 基于信誉的链路级流控制的系统和方法
CN104348751B (zh) 虚拟输出队列授权管理方法及装置
EP3840299A1 (en) Method and system for collecting statistics about the number of active flows, and network device
CN104753809B (zh) 一种流量整形中添加令牌的方法及装置
US20160164784A1 (en) Data transmission method and apparatus
CN103401778B (zh) 基于接收端缓存溢出概率保障的多路径传输分组调度方法
CN112714081B (zh) 一种数据处理方法及其装置
CN104869077B (zh) 令牌传输控制方法及系统
CN102255818B (zh) 一种驱动接收报文的方法及装置
JP2017526206A (ja) 伝送バッファサイズを決定する方法及びデバイス
CN102694723B (zh) 一种变长报文流量控制服务调度的方法及装置
WO2021057068A1 (zh) Rdma数据流控方法、系统、电子设备及可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120314