流量監管和流量整形


1 前言

本文主要闡述Qos技術中流量監管和流量整形的實現機制。本文描述現今IETF對流量規格度量的兩種算法來了解令牌桶的工作原理;主要講述我司路由器流量監管和流量整形的實現機制,由於流量限速也用到相同的令牌桶處理機制,所以也講述了流量限速的實現機制。

2 流量監管和流量整形簡介

在提供QoS服務時,網絡邊界路由器與內部路由器功能有所側重,並像一個整體一樣相互協作。Diff-Serv將復雜的流分類和流量控制都推至邊界路由器來完成。邊界路由器主要完成復雜流分類、為分組打DSCP標記、流量的接入速率監管、訪問控制等動作。區域內部路由器只需進行簡單流分類,對同一類流實施流量控制。這樣做避免了Int-Serv模型中的基於每個流(Per-Flow)的復雜流分類及流控,從而使得區分網絡內部的轉發操作可以得到高效的實現。也就是說流量監管和流量整形主要是在Diff-Serv中的邊緣設備上進行。

從高速鏈路向低速鏈路傳輸數據時,帶寬會在低速鏈路接口處出現瓶頸,導致數據丟失嚴重,特別是會影響到低延時要求的數據如語音等。流量監管(traffic policing)的典型作用是限制進入或流出某一網絡的某一連接的流量與突發。在報文滿足一定的條件時,如某個連接的報文流量過大,流量監管就可以對該報文采取不同的處理動作,例如丟棄報文,或重新設置報文的優先級等。通常的用法是使用CAR來限制某類報文的流量,例如限制HTTP報文不能占用超過50%的網絡帶寬。

流量整形(traffic shaping)的典型作用是限制流出某一網絡的某一連接的流量與突發,使這類報文以比較均勻的速度向外發送。流量整形通常使用緩沖區和令牌桶來完成,當報文的發送速度過快時,首先在緩沖區進行緩存,在令牌桶的控制下,再均勻地發送這些被緩沖的報文。

3 IETF的兩種令牌桶算法

IETF建議采用srTCM(A Single Rate Three Color Marker,RFC2697)算法或trTCM(A Two Rate Three Color Marker,RFC2698)算法對流量進行測評,根據評估結果為報文打顏色標記,即綠色、黃色和紅色。對於AF業務的報文,可根據評估結果按照報文的顏色,將報文重新標記為不同的丟棄優先級。

srTCM與trTCM算法均采用兩個令牌桶對到達的報文進行評估,他們允許流量在某種級別上突發——但關注的側重點不同,srTCM更關注報文尺寸的突發,trTCM則關注速率上的突發。srTCM與trTCM算法有兩種工作模式,色盲模式(Color-Blind)與感色模式(Color-Aware),其中色盲模式是較常用的。下面我們簡單介紹一下這兩個算法。

3.1 srTCM算法(RFC 2697)

單速率三色標記器(srTCM) 能夠度量IP分組流,並把分組標記為綠色、黃色或紅色。 如果到達的分組未超過承諾突發尺寸,則把它標記為綠色;如果超過了承諾突發尺寸而未超過超額突發尺寸,則把它標記為黃色;否則,標記為紅色。 單速率三色標記器可以用在網絡入口處來管制服務。

單速率三色標記器有兩種工作模式:色盲模式和感色模式。 在色盲模式下,假定所有的分組都是未經標記的. 在感色模式下,假定所有輸入的分組已經被標記為綠色、黃色或紅色。

配置單速率三色標記器時要指定3個參數:承諾信息速率CIR 、承諾突發尺寸CBS 和超額突發尺寸EBS。 其中,CBS和EBS 要大於0 ,並且至少應該大於等於最大的分組長度。

為方便,將兩個令牌桶稱為C桶和E桶,用Tc和Te表示桶中的令牌數量,Tc和Te初始化等於CBS和EBS。CBS比EBS要小。

Tc和Te在每秒鍾內更新CIR次,更新時遵循以下規則:

 如果Tc < CBS,則Tc增加1,否則

 如果Te < EBS,則Te增加1,否則

 Tc和Te都不增加

色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:

 如果Tc-B >= 0,則報文被標記為綠色,且Tc降低B,否則

 如果Te-B >= 0,則報文被標記為黃色,且Te降低B,否則

 報文被標記為紅色且Tc和Te都不降低。

非色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:

 如果報文已被標記為綠色且Tc-B >= 0,則報文被標記為綠色,且Tc降低B,否則

 如果報文已被標記為綠色或黃色且Te-B >= 0,則報文被標記為黃色,且Te降低B,否則報文被標記為紅色且Tc和Te都不降低。

3.2 trTCM算法(RFC 2698)

