深入理解Bc和Be

深入理解Bc和Be
 
IOS支持两种流量策略:
1.  传统的Cisco流量策略:CAR承诺接入速率,使用命令
     Router(config-if)#rate-limit {input|output} CIR (bps) Be (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-action<action> exceed-action<action> violate-action<action> 


关于Bc和Be的理解
对于超额的数据包,流量策略并不会把它们缓存稍后转发,只有整形器(shaper)会这样做。流量策略只执行一个发送或不发送的策略。因为不能缓存数据包,所以在发生拥塞时,所能做的最好的方法就是通过配置适当的超额突发数据量Be来不那么过分的丢弃数据包。
超额参数模仿路由器的通用缓存规则。The rule recommends configuring buffering equal to the round-trip time bit-rate to accommodate the outstanding TCP windows of all connections in times of congestion. Note: 1.5 seconds is the typical round trip time.

普通突发——执行标准的令牌桶,设置最大数量的令牌(尽管如果Be>Bc的话可以借到令牌),决定令牌桶有多大因为如果桶已经满了那么令牌将被丢弃而不会再加入到桶中。 Bc=CIR/8*1.5

超额突发——为令牌提供超额突发能力,如果Bc=Be那么不支持超额突发,当Bc=Be时流量调节器就不能借令牌,当令牌不够时只能丢弃数据包。一般来说Be=Bc*2
对TCP流量的测试表明,Bc和Be的数值应该近似等于配置的平均速度在两秒钟内的流量。如果你想限制流量在1Mb,应该把Bc设置在1-2Mb,Be在2-4Mb。

 例如,如果我们想把输出速率限制在1.5Mbps,步骤如下:
1.  把承诺速率从比特转换成字节,因为突发数据量的单位是字节。 1500000 bits / 8 = 187500 bytes
2.  使用标准的1.5秒往返时间(round-trip time)计算Bc。 Bc = 187500 bytes * 1.5 s = 281250 bytes
3.  两倍的Bc为Be。 Be = 281250 bytes * 2 = 562500 bytes
使用命令: rate-limit  input 1500000 281250 562500 conform-action {action} exceed-action {action}

当数据包到达时可用的令牌数目小于包的大小,就可以使用超额突发数据量。包会请求借用令牌,可以通过配置大于Bc的Be的数值来为令牌桶提供超额突发能力。突发数据量的目的是逐渐的丢弃数据包,就像RED那样,并且避免尾丢弃。设置足够高的突发数据量对保证良好的吞吐量是非常重要的,设置突发数据量时需要考虑以下内容:
1.   如果突发数据量设置的过低,数据到达的速率将远远低于配置的速率
2.   惩罚暂时突发对TCP流的吞吐量来说是相当不利的,设置突发数据量来允许路由器容纳暂时突发
3.   对离开接口的数据包的处理基于包的大小和桶中剩余的令牌数
4.   在基于类的策略中,流量测量器不论接口是否拥塞都是激活的。每个包都会经过令牌桶测量系统来决定是否符合配置的参数
5.   如果数据突发量非常大而且非常突然,那么配置较高的超额突发数据量可以保证超额令牌桶中存放较多的令牌,而且可以调整接口的MTU等于或大于突发数

例:离开接口f0/0的流量平均速率被设置为1bps,Bc为2bytes,Be为4bytes,配置及分析如下:
R1(config)#class-map ccnp
R1(config-cmap)#match access-group 1
R1(config-cmap)#exit
R1(config)#policy-map ccie
R1(config-pmap)#class ccnp
R1(config-pmap-c)#police 1 2 4 conform-action transmit exceed-action set-qos-transmit 4
R1(config-pmap-c)#exit
R1(config-pmap)#exit
R1(config)#interface f0/0
R1(config-if)#service-policy input ccie
在这个例子中所有的进入数据包都要与制定的匹配标准相符合,并且在一个时间单位内只有一个数据单元进入令牌桶。
1.    配置了Bc=2bytes,令牌桶中只有两个令牌,一个令牌等于1bytes。
2.    配置了1bps的平均速率,每个1byte的包需要一个令牌来获得承诺操作confom-action。
3.    传输第一个包需要一个令牌,因为桶中能够提供传输第一个包所需的令牌数,所以第一个包符合限制条件被传输,桶中还剩下一个令牌。
4.    第二个包需要剩下的一个令牌,桶中也能够提供传输第二个包所需的令牌数,所以第二个包也被传输,这时桶中就没有剩余的令牌。
5.    第三个包还需要令牌,但是桶中已经没有令牌了,超额突发被激活。超额突发能力分析两个数字:超额突发的大小和复合债务(compound debt)。超额突发大小通过CLI指定(本例中是4),复合债务等于上一次包被丢弃以来所有实际债务的和。
      实际债务等于当前流所借的令牌数。实际债务的值可以由当前从桶中取出的令牌数(本例中借了一个令牌)乘以令牌被取出的次数(本例中是一次),这样,传输完第三个包之后的实际债务就是1。
      这个例子中复合债务与实际债务相等都是1,注意上一个包的复合债务加上当前包的实际债务也等于当前复合债务。
      因为复合债务是1,小于超额突发数据量的4,所以第三个包也被传输。
6.   第四个包还需要令牌。
      超额突发能力仍然在激活状态。第四个包需要借用一个令牌,这是第二次借用令牌,因此实际债务变成2。复合债务等于传输上一个包的复合债务加上当前的实际债务,所以当前的复合债务是3(1+2)。3仍然小于配置的超额突发数据量4,所以数据包4也被承诺传输。
7.   第五个包也需要令牌。
      超额突发能力仍然在激活状态。实际债务是3,复合债务是6(3+3),超过了超额突发数据量,所以第五个包被超额操作(exceed-action)指定了Qos组4。超额操作发生之后复合债务归零,而实际债务不受丢包影响,仍然是2。
8.   第六个包也需要令牌。
      超额突发能力仍然在激活状态。当然实际债务是3,复合债务是3(0+3),小于超额突发,所以第六个包被承诺传输。
9.   第七个包也需要令牌。
      超额突发能力仍然在激活状态。实际债务是4,复合债务是7(3+4),超过了超额突发,所以第七个包执行超额操作。超额操作发生之后复合债务归零,而实际债务不受丢包影响,仍然是3。

 
 
 

原文地址:https://www.cnblogs.com/cyrusxx/p/12824036.html