CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看這裏!----揭祕令牌桶

非常好的比喻,深入簡出介紹QoS令牌原理。

http://support.huawei.com/ecommunity/bbs/10250689.html


概述

春暖花開的時候,大家都開着汽車外出旅遊欣賞美麗的風景,卻被堵在高速公路上,你是否爲此感到痛苦?但如果有一種機制可以評估高速公路上的車流量、控制車流情況,確保進入高速公路的汽車都能在路上安全暢行,你是不是會覺得很開心?

與此相似,網絡發生擁塞的時候,也是一件非常痛苦的事情,如圖1和圖2所示。

1 網絡擁塞場景1

 

2 網絡擁塞場景2

如果不限制用戶發送的業務流量大小,大量不斷突發的業務數據會使網絡更加擁擠,嚴重時會出現網絡擁塞,造成業務出現異常,同時也浪費網絡資源,如圖3和圖4所示。

3 網絡擁塞造成資源浪費

4 網絡擁塞引起業務異常

那麼,你是否很期待有一種機制可以在網絡上通過監督進入網絡的流量速率,以達到限制流量、提高網絡資源使用效率的目的,從而保證有限的網絡資源提供更好的網絡服務?

流量評估

爲了達到上述目的,我們需要對進入網絡的流量進行監督,實現CARCommitted Access Rate)。

CAR:將進入網絡的用戶流量的速率限制在約定的範圍之內,從而避免引起網絡擁塞。

要實現CAR,就需要對流量進行評估,然後根據評估的結果對流量採取相應的動作:

l  如果流量沒有超速,設備會爲報文獎勵綠牌(將報文染色爲綠色)。報文可暢通無阻,即被轉發。

l  如果流量稍微超速,設備會發出黃牌警告(將報文染色爲黃色)。通常報文會被降級,即修改報文的內部優先級,然後進行盡力而爲的轉發。

l  如果流量超速太多,設備會發出紅牌將報文罰下(將報文染色爲紅色)。報文被禁止通行,即丟棄。

然而,報文不像汽車那樣可以通過測速儀之類的儀器進行測速。那麼,如何對報文的速率進行評估呢?——答案在這裏:令牌桶。

令牌桶可以看作是一個存放令牌的容器,預先設定一定的容量。系統按給定的速度向桶中放置令牌,當桶中令牌滿時,多餘的令牌溢出。令牌桶是一種流量測量方法。

不得不說的令牌桶

接着上面高速公路的例子,假設進入高速公路的車輛需要在入口處領取到通行卡才能進入高速公路。爲了節約人力成本,入口處放置自動出卡機。按照國家高速公路交通安全法的規定,在高速公路上行駛的車輛,車速超過100km/h時,應與同車道前車保持100米以上距離。爲了保持最小安全行車距離100米,按車速100km/h計算,需要間隔至少3.6秒才能放行一輛車,因此出卡機每隔3.6秒出一張通行卡。在自動出卡機下放置一個盒子,自動出卡機按照3.6秒的間隔向盒子中投放通行卡。每輛進入高速公路的車輛,從盒子中領取通行卡之後纔可以進入高速公路。

令牌桶算法與此類似。簡單來說,令牌桶可以看作是一個存放一定數量令牌的容器。系統按設定的速度向桶中放置令牌。當桶中令牌滿時,多出的令牌溢出,桶中令牌不再增加。在使用令牌桶對流量規格進行評估時,是以令牌桶中的令牌數量是否足夠滿足報文的轉發爲依據的。每個需要被轉發的報文,都要從令牌桶中領取一定數量的令牌(具體數量視報文大小而定),纔可以被正常轉發。如果桶中存在足夠的令牌可以用來轉發報文,稱流量遵守或符合約定值,否則稱爲不符合或超標。

按照系統向令牌桶投放令牌的速率和令牌桶的數量劃分,令牌桶算法有三種模式:

l  單速單桶

l  單速雙桶