配置單速率三色標記器時要指定4個參數:承諾信息速率CIR 、峰值信息速率PIR、承諾突發尺寸CBS 和超額突發尺寸EBS。trTCM算法中兩個令牌桶的填充令牌的速率不同,分別為承諾的平均速率CIR(Committed Information Rate)和峰值速率PIR(Peak Information Rate)。為方便將這兩個令牌桶稱為C桶和P桶,這兩個桶的尺寸分別為承諾突發尺寸CBS(Committed Burst Size)和峰值突發尺寸PBS(Peak Burst Size)。用Tc和Tp表示桶中的令牌數量,Tc和Tp初始化等於CBS和PBS。Tc和Tp在每秒鍾內分別更新CIR和PIR次,每次更新增加一個令牌(除非桶滿)。

在色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:

 如果Tp-B < 0,則報文被標記為紅色,否則

 如果Tc-B < 0,則報文被標記為黃色,且Tp降低B,否則

報文被標記為綠色且Tc和Tp都降低B。

在非色盲模式下,在對到達報文(假設報文大小為B)進行評估時,遵循以下規則:

 如果報文已被標記為紅色或者Tp-B < 0,則報文被標記為紅色,否則

 如果報文已被標記為黃色或者Tc-B < 0,則報文被標記為黃色,且Tp降低B,否則

 報文被標記為綠色且Tc和Tp都降低B。

4 流量監管和流量整形的實現機制

4.1 流量監管(Committed Access Rate, CAR)

我司路由器實現的令牌桶算法是色盲模式srTCM,但是算法上作了一定的改進,所謂的單桶雙色算法。CAR和GTS中EBS可以配置,但是沒有起應有的作用,而是把這個桶放到CBS中,起加深CBS桶的作用。CBS和EBS是合起來算的,也就是說實際的CBS=配置的CBS+EBS,初始時令牌是滿的。那么當有報文來時,如果報文長度B大於實際的CBS就是紅,小於實際的CBS就是綠,沒有黃色報文。值得注意的是:CAR和GTS中報文長度B包含二層信息的長度,如果是PPPOE鏈路,在VT上配置CAR和GTS報文長度應包含PPP頭部。令牌桶如圖所示

圖表 2 令牌桶的構成圖圖表

CAR進行流量控制的基本處理過程  

圖表 3 CAR示意圖

令牌桶初始時是滿的,TB=CBS+EBS。首先,根據預先設置的匹配規則來對報文進行分類,如果是沒有規定流量特性的報文,就直接繼續發送,並不需要經過令牌桶的處理。

其次,如果是需要進行流量控制的報文,則會進入令牌桶中進行處理。具體來說,進入令牌桶處理的包長度B –TB<0,則報文是綠色的,反之報文是紅色的。具體對不同顏色報文的處理行為可以通過針對定義不同顏色的處理行為來決定,被判斷為可以通過的報文被送出,在桶中取走與報文長度(bit為單位)等量的令牌,所剩令牌為TB=TB-B報文長度。

最后,如果令牌桶中的令牌不滿足報文的發送條件,則報文被丟棄。

針對上面的處理流程,例如,如果對進入令牌桶處理的報文長度為800bits,

TB=CBS+EBS=30000bits,這時30000-800>0,所以報文是綠色的,否則報文是紅色的。

我司向令牌桶中補充令牌不是周期性加的,當桶中令牌不夠發送報文時給令牌桶加(當前的時間 - 上次加令牌的時間)* CIR個令牌,溢出的令牌丟棄。這樣,就可以對某類報文的流量進行控制。 令牌桶按用戶設定的速度向桶中放置令牌,並且用戶可以設置令牌桶的容量。

令牌桶是一個控制數據流量的很好的工具。當令牌桶中充滿令牌的時候,桶中所有的令牌代表的報文都可以被發送,這樣可以允許數據的突發性傳輸。突發就是任何一段時間T1、T2(T1<T2)內通過的流量都不可能大於(T2-T1)*cir+cbs。

當令牌桶中沒有令牌的時候,報文將不能被發送,只有等到桶中生成了新的令牌,報文才可以發送,這就可以限制報文的流量只能是小於等於令牌生成的速度,達到限制流量的目的。

在實際應用中,VRP的CAR不僅可以用來進行流量控制,還可以進行報文的標記(mark)或重新標記(re-mark)。具體來講就是CAR可以設置IP報文的優先級或修改IP報文的優先級,達到標記報文的目的。

例如,當報文符合流量特性的時候,可以設置報文的優先級為5,當報文不符合流量特性的時候,可以丟棄,也可以設置報文的優先級為1並繼續進行發送。這樣,后續的處理可以盡量保證不丟棄優先級為5的報文,在網絡不擁塞的情況下,也發送優先級為1的報文,當網絡擁塞時,首先丟棄優先級為1的報文,然后才丟棄優先級為5的報文。

