>[0058]步驟102:基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列。
[0059]在這里,當步驟101中計算出所有M個隊列的各自的本次應分發(fā)令牌數(shù)后,可以按照各個隊列的本次應分發(fā)令牌數(shù)進行排序,并基于排序結果確定全部隊列中的最高優(yōu)先級隊列,全部隊列中的最高優(yōu)先級隊列具有最大的本次應分發(fā)令牌數(shù)。
[0060]比如,按照取值從大到小的順序,對各個隊列的本次應分發(fā)令牌數(shù)進行排序,并將排位第一的隊列確定為全部隊列中的最高優(yōu)先級隊列?;蛘?,按照取值從小到大的順序,對各個隊列的本次應分發(fā)令牌數(shù)進行排序,并將排位最后的隊列確定為全部隊列中的最高優(yōu)先級隊列。
[0061]步驟103:基于全部隊列中的最高優(yōu)先級隊列的本次應分發(fā)令牌數(shù),為全部隊列中的最高優(yōu)先級隊列分發(fā)令牌。
[0062]當步驟102確定出全部隊列中的最高優(yōu)先級隊列之后,基于步驟101計算出的全部隊列中的最高優(yōu)先級隊列的本次應分發(fā)令牌數(shù),為全部隊列中的最高優(yōu)先級隊列分發(fā)令牌,而其他隊列暫時不分發(fā)令牌。然后,將全部隊列中的最高優(yōu)先級隊列的上次令牌分發(fā)時間更新為當前時間,返回步驟101執(zhí)行下一輪的令牌分發(fā)過程,并循環(huán)執(zhí)行本方法流程。
[0063]在一個實施方式中,該方法還預先包括:
[0064]確定隊列的當前可用令牌數(shù);將當前可用令牌數(shù)為非負數(shù)的隊列設置為不分發(fā)令牌。因當前可用令牌數(shù)為非負,即對于該隊列而言仍存在可使用的令牌,無需添加新的令牌就可以完成報文的轉發(fā),那么該隊列被設置為不分發(fā)令牌的隊列,在本輪不執(zhí)行令牌分發(fā)操作。當開始執(zhí)行下輪分發(fā)令牌時,如果發(fā)現(xiàn)因當前可用令牌數(shù)為非負數(shù)而被設置為不分發(fā)令牌的隊列的當前可用令牌數(shù)變?yōu)樨摂?shù),將該隊列設置為分發(fā)令牌,并參照圖1所示流程參與執(zhí)行隊列令牌分發(fā)。
[0065]在一個實施方式中,該方法還預先包括:將CIR為零的隊列設置為不分發(fā)令牌。因CIR為零被設置為不分發(fā)令牌的隊列,在本輪不執(zhí)行令牌分發(fā)操作。當開始執(zhí)行下輪分發(fā)令牌時,如果發(fā)現(xiàn)因CIR為零而本次不分發(fā)令牌的隊列的當前CIR不再為零,將該隊列設置為分發(fā)令牌,并參照圖1所示流程參與執(zhí)行隊列令牌分發(fā)。
[0066]在一個實施方式中,該方法還包括:
[0067]設置N個CIR區(qū)間(優(yōu)選地,N個相鄰的CIR區(qū)間),基于每個隊列的CIR,確定每個隊列所處的CIR區(qū)間,其中N為2以上的正整數(shù);
[0068]步驟102中基于每個隊列的本次應分發(fā)令牌數(shù),確定全部隊列中的最高優(yōu)先級隊列具體包括:在屬于同一 CIR區(qū)間內(nèi)的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定每個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列;在各個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定所述全部隊列中的最高優(yōu)先級隊列。
[0069]圖2為本發(fā)明第一實施方式的分發(fā)令牌的方法流程圖。
[0070]如圖2所示,該方法包括:
[0071]步驟201:設置N個相鄰的CIR區(qū)間,基于每個隊列的CIR,確定每個隊列所處的CIR區(qū)間,其中N為至少為2的正整數(shù)。
[0072]步驟202:基于每個隊列的CIR及其上次令牌分發(fā)時間,確定每個隊列的本次應分發(fā)令牌數(shù)。
[0073]步驟203:在屬于同一 CIR區(qū)間內(nèi)的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定每個CIR區(qū)間內(nèi)的最高優(yōu)先級隊列。
[0074]步驟204:在各個CIR區(qū)間的最高優(yōu)先級的隊列之間,基于本次應分發(fā)令牌數(shù)進行排序,并確定全部隊列中的最高優(yōu)先級隊列。
[0075]步驟205:基于全部隊列中的最高優(yōu)先級隊列的本次應分發(fā)令牌數(shù),為全部隊列的最高優(yōu)先級隊列分發(fā)令牌。
[0076]下面舉出一個具體實例詳細描述圖2所示流程。
[0077]比如,假定有3(即N等于3)個CIR區(qū)間,分別為(O, 1M]、(1M,10M]和(10M, 20M],其中 IM= 100Kbpsο 隊列一共有 12 個,分別為 L0、L1、L2、L3、M0、M1、M2、M3、H0、H1、H2 和H3。LO 的 CIR 為 0.5M ;L1 的 CIR 為 0.4M ;L2 的 CIR 為 0.6M ;L3 的 CIR 為 0.8M ;M0 的 CIR為 2M ;M1 的 CIR 為 3M ;M2 的 CIR 為 4M ;M3 的 CIR 為 5M ;H0 的 CIR 為 12M ;H1 的 CIR 為 13M ;H2 的 CIR 為 14M ;H3 的 CIR 為 15M。
[0078]可見,H0、H1、H2和 H3 的 CIR 屬于區(qū)間(10M, 20M] ;M0、M1、M2 和 M3 的 CIR 屬于區(qū)間(1M, 10M] ;L0、L1、L2 和 L3 的 CIR 屬于區(qū)間(O, 1M]。
[0079]對于區(qū)間(0,1M],分別確定L0、L1、L2和L3的本次應分發(fā)令牌數(shù)(Add),當前時間為T +.^ 1 current?
[0080]可以得到:
[0081]LO 的 Add』=(T current-Tlast_L0) X0.5M ;其中 Tlast ui為 LO 上次令牌分發(fā)時間;
[0082]LI 的 Add_u=(T ?t_Tlast u) X0.4M ;其中 Tlast u為 LI 上次令牌分發(fā)時間;
[0083]L2 的 Add』=(T current_Tlast L2) X0.6M ;其中 Tlast L2為 L2 上次令牌分發(fā)時間;
[0084]L3 的 AdcU3=(T ?t_Tlast』3) X0.SM ;其中 Tlast u為 L3 上次令牌分發(fā)時間。
[0085]對于區(qū)間(1M,10M],分別確定M0、M1、M2和M3的本次應分發(fā)令牌數(shù)(Add),當前時間為Tammt;可以得到:
[0086]MO 的 Add_MQ=(T curre?t-Tlast_?o) X 2M ;其中 Tlastjc^ MO 上次令牌分發(fā)時間;
[0087]Ml 的 Add_M1=(T current-TlastJ1) X3M ;其中 Tlast M1 為 Ml 上次令牌分發(fā)時間;
[0088]M2 的 AdcU=(T current_Tlast M2) X4M ;其中 Tlastj2S M2 上次令牌分發(fā)時間;
[0089]M3 的 Add_M3=(T current-TlastJ3) X5M ;其中 Tlast M3為 M3 上次令牌分發(fā)時間。
[0090]對于區(qū)間(10M,20M],分別確定HO、Hl、H2和H3的本次應分發(fā)令牌數(shù)(Add),當前時間為Tam6nt;可以得到:
[0091]HO 的 Add』。=(T current-TlastJo) X 12M ;其中 Tlastjc^ HO 上次令牌分發(fā)時間;
[0092]Hl 的 Add』=(T current-TlastJi) X 13Μ ;其中 Tlast H1 為 Hl 上次令牌分發(fā)時間;
[0093]H2 的 Add_H2= (T current-TlastJ2) X HM ;其中 TlastjA H2 上次令牌分發(fā)時間;
[0094]H3 的 Add_H3= (T current-TlastJ3) X 15M ;其中 Tlast』3為 H3 上次令牌分發(fā)時間。
[0095]在屬于區(qū)間(0,1M]的L0、L1、L2和L3之間,基于本次應分發(fā)令牌數(shù)進行排序,并基于排序結果確定各個隊列在區(qū)間(0,1M]內(nèi)的優(yōu)先級,假定AdcDAdUAdUAdcLu,那么:L0在區(qū)間(0,1M]內(nèi)具有最高優(yōu)先級,LI在區(qū)間(0,1M]內(nèi)具有第二優(yōu)先級,L2在區(qū)間(0,1M]內(nèi)具有第三優(yōu)先級,L3在區(qū)間(0,1M]內(nèi)具有第四優(yōu)先級。
[0096]在屬于區(qū)間(ΙΜ,ΙΟΜ]的MO、Ml、M2和M3之間,基于本次應分發(fā)令牌數(shù)進行排序,并基于排序結果確定各個隊列在區(qū)間(1Μ, 10Μ]內(nèi)的優(yōu)先級,假定Add_M(l>Add_M1>Add_PAddj,那么:M0在區(qū)間(1M,10M]具有最高優(yōu)先級,Ml在區(qū)間(1M,10M]具有第二優(yōu)先級,M2在區(qū)間(1M,10M]具有第三優(yōu)先級,M3在區(qū)間(1M,10M]具有第四優(yōu)先級。
[0097]在屬于區(qū)間(10M,20M]的HO、HU H2和H3之間,基于本次應分發(fā)令牌數(shù)進行排序,并基于排序結果確定各個隊列在區(qū)間(10M, 20M]內(nèi)的優(yōu)先級,假定Add_H(l>Add_H1>Add_H2>Add_H3,那么:H0在區(qū)間(10M,20M]具有最高優(yōu)先級,Hl在區(qū)間(10Μ,20Μ]具有第二優(yōu)先級,Η2在區(qū)間(10Μ,20Μ]具有第三優(yōu)先級,Η3在區(qū)間(10Μ,20Μ]具有第四優(yōu)先級。
[0098]然后,在各個CIR區(qū)間的最高優(yōu)先級的隊列之間(即HO、MO和LO之間),分別基于Η0、Μ0和LO的本次應分發(fā)令牌數(shù)進行排序,并基于排序結果確定全部隊列中的最高優(yōu)先級隊列,其中本次應分發(fā)令牌數(shù)越大的隊列具有越高的優(yōu)先級。比如,假如AdcU分別大于AdcLui以及Add_H(l,則MO為全部隊列的最高優(yōu)先級隊列,并在步驟103中為MO分發(fā)令牌數(shù)Add_MOo再比如,假如AdcLui分別大于Add_M(!以及Add_H(l,則LO為全部隊列中的最高優(yōu)先級隊列,并在步驟103中為LO分發(fā)令牌數(shù)AdcLui。