網路上的應用型別種類繁多,為了保障主要應用的良好運作,必然要在網路上進行流量控制。網路流量控制的方法各網路裝置廠商不完全一樣,除c
isco
的car
(承諾訪問速率)
外,還有如nec的
rich-qos
,hiper
的cbq
等,當然是
cisco
(思科)公司的
car流量控制策略應用最廣。本文就要介紹c
isco
這種car路由器流量控制策略,同時在後面將介紹cisco公司具有car流量控制功能的代表性產品。
一、什麼是car
car是committed access rate的簡寫,意思是:承諾訪問速率。它是
cisco
公司ios軟體中qos功能的乙個子功能,它是自v12.0版本中新新增的。它的
主要有兩個作用:(1)對乙個埠或子埠(subinte***ce)的進出流量速率按某個標準上限進行限制;(2)對流量進行分類,劃分出不同的qos優先順序。
注意:car只能對ip包起作用,對非ip流量不能進行限制。另外car只能在支援cef交換(cisco express forward)的路由器或交換機上使用。以下這些介面上也不能使用car: ÿ
fast etherchannel inte***ce
ÿtunnel inte***ce
ÿpri inte***ce
car的工作原理
可以看成是資料報分類識別(packet classification)和流量控制(access rate limiting)的結合。其工作流程可以從圖1所示。
圖1 在這個流程中,主要分三步進行。第一步的traffic matching是首先從資料流中識別出使用者希望對其進行流量控制的資料報型別(也稱「感興趣」流量型別)。使用者可以選擇以下幾種不同的方式來進行流量識別: ÿ
全部的ip流量,這樣可以把所有的ip流量採用統一的流量控制策略。
ÿ基於ip字首,此種方式是通過rate-limit access list來定義的。
ÿqos
分組。
ÿmac
位址,此種方式通過rate-limit
access list來定義。 ÿ
ipaccess list(ip acl,ip訪問控制列表),可通過標準的或擴充套件的訪問控制列表來定義。
用上述方法識別到了使用者希望進行流量控制的資料報型別後,接下來的第二步就是進行流量衡量(traffic measurement)。car採用一種名為token bucket的機制來進行流量衡量,如圖2所示。
圖中的token可以看成是第一步的traffic matching所識別到的感興趣流量,該種流量的資料報進入乙個bucket(桶)內,該bucket的深度則由使用者定義。在進入該token bucket後,以使用者希望控制的流量速率離開該bucket,執行下一部操作(conform action)。在這裡,對於實際流量速率的不同,可以看到會有兩種情況發生:
(1)實際流量小於或等於使用者希望速率,這樣,明顯地,token離開bucket的實際速率將和其來到的速率一樣,bucket內可以看作是空的。流量不會超過使用者的希望值。
(2)實際流量大於使用者希望速率。這樣,token進入bucket的速率比其離開bucket的速率快,這樣在一段時間內,token將填滿該bucket,繼續到來的token將溢位(excess)bucket,則car採取相應的動作(一般是丟棄或將其ip字首改變以改變該token的優先順序)。這樣就保證了資料流量速率保證在使用者定義的希望值內。
二、如何配置car
一般來說,car比較適合部署在網路的邊緣部分,我們的一般做法也是在邊界路由器上部署car。配置car可以選擇前面介紹的五種流量型別識別方法,而常用的則是最後一種「ip access list(ip acl,ip訪問控制列表)」方法。
使用者可以使用標準的「ip access list」命令來確定哪些ip流量資料需要進行rate-limit(速率限制),也可以用擴充套件「ip access list」來確定哪些ip協議型別流量(如http,ftp)需要進行rate-limit。例如我們想限制使用者到內部**上瀏覽網頁的速度,則可以採用如下的access list來定義流量:
access-list 101 permit tcp any eq www any
這裡值得注意的一點是在配置時要配成「any eq www any」,而不是「any any eq www」。因為這裡要限制的主要流量不是使用者向http server傳送的請求(這類請求流量的源埠號為隨機(
any)
在相應的埠配置rate-limit的語句格式
如下:inte***ce x
# 聚集使用者希望限制的埠
rate-limit [access-group number ] bps burst-normal burst-max conform-action action exceed-action action
這裡的
inte***ce
可以是ethernet inte***ce(乙太網埠)也可以是serial inte***ce(序列介面),但是不同型別的inte***ce在下面的rate-limit語句中的選項上選擇有所不同,需要注意一下。因為乙太網埠既可以是輸入(
input
)埠,又可是輸出(output)埠;而序列介面則只能為輸入介面。
[access-group number ]
選項是使用者用access list定義流量的access list號碼。
bps:
使用者希望該流量的速率上限,單位是bps。
burst-normal burst-max
:這個是指token bucket的大小,一般採用8000、16000、32000等值,根據前面設定的bps值大小而定。
conform-action
:在速率限制以下的流量的處理策略。
exceed-action:
超過速率限制的流量的處理策略。
action:
處理策略,包括以下幾種: ÿ
transmit:傳輸 ÿ
drop:丟棄 ÿ
set precedence and transmit:修改ip字首然後傳輸 ÿ
set qos group and transmit:將該流量劃入乙個qos group內傳輸 ÿ
continue:不動作,看下一條rate-limit命令中有無流量匹配和處理策略,如無,則transmit ÿ
set precedence and continue:修改ip字首然後continue(繼續) ÿ
set qos group and continue:劃入qos group然後continue
注意,在乙個inte***ce內,可以配置多條rate-limit命令,如果action裡面有continue,則順序執行下一條rate-limit命令,若某種流量在continue之後沒有被某條rate-limit命令丟棄,則它將進行傳輸。乙個埠最多可配20條rate-limit命令。
下面語句是乙個對使用者進行http應用限制的例子:
inte***ce e0 # 聚集0
號乙太網埠
rate-limit output access-group 101 128000 16000 16000 conform-action transmit exceed-action drop
這裡我們對使用者進行
訪問所
car除了可以提供用來限制某種流量的速率之外,還可以用來抵擋某些型別的網路攻擊。如
dos網路攻擊的乙個特徵是網路中會充斥著大量帶有非法源位址的icmp包,我們可以通過在路由器上對icmp包通過配置car來設定速率上限的方法來保護網路。
示例如下:
inte***ce 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包的**速率和大小,減少對網路和主機造成的威脅。
茶鄉浪子
mysql流量控制 UDP流量控制之分析
關健字 udpudx udttcp 吞吐量流量 代寬擁塞控制 大都知道,udp是不可靠傳輸協議與tcp剛好相反.不過因為udp的特性適合傳輸不需要確認的資料,在應用層如果設計好的傳輸協議一樣可以進行很好的可靠傳輸.比如rudp協議.但是光可靠傳輸還不夠,流量控制是很重要的.我們從簡單的情況說起來說明...
流量控制原則
對於tcp ip一書中tcp部分,我認為關鍵要掌握3點 1.建鏈和拆鏈過程 2.資料互動規則 3.流量控制原則 針對這幾點,我進行了簡要概括,希望有助於初學者理解 流量控制原則 個人對於流量控制的理解,就是平衡一系列的矛盾,使資料 傳輸各方面的綜合成本最低。某個時間點,網路的容量或是某個連線的容量總...
TCP流量控制
一般來說,我們總是希望資料傳輸的更快一些,但如果傳送方把資料傳送的很快,而接收方來不及接收,這就可能造成資料的丟失。流量控制就是讓傳送方的傳送速率不要太快,讓接收方來得及接收。對於成塊資料流,tcp利用滑動視窗機制來實現流量的控制,對於互動資料流,tcp利用捎帶ack和nagle演算法來實現流量的控...