Open vswitch 之Qos rate-limiting 原理

OpenvswitchQos rate-limiting原理

OVSqosrate-limiting功能是採用令牌桶(Token-Bucket)機制進行的。這裏的“令牌桶”是指網絡設備的內部存儲池,而“令牌”則是指以給定速率填充令牌桶的虛擬信息包。

一 令牌桶算法原理

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


1.單速率三色標記算法原理

        這裏首先要理解“單速率”是什麼意思,那就是算法中的兩個令牌桶有同樣的承諾信息速率(CIR),也就是具有相同平均訪問速率。這兩個令牌桶分別是正常使用的令牌桶(C桶)和超出令牌桶容量的突發令牌桶(E桶),可以理解爲兩個水桶,一個是正常使用的水桶,另一個是用來當正常使用的水桶滿後裝多餘的水的水桶。

        單速率三色標記算法關注的是數據包的突發尺寸,數據包的色標記評估依據以下3個參數:承諾信息速率(CommittedInformationRateCIR)、承諾突發尺寸(CommittedBurstSizeCBS)和超額突發尺寸(ExcessBurstSizeEBS)。CIR是指向令牌桶中填充令牌的平均速率,即允許的通信流平均速度;CBS是指每次突發所允許的最大的流量尺寸,也相當於允許的最大取令牌的速率,等於桶的容量(最大時就是一個包就可以全部領取桶中的全部令牌)。EBS是指每次突發允許超出CBS的最大流量尺寸。CBSEBS的單位都是bit(位)。

      單速率三色機制採用雙桶結構:C桶和E桶(之所以用這兩個字母來表示,爲的就是與前面說的CBSEBS兩種速率的頭個字母一致,便於描述),且兩個令牌桶的CIR一樣。C令牌桶中任何未用的令牌都被放入E令牌桶中,用做以後臨時超過CIR的突發流量的令牌;另外,當C令牌桶滿時,超出的令牌也都會放在E令牌桶中。

     TcTe分別表示C令牌桶和E令牌桶中的令牌數,也就是桶中當前的容量(單位也爲bit),兩桶的總容量分別爲CBSEBS,也就是對應前面介紹的承諾突發尺寸和超額突發尺寸,最初它們都是滿的,即TcTe初始值分別等於CBSEBS。正常情況下,不會使用第二個令牌桶(也就是E桶),而是把任何CBS(也就是C桶)中未使用的令牌都放入E桶中,只有當C令牌桶滿後,後面來的令牌才放到E令牌桶中,爲可能出現的突發數據提供信用令牌(也就是經過允許的令牌)。

      在這種單速率三色標記算法中,兩個令牌桶中令牌的添加是按照相同的CIR速率進行的。即每隔1/CIR時間添加一個令牌。添加的順序是先添加C桶再添加E桶,當兩個令牌桶中的令牌都滿時,再產生的令牌就會被丟棄。至於在發送數據包時,令牌的使用IEEE又定義了三種顏色(分別爲紅色、黃色和綠色)以及兩種模式:色盲模式和感色模式,默認爲色盲模式。三種顏色的功能與我們日常生活中的交通指示燈中的三種顏色類似,紅色表示違規數據,直接丟棄,黃色表示數據包雖然違法,但不直接丟棄,而是延遲發送,綠色爲合法數據包,直接發送。

     在色盲(color-blind)模式下是假設包都是沒有經過“着色”處理的(不辨別包中原來標記的顏色),是根據包長度來確定包被標記的顏色。現假設到達的包長度爲B(單位爲bit)。若包長度B小於C桶中的令牌數Tc(也就是C桶中的令牌數足夠該包發送所需),則包被標記爲綠色,表示包符合要求,包發送後C桶中的令牌數Tc減少B。如果Tc<B<Te(也就是包長度大於C桶中的令牌數,而小於E桶中的令牌數),則標記爲黃色,則從E桶中取出所需令牌,E桶中的令牌數Te減少B;若B>Te,標記爲紅色,表示是違反規定的包,直接丟棄,兩令牌桶中的總令牌數都不減少。

     在感色(color-aware)模式下是假設包在此之前已經過“着色”處理(會辨別包中原來標記的顏色),如果包已被標記爲綠色,或包長度B<Tc(注意只要滿足其中一個條件即可,下同),則包被標記爲綠色,C桶中的令牌數Tc值隨之也相應減少B;如果包已被標記爲黃色,或Tc<B<Te,則包被標記爲黃色,同時E桶中的令牌數Te也隨之相應減少B;如果包已被標記爲紅色,或B>Te,則包被標記爲紅色,TcTe都不減少。