CAR可以為不同類別的報文設置不同的流量特性和標記特性。即,首先對報文進行分類,然后不同類別的報文有不同的流量特性和標記特性。

CAR能在出接口和入接口上生效。

4.2 通用流量整形(Generic Traffic Shaping, GTS)

通用流量整形(以后簡稱GTS)可以對不規則或不符合預定流量特性的流量進行整形,以利於網絡上下游之間的帶寬匹配。

 GTS與CAR一樣,均采用了令牌桶技術來控制流量。GTS與CAR的主要區別在於:利用CAR進行報文流量控制時,對不符合流量特性的報文進行丟棄;而GTS對於不符合流量特性的報文則是進行緩沖,減少了報文的丟棄。

GTS的基本處理過程如圖所示,其中用於緩存報文的隊列稱為GTS隊列。

  

圖表 4 GTS處理過程圖 

GTS可以對接口上指定的報文流或所有報文進行整形。當報文到來的時候,首先對報文進行分類,如果報文不需要進行GTS處理,就繼續發送,不需要經過令牌桶的處理;流量整形的令牌桶的構成同CAR,如果報文需要進行GTS處理,則與令牌桶中的令牌進行比較,進入令牌桶處理的包長度B –TB<0則報文被發送,否則報文被緩存,等到令牌桶中有足夠的令牌時繼續發送報文。令牌桶按用戶設定的速度向桶中放置令牌,如果令牌桶中有足夠的令牌可以用來發送報文,則報文直接被繼續發送下去,同時,令牌桶中的令牌量按報文的長度做相應的減少。當令牌桶中的令牌少到報文不能再發送時,報文將被緩存入GTS隊列中,這里的隊列是FIFO隊列,與接口上的FIFO不同,當然隊列有一定的長度(以包為單位),當需要緩存的報文個數大於隊列長度時報文因無法緩存而丟棄。當GTS隊列中有報文的時候,GTS按一定的周期從隊列中取出報文進行發送,每次發送都會與令牌桶中的令牌數作比較,直到令牌桶中的令牌數減少到隊列中的報文不能再發送或是隊列中的報文全部發送完畢為止。另外,GTS也允許有突發。GTS只能在出接口上生效。

GTS可用來進行網絡上下游之間的帶寬匹配。例如在圖12所示的應用中,假設路由器1向路由器2發送報文,路由器2對路由器1發送來的報文進行了CAR流量限制。

   

圖表 5 GTS的應用示例圖   

為了減少報文的丟失,可以在路由器1的出口對報文進行GTS處理,對於超出GTS流量特性的報文,將在路由器1中緩沖。當可以繼續發送下一批報文時,GTS再從緩沖隊列中取出報文進行發送。這樣,發往路由器2的報文將都符合路由器2的流量規定,從而減少報文在路由器2上的丟棄。相反,如果不在路由器1的出口做GTS處理,則所有超出路由器2的CAR流量特性的報文將被路由器2丟棄。

5 物理接口總速率限制(Line rate,LR)

利用物理接口總速率限制(以后簡稱LR)可以 在一個物理接口上,限制接口發送報文(包括緊急報文)的總速率。   

LR的處理過程仍然是采用令牌桶進行流量控制。如果用戶在路由器的某個接口上配置了LR,規定了流量特性,則所有經由該接口發送的報文首先要經過LR的令牌桶進行處理。如果令牌桶中有足夠的令牌可以用來發送報文,則報文可以發送。如果令牌桶中的令牌不滿足報文的發送條件,則報文入緊急隊列等待下一次發送機會。這樣,就可以對通過該物理接口的報文流量進行控制。LR的處理過程如圖所示。    

圖表 7 LR處理過程圖

同樣的,由於采用了令牌桶控制流量,當令牌桶中積存有令牌時,可以允許報文的突發性傳輸。當令牌桶中沒有令牌的時候,報文將不能被發送,只有等到桶中生成了新的令牌,報文才可以發送,這就可以限制報文的流量只能是小於等於令牌生成的速度,具有限制流量,同時允許突發流量通過的目的。 

注意:圖7中只描述得不到令牌的報文需要入隊列,也就是說能夠得到令牌的報文不用入隊列,直接就發送出去。 

LR能夠限制在物理接口上通過的所有報文。LR相比較於GTS,不但能夠對超過流量限制的報文進行緩存,而且還因為進入了QOS隊列機制進行處理,所以隊列調度機制更靈活。

在用戶只要求對所有報文限速時,使用LR所需的配置操作簡單。對於網絡建設投資者,可以對客戶隱藏實際帶寬,客戶只能嚴格按所購買的帶寬來使用。

轉自:
http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Four/Home/Catalog/201104/713018_97665_0.htm


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM