什么是令牌桶 在我們討論突發數據量之前,我們首先要理解令牌桶的概念。令牌桶本身沒有丟棄和優先級策略, 令牌桶是這樣工作的: 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