令牌桶算法

 介紹

令牌桶算法是目前IP QoS中最常採用的一種流量測量方法,廣泛應用於約定訪問速率技術、通用流量整形技術以及物理接口總速率限制等技術中。IETF RFC 建議規範了單速率三色標記和雙速率三色標記兩種令牌桶算法,在桶的構成、令牌添加和報文處理流程方面前者較後者簡單,成爲目前業界比較常用的流量標記方式。在實際應用中,應針對不同的流量特徵選擇恰當的標記方式。
 

1 令牌桶算法基本原理
      令牌桶是網絡設備的內部存儲池,而令牌則是以給定速率填充令牌桶的虛擬信息包。每個到達的令牌都會從數據隊列領出相應的數據包進行發送,發送完數據後令牌被刪除。

      RFC中定義了兩種令牌桶算法——單速率三色標記算法和雙速率三色標記算法,其評估結果都是爲報文打上紅、黃、綠三色標記。QoS會根據報文的顏色,設置報文的丟棄優先級,其中單速率三色標記比較關心報文尺寸的突發,而雙速率三色標記則關注速率上的突發,兩種算法都可工作於色盲模式和非色盲模式。以下結合這兩種工作模式介紹一下RFC中所描述的這兩種算法。

1.1 單速率三色標記算法
      IETF的RFC文件[2]定義了單速率三色標記算法,評估依據以下3個參數:承諾訪問速率(CIR),即向令牌桶中填充令牌的速率;承諾突發尺寸(CBS),即令牌桶的容量,每次突發所允許的最大流量尺寸(注:設置的突發尺寸必須大於最大報文長度);超額突發尺寸(EBS)。

      一般採用雙桶結構:C桶和E桶。Tc表示C桶中的令牌數,Te表示E桶中令牌數,兩桶的總容量分別爲CBS和EBS。初始狀態時兩桶是滿的,即Tc和Te初始值分別等於CBS和EBS。令牌的產生速率是CIR,通常是先往C桶中添加令牌,等C桶滿了,再往E桶中添加令牌,當兩桶都被填滿時,新產生的令牌將會被丟棄。
色盲模式下,假設到達的報文長度爲B。若報文長度B小於C桶中的令牌數Tc,則報文被標記爲綠色,且C桶中的令牌數減
少B;若Tc<B <Te,則標記爲黃色,E和C桶中的令牌數均減少B;若B >Te,標記爲紅色,兩桶總令牌數都不減少。
在非色盲模式下,若報文已被標記爲綠色或B <Tc,則報文被標記爲綠色,Tc減少B;若報文已被標記爲黃色或Tc<B <Te,則標記爲黃色,且Te減少B;若報文已被標記爲紅色或
B >Te,則標記爲紅色,Tc和Te都不減少。

1.2 雙速率三色標記算法
      IETF的RFC文件[3]定義了雙速率三色算法,主要是根據4種流量參數來評估:CIR、CBS、峯值信息速率(PIR),峯值突發尺寸(PBS)。前兩種參數與單速率三色算法中的含義相同,PIR這個參數只在交換機上纔有,路由器沒有這個參數。該值必須不小於CIR的設置值,如果大於CIR,則速率限制在CIR於PRI之間的一個值。

      與單速率三色標記算法不同,雙速率三色標記算法的兩個令牌桶C桶和P桶填充令牌的速率不同,C桶填充速率爲CIR,P桶爲PIR;兩桶的容量分別爲CBS和PBS。用Tc和Tp表示兩桶中的令牌數目,初始狀態時兩桶是滿的,即Tc和Tp初始值分別等於CBS和PBS。

      色盲模式下,如果到達的報文速率大於PIR,超過Tp+Tc部分無法得到令牌,報文被標記爲紅色,未超過Tp+Tc而從P桶中獲取令牌的報文標記爲黃色,從C桶中獲取令牌的報文被標記爲綠色;當報文速率小於PIR,大於CIR時,報文不會得不到令牌,但超過Tp部分報文將從P桶中獲取令牌,被標記爲黃色報文,從C桶中獲取令牌的報文被標記爲綠色;當報文速率小於CIR時,報文所需令牌數不會超過Tc,只從C桶中獲取令牌,所以只會被標記爲綠色報文。

      在非色盲模式下,如果報文已被標記爲紅色或者超過Tp+Tc部分無法得到令牌的報文,被標記爲紅色;如果標記爲黃色或者超過Tc未超過Tp部分報文記爲黃色;如果報文被標記爲綠或未超過Tc部分報文,被標記爲綠色。

2 令牌桶算法的應用

2.1 在流量監管中的應用
      約定訪問速率(CAR)是流量監管常用技術之一[4],它的監管原理如圖1所示。

根據預設的匹配規則先對報文進行分類,不符合匹配規則的報文不需要經過令牌桶的處理,直接發送;符合匹配規則的報文,則需要令牌桶進行處理。當桶中有足夠的令牌則報文可以被繼續發送下去,同時令牌桶中的令牌 量按報文的長度做相應的減少;當令牌桶中的令牌不足時,報文將不能被髮送,只有等到桶中生成了新的令牌,報文纔可以發送。這就可以限制報文的流量只能是小於等於令牌生成的速度,達到限制流量的目的。 
在通用流量整形中的應用


通用流量整形中( GTS)[(如圖2所示)與CAR的原理稍有差別:第一,GTS只用於出方向流量限速,CAR出入方向均可以,但一般多用於入方向;第二,利用CAR進行報文流量控制時,對超過速率限制的報文直接丟棄,而GTS~ IJ 是對超過速率限制的報文進行緩衝即當令牌桶的令牌少到報文不能再發送時,報文將被緩存入隊列,等有了足夠的令牌之後再發送,這樣就減少了報文的丟棄,但是要注意的是,如果緩存隊列已滿,這時到達的報文仍舊會被丟棄。

在端口限速 中的應用


端口限速(LR)(如圖3所示)也用於出方向,但不同於GTS 的是:第一,GTS與CAR是在IP層實現的,所以對於不經過IP層處理的報文不起作用,而LR~ IJ能夠限制在物理接口上通過的所有報文;第二,LR不但能夠對超過流量限制的報文進行緩存,並且可以利用QoS豐富的隊列如優先級隊列(PQ)、自定 義 隊列(CQ)、加權公平對列(WFQ)等來緩存報文。

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