注:每一個接口每一個方向只支持一個策略;一個策略能夠用於多個接口。所以端口下的網段的下載速率的限制都應該定義在同一個策略 算法
1.在交換機上啓動QOSapi
Switch(config)#mls qos //在交換機上啓動QOS網絡
2. 定義訪問控制列表ide
Switch(config)#access-list 10 permit 59.215.45.0 0.0.0.127 orm
控制這個端口下59.215.45.0網段的上傳流量blog
Switch(config)#access-list 100 permit 59.215.45.0 0.0.0.127 token
控制這個端口下59.215.45.0網段的下載流量接口
3.定義類,並和上面定義的訪問控制列表綁定隊列
Switch(config)# class-map rate-limit-uplink /定義上行的類.並綁定訪問列表10
Switch(config-cmap)# match access-group 10
Switch(config-cmap)# exitip
Switch(config)# class-map rate-limit-downlink /定義下行的類.並綁定訪問列表100
Switch(config-cmap)# match access-group 100
Switch(config-cmap)# exit
4.定義策略,把定義的類綁定到該策略
Switch(config)# policy-map rate-limit-uplink //定義上行的速率爲30M
Switch(config-pmap)# class rate-limit-uplink
Switch(config-pmap-c)# trust dscp
Switch(config-pmap-c)# police 30000000 1000000 exceed-action drop //這裏30M不能寫成30720000
不然會報如下錯誤:%Error: policer rate should be multiples of 1000000.
Please choose either 3000000 or 4000000 (bits per second) as the policer rate
關於100000那個數字的定義,後面作個實驗跟你們解釋
Switch(config)# policy-map rate-limit-downlink //定義下行的速率爲30M
Switch(config-pmap)# class rate-limit-downlink
Switch(config-pmap-c)# trust dscp
Switch(config-pmap-c)# police 30000000 1000000 exceed-action drop
Switch(config-pmap-c)# exit
5.在接口上應用
Switch(config)# interface f0/1 (下聯口)
Switch(config-if)# service-policy input rate-limit-uplink
interface: 用戶但願進行流量控制的端口,能夠是Ethernet也能夠是serial口,可是不一樣類型的interface在下面的input output上選擇有所不一樣,須要注意一下
input|output:這是定義數據流量的方向
Switch(config)# interface g0/20(上聯口)
Switch(config-if)# service-policy input rate-limit-downlink
註釋:
police bps | burst-normal burst-max |conform-action action |exceed-action action
Bps:用戶但願該流量的速率上限,單位是bps
Burst-normal burst-max:這個是指token bucket的大小,通常採用8000,16000,32000 這些值,視乎bps值的大小而定。
Conform-action :在速率限制如下的流量的處理策略。
Exceed-action:超過速率限制的流量的處理策略。
Action:處理策略,包括如下幾種:
Transmit:傳輸
Drop:丟棄
Burst-normal burst-max 這個值最值得咱們討論,這個至關於token bucket的大小,那麼就要了解token bucket的原理,網絡上抄寫一段
Token Bucket令牌桶算法是網絡流量×××(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一種算法。典型狀況下,令牌桶算法用來控制發
送到網絡上的數據的數目,並容許突發數據的發送。
令牌桶這種控制機制基於令牌桶中是否存在令牌來指示何時能夠發送流量。令牌桶中的每個令牌都表明一個字節。若是令牌桶中存在令牌,則容許發
送流量;而若是令牌桶中不存在令牌,則不容許發送流量。所以,若是突發門限被合理地配置而且令牌桶中有足夠的令牌,那麼流量就能夠以峯值速率發送
token bucket - 算法步驟
假如用戶配置的
token bucket
平均發送速率爲r,則每隔1/r秒一個令牌被加入到桶中; 假設桶最多能夠存發b個令牌。若是令牌到達時令牌桶已經滿了,那麼這個令牌會被丟棄; 當一個
n個字節的數據包到達時,就從令牌桶中刪除n個令牌,而且數據包被髮送到網絡; 若是令牌桶中少於n個令牌,那麼不會刪除令牌,而且認爲這個數據包在
流量限制以外;
算法容許最長b個字節的突發,但從長期運行結果看,數據包的速率被限制成常量r。對於在流量限制外的數據包能夠以不一樣的方式處理:它們能夠被丟棄;
它們能夠排放在隊列中以便當令牌桶中累積了足夠多的令牌時再傳輸;
它們能夠繼續發送,但須要作特殊標記,網絡過載的時候將這些特殊標記的包丟棄。
token bucket - 特別提示
令牌桶算法不能與另一種常見算法「漏桶算法(Leaky Bucket)」相混淆。
token bucket
這兩種算法的主要區別在於「漏桶算法」可以強行限制數據的傳輸速率,而「令牌桶算法」在可以限制數據的平均傳輸數據外,還容許某種程度的突發傳輸在「令牌桶算法」中,只要令牌桶中存在令牌,那麼就容許突發地傳輸數據直到達到用戶配置的門限,所以它適合於具備突發特性的流量。
你們理解上面原理,接着根據如下命令作個實驗,結果以下,注意的是.下面一些值.只是經過上傳單個文件所得出來參考值
police 30000000 10000 exceed-action drop
上傳速度爲65k左右*8
police 30000000 100000 exceed-action drop
上傳速度爲400k左右*8
police 30000000 1000000 exceed-action drop
上傳速度爲2.96M左右*8
30000000/1024=29.2M
如下是兩個端口限制上傳30M後所顯示流量圖: