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