l  雙速雙桶

下面我們以色盲模式爲例詳細介紹這三種模式。

單速單桶

假設有一套自動出卡系統,包括一臺自動出卡機和一個盒子C。自動出卡機以固定的速率(3.6秒出一張通行卡)向盒子中投放通行卡。這個固定的速率,就相當於是單速單桶模式中的CIR參數。

CIRCommitted Information Rate):承諾信息速率,表示向C桶(單桶模式中只有一個令牌桶,稱爲C桶)中投放令牌的速率,即C桶允許傳輸或轉發報文的平均速率。

如果平均每3.6秒來了不止1輛車,通行卡很快就領完了。這時自動出卡機上的紅燈亮起,新到的車輛禁止進入高速公路。這就起到了限定作用,將放行車輛的速率限制在放卡速率範圍內。

如果平均每3.6秒來了不到1輛車,盒子裏就會有一些積累起來的通行卡。這些累積起來的通行卡可以應付車隊(比如車友俱樂部的車隊)要進入高速公路這樣的情況。我們規定每輛車都要領取通行卡,都由領隊的車領取。

假設某時刻來了一個車隊共8輛車,但盒子裏只有6張通行卡,領隊車拿起通行卡一數,發現不夠,那麼這個車隊不允許進入高速,通行卡放回盒子中。

盒子中的通行卡不停累積,總有盒子裝滿的時候。這個盒子的容積,就相當於單速單桶模式中的CBS參數。

CBSCommitted Burst Size):承諾突發尺寸,表示C桶的容量,即C桶瞬間能夠通過的承諾突發流量。相當於盛放通行卡的盒子裏最多可以放多少張通行卡,也就是說,該自動出卡系統允許通過的車隊中最多可以有多少輛車。

在單速單桶模式中,系統按照CIR速率向C桶中投放令牌。

l  如果可用令牌的總數量(Tc)小於CBS,則令牌數繼續增加。

l  如果令牌桶已滿,則令牌數不再增加。

對於到達的報文(報文大小爲B),

l  如果B Tc,報文被標記爲綠色,且Tc減少B

l  如果B > Tc,報文被標記爲紅色,Tc不減少。

假設設備端口的CIR設置爲1Mbit/sCBS2000bytes,初始狀態時C桶滿。

說明:爲方便計算,此處1Mbit/s1*106計算。

l  假設第1個到達的報文是1500bytes時,檢查C桶發現令牌數大於數據包的長度,所以數據包被標爲綠色,C桶減少令牌1500bytes,還剩500bytes

l  假設1ms之後到達第2個報文1500bytes。在此間隔內,C桶新增令牌 = CIR * 1ms = 1000bit = 125bytes,加上C桶原來剩餘的令牌500bytes,此時C桶共有625bytes。令牌數量不夠,報文標記爲紅色。

l  假設又過1ms後到達第3個報文1000bytes。在此間隔內,C桶新增令牌125bytes,加上C桶原來剩餘的令牌625bytes,此時C桶共有750bytes。令牌數量不夠,因此報文被標記爲紅色。

l  假設又過20ms後到達第4個報文1500bytes。在此間隔內,C桶新增令牌 = CIR * 20ms = 20000bit = 2500bytes,加上C桶原來剩餘的令牌750bytesC桶此時令牌數爲3250bytes。而CBS = 2000bytes,因此溢出1250bytes令牌被丟棄。此時C桶令牌數大於報文長度,報文標記爲綠色,C桶減少令牌1500bytes,剩500bytes

報文處理過程彙總見下表。

包序號

時刻

ms

包長

bytes

與上次添加令牌的間隔

本輪增加令牌

令牌增加後C桶令牌

報文處理後C桶剩餘令牌

報文標記結果

         

2000

2000

-

1

0

1500

0

0

2000

500

綠色

2

1

1500

1

125

625

625

紅色

3

2

1000

1

125

750

750

紅色

4

22

1500

