專利名稱:計(jì)量器的令牌更新方法
技術(shù)領(lǐng)域:
本發(fā)明涉及QoS流量控制技術(shù)領(lǐng)域,尤其涉及一種計(jì)量器(METER)的令牌更新方
法。
背景技術(shù):
QoS(Quality of Service,服務(wù)質(zhì)量)是網(wǎng)絡(luò)的一種安全機(jī)制,是用來解決網(wǎng)絡(luò)延 遲和阻塞等問題的一種技術(shù)。而計(jì)量器則是QoS領(lǐng)域中的一門重要的技術(shù)。如圖1所示,計(jì)量器可以分為兩大塊,令牌更新部分和計(jì)量部分。其工作原理包括 以下幾點(diǎn)首先,令牌更新部分以固定的速率V(token/SeC)(令牌數(shù)/秒)往令牌桶里加令 牌,桶滿則令牌會(huì)溢出。其次,當(dāng)一個(gè)包(包長為PLen)進(jìn)來時(shí),計(jì)量部分會(huì)根據(jù)包長計(jì)算一下需要的令牌 數(shù),如果當(dāng)前令牌桶內(nèi)有足夠的令牌,那么這個(gè)包順利通過,令牌桶內(nèi)減去相應(yīng)的令牌數(shù)。 如果當(dāng)前令牌桶內(nèi)沒有足夠的令牌,則丟棄該數(shù)據(jù)包。最后,上述這兩部分,即令牌更新部分和計(jì)量部分并行工作,相互聯(lián)系。實(shí)際應(yīng)用中,系統(tǒng)中往往有多個(gè)計(jì)量器同時(shí)工作,對(duì)于多計(jì)量器系統(tǒng)中令牌更新 部分,傳統(tǒng)的做法是采用循環(huán)依次更新各個(gè)計(jì)量器的方法(圖2)。例如圖2中為最大帶寬為IGbps的系統(tǒng)中,當(dāng)4K個(gè)計(jì)量器同時(shí)工作,最小數(shù)據(jù) 包長度為64字節(jié)時(shí),其更新頻率為最大帶寬/最小數(shù)據(jù)包長度=lGbps/(64byte*8)= 1953125次/秒。按照傳統(tǒng)的更新機(jī)制,每秒需要的操作次數(shù)大約為更新頻率*計(jì)量器的個(gè) 數(shù)*2,即為1. 95M*4K*2,每秒鐘需要約為15. 6G次操作(讀和寫)?,F(xiàn)有技術(shù)中的這種采用循環(huán)更新的機(jī)制進(jìn)行令牌更新對(duì)系統(tǒng)的要求較高,隨著計(jì) 量器的數(shù)目的增加,每秒鐘讀寫的次數(shù)也越來越多,當(dāng)計(jì)量器的數(shù)目增加到一定數(shù)量,每秒 讀寫的次數(shù)會(huì)是一個(gè)很大的數(shù)量級(jí)。并且由于系統(tǒng)每秒鐘讀寫的次數(shù)是有極限的,所以存 在嚴(yán)重的系統(tǒng)瓶頸。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種計(jì)量器的令牌更新方法,能夠消除系統(tǒng)的 瓶頸,提高工作效率。為解決上述技術(shù)問題,本方發(fā)明計(jì)量器的令牌更新方法的技術(shù)方案是,當(dāng)數(shù)據(jù)包 進(jìn)來時(shí),觸發(fā)令牌桶的令牌更新。作為本發(fā)明的進(jìn)一步改進(jìn)是,在數(shù)據(jù)包進(jìn)來,觸發(fā)令牌桶的令牌更新之后,還包括 以下步驟,第一步,計(jì)算當(dāng)前和前一次數(shù)據(jù)包進(jìn)來的時(shí)間間隔內(nèi)令牌桶中待增加的令牌數(shù) Δ Update ;第二步,用第一步中計(jì)算的AUpdate加當(dāng)前令牌桶內(nèi)已有的令牌數(shù)Mtoken,計(jì)算可使用的令牌總數(shù)(Δ Update+Mtoken)第三步,將可使用的令牌總數(shù)與零進(jìn)行比較,若當(dāng)前令牌桶內(nèi)的可使用的令牌總 數(shù)小于或者等于零,則丟棄當(dāng)前的數(shù)據(jù)包,向令牌桶內(nèi)增加AUpdate個(gè)令牌數(shù),返回到第 一步,繼續(xù)下一個(gè)數(shù)據(jù)包的處理,若當(dāng)前可使用的令牌總數(shù)大于零,則進(jìn)行第四步;第四步,用第一步中計(jì)算的AUpdate與當(dāng)前數(shù)據(jù)包的包長(PLen)做比較,計(jì)算當(dāng) 前實(shí)際需要向桶內(nèi)增加或者減少的令牌數(shù)目。作為本發(fā)明的進(jìn)一步改進(jìn)是,所述的第四步為當(dāng)Δ Update大于等于包長PLen, 則向桶內(nèi)增加令牌,并且當(dāng)(Mtoken+(AUpdate-PLen))大于或者等于桶深BS,則向桶內(nèi) 增加的令牌數(shù)Δ add為桶深BS減去桶內(nèi)已有的令牌數(shù)Mtoken (BS-Mtoken),并允許數(shù) 據(jù)包通過,若Mtoken+(AUpdate-PLen)小于桶深BS,則向桶內(nèi)增加的令牌數(shù)Δ add為 (AUpdate-PLen),并允許數(shù)據(jù)包通過,當(dāng)AUpdate小于包長PLen,則相應(yīng)從桶內(nèi)減去令 牌,減去的令牌數(shù)Δ sub為(PLen-Δ Update),并允許數(shù)據(jù)包通過。本發(fā)明中,當(dāng)系統(tǒng)存在多個(gè)計(jì)量器時(shí),采用來包觸發(fā)進(jìn)行令牌更新,因此令牌更新 不受計(jì)量器個(gè)數(shù)的影響,從而避免了系統(tǒng)工作的瓶頸,并且將令牌更新步驟和計(jì)量步驟合 二為一,提高工作效率。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明圖1已有技術(shù)中計(jì)量器工作原理示意圖;圖2為已有技術(shù)中計(jì)量器的更新機(jī)制;圖3為本發(fā)明實(shí)施例方法流程示意圖;圖4為本發(fā)明實(shí)施例流程示意圖。
具體實(shí)施例方式本發(fā)明計(jì)量器的令牌更新方法是,當(dāng)發(fā)生數(shù)據(jù)包進(jìn)來時(shí),觸發(fā)令牌桶進(jìn)行令牌更 新。即依靠來包觸發(fā)進(jìn)行令牌更新。如圖3、圖4所示,在觸發(fā)令牌更新之后還可以包括以下步驟,第一步,計(jì)算連續(xù)兩 次數(shù)據(jù)包進(jìn)來的時(shí)間間隔內(nèi)令牌桶中待增加的令牌數(shù)AUpdate15用當(dāng)前數(shù)據(jù)包與前一次數(shù) 據(jù)包進(jìn)來的時(shí)間間隔為△ Time,乘以往令牌桶里加令牌的速度V,得到連續(xù)兩次數(shù)據(jù)包進(jìn) 來的時(shí)間間隔內(nèi)令牌桶中待增加的令牌數(shù)AUpdate= ATime*V。第二步,用第一步中計(jì)算的AUpdate加當(dāng)前令牌桶內(nèi)已有的令牌數(shù)Mtoken,計(jì)算 可使用的令牌總數(shù),Mtoken+ Δ Update = Mtoken+Δ Time*V ;第三步,將可使用的令牌總數(shù)與零進(jìn)行比較,即判斷Mtoken+Δ Update是否大于0,若當(dāng)前令牌桶內(nèi)的可使用的令牌總數(shù)小于或者等于零,則丟棄當(dāng)前的數(shù)據(jù)包,向令牌桶 內(nèi)增加AUpdate個(gè)令牌數(shù),返回到第一步,繼續(xù)下一個(gè)數(shù)據(jù)包的處理,若當(dāng)前令牌桶內(nèi)的 可使用的令牌總數(shù)大于零,則進(jìn)行第四步;第四步,用第一步中計(jì)算的AUpdate與當(dāng)前數(shù)據(jù)包的包長(PLen)做比較,計(jì)算當(dāng) 前實(shí)際需要向桶內(nèi)增加或者減少的令牌數(shù)目。分為兩個(gè)大類一,當(dāng)AUpdate大于等于包長PLen,則向桶內(nèi)增加令牌。這種情況有兩種可能性,1,當(dāng)AUpdate大于等于包長PLen,并且當(dāng)(Mtoken+( Δ Update-PLen))大于或者等于 桶深BS,則向桶內(nèi)增加的令牌數(shù)Δ add為桶深BS減去桶內(nèi)已有的令牌數(shù)Mtoken,并允許 數(shù)據(jù)包通過;2,若(Mtoken+(AUpdate-PLen))小于桶深,則向桶內(nèi)增加的令牌數(shù)Δ add為 Δ Update-PLen,并允許數(shù)據(jù)包通過。二,當(dāng)AUpdate小于包長PLen,則相應(yīng)從桶內(nèi)減去令牌,減去的令牌數(shù)Asub為 (PLen- Δ Updat e),并允許數(shù)據(jù)包通過。通過本發(fā)明,不需要一直循環(huán)更新各個(gè)計(jì)量器的令牌,只需要等到來數(shù)據(jù)包時(shí)觸 發(fā)令牌更新即可,因此與計(jì)量器的數(shù)目無關(guān)。例如,在一個(gè)最大帶寬為IGbps的系統(tǒng)中,不 管有多少個(gè)計(jì)量器,更新頻率為最大帶寬/最小數(shù)據(jù)包長度=IGbps/(64*8) = 1953125, 每秒鐘最多只需要約3. 9M(1. 95M*2)次操作(讀和寫)??梢钥闯?,采用本發(fā)明的計(jì)量器的令牌更新方法,系統(tǒng)每秒鐘操作的次數(shù)與計(jì)量 器的數(shù)目無關(guān),以有效避免傳統(tǒng)機(jī)制在計(jì)量器數(shù)目增大至一定數(shù)量時(shí)所存在的系統(tǒng)瓶頸, 并且可以將令牌更新步驟和計(jì)量步驟合二為一,提高系統(tǒng)的工作效率。
權(quán)利要求
一種計(jì)量器的令牌更新方法,其特征在于當(dāng)數(shù)據(jù)包進(jìn)來時(shí),觸發(fā)令牌桶的令牌更新。
2.根據(jù)權(quán)利要求1所述的計(jì)量器的令牌更新方法,其特征在于在數(shù)據(jù)包進(jìn)來,觸發(fā)令 牌桶的令牌更新之后,還包括以下步驟,第一步,計(jì)算當(dāng)前和前一次數(shù)據(jù)包進(jìn)來的時(shí)間間隔內(nèi)令牌桶中待增加的令牌數(shù) Δ Update ;第二步,用第一步中計(jì)算的Δ Update加當(dāng)前令牌桶內(nèi)已有的令牌數(shù)Mtoken,計(jì)算可使 用的令牌總數(shù)(Δ Update+Mtoken)第三步,將可使用的令牌總數(shù)與零進(jìn)行比較,若當(dāng)前令牌桶內(nèi)的可使用的令牌總數(shù)小 于或者等于零,則丟棄當(dāng)前的數(shù)據(jù)包,向令牌桶內(nèi)增加△ Update個(gè)令牌數(shù),返回到第一步, 繼續(xù)下一個(gè)數(shù)據(jù)包的處理,若當(dāng)前可使用的令牌總數(shù)大于零,則進(jìn)行第四步;第四步,用第一步中計(jì)算的AUpdate與當(dāng)前數(shù)據(jù)包的包長(PLen)做比較,計(jì)算當(dāng)前實(shí) 際需要向桶內(nèi)增加或者減少的令牌數(shù)目。
3.根據(jù)權(quán)利要求2所述的計(jì)量器的令牌更新方法,其特征在于所述的第四步為 當(dāng)AUpdate大于等于包長PLen,并且當(dāng)(Mtoken+( ΔUpdate-PLen))大于或者等于桶 深BS,則向桶內(nèi)增加的令牌數(shù)Δ add為桶深BS減去桶內(nèi)已有的令牌數(shù)Mtoken,并允許 數(shù)據(jù)包通過,若(Mtoken+(AUpdate-PLen))小于桶深,則向桶內(nèi)增加的令牌數(shù)Δ add為 (ΔUpdate-PLen),并允許數(shù)據(jù)包通過;當(dāng)AUpdate小于包長PLen,則相應(yīng)從桶內(nèi)減去令 牌,減去的令牌數(shù)Δ sub為(PLen-Δ Update),并允許數(shù)據(jù)包通過。
4.根據(jù)權(quán)利要求2所述的計(jì)量器的令牌更新方法,其特征在于所述的第一步為用當(dāng) 前數(shù)據(jù)包與前一次數(shù)據(jù)包之間的時(shí)間間隔ATime乘以往令牌桶里加令牌的速度V,得到連 續(xù)兩次數(shù)據(jù)包進(jìn)來的時(shí)間間隔內(nèi)增加的令牌數(shù)△ Update。
全文摘要
本發(fā)明公開了一種計(jì)量器(METER)的令牌更新方法,當(dāng)數(shù)據(jù)包進(jìn)來時(shí),觸發(fā)令牌桶的令牌更新。本發(fā)明在系統(tǒng)存在多個(gè)計(jì)量器時(shí),采用來包觸發(fā)進(jìn)行令牌更新,因此令牌更新不受計(jì)量器個(gè)數(shù)的影響,從而避免了系統(tǒng)工作的瓶頸,并且將令牌更新步驟和計(jì)量步驟合二為一,提高工作效率。
文檔編號(hào)H04L12/56GK101820380SQ20091005691
公開日2010年9月1日 申請(qǐng)日期2009年2月26日 優(yōu)先權(quán)日2009年2月26日
發(fā)明者何運(yùn)鋒, 張榮斌, 李旭光, 李珂, 楊誠 申請(qǐng)人:普然通訊技術(shù)(上海)有限公司;普然技術(shù)公司