專利名稱:一種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法。
背景技術(shù):
CAR(Committed Access Rate)是允許訪問(wèn)速率技術(shù),用于約束用戶流量,它是IP網(wǎng)的一種有效的帶寬管理方式。CAR主要應(yīng)用于通信領(lǐng)域,針對(duì)客戶進(jìn)行流量限制。
依賴用戶自覺(jué)按服務(wù)規(guī)則發(fā)送數(shù)據(jù)流是不現(xiàn)實(shí)的,用戶的流量很可能超過(guò)與服務(wù)提供商簽定的服務(wù)水平協(xié)議(SLA),就會(huì)擠占其它用戶的帶寬,導(dǎo)致其它合法的流量不能得到正常的服務(wù)。在此情況下,為保證網(wǎng)絡(luò)的正常運(yùn)行,需在網(wǎng)絡(luò)入口處對(duì)用戶流量進(jìn)行限制,以保證用戶流量不違規(guī),以及用戶得不到超過(guò)協(xié)議規(guī)定的額外服務(wù)。
CAR可以針對(duì)單個(gè)用戶,也可以針對(duì)一群用戶進(jìn)行流量限制。這一群用戶必須是可以劃分到一個(gè)類別的用戶。例如限制某個(gè)上網(wǎng)用戶出口帶寬為512kbps,也可以限制某個(gè)小區(qū)所有用戶的總出口帶寬為512kbps。通常,在網(wǎng)絡(luò)的邊沿接口處,可通過(guò)配置CAR來(lái)限制突發(fā)數(shù)據(jù)流,控制IP流量以特定的速率進(jìn)出網(wǎng)絡(luò),以便于網(wǎng)絡(luò)經(jīng)營(yíng),提供有保障的網(wǎng)絡(luò)服務(wù)質(zhì)量(QoS)。
CAR允許在路由網(wǎng)絡(luò)上定義流量收縮的策略,可以定義在進(jìn)入接口上的分類和流量策略,還可以在當(dāng)被管理的通信超過(guò)固定帶寬分配的限度時(shí)采取措施。CAR還可以在擴(kuò)展訪問(wèn)列表上設(shè)置優(yōu)先級(jí),所以它可以對(duì)應(yīng)用內(nèi)容、端口號(hào)、源目標(biāo)地址等等提供規(guī)則管理。CAR本身就具備管理通信量的能力,所以也可以對(duì)擁塞進(jìn)行預(yù)防和控制。
目前CAR主要是以令牌桶的方式來(lái)實(shí)現(xiàn)的控制器根據(jù)分配給用戶的流量往令牌桶中加令牌,同時(shí),根據(jù)用戶實(shí)際的流量從令牌桶里減令牌?;蛘呦喾矗刂破鞲鶕?jù)分配給用戶的流量往令牌桶中減令牌,同時(shí),根據(jù)用戶實(shí)際的流量從令牌桶里加令牌。
以控制器根據(jù)分配給用戶的流量往令牌桶中加令牌,同時(shí),根據(jù)用戶實(shí)際的流量從令牌桶里減令牌為例進(jìn)行說(shuō)明,現(xiàn)有技術(shù)采用的令牌桶數(shù)據(jù)結(jié)構(gòu)如下
說(shuō)明MAXToken單位時(shí)間最大流量,即帶寬,單位令牌個(gè)數(shù)(通常1令牌=1字節(jié))舉個(gè)例子說(shuō)構(gòu)造一個(gè)令牌桶,這個(gè)令牌桶最多可以容納A個(gè)令牌,A和一段時(shí)間T內(nèi)交換機(jī)的允許通過(guò)的流量B是匹配的。對(duì)于1G令牌流量,一個(gè)令牌桶最多占用大約(60+n-1)bit存儲(chǔ)空間,由于1G=109≈230,就是說(shuō)需要用30位二進(jìn)制數(shù)才能表示完全。每循環(huán)添加令牌數(shù)最多等價(jià)于1G流量,需要30bit二進(jìn)制表示,桶深為2倍1G流量,需要31bit二進(jìn)制表示,所以共需要61bit二進(jìn)制數(shù)表示。
例設(shè)定1個(gè)令牌代表1個(gè)字節(jié)(1Byte),約定某個(gè)用戶的流量不超過(guò)100兆字節(jié)每秒(100MegaByte/S),那么,在一秒時(shí)間內(nèi)(即T=1S),交換機(jī)允許通過(guò)的流量是100MegaByte/S*1 S=100MegaByte,也就是說(shuō),有100MegaByte的流量可以通過(guò)交換機(jī),每循環(huán)需要添加100MegaByte/1Byte=100M個(gè)令牌。
上述例子中,A等于200M個(gè)令牌,B等于100MegaByte,T等于1S。A和B是成正比的。這個(gè)令牌桶的深度是200M個(gè)令牌。
令牌桶用一個(gè)數(shù)據(jù)來(lái)表示深度,令牌桶深度用來(lái)平衡平穩(wěn)流量和突發(fā)流量?,F(xiàn)有技術(shù)的令牌桶深度為固定值,通常為兩倍的最大流量,如果令牌桶深度大大,意味著控制突發(fā)流量的能力降低,即如果用戶前一段時(shí)間沒(méi)有流量,令牌桶就會(huì)積累很多令牌,如果用戶突發(fā)大流量,令牌桶都會(huì)讓流量通過(guò),如果多個(gè)用戶都是這種情況,那么就會(huì)造成網(wǎng)絡(luò)擁塞。如果令牌桶深度比較淺,則令牌桶很容易溢出,溢出的流量就被浪費(fèi)了,用戶得不到相應(yīng)服務(wù),此外,如果分配給用戶的帶寬較小,令牌桶中的令牌不足發(fā)送一個(gè)最長(zhǎng)數(shù)據(jù)包,不論用戶數(shù)據(jù)平穩(wěn)還是突發(fā),長(zhǎng)數(shù)據(jù)包都無(wú)法通過(guò)。
加令牌并不是隨時(shí)進(jìn)行的,而是周期性添加的,即在一個(gè)時(shí)間段內(nèi)只會(huì)加一次,如果這個(gè)時(shí)間段內(nèi)數(shù)據(jù)包很多,相應(yīng)減去的令牌就多,那么令牌桶就很容易空,一旦令牌桶處于空狀態(tài),在下一次添加令牌操作來(lái)臨之前,用戶數(shù)據(jù)包都無(wú)法通過(guò)。
減令牌是根據(jù)用戶數(shù)據(jù)進(jìn)行的,用戶數(shù)據(jù)到達(dá)的時(shí)間和數(shù)據(jù)包長(zhǎng)度是不可預(yù)知的,所以減令牌的時(shí)間隨機(jī)、數(shù)量隨機(jī)。CAR控制器需要在一定時(shí)間內(nèi)對(duì)令牌桶加一次令牌,單位時(shí)間內(nèi)得到的令牌數(shù)目就是單位時(shí)間流量,也就是帶寬,通過(guò)控制單位時(shí)間添加的令牌數(shù)目就控制了流量,令牌桶中沒(méi)有令牌,用戶數(shù)據(jù)就無(wú)法通過(guò)。
短數(shù)據(jù)包對(duì)應(yīng)減去的令牌數(shù)目少,長(zhǎng)數(shù)據(jù)包對(duì)應(yīng)的令牌就多,根據(jù)計(jì)算單位時(shí)間添加的令牌數(shù)目,可以對(duì)應(yīng)很多個(gè)短數(shù)據(jù)包,對(duì)應(yīng)長(zhǎng)數(shù)據(jù)包的數(shù)目不會(huì)太多。
現(xiàn)有技術(shù)CAR控制器一般每1秒操作令牌桶一次,每次根據(jù)“每循環(huán)添加令牌數(shù)”向令牌桶加令牌。在接下來(lái)的這1秒內(nèi),根據(jù)通過(guò)的用戶流量減去相應(yīng)的令牌數(shù),直到令牌桶中沒(méi)有令牌為止。這種方案實(shí)現(xiàn)和操作比較簡(jiǎn)單,但存在以下兩方面的缺點(diǎn)1、令牌桶對(duì)短時(shí)的突發(fā)流量控制有缺陷,而且對(duì)于帶寬較小的用戶長(zhǎng)數(shù)據(jù)包通過(guò)率比較低。
現(xiàn)有技術(shù)令牌桶在一定時(shí)間內(nèi)添加的令牌是固定的,深度與帶寬無(wú)關(guān),也是固定的,固定的令牌桶深度對(duì)突發(fā)流量控制有缺陷(如果用戶前一段時(shí)間沒(méi)有流量,令牌桶就會(huì)積累很多令牌,如果用戶突發(fā)大流量,令牌桶都會(huì)讓流量通過(guò),如果多個(gè)用戶都是這種情況,那么就會(huì)造成網(wǎng)絡(luò)擁塞)。對(duì)于短數(shù)據(jù)包來(lái)說(shuō),需要減的令牌數(shù)較少,比較容易通過(guò),長(zhǎng)數(shù)據(jù)包需要減去較多的令牌數(shù),令牌桶中如果沒(méi)有足夠的令牌,這個(gè)長(zhǎng)數(shù)據(jù)包就無(wú)法通過(guò),只有加的令牌數(shù)目大于現(xiàn)有數(shù)據(jù)包長(zhǎng)度才可以通過(guò)。
對(duì)于加令牌周期比較短的應(yīng)用和用戶約定流量比較低的情況,這種現(xiàn)象會(huì)更突出,這兩種情況令牌桶都不會(huì)很深,每周期添加的令牌都不多,就是說(shuō),通過(guò)一個(gè)長(zhǎng)報(bào)文后,通常要等多個(gè)周期后才能加滿一個(gè)長(zhǎng)報(bào)文所需的令牌,這期間的長(zhǎng)報(bào)文全部被丟棄。
2、由于令牌桶比較深,如果需要進(jìn)行流量約束用戶數(shù)量比較大,就需要占用較多的存儲(chǔ)空間,這樣可能需要增加額外的成本。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是克服現(xiàn)有技術(shù)進(jìn)行數(shù)據(jù)流量約束時(shí),令牌桶占用存儲(chǔ)空間大、對(duì)短時(shí)的突發(fā)流量控制有缺陷、長(zhǎng)數(shù)據(jù)包通過(guò)率比較低的不足,提供一種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,提高長(zhǎng)數(shù)據(jù)包的通過(guò)率,對(duì)短時(shí)的突發(fā)流量進(jìn)行有效控制,并減小令牌桶占用的存儲(chǔ)空間。
本發(fā)明為解決上述技術(shù)問(wèn)題所采用的技術(shù)方案為這種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,包括以下步驟構(gòu)造一個(gè)令牌桶,包括令牌桶深度參數(shù)和帶寬參數(shù),所述的令牌桶深度為一個(gè)固定令牌桶深度值加上一個(gè)動(dòng)態(tài)令牌桶深度值;根據(jù)分配給用戶的流量,周期性地在令牌桶中加上相應(yīng)令牌數(shù)目,同時(shí),根據(jù)用戶實(shí)際的流量從令牌桶減令牌,固定令牌桶深度在動(dòng)態(tài)令牌桶深度下方,在減令牌前若令牌桶中的令牌數(shù)小于所述的固定令牌桶深度值時(shí),流量不舍法;在下一次添加令牌時(shí),先將固定令牌桶深度值補(bǔ)充滿,然后用戶流量才可以通過(guò);或者,根據(jù)分配給用戶的流量,周期性地從令牌桶中減去相應(yīng)令牌數(shù)目,同時(shí),根據(jù)用戶實(shí)際的流量往令牌桶加令牌,固定令牌桶深度在動(dòng)態(tài)令牌桶深度上方,在加令牌前若令牌桶中的令牌數(shù)大于所述的動(dòng)態(tài)令牌桶深度值時(shí),流量不合法;在下一次減令牌時(shí),先將超過(guò)動(dòng)態(tài)令牌桶深度值的令牌減掉,然后用戶流量才可以通過(guò)。
一個(gè)令牌可以代表至少一個(gè)字節(jié)。周期性加或減令牌的時(shí)間間隔可以為不到1秒。所述的動(dòng)態(tài)令牌桶深度值為最大帶寬的若干倍,并根據(jù)最大帶寬的變化而變化。最好為最大帶寬的2倍,并在帶寬不為0的情況下,至少為5個(gè)最大數(shù)據(jù)包所對(duì)應(yīng)的令牌數(shù)。所述的固定令牌桶深度值最好為一個(gè)最長(zhǎng)數(shù)據(jù)包的長(zhǎng)度所對(duì)應(yīng)的令牌數(shù)。
本發(fā)明的有益效果為本發(fā)明對(duì)令牌桶數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),增加欠費(fèi)機(jī)制,允許預(yù)支令牌,長(zhǎng)數(shù)據(jù)包可以使用欠費(fèi)桶令牌,提高了長(zhǎng)數(shù)據(jù)包通過(guò)率;而且由于令牌桶的深度根據(jù)最大帶寬進(jìn)行變化,因此可以對(duì)流量進(jìn)行整形輸出,兼顧突發(fā)和平穩(wěn)流量,對(duì)短期突發(fā)和長(zhǎng)期平均流量都進(jìn)行控制,保證了流量整形的效果。而且本發(fā)明采用一個(gè)令牌對(duì)應(yīng)多個(gè)字節(jié),并使操作令牌的周期縮短,因而可以減少令牌桶占用的存儲(chǔ)空間。
圖1為本發(fā)明工作原理示意圖。
具體實(shí)施例方式
下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明本發(fā)明提供一種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,構(gòu)造一個(gè)令牌桶,包括令牌桶深度參數(shù)和帶寬參數(shù),令牌桶深度為一個(gè)固定令牌桶深度值加上一個(gè)動(dòng)態(tài)令牌桶深度值,固定令牌桶深度在動(dòng)態(tài)令牌桶深度下方。根據(jù)分配給用戶的流量,周期性地在令牌桶中加上相應(yīng)令牌數(shù)目,同時(shí),根據(jù)用戶實(shí)際的流量從令牌桶減令牌,在減令牌前若令牌桶中的令牌數(shù)小于所述的固定令牌桶深度值時(shí),流量不合法;在下一次添加令牌時(shí),先將固定令牌桶深度值補(bǔ)充滿,然后用戶流量才可以通過(guò)。動(dòng)態(tài)令牌桶深度值可以采用最大帶寬的2倍,并根據(jù)最大帶寬的變化而變化,在帶寬不為0的情況下,至少為5個(gè)最大數(shù)據(jù)包所對(duì)應(yīng)的令牌數(shù)。固定令牌桶深度值可以采用一個(gè)最長(zhǎng)數(shù)據(jù)包的長(zhǎng)度所對(duì)應(yīng)的令牌數(shù)。
本發(fā)明令牌桶數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)為
說(shuō)明如下MAXDataLength最長(zhǎng)數(shù)據(jù)包的長(zhǎng)度,單位令牌;MAXDepth令牌桶最大深度,單位令牌;MAXBand最大帶寬即每循環(huán)添加令牌數(shù)目,單位n字節(jié)/秒本發(fā)明添加令牌改為每八千分之一秒一次,另外,1令牌可以等價(jià)于4字節(jié),那么令牌桶最大深度桶深和每循環(huán)添加令牌數(shù)都減少為原來(lái)的三十二分之一,這樣對(duì)于1G比特?cái)?shù)據(jù)流量,一個(gè)令牌桶只需占用不超過(guò)30bit的存儲(chǔ)空間,這樣相對(duì)于現(xiàn)有技術(shù)的61bit,而極大地減少了令牌桶占用的存儲(chǔ)空間。
所需存儲(chǔ)空間計(jì)算過(guò)程如下因?yàn)?G=109≈230,就是說(shuō)需要用30位二進(jìn)制數(shù)才能表示完全,1G比特是1秒的流量,由于單位時(shí)間為1/8000秒,1/8000G≈217,這里只需要17位表示。每循環(huán)添加令牌數(shù)最多等價(jià)于1/8000G流量,需要17bit二進(jìn)制表示。由于令牌桶最大深度為2倍1G流量,因此需要18bit二進(jìn)制表示。這樣,共需要35bit二進(jìn)制數(shù)表示。又因?yàn)?個(gè)令牌代表4字節(jié),換算為4*8比特,減少為原來(lái)的1/32,令牌桶最大深度桶深和每循環(huán)添加令牌數(shù)還可以分別節(jié)省5bit,所以最終令牌桶占用35-5-5=25bit空間。
這樣,每八千分之一秒添加一個(gè)令牌,1個(gè)令牌代表4字節(jié),即4*8=32比特,這樣每秒添加32比特/(1/8000)=256k比特每秒。以1G比特最大流量看,最大帶寬為1G比特/秒,這樣最大流量為最大帶寬/單字節(jié)帶寬=(1G)/256k<10E4。
假設(shè)1個(gè)令牌等價(jià)于N字節(jié)(Byte),總流量為Fbit/s,帶寬分配的最小粒度為Kbit/s,最大數(shù)據(jù)包長(zhǎng)Mbyte/s,共有S條流需要做CAR。那么MAXBand=F÷K,這表示最大帶寬參數(shù),用來(lái)確定存儲(chǔ)“帶寬參數(shù)”的空間大??;MAXDepth=MAXBand×2;這表示令牌桶最大深度,用來(lái)確定存儲(chǔ)“令牌桶深度”的空間大小。
這兩個(gè)參數(shù)是用來(lái)確定最大存儲(chǔ)空間的,在物理實(shí)現(xiàn)上,不論大小,通常按最大空間靜態(tài)分配,這樣做令牌桶尋址簡(jiǎn)單,便于管理。實(shí)際令牌桶深是隨帶寬參數(shù)變化而變化的,實(shí)際桶深隱含在帶寬參數(shù)中。
下面說(shuō)明一下令牌桶實(shí)際深度,假設(shè)分配給某一條數(shù)據(jù)流的帶寬為B個(gè)最小粒度,即B×Kbit/s,那么,當(dāng)M×5≤(B×K)×2,這表示兩次添加的令牌之和大于5個(gè)最大數(shù)據(jù)包長(zhǎng)時(shí),令牌桶實(shí)際深度=(B×K)×2;否則,令牌桶實(shí)際深度=M×5。
在實(shí)現(xiàn)中,實(shí)際桶深是動(dòng)態(tài)變化的,由于最大帶寬是可以配置的,桶深根據(jù)最大帶寬進(jìn)行變化,這樣可以很好地對(duì)短時(shí)的突發(fā)流量進(jìn)行控制。但是為避免桶深過(guò)小,規(guī)定了令牌桶的最小深度,這里設(shè)為5個(gè)最大數(shù)據(jù)包長(zhǎng),從而可以保證最長(zhǎng)數(shù)據(jù)包的通過(guò),同時(shí)兼顧對(duì)突發(fā)流量的控制,可以平穩(wěn)流量。
這里之所以把令牌桶的深度設(shè)計(jì)成為帶寬的兩倍并且不小于5倍最長(zhǎng)數(shù)據(jù)包,是為了允許各條連接根據(jù)PCR(峰值速率)的不同而具有不同的突發(fā)度。這里2和5可以變,2和5是比較合理的經(jīng)驗(yàn)值。但是,并不是說(shuō)每循環(huán)內(nèi)至少可以連續(xù)突發(fā)5個(gè)最長(zhǎng)包。因?yàn)檫@里有個(gè)欠費(fèi)機(jī)制(DEFICIT),當(dāng)桶中的令牌數(shù)小于等于最大數(shù)據(jù)包長(zhǎng)等價(jià)的令牌數(shù)后,通過(guò)CAR的流量就不合法了,這樣報(bào)文可能被丟棄。
當(dāng)令牌桶中的令牌略小于最大數(shù)據(jù)包長(zhǎng)等價(jià)的令牌時(shí),如果到來(lái)的是一個(gè)短包,CAR就可以通過(guò),如果是一個(gè)長(zhǎng)包,CAR就不通過(guò),這部分帶寬就浪費(fèi)了。這樣造成的后果就是線速發(fā)送時(shí),長(zhǎng)包通過(guò)率很低。線速即物理設(shè)備的物理傳送速率,如千兆以太網(wǎng)的線速就是1Gbit=1000Mbit。本發(fā)明使用欠費(fèi)機(jī)制(DEFICIT),把令牌桶底部提高到一個(gè)最大數(shù)據(jù)包長(zhǎng)深度。各類通信協(xié)議對(duì)最長(zhǎng)數(shù)據(jù)包有不同規(guī)定,如IP是65535byte,以太網(wǎng)(ETH2)最長(zhǎng)為1518byte等等。針對(duì)上述長(zhǎng)包情況,做CAR后流量是合法的,在令牌桶中減去相應(yīng)令牌。此時(shí)的令牌桶中的令牌低于最大包長(zhǎng)等價(jià)的令牌數(shù),差值就是欠費(fèi)數(shù)目,在這個(gè)循環(huán)內(nèi),桶中的令牌數(shù)小于等于最大數(shù)據(jù)包長(zhǎng)等價(jià)的令牌數(shù),以后的流量都是不合法的。在下一個(gè)循環(huán)添加令牌時(shí),必須補(bǔ)充欠費(fèi)。這樣,在線速發(fā)送時(shí),無(wú)論長(zhǎng)包短包,通過(guò)率都不會(huì)降低,而且由于欠費(fèi)發(fā)生在連續(xù)兩個(gè)循環(huán)周期內(nèi),流量還是基本穩(wěn)定的。
可以將令牌桶中最大數(shù)據(jù)包長(zhǎng)等價(jià)的令牌數(shù)對(duì)應(yīng)的桶看作欠費(fèi)桶,其余的桶深部分看作有效桶。如圖1所示,令牌桶中剩余令牌如A所示,這時(shí)有一個(gè)數(shù)據(jù)塊到來(lái),控制器判斷有效桶中有令牌,從有效桶中取出令牌,發(fā)現(xiàn)不足,就從欠費(fèi)桶中提取需要的差值,如B所示。此后,由于有效桶中沒(méi)有令牌了,這個(gè)循環(huán)中,后續(xù)的流量做CAR都不合法。到下個(gè)循環(huán)添加令牌,要先添滿欠費(fèi)桶,剩余部分添加到有效桶中,如C所示。那么此時(shí)的令牌桶如D所示,長(zhǎng)包通過(guò)了,帶寬沒(méi)有浪費(fèi),也沒(méi)有超過(guò)CAR的流量,流量也比較平穩(wěn)。
假設(shè)令牌桶中有500個(gè)令牌,包括380個(gè)欠費(fèi)桶令牌(380*4=1518byte)和120個(gè)有效桶中的令牌(120*4=480byte)。對(duì)短數(shù)據(jù)包64字節(jié)(64/4=16令牌),有欠費(fèi)桶500>16,允許通過(guò),無(wú)欠費(fèi)桶120>16都可以通過(guò);如果此時(shí)來(lái)一個(gè)1000字節(jié)的長(zhǎng)報(bào)文(1000/4=250令牌),如果沒(méi)有欠費(fèi)桶,120<250,就無(wú)法通過(guò),有了欠費(fèi)桶500>250,允許通過(guò)。欠費(fèi)可以下次償還,總的來(lái)說(shuō)不會(huì)超出預(yù)定流量。
上文提到的CAR控制器是“加令牌”方式,實(shí)際操作中還可以用“減令牌”方式構(gòu)造一個(gè)令牌桶,包括令牌桶深度參數(shù)和帶寬參數(shù),令牌桶深度為一個(gè)固定令牌桶深度值加上一個(gè)動(dòng)態(tài)令牌桶深度值,固定令牌桶深度在動(dòng)態(tài)令牌桶深度上方。根據(jù)分配給用戶的流量,周期性地從令牌桶中減去相應(yīng)令牌數(shù)目,同時(shí),根據(jù)用戶實(shí)際的流量往令牌桶加令牌,在加令牌前若令牌桶中的令牌數(shù)大于所述的動(dòng)態(tài)令牌桶深度值時(shí),流量不合法;在下一次減令牌時(shí),先將超過(guò)動(dòng)態(tài)令牌桶深度值的令牌減掉,然后用戶流量才可以通過(guò)。操作原理與“加令牌”方式相同,這里不再贅述。
本發(fā)明對(duì)令牌桶數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì),增加欠費(fèi)機(jī)制,允許預(yù)支令牌,長(zhǎng)數(shù)據(jù)包可以使用欠費(fèi)桶令牌,提高了長(zhǎng)數(shù)據(jù)包通過(guò)率;而且由于令牌桶的深度根據(jù)最大帶寬進(jìn)行變化,因此可以對(duì)流量進(jìn)行整形輸出,兼顧突發(fā)和平穩(wěn)流量,對(duì)短期突發(fā)和長(zhǎng)期平均流量都進(jìn)行控制,保證了流量整形的效果。而且本發(fā)明采用一個(gè)令牌對(duì)應(yīng)多個(gè)字節(jié),并使操作令牌的周期縮短,因而可以減少令牌桶占用的存儲(chǔ)空間。
本領(lǐng)域技術(shù)人員不脫離本發(fā)明的實(shí)質(zhì)和精神,可以有多種變形方案實(shí)現(xiàn)本發(fā)明,以上所述僅為本發(fā)明較佳可行的實(shí)施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運(yùn)用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,其特征在于,包括以下步驟構(gòu)造一個(gè)令牌桶,包括令牌桶深度參數(shù)和帶寬參數(shù),所述的令牌桶深度為一個(gè)固定令牌桶深度值加上一個(gè)動(dòng)態(tài)令牌桶深度值;根據(jù)分配給用戶的流量,周期性地在令牌桶中加上相應(yīng)令牌數(shù)目,同時(shí),根據(jù)用戶實(shí)際的流量從令牌桶減令牌,固定令牌桶深度在動(dòng)態(tài)令牌桶深度下方,在減令牌前若令牌桶中的令牌數(shù)小于所述的固定令牌桶深度值時(shí),流量不合法;在下一次添加令牌時(shí),先將固定令牌桶深度值補(bǔ)充滿,然后用戶流量才可以通過(guò);或者,根據(jù)分配給用戶的流量,周期性從令牌桶中減去相應(yīng)令牌數(shù)目,同時(shí),根據(jù)用戶實(shí)際的流量往令牌桶加令牌,固定令牌桶深度在動(dòng)態(tài)令牌桶深度上方,在加令牌前若令牌桶中的令牌數(shù)大于所述的動(dòng)態(tài)令牌桶深度值時(shí),流量不合法;在下一次減令牌時(shí),先將超過(guò)動(dòng)態(tài)令牌桶深度值的令牌減掉,然后用戶流量才可以通過(guò)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,其特征在于一個(gè)令牌代表至少一個(gè)字節(jié)。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,其特征在于周期性加或減令牌的時(shí)間間隔為不到1秒。
4.根據(jù)權(quán)利要求1、2或3所述的數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,其特征在于所述的動(dòng)態(tài)令牌桶深度值為最大帶寬的若干倍,并根據(jù)最大帶寬的變化而變化。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,其特征在于所述的動(dòng)態(tài)令牌桶深度值為最大帶寬的2倍,并在帶寬不為0的情況下,至少為5個(gè)最大數(shù)據(jù)包所對(duì)應(yīng)的令牌數(shù)。
6.根據(jù)權(quán)利要求4所述的數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,其特征在于所述的固定令牌桶深度值為一個(gè)最長(zhǎng)數(shù)據(jù)包的長(zhǎng)度所對(duì)應(yīng)的令牌數(shù)。
全文摘要
一種數(shù)據(jù)流量約束控制的實(shí)現(xiàn)方法,構(gòu)造一個(gè)令牌桶,包括令牌桶深度參數(shù)和帶寬參數(shù),令牌桶深度為一個(gè)固定令牌桶深度值加上一個(gè)動(dòng)態(tài)令牌桶深度值;根據(jù)分配給用戶的流量在令牌桶中加上相應(yīng)令牌數(shù),同時(shí),根據(jù)用戶實(shí)際流量從令牌桶減令牌,在減令牌前若令牌桶中的令牌數(shù)小于固定令牌桶深度值時(shí)流量不合法;在下一次添加令牌時(shí),先將固定令牌桶深度值補(bǔ)充滿,然后用戶流量才可以通過(guò);也可以采用根據(jù)流量加令牌的方式實(shí)現(xiàn),動(dòng)態(tài)令牌桶深度值根據(jù)最大帶寬而變化,固定令牌桶深度值可為一個(gè)最長(zhǎng)數(shù)據(jù)包的長(zhǎng)度所對(duì)應(yīng)的令牌數(shù)。本發(fā)明可提高長(zhǎng)數(shù)據(jù)包的通過(guò)率,可對(duì)短時(shí)的突發(fā)流量進(jìn)行有效控制,并減小令牌桶占用的存儲(chǔ)空間。
文檔編號(hào)H04L12/56GK1835447SQ20051003369
公開(kāi)日2006年9月20日 申請(qǐng)日期2005年3月16日 優(yōu)先權(quán)日2005年3月16日
發(fā)明者胡容國(guó) 申請(qǐng)人:華為技術(shù)有限公司