專利名稱:一種基于主副桶的高精度令牌桶限速的方法
技術(shù)領域:
本發(fā)明涉及網(wǎng)絡流量控制領域,尤其涉及一種基于主副桶的高精度令牌桶限速的方法。
背景技術(shù):
QoS (Quality of Service,服務質(zhì)量)中的流量監(jiān)管(Traffic Policing)就是對流量進行控制,通過監(jiān)督進入網(wǎng)絡端口的流量速率,對超出部分的流量丟棄或是延遲發(fā)送,使進入端口的流量被限制在一個合理的范圍之內(nèi)。QoS流量監(jiān)管功能是采用令牌桶(Token-Bucket)機制進行的。令牌桶是指網(wǎng)絡設備的內(nèi)部存儲池,而令牌則是指以給定速率填充令牌桶的虛擬信息包。交換機在接收每一幀數(shù)據(jù)時都將添加一個令牌到令牌桶中,但這個令牌桶底部有一個孔,不斷地按照指定的速度(即平均通信速率,單位為b/s)從桶中刪除令牌(相當于一個水桶的上邊連接一根進水管,而下邊又連接一根連接到用水的地方的出水管)。在每次向令牌桶中添加新的令牌時,交換機都會檢查令牌桶中是否有足夠容量(相當于向水桶中加水前,先要檢查是桶內(nèi)是否已滿),如果沒有足夠的空間,新添加的令牌將被標記為不符規(guī)定的包,將其丟棄或緩存(就相當于如果當前水桶滿了,但進水管還要進水,那么就是讓這些水流到桶外,或者把這些水用其它容器先裝起來,等水桶中不滿時再倒進去),整個令牌桶的基本工作原理如圖1來表示。令牌桶填滿的時間長短是由令牌桶深度(類似于水桶的深度,單位為bit)、令牌漏出速率(類似桶出水管的水速)和超過平均速率的突發(fā)通信流(類似于進水管突發(fā)的急速水流)持續(xù)的時間三個方面共同決定的。令牌桶的大小利用突發(fā)時長上限乘以點對點傳輸時的幀數(shù)限制得出(也就類似突發(fā)水流持續(xù)的時間*突發(fā)水流的流速)。如果突發(fā)時間比較短,令牌桶不會溢出,在通信流上不會發(fā)生行為。但是,如果突發(fā)時間比較長,并且速率比較高,令牌桶將溢出,這時將對突發(fā)過程中的幀采取相應的流監(jiān)管策略行為。
令牌桶算法是網(wǎng)絡流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一種算法。典型情況下,令牌桶算法用來控制發(fā)送到網(wǎng)絡上的數(shù)據(jù)的數(shù)目,并允許突發(fā)數(shù)據(jù)的發(fā)送。當網(wǎng)絡設備衡量流量是否超過額定帶寬時,需要查看令牌桶,而令牌桶中會放置一定數(shù)量的令牌,一個令牌允許接口發(fā)送或接收Ibit數(shù)據(jù),當接口通過Ibit數(shù)據(jù)后,同時也要從桶中移除一個令牌。令牌桶按用戶設定的速度向桶中放置令牌,如果令牌桶中有足夠的令牌可以用來發(fā)送報文,則報文直接被繼續(xù)發(fā)送下去,同時令牌桶中的令牌量按報文的長度做相應的減少。當桶里沒有令牌的時候,任何流量都被視為超過額定帶寬,只有當桶中有令牌時,數(shù)據(jù)才可以通過接口。令牌桶中的令牌不僅僅可以被移除,同樣也可以往里添加,所以為了保證接口隨時有數(shù)據(jù)通過,就必須不停地往桶里加令牌,由此可見,往桶里加令牌的速度,就決定了數(shù)據(jù)通過接口的速度。因此,可以通過控制往令牌桶里加令牌的速度從而控制用戶流量的帶寬。但是在現(xiàn)有技術(shù)中,當令牌桶限制流量值較大時會產(chǎn)生精度低、誤差大的問題。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題針對上述缺陷,本發(fā)明要解決的技術(shù)問題是如何避免限速值精度低、誤差大的問題,增大令牌桶的限速值范圍。(二)技術(shù)方案為解決上述問題,本發(fā)明提供了一種使用主副桶的高精度令牌桶限速的方法,所述方法具體包括:S1:將所述令牌桶分為主桶和副桶,并分別計算主桶限速值和副桶限速值; S2:根據(jù)所述令牌桶中總的令牌數(shù)量和所述主桶限速值計算所述主桶的一個單位限速值對應的令牌數(shù)量,根據(jù)所述令牌桶中總的令牌數(shù)量和所述副桶限速值計算所述副桶的一個單位限速值對應的令牌數(shù)量;S3:當有報文需要處理時,首先從給所述副桶中提取令牌進行報文處理,當所述副桶中的令牌數(shù)量不足時向所述主桶借用令牌將所述副桶填滿再進行報文處理。進一步地,所述計算主桶限速值和副桶限速值具體包括:根據(jù)所述令牌桶的總限速值對精度取余得到所述副桶限速值,根據(jù)所述令牌桶的總限速值和所述精度相除得到所述主桶限速值。進一步地,在所述令牌桶計算之前還包括:
對所述主桶限速值進行放大,將所述主桶限速值放大到與所述副桶限速值相同的數(shù)量級,即將所述主桶限速值乘以所述精度得到放大的主桶限速值。進一步地,當所述主桶中令牌數(shù)量也不足時才達到令牌桶的總限速值。(三)有益效果本發(fā)明提供了一種基于主副桶的高精度令牌桶限速的方法,通過設置主桶和副桶,依靠副桶提高限速值精度,避免限速值大時精度低、誤差大,增大了令牌桶限速值的范圍,實現(xiàn)了全范圍的高精度限速。
圖1為現(xiàn)有技術(shù)中令牌桶的基本工作原理圖2為本發(fā)明實施例中的一種基于主副桶的高精度令牌桶限速的方法的步驟流程圖。
具體實施例方式下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式
作進一步詳細描述。以下實施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。本發(fā)明實施例中提供了一種基于主副桶的高精度令牌桶限速的方法,步驟流程如圖2所示,具體包括以下步驟:步驟S1:將令牌桶分為主桶和副桶,并分別計算主桶限速值和副桶限速值。在令牌桶算法中,令牌桶最關(guān)鍵的就是令牌的使用和填充,與現(xiàn)有技術(shù)不同的是本實施例中就是將令牌桶分為了主桶和副桶兩個令牌桶,其中副桶用來控制小流量的精度,主桶用來控制大流量的精度。其中,計算主桶限速值和副桶限速值具體包括:根據(jù)令牌桶的總限速值X對精度P取余得到副桶限速值m,即m=x%p ;根據(jù)令牌桶的總限速值X和精度P相除得到主桶限速值n,即n=x/p。在令牌桶計算之前還包括:對主桶限速值η進行放大,將主桶限速值η放大到與副桶限速值m相同的數(shù)量級,即將主桶限速值η乘以精度P得到放大的主桶限速值n&±!g =n*p。步驟S2:根據(jù)令牌桶中總的令牌數(shù)量y和主桶限速值計算主桶的一個單位限速值對應的令牌數(shù)量yl,yl=y/n 根據(jù)令牌桶中總的令牌數(shù)量y和副桶限速值m計算副桶的一個單位限速值對應的令牌數(shù)量y2, y2=y/m。步驟S3:當有報文需要處理時,首先從給副桶中提取令牌進行報文處理,當副桶中的令牌數(shù)量不足時向主桶借用令牌將副桶填滿再進行報文處理。其中副桶需要向主桶借用(m/n)*y個令牌將副桶填滿。只有當主桶中令牌數(shù)量也不足時才達到令牌桶的總限速值。因為計算主要是依賴副桶中的令牌對流量進行控制,本實施例中的精度是由副桶決定的,而副桶的精度比主桶的精度高,所以依賴于副桶的精度比不分主副桶的精度高,因而對流量控制的誤差也大大減小。通過上述方法,通過設置主桶和副桶,依靠副桶提高限速值精度,避免限速值大時精度低、誤差大,增大了令牌桶限速值的范圍,實現(xiàn)了全范圍的高精度限速。以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā) 明的范疇,本發(fā)明的專利保護范圍應由權(quán)利要求限定。
權(quán)利要求
1.一種基于主副桶的高精度令牌桶限速的方法,其特征在于,其中所述令牌桶分為主桶和副桶,所述方法具體包括: S1:將所述令牌桶分為主桶和副桶,并分別計算主桶限速值和副桶限速值; 52:根據(jù)所述令牌桶中總的令牌數(shù)量和所述主桶限速值計算所述主桶的一個單位限速值對應的令牌數(shù)量,根據(jù)所述令牌桶中總的令牌數(shù)量和所述副桶限速值計算所述副桶的一個單位限速值對應的令牌數(shù)量; 53:當有報文需要處理時,首先從給所述副桶中提取令牌進行報文處理,當所述副桶中的令牌數(shù)量不足時向所述主桶借用令牌將所述副桶填滿再進行報文處理。
2.如權(quán)利要求1所述的方法,其特征在于,所述計算主桶限速值和副桶限速值具體包括: 根據(jù)所述令牌桶的總限速值對精度取余得到所述副桶限速值,根據(jù)所述令牌桶的總限速值和所述精度相除得到所述主桶限速值。
3.如權(quán)利要求1所述的方法,其特征在于,在所述令牌桶計算之前還包括: 對所述主桶限速值進行放大 ,將所述主桶限速值放大到與所述副桶限速值相同的數(shù)量級,即將所述主桶限速值乘以所述精度得到放大的主桶限速值。
4.如權(quán)利要求1所述的方法,其特征在于,當所述主桶中令牌數(shù)量也不足時才達到令牌桶的總限速值。
全文摘要
本發(fā)明公開了一種基于主副桶的高精度令牌桶限速的方法,將令牌桶分為主桶和副桶,并分別計算主桶限速值和副桶限速值;根據(jù)令牌桶中總的令牌數(shù)量和主桶限速值計算主桶的一個單位限速值對應的令牌數(shù)量,根據(jù)令牌桶中總的令牌數(shù)量和副桶限速值計算副桶的一個單位限速值對應的令牌數(shù)量;當有報文需要處理時,首先從給副桶中提取令牌進行報文處理,當副桶中的令牌數(shù)量不足時向主桶借用令牌將副桶填滿再進行報文處理。本發(fā)明通過設置主桶和副桶,依靠副桶提高限速值精度,避免限速值大時精度低、誤差大,增大了令牌桶限速值的范圍,實現(xiàn)了全范圍的高精度限速。
文檔編號H04L12/851GK103248580SQ20131011948
公開日2013年8月14日 申請日期2013年4月8日 優(yōu)先權(quán)日2013年4月8日
發(fā)明者朱志博 申請人:漢柏科技有限公司