20

2500

2000

500

綠色

 

單速雙桶

在單速單桶模式中說到,如果平均每3.6秒來了不到1輛車,盒子裏就會有一些積累起來的通行卡。如果一直沒有車輛過來,盒子中的通行卡不停地累積。盒子的容量是有限的,當盒子中裝滿通行卡之後,不斷投放的通行卡就溢出盒子,會造成浪費。

爲了避免這種浪費,我們改進了這個自動出卡系統,在原來的基礎上增加一個盒子E改進後的系統對應單速雙桶模式,盒子E對應單速雙桶中的E)。自動出卡機首先向C盒中投放通行卡。當C盒滿了,自動出卡機就向E盒中投放通行卡。

爲了保證通行卡有序領取,我們規定先領取C盒中的通行卡。如果C盒中的通行卡不夠用,就把卡放回C盒,再從E盒中重新領取通行卡。C盒和E盒中的通行卡不能同時取用。

按照通行卡的取用,可以分爲三種情況:

l  如果C盒中的通行卡夠用,綠燈亮,車輛領取C盒中的通行卡後通行。

l  如果C盒中的通行卡不夠用但E盒中的通行卡夠用,黃燈亮,從C盒中領取的通行卡領取的通行卡要歸還,車輛領取E盒中的通信卡後通行。

l  如果E盒中的通行卡也不夠用,紅燈亮,車輛禁止通行,從E盒中領取的通行卡領取通行卡要歸還。

和單速單桶模式一樣,對於車隊,有幾輛車,就領取幾張通行卡。當然,E盒的容量也是有限的。E盒的容量就相當於單速雙桶模式中的EBS

EBSExcess Burst Size):超額突發尺寸,表示E桶的容量,即E桶瞬間能夠通過的超出突發流量。

假設某時刻來了一個車隊有8輛車,但C盒裏只有5張通行卡,而E盒中有9張通行卡,那麼黃燈亮起,這輛長車從E盒中領取8張通行卡。

在單速雙桶模式中,系統按照CIR速率向桶中投放令牌。

l  如果C桶中可用令牌的總數量(Tc)小於CBS,則C桶中令牌數增加。

l  如果Tc等於CBSE桶中的可用令牌總數量(Te)小於EBS,則C桶中令牌數不增加,E桶中令牌數增加。

l  如果C桶和E桶中的令牌都已滿,則兩個桶中的令牌數都不再增加。

對於到達的報文(報文大小爲B),

l  如果B Tc,報文被標記爲綠色,且Tc減少B

l  如果Tc < B Te,報文被標記爲黃色,且Te減少BTc不減少。

l  如果B > Te,報文被標記爲紅色,且TcTe都不減少。

假設設備端口的CIR設置爲1Mbit/sCBS2000bytesEBS2000bytes,初始狀態時C桶和E桶滿。

說明:爲方便計算,此處1Mbit/s1*106計算。

l  假設第1個到達的報文是1500bytes時,檢查C桶發現令牌數大於數據包的長度,所以數據包被標爲綠色,C桶減少令牌1500bytes,還剩500bytesE桶令牌數量保持不變。

l  假設1ms之後到達第2個報文1500bytes。在此間隔內,C桶新增令牌 = CIR * 1ms = 1000bit = 125bytes,加上C桶原來剩餘的令牌500bytes,此時C桶共有625bytes,檢查發現C桶內令牌數量不夠。檢查E桶發現有足夠令牌,因此報文標記爲黃色,E桶減少令牌1500bytes,剩餘500bytesC桶剩餘625byte保持不變。

l  假設又過1ms後到達第3個報文1000bytes。在此間隔內,C桶新增令牌125bytes,加上C桶原來剩餘的令牌625bytes,此時C桶共有750bytes,檢查發現C桶內令牌數量不夠。檢查E桶發現令牌數量也不夠,因此報文被標記爲紅色,C桶、E桶令牌數不變。

