CN116686256A - 一种基于令牌桶的流量控制方法和网络设备 - Google Patents
一种基于令牌桶的流量控制方法和网络设备 Download PDFInfo
- Publication number
- CN116686256A CN116686256A CN202180089637.0A CN202180089637A CN116686256A CN 116686256 A CN116686256 A CN 116686256A CN 202180089637 A CN202180089637 A CN 202180089637A CN 116686256 A CN116686256 A CN 116686256A
- Authority
- CN
- China
- Prior art keywords
- token
- message
- length
- token bucket
- deduction
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例提供了一种基于令牌桶的流量控制方法和网络设备,用于对通过网络设备的报文进行流量控制。周期性地向令牌桶中添加令牌,每周期内的令牌添加数符合2的自然数次幂的整数倍;当有报文通过网络设备时,根据报文的长度从令牌桶中扣除令牌,其中,每次扣除时的令牌扣除数符合2的自然数次幂的整数倍。根据以上技术方案,令牌添加数和令牌扣除数均为2的自然数次幂的整数倍,因此可以通过硬件的移位运算精确得到,不需要再引入除法器,也不需要取近似值,因此本申请实施例提供的基于令牌桶的流量控制方法能够在消耗较低硬件资源的同时,实现流量的精确控制。
Description
本申请涉及网络技术领域,尤其涉及一种基于令牌桶的流量控制方法和网络设备。
令牌桶算法是一种常见的网络流量整形(traffic shaping)和速率限制(rate limiting)算法。令牌桶算法可以评估通过网络设备的流量速率与用户配置的额定速率之间的关系,从而根据这一关系实现流量速率的控制。
令牌桶可以形象地看作一个存放令牌的桶,网络设备设定按照用户配置的速率向桶中填充令牌,每个令牌对应一定的流量。当有流量通过网络设备时,网络设备将与流量大小相应的令牌从桶中扣减。当令牌桶中的令牌被耗尽时,流量不能再继续通过网络设备。
网络设备向令牌桶填充令牌的速率通过令牌添加数确定,每次扣减具体扣除多少令牌则有令牌扣除数确定。目前,网络设备需要依赖除法运算来计算令牌添加数和令牌扣除数,对于硬件来说,执行除法运算消耗的硬件资源较大,对硬件复杂程度和计算能力要求较高。
发明内容
本申请实施例提供了一种令牌桶的流量控制方法和网络设备,能够降低令牌桶算法对硬件资源的消耗,并且流量控制的精度更高。
第一方面,本申请实施例提供了一种基于令牌桶的流量控制方法,该方法用于对通过网络设备的报文进行流量控制,该方法包括:周期性地向令牌桶中添加令牌,每周期内的令牌添加数符合2的自然数次幂的整数倍;当有报文通过网络设备时,根据报文的长度从令牌桶中扣除令牌,其中,每次扣除时的令牌扣除数符合2的自然数次幂的整数倍。令牌添加数令牌扣除数。
根据以上技术方案,令牌添加数和令牌扣除数均为2的自然数次幂的整数倍,因此可以通过硬件的移位运算精确得到,不需要再引入除法器,也不需要取近似值,因此本申请实施例提供的基于令牌桶的流量控制方法能够在消耗较低硬件资源的同时,实现流量的精确控制。
在一种实现方式中,令牌添加数符合2的自然数次幂的整数倍,包括:令牌添加数等于2的自然数次幂与令牌桶的期望带宽的数值乘积,期望带宽为整数。这样,本申请实施例提供的基于令牌桶的流量控制方法能够实现整数级别的精准流量控制。
在一种实现方式中,令牌扣除数符合2的自然数次幂的整数倍,包括:令牌扣除数等于2的自然数次幂与令牌桶的时钟频率的数值乘积,时钟频率为整数。令牌扣除数。这样,本申请实施例提供的基于令牌桶的流量控制方法能够基于整数级别的时钟频率进行流量控制。
在一种实现方式中,令牌添加数通过以下公式得到:
其中:TokenAdd为令牌添加数;ΔCycleCnt为每一个添加令牌的周期对应的令牌桶的时钟周期的数量;n为期望带宽;TokenUnit为令牌桶的令牌单位,令牌单位表示每个令牌对应的报文长度;m为令牌桶的时钟频率;令牌添加数等于2的自然数次幂与令牌桶的期望带宽 的数值乘积,包括:时钟周期数等于2的自然数次幂,令牌单位与时钟频率的数值乘积等于2的自然数次幂。这样,本申请实施例提供的基于令牌桶的流量控制方法通过约束ΔCycleCnt、令牌单位和时钟频率之间的数值关系,使得令牌添加数符合2的自然数次幂的整数倍。
在一种实现方式中,令牌添加数和令牌扣除数还满足以下关系:
TokenAdd=n×2
(N-X)
TokenSub=m×2
3-X+Y
其中:n为期望带宽,m为时钟频率,N、X、Y均为自然数,并且有X≤N,Y≥X-3。
令牌扣除数令牌添加数令牌扣除数令牌添加数令牌扣除数在一种实现方式中,自然数Y通过以下公式得到:
Y=log
2PktLen
其中,PktLen为每一次执行令牌扣除时,通过网络设备的报文需满足的最小长度,最小长度符合2的自然数次幂。
在一种实现方式中,自然数X通过以下公式得到:
X=log
2(m×TokenUnit),(X≤Y+3)
在一种实现方式中,自然数N通过以下公式得到:
N=log
2ΔCycleCnt,(N≥X)
这样,本申请实施例提供的基于令牌桶的流量控制方法基于ΔCycleCnt、令牌单位和时钟频率之间的数值关系,对令牌扣除数和令牌添加数的计算方式进行进一步简化。
在一种实现方式中,如果通过网络设备的所有报文均为存储单元cell粒度的报文,则每当通过网络设备的多个报文的总长度等于最小长度时,执行一次令牌扣除。这样,本申请实施例提供的基于令牌桶的流量控制方法可以对基于cell传输的报文进行流量控制。
在一种实现方式中,如果通过网络设备的报文长度包括最小长度的报文和其他长度的报文,并且其他长度为最小长度的自然数倍,则每当有一个报文通过网络设备时,执行一次令牌扣除。这样,本申请实施例提供的基于令牌桶的流量控制方法可以对基于一系列倍数变化长度传输的报文进行流量控制。
在一种实现方式中,如果通过网络设备的报文为随机长度的报文,则统计通过网络设备的报文的累计长度;每当累计长度大于或者等于目标长度,且目标长度等于最小长度的自然数倍时,执行一次令牌扣除,并且从累计长度中扣除目标长度。这样,本申请实施例提供的基于令牌桶的流量控制方法可以对基于任意长度传输的报文进行流量控制。
在一种实现方式中,令牌桶还包括速率等级表,速率等级表包括至少一个流量控制区间对应的令牌桶参数,以使得网络设备根据期望带宽所属的流量控制区间确定令牌桶参数。
在一种实现方式中,每个流量控制区间包括的令牌桶参数包括以下一种或者多种:令牌单位、第一周期数量、自然数N、自然数X、带宽递增粒度、与带宽递增粒度相对应的最小令牌添加数、流量控制区间对应的令牌添加数的区间、流量控制区间对应的期望带宽的区间。这样,当用户配置某一期望带宽时,网络设备可以根据期望带宽所在的流量控制区间选择相应的令牌桶参数对流量进行精准控制。
第二方面,本申请实施例提供了一种网络设备,包括存储器和处理器,存储器存储有计算机程序指令,当计算机程序指令被处理器执行时,使得网络设备执行上述第一方面及其各实现方式中的方法。
第三方面,本申请还提供了一种计算机存储介质。该计算机存储介质计算机指令,当计 算机指令在计算机上运行时,使得计算机执行上述各方面及其实现方式中的方法。
第四方面,本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面及其实现方式中的方法。
图1是令牌桶算法的原理图;
图2是本申请实施例示出的一种网络设备的结构示意图;
图3是本申请实施例对令牌桶的参数的限定条件示意图;
图4是本申请实施例示出的对报文长度PktLen进行归一化处理的流程图;
图5是本申请实施例示出的累计报文长度和令牌扣减的示意图;
图6是本申请实施例提供的令牌桶速率等级表。
令牌桶算法是一种常见的网络流量整形和速率限制算法。令牌桶算法可以评估通过网络设备的流量速率与用户配置的额定速率之间的关系,从而根据这一关系实现流量速率的控制。
图1是令牌桶算法的原理图。如图1所示,令牌桶10可以形象地看作一个存放令牌11的桶,网络设备设定按照用户配置的速率向桶中投放(或称填充)令牌11,每个令牌对应一定的流量12。当有流量12通过网络设备时,网络设备将与流量12大小相应的令牌11从桶中扣减。如果长时间没有流量12通过,则桶内的令牌11数量会达到一定上限,再此之后向桶内放入的令牌11都会被桶丢弃。如果通过网络设备的流量12较快,耗尽了桶内所有的令牌11,那么在新的令牌11放入桶内之前,流量12不能再继续通过网络设备,只能被缓存或者丢弃。由此可见,通过令牌桶算法,网络设备能够按照用户配置的速率对通过网络设备的流量速率进行控制。
为便于本领域技术人员后续理解本申请实施例的技术方案,下面对令牌桶算法涉及的相关概念进行列举说明:
1、令牌及令牌的度量单位。
①定义令牌为Token,一个令牌就是一个Token,因此Token的数值表示令牌桶内的令牌数目,这个令牌数目实质是期望通过网络设备的报文流量与实际通过网络设备的报文流量的差值。
②定义令牌的单位为TokenUnit,TokenUnit表示单位(每一个)令牌对应的网络设备能通过的流量的大小,TokenUnit通常以bit/Token(比特每令牌)为计量单位。例如,当TokenUnit=16bit/Token时,表示一个令牌对应网络设备能通过的流量为16bit,也即2Byte(字节)。
2、令牌填充的相关概念。
在令牌桶算法中,随着时间的推移,网络设备会周期性地向令牌桶内填充一定数量的令牌,简称令牌填充。令牌填充操作可以涉及以下概念:
①定义向令牌桶中填充令牌的时钟频率(即令牌桶的填桶时钟频率)为Freq(Frequency),Freq通常以赫兹(Hz)为单位,包括GHz、MHz等。例如,Freq=1000MHz。
②定义令牌桶的填桶时钟频率对应的周期为Period,Period通常以秒(s)为单位。可以理解Period与Freq互为倒数,例如,当Freq=1000Hz时,Period=0.001s。
③定义一定的时间间隔为ΔT,ΔT通常以秒(s)为单位。
④定义一定的时间间隔ΔT对应的时钟周期Period的数量为ΔCycleCnt。对于ΔCycleCnt,显然有公式(1):
⑤定义期望带宽为BW(BandWidth),其中期望带宽BW表示用户根据其期望配置的流量通过网络设备的额定带宽。期望带宽BW通常以bit/s(比特每秒)、bps(比特每秒)、Kbps(千比特每秒)、Mbps(兆比特每秒)、Gbps(吉比特每秒)为单位。
⑥定义在一定时间间隔ΔT内放入桶内的令牌添加数为TokenAdd,TokenAdd表示在一定的时间间隔ΔT内,按照期望带宽BW允许通过网络设备的报文流量所对应的令牌数量。对于TokenAdd,根据令牌填充的原理,显然有公式(2):
3、令牌扣减的相关概念。
在令牌桶算法中,当有报文通过网络设备时,需要从桶中扣减与报文流量向对应数量的令牌,简称令牌扣减。令牌扣减操作可以涉及以下概念:
①定义报文的长度为PktLen(Packet Length),这里的PktLen可以指的是对应一次令牌扣减的报文长度,可以是一条报文的长度,也可以是多条报文的长度,PktLen通常以Byte为单位。
②定义执行令牌扣减时的令牌扣除数TokenSub,TokenSub具体可以表示与一次令牌扣减的报文长度PktLen等价的令牌数量。
根据报文长度PktLen与令牌扣除数TokenSub等价的关系,可以得到以下公式(3):
在公式(3)中,由于报文长度PktLen的单位为Byte,TokenUnit的单位为bit/Token,两者不统一,因此可以首先将报文长度PktLen的单位转换成bit,根据1Byte=8bit,可以将PktLen乘以8,即转换成bit单位;接下来,再将PktLen×8除以TokenUnit,即得到令牌扣除数TokenSub。
基于上述1~3的相关概念说明,以及公式(1)~(3),令牌桶的工作原理可以进一步表述为:以期望带宽BW,每隔一段时间间隔ΔT,将数量为TokenAdd的令牌填充到桶内;当有报文通过时,将报文长度PktLen对应的令牌数量TokenSub从桶内扣减去;如果桶内的令牌被耗尽,在新的令牌放入桶内之前,报文不能再继续通过,从而实现了令牌桶算法的目标:控制报文的通过速率为期望带宽BW。
令牌桶算法是目前实现流量控制的常见手段,而评价流量控制好坏的一个最重要的指标就是流量控制的精度,如果采用令牌桶算法,这里的精度即为令牌桶的精度。在一种实现方式中,精度可以以误差率的方式体现,误差率越高则说明精度越差,误差率越高则说明精度越高。例如:精度Accurate可以通过以下公式(4)体现:
在公式(4)中,BW
exp表示用户的期望带宽,BW
cfg表示用于网络设备的硬件限制,实际能够配置出的带宽,由于网络设备的硬件限制,BW
exp与BW
cfg实际可能不相等,导致精度Accurate的值不为0,即存在误差。
一般来说,在对令牌桶的精度要求不高的场景中,令牌桶的精度Accurate达到误差小于 0.5%就可能已经满足需求了,但随着网络技术的发展,更多的领域要求令牌桶的精度达到0误差,即网络设备实际能够配置出的带宽BW
cfg和用户的期望带宽BW
exp完全相等。然而,基于目前已有的硬件,实现精度为0误差的令牌桶或者高精度的令牌桶需要消耗大量的硬件资源,对硬件自身复杂程度和计算能力要求也较高。
为便于理解令牌桶的精度与硬件资源消耗之间的关系,下面以目前常见的引入了除法器的令牌桶为例,进行示例性地解释说明。
以期望流量为BW=1Mbps的令牌桶为例,假定令牌单位TokenUnit为1bit/Token,时钟频率Freq=1GHz,则联立公式(1)和(2),并且代入参数值可以得到公式(5):
由此,在每个填充周期Period,网络设备的硬件可以根据公式5使用除法器执行除法运算精准得到需要填充的令牌数量TokenAdd。
然而,对于硬件来说,引入除法器会导致硬件资源消耗比较大。为了避免引入除法器,降低硬件资源的消耗,在一些精度不高的场景中,可以将公式(5)中的除法计算转换成硬件容易处理的计算,转换过程如公式(6)所示:
结合公式(6),具体来说,由于数据在硬件中是以2进制编码的形式存在,因此可以将公式(5)中的1000替换为与其数值接近的2的指数值,例如2
10=1024;这样,在硬件编码中,TokenAdd就可以通过对ΔCycleCnt执行移位运算得到,例如向左移动10个bit(即公式中的<<10)。
可以看出,借助硬件的移位运算可以避免采用除法器,降低令牌桶算法对硬件资源的消耗,然而,由于在算法的转换过程中涉及到了对数值的近似改变,因此公式(6)实际计算得到的TokenAdd并不能与用户的期望带宽BW精准对应。例如将1000转换为1024,会使得每个填充周期Period实际填充的令牌数量TokenAdd比预期的更小,因此令牌桶算法实际配置出的带宽比用户的期望带宽BW要低,具体精度可以由公式(7)计算得到:
由公式(7)可以看出,在期望流量为BW=1Mbps,令牌单位TokenUnit为1bit/Token,时钟频率Freq=1GHz的示例中,目前的移位运算方案的精度为2.34%,这个精度在流量控制精度要求不高的场景中可能能够应用,但是在流量控制精度要求较高的场景中,这个精度严重不足。
由此可见,基于目前的硬件,令牌桶算法无法在消耗较低硬件资源的同时,实现流量的精确控制。为了解决这一技术问题,本申请实施例提供了一种基于令牌桶的流量控制方法,也可以称作令牌桶算法,能够在消耗较低硬件资源的同时,实现流量的精确控制,例如无误差的流量控制。
本申请实施例提供的令牌桶可以基于硬件实现,该硬件例如可以是网络设备。图2是本申请实施例示出的一种网络设备的结构示意图。如图2所示,该网络设备具体可以是路由器、交换机、网络主机或者服务器等,可以作为转发设备在上游节点和下游节点之间转发报文。该网络设备可以包括存储器310、通信接口320和处理器330。存储器310、通信接口320和处理器330耦合连接,存储器310中存储有程序指令,处理器330可调用存储器310中的程序指令,使网络设备执行相关的方法,例如解析报文、生成报文,通过通信接口320接收和 转发报文、通过令牌桶等实现流量控制等。
本申请实施例中,网络设备的处理器330可以包括一个或者多个处理单元,例如系统芯片(system on a chip,SoC)、中央处理器(central processing unit,CPU)、微控制器(microcontroller,MCU)、存储控制器等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
本申请实施例中,网络设备的存储器310可以包括一个或者多个存储单元,例如可以包括易失性存储器(volatile memory),如:动态随机存取存储器(dynamic random access memory,DRAM)、静态随机存取存储器(static random access memory,SRAM)等;还可以包括非易失性存储器(non-volatile memory,NVM),如:只读存储器(read-only memory,ROM)、闪存(flash memory)等。其中,不同的存储单元可以是独立的器件,也可以集成或者封装在一个或者多个处理器或者通信接口中,成为处理器或者通信接口的一部分。
本申请实施例中,网络设备的通信接口320例如可以包括网络适配器(network adapter)、网卡(network interface card)、局域网接收器(LAN adapter)、网络接口控制器(network interface controller,NIC)、调制解调器(modem)等。其中,通信接口可以是独立的器件,也可以部分或者全部地集成或者封装在处理器中,成为处理器的一部分。
可以理解的是,本申请实施例示意的结构并不构成对网络设备的具体限定。在本申请另一些实施例中,网络设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请实施例提供的令牌桶算法的基本思路是将计算令牌桶填充量TokenAdd和令牌扣除数TokenSub涉及到的除法运算通过移位运算的形式实现,由此降低令牌桶算法对硬件资源的消耗,并且实现令牌桶填充量的精确计算,提高流量控制精度。为实现移位运算的目的,如图3所示,本申请实施例对令牌桶的参数进行了如下限定:
限定1:约束时间间隔ΔT对应的时钟周期数量ΔCycleCnt等于2的自然数次幂,即令牌填充的时间间隔为2的自然数次幂个时钟周期。
限定2:约束令牌单位TokenUnit和时钟频率Freq的乘积,即TokenUnit×Freq等于2的自然数次幂。
限定3:为实现约束2,TokenUnit可以是小数,以构造出TokenUnit×Freq等于2的自然数次幂。
限定4:将报文长度归化为2的自然数次幂。
这样,一方面,当令牌桶的参数满足限定1~3时,根据公式(5),令牌添加数TokenAdd的计算过程可以完全通过硬件的移位运算实现,并且不需要近似取值,因此降低了令牌桶算法对硬件资源的消耗,并且能够得到精确的整数值的令牌添加数TokenAdd;另一方面,当令牌桶的参数满足限定4时,根据公式(3),令牌扣除数TokenSub的计算过程可以完全通过硬件的移位运算实现,并且不需要近似取值,因此降低了令牌桶算法对硬件资源的消耗,并且能够得到精确的整数值的令牌扣除数TokenSub。由此可见,通过本申请实施例的限定,令牌添加数TokenAdd和令牌扣除数TokenSub均为精确的整数值,并且均通过硬件的移位计算得,到,使得令牌桶算法对硬件资源的消耗降低,并且流量控制更加精确。
下面将结合一些推导和演算过程、以及一些示例对限定1~4的确定依据进行具体说明:
首先,为了使令牌扣除数TokenSub的计算过程可以完全通过硬件的移位运算实现,本申请实施例设置ΔCycleCnt满足以下公式(8):
ΔCycleCnt=2
N,(N为自然数) (8)
可以理解的是,为了使令牌桶算法实现精准的带宽控制,令牌桶算法必须能够根据用户期望能够对令牌实现精准的令牌填充和精准的令牌扣减操作,由于硬件对令牌的添加和扣减是以整数个令牌添加和扣减的方式实现,因此要实现精准的令牌填充和精准的令牌扣减操作,公式(2)和(3)的计算结果就必须是整数,即令牌添加数TokenAdd和令牌扣除数TokenSub都必须为整数。
下面基于本申请实施例对ΔCycleCnt的限定,对令牌添加数TokenAdd和令牌扣除数TokenSub需要满足的条件进行进一步说明。
a.令牌添加数TokenAdd满足的条件:
首先设置令牌桶的期望带宽BW为n Mbps,设置令牌桶的时钟频率Freq为m MHz,这里n和m可以为自然数,也可以是其他数值,本申请实施例对此不做限定。一般来说,当用户需要设置网络设备进行流量控制时,从习惯上通常会对流量进行整数控制,例如控制流量为100Mbps、500Mbps、1Gbps等,因此本申请实施例此处着重针对n和m为自然数的情况进行展开说明。
那么,期望带宽BW和时钟频率Freq满足以下公式(9):
这里需要补充说明的是,期望带宽BW的单位Mbps和时钟频率Freq的单位MHz在此处仅作为一个示例,仅意味着本申请实施例提供的令牌桶可以基于整数MHz的时钟频率Freq和整数Mbps的期望带宽对流量进行精准控制,不构成对期望带宽BW的单位和时钟频率Freq的单位的限定,期望带宽BW的单位和时钟频率Freq的单位是可以根据用户配置而改变的。
接下来,将公式(8)和公式(9)代入公式(5),则可以得到以下公式(10)
从公式(10)可以看出,当ΔCycleCnt满足公式(8)时,如果要满足令牌添加数TokenAdd通过移位运算得到,那么TokenUnit×Freq可以等于2的自然数次幂。另外,若要进一步满足TokenAdd为整数,则可以有m×TokenUnit满足以下公式11:
m×TokenUnit=2
X(X≤N,且X为自然数) (11)
这样,由于2
N除以2
X等于2
(N-X),当N为自然数,X≤N,且X为自然数时,N-X为整数,同时n为整数,因此可以保证令牌添加数TokenAdd为整数。具体来说,将公式(11)代入到公式(10),可以得到令牌添加数TokenAdd满足以下公式(12):
b.令牌扣除数TokenSub满足的条件:
根据公式(11),有:
由于2
X除以m得到的不一定是整数,因此,为了确保TokenUnit与m(即Freq)相乘后能够得到2
X,TokenUnit可以是小数。
将公式(11-1)代入公式(3),可以得到令牌扣除数TokenSub满足以下公式(13):
从公式(13)可以看出,当m取值为任意自然数时,为了使令牌扣除数TokenSub为整数,PktLen×2
(3-X)也需要为自然数,并且,为了使令牌扣除数TokenSub通过硬件实现时可以通过移位运算实现,PktLen可以满足公式(14):
PktLen=2
Y(Y≥X-3,且Y为自然数) (14)
进一步地,联立公式(13)和(14),可以得到令牌扣除数TokenSub满足公式(15):
TokenSub=m×2
3-X+Y (15)
结合公式(14)可以看出,为了使令牌扣除数TokenSub满足整数要求,本申请实施例对报文长度PktLen也进行了一些约束,即报文长度PktLen应当满足2
Y。然而,一般来说,通过网络设备的报文长度PktLen可以为任意值,可能是固定长度,也可能是变化长度。因此,当通过网络设备的报文长度不满足PktLen=2
Y时,本申请实施例可以对网络设备的出队列的报文长度PktLen进行归一化处理,使其满足PktLen=2
Y,即满足公式(14)的约束,以保证每次令牌扣除数TokenSub为整数。关于将报文长度PktLen约束为满足公式(14)的具体实现方式将在后续的实施例中做进一步展开说明。
综上a和b所述,当用户配置令牌桶的期望带宽BW为n Mbps、时钟频率Freq为m MHz时,只需根据以下公式(16)(包括公式(12)和(15))即可计算出相应的令牌添加数TokenAdd和令牌扣除数TokenSub:
其中,N、X、Y均为自然数,并且有X≤N,Y≥X-3。
由公式(16)可以看出,由于n和m在期望带宽BW和时钟频率Freq设置好的状态下为常数,因此在硬件实现时,令牌添加数TokenAdd和令牌扣除数TokenSub可以是n和m通过左移或者右移的移位运算来精确实现,不需要再引入除法器,使得令牌桶算法能够在消耗较低硬件资源的同时,实现流量的精确控制。
进一步从公式(16)可以看出,N、X、Y均为自然数,并且X≤N,Y≥X-3可以存在无数种组合,也就意味着令牌添加数TokenAdd和令牌扣除数TokenSub可以有无数组取值。为便于本领域技术人员具体确定出令牌添加数TokenAdd和令牌扣除数TokenSub任意一组取值,本申请实施例以下对N、X、Y的取值方式进行示例性说明。
对于Y,根据公式(14),Y可以通过约束报文长度PktLen为2的自然数次幂得到,即Y满足公式(17):
Y=log
2PktLen (17)
由此可见,已确定了报文长度PktLen,Y的值即可以随机确定。
示例地:当确定报文长度PktLen=32Byte时,Y的值确定为5;当报文长度为128Byte时,Y的值确定为7;当报文长度为1024Byte时,Y的值确定为10。
对于X,根据公式(11),X可以通过约束TokenUnit的值得到,并且同时满足X≤Y+3,即X满足公式(18):
X=log
2(m×TokenUnit),(X≤Y+3) (18)
其中,由于m已知,并且TokenUnit是人为定义的任意值,因此很容易确定一个TokenUnit的值,使X满足约束。
示例地,当m=1000时:如果Y的值确定为5,则可以取TokenUnit=0.128,此时X=7;如果Y的值确定为5,则可以取TokenUnit=0.256,此时X=8;如果Y的值确定为7,则可以 取TokenUnit=0.128,此时X=7;如果Y的值确定为7,则可以取TokenUnit=0.256,此时X=8。
由此可见,对于相同的Y值,其对应的X值可以相同也可以不同,具体根据选取的TokenUnit的值确定,Y值限制了X的最大取值;对于不同的Y值,其对应的X值也可以相同或者不同,具体根据选取的TokenUnit的值确定,Y值仅限制了X的最大取值有所不同。
对于N,根据公式(8),N可以通过约束ΔCycleCnt为2的自然数次幂得到,即N满足公式(19):
N=log
2ΔCycleCnt,(N≥X) (19)
其中,由于ΔCycleCnt是人为定义的任意值,因此很容易确定一个ΔCycleCnt的值,使N满足约束。
示例地,当X=7时,由于N≥X,因此可以将ΔCycleCnt取值为256,此时N=8,或者将ΔCycleCnt取值为512,此时N=9,或者将ΔCycleCnt取值为1024,此时N=10。
由此可见,对于相同的X值,可以设置不同的N值,由于N对应的是ΔCycleCnt的取值,N越大意味向令牌桶中添加令牌的时间间隔ΔT越大,相应的令牌添加数TokenAdd越大,N越小意味向令牌桶中添加令牌的时间间隔ΔT越小,相应的令牌添加数TokenAdd越小。
可以理解的是,由于通过网络设备的报文长度PktLen可以为任意值,可能是固定长度,也可能是变化长度,可能满足PktLen等于2的自然数次幂,也可能不等于2的自然数次幂,那么,针对不同的报文长度PktLen,本申请实施例的令牌桶在实现时,对报文可以有不同的归一化处理方式。以下将报文长度PktLen分为三种实现方式进行具体展开说明。
第一种实现方式,报文长度PktLen为固定值,且满足报文长度PktLen等于2的自然数次幂。
一般来说,如果网络设备的出队列报文是基于存储器的存储单元cell粒度的,那么报文长度PktLen就可以归一化为固定值。存储单元cell一般是存储器的最小存储单元,每个存储单元cell可以存储一个比特bit,因此,如果出队列报文是基于存储器的存储单元cell粒度的,就说明报文是以比特bit为粒度进行出队列。由于比特bit也是报文的最小单位,因此在比特bit粒度上可以归一化出任意的报文长度PktLen,为便于计算令牌扣除数,本申请实施例可以将报文长度PktLen归一化为固定值。
对于第一种实现方式,以时钟频率Freq为1000MHz(m=1000)、期望带宽BW为1Mbps(n=1)、报文长度PktLen为固定值128Byte为例:
由公式(17)可得:
Y=log
2128=7 (20)
根据公式(18),X的取值大于或者小于Y+3,即X≤10,因此这里可以取值X=10,则进一步根据m=1000可得TokenUnit为1.024,则根据公式(18)可得:
X=log
2(1000×1.024)=10 (21)
根据公式(19),N的取值大于或者小于X,即N≥10,能够满足这一约束的ΔCycleCnt值例如可以为1024,则根据公式(19)可得:
N=log
21024=10 (22)
接下来,将确定的Y、X、N的值代入公式(16),则可得:
这样,对于时钟频率Freq=1000MHz、报文长度PktLen=128Byte(固定值)的实现方式,在配置令牌桶时,只要配置TokenUnit=1.024、ΔCycleCnt=1024,就可以得到期望带宽BW=1Mbps的精准令牌桶,实现对流量的精准控制。
第二种实现方式,报文长度PktLen可能具有多个值,其中,报文长度的最小值PktLen
min等于2的自然数次幂,即PktLen
min=2
Y,报文长度其余的值均为报文长度的最小值PktLen
min的任意整数倍。例如,报文长度的最小值PktLen
min=128Byte,其他的报文长度可以包括256Byte、384Byte、512Byte、640Byte、768Byte、896Byte、1024Byte等。
对于第二种实现方式,以时钟频率Freq为1000MHz(m=1000)、期望带宽BW为1Mbps(n=1)、报文长度的最小值PktLen
min=128Byte为例:
以报文长度的最小值PktLen
min=128Byte确定Y的取值,则根据公式19可得:
Y=log
2128=7 (24)
根据公式(18),X的取值大于或者小于Y+3,即X≤10,因此这里可以取值X=10,则进一步根据m=1000可得TokenUnit为1.024,则根据公式(18)可得:
X=log
2(1000×1.024)=10 (25)
根据公式(19),N的取值大于或者小于X,即N≥10,能够满足这一约束的ΔCycleCnt值例如可以为1024,则根据公式(19)可得:
N=log
21024=10 (26)
将确定的X、N的值代入公式(16),确定令牌添加数TokenAdd,可得:
TokenAdd=1×2
(10-10)=1 (27)
根据公式(25)-(27)可以看出,由于令牌桶的填充操作不涉及报文长度,在确定令牌添加数TokenAdd时,仅使用了X和N的取值,因此相比于第一种实现方式,第二种实现方式中的X和N的取值可以保持不变,这样令牌添加数TokenAdd也保持不变。对于令牌扣除操作,如公式(24)所示,可以根据报文长度的最小值PktLen
min确定Y的取值,令牌扣除数TokenSub则可以通过以下方式确定:
首先,对于除报文长度的最小值以外的其余报文长度PktLen,有:
PktLen=PktLen
min×Z=2
Y×Z (28)
其中,Z为正整数,表示其余报文长度是报文长度的最小值的整数倍。
将公式(28)代入公式(13),可以得到令牌扣除数TokenSub的计算公式变化为公式(29):
TokenSub=m×PktLen×2
3-X=m×Z×2
3-X+Y (29)
接下来,将确定的Y、X、N的值代入公式(29),则可得:
TokenSub=1000×Z×2
3-10+7=1000×Z (30)
通过对比公式(23)和公式(30)可以看出,当报文长度是最小值PktLen
min的整数倍时,令牌扣除数TokenSub实际上就是报文长度为最小值PktLen
min时对应的最小令牌扣除数(本示例中为1000)的整数倍,因此,只需以报文长度的最小值PktLen
min确定最小令牌扣除数,就可以很容易确定其余报文长度对应的令牌扣除数TokenSub。
第三种实现方式,报文长度PktLen可以是任意值。对于任意值的报文长度PktLen,可以通过归一化的方式将报文长度PktLen处理为如公式(14)所示的2
Y长度,或者处理为如公式(28)所示的2
Y×Z长度。这样,第三种实现方式就等效成了第一种实现方式或者第二种实现方式,可以采用第一种实现方式和第二种实现方式中的方法确定令牌添加数TokenAdd和令牌扣除数TokenSub。
图4是本申请实施例示出的对报文长度PktLen进行归一化处理的流程图。
如图4所示,对报文长度PktLen进行归一化处理可以通过以下步骤实现:
步骤S1,定义最小报文长度PktLen_min,并且最小报文长度PktLen_min为2的自然数次幂。
步骤S2,定义进入网络设备的报文队列的报文的累计报文长度QueLen。
累计报文长度QueLen的初始值为0。
步骤S3,当有报文进入报文队列时,将这个报文的报文长度PktLen累加至QueLen中,即:
QueLen=QueLen+PktLen。
可以理解的是,当持续有报文进入到报文队列时,累计报文长度QueLen可以持续累加,如图5所示,当有报文1、报文2和报文3先后进入到报文队列时,累计报文长度QueLen可以是报文1、报文2和报文3的长度之和。
步骤S4,当令牌桶中的令牌数量大于0时,报文允许出队列。在这种实现方式下,如图5所示,当累计报文长度QueLen大于0,并且每当累计报文长度QueLen大于或者等于最小报文长度PktLen_min正整数倍,即QueLen≥PktLen_min×Z时,就从令牌桶中扣减PktLen_min×Z的报文对应的令牌量,即:如果令牌桶中的令牌量不足以扣减以及令牌量为0时,可以暂停报文出队列,待令牌桶中的令牌量大于PktLen_min×Z的报文对应的令牌量之后,再进行扣减,并且恢复报文出队列。
步骤S5,网络设备记录累计报文长度QueLen扣除了PktLen_min×Z的剩余部分,即:
QueLen=QueLen-PktLen_min×Z
当后续有报文进入队列时,继续执行步骤S3-步骤S5。如图5所示,当后续又有报文4进入到报文队列时,累计报文长度QueLen等于上次扣减后的剩余长度与报文4的长度的累加之和,如果累计报文长度QueLen再一次大于或者等于最小报文长度PktLen_min正整数倍,则继续进行扣减。
这样,虽然到达网络设备的报文长度不是最小报文长度PktLen_min,但是本申请实施例的令牌桶可以将报文归一化到最小报文长度PktLen_min的正整数倍,以最小报文长度PktLen_min的正整数倍对应的令牌量进行令牌扣除,由此实现带宽的精准控制。
这里需要补充说明的是,在第三种实现方式中,虽然是以最小报文长度PktLen_min的正整数倍对应的令牌量进行令牌扣除,但是在报文出队列的实现中,可以在令牌扣减之前提前将报文以最小报文长度PktLen_min进行出队列,这样可以降低报文从进入队列到出队列之间的时延。
在另一种实现方式中,基于限定1~4,本申请实施例可以针对不同的流量控制区间设置不同的TokenUnit值、ΔCycleCnt值,得到不同流量控制区间对应的令牌桶参数。这些令牌桶参数可以采用令牌桶速率等级表的方式存储在网络设备中,当用户配置某一期望带宽BW时,网络设备根据期望带宽BW所在的流量控制区间选择相应的令牌桶参数对流量进行精准控制。
以时钟频率Freq=1000MHz为例,一种令牌桶速率等级表如图6所示:
从图6示出的令牌桶速率等级表可以看出:令牌桶的整体流量控制区间从0.5Mbps~2Gbps被划分成了四个速率等级,分别为:
速率等级K3:0.5Mbps~4Mbps,支持以15.625Kbps的粒度递增的带宽值。
速率等级K2:4Mbps~32Mbps,支持以125Kbps的粒度递增的带宽值。
速率等级K1:32Mbps~256Mbps,支持以1Mbps的粒度递增的带宽值。
速率等级K0:256Mbps~2Gbps,支持以8Mbps的粒度递增的带宽值。
根据令牌桶速率等级表,期望带宽BW满足以下公式(30):
下面以速率等级K0为例,对令牌桶速率等级表中的各个参数进行具体解释说明:
其中:
为满足TokenUnit×Freq等于2的自然数次幂,速率等级K0中确定TokenUnit=1.024。
为满足ΔCycleCnt等于2的自然数次幂,速率等级K0中确定ΔCycleCnt=128。
根据公式(8),可以确定N=7。根据公式(18)可以确定X=10,此时,X>N。根据公式(12),当X>N时,若n为任意值,则不能保证始终TokenAdd为正整数,因此可以需要对n进行限定,如果TokenAdd取最小值1,根据公式(12)可以确定n有最小值为n=8,这个n的最小值可以被称作带宽递增粒度,意味着速率等级K0对应的带宽递增粒度n=8Mbps。可见,TokenAdd=1是与带宽递增粒度n=8Mbps相对应的最小令牌添加数。
另外,Cfg_Token表示每ΔCycleCnt个时钟周期(时间间隔ΔT)按照期望带宽BW需要向令牌桶中添加的令牌量,不同的Cfg_Token的值对应不同的期望带宽BW,令牌桶速率等级表中设置Cfg_Token在32~255之间,最小值Cfg_Token_min=32,对应期望带宽的最小值BW_min=256Mbps,最大值Cfg_Token_max=255,对应期望带宽的最大值BW_max=2040Mbps。这样,速率等级K0可以实现在期望带宽256Mbps~2Gbps之间以8Mbps为粒度进行流量控制。
示例地,当期望带宽为800Mbps,根据令牌桶速率等级表可以确定采用速率等级K0,根据公式(30)可以确定Cfg_Token=100,计算公式如(31)
其他速率等级中的各个参数的确定方式与速率等级K0类似,此处不再赘述。需要补充说明书,本申请实施例示出的表1仅仅是令牌桶速率等级表的一个示例,令牌桶速率等级表中的参数可以根据时钟频率Treq、期望带宽BW范围等参数的变化而相应变化,不构成对本申请实施例的具体限定。因此,本领域技术人员对令牌桶速率等级表的任何修改和改进,例如增加或者减少速率等级、调整任意参数等,或者,将令牌桶速率等级表的功能以其他任意形式实现,例如通过硬件电路实现等,均没有超出本申请实施例的保护范围。
本申请还提供了一种计算机存储介质。该计算机存储介质计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述各方面及其实现方式中的方法。
本申请还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面及其实现方式中的方法。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (13)
- 一种基于令牌桶的流量控制方法,其特征在于,用于对通过网络设备的报文进行流量控制,所述方法包括:周期性地向令牌桶中添加令牌,每周期内的令牌添加数符合2的自然数次幂的整数倍;当有报文通过网络设备时,根据所述报文的长度从令牌桶中扣除令牌,其中,每次扣除时的令牌扣除数符合2的自然数次幂的整数倍。
- 根据权利要求1所述的方法,其特征在于,所述令牌添加数符合2的自然数次幂的整数倍,包括:所述令牌添加数等于2的自然数次幂与令牌桶的期望带宽的数值乘积,所述期望带宽为整数。
- 根据权利要求2所述的方法,其特征在于,所述令牌扣除数符合2的自然数次幂的整数倍,包括:所述令牌扣除数等于2的自然数次幂与令牌桶的时钟频率的数值乘积,所述时钟频率为整数。
- 根据权利要求2或3所述的方法,其特征在于,所述令牌添加数通过以下公式得到:其中:TokenAdd为所述令牌添加数;ΔCycleCnt为每一个添加令牌的周期对应的令牌桶的时钟周期的数量;n为期望带宽;TokenUnit为令牌桶的令牌单位,所述令牌单位表示每个令牌对应的报文长度;m为令牌桶的时钟频率;所述令牌添加数等于2的自然数次幂与令牌桶的期望带宽的数值乘积,包括:所述时钟周期数等于2的自然数次幂,所述令牌单位与所述时钟频率的数值乘积等于2的自然数次幂。
- 根据权利要求2-4任一项所述的方法,其特征在于,所述令牌添加数和所述令牌扣除数还满足以下关系:TokenAdd=n×2 (N-X)TokenSub=m×2 3-X+Y其中:n为期望带宽,m为时钟频率,N、X、Y均为自然数,并且有X≤N,Y≥X-3。
- 根据权利要求5所述的方法,其特征在于,所述自然数Y通过以下公式得到:Y=log 2PktLen;其中:PktLen为每一次执行令牌扣除时,通过网络设备的报文需满足的最小长度,所述最小长度符合2的自然数次幂。
- 根据权利要求5所述的方法,其特征在于,所述自然数X通过以下公式得到:X=log 2(m×TokenUnit),(X≤Y+3)。
- 根据权利要求5所述的方法,其特征在于,所述自然数N通过以下公式得到:N=log 2ΔCycleCnt,(N≥X)。
- 根据权利要求6所述的方法,其特征在于,如果通过网络设备的所有报文均为存储单元cell粒度的报文,则每当通过网络设备的多个报文的总长度等于所述最小长度时,执行一次令牌扣除。
- 根据权利要求6所述的方法,其特征在于,如果通过网络设备的报文长度包括所述最小长度的报文和其他长度的报文,并且所述其他长度为所述最小长度的自然数倍,则每当有一个报文通过网络设备时,执行一次令牌扣除。
- 根据权利要求6所述的方法,其特征在于,如果通过网络设备的报文为随机长度的报文,则统计通过网络设备的报文的累计长度;每当所述累计长度大于或者等于目标长度,且所述目标长度等于所述最小长度的自然数倍时,执行一次令牌扣除,并且从所述累计长度中扣除所述目标长度。
- 根据权利要求2-11任一项所述的方法,其特征在于,所述令牌桶还包括速率等级表,所述速率等级表包括至少一个流量控制区间对应的令牌桶参数,以使得所述网络设备根据所述期望带宽所属的流量控制区间确定所述令牌桶参数。
- 一种网络设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序指令,当所述计算机程序指令被所述处理器执行时,使得所述网络设备执行权利要求1-12任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2021/091845 WO2022232976A1 (zh) | 2021-05-06 | 2021-05-06 | 一种基于令牌桶的流量控制方法和网络设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116686256A true CN116686256A (zh) | 2023-09-01 |
Family
ID=83932601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180089637.0A Pending CN116686256A (zh) | 2021-05-06 | 2021-05-06 | 一种基于令牌桶的流量控制方法和网络设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116686256A (zh) |
WO (1) | WO2022232976A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1302638C (zh) * | 2003-04-03 | 2007-02-28 | 华为技术有限公司 | 采用令牌漏桶进行报文限流的方法 |
JP3961000B2 (ja) * | 2005-05-26 | 2007-08-15 | 株式会社日立コミュニケーションテクノロジー | パケット転送装置及びネットワークシステム |
CN102739531B (zh) * | 2012-06-19 | 2016-06-15 | 华为技术有限公司 | 流量整形方法和流量整形设备 |
CN102970238B (zh) * | 2012-11-22 | 2015-09-30 | 华为技术有限公司 | 一种流量控制的方法和设备 |
CN103197754B (zh) * | 2013-04-01 | 2016-05-25 | 华为技术有限公司 | 一种降低芯片功耗的方法和装置 |
CN107204930B (zh) * | 2016-03-17 | 2020-05-19 | 深圳市中兴微电子技术有限公司 | 令牌添加方法及装置 |
-
2021
- 2021-05-06 WO PCT/CN2021/091845 patent/WO2022232976A1/zh active Application Filing
- 2021-05-06 CN CN202180089637.0A patent/CN116686256A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022232976A1 (zh) | 2022-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101997766B (zh) | 一种基于优先级的令牌桶限速的方法及系统 | |
Neely | Optimal energy and delay tradeoffs for multiuser wireless downlinks | |
Ciucu et al. | A network service curve approach for the stochastic analysis of networks | |
US7002980B1 (en) | System and method for router queue and congestion management | |
US11032133B2 (en) | Universal scaling controller for software network functions | |
EP1854248B1 (en) | Method and system for shaping traffic in a parallel queuing hierarchy | |
US20150188844A1 (en) | System to Share Network Bandwidth Among Competing Applications | |
US7778174B2 (en) | Shaper circuit and shaper circuit combination | |
CN111147395B (zh) | 一种网络资源调整方法及装置 | |
WO2013000116A1 (zh) | 一种漏桶限速方法及装置 | |
WO2020142867A1 (zh) | 一种流量整形方法及相关设备 | |
EP2432170A1 (en) | A token bucket based data packet traffic shapping device | |
US20140298057A1 (en) | Method and apparatus for reducing chip power consumption | |
KR20150075356A (ko) | 서비스 품질의 가상화를 위한 방법 및 장치 | |
CN109495343A (zh) | 异常流量数据的处理方法、装置及服务器 | |
US20220232584A1 (en) | Method and apparatus for bandwidth allocation | |
Hosseini et al. | Probabilistic virtual link embedding under demand uncertainty | |
CN116686256A (zh) | 一种基于令牌桶的流量控制方法和网络设备 | |
CN113906720B (zh) | 流量调度方法、设备及存储介质 | |
CN106850456A (zh) | 令牌桶流速限制器 | |
US6563787B1 (en) | Method and apparatus for providing data flow control of a transmission port | |
CN114980155A (zh) | 一种面向6TiSCH网络的周期性数据流调度聚合方法 | |
Briscoe | The native AQM for L4S traffic | |
Yang et al. | BFRP: Endpoint congestion avoidance through bilateral flow reservation | |
Davik et al. | The stability of the resilient packet ring aggressive fairness algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |