欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于令牌桶的報(bào)文限速方法

文檔序號(hào):7622657閱讀:188來(lái)源:國(guó)知局
專利名稱:一種基于令牌桶的報(bào)文限速方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種數(shù)據(jù)網(wǎng)絡(luò)領(lǐng)域中報(bào)文限速的方法,具體地說(shuō),涉及一種數(shù)據(jù)網(wǎng)絡(luò)中采用令牌桶對(duì)報(bào)文速率進(jìn)行限制的硬件實(shí)現(xiàn)方法。
背景技術(shù)
在現(xiàn)有的數(shù)據(jù)網(wǎng)絡(luò)中,由于報(bào)文流量的突發(fā)性,常常會(huì)導(dǎo)致網(wǎng)絡(luò)擁塞。
解決網(wǎng)絡(luò)擁塞的一種方法是,在接收端對(duì)報(bào)文的速率進(jìn)行限制,如果報(bào)文的速率低于規(guī)定的速率,則正常接收?qǐng)?bào)文;如果報(bào)文的速率超過規(guī)定的速率,則將報(bào)文丟棄,或者降低報(bào)文的優(yōu)先級(jí)等。
目前普遍采用的方法是利用令牌桶對(duì)報(bào)文進(jìn)行限速。如圖1所示,系統(tǒng)按規(guī)定的速率不斷地向令牌桶中填充令牌,直到令牌桶裝滿為止。當(dāng)報(bào)文到來(lái)時(shí),將報(bào)文的長(zhǎng)度跟令牌桶中的令牌數(shù)進(jìn)行比較,如果令牌桶中有足夠的令牌,則報(bào)文允許通過,同時(shí)從令牌桶中減去報(bào)文長(zhǎng)度所對(duì)應(yīng)的令牌數(shù);如果令牌桶中的令牌不夠,則將報(bào)文丟棄,或者降低報(bào)文的發(fā)送優(yōu)先級(jí)。
在上述現(xiàn)有方法中,令牌的填充速率限制了接收?qǐng)?bào)文的速率,而令牌桶的容量則對(duì)報(bào)文的突發(fā)流量提供了一定的容納性。在這種方法中,令牌的填充是定時(shí)的,即每隔一定的時(shí)間向令牌桶中添加一定的令牌。這個(gè)時(shí)間是固定的,在大小選擇上會(huì)存在矛盾。如果這個(gè)時(shí)間間隔選擇較小,則系統(tǒng)需要頻繁地填充令牌,系統(tǒng)負(fù)荷較重,且對(duì)于速率較慢的報(bào)文,限速效率很低;如果時(shí)間間隔選擇較大,則對(duì)于速率較快的報(bào)文,有可能失去限速的作用。
華為技術(shù)有限公司的專利《采用令牌漏桶進(jìn)行報(bào)文限流的方法》中國(guó)申請(qǐng)?zhí)?3109091.5的申請(qǐng)?zhí)岢隽艘环N新的令牌填充方式,以報(bào)文到來(lái)作為觸發(fā)條件來(lái)填充令牌。該方法需要根據(jù)系統(tǒng)內(nèi)部的計(jì)時(shí)器計(jì)算當(dāng)前報(bào)文與上一報(bào)文到來(lái)時(shí)的時(shí)間間隔。如果兩個(gè)報(bào)文之間的時(shí)間間隔大于系統(tǒng)內(nèi)部計(jì)時(shí)器的最大范圍,則統(tǒng)計(jì)出來(lái)的時(shí)間間隔是不準(zhǔn)確的。換句話說(shuō),該方法對(duì)兩個(gè)報(bào)文之間的時(shí)間間隔有范圍上的要求,存在一定的局限性。
另外,上述兩類方法均在接收到一個(gè)完整的報(bào)文之后才進(jìn)行報(bào)文的限速。如果報(bào)文的速率超過了規(guī)定的速率,且長(zhǎng)度很長(zhǎng),但依然要接收完整個(gè)報(bào)文才能將報(bào)文丟棄,則不利于減小系統(tǒng)中報(bào)文的轉(zhuǎn)發(fā)延遲時(shí)間。
因此,現(xiàn)有技術(shù)還存在一定的缺陷,而有待于改進(jìn)和發(fā)展。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于令牌桶之報(bào)文限速的方法,針對(duì)現(xiàn)有報(bào)文限速技術(shù)中效率低下,且不利于降低報(bào)文轉(zhuǎn)發(fā)延遲等缺陷,提出一種改進(jìn)的報(bào)文限速方法,將報(bào)文按固定長(zhǎng)度進(jìn)行分段,以數(shù)據(jù)段為單位對(duì)報(bào)文進(jìn)行限速;同時(shí),使用一塊雙口RAM(隨機(jī)訪問存儲(chǔ)器Random AccessMemory)來(lái)統(tǒng)計(jì)報(bào)文中連續(xù)兩個(gè)數(shù)據(jù)段之間的時(shí)間差,以用于計(jì)算令牌桶的填充令牌數(shù),減少系統(tǒng)中報(bào)文的轉(zhuǎn)發(fā)延遲時(shí)間。
本發(fā)明的技術(shù)方案如下
一種基于令牌桶的報(bào)文限速方法,其包括如下步驟A、接收到某一報(bào)文的數(shù)據(jù)段時(shí),觸發(fā)一次填充令牌的操作,向所述令牌桶內(nèi)填充一定數(shù)量的令牌;B、判斷令牌桶內(nèi)的令牌是否超過報(bào)文數(shù)據(jù)段的長(zhǎng)度,如果令牌數(shù)大于或等于數(shù)據(jù)段長(zhǎng)度,則允許該數(shù)據(jù)段通過,并從令牌桶中減去報(bào)文數(shù)據(jù)段長(zhǎng)度所對(duì)應(yīng)的令牌數(shù);C、如果令牌數(shù)小于報(bào)文數(shù)據(jù)段的長(zhǎng)度,則丟棄該數(shù)據(jù)段,該數(shù)據(jù)段所屬的整個(gè)報(bào)文都被丟棄,對(duì)該報(bào)文后續(xù)的數(shù)據(jù)段不再進(jìn)行令牌數(shù)的判斷,并將該報(bào)文的前已通過的數(shù)據(jù)段對(duì)應(yīng)的令牌數(shù)恢復(fù)到所述令牌桶。
所述的方法,其中,所述方法還設(shè)置一存儲(chǔ)器,所述步驟A還包括A1、判斷當(dāng)前數(shù)據(jù)段是否是系統(tǒng)中令牌桶處理的報(bào)文的第一個(gè)數(shù)據(jù)段,如果是,轉(zhuǎn)步驟A5,否則,轉(zhuǎn)步驟A2;A2、從所述存儲(chǔ)器中讀出前一個(gè)數(shù)據(jù)段的接收時(shí)間,根據(jù)當(dāng)前系統(tǒng)計(jì)時(shí)器中的時(shí)間,計(jì)算兩個(gè)數(shù)據(jù)段之間的時(shí)間差;A3、根據(jù)兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差和令牌的填充速率,計(jì)算當(dāng)前需要填充的令牌數(shù),執(zhí)行填充令牌的操作;A4、將當(dāng)前的系統(tǒng)時(shí)間寫進(jìn)所述存儲(chǔ)器,覆蓋原來(lái)的數(shù)據(jù)段接收時(shí)間記錄。
所述的方法,其中,所述數(shù)據(jù)段為固定長(zhǎng)度的,采用系統(tǒng)中所支持的報(bào)文的最小長(zhǎng)度。
所述的方法,其中,還設(shè)置一計(jì)時(shí)器,用于對(duì)系統(tǒng)時(shí)間進(jìn)行計(jì)數(shù),所有的報(bào)文都共享一個(gè)系統(tǒng)計(jì)時(shí)器。
所述的方法,其中,還包括定期對(duì)所述存儲(chǔ)器進(jìn)行掃描,對(duì)于那些與當(dāng)前系統(tǒng)時(shí)間之差已經(jīng)超過時(shí)間差最大值的存儲(chǔ)器單元予以標(biāo)識(shí)。
所述的方法,其中,所述存儲(chǔ)器采用雙口RAM,一口用于時(shí)間差的計(jì)算,一口用于時(shí)間差的掃描。
本發(fā)明所提供的一種基于令牌桶之報(bào)文限速的方法,由于采用對(duì)報(bào)文分段進(jìn)行報(bào)文限速時(shí)的令牌數(shù)比較,可以在較短的時(shí)間內(nèi)識(shí)別出超過規(guī)定速率的報(bào)文并予以丟棄,減小了系統(tǒng)中報(bào)文的轉(zhuǎn)發(fā)延遲時(shí)間;另外,本發(fā)明方法采用一塊雙口RAM記錄報(bào)文數(shù)據(jù)段的接收時(shí)間并定期進(jìn)行掃描,能精確地計(jì)算報(bào)文中相鄰兩個(gè)數(shù)據(jù)段之間的時(shí)間差,從而提高了系統(tǒng)中報(bào)文限速的精確性。