l  假設又過20ms後到達第4個報文1500bytes。在此間隔內,C桶新增令牌 = CIR * 20ms = 20000bit = 2500bytes,加上C桶原來剩餘的令牌750bytesC桶此時令牌數爲3250bytes。而CBS = 2000bytes,因此溢出的1250bytes添加到E桶,此時E桶有1750bytes。由於C桶中令牌數大於報文長度,報文標記爲綠色,C桶減少令牌1500bytes,剩餘500bytesE桶不變。

報文處理過程彙總見下表。

包序號

時刻

(ms)

包長

(bytes)

與上次添加令牌的間隔

本輪增加令牌

令牌增加後各桶令牌

報文處理後各桶剩餘令牌

報文標記結果

C

E

C

E

         

2000

2000

2000

2000

-

1

0

1500

0

0

2000

2000

500

2000

綠色

2

1

1500

1

125

625

2000

625

500

黃色

3

2

1000

1

125

750

500

750

500

紅色

4

22

1500

20

2500

2000

1750

500

1750

綠色

 

雙速雙桶

前面說到的自動出卡機,都只有一個口可以輸出通行卡。而這裏說到的高級自動出卡機,有兩個口可以出卡,一個口輸出的是通行卡,一個口輸出的是服務卡。當然,這裏也有兩個盒子用於盛放卡,分別是盒C盒和P盒。自動出卡機上的兩個口分別以各自固定的速率向兩個盒子中投放卡。(這個高級自動出卡機系統對應雙速雙桶模式,C盒和P盒對應雙速雙桶模式中的C桶和P桶。

領取卡的規則和前面單速的情況有所不同。我們規定:

l  先領取服務卡。如果服務卡不夠,把卡放回P盒,紅燈亮,車輛禁止通行。

l  如果服務卡足夠但通行卡不夠,黃燈亮,服務卡可以取走,通行卡放回C盒。

l  如果服務卡和通行卡都足夠,綠燈亮,車輛可以通行,服務卡和通行卡都取走。

自動出卡機向P盒投放服務卡的速率和P盒的容量,就分別相當於雙速雙桶模式中的PIRPBS

PIRPeak information rate):峯值信息速率,表示向P桶中投放令牌的速率,即P桶允許傳輸或轉發報文的峯值速率。PIR的值應大於CIR(存在服務卡足夠而通行卡不夠的情況)。

PBSPeak Burst Size):峯值突發尺寸,表示P桶的容量,即P桶瞬間能夠通過的峯值突發流量。

按照國家高速公路交通安全法的規定,在高速公路上行駛的車輛,最高時速爲120km/h。前面領取的通行卡,保證車輛的時速爲100km/h。而服務卡的作用,則是允許車輛時速可以達到120km/h。自動出卡機向P盒投放服務卡的速率就是允許的最高車速,相當於PIR

在雙速雙桶模式中,系統按照PIR速率向P桶中投放令牌,按照CIR速率向C桶中投放令牌。

l  如果P桶中可用令牌的總數量(Tp)小於PBS,則P桶中令牌數增加。

l  如果C桶中可用令牌的總數量(Tc)小於CBS,則C桶中令牌數增加。

對於到達的報文(報文大小爲B),

l  如果Tp < B,報文被標記爲紅色,且TcTp都不減少。

l  如果Tc < B Tp,報文被標記爲黃色,且Tp減少BTc不減少。

l  如果B Tc,報文被標記爲綠色,且TpTc都減少B

假設設備端口的CIR設置爲1Mbit/sPIR設置爲2Mbit/sCBS2000 bytesPBS3000 bytes,初始狀態時C桶和P桶滿。

說明:爲方便計算,此處1Mbit/s1*106計算。

l  1個到達的報文假設是1500bytes時,檢查發現報文長度不超過P桶也不超過C桶,所以數據包被標爲綠色,C桶和P桶都減少令牌1500bytesC桶還剩500bytesP桶還剩1500bytes

