一種分發(fā)令牌的方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明屬于流量控制技術領域,特別是一種分發(fā)令牌的方法和裝置。
【背景技術】
[0002]流量整形(Traffic Shaping,TS)是一種主動控制流量輸出速率的技術。網(wǎng)絡上的應用種類繁多,為了保障主要應用的良好運作,需要在網(wǎng)絡上進行流量控制,如通用流量整形(Generic Traffic Shaping,GTS)。
[0003]目前,通常采用令牌桶算法實現(xiàn)GTS。在令牌桶算法中,按照報文的允許轉發(fā)速率(Committed Informat1n Rate,CIR)在令牌桶中添加令牌,即每隔1/CIR時間在令牌桶中添加一個令牌。當令牌桶加滿的時候,新產(chǎn)生的令牌將被丟棄。當令牌桶中有足夠的令牌時,報文可以被發(fā)送;當令牌桶中的令牌不足時,報文不能被發(fā)送,只有等到令牌桶中生成新的令牌時,報文才可以被發(fā)送。通過令牌桶算法保證報文輸出速率小于等于令牌生成速度,從而達到限制流量的目的。
[0004]在現(xiàn)有技術的GTS中,當有多個報文隊列需要分發(fā)令牌時,基于相同的時間間隔周期性地為各個隊列輪詢分發(fā)令牌。然而,多個隊列之間可能存在CIR差異,對于CIR較大的隊列,輪詢到時需要分發(fā)的令牌數(shù)目較多,可能造成分發(fā)令牌操作突發(fā),對于CIR較小的隊列,輪詢到時可能根本不需要分發(fā)令牌,從而導致分發(fā)令牌操作閑置,這種無差異化的輪詢機制可能導致更需要分發(fā)令牌的隊列不能得到優(yōu)先處理,因此存在令牌分發(fā)效率不高的缺點。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提出一種分發(fā)令牌的方法和裝置,從而提高令牌分發(fā)效率。
[0006]本發(fā)明實施方式的技術方案如下:
[0007]根據(jù)本發(fā)明實施方式的一方面,提出一種分發(fā)令牌的方法,該方法包括如下步驟:
[0008]基于每個隊列的CIR及其上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù);
[0009]基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列;
[0010]基于所述全部隊列中的最高優(yōu)先級隊列的本次應分發(fā)令牌數(shù),為所述全部隊列中的最高優(yōu)先級隊列分發(fā)令牌。
[0011 ] 優(yōu)選地,該方法還包括:
[0012]設置N個CIR區(qū)間,基于每個隊列的CIR確定每個隊列所處的CIR區(qū)間,其中N為2以上的正整數(shù);
[0013]所述基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列包括:
[0014]在屬于同一 CIR區(qū)間內(nèi)的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定每個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列;
[0015]在各個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定所述全部隊列中的最高優(yōu)先級隊列。
[0016]優(yōu)選地,該方法還包括:
[0017]設置N個CIR區(qū)間,其中N為2以上的正整數(shù),其中每個CIR區(qū)間具有CIR設定值;
[0018]所述基于每個隊列的CIR及每個隊列的上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù)包括:
[0019]基于每個隊列的CIR確定每個隊列所處的CIR區(qū)間,并基于所確定的CIR區(qū)間的CIR設定值及每個隊列的上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù);
[0020]所述基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列包括:
[0021]在屬于同一 CIR區(qū)間內(nèi)的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定每個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列;
[0022]在各個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定所述全部隊列中的最高優(yōu)先級隊列。
[0023]優(yōu)選地,所述CIR設定值為該CIR區(qū)間的最大值或平均值。
[0024]優(yōu)選地,所述上次令牌分發(fā)時間為Tlast,當前時間為Tmt;所述本次應分發(fā)令牌數(shù)為Md ;所述確定本次應分發(fā)令牌數(shù)為:Add = (Tcurrent-Tlast) XCIRo
[0025]優(yōu)選地,該方法還預先包括:
[0026]確定每個隊列的當前可用令牌數(shù),并將當前可用令牌數(shù)為非負數(shù)的隊列設置為不分發(fā)令牌;和/或
[0027]將CIR為零的隊列設置為不分發(fā)令牌。
[0028]根據(jù)本發(fā)明實施方式的另一方面,提出一種分發(fā)令牌的裝置,該裝置包括:
[0029]令牌數(shù)計算模塊,用于基于每個隊列的CIR及每個隊列的上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù);
[0030]優(yōu)先級確定模塊,用于基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列;
[0031]令牌分發(fā)模塊,用于基于所述全部隊列中的最高優(yōu)先級隊列的本次應分發(fā)令牌數(shù),為所述全部隊列中的最高優(yōu)先級隊列分發(fā)令牌。
[0032]優(yōu)選地,優(yōu)先級確定模塊,用于設置N個CIR區(qū)間,基于每個隊列的CIR確定每個隊列所處的CIR區(qū)間,其中N為2以上的正整數(shù);在屬于同一 CIR區(qū)間內(nèi)的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定每個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列;在各個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定所述全部隊列中的最高優(yōu)先級隊列。
[0033]優(yōu)選地,優(yōu)先級確定模塊,用于設置N個CIR區(qū)間,其中N為2以上的正整數(shù),其中每個CIR區(qū)間具有CIR設定值;
[0034]令牌數(shù)計算模塊,用于基于每個隊列的CIR確定每個隊列所處的CIR區(qū)間,并基于所確定的CIR區(qū)間的CIR設定值及每個隊列的上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù);
[0035]優(yōu)先級確定模塊,用于在屬于同一 CIR區(qū)間內(nèi)的隊列之間,基于本次應分發(fā)令牌數(shù)進彳丁排序,并確定每個CIR區(qū)間內(nèi)的最尚優(yōu)先級隊列;在各個CIR區(qū)間內(nèi)的最尚優(yōu)先級的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定所述全部隊列中的最高優(yōu)先級隊列。
[0036]優(yōu)選地,所述CIR設定值為該CIR區(qū)間的最大值或平均值。
[0037]優(yōu)選地,所述上次令牌分發(fā)時間為Tlast,當前時間為Tmt;所述本次應分發(fā)令牌數(shù)為Md ;所述確定本次應分發(fā)令牌數(shù)為:Add = (Tcurrent-Tlast) XCIRo
[0038]還包括:
[0039]設置模塊,用于確定每個隊列的當前可用令牌數(shù),并將當前可用令牌數(shù)為非負數(shù)的隊列設置為不分發(fā)令牌;和/或,用于將CIR為零的隊列設置為不分發(fā)令牌。
[0040]在本發(fā)明中,基于每個隊列的CIR及其上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù);基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列;基于全部隊列中的最高優(yōu)先級隊列的本次應分發(fā)令牌數(shù),為全部隊列中的最高優(yōu)先級隊列分發(fā)令牌。可見,本發(fā)明不再是無差異化的周期性輪詢分配令牌,而是根據(jù)各個隊列的上次令牌分發(fā)時間和CIR配置屬性確定出優(yōu)先需要分發(fā)令牌的隊列,并主動選擇更需要分發(fā)令牌的隊列進行令牌分發(fā)操作,從而提高令牌分發(fā)效率。
[0041]而且,本發(fā)明實施方式中,CIR較大的隊列更可能具有較高優(yōu)先級,因此更有機會分發(fā)令牌,從而有效避免輪詢機制中的令牌數(shù)突發(fā);CIR較小的隊列更可能具有較低優(yōu)先級,從而有效避免輪詢機制中的分發(fā)令牌操作閑置。
[0042]還有,在本發(fā)明實施方式中,對于當前令牌數(shù)非負及CIR為零的隊列,不進行令牌分發(fā)動作,從而進一步提高分發(fā)令牌的效率。
【附圖說明】
[0043]圖1為本發(fā)明分發(fā)令牌的方法流程圖;
[0044]圖2為本發(fā)明第一實施方式的分發(fā)令牌的方法流程圖;
[0045]圖3為本發(fā)明第二實施方式的分發(fā)令牌的方法流程圖;
[0046]圖4為本發(fā)明分發(fā)令牌的裝置結構圖;
[0047]圖5為本發(fā)明第三實施方式的分發(fā)令牌的裝置結構圖。
【具體實施方式】
[0048]為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面結合附圖對本發(fā)明作進一步的詳細描述。
[0049]在現(xiàn)有技術中,當有多個(大于一個)隊列需要分發(fā)令牌時,由于各個隊列的CIR差異,周期性輪詢機制導致隊列的加令牌動作變得不均勻。本發(fā)明實施方式不再是無差異化的周期性輪詢分配令牌,而是差異化對待各個隊列,根據(jù)各個隊列的上次令牌分發(fā)時間和CIR配置屬性確定出優(yōu)先需要分發(fā)令牌的隊列,并主動選擇優(yōu)先需要分發(fā)令牌的隊列進行令牌分發(fā)操作。
[0050]圖1為本發(fā)明分發(fā)令牌的方法流程圖,該方法適用于具有多個隊列的應用環(huán)境。[0051 ] 如圖1所示,該方法包括:
[0052]步驟101:基于每個隊列的CIR及每個隊列的上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù)。
[0053]在這里,在當前時間點處,分別基于每個隊列的CIR及該隊列的上次令牌分發(fā)時間,計算每個隊列的本次應分發(fā)令牌數(shù)。
[0054]比如,假設有M個隊列,M為至少為2的正整數(shù),當前時間為T—。
[0055]對于第m個隊列,上次令牌分發(fā)時間為Tlast m,本次應分發(fā)令牌數(shù)為Add_m ;CIR為CIR_m,m的取值范圍為[1,M];
[0056]那么,第m個隊列的本次應分發(fā)令牌數(shù)為:Add_m = (Tcurrent-Tlast m) X CIR_m ;
[0057]基于上述算法,可以計算出M個隊列的各自的本次應分發(fā)令牌數(shù)。
當前第1頁
1 
2 
3 
4