圖1是現(xiàn)有技術(shù)的采用令牌桶進(jìn)行報(bào)文速率限制的方法示意圖;圖2是本發(fā)明提出的報(bào)文速率限制方法的流程圖;圖3是本發(fā)明方法的時(shí)間差計(jì)算的流程圖;圖4是本發(fā)明方法的時(shí)間差掃描的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖,將對(duì)本發(fā)明所述方法進(jìn)行詳細(xì)的說(shuō)明。
本發(fā)明的基于令牌桶之報(bào)文限速的方法,具體來(lái)說(shuō),每接收到報(bào)文中固定長(zhǎng)度的數(shù)據(jù)段時(shí),即觸發(fā)一次填充令牌的操作,向令牌桶內(nèi)填充一定數(shù)量的令牌。然后判斷令牌桶內(nèi)的令牌是否超過報(bào)文數(shù)據(jù)段的長(zhǎng)度,如果令牌數(shù)大于或等于數(shù)據(jù)段長(zhǎng)度,則允許該數(shù)據(jù)段通過,并從令牌桶中減去報(bào)文數(shù)據(jù)段長(zhǎng)度所對(duì)應(yīng)的令牌數(shù);如果令牌數(shù)小于報(bào)文數(shù)據(jù)段的長(zhǎng)度,則丟棄該數(shù)據(jù)段,同時(shí)該數(shù)據(jù)段所屬的整個(gè)報(bào)文都將被丟棄,該報(bào)文后續(xù)的數(shù)據(jù)段不再進(jìn)行令牌數(shù)的判斷。也就是說(shuō),只有報(bào)文的所有數(shù)據(jù)段都允許通過時(shí),該報(bào)文才能通過,這樣就減少了判斷整個(gè)數(shù)據(jù)段對(duì)資源的浪費(fèi),提高了處理效率和速度。
本發(fā)明所述方法的主要步驟如圖2所示,包括(1)接收固定長(zhǎng)度的報(bào)文數(shù)據(jù)段;(2)判斷當(dāng)前數(shù)據(jù)段是否是系統(tǒng)中令牌桶處理的第一個(gè)數(shù)據(jù)段,如果是,轉(zhuǎn)步驟(7),否則,轉(zhuǎn)步驟(3)。
(3)從RAM中讀出前一個(gè)報(bào)文數(shù)據(jù)段的接收時(shí)間;(4)根據(jù)當(dāng)前系統(tǒng)計(jì)時(shí)器中的時(shí)間,計(jì)算兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差;(5)根據(jù)兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差和令牌的填充速率,計(jì)算當(dāng)前需要填充的令牌數(shù),然后填充到令牌桶當(dāng)中;(6)將當(dāng)前的系統(tǒng)時(shí)間寫進(jìn)RAM,覆蓋原來(lái)的報(bào)文數(shù)據(jù)段接收時(shí)間;(7)判斷令牌桶中的令牌是否大于當(dāng)前數(shù)據(jù)段的長(zhǎng)度,如果令牌數(shù)大于或等于數(shù)據(jù)段的長(zhǎng)度,則接收當(dāng)前數(shù)據(jù)段,從令牌桶中減去數(shù)據(jù)段對(duì)應(yīng)的令牌數(shù),并統(tǒng)計(jì)報(bào)文已經(jīng)通過的數(shù)據(jù)長(zhǎng)度;如果令牌數(shù)小于數(shù)據(jù)段的長(zhǎng)度,則丟棄當(dāng)前數(shù)據(jù)段,同時(shí)將整個(gè)報(bào)文丟棄,并進(jìn)行令牌的恢復(fù),即將報(bào)文已經(jīng)通過的數(shù)據(jù)長(zhǎng)度所對(duì)應(yīng)的令牌數(shù)加回到令牌桶中。換言之,被丟棄的報(bào)文不消耗令牌桶中的令牌。
當(dāng)前報(bào)文數(shù)據(jù)段通過之后,需要統(tǒng)計(jì)當(dāng)前數(shù)據(jù)段所屬報(bào)文已經(jīng)通過的數(shù)據(jù)段長(zhǎng)度,同時(shí)判斷當(dāng)前報(bào)文數(shù)據(jù)段是否是報(bào)文的最后一個(gè)數(shù)據(jù)段。如果不是最后一個(gè)數(shù)據(jù)段,則繼續(xù)進(jìn)行下一個(gè)報(bào)文數(shù)據(jù)段的速率限制;如果是最后一個(gè)數(shù)據(jù)段,則結(jié)束當(dāng)前報(bào)文的速率限制,進(jìn)行下一個(gè)報(bào)文的速率限制。只有報(bào)文所有的數(shù)據(jù)段都通過之后,該報(bào)文才算通過。一旦接收到的報(bào)文數(shù)據(jù)段沒有通過令牌桶的控制,則整個(gè)報(bào)文被丟棄,并進(jìn)行令牌恢復(fù),把之前已經(jīng)通過的該報(bào)文的數(shù)據(jù)段所對(duì)應(yīng)的令牌數(shù)加回到令牌桶中,然后結(jié)束當(dāng)前報(bào)文的速率限制,進(jìn)行下一個(gè)報(bào)文的速率限制。
在系統(tǒng)完成初始化之后,令牌桶處于滿狀態(tài),因此第一個(gè)數(shù)據(jù)段到來(lái)時(shí),不需要往令牌桶中添加令牌。
本發(fā)明方法中,報(bào)文中數(shù)據(jù)段的長(zhǎng)度是固定的,建議采用系統(tǒng)中所支持的報(bào)文的最小長(zhǎng)度。如果報(bào)文最后一個(gè)數(shù)據(jù)段的長(zhǎng)度小于L,則以數(shù)據(jù)段的實(shí)際長(zhǎng)度跟令牌桶中的令牌進(jìn)行比較。
本發(fā)明方法在接收到一個(gè)報(bào)文的數(shù)據(jù)段時(shí),需要往令牌桶中填充令牌的數(shù)量等于令牌填充速率乘以當(dāng)前報(bào)文數(shù)據(jù)段與上一個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差。由于令牌桶的容量是有限的,所以每次填充令牌的數(shù)量最大不會(huì)超過令牌桶的容量。以最小的令牌填充速率填滿一個(gè)空的令牌桶所需要的時(shí)間,即為時(shí)間差的最大值。也就是說(shuō),如果兩個(gè)報(bào)文數(shù)據(jù)段之間的真實(shí)時(shí)間差超過了上述的時(shí)間差最大值,則可以用時(shí)間差的最大值來(lái)計(jì)算需要填充的令牌數(shù)。
在統(tǒng)計(jì)兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差時(shí),需要一個(gè)計(jì)時(shí)器,對(duì)系統(tǒng)時(shí)間進(jìn)行計(jì)數(shù)。計(jì)時(shí)器的范圍是有限的,一般采用上述時(shí)間差的最大值。在數(shù)據(jù)網(wǎng)絡(luò)中,為了提供服務(wù)質(zhì)量(QoSQuality of Service)的需要,首先對(duì)報(bào)文進(jìn)行分類,不同類型的報(bào)文具有不同的速率限制。一般系統(tǒng)中具有大量的報(bào)文類型,每種類型的報(bào)文都采用一個(gè)計(jì)時(shí)器在硬件實(shí)現(xiàn)上是不現(xiàn)實(shí)的,因此,本發(fā)明方法中,所有的報(bào)文都共享一個(gè)系統(tǒng)計(jì)時(shí)器。當(dāng)某個(gè)報(bào)文數(shù)據(jù)段到來(lái)時(shí),將該時(shí)刻系統(tǒng)計(jì)時(shí)器的數(shù)值保存在內(nèi)部存儲(chǔ)器中,當(dāng)下一個(gè)報(bào)文數(shù)據(jù)段到來(lái)時(shí),利用當(dāng)前時(shí)刻系統(tǒng)計(jì)時(shí)器中的數(shù)值,計(jì)算兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差,同時(shí)將當(dāng)前時(shí)刻系統(tǒng)計(jì)時(shí)器中的數(shù)值保存在內(nèi)部存儲(chǔ)器中,覆蓋原來(lái)的數(shù)值,用于計(jì)算下一個(gè)時(shí)間差。
由于計(jì)時(shí)器是循環(huán)計(jì)數(shù)的,而兩個(gè)數(shù)據(jù)段之間的時(shí)間差又是任意的,因此,必須定期對(duì)內(nèi)部存儲(chǔ)器進(jìn)行掃描,對(duì)于那些與當(dāng)前系統(tǒng)時(shí)間之差已經(jīng)超過時(shí)間差最大值的存儲(chǔ)器單元予以標(biāo)識(shí)。對(duì)存儲(chǔ)器來(lái)說(shuō),時(shí)間差的計(jì)算與時(shí)間差的掃描是兩個(gè)獨(dú)立的過程,本發(fā)明中存儲(chǔ)器采用雙口RAM,一口用于時(shí)間差的計(jì)算,一口用于時(shí)間差的掃描。
如圖3所示是本發(fā)明中時(shí)間差計(jì)算的流程示意圖。
假設(shè)以最小的令牌填充速率填滿一個(gè)空令牌桶所需要的時(shí)間為Tmax對(duì)應(yīng)n位寬的二進(jìn)制數(shù)。當(dāng)兩個(gè)報(bào)文數(shù)據(jù)段的時(shí)間間隔超過Tmax時(shí),所需計(jì)算的時(shí)間差ΔT即為Tmax。
保存在RAM中的時(shí)間值的格式示意如下

