QoS令牌桶工作原理

QoS的一個重要作用就是對端口流量進行監管,也就是限制端口流量。但QoS是如何做到這點的呢?那就是QoS的令牌桶機制了。下面是在筆者剛剛出版的Cisco/H3C交換機高級配置與管理技術手冊》一書中,經過筆者充分理解後的全面詮釋,大家看一下是否可以理解。http://book.360buy.com/10959197.html

  6.3.3 QoS令牌桶工作原理

        QoS中的流量監管(Traffic Policing)就是對流量進行控制,通過監督進入網絡端口的流量速率,對超出部分的流量進行“懲罰”(這個懲罰可以是丟棄、也可是延遲發送),使進入端口的流量被限制在一個合理的範圍之內。例如可以限制HTTP報文不能佔用超過50%的網絡帶寬,否則QoS流量監管功能可以選擇丟棄報文,或重新配置報文的優先級。

       QoS流量監管功能是採用令牌桶(Token-Bucket)機制進行的。這裏的“令牌桶”是指網絡設備的內部存儲池,而“令牌”則是指以給定速率填充令牌桶的虛擬信息包。可以這麼簡單理解,“令牌桶”可以理解爲一個水桶,而“令牌”則可以理解爲通過一根水管流到水桶中的水。

       交換機在接收每個幀時都將添加一個令牌到令牌桶中,但這個令牌桶底部有一個孔,不斷地按你指定作爲平均通信速率(單位爲b/s)的速度領出令牌(也就是從桶中刪除令牌的意思)。相當於一個水桶的上邊連接一根進水的水管,而下邊又連接一根連接到用水的地方的出水管。在每次向令牌桶中添加新的令牌包時,交換機都會檢查令牌桶中是否有足夠容量(也就是在要向桶水加水前,先要檢查是桶內否已滿了),如果沒有足夠的空間,包將被標記爲不符規定的包,這時在包上將發生指定監管器中規定的行爲(丟棄或標記),就相當於如果當前水桶滿了,但上邊水管的水還是來了,這時要麼就是讓這些水白白流到桶外,要麼把這些水用其它容器先裝起來,等水桶中不再滿水時再倒進去,供用戶使用。整個令牌桶的基本工作原理可以用圖6-10來表示。


圖6-10 令牌桶的基本工作作原理

        令牌桶填滿的時間長短是由令牌桶深度(也就是容量,單位爲bit,類似於水桶的的深度)、令牌漏出速率(類似桶下邊接的水管的水速)和超過平均速率的突發通信流(類似於上桶上邊水管突發的急速水流)持續的時間三個方面共同決定的。 令牌桶的大小利用突發時長上限乘以點對點傳輸時的幀數限制得出(也就類似突發水流持續的時間*突發水流的流速)。如果突發時間比較短,令牌桶不會溢出,在通信流上不會發生行爲。但是,如果突發時間比較長,並且速率比較高,令牌桶將溢出,這時將對突發過程中的幀採取相應的流監管策略行爲(也就是在水桶滿水後對溢出的水的處理方法)。

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

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

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

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

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

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

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

      在色盲(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,則包被標記爲紅色,Tc和Te都不減少。

   2. 雙速率三色算法

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

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

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

        雙速率三色標記算法關注的是速率的突發,但它不像單速率三色標記算法那樣把第一個桶中未使用的令牌放到第二個桶中,而是使用兩個獨立的令牌桶。第一個令牌桶爲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部分包,被標記爲綠色。

        【備註】剛剛出版上市的Cisco/H3C交換機高級配置與管理技術手冊》與今年元月份上市的另一本交換機手冊:Cisco/H3C交換機配置與管理完全手冊》(第二版)在內容上是完全不同,相互彌補,無縫對接的,目前這兩本書均已在噹噹、卓越和京東網上全面上架,並且火熱銷售中。


來自:http://www.linuxso.com/linuxrumen/27804.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章