|
何为令牌桶算法——QOS
发贴: 2007年10月15日 15:47:56 回帖
CISCO IOS管制器和整形器使用信令牌桶算法建模.本质上令牌桶算法是测量引擎,跟踪能够发送多少流量来证实指定的流量速率.一个令牌允许该算法发送单个位(某些情况下,可以是一个字节)的流量.这些令牌在某个时间增量开始时得到授权,通常是每秒,根据指定的速率,一般称为承诺的信息速率(CIR).CIR是与服务提供商或维护的服务级约定的访问比特率.
举例来说,如果CIR设置为8000bin/s,那么在每个时间周期的开始将8000个令牌放入"桶"里(注意,这个描述给出了该算法一个简单观点,在所有情况下并不严格认真,但它说明了桶里面有令牌,该流量就被放行.每放行流量中的一位,就从桶中移除一个令牌.因此,流量可以看成是服务速率的,因此服从流量的行为得以实现.(通常来说,服从的流量会被发送)当桶里没有令牌的时候,出现的任何额外流量都被视作超出速率,此时就采取超出的动作.(过量流量通常要么被标记,要么被丢弃)
在每秒的最后,都可能有未用的令牌,未使用令牌的处理是各种管制器之间的关键区别.
当对某个接口施加速率限制(或CIR)时,受限制的流量就被分配一个亚秒级时间片,它可以在这个时间片中被发送.亚秒级时间片也可称为间隔(或TC).举例来说,如果一个8Kbit/s的CIR作用在一个64Kbit/s的链路上,流量可以以125毫秒(64000bit/s/8000位)的间隔发送.
CIR的总数(8000位)可以一次发送,但这时算法在能够发送更多数据之前(作用到速率限制)就必须等待875毫秒.这样的分组间延迟有可能被看成是过量.因此,为了平滑每秒流出的流量,CIR被分成更小的单位,被称为承诺突发(BC),即每个时间间隔传输持续数量的位.这些更小的单位在单个秒中通过多个实例发送.继续前面的例子,如果BC被设置为1000,每个承诺突发仅需15.6ms(1000位/64000bit/s)以时钟速率将流量送出接口.该算法等待109.4ms(125ms-15.6ms),然后再以15.6ms发送另一组数据.该过程在每秒内重复8次.
因此,令牌桶算法可以描述如下:
CIR=Bc/Tc
Cisco IOS软件不允许间隔的显示定义.与此相反,它采用CIR和BC作为参数,间隔和每秒的农历发量可以根据它们计算得到.兴例来说,如果CIR是8000,BC是4000,每秒产生二个突发(TC=500ms).如果BC设置为2000,那么每秒就产生4个突发(TC=250ms).如果BC设置为1000,每秒就产生8个突发(TC=125ms).
最早的管制器都使用单一速率双色标记器和单桶.这种模型中,流量被标记为二种状态(对应二种颜色)之一:符合或超过CIR.标记和丢弃动作作用在这二种流量状态上.该标记器和管制器的类型是相当粗糙的.
1)承诺的访问速率(CAR)(典型的单速率双色和单桶应用)
CAR是CISCO IOS软件中提供的最古老的管制工具,古老原因有:
CAR与DiffServ RFC不兼容.
没有基本百分比的带宽规范和分层管制
CAR不能使用MQC语法.
NBAR不能用在CAR中,还有其它方面.
配置清单:
Router# sh run
interface Hssi0/0/0
description 45Mbps to Router2
rate-limit input access-group 101 20000000 24000 32000
conform-action set-prec-transmit 2 exceed-action set-prec-transmit 0
rate-limit input access-group 102 10000000 24000 32000
conform-action set-prec-transmit 2 exceed-action drop
rate-limit input 8000000 16000 24000 conform-action set-prec-transmit 5
exceed-action drop
ip address 200.200.14.250 255.255.255.252
access-list 101 permit tcp any any eq www
access-list 102 permit tcp any any eq ftp
访问列表101定义匹配WEB流量,它把WEB流量的速率限制在20M,正常突发24000字节,过量突发在小在32000字节,符合该速率(少于20)的流量标记IP优先级2;超过速率的流量标记IP优先级0.该语句不丢弃流量.
2)基于类别的管制(policers)(单速率三色和双桶)
policers突破了前面管制器的所有缺点,在控制流量的精度上极大地增强.该管制器的工作逻辑为:
policers管制器使遥了单速率三色和双桶算法.第一个桶中任何未用的令牌都被放入第二个令牌桶中,用做以后临时突发可能超过CIR的信用证,放置在第二个桶中的令牌供应被称为过量突发(BE),当BC满的时候(第一个桶),令牌的数量被放置在桶里(第二个桶),当BC未满时,第二个桶包含了第一个桶未用的令牌.BE是可以超过突发大小的最大位数.
配置清单:
Class Default Policing Example
Router# sh run
policy-map RFC2697-POLICER
class class-default
police cir 256000 bc 8000 be 8000
conform-action set-dscp-transmit af31
exceed-action set-dscp-transmit af32
violate-action set-dscp-transmit af33
3)双速率三色(双桶)
单速率三色和双桶基于RFC 2697来定义,而双速率三色双桶基于RFC 2698来定义.在单速率三色双桶中,它为临时流量突发提供信用量,但是,过量突发信用量积累数量的变化会引起流量流到某种程度的不可预测性,为了改进这一点,所以出现了双速率三色双桶.此外,双速率三色标记双桶允许保持一定速度的过量突发(不需要积累信用量以调节临时突发),并且允许超过不同突发值的流量采取不同的行动.该类管制器的工作原理为:
双速率三色管制器也使用双桶算法,但其逻辑有少许不同.它不将未用的令牌从一个桶转移到另外一个桶,该管制器有二个独立的桶,每个桶都用单独的令牌速率.第一个桶拥有PIR数量的令牌,第二个桶拥有CIR数量的令牌.在这个模型中,除了第一个桶以外,BE与BC相同.这意味着BE表示可以在亚秒级间隔发送流量的峰值限制.
该逻辑在初始化检查也有变化,它检查流量是否在PIR之内.只有这样,流量才与CIR进行比较.换句话说,首先检查违约条件,然后是过量条件,最后才是符合条件,与前面模型的逻辑恰恰相反.
配置清单:
Two-Rate Three-Color Policer Example
Router# sh run
policy-map RFC2698-POLICER
class class-default
police cir 8000 bc 1000 pir 10000 be 2000
conform-action set-dscp-transmit af31
exceed-action set-dscp-transmit af32
violate-action set-dscp-transmit af32
花了不少时间来整理,希望对大家有所用. |
|