令牌桶算法
⑴ 令牌桶算法的令牌桶工作参数
工作过程包括3个阶段:产生令牌、消耗令牌和判断数据包是否通过。其中涉及到2个参数:令牌产生的速率CIR(Committed Information Rate)/EIR(Excess Information Rate)和令牌桶的大小CBS(Committed Burst Size)/EBS(Excess Burst Size)。下面用图形简要概括一下这3个阶段与2个参数的关系。
产生令牌:周期性的以速率CIR/EIR向令牌桶中增加令牌,桶中的令牌不断增多。如果桶中令牌数已到达CBS/EBS,则丢弃多余令牌。 消耗令牌:输入数据包会消耗桶中的令牌。在网络传输中,数据包的大小通常不一致。大的数据包相较于小的数据包消耗的令牌要多。 判断是否通过:输入数据包经过令牌桶后的结果包括输出的数据包和丢弃的数据包。当桶中的令牌数量可以满足数据包对令牌的需求,则将数据包输出,否则将其丢弃。
⑵ 什么是漏桶算法和令牌桶算法
什么是令牌桶
在我们讨论突发数据量之前,我们首先要理解令牌桶的概念。令牌桶本身没有丢弃
和优先级策略,
令牌桶是这样工作的:
1. 令牌以一定的速率放入桶中。
2. 每个令牌允许源发送一定数量的比特。
3. 发送一个包,流量调节器就要从桶中删除与包大小相等的令牌数。
4. 如果没有足够的令牌发送包,这个包就会等待直到有足够的令牌(在整形
器的情况下)或者包被丢弃,也有可能被标记更低的DSCP(在策略者的情况下)。
5. 桶有特定的容量,如果桶已经满了,新加入的令牌就会被丢弃。因此,在
任何时候,源发送到网络上的最大突发数据量与桶的大小成比例。令牌桶允许突发,
但是不能超过限制。
Cisco IOS 流量策略(Traffic Policers)
IOS支持两种流量策略:
1. 传统的Cisco流量策略:CAR承诺接入速率,使用命令
Router(config-if)#rate-limit {input | output} CIR (bps)
Bc(burst-normal) Be(burst-max) conform-action action exceed-action action
2. 新型的Cisco流量策略:基于类的策略(Class-based policer),使用模
块化Qos CLI(MQC)语法。可以使用MQC命令建立流量策略并把策略应用到接口。
一个流量策略包括一个流量类(traffic class)和一个或多个Qos特性。Policy
命令用来执行流量策略特性,它指定了一个流量类所需要的最大速率,超过这个速
率Qos系统会立刻执行一个操作,标准的操作是丢弃或重置包头的DSCP字段。Policy
命令的语法是:
police cir<bps> Bc<bc> Be<be> conform<conform-action> exceed
<exceed-action> violate<violate-action>
理解Bc和Be
对于超额的数据包,流量策略并不会把它们缓存稍候转发,只有整形器(shaper)
会这样做。流量策略只执行一个发送或不发送的策略。因为不能缓存数据包,所以
在发生拥塞时,所能做的最好的方法就是通过配置适当的超额突发数据量Be来不那
么过分的丢弃数据包。这一点对理解流量策略使用Bc和Be来保证达到CIR是非常
重要的。
超额参数模仿路由器的通用缓存规则。The rule recommends configuring buffering
equal to the round-trip time bitrate to accommodate the outstanding TCP
windows of all connections in times of congestion.
突发参数 目的 推荐公式
普通突发 · 执行标准的令牌桶 · 设置最大数量的令牌(尽管如
果Be>Bc的话可以借到令牌). · 决定令牌桶有多大,因为如果桶已经满了那么令
牌将被丢弃而不会再加入到桶中。 CIR [bps] * (1 byte)/(8 bits) * 1.5
seconds Note: 1.5 seconds is the typical round trip time.
超额突发 · 为令牌桶提供超额突发能力 · 如果Bc = Be那么不
支持超额突发 · 当Bc = Be,流量调节器就不能借令牌,当令牌不够时只能丢弃数
据包 两倍的Bc
对TCP流量的测试表明,Bc 和Be的数值应该近似等于配置的平均速率在两秒钟内
的流量。如果你想限制流量在1Mb,应该把Bc 设置在1-2Mb,Be在2-4Mb。
举个例子,如果我们想把输出速率限制在1.5Mbps,我们可以做一下步骤:
1. 把承诺速率从比特转换成字节,因为突发数据量的单位为字节。
1500000 bits / 8 bits = 187500 bytes
2. 使用标准的1.5秒往返时间(round-trip time)计算Bc
187500 bytes * 1.5秒 = 281250 bytes
3. 两倍的Bc为Be
281250 bytes * 2 = 562500 bytes
使用命令
rate-limit input 1500000 281250 562500 conform-action {action}
exceed-action {action}
超额突发数据量
当数据包到达时可用的令牌数目小于包的大小,就可以使用超额突发数据量。包会
请求借用令牌。可以通过配置大于Bc的Be的数值来为令牌桶提供超额突发能力。
可以通过下面两个例子来理解Be。
第一个例子说明怎样配置CAR策略来允许所有的IP流量。管理员在T3线路上提供
了便宜的20Mbps的子速率服务。用户只花费子速率带宽的金额,也可以按需要增加
带宽。CAR限制了用户可用的流量速率,用户只能使用规定的速率加上承诺的突发
数据量。可以适当的设置Be=32000。
interface hssi 0/0/0
rate-limit output 20000000 24000 32000 conform-action transmit
exceed-action drop
下一个例子,用户只能发送24000字节的突发数据量,所有超过限制的数据包都要
被丢弃,因为设置Bc=Be,数据包流不能通过超额突发能力来借用令牌。
interface Hssi0/0/0
rate-limit output 20000000 24000 24000 conform-action transmit
exceed-action drop
正确设置突发数据量的重要性
策略以字节为单位指定了突发数据量,基于类的策略(class-based policer)支持
最小的突发数据量为1000字节,包括第二层包头。
突发数据量的目的是逐渐的丢弃数据包,就像RED那样,并且避免尾丢弃。设置足
够高的突发数据量对保证良好的吞吐量是非常重要的。
设置突发数据量时,考虑一下内容:
1. 如果突发数据量设置的过低,数据到达的速率将远远低于配置的速率。
2. 惩罚暂时突发对TCP流的吞吐量来说是相当不利的,具体情况请察看RFC
2001 and Random Early Detection (RED) gateways for Congestion Avoidance。
设置突发数据量来允许路由器容纳暂时突发。
3. 对离开接口的数据包的处理基于包的大小和桶中剩余的令牌数。
4. 在基于类的策略中,流量测量器不论接口是否拥塞都是激活的。每个包都
会经过令牌桶测量系统来决定是否符合配置的参数。
5. 如果数据突发量非常大而且非常突然,那么配置较高的超额突发数据量可
以保证超额令牌桶中存放较多的令牌。而且可以调整接口的MTU等于或大于突发数
据量大小。
允许的突发数据量数值
最初,包括IOS12.0,rate-limit命令支持承诺和超额的突发数据量的范围是:
Router1(config-if)#rate-limit input 18000000 ?
<8000-2000000> Normal burst bytes
Router1(config-if)#rate-limit input 18000000 2000000 ?
<8000-8000000> Maximum burst bytes
Router1(config-if)#rate-limit input 18000000 2000000
IOS12.1增加了突发数据量的最大值:
7500-107(config)#interface atm 1/0/0
7500-107(config-if)#rate-limit output ?
<8000-2000000000> Bits per second
access-group Match access list
qos-group Match qos-group ID<b
⑶ 令牌桶算法的分类
基于令牌桶的典型标记器有多种算法实现方案,基本算法主要有IN/OUT公平标记器(FM)和三色标记器(TCM),扩展的算法主要有单速率三色标记器(srTCM)和双速率三色标记器(trTCM)。其中单速率标记器和双速率标记器已分别称为IETF的标准建议。
IN/OUT 公平标记器(FM)
FM是一种双色单令牌桶标记器,它的Tspec是系统的分组平均速录为R,允许的突发度为B,工作原理就是当IP分组到达时若桶中有足够的令牌,则将符合Tspec的分组标记为IN;若此时没有足够的令牌,则认为该到达分组不符合Tpsec,不符合Tpsec的分组将被标记为OUT,网络将可能对这些被标记为不同属性的分组依据相应的策略进行不同的处理。
单速率三色标记器(srTCM)
srTCM是一种三色双令牌桶标记器,它的Tpsec有三个参数:承诺信息速率,承诺突发尺寸和超额突发尺寸。CIR的单位是bps,CBS及EBS的单位是Byte。
srTCM由两个令牌桶C和E组成,它们的CIR相同,容量则分别为CBS和EBS,C桶内存放黄色令牌,开始时令牌桶C与E都是满的。进入的分组没有超过CBS就标记为绿色;超过了CBS而没有超过EBS就标记为黄色;否则标记为红色。在DiffServ中,红、黄、绿可映射为不同的DSCP值。
双速率标记器(trTCM)
trTCM也是一种三色双令牌桶标记器,它的Tpsec有4个参数:峰值信息速率(PIR)、峰值突发尺寸(PBS)、承诺信息速率(CIR)和承诺突发尺寸(CBS)。PIR和CIR的单位是bps,PBS和CBS的单位是Byte。
⑷ 流量整形的流量整形的核心算法
流量整形的核心算法有以下两种,具体采用的技术为GTS(Generic Traffic Shaping),通用流量整形: 漏桶算法(Leaky Bucket)
漏桶算法是网络世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。 令牌桶算法(Token Bucket)
有时人们将漏桶算法与令牌桶算法错误地混淆在一起。而实际上,这两种算法具有截然不同的特性并且为截然不同的目的而使用。它们之间最主要的差别在于:漏桶算法能够强行限制数据的传输速率,而令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。
在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的参数,所以即使网络中不存在资源冲突(没有发生拥塞),漏桶算法也不能使某一个单独的流突发到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌桶算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法可以结合起来为网络流量提供更大的控制。
⑸ 计算机操作系统中的漏桶,令牌桶算法
我也不明白
⑹ VoIP的基本原理
VoIP的基本原理是通过语音的压缩算法对语音数据编码进行压缩处理,然后把这些语音数据按 TCP/IP 标准进行打包,经过 IP 网络把数据包送至接收地,再把这些语音数据包串起来,经过解压处理后,恢复成原来的语音信号,从而达到由互联网传送语音的目的。 IP 电话的核心与关键设备是 IP 网关,它把各地区电话区号映射为相应的地区网关 IP 地址。这些信息存放在一个数据库中,数据接续处理软件将完成呼叫处理、数字语音打包、路由管理等功能。 在用户拨打长途电话时,网关根据电话区号数据库资料,确定相应网关的 IP 地址,并将此 IP 地址加入 IP 数据包中,同时选择最佳路由,以减少传输延时, IP 数据包经 Internet 到达目的地的网关。在一些 Internet 尚未延伸到或暂时未设立网关的地区,可设置路由,由最近的网关通过长途电话网转接,实现通信业务。
VoIP是一种以IP电话为主,并推出相应的增值业务的技术。
VoIP主要有以下三种方式:
网络电话:完全基于Internet传输实现的语音通话方式,一般是PC和PC之间进行通话[1] 。
与公众电话网互联的IP电话:通过宽带或专用的IP网络,实现语音传输。终端可以是PC或者专用的IP话机[1] 。
传统电信运营商的VoIP业务:通过电信运营商的骨干IP网络传输语音。提供的业务仍然是传统的电话业务,使用传统的话机终端。通过使用IP电话卡,或者在拨打的电话号码之前加上IP拨号前缀,这就使用了电信运营商提供的VoIP业务[1] 。
VoIP相对比较便宜。这是因为VoIP电话不过是互联网上的一种应用。从本质上说,VoIP电话与电子邮件,即时讯息或者网页没有什么不同,它们均能在经过了互联网连接的机器间进行传输。这些机器可以是电脑,或者无线设备,比如手机或者掌上设备等等。
⑺ 漏桶算法的漏桶算法和令牌桶算法的区别
漏桶算法与令牌桶算法在表面看起来类似,很容易将两者混淆。但事实上,这两者具有截然不同的特性,且为不同的目的而使用。漏桶算法与令牌桶算法的区别在于:
l 漏桶算法能够强行限制数据的传输速率。
l 令牌桶算法能够在限制数据的平均传输速率的同时还允许某种程度的突发传输。
需要说明的是:在某些情况下,漏桶算法不能够有效地使用网络资源。因为漏桶的漏出速率是固定的,所以即使网络中没有发生拥塞,漏桶算法也不能使某一个单独的数据流达到端口速率。因此,漏桶算法对于存在突发特性的流量来说缺乏效率。而令牌桶算法则能够满足这些具有突发特性的流量。通常,漏桶算法与令牌桶算法结合起来为网络流量提供更高效的控制。
⑻ 令牌桶算法的简介
在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送。
令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。
大小固定的令牌桶可自行以恒定的速率源源不断地产生令牌。如果令牌不被消耗,或者被消耗的速度小于产生的速度,令牌就会不断地增多,直到把桶填满。后面再产生的令牌就会从桶中溢出。最后桶中可以保存的最大令牌数永远不会超过桶的大小。
传送到令牌桶的数据包需要消耗令牌。不同大小的数据包,消耗的令牌数量不一样。
令牌桶这种控制机制基于令牌桶中是否存在令牌来指示什么时候可以发送流量。令牌桶中的每一个令牌都代表一个字节。如果令牌桶中存在令牌,则允许发送流量;而如果令牌桶中不存在令牌,则不允许发送流量。因此,如果突发门限被合理地配置并且令牌桶中有足够的令牌,那么流量就可以以峰值速率发送。
令牌桶算法的基本过程如下:
假如用户配置的平均发送速率为r,则每隔1/r秒一个令牌被加入到桶中;
假设桶最多可以存发b个令牌。如果令牌到达时令牌桶已经满了,那么这个令牌会被丢弃;
当一个n个字节的数据包到达时,就从令牌桶中删除n个令牌,并且数据包被发送到网络;
如果令牌桶中少于n个令牌,那么不会删除令牌,并且认为这个数据包在流量限制之外;
算法允许最长b个字节的突发,但从长期运行结果看,数据包的速率被限制成常量r。对于在流量限制外的数据包可以以不同的方式处理:
它们可以被丢弃;
它们可以排放在队列中以便当令牌桶中累积了足够多的令牌时再传输;
它们可以继续发送,但需要做特殊标记,网络过载的时候将这些特殊标记的包丢弃。
注意:令牌桶算法不能与另外一种常见算法“漏桶算法(Leaky Bucket)”相混淆。这两种算法的主要区别在于“漏桶算法”能够强行限制数据的传输速率,而“令牌桶算法”在能够限制数据的平均传输速率外,还允许某种程度的突发传输。在“令牌桶算法”中,只要令牌桶中存在令牌,那么就允许突发地传输数据直到达到用户配置的门限,因此它适合于具有突发特性的流量。
⑼ 谁能·帮我解释一下Qos 的cir bc be之间的关系啊
BC:承诺突发量,即一次性加进的令牌数量 TC:向令牌桶中添加的令牌的时间周期,默认125ms,即1s要向令牌中放8次令牌。 CIR:承诺信息速率。即每秒钟往桶里加的令牌的速率,这个速率也就决定了用户流量,这是一个平均量,可由公式:CIR=BC/TC得出。 令牌桶算法的三种模式: 1.单速双色 在单速双色的令牌桶算法中,只存在一个令牌桶,并且流量只会出现两种结果,即符合CIR(conform)和超出CIR(exceed)。在一秒钟结束后,没有用完的令牌会被全部清空,由下一秒重新加入。 因此无论上一秒钟是否传过数据,这一秒都可以保持CIR,并且如果每秒流量超过了CIR后,超过的流量都会采取已经设定的动作。 2.单速三色 在单速三色的令牌桶算法中,使用两个令牌桶,用户每秒的可用带宽,总是两个桶的令牌之和。第一个桶的机制和单速双色算法没有区别。第二个桶的令牌却不是直接加入,只有当一秒钟结束后,第一个桶中存在剩余令牌时,这些剩余令牌就可以从第一个桶中被转移到第二仅供学习参考,请勿用于商业活动~ 2 个桶中。最大数量被称为 Excess Burst size(Be),Be是不可能超过CIR的,因为第一个桶每秒的所有令牌就是CIR,即使所有令牌全部被移到第二个桶,Be最多也只能等于CIR。注:Be和Bc却毫无关系。在每一秒结束时,若用户没有将第二个桶的令牌用完,那么第二个桶的令牌也是要全部清除的,第二个桶中的令牌,都来自于上一秒第一个桶没用完的令牌。 缺点:要使用户在某一秒的速度能够达到CIR+Be,唯一的办法是用户在上一秒钟以低于CIR的速度传输。因此,用户不可能每一秒都以CIR+Be的速度传输。 3. 双速三色 双速三色的令牌桶算法,同样使用两个令牌桶,然而这两个桶是相互独立的,并不会将第一个桶未用的令牌放入第二个桶。第一个桶与以往的算法相同,而第二个桶可以直接设置为CIR+Be之和,称为PIR。当用户的数据通过接口时,总是先检查第二个桶的PIR,如果超出则采取动作,如果未超出,再检查是是否符合第一个桶的CIR,如果超出CIR,则采取第二个桶的策略传输,如果未超过,则正正常传输。 由于直接设置两个速率,因此用户可以直接以CIR+Be之和的速率进行传输。 这是某大神做的总结。