專利名稱:基于令牌桶算法的接入速率限制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信技術(shù)領(lǐng)域,尤其涉及一種基于令牌桶算法的接入速率限制方法。
背景技術(shù):
在網(wǎng)絡(luò)通信過程中,通常需要在NP(網(wǎng)絡(luò)處理器)對用戶進行流量控制,所謂的流量控制為針對網(wǎng)絡(luò)中傳送的數(shù)據(jù)報文采不同的CAR(接入速率限制)進行傳輸控制。然而,在網(wǎng)絡(luò)接入設(shè)備中,WEB(環(huán)球網(wǎng))用戶需要通過下載的控件定時發(fā)送心跳報文與Portal server(門戶網(wǎng)站服務(wù)器)握手,以確定用戶是否處于連接狀態(tài)。這樣,當(dāng)用戶傳送大流量的心跳報文時,網(wǎng)絡(luò)處理器無法對數(shù)據(jù)報文和心跳報文進行區(qū)別對待,而是將心跳報文和數(shù)據(jù)報文統(tǒng)一作CAR處理,導(dǎo)致用戶最終被強制下線。
目前,寬帶產(chǎn)品大多采用雙色單漏桶算法實現(xiàn)流量控制,該算清是利用一個漏桶來實現(xiàn)CAR處理,所述的單漏桶CAR的基本實現(xiàn)算法為公式(1)Ttoken j-1+(Taij-Taij-1) >=Plenj*Ptoken;其中,Ptoken表示令牌的速率,單位為秒/字節(jié),實際應(yīng)用中可以以網(wǎng)絡(luò)處理器的定時器的Ticks(時鐘周期)為參考單位,即Ptoken的單位為Ticks/字節(jié);Ttoken j-1表示第j-1個包離開時剩余的令牌數(shù),單位為Ticks;Taij、Taij-1分別為第j個、第j-1個包到達時定時器的計時數(shù),單位均為Ticks;Plenj為第j個包的包長,單位為字節(jié)。
公式(1)統(tǒng)一在以Ticks為單位上時,其含義為第j個包到達,如果前一個包離開時剩余的令牌數(shù)(Ttoken j-1)加上當(dāng)前定時器與前一個包通過時定時器的差值(Taij-Taij-1)所得之和不小于通過第j個包所需要的令牌數(shù)(Plenj*Ptoken),則第j個包即可通過。
因此,現(xiàn)有基于單漏桶算法實現(xiàn)的CAR只能基本滿足流量控制的需求,而無法根據(jù)報文的優(yōu)先級實現(xiàn)不同優(yōu)先級報文的CAR。
為此,提出了一種雙漏桶CAR算法,現(xiàn)以普通的三色雙漏桶算法為例對雙漏桶CAR算法進行說明在雙漏桶CAR算法中,是以CIR(流的平均速率)產(chǎn)生令牌,如果有借債,先還借債,剩余部分填充令牌桶,令牌桶容量等于CBS(順從突發(fā)度),超出部分被丟棄。當(dāng)包到達時,比較漏桶中的令牌數(shù)與包的大小,如果包小于漏桶中的令牌數(shù),在漏桶中減少相應(yīng)的令牌數(shù),并將包標記為綠色。如果包大于漏桶中的令牌數(shù),不足部分產(chǎn)生借債,如果累計借債小于EBS(擴展突發(fā)度),則將包標記成黃色,并調(diào)整累計借債為新值。否則,將包標記成紅色,令牌數(shù)和累計借債數(shù)維持不變。EBS>=CBS。當(dāng)EBS=CBS,則退化成兩色,即黃色或綠色,對于綠色或黃色的數(shù)據(jù)包允許進行發(fā)送處理,而對于紅色的數(shù)據(jù)包則不允許進行發(fā)送處理。
因此,所述的雙漏桶CAR算法雖然可以很好地滿足流量控制的需求,但其實現(xiàn)需要消耗大量的微碼資源,從而導(dǎo)致網(wǎng)絡(luò)接入設(shè)備的整機性能下降較大,給網(wǎng)絡(luò)接入設(shè)備的正常工作帶來較大的影響。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于令牌桶算法的接入速率限制方法,以實現(xiàn)針對接入用戶發(fā)生的報文按不同優(yōu)先級作CAR,同時保證網(wǎng)絡(luò)接入設(shè)備的性能下降最小。
本發(fā)明的目的是這樣實現(xiàn)的本發(fā)明所述的一種基于令牌桶算法的接入速率限制方法,包括A、確定令牌桶中可以使用的令牌數(shù)及對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理時需要的令牌數(shù);B、當(dāng)可以使用的令牌數(shù)小于對待處理的數(shù)據(jù)進行轉(zhuǎn)發(fā)處理時需要的令牌數(shù)時,判斷待處理的數(shù)據(jù)包是否為高優(yōu)先級的數(shù)據(jù)包,如果是,則執(zhí)行步驟C,否則,執(zhí)行步驟D;C、計令牌桶中可以使用的令牌數(shù)為負值,并對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,本次處理過程結(jié)束;D、不對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,且本次處理過程結(jié)束。
所述的步驟A包括讀取計時器當(dāng)前時間值,并根據(jù)上一個數(shù)據(jù)包離開時,計時器的時間值及令牌桶中剩余的可以使用的令牌數(shù),確定令牌桶中可以使用的令牌數(shù),即令牌楹中可以使用的令牌數(shù)等于計時器當(dāng)前時間值與上一個數(shù)據(jù)離開時的時間值的差,再加上一個數(shù)據(jù)包離開時令牌桶中剩余的可以使用的令牌數(shù)。
所述的步驟A包括根據(jù)令牌的速率和待處理的數(shù)據(jù)包的包長確定對其進行轉(zhuǎn)發(fā)處理需要的令牌數(shù),即對其進行轉(zhuǎn)發(fā)處理需要的令牌數(shù)等于令牌的速率乘以待處理的數(shù)據(jù)包的包長。
所述的步驟B包括B1、判斷當(dāng)前令牌桶中可以使用的令牌數(shù)是否大于零,如果大于零,則執(zhí)行步驟B3,否則,執(zhí)行步驟B2;B2、判斷待處理的數(shù)據(jù)包是否為高優(yōu)先級的數(shù)據(jù)包,如果是,則執(zhí)行步驟B3,否則,執(zhí)行步驟D;
B3、確定對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理時需要使用的令牌數(shù);B4、從令牌桶中減去步驟B3所確定的令牌數(shù),并判斷令牌桶中剩余的可以使用的令牌數(shù)是否大于零,如果大于零,則對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,否則,執(zhí)行步驟B5;B5、判斷待處理的數(shù)據(jù)包是否為高優(yōu)先級,如果是,則執(zhí)行步驟C,否則,執(zhí)行步驟D。
其中步驟B4所述的如果大于零,則對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,還包括判斷令牌桶中剩余的可以使用的令牌數(shù)是否大于突發(fā)度,即令牌桶高度,如果大于,則令令牌桶中剩余的可以使用的令牌數(shù)等于令牌桶高度,并保存于CAR(承諾接入速率)表中,否則,直接將令牌桶中剩余的可以使用的令牌數(shù)保存于CAR表中。
所述的步驟C包括C1、將令牌桶中可以使用的令牌數(shù)計為負值,并保存于CAR表中;C2、記錄當(dāng)前計時器的計時值,并保存于CAR表中;C3、對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明采用了雙漏桶的基本算法,但僅使用一令牌桶實現(xiàn)流量控制,從而在保證網(wǎng)絡(luò)接入設(shè)備整機性能下降最小的情況下,實現(xiàn)針對接入用戶發(fā)生的報文按不同優(yōu)先級作CAR,以最終實現(xiàn)對接入用戶的流量控制。
圖1為本發(fā)明所述的方法的具體實施流程圖。
具體實施例方式
由于實現(xiàn)雙漏桶根據(jù)網(wǎng)絡(luò)處理器增加讀寫內(nèi)存的次數(shù),對整機性能影響較大,為此,本發(fā)明采用了雙漏桶的基本算法,但是只用一個令牌桶,允許此令牌桶中令牌為負值用反碼表示。
本發(fā)明所述的方法的具體實施方式
參見圖1所示,包括以下步驟步驟11讀取計時器當(dāng)前時間。
步驟12從CAR表中讀取上一個數(shù)據(jù)包離開時計時器的時間值。
步驟13計算計時器當(dāng)前時間與上一個數(shù)據(jù)包離開時計時器的時間值的差值。
步驟14將步驟13所獲得的差值加上一個數(shù)據(jù)包離開時令牌桶中剩余的令牌數(shù),作為令牌桶中可以使用的令牌數(shù)。
步驟15判斷令牌桶中可以使用的令牌數(shù)是否大于零,如果大于零,則執(zhí)行步驟16,否則,執(zhí)行步驟17;步驟16計算出新的待處理的數(shù)據(jù)包需要的令牌數(shù),即采用令牌的速率乘以該數(shù)據(jù)包的包長作為待處理的數(shù)據(jù)包需要的令牌數(shù),并執(zhí)行步驟18。
步驟17判斷新的待處理的數(shù)據(jù)包是否為高優(yōu)先級的數(shù)據(jù)包,如果是,則執(zhí)行步驟18,否則,執(zhí)行步驟27。
步驟18由于網(wǎng)絡(luò)處理器不能實現(xiàn)乘除操作,而所有的乘除操作都由上層軟件計算后變成位移操作來實現(xiàn),因此該步驟需要判斷令牌桶中的左移位值是否大于零,如果是,則執(zhí)行步驟19,將令牌桶中的左移位側(cè)左移待處理的數(shù)據(jù)需要的令處理數(shù)位,并執(zhí)行步驟21,否則執(zhí)行步驟20,按令牌桶中的右移位值右移待處理的數(shù)據(jù)需要的令處理數(shù)位,并執(zhí)行步驟21。
步驟21計算令牌桶中處理完成新的待處理的數(shù)據(jù)包后親的剩余的令牌數(shù)為令牌桶中可以使用的令牌數(shù)減去待處理的數(shù)據(jù)包需要的令牌數(shù)。
步驟22判斷新的剩余的令牌數(shù)是否大于零,如果大于零,則執(zhí)行步驟24,否則,執(zhí)行步驟23;
步驟23判斷上述待處理的數(shù)據(jù)包是否高優(yōu)先級的數(shù)據(jù)包,如果是,則執(zhí)行步驟24,否則,執(zhí)行步驟27。
步驟24判斷新的剩余的令牌數(shù)是否大于突發(fā)度,即令牌桶高度值,如果大于,則執(zhí)行步驟25,否則,執(zhí)行步驟26;步驟25令新的剩余的令牌數(shù)等于令牌桶高度值,并執(zhí)行步驟26;步驟26將確定的剩余的令牌數(shù)存入CAR表中,并執(zhí)行步驟28。
步驟27因令牌數(shù)不夠,將新的待處理的數(shù)據(jù)包丟棄。
步驟28將當(dāng)前的計時器時間值作為Departure_Time_stam(當(dāng)前數(shù)據(jù)包離開時間)存入CAR表中,即作為數(shù)據(jù)包離開時間保存于CAR表中。
步驟29轉(zhuǎn)發(fā)新的待處理的數(shù)據(jù)包。
經(jīng)過上述步驟11至步驟29的處理過程,實現(xiàn)了對網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包的帶優(yōu)先級的CAR限制,且采用的為單漏桶,保證了處理過程的實現(xiàn)對整機性能的影響較小。
權(quán)利要求
1.一種基于令牌桶算法的接入速率限制方法,其特征在于包括A、確定令牌桶中可以使用的令牌數(shù)及對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理時需要的令牌數(shù);B、當(dāng)可以使用的令牌數(shù)小于對待處理的數(shù)據(jù)進行轉(zhuǎn)發(fā)處理時需要的令牌數(shù)時,判斷待處理的數(shù)據(jù)包是否為高優(yōu)先級的數(shù)據(jù)包,如果是,則執(zhí)行步驟C,否則,執(zhí)行步驟D;C、計令牌桶中可以使用的令牌數(shù)為負值,并對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,本次處理過程結(jié)束;D、不對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,且本次處理過程結(jié)束。
2.根據(jù)權(quán)利要求1所述的基于令牌桶算法的接入速率限制方法,其特征在于,所述的步驟A包括讀取計時器當(dāng)前時間值,并根據(jù)上一個數(shù)據(jù)包離開時,計時器的時間值及令牌桶中剩余的可以使用的令牌數(shù),確定令牌桶中可以使用的令牌數(shù),即令牌楹中可以使用的令牌數(shù)等于計時器當(dāng)前時間值與上一個數(shù)據(jù)離開時的時間值的差,再加上一個數(shù)據(jù)包離開時令牌桶中剩余的可以使用的令牌數(shù)。
3.根據(jù)權(quán)利要求1或2所述的基于令牌桶算法的接入速率限制方法,其特征在于,所述的步驟A包括根據(jù)令牌的速率和待處理的數(shù)據(jù)包的包長確定對其進行轉(zhuǎn)發(fā)處理需要的令牌數(shù),即對其進行轉(zhuǎn)發(fā)處理需要的令牌數(shù)等于令牌的速率乘以待處理的數(shù)據(jù)包的包長。
4.根據(jù)權(quán)利要求1所述的基于令牌桶算法的接入速率限制方法,其特征在于,所述的步驟B包括B1、判斷當(dāng)前令牌桶中可以使用的令牌數(shù)是否大于零,如果大于零,則執(zhí)行步驟B3,否則,執(zhí)行步驟B2;B2、判斷待處理的數(shù)據(jù)包是否為高優(yōu)先級的數(shù)據(jù)包,如果是,則執(zhí)行步驟B3,否則,執(zhí)行步驟D;B3、確定對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理時需要使用的令牌數(shù);B4、從令牌桶中減去步驟B3所確定的令牌數(shù),并判斷令牌桶中剩余的可以使用的令牌數(shù)是否大于零,如果大于零,則對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,否則,執(zhí)行步驟B5;B5、判斷待處理的數(shù)據(jù)包是否為高優(yōu)先級,如果是,則執(zhí)行步驟C,否則,執(zhí)行步驟D。
5.根據(jù)權(quán)利要求4所述的基于令牌桶算法的接入速率限制方法,其特征在于,步驟B4所述的如果大于零,則對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理,還包括判斷令牌桶中剩余的可以使用的令牌數(shù)是否大于突發(fā)度,即令牌桶高度,如果大于,則令令牌桶中剩余的可以使用的令牌數(shù)等于令牌桶高度,并保存于CAR(承諾接入速率)表中,否則,直接將令牌桶中剩余的可以使用的令牌數(shù)保存于CAR表中。
6.根據(jù)權(quán)利要求1或4所述的基于令牌桶算法的接入速率限制方法,其特征在于,所述的步驟C包括C1、將令牌桶中可以使用的令牌數(shù)計為負值,并保存于CAR表中;C2、記錄當(dāng)前計時器的計時值,并保存于CAR表中;C3、對待處理的數(shù)據(jù)包進行轉(zhuǎn)發(fā)處理。
全文摘要
本發(fā)明涉及一種基于令牌桶算法的接入速率限制方法。該方法的核心為當(dāng)可以使用的令牌數(shù)小于對待處理的數(shù)據(jù)進行轉(zhuǎn)發(fā)處理時需要的令牌數(shù)時,根據(jù)待處理的數(shù)據(jù)包是否為高優(yōu)先級的數(shù)據(jù)包對其進行相應(yīng)的處理,如果是對其進行轉(zhuǎn)發(fā)處理,并計令牌桶中可以使用的令牌數(shù)為負值,否則,丟棄待處理的數(shù)據(jù)包。本發(fā)明采用了雙漏桶的基本算法,但僅使用一令牌桶實現(xiàn)流量控制,從而在保證網(wǎng)絡(luò)接入設(shè)備整機性能下降最小的情況下,實現(xiàn)針對接入用戶發(fā)生的報文按不同優(yōu)先級作CAR,以最終實現(xiàn)對接入用戶的流量控制。
文檔編號H04Q3/64GK1601963SQ0313501
公開日2005年3月30日 申請日期2003年9月26日 優(yōu)先權(quán)日2003年9月26日
發(fā)明者侯超, 龔鈞 申請人:華為技術(shù)有限公司