l  假設1ms後到達第2個報文1800bytes。在此間隔內,P桶新增令牌 = PIR * 1ms = 2000bit = 250bytes,加上P桶原來剩餘的令牌1500bytes,此時P桶共有1750bytes,小於報文長度。C桶新增令牌 = CIR * 1ms = 1000bit = 125bytes,加上C桶原來剩餘的令牌500bytes,此時C桶共有625bytes。報文標記爲紅色,P桶、C桶令牌數不變。

l  假設又過1ms後到達第3個報文1000bytes。在此間隔內,P桶新增令牌250byte,加上P桶原來剩餘的令牌1750byte,此時P桶共有令牌2000bytes,大於報文長度。再檢查C桶,C桶新增令牌250bytes,加上C桶原來剩餘的令牌625byte,此時C桶共有750bytes,仍然小於報文長度。因此報文被標記爲黃色,P桶減少令牌1000bytes,剩餘1000bytesC桶令牌不變。

l  假設又過20ms之後到達報文1500bytes。在此間隔內,P桶新增令牌 = PIR * 20ms = 40000bit = 5000bytes,超過P桶容量PBS,因此P桶令牌數 = PBS = 3000bytes,溢出的令牌丟棄。這樣P桶有2000bytes,大於報文長度。此時C桶增加令牌 = CIR * 20ms = 20000bit = 2500bytes,超過C桶容量CBS,因此C桶令牌數 = CBS = 2000byte,溢出的令牌丟棄。C桶此時令牌數2000 bytes,大於報文長度。報文被標記爲綠色,P桶減少令牌1500bytes,剩餘1500bytesC桶減少令牌1500bytes,剩餘500bytes

報文處理過程彙總見下表。

包序號

時刻

(ms)

包長

(bytes)

與上次添加令牌的間隔

本輪增加令牌

令牌增加後各桶令牌

報文處理後各桶剩餘令牌

報文標記結果

C

P

C

P

C

P

         

 

2000

3000

2000

3000

-

1

0

1500

0

0

0

2000

3000

500

1500

綠色

2

1

1800

1

125

250

625

1750

625

1750

紅色

3

2

1000

1

125

250

750

2000

750

1000

黃色

4

22

1500

20

2500

5000

2000

3000

500

1500

綠色

  

三種令牌桶模式的區別和應用場景

由前文描述可以看出,三種令牌桶模式之間既有區別也有演進關係,具體見下表。

 

單速單桶

單速雙桶

雙速雙桶

關鍵參數

CIRCBS

CIRCBSEBS

CIRCBSPIRPBS

令牌投放

CIR速率向C桶投放令牌。C桶滿時令牌溢出。

C桶滿時令牌投放到E桶。C桶和E桶都不滿時,只向C桶投放令牌。

CIR速率向C桶投放令牌,以PIR速率向P桶中投放令牌。兩個桶相對獨立。桶中令牌滿時令牌溢出。

是否允許流量突發

不允許流量突發。報文的處理以C桶中是否有足夠令牌爲依據。

允許報文尺寸的突發。先使用C桶中的令牌,C桶中令牌數量不夠時,使用E桶中的令牌。

允許報文速率的突發。C桶和P桶中的令牌足夠時,兩個桶中的令牌都使用。C桶中令牌不夠時,只使用P桶中的令牌。

報文顏色標記結果

綠色或紅色

綠色、黃色或紅色

綠色、黃色或紅色

演進關係

單速雙桶模式中,如果EBS等於0,其效果和單速單桶是一樣的。

雙速雙桶模式中,如果PIR等於CIR,其效果和單速單桶是一樣的

基於上述三種令牌桶模式之間的區別,其功能和使用場景也有所不同,具體見下表。

令牌桶模式

功能

選用場景

單速單桶

限制帶寬

優先級較低的業務(如企業外網HTTP流量),對於超過額度的流量直接丟棄保證其他業務,不考慮突發。

