流量整形的定義
流量整形(Traffic Shaping)是一種主動調整流量輸出速率的措施。
流量整形(traffic shaping)典型作用是限制流出某一網路的某一連線的流量與突發,使這類報文以比較均勻的速度向外傳送。流量整形通常使用緩衝區和令牌桶來完成,當報文的傳送速度過快時,首先在緩衝區進行快取,在令牌桶的控制下再均勻地傳送這些被緩衝的報文。
一個典型套用是基於下游網路結點的TP指標來控制本地流量的輸出。流量整形與流量監管的主要區別在於,流量整形對流量監管中需要丟棄的報文進行快取——通常是將它們放入緩衝區或佇列內,也稱流量整形(Traffic Shaping,簡稱TS)。當令牌桶有足夠的令牌時,再均勻的向外傳送這些被快取的報文。流量整形與流量監管的另一區別是,整形可能會增加延遲,而監管幾乎不引入額外的延遲。
流量整形的核心算法
流量整形的核心算法有以下兩種,具體採用的技術為GTS(Generic Traffic Shaping),通用流量整形:
漏桶算法漏桶算法(leaky Bucket)
漏桶算法是網路世界中流量整形(Traffic Shaping)或速率限制(Rate Limiting)時經常使用的一種算法,它的主要目的是控制數據注入到網路的速率,平滑網路上的突發流量。漏桶算法提供了一種機制,通過它,突發流量可以被整形以便為網路提供一個穩定的流量。
令牌桶算法(token bucket)
有時人們將漏桶算法與令牌桶算法錯誤地混淆在一起。而實際上,這兩種算法具有截然不同的特性並且為截然不同的目的而使用。它們之間最主要的差別在於:漏桶算法能夠強行限制數據的傳輸速率,而令牌桶算法能夠在限制數據的平均傳輸速率的同時還允許某種程度的突發傳輸。
在某些情況下,漏桶算法不能夠有效地使用網路資源。因為漏桶的漏出速率是固定的參數,所以即使網路中不存在資源衝突(沒有發生擁塞),漏桶算法也不能使某一個單獨的流突發到連線埠速率。因此,漏桶算法對於存在突發特性的流量來說缺乏效率。而令牌桶算法則能夠滿足這些具有突發特性的流量。通常,漏桶算法與令牌桶算法可以結合起來為網路流量提供更大的控制。
常見流量整形分類
GTS 通用流量整形流量整形通過減少外出流量的速率來強迫流量遵循某種頻寬的分配限制。不象流量監管會丟棄超過突發尺寸的流量,它是將突發的流量放入到流量整形的緩衝區中,當頻寬可用時,再將它傳送出去,或者是當緩衝的數據包的數量低於配置的限制時,再將它傳送出去。
流量整形使用一種令牌桶的系統來決定是否傳輸、延遲或者丟棄新的數據包。使用這種令牌桶系統,每個接口都有承諾信息速率(CIR),它是在一個時間段內接口能夠傳輸數據包的速率。持續突發速率(Bc)定義了再一個時間間隔內令牌桶可以含有的最大令牌數。當數據包到達一個接口後,它就會從令牌桶中取出一個令牌。當數據包被傳送後,令牌就會釋放。當過了時間間隔(Tc)後,這個令牌就會返回到令牌桶中。如果令牌桶空了,任何新到達那個接口的數據包都會被放到佇列中,知道時間間隔過去,令牌又重新填入。如果CIR持續超過,令牌就會以大於它們添加的速度從令牌桶中挪走,而去填充佇列並且導致數據包被丟棄掉。
流量整形可以套用到一些不同的二層技術中去,例如以太、ATM、HDLC、PPP(ISDN和撥號接口不支持)和幀中繼。除了幀中繼以外,所有的這些技術都支持通用流量整形(GTS)。GTS也可以整形再訪問控制列表中定義的某種類型的流量,通過在流量整形中指定組來實現。
為了配置GTS必須知道對於接口的目的比特速率,即承諾信息速率(CIR),它指的是流量在正常情況下傳送的速率。持續突發速率(Bc)指的是在每個時間間隔內流量被允許突發超出正常流量速率的速率,以比特表示。過量突發速率(Be)是指在第一個時間間隔內,流量被允許突發超出持續突發速率的速率。每隔一個時間間隔(Tc),流量會被填充到流量整形的令牌桶中。
Tc=Bc/CIR
流量整形的時間間隔不能小於10ms或者大於125ms。路由器基於Tc=Bc/CIR的公式發現最好的時間間隔。默認的時間間隔是125ms。這個時間間隔是CIR和Bc配置的結果,用於不可配置。思科建議Bc應當是CIR的1/8。它將會在每秒鐘內產生8個125ms的時間間隔。
對所有的接口流量配置GTS,在需要流量整形的接口上使用traffic-shaping rate命令。對於特定的流量,使用traffic-shaping group命令和一個訪問控制列表。
traffic-shaping {rate|group access-list-number} target-bit-rate [sustained][excess][buffer-limit]
group access-list-number指定匹配訪問控制列表(1-2699)的所有流量都被整形。
rate指定在這個接口上的所有流量都被整形。
target-bit-rate這個流量將被傳輸的正常速率(CIR),範圍為8000到接口的以每秒比特位表示的完整CIR。
sustained持續比特率(Bc)指的是流量被允許突發的數值,以每個時間間隔內的比特位表示。
excess過量比特率(Be)指的是在第一個時間間隔內突發的超出持續比特速率的流量,以每個時間間隔內的比特位表示。是個可選的參數,它會假設令牌桶已經完全滿了:Be=Bc*2。
buffer用於指定一個快取的限制,範圍從1~4096。
GTS配置需要兩個步驟:發現流量整形的數值,並在接口上配置流量整形。
1、找到正確的流量整形的數值。CIR、Bc、Be
Bc指定在某個時間間隔內接口可以傳輸的比特位的數量。Bc=CIR*Tc
Be指定當接口填充了足夠的令牌時可以支持的突發的流量,通常時考慮在第一個時間間隔內。Be=Bc*2
如果接口不支持突發,可以使用下面的公式:Be=Bc
2、在接口模式下,使用traffic-shaping命令啟用流量整形。
為了查看GTS的配置,使用show traffic-shaping [statistics]命令
在以下4種情況下使用FRTS:1中心高速,分支低速的時候。2單條物理線路承載到不同目的地的眾多VC。3若FR發生了擁塞,想讓路由器將數據流攔住(Throttle)。4需要在同一條FR的VC上傳輸多種協定(IP、SNA)的數據流,並希望每種數據流都能占到一定BW。
FR中的FECN和BECN用於暗示網路上發生了擁塞,當收到帶有BECN標記的數據包時,FR 流量整形(FRTS)將動態的對流量進行整形。注意:FRTS只能使用在FR的PVC和SVC上。其中有一種自適應的FRTS,在每個Tc間隔內,進程將檢查是否從幀中繼網路中收到BECN,如果在一個Tc間隔收到BECN,那么傳送速率降低25%直到降到CIR的一半為止。若且唯若16個Tc內沒收到BECN,通訊速率恢復到CIR。
FRTS配置步驟
1)建立一個MAP-CLASS,名字區分大小寫。
2)定義流量整形的方法,比如設定平均速率和最高速率。
3)在接口上封裝FRAME-RELAY。
4)在連線埠上套用MAP-CLASS 5,開啟流量整形,一般用於源端接口。