Cisco公司的CAR流量控制策略
網(wǎng)絡(luò)上的應(yīng)用類型種類繁多,為了保障主要應(yīng)用的良好運(yùn)作,必然要在網(wǎng)絡(luò)上進(jìn)行流量控制。網(wǎng)絡(luò)流量控制的方法各網(wǎng)絡(luò)設(shè)備廠商不完全一樣,除Cisco的CAR(承諾訪問(wèn)速率)外,還有如NEC的Rich-QoS,HiPER的CBQ等,當(dāng)然是Cisco(思科)公司的CAR流量控制策略應(yīng)用最廣。本文就要介紹Cisco這種CAR路由器流量控制策略,同時(shí)在后面將介紹Cisco公司具有CAR流量控制功能的代表性產(chǎn)品。
一、什么是CAR
CAR是Committed Access Rate的簡(jiǎn)寫,意思是:承諾訪問(wèn)速率。它是Cisco公司IOS軟件中QoS功能的一個(gè)子功能,它是自v12.0版本中新添加的。它的
主要有兩個(gè)作用:(1)對(duì)一個(gè)端口或子端口(subinterface)的進(jìn)出流量速率按某個(gè)標(biāo)準(zhǔn)上限進(jìn)行限制;(2)對(duì)流量進(jìn)行分類,劃分出不同的QoS優(yōu)先級(jí)。
注意:CAR只能對(duì)IP包起作用,對(duì)非IP流量不能進(jìn)行限制。另外CAR只能在支持CEF交換(Cisco Express Forward)的路由器或交換機(jī)上使用。以下這些接口上也不能使用CAR:
* Fast EtherChannel interface
* Tunnel Interface
* PRI interface
CAR的工作原理可以看成是數(shù)據(jù)包分類識(shí)別(packet classification)和流量控制(access rate limiting)的結(jié)合。其工作流程可以從圖1所示。
圖1
在這個(gè)流程中,主要分三步進(jìn)行。第一步的Traffic Matching是首先從數(shù)據(jù)流中識(shí)別出用戶希望對(duì)其進(jìn)行流量控制的數(shù)據(jù)包類型(也稱“感興趣”流量類型)。用戶可以選擇以下幾種不同的方式來(lái)進(jìn)行流量識(shí)別:
* 全部的IP流量,這樣可以把所有的IP流量采用統(tǒng)一的流量控制策略。
* 基于IP前綴,此種方式是通過(guò)rate-limit access list來(lái)定義的。
* QoS 分組。
* MAC地址,此種方式通過(guò)rate-limit access list來(lái)定義。
* IP access list(IP ACL,IP訪問(wèn)控制列表),可通過(guò)標(biāo)準(zhǔn)的或擴(kuò)展的訪問(wèn)控制列表來(lái)定義。
用上述方法識(shí)別到了用戶希望進(jìn)行流量控制的數(shù)據(jù)包類型后,接下來(lái)的第二步就是進(jìn)行流量衡量(traffic measurement)。CAR采用一種名為token bucket的機(jī)制來(lái)進(jìn)行流量衡量,如圖2所示。
圖2
圖中的token可以看成是第一步的traffic matching所識(shí)別到的感興趣流量,該種流量的數(shù)據(jù)包進(jìn)入一個(gè)bucket(桶)內(nèi),該bucket的深度則由用戶定義。在進(jìn)入該token bucket后,以用戶希望控制的流量速率離開(kāi)該bucket,執(zhí)行下一部操作(conform action)。在這里,對(duì)于實(shí)際流量速率的不同,可以看到會(huì)有兩種情況發(fā)生:
(1)實(shí)際流量小于或等于用戶希望速率,這樣,明顯地,token離開(kāi)bucket的實(shí)際速率將和其來(lái)到的速率一樣,bucket內(nèi)可以看作是空的。流量不會(huì)超過(guò)用戶的希望值。
(2)實(shí)際流量大于用戶希望速率。這樣,token進(jìn)入bucket的速率比其離開(kāi)bucket的速率快,這樣在一段時(shí)間內(nèi),token將填滿該bucket,繼續(xù)到來(lái)的token將溢出(excess)bucket,則CAR采取相應(yīng)的動(dòng)作(一般是丟棄或?qū)⑵銲P前綴改變以改變?cè)搕oken的優(yōu)先級(jí))。這樣就保證了數(shù)據(jù)流量速率保證在用戶定義的希望值內(nèi)。
二、如何配置CAR
一般來(lái)說(shuō),CAR比較適合部署在網(wǎng)絡(luò)的邊緣部分,我們的一般做法也是在邊界路由器上部署CAR。配置CAR可以選擇前面介紹的五種流量類型識(shí)別方法,而常用的則是最后一種“IP access list(IP ACL,IP訪問(wèn)控制列表)”方法。
用戶可以使用標(biāo)準(zhǔn)的“ip access list”命令來(lái)確定哪些IP流量數(shù)據(jù)需要進(jìn)行rate-limit(速率限制),也可以用擴(kuò)展“ip access list”來(lái)確定哪些IP協(xié)議類型流量(如HTTP,F(xiàn)TP)需要進(jìn)行rate-limit。例如我們想限制用戶到內(nèi)部網(wǎng)站上瀏覽網(wǎng)頁(yè)的速度,則可以采用如下的access list來(lái)定義流量:
access-list 101 permit tcp any eq www any
這里值得注意的一點(diǎn)是在配置時(shí)要配成“any eq www any”,而不是“any any eq www”。因?yàn)檫@里要限制的主要流量不是用戶向http server發(fā)送的請(qǐng)求(這類請(qǐng)求流量的源端口號(hào)為隨機(jī)(any),目的端口號(hào)為80),而是http server收到用戶的請(qǐng)求后發(fā)給用戶方的網(wǎng)頁(yè)內(nèi)容的流量(這部分流量的源端口號(hào)為80,目的端口號(hào)為發(fā)起方的端口號(hào)),如果在這個(gè)細(xì)節(jié)上不加注意則不能對(duì)下載的流量進(jìn)行有效的限制。#p#
在相應(yīng)的端口配置rate-limit的語(yǔ)句格式
如下:
interface X # 聚集用戶希望限制的端口
rate-limit {input|output} [access-group number ] bps burst-normal burst-max conform-action action exceed-action action
這里的interface可以是Ethernet interface(以太網(wǎng)端口)也可以是serial interface(串行接口),但是不同類型的interface在下面的rate-limit語(yǔ)句中的{input|output}選項(xiàng)上選擇有所不同,需要注意一下。因?yàn)橐蕴W(wǎng)端口既可以是輸入(input)端口,又可是輸出(output)端口;而串行接口則只能為輸入接口。
[access-group number ]
選項(xiàng)是用戶用access list定義流量的access list號(hào)碼。
Bps:用戶希望該流量的速率上限,單位是bps。
Burst-normal burst-max:這個(gè)是指token bucket的大小,一般采用8000、16000、32000等值,根據(jù)前面設(shè)置的Bps值大小而定。
Conform-action :在速率限制以下的流量的處理策略。
Exceed-action:超過(guò)速率限制的流量的處理策略。
Action:處理策略,包括以下幾種:
* Transmit:傳輸
* Drop:丟棄
* Set precedence and transmit:修改IP前綴然后傳輸
* Set QoS group and transmit:將該流量劃入一個(gè)QoS group內(nèi)傳輸
* Continue:不動(dòng)作,看下一條rate-limit命令中有無(wú)流量匹配和處理策略,如無(wú),則transmit
* Set precedence and continue:修改IP前綴然后continue(繼續(xù))
* Set QoS group and continue:劃入QoS group然后continue
注意,在一個(gè)interface內(nèi),可以配置多條rate-limit命令,如果action里面有continue,則順序執(zhí)行下一條rate-limit命令,若某種流量在continue之后沒(méi)有被某條rate-limit命令丟棄,則它將進(jìn)行傳輸。一個(gè)端口最多可配20條rate-limit命令。
下面語(yǔ)句是一個(gè)對(duì)用戶進(jìn)行http應(yīng)用限制的例子:
interface e0 # 聚集0號(hào)以太網(wǎng)端口
rate-limit output access-group 101 128000 16000 16000 conform-action transmit exceed-action drop
這里我們對(duì)用戶進(jìn)行http訪問(wèn)所下載的網(wǎng)頁(yè)流量控制在傳輸速率上限為128Kbps,token bucket包的大小為16000字節(jié)。
CAR除了可以提供用來(lái)限制某種流量的速率之外,還可以用來(lái)抵擋某些類型的網(wǎng)絡(luò)攻擊。如
DOS網(wǎng)絡(luò)攻擊的一個(gè)特征是網(wǎng)絡(luò)中會(huì)充斥著大量帶有非法源地址的ICMP包,我們可以通過(guò)在路由器上對(duì)ICMP包通過(guò)配置CAR來(lái)設(shè)置速率上限的方法來(lái)保護(hù)網(wǎng)絡(luò)。
示例如下:
interface x
rate-limit output access-group 1000 3000000 80000 80000 conform-action transmit exceed-action drop
access-list 1000 permit icmp any any echo-reply
這樣就可以限制ICMP包的轉(zhuǎn)發(fā)速率和大小,減少對(duì)網(wǎng)絡(luò)和主機(jī)造成的威脅。
【編輯推薦】
