單速雙桶

限制帶寬,還可以容許一部分流量突發,並且可以區分突發業務和正常業務

較爲重要的業務,容許有突發的業務(如企業郵件數據),對於突發流量有寬容。

雙速雙桶

限制帶寬,可以進行流量帶寬劃分,可以區別帶寬小於CIR還是在CIR ~PIR之間

重要業務,可以更好的監控流量的突發程度,對流量分析起到指導作用。

參數設置有講究

在令牌桶算法中,CIR的值越大,即令牌產生的速率越大,報文可以獲取的令牌就越多,流向網絡的流量也就越大。因此,CIR的值是控制流入網絡中流量多少的關鍵。CBS也是一個重要參數。CBS的值越大,C桶中可以積累令牌的數目也越多,允許通過的報文尺寸就越大。

由於設備進行的是逐包轉發,CBS的值不應該小於當前網絡上允許傳輸的報文的最大長度。

例如,在單速單桶模式下,假設要把流量限定在10Mbit/s,而CBS值太小(如設置成1000byte)。如果某個時間段內流量的報文,每個報文大小都大於1000byte,那麼這些報文全都被丟棄。這段時間內,沒有報文被轉發,報文的轉發速率爲0,導致網絡資源被浪費,業務也出現異常。

那是不是CBS的值越大就越好呢?顯然不是。CBS值太大,會失去限速的意義。例如,假設要把流量限定在10Mbit/sCBS設置成7200Mbyte。某個時刻,令牌桶中的令牌已滿,如果接下來1小時內流量的報文,其報文長度不一,但共計7200Mbyte,這些報文都能獲得令牌並被轉發,那麼這段時間內的報文速率爲16Mbit/s7200M * 8 / 3600)而不是10Mbit/s,即沒有實現限速。

同理,對於雙速雙桶模式,PIRPBS的值也應設置在合理範圍內。

說明:目前華爲以太網交換機只支持單速單桶和雙速雙桶模式。

簡單來說,帶寬參數的設置取決於實際業務的限速需要。原則上,令牌桶容量需要大於等於網絡中可能出現的最大的報的長度和業務流量的正常突發量。對於華爲的以太網交換機,我們有總結的經驗性公式:

l  帶寬 100Mbit/s時,令牌桶容量(Bytes = 帶寬(kbit/s * 1000s/8

l  帶寬 > 100Mbit/s時,令牌桶容量(Bytes = 100000kbit/s * 1000 s/8

另外,華爲的以太網交換機,不同系列的單板支持的CAR粒度不同。在進行流量監管和限速時,

l  如果配置的CIRPIR是最小粒度的整數倍,則按照配置的速率進行監管和限速。

l  如果配置的CIRPIR不是最小粒度的整數倍,則按照最小粒度的整數倍進行流量監管和限速。

例如,設備上的監管和限速粒度爲64kbit/s,如果CIR 64kbit/s,按照64kbit/s處理;如果128kbit/s < CIR 192kbit/s,按照192kbit/s處理。

令牌桶原理應用之接口限速

令牌桶原理可以應用到設備的入方向和出方向。根據令牌桶原理在不同方向的應用,可以實現不同的功能,見下圖。

流量監管、流量整形、接口限速與令牌桶算法之間的關係,見下表。

應用方向

單速單桶

雙速雙桶

設備入方向

基於接口,實現接口限速

基於流,實現流量監管

設備出方向

基於接口,實現接口限速

基於隊列,實現流量整形

流量監管是一種通過對流量規格進行監督,以限制流量及網絡資源使用的流控策略。如果這種流控策略應用到設備接口的入方向,也可以實現入方向的接口限速。與基於接口實現的入方向的接口限速相比,這種方式引入了MQCModular QoS Command-Line Interface),因此應用更加靈活。

通常我們所說的限速是廣義上的接口限速,包括基於接口和基於MQC實現的入方向的接口限速。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章