深入理解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。
?
?
?
總結
- 上一篇: 双系统linux分区扩容,Win7 下U
- 下一篇: 确定母亲节-C语言