2.雙速率三色算法

      這裏同樣首先要稿清楚“雙速率”是什麼意思,它是指該算法中兩個令牌桶中的CIR速率不同,存在兩個令牌填充速率。

       IETF的雙速率三色標記(trTCM)算法主要是根據四種流量參數來評估:CIRCBS、峯值信息速率(PeakInformationRatePIR),峯值突發尺寸(PeakBurstSizePBS)。CIRCBS參數與單速率三色算法中的含義相同,PIR就是允許的最大突發信息傳輸速率,當然它的值肯定不會小於CIR的;PBS是允許的最大突發信息尺寸,它的值也不會小於CBS

       與單速率三色標記算法不同,雙速率三色標記算法中的兩個令牌桶是C桶和P桶(不是C桶和E桶),但它們的令牌填充速率是不同的,C桶填充速率爲CIRP桶爲PIR;兩桶的容量分別爲CBSPBS(之所以用C桶和P桶表示也是基於方便描述,因爲表示不同速率的參數與對應桶的容量參數相同,第一個字母對應爲C,或者P)。用TcTp表示兩桶中的令牌數目,初始狀態時兩桶是滿的,即TcTp初始值分別等於CBSPBS

       雙速率三色標記算法關注的是速率的突發,但它不像單速率三色標記算法那樣把第一個桶中未使用的令牌放到第二個桶中,而是使用兩個獨立的令牌桶。第一個令牌桶爲PIR,大小爲PBS,第二個令牌桶爲CIR,大小爲CBS。數據的測量是先比較PIR,然後再比較CIR。也就是在雙速率三色標記中,首先判斷的是數據發送速率是否符合規定的突發要求,而不是正常情況下的色標方法。

       雙速率三色標記算法也有色盲模式和感色模式兩種。

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

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

二  令牌桶算法的應用 

1在流量監管中的應用

約定訪問速率(CAR)是流量監管常用技術之一,可以應用在端口進和出方向,一般應用在入方向,它的監管原理如圖1所示。


a.按特定的速率向令牌桶投放令牌

b. 根據預設的匹配規則先對報文進行分類,不符合匹配規則的報文不需要經過令牌桶的處理,直接發送;

c. 符合匹配規則的報文,則需要令牌桶進行處理。當桶中有足夠的令牌則報文可以被繼續發送下去,同時令牌桶中的令牌 量按報文的長度做相應的減少;

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

2在通用流量整形中的應用



a.按特定的速率向令牌桶投放令牌

b. 根據預設的匹配規則先對報文進行分類,不符合匹配規則的報文不需要經過令牌桶的處理,直接發送;

c. 符合匹配規則的報文,則需要令牌桶進行處理。當桶中有足夠的令牌則報文可以被繼續發送下去,同時令牌桶中的令牌 量按報文的長度做相應的減少;

d. 對超過速率限制的報文進行緩衝即當令牌桶的令牌少到報文不能再發送時,報文將被緩存入隊列,等有了足夠的令牌之後再發送,

e. 當令牌桶中的令牌不足時,報文將不能被髮送,只有等到桶中生成了新的令牌,報文才可以發送。

通用流量整形中(GTS)CAR的原理稍有差別:

第一,GTS只用於出方向流量限速,CAR出入方向均可以,但一般多用於入方向;

第二,利用CAR進行報文流量控制時,對超過速率限制的報文直接丟棄,而GTS是對超過速率限制的報文進行緩衝即當令牌桶的令牌少到報文不能再發送時,報文將被緩存入隊列,等有了足夠的令牌之後再發送,這樣就減少了報文的丟棄,但是要注意的是,如果緩存隊列已滿,這時到達的報文仍舊會被丟棄。

3在端口限速 中的應用



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

a.按特定的速率向令牌桶投放令牌

b. 根據預設的匹配規則先對報文進行分類,利用QoS豐富的隊列如優先級隊列(PQ)、自定 義 隊列(CQ)、加權公平對列(WFQ)等來緩存報文

c. 符合匹配規則的報文,則需要令牌桶進行處理。當桶中有足夠的令牌則報文可以被繼續發送下去,同時令牌桶中的令牌 量按報文的長度做相應的減少;

d. 對超過速率限制的報文進行緩衝即當令牌桶的令牌少到報文不能再發送時,報文將被緩存入隊列,等有了足夠的令牌之後再發送,

e. 當令牌桶中的令牌不足時,報文將不能被髮送,只有等到桶中生成了新的令牌,報文才可以發送。


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