什么是令牌桶 在我们讨论突发数据量之前,我们首先要理解令牌桶的概念。令牌桶本身没有丢弃和优先级策略, 令牌桶是这样工作的: 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 Bc Be conform exceed violate 理解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.
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
7500-107(config-if)#rate-limit output 18000000 ? <1000-512000000> Normal burst bytes
7500-107(config-if)#rate-limit output 18000000 2250000 ? <2000-1024000000> Maximum burst bytes
step-by-step流量策略指南 在12.0(5)XE流量策略特性模块中提供了数据包如何进入一个配置了策略的接口的step-by-step的总结。总结需要理解堆积债务和复合债务。对于债务的概念,请察看IOS配置指南Policing and Shaping Overview。 下面这个例子中,离开接口F0/0的流量平均速率被设置为1bps,Bc为2BTyes,Be为4bytes。 7200-uut(config)# class-map larry 7200-uut(config-cmap)# match access-group 2 7200-uut(config-cmap)# exit 7200-uut(config)# policy-map bird 7200-uut(config-pmap)# class larry 7200-uut(config-pmap-c)# police 1 2 4 conform-action transmit exceed-action set-qos-transmit 4 7200-uut(config-pmap-c)# exit 7200-uut(config-pmap)# exit 7200-uut(config)# interface fastethernet 0/0 7200-uut(config-if)# service-policy input bird