QoS的一個(gè)重要作用就是對端口流量進(jìn)行監(jiān)管,也就是限制端口流量。但QoS是如何做到這點(diǎn)的呢?那就是QoS的令牌桶機(jī)制了。下面是在筆者剛剛出版的 《 Cisco/H3C 交換機(jī)高級配置與管理技術(shù)手冊》 一書中,經(jīng)過筆者充分理解后的全面詮釋,大家看一下是否可以理解。 http://book.360buy.com/10959197.html
6.3.3 QoS令牌桶工作原理
QoS中的流量監(jiān)管(Traffic Policing)就是對流量進(jìn)行控制,通過監(jiān)督進(jìn)入網(wǎng)絡(luò)端口的流量速率,對超出部分的流量進(jìn)行“懲罰”(這個(gè)懲罰可以是丟棄、也可是延遲發(fā)送),使進(jìn)入端口的流量被限制在一個(gè)合理的范圍之內(nèi)。例如可以限制HTTP報(bào)文不能占用超過50%的網(wǎng)絡(luò)帶寬,否則QoS流量監(jiān)管功能可以選擇丟棄報(bào)文,或重新配置報(bào)文的優(yōu)先級。
QoS流量監(jiān)管功能是采用令牌桶(Token-Bucket)機(jī)制進(jìn)行的。這里的“令牌桶”是指網(wǎng)絡(luò)設(shè)備的內(nèi)部存儲池,而“令牌”則是指以給定速率填充令牌桶的虛擬信息包。可以這么簡單理解,“令牌桶”可以理解為一個(gè)水桶,而“令牌”則可以理解為通過一根水管流到水桶中的水。
交換機(jī)在接收每個(gè)幀時(shí)都將添加一個(gè)令牌到令牌桶中,但這個(gè)令牌桶底部有一個(gè)孔,不斷地按你指定作為平均通信速率(單位為b/s)的速度領(lǐng)出令牌(也就是從桶中刪除令牌的意思)。相當(dāng)于一個(gè)水桶的上邊連接一根進(jìn)水的水管,而下邊又連接一根連接到用水的地方的出水管。在每次向令牌桶中添加新的令牌包時(shí),交換機(jī)都會(huì)檢查令牌桶中是否有足夠容量(也就是在要向桶水加水前,先要檢查是桶內(nèi)否已滿了),如果沒有足夠的空間,包將被標(biāo)記為不符規(guī)定的包,這時(shí)在包上將發(fā)生指定監(jiān)管器中規(guī)定的行為(丟棄或標(biāo)記),就相當(dāng)于如果當(dāng)前水桶滿了,但上邊水管的水還是來了,這時(shí)要么就是讓這些水白白流到桶外,要么把這些水用其它容器先裝起來,等水桶中不再滿水時(shí)再倒進(jìn)去,供用戶使用。整個(gè)令牌桶的基本工作原理可以用圖6-10來表示。
圖6-10 令牌桶的基本工作作原理
令牌桶填滿的時(shí)間長短是由令牌桶深度(也就是容量,單位為bit,類似于水桶的的深度)、令牌漏出速率(類似桶下邊接的水管的水速)和超過平均速率的突發(fā)通信流(類似于上桶上邊水管突發(fā)的急速水流)持續(xù)的時(shí)間三個(gè)方面共同決定的。 令牌桶的大小利用突發(fā)時(shí)長上限乘以點(diǎn)對點(diǎn)傳輸時(shí)的幀數(shù)限制得出(也就類似突發(fā)水流持續(xù)的時(shí)間*突發(fā)水流的流速)。如果突發(fā)時(shí)間比較短,令牌桶不會(huì)溢出,在通信流上不會(huì)發(fā)生行為。但是,如果突發(fā)時(shí)間比較長,并且速率比較高,令牌桶將溢出,這時(shí)將對突發(fā)過程中的幀采取相應(yīng)的流監(jiān)管策略行為(也就是在水桶滿水后對溢出的水的處理方法)。
在令牌桶處理包的行為方面,RFC中定義了兩種令牌桶算法——單速率三色標(biāo)記(single rate threecolor marker,srTCM)算法和雙速率三色標(biāo)記(two rate threecolor marker,trTCM)算法,其評估結(jié)果都是為包打上紅、黃、綠三色標(biāo)記(所以稱為“三色標(biāo)記”,有關(guān)這些顏色的具體含義將在具體算法中介紹)。QoS會(huì)根據(jù)包的顏色,設(shè)置包的丟棄優(yōu)先級,其中單速率三色標(biāo)記比較關(guān)心包尺寸的突發(fā),而雙速率三色標(biāo)記則關(guān)注速率上的突發(fā),兩種算法都可工作于色盲模式和非色盲模式(具體在下面介紹)。下面分別介紹這兩種算法原理。
1. 單速率三色標(biāo)記算法原理
這里首先要理解“單速率”是什么意思,那就是算法中的兩個(gè)令牌桶有同樣的承諾信息速率(CIR),也就是具有相同平均訪問速率。這兩個(gè)令牌桶分別是正常使用的令牌桶(也就是下面將要說到的C桶)和超出令牌桶容量的突發(fā)令牌桶(也就是下面將要說到的E桶),可以理解為兩個(gè)水桶,一個(gè)是正常使用的水桶,另一個(gè)是用來當(dāng)正常使用的水桶滿后裝多余的水的水桶。下面具體解釋單速率三色標(biāo)記算法原理。
單速率三色標(biāo)記(srTCM)算法關(guān)注的是數(shù)據(jù)包的突發(fā)尺寸,數(shù)據(jù)包的色標(biāo)記評估依據(jù)以下3個(gè)參數(shù):承諾信息速率(CommittedInformation Rate,CIR)、承諾突發(fā)尺寸(Committed BurstSize,CBS)和超額突發(fā)尺寸(Excess Burst Size,EBS)。CIR是指向令牌桶中填充令牌的平均速率,即允許的通信流平均速度;CBS是指每次突發(fā)所允許的最大的流量尺寸,也相當(dāng)于允許的最大取令牌的速率,等于桶的容量(最大時(shí)就是一個(gè)包就可以全部領(lǐng)取桶中的全部令牌)。EBS是指每次突發(fā)允許超出CBS的最大流量尺寸。CBS和EBS的單位都是bit(位)。
單速率三色機(jī)制采用雙桶結(jié)構(gòu):C桶和E桶(之所以用這兩個(gè)字母來表示,為的就是與前面說的CBS和EBS兩種速率的頭個(gè)字母一致,便于描述),且兩個(gè)令牌桶的CIR一樣。C令牌桶中任何未用的令牌都被放入E令牌桶中,用做以后臨時(shí)超過CIR的突發(fā)流量的令牌;另外,當(dāng)C令牌桶滿時(shí),超出的令牌也都會(huì)放在E令牌桶中。
Tc和Te分別表示C令牌桶和E令牌桶中的令牌數(shù),也就是桶中當(dāng)前的容量(單位也為bit),兩桶的總?cè)萘糠謩e為CBS和EBS,也就是對應(yīng)前面介紹的承諾突發(fā)尺寸和超額突發(fā)尺寸,最初它們都是滿的,即Tc和Te初始值分別等于CBS和EBS。正常情況下,不會(huì)使用第二個(gè)令牌桶(也就是E桶),而是把任何CBS(也就是C桶)中未使用的令牌都放入E桶中,只有當(dāng)C令牌桶滿后,后面來的令牌才放到E令牌桶中,為可能出現(xiàn)的突發(fā)數(shù)據(jù)提供信用令牌(也就是經(jīng)過允許的令牌)。
在這種單速率三色標(biāo)記算法中,兩個(gè)令牌桶中令牌的添加是按照相同的CIR速率進(jìn)行的。即每隔1/CIR時(shí)間添加一個(gè)令牌。添加的順序是先添加C桶再添加E桶,當(dāng)兩個(gè)令牌桶中的令牌都滿時(shí),再產(chǎn)生的令牌就會(huì)被丟棄。至于在發(fā)送數(shù)據(jù)包時(shí),令牌的使用IEEE又定義了三種顏色(分別為紅色、黃色和綠色)以及兩種模式:色盲(color-blind)模式和感色(color-aware)模式,默認(rèn)為色盲模式。三種顏色的功能與我們?nèi)粘I钪械慕煌ㄖ甘緹糁械娜N顏色類似,紅色表示違規(guī)數(shù)據(jù),直接丟棄,黃色表示數(shù)據(jù)包雖然違法,但不直接丟棄,而是延遲發(fā)送,綠爭為合法數(shù)據(jù)包,直接發(fā)送。
在色盲(color-blind)模式下是假設(shè)包都是沒有經(jīng)過“著色”處理的(不辨別包中原來標(biāo)記的顏色),是根據(jù)包長度來確定包被標(biāo)記的顏色。現(xiàn)假設(shè)到達(dá)的包長度為B(單位為bit)。若包長度B小于C桶中的令牌數(shù)Tc(也就是C桶中的令牌數(shù)足夠該包發(fā)送所需),則包被標(biāo)記為綠色,表示包符合要求,包發(fā)送后C桶中的令牌數(shù)Tc減少B。如果Tc<B<Te(也就是包長度大于C桶中的令牌數(shù),而小于E桶中的令牌數(shù)),則標(biāo)記為黃色,則從E桶中取出所需令牌,E桶中的令牌數(shù)Te減少B;若B >Te,標(biāo)記為紅色,表示是違反規(guī)定的包,直接丟棄,兩令牌桶中的總令牌數(shù)都不減少。
在感色(color-aware)模式下是假設(shè)包在此之前已經(jīng)過“著色”處理(會(huì)辨別包中原來標(biāo)記的顏色),如果包已被標(biāo)記為綠色,或包長度B<Tc(注意只要滿足其中一個(gè)條件即可,下同),則包被標(biāo)記為綠色,C桶中的令牌數(shù)Tc值隨之也相應(yīng)減少B;如果包已被標(biāo)記為黃色,或Tc<B<Te,則包被標(biāo)記為黃色,同時(shí)E桶中的令牌數(shù)Te也隨之相應(yīng)減少B;如果包已被標(biāo)記為紅色,或B >Te,則包被標(biāo)記為紅色,Tc和Te都不減少。
2. 雙速率三色算法
這里同樣首先要稿清楚“雙速率”是什么意思,它是指該算法中兩個(gè)令牌桶中的CIR速率不同,存在兩個(gè)令牌填充速率。
IETF的雙速率三色標(biāo)記(trTCM)算法主要是根據(jù)四種流量參數(shù)來評估:CIR、CBS、峰值信息速率(Peak InformationRate,PIR),峰值突發(fā)尺寸(Peak Burst Size,PBS)。CIR和CBS參數(shù)與單速率三色算法中的含義相同,PIR就是允許的最大突發(fā)信息傳輸速率,當(dāng)然它的值肯定不會(huì)小于CIR的;PBS是允許的最大突發(fā)信息尺寸,它的值也不會(huì)小于CBS。
與單速率三色標(biāo)記算法不同,雙速率三色標(biāo)記算法中的兩個(gè)令牌桶是C桶和P桶(不是C桶和E桶),但它們的令牌填充速率是不同的,C桶填充速率為CIR,P桶為PIR;兩桶的容量分別為CBS和PBS(之所以用C桶和P桶表示也是基于方便描述,因?yàn)楸硎静煌俾实膮?shù)與對應(yīng)桶的容量參數(shù)相同,第一個(gè)字母對應(yīng)為C,或者P)。用Tc和Tp表示兩桶中的令牌數(shù)目,初始狀態(tài)時(shí)兩桶是滿的,即Tc和Tp初始值分別等于CBS和PBS。
雙速率三色標(biāo)記算法關(guān)注的是速率的突發(fā),但它不像單速率三色標(biāo)記算法那樣把第一個(gè)桶中未使用的令牌放到第二個(gè)桶中,而是使用兩個(gè)獨(dú)立的令牌桶。第一個(gè)令牌桶為PIR,大小為PBS,第二個(gè)令牌桶為CIR,大小為CBS。數(shù)據(jù)的測量是先比較PIR,然后再比較CIR。也就是在雙速率三色標(biāo)記中,首先判斷的是數(shù)據(jù)發(fā)送速率是否符合規(guī)定的突發(fā)要求,而不是正常情況下的色標(biāo)方法。
雙速率三色標(biāo)記算法也有色盲模式和感色模式兩種。
在色盲模式下,當(dāng)包速率大于PIR,此時(shí)未超過Tp+Tc部分的包會(huì)分別從P桶和C桶中獲取令牌,而且從P桶中獲取令牌的部分包被標(biāo)記為黃色,從C桶中獲取令牌的部分包被標(biāo)記為綠色,超過Tp+Tc部分無法得到令牌的包被標(biāo)記為紅色;當(dāng)包速率小于PIR,而大于CIR時(shí),包可以得到令牌,但超過Tc部分的包將從P桶中獲取令牌,此時(shí)這部分包都被標(biāo)記為黃色,而從C桶中獲取令牌的包被標(biāo)記為綠色;當(dāng)包速率小于CIR時(shí),包所需令牌數(shù)不會(huì)超過Tc,只需從C桶中獲取令牌,包被標(biāo)記為綠色。
在感色模式下,如果包已被標(biāo)記為紅色,或者超過Tp+Tc部分無法得到令牌的包,被標(biāo)記為紅色;如果標(biāo)記為黃色,或者超過Tc但未超過Tp部分包記為黃色;如果包被標(biāo)記為綠,或者未超過Tc部分包,被標(biāo)記為綠色。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
