1. 程式人生 > >CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看這裡!----揭祕令牌桶

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桶共有