每當(dāng)接收到長(zhǎng)度為L(zhǎng)的報(bào)文數(shù)據(jù)段時(shí),就觸發(fā)一次時(shí)間差的計(jì)算過程。將當(dāng)前系統(tǒng)計(jì)時(shí)器的值T2與保存在RAM中的前一報(bào)文數(shù)據(jù)段時(shí)刻T1進(jìn)行比較,得出兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差ΔT。
在讀出RAM中的T1值后,如果T1的溢出標(biāo)志位為1,表示經(jīng)過時(shí)間差掃描,該時(shí)間差已經(jīng)超過時(shí)間差的最大值,因此ΔT=Tmax。
如果T1尚沒有溢出,則比較T1和T2的進(jìn)位標(biāo)志。如果T1和T2的進(jìn)位標(biāo)志相同,且T2>T1,則表示從T1時(shí)刻開始到當(dāng)前時(shí)刻,系統(tǒng)計(jì)時(shí)器沒有循環(huán)(計(jì)時(shí)器計(jì)到最大值之后復(fù)位到零重新計(jì)時(shí)),則ΔT=T2-T1。如果T1和T2的進(jìn)位標(biāo)志相同,且T2≤T1,則表示從T1時(shí)刻開始到當(dāng)前時(shí)刻,系統(tǒng)計(jì)已經(jīng)循環(huán)了兩次,則ΔT=Tmax。
如果T1和T2的進(jìn)位標(biāo)志不同,則表示從T1時(shí)刻開始到當(dāng)前時(shí)刻,系統(tǒng)計(jì)時(shí)器已經(jīng)循環(huán)過一次。如果T2>T1,則ΔT=Tmax;如果T2≤T1,則ΔT=Tmax+T2-T1。
如圖4所示是本發(fā)明中時(shí)間差掃描的過程示意圖。
時(shí)間差的掃描過程與時(shí)間差的計(jì)算類似,但觸發(fā)時(shí)刻不同。本發(fā)明方法中,在時(shí)間差最大值Tmax周期內(nèi),需要對(duì)RAM的所有單元依次進(jìn)行一次掃描,判斷每個(gè)單元中保存的時(shí)刻與其掃描時(shí)刻相比,時(shí)間差是否超出了最大值Tmax。如果時(shí)間差超出了最大值,則將相應(yīng)的溢出標(biāo)志位置1,表示ΔT=Tmax。
掃描時(shí),將當(dāng)前時(shí)刻T3與保存在RAM中的前一報(bào)文數(shù)據(jù)段時(shí)刻T1進(jìn)行比較。如果T1的溢出標(biāo)志為1,則表示在之前的時(shí)間差掃描時(shí),該單元的時(shí)間差已經(jīng)溢出,當(dāng)前掃描不作任何操作,進(jìn)行下一個(gè)RAM單元的掃描。
如果T1的溢出標(biāo)志為0,則表示時(shí)間差還沒有溢出。比較T1和T3的進(jìn)位標(biāo)志。如果T1和T3的進(jìn)位標(biāo)志相同,且T3>T1,則表示從T1時(shí)刻開始到當(dāng)前時(shí)刻,系統(tǒng)計(jì)時(shí)器沒有循環(huán),則時(shí)間差沒有溢出,結(jié)束當(dāng)前RAM單元的掃描,進(jìn)行下一單元的掃描。如果T1和T3的進(jìn)位標(biāo)志相同,且T3≤T1,則表示從T1時(shí)刻開始到當(dāng)前時(shí)刻,系統(tǒng)計(jì)已經(jīng)循環(huán)了兩次,則時(shí)間差已經(jīng)溢出,將溢出標(biāo)志位置1,然后進(jìn)行下一RAM單元的掃描。
如果T1和T3的進(jìn)位標(biāo)志不同,則表示從T1時(shí)刻開始到當(dāng)前時(shí)刻,系統(tǒng)計(jì)時(shí)器已經(jīng)循環(huán)過一次。如果T3>T1,則時(shí)間差已經(jīng)溢出,將溢出標(biāo)志位置1,然后進(jìn)行下一RAM單元的掃描。如果T3≤T1,則時(shí)間差尚未溢出,結(jié)束當(dāng)前RAM單元的掃描,進(jìn)行下一單元的掃描。
對(duì)每個(gè)RAM單元來(lái)說(shuō),兩次掃描的時(shí)間間隔為Tmax,這樣就保證了根據(jù)一位進(jìn)位標(biāo)志,可以在不超過2×Tmax的時(shí)間內(nèi),及時(shí)判斷出該RAM單元保存的時(shí)間所對(duì)應(yīng)的時(shí)間差是否已經(jīng)溢出。
時(shí)間差的計(jì)算跟報(bào)文數(shù)據(jù)段的到來(lái)時(shí)刻有關(guān),時(shí)間差的掃描時(shí)間是固定的,所以有可能對(duì)存儲(chǔ)器RAM中的同一單元同時(shí)進(jìn)行時(shí)間差計(jì)算和時(shí)間差掃描,即對(duì)雙口RAM的同一地址同時(shí)進(jìn)行讀寫操作。實(shí)際上,時(shí)間差掃描也是一種時(shí)間差計(jì)算,因此,為了避免對(duì)存儲(chǔ)器同一單元同時(shí)進(jìn)行操作,如果時(shí)間差計(jì)算和時(shí)間差掃描同時(shí)發(fā)生,則只進(jìn)行時(shí)間差計(jì)算,忽略時(shí)間差掃描。
本發(fā)明的基于令牌桶之報(bào)文限速的方法,由于采用了對(duì)報(bào)文分段進(jìn)行報(bào)文限速時(shí)的令牌數(shù)比較,在較短的時(shí)間內(nèi)識(shí)別出了超過規(guī)定速率的報(bào)文并予以丟棄,減小了系統(tǒng)中報(bào)文的轉(zhuǎn)發(fā)延遲時(shí)間;同時(shí)本發(fā)明方法還采用一塊雙口RAM記錄報(bào)文數(shù)據(jù)段的接收時(shí)間并定期進(jìn)行掃描,能精確地計(jì)算報(bào)文中相鄰兩個(gè)數(shù)據(jù)段之間的時(shí)間差,從而提高了系統(tǒng)中報(bào)文限速的精確性,提高了計(jì)算效率和速度,運(yùn)算所用資源節(jié)約。
應(yīng)當(dāng)理解的是,上述針對(duì)具體實(shí)施例的描述較為詳細(xì),不能因此而認(rèn)為是對(duì)本發(fā)明專利保護(hù)范圍的限制,本發(fā)明的專利保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種基于令牌桶的報(bào)文限速方法,其包括如下步驟A、接收到某一報(bào)文的數(shù)據(jù)段時(shí),觸發(fā)一次填充令牌的操作,向所述令牌桶內(nèi)填充一定數(shù)量的令牌;B、判斷令牌桶內(nèi)的令牌是否超過報(bào)文數(shù)據(jù)段的長(zhǎng)度,如果令牌數(shù)大于或等于數(shù)據(jù)段長(zhǎng)度,則允許該數(shù)據(jù)段通過,并從令牌桶中減去報(bào)文數(shù)據(jù)段長(zhǎng)度所對(duì)應(yīng)的令牌數(shù);C、如果令牌數(shù)小于報(bào)文數(shù)據(jù)段的長(zhǎng)度,則丟棄該數(shù)據(jù)段,該數(shù)據(jù)段所屬的整個(gè)報(bào)文都被丟棄,對(duì)該報(bào)文后續(xù)的數(shù)據(jù)段不再進(jìn)行令牌數(shù)的判斷,并將該報(bào)文的前已通過的數(shù)據(jù)段對(duì)應(yīng)的令牌數(shù)恢復(fù)到所述令牌桶。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還設(shè)置一存儲(chǔ)器記錄數(shù)據(jù)段的接收時(shí)刻,所述步驟A具體包括A1、判斷當(dāng)前數(shù)據(jù)段是否是系統(tǒng)中令牌桶處理的報(bào)文的第一個(gè)數(shù)據(jù)段,如果是,轉(zhuǎn)步驟A5,否則,轉(zhuǎn)步驟A2;A2、從所述存儲(chǔ)器中讀出前一個(gè)數(shù)據(jù)段的接收時(shí)間,根據(jù)當(dāng)前系統(tǒng)計(jì)時(shí)器中的時(shí)間,計(jì)算兩個(gè)數(shù)據(jù)段之間的時(shí)間差;A3、根據(jù)兩個(gè)報(bào)文數(shù)據(jù)段之間的時(shí)間差和令牌的填充速率,計(jì)算當(dāng)前需要填充的令牌數(shù),執(zhí)行填充令牌的操作;A4、將當(dāng)前的系統(tǒng)時(shí)間寫進(jìn)所述存儲(chǔ)器,覆蓋原來(lái)的數(shù)據(jù)段接收時(shí)間記錄。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)段為固定長(zhǎng)度的,采用系統(tǒng)中所支持的報(bào)文的最小長(zhǎng)度。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還設(shè)置一計(jì)時(shí)器,用于對(duì)系統(tǒng)時(shí)間進(jìn)行計(jì)數(shù),所有的報(bào)文都共享一個(gè)系統(tǒng)計(jì)時(shí)器。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括定期對(duì)所述存儲(chǔ)器進(jìn)行掃描,對(duì)于那些與當(dāng)前系統(tǒng)時(shí)間之差已經(jīng)超過時(shí)間差最大值的存儲(chǔ)器單元予以標(biāo)識(shí)。
6.根據(jù)權(quán)利要求2至5任意權(quán)項(xiàng)所述的方法,其特征在于,所述存儲(chǔ)器采用雙口RAM,一口用于時(shí)間差的計(jì)算,一口用于時(shí)間差的掃描。
全文摘要
本發(fā)明提出了一種基于令牌桶的報(bào)文限速的方法,包括接收到某一報(bào)文的數(shù)據(jù)段時(shí),觸發(fā)一次填充令牌的操作,向所述令牌桶內(nèi)填充一定數(shù)量的令牌;判斷令牌桶內(nèi)的令牌是否超過報(bào)文數(shù)據(jù)段的長(zhǎng)度,如果令牌數(shù)大于或等于數(shù)據(jù)段長(zhǎng)度,則允許該數(shù)據(jù)段通過,并從令牌桶中減去報(bào)文數(shù)據(jù)段長(zhǎng)度所對(duì)應(yīng)的令牌數(shù);如果令牌數(shù)小于報(bào)文數(shù)據(jù)段的長(zhǎng)度,則丟棄該數(shù)據(jù)段,該數(shù)據(jù)段所屬的整個(gè)報(bào)文都被丟棄,對(duì)該報(bào)文后續(xù)的數(shù)據(jù)段不再進(jìn)行令牌數(shù)的判斷,并將該報(bào)文的前已通過的數(shù)據(jù)段對(duì)應(yīng)的令牌數(shù)恢復(fù)到所述令牌桶。本發(fā)明方法由于采用了對(duì)報(bào)文分段進(jìn)行報(bào)文限速時(shí)的令牌數(shù)比較,減小了系統(tǒng)中報(bào)文的轉(zhuǎn)發(fā)延遲時(shí)間;采用雙口RAM記錄報(bào)文數(shù)據(jù)段的接收時(shí)刻并定期進(jìn)行掃描,提高了系統(tǒng)中報(bào)文限速的精確性。
文檔編號(hào)H04L12/56GK1925455SQ20051009374
公開日2007年3月7日 申請(qǐng)日期2005年8月29日 優(yōu)先權(quán)日2005年8月29日
發(fā)明者滕煥勇, 吳中文, 楊平 申請(qǐng)人:中興通訊股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
雅江县| 平利县| 馆陶县| 昆明市| 建始县| 浙江省| 石门县| 韶关市| 闻喜县| 玛沁县| 台北市| 双江| 古蔺县| 昌邑市| 定日县| 松江区| 玉溪市| 益阳市| 祁连县| 海城市| 东丽区| 建宁县| 衡水市| 方山县| 呼伦贝尔市| 读书| 射阳县| 明光市| 大新县| 山东省| 安国市| 广河县| 红原县| 林甸县| 九寨沟县| 乌拉特后旗| 荔浦县| 彭州市| 荆州市| 偃师市| 宜春市|