QoS中的令牌桶算法

令牌桶算法
       (1)Bc+Be:桶的总容量,也叫做超额的突发量。超过即溢出,丢弃。
       (2)TC:向令牌桶中添加的令牌的时间周期,默认为125ms,或者说是1/8秒,即1s钟要向令牌中放8次令牌,1秒钟可以转发8倍的Bc数据量。
       (3)BC:每TC时间能够出去的数据量,等于CIR*TC,因为默认TC为1/8秒,所以默认BC等于CIR/8。
       (4)CIR:TC与BC之比,便是CIR承诺信息速率。
       (5)Be:在帧中继中就是队列缓存,在GTS中会有一个专门的缓存。
       这里配置的时候不需要进行流量与容量的换算
 当流量到来时
       (1)当流量以CIR/8的速率到来时,因为和BC相等,也就是出的水和进的水一样多,所以将不会有超额突发量,更不会有溢出丢弃的发生,流量和CIR曲线持平;
       (2)当流量以超过CIR/8,也就是Bc位的速率到来时,因为超过了出接口的转发速度,入的水比出的水多,因而需要被缓存处理。表现在曲线上就是超过了CIR就被修剪掉了;
       (3)当流量以低于CIR/8,也就是Bc位速率到来的时候,因为入的水比出的水少,因此这个时候就可以将缓存中的数据拿来处理,因而在曲线中还是会以CIR的形式表现。

 

1)承诺的访问速率(CAR)(典型的单速率双色和单桶应用)

  CAR是CISCO IOS软件中提供的最古老的管制工具,古老原因有:

  CAR与DiffServ RFC不兼容。

  没有基本百分比的带宽规范和分层管制

  CAR不能使用MQC语法。

  NBAR不能用在CAR中,还有其它方面。

Configuration:

 CAR(config)#
CAR(config)#int s0/0

CAR(config-if)#rate-limit input access-group 101 20000000 24000 32000 conform-action set-prec-transmit 2 exceed-action set-prec-transmit 0     //Acl101定义匹配WWW流量,它把WWW流量的速率限
CAR(config-if)#    制在20M,正常突发240000字节,过量突然32000字节,符合该速率的流量(小于20M)

CAR(config-if)#    标记IP优先级2,超过速率的流量标记IP优先级0.//
CAR(config-if)#rate-limit input access-group 102 10000000 24000 32000 conform-action set-prec-transmit 2 exceed-action drop  //ACL102定义匹配FTP流量,它把FTP流量的速率限制在10M,正常突发

CAR(config-if)#     24000字节,过量突发32000字节,符合该速率的流量(小于10M)标记IP         
CAR(config-if)#     优先级2,超过该速率的流量被丢弃//

CAR(config)#
CAR(config)#access-list 101 permit tcp any any eq www
CAR(config)#access-list 102 permit tcp any any eq ftp
CAR(config)#
 

 

2)基于类别的管制(policers)(单速率三色和双桶)

  policers突破了前面管制器的所有缺点,在控制流量的精度上极大地增强。该管制器的工作逻辑为:

  policers 管制器使遥了单速率三色和双桶算法。第一个桶中任何未用的令牌都被放入第二个令牌桶中,用做以后临时突发可能超过CIR的信用证,放置在第二个桶中的令牌供应被称为过量突发(BE),当BC满的时候(第一个桶),令牌的数量被放置在桶里(第二个桶),当BC未满时,第二个桶包含了第一个桶未用的令牌。BE 是可以超过突发大小的最大位数。

CAR(config)#
CAR(config)#policy-map Policers
CAR(config-pmap)#class class-default

CAR(config-pmap-c)#police cir 256000 8000 8000
CAR(config-pmap-c-police)#conform-action set-dscp-transmit af31
CAR(config-pmap-c-police)#exceed-action set-dscp-transmit af32

CAR(config-pmap-c-police)#violate-action set-dscp-transmit af33

CAR(config-pmap-c)#         //violate-action指大于BE的行为//
CAR(config-pmap)#

 

3)双速率三色(双桶)

  单速率三色和双桶基于RFC 2697来定义,而双速率三色双桶基于RFC 2698来定义。在单速率三色双桶中,它为临时流量突发提供信用量,但是,过量突发信用量积累数量的变化会引起流量流到某种程度的不可预测性,为了改进这一点,所以出现了双速率三色双桶。此外,双速率三色标记双桶允许保持一定速度的过量突发(不需要积累信用量以调节临时突发),并且允许超过不同突发值的流量采取不同的行动。该类管制器的工作原理为:

  双速率三色管制器也使用双桶算法,但其逻辑有少许不同。它不将未用的令牌从一个桶转移到另外一个桶,该管制器有二个独立的桶,每个桶都用单独的令牌速率。第一个桶拥有PIR数量的令牌,第二个桶拥有CIR数量的令牌。在这个模型中,除了第一个桶以外,BE与BC相同。这意味着BE表示可以在亚秒级间隔发送流量的峰值限制。

  该逻辑在初始化检查也有变化,它检查流量是否在PIR之内。只有这样,流量才与CIR进行比较。换句话说,首先检查违约条件,然后是过量条件,最后才是符合条件,与前面模型的逻辑恰恰相反。