專利名稱:一種對(duì)多用戶進(jìn)行qos調(diào)度的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊技術(shù)領(lǐng)域,特別涉及一種對(duì)多用戶進(jìn)行QOS(Quality of Service服務(wù)質(zhì)量)調(diào)度的方法和裝置。
背景技術(shù):
QOS的調(diào)度算法有很多種,其中RR(Round Robin-循環(huán))最簡(jiǎn)單,即所有用戶一個(gè)一個(gè)輪著來(lái),大家的機(jī)會(huì)都是均等的,它適合于所有用戶的重要性和允許的流量完全相同的情況。對(duì)于更高級(jí)更靈活的應(yīng)用,諸如各個(gè)用戶的權(quán)重不一樣,或者允許的流量不相同,甚至各個(gè)隊(duì)列內(nèi)部支持不同優(yōu)先級(jí)的隊(duì)列,這些隊(duì)列之間有嚴(yán)格的優(yōu)先級(jí)等情況時(shí),RR是無(wú)能為力的。因此針對(duì)各種應(yīng)用情況,出現(xiàn)了各種各樣的調(diào)度算法。比如,針對(duì)各個(gè)用戶的權(quán)重不一樣的情況,出現(xiàn)了WRR(Weighted Round Robin-加權(quán)輪循)調(diào)度算法;針對(duì)各個(gè)用戶允許的流量不相同且每次調(diào)度的數(shù)據(jù)包的長(zhǎng)度不一樣的情況,例如以太網(wǎng)的包長(zhǎng)可以是64字節(jié)到9600字節(jié)中的任意值,出現(xiàn)了DRR(Deficit Round Robin-差額循環(huán))調(diào)度算法;針對(duì)各個(gè)用戶允許的流量不相同,同時(shí)每個(gè)用戶內(nèi)部支持嚴(yán)格優(yōu)先級(jí)隊(duì)列的調(diào)度,出現(xiàn)了MDRR(ModifiedDeficit Round Robin-改進(jìn)的差額循環(huán))調(diào)度算法來(lái)解決該問(wèn)題。此外還有DWRR(DynamicWeighted Round Robin-動(dòng)態(tài)加權(quán)循環(huán))、SHVC(Shaping Virtual Clock-整形虛擬時(shí)鐘)、CAR(Committed Access Rate-承諾的接入速率)、WRED(Weighted RED-加權(quán)RED)等調(diào)度算法,分別適用于不同的應(yīng)用情況。
MDRR作為一種QOS的調(diào)度算法,記錄前次調(diào)度剩余或不足的包長(zhǎng),在下一次調(diào)度中進(jìn)行補(bǔ)償,并為優(yōu)先級(jí)隊(duì)列開(kāi)辟了SP(Strict Priority-嚴(yán)格優(yōu)先級(jí))調(diào)度通道。具體來(lái)講就是每次訪問(wèn)一個(gè)用戶,根據(jù)該用戶配置的帶寬判斷是否允許調(diào)度一定數(shù)量的包,如果是則將這些包調(diào)度出去,同時(shí)記錄下超出用戶帶寬設(shè)定值的字節(jié)數(shù),等下一輪調(diào)度時(shí),較少的數(shù)據(jù)被調(diào)出,以補(bǔ)償上次多調(diào)出的部分。調(diào)度完該用戶后再調(diào)度下一個(gè)用戶,依次輪循。這樣,長(zhǎng)時(shí)間來(lái)看,每次允許被調(diào)度出去的數(shù)據(jù)的平均值就等于該用戶配置的帶寬,同時(shí)每個(gè)用戶下面可以有不同優(yōu)先級(jí)的流數(shù)據(jù),每個(gè)流數(shù)據(jù)之間遵循SP調(diào)度。
實(shí)現(xiàn)QOS調(diào)度的方法主要有漏桶和令牌桶兩種。漏桶方法是指根據(jù)用戶配置的速率,定時(shí)地檢測(cè)該用戶是否有數(shù)據(jù)需要調(diào)度,配置的速率越大,檢測(cè)并調(diào)度的速度越快。令牌桶方法是指根據(jù)用戶配置的速率,定時(shí)的往令牌桶中加令牌,當(dāng)用戶有數(shù)據(jù)需要調(diào)度時(shí),從令牌桶中取出相應(yīng)的令牌,同時(shí)得到調(diào)度,配置的速率越快,往令牌桶中加令牌的速度越快。
對(duì)于QOS的應(yīng)用主要有單速率和雙速率兩種。單速率是指對(duì)某用戶只配一個(gè)速率,該用戶大于所配置的速率的部分將得不到調(diào)度。雙速率是指對(duì)某用戶配置兩個(gè)速率,即CIR(Committed Information Rate-承諾的速率)和PIR(Peak Information Rate-最高速率)。CIR為無(wú)論當(dāng)前網(wǎng)絡(luò)是否擁塞,必須要保證的那部分速率;PIR為當(dāng)前網(wǎng)絡(luò)不擁塞時(shí),允許被調(diào)度的最高速率。
針對(duì)雙速率的實(shí)現(xiàn),可以用漏桶方案實(shí)現(xiàn)SHVC算法來(lái)得以實(shí)現(xiàn)。如圖1所示,SHVC模塊共有N個(gè)飛輪,每個(gè)飛輪表示一種特定速率,飛輪表中存放用戶ID,N值越大,其能表示的速率組合越多,比如第1個(gè)飛輪代表1Gbps的流量,第2個(gè)飛輪代表500Mbps的流量,第3個(gè)飛輪代表250Mbps的流量。各往這三個(gè)飛輪中寫(xiě)入用戶號(hào)1則表示對(duì)用戶1配1.75Gbps的流量。N值越大,其配置的速率的最小單位可以越小或者最大范圍可以越大。時(shí)戳是一個(gè)時(shí)間標(biāo)志,用來(lái)表示當(dāng)前飛輪的下一個(gè)用戶需要被讀出的時(shí)間點(diǎn)。當(dāng)輪循到第N個(gè)飛輪時(shí),系統(tǒng)時(shí)間計(jì)數(shù)與當(dāng)前飛輪的時(shí)戳比較,如果系統(tǒng)時(shí)間大于當(dāng)前飛輪的時(shí)戳,則當(dāng)前飛輪輸出一個(gè)用戶ID。如圖2所示,用戶CIR飛輪采用SHVC調(diào)度算法構(gòu)成,配置必須保證的用戶速率,用戶PIR飛輪采用SHVC調(diào)度算法構(gòu)成,配置用戶允許超過(guò)CIR部分的額外的速率,用戶組CIR飛輪采用SHVC調(diào)度算法構(gòu)成,配置必須保證的用戶組速率,用戶組PIR飛輪采用SHVC調(diào)度算法構(gòu)成,配置用戶組允許超過(guò)CIR部分的額外的速率,限制出口速率。1個(gè)用戶組對(duì)應(yīng)1個(gè)CIR漏桶和1個(gè)PIR漏桶。用戶飛輪輸出的用戶ID存放于漏桶,用戶組飛輪控制漏桶的輸出流量。雙速率的功能是這樣實(shí)現(xiàn)的當(dāng)配置一個(gè)用戶或用戶組的速率時(shí),首先將其速率分解并配置到各個(gè)飛輪當(dāng)中,根據(jù)該飛輪中配置的用戶的總速率決定從該飛輪中讀出的用戶ID或用戶組ID的快慢。配置完畢后,首先用戶飛輪根據(jù)配置的速率輪循出用戶ID,根據(jù)該輪循出的用戶ID查表得到該用戶對(duì)應(yīng)的用戶組號(hào),放入該用戶組對(duì)應(yīng)的漏桶中,用戶CIR飛輪中輪循出的用戶ID放入圖中CIR漏桶,用戶PIR飛輪中輪循出的用戶ID放入圖中PIR漏桶;然后用戶組CIR飛輪也根據(jù)其配置的速率輪循出用戶組號(hào),根據(jù)該用戶組號(hào)從對(duì)應(yīng)的用戶組漏桶中漏出CIR漏桶中的用戶號(hào),如果CIR漏桶中沒(méi)有任何數(shù)據(jù),則根據(jù)用戶組PIR飛輪輪循出的用戶組號(hào)從對(duì)應(yīng)的用戶組的漏桶中漏出PIR漏桶中的用戶號(hào),根據(jù)該用戶號(hào)讀取該用戶的需要調(diào)度的數(shù)據(jù)的最高優(yōu)先級(jí)信息,發(fā)出調(diào)度請(qǐng)求。如此一直不停的輪循使得配置的用戶或用戶組的雙速率得以實(shí)現(xiàn)。
但是以上方法有很大的局限性,如果用戶或用戶組數(shù)目增加,或者調(diào)度的級(jí)數(shù)增加,例如不止用戶用戶組兩級(jí)而是三級(jí)或四級(jí)調(diào)度,軟件分解和配置速率的工作量將大大增加,增加了軟件設(shè)計(jì)的難度。采用這種方法還會(huì)消耗非常大的邏輯資源,首先每個(gè)用戶組對(duì)應(yīng)一個(gè)CIR和PIR漏桶,每個(gè)漏桶就對(duì)應(yīng)一片緩存空間,如果用戶組的數(shù)目增多,需要的緩存空間將非常大,必須掛片外RAM(Random Access Merory-隨機(jī)存儲(chǔ)器)才行;其次如果要使得配置的速率的最小單位越小或者最大范圍越大,需要更多的飛輪,每一個(gè)飛輪就對(duì)應(yīng)一片緩存空間,而飛輪基于訪問(wèn)速度的要求必須使用FPGA(Field Programmable Gate Array-現(xiàn)場(chǎng)可編程門陣列)片內(nèi)存儲(chǔ)資源,這樣需要非常多的FPGA內(nèi)部存儲(chǔ)器資源;再次如果用戶數(shù)目增多會(huì)使得飛輪的深度增加,也會(huì)增加對(duì)FPGA資源的耗費(fèi)。
發(fā)明內(nèi)容
為了解決對(duì)多用戶進(jìn)行QOS調(diào)度時(shí),由于用戶數(shù)量的增加,或者調(diào)度級(jí)數(shù)增加,導(dǎo)致軟件分解和配置速率的工作量大大增加,以及其實(shí)現(xiàn)方法對(duì)邏輯資源消耗非常大的缺點(diǎn),本發(fā)明提出了一種采用令牌桶實(shí)現(xiàn)改進(jìn)的差額循環(huán)MDRR調(diào)度算法,將令牌桶的維護(hù)與用戶輪循分開(kāi),各自獨(dú)立地運(yùn)行,最終實(shí)現(xiàn)用戶的QOS調(diào)度方法。所述方法具體包括以下步驟根據(jù)配置的QOS信息表定時(shí)刷新令牌桶中的令牌數(shù),并根據(jù)隊(duì)列狀態(tài)映射表中當(dāng)前用戶的狀態(tài),更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息;對(duì)調(diào)度矩陣進(jìn)行輪循,直到輪循出需要調(diào)度的用戶號(hào);根據(jù)輪循出的用戶號(hào)查詢隊(duì)列狀態(tài)映射表中該用戶的流隊(duì)列狀態(tài),得到需要調(diào)度的流的優(yōu)先級(jí)信息并發(fā)出調(diào)度請(qǐng)求;獲得上次調(diào)度結(jié)果反饋后,執(zhí)行所述調(diào)度請(qǐng)求,并根據(jù)反饋回的上次調(diào)度結(jié)果,從上次被調(diào)度的令牌桶中減去用去的令牌數(shù),更新調(diào)度矩陣。
所述根據(jù)配置的QOS信息表定時(shí)刷新令牌桶中的令牌數(shù)的步驟具體包括在QOS信息表中配置調(diào)度速率,并將調(diào)度速率分解為高速率和低速率,分別配入高速率域和低速率域;根據(jù)配置的調(diào)度速率,定時(shí)刷新令牌桶中的令牌數(shù)。
所述更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息的步驟具體包括根據(jù)所述令牌桶中的令牌數(shù)是否大于設(shè)定的門限值,及隊(duì)列狀態(tài)映射表中該用戶是否有數(shù)據(jù)需要調(diào)度,更新調(diào)度矩陣中該用戶號(hào)對(duì)應(yīng)位置的數(shù)據(jù)。
所述定時(shí)刷新令牌桶中的令牌數(shù)包括高速率刷新和低速率刷新,所述高速率刷新根據(jù)所述QOS信息表高速率域中所配速率得到需要增加的令牌數(shù),所述低速率刷新根據(jù)所述QOS信息表低速率域中所配速率得到需要增加的令牌數(shù)。
所述高速率刷新和低速率刷新必須在刷新周期內(nèi)刷新完畢所有令牌桶,如果在刷新周期內(nèi)無(wú)法刷新完畢所有令牌桶,則將刷新周期進(jìn)行擴(kuò)展。
所述令牌桶為用戶令牌桶。
所述令牌桶為用戶令牌桶和用戶組令牌桶。
所述調(diào)度速率為承諾速率。
所述調(diào)度速率為承諾速率和最高速率。
本發(fā)明還提供了一種對(duì)多用戶進(jìn)行QOS調(diào)度的裝置,其特征在于,所述裝置包括配置模塊、令牌桶刷新模塊、調(diào)度矩陣更新模塊、輪循模塊、調(diào)度請(qǐng)求發(fā)出模塊和令牌減去模塊;所述配置模塊用于配置QOS信息表,并將配置結(jié)果發(fā)送給所述令牌桶刷新模塊;所述令牌桶刷新模塊根據(jù)所述配置模塊發(fā)送的配置結(jié)果,定時(shí)刷新令牌桶中的令牌數(shù);所述調(diào)度矩陣更新模塊用于根據(jù)隊(duì)列狀態(tài)映射表中當(dāng)前用戶的狀態(tài),更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息;所述輪循模塊用于輪循出調(diào)度矩陣中需要調(diào)度的用戶號(hào),并將該用戶號(hào)發(fā)送給所述調(diào)度請(qǐng)求發(fā)出模塊;所述調(diào)度請(qǐng)求發(fā)出模塊用于根據(jù)所述輪循模塊輪循出的用戶號(hào),查詢隊(duì)列狀態(tài)映射表中該用戶的流隊(duì)列狀態(tài),發(fā)出該用戶的調(diào)度請(qǐng)求;所述令牌減去模塊用于根據(jù)反饋回的上次調(diào)度結(jié)果,從上次被調(diào)度的令牌桶中減去用去的令牌數(shù)。
所述配置模塊包括速率配置單元和令牌桶桶深配置單元;所述速率配置單元用于配置調(diào)度速率;所述令牌桶桶深配置單元用于配置令牌桶的桶深。
本發(fā)明所述技術(shù)方案不僅支持多用戶的雙速率調(diào)度,而且也適用于多用戶的單速率調(diào)度,將其擴(kuò)展還可以支持兩級(jí)或多級(jí)的雙速率用戶調(diào)度,同時(shí)提出的簡(jiǎn)化邏輯設(shè)計(jì)的流量設(shè)置方式和令牌計(jì)算方法,有效地解決了用戶和調(diào)度級(jí)數(shù)增多帶來(lái)的FPGA資源和配置問(wèn)題,大大降低了邏輯實(shí)現(xiàn)的難度,這種配置方法適用于所有用令牌桶實(shí)現(xiàn)的QOS技術(shù)。
圖1是現(xiàn)有技術(shù)中SHVC調(diào)度算法工作原理圖;
圖2是現(xiàn)有技術(shù)中SHVC調(diào)度算法與漏桶算法模型圖;圖3是本發(fā)明利用雙令牌桶實(shí)現(xiàn)MDRR算法的邏輯框圖;圖4是本發(fā)明實(shí)施例的流程圖;圖5是本發(fā)明對(duì)用戶和用戶組兩級(jí)進(jìn)行QOS調(diào)度的裝置結(jié)構(gòu)圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,但不作為對(duì)本發(fā)明的限定。
本發(fā)明提供了一種用令牌桶來(lái)實(shí)現(xiàn)對(duì)多用戶進(jìn)行QOS調(diào)度的方法。下面以使用雙令牌桶來(lái)實(shí)現(xiàn)用戶和用戶組兩級(jí)的雙速率的QOS調(diào)度為例,來(lái)說(shuō)明QOS調(diào)度的具體過(guò)程。對(duì)每個(gè)用戶和用戶組配置兩個(gè)速率參數(shù)CIR速率和PIR速率。對(duì)每個(gè)用戶和用戶組配置兩個(gè)令牌桶CIR令牌桶和PIR令牌桶,用來(lái)存儲(chǔ)CIR和PIR的令牌。每隔一定時(shí)間就往CIR和PIR令牌桶中增加令牌數(shù),增加的令牌個(gè)數(shù)由配置的CIR和PIR的速率決定,令牌桶滿時(shí)不再往令牌桶中增加令牌。當(dāng)在CIR帶寬內(nèi)實(shí)際發(fā)生了調(diào)度時(shí),從CIR和PIR令牌桶中減去相應(yīng)的令牌數(shù);當(dāng)在CIR帶寬以外PIR帶寬以內(nèi)實(shí)際發(fā)生了調(diào)度時(shí),從PIR令牌桶中減去相應(yīng)的令牌數(shù)。為了實(shí)現(xiàn)每個(gè)用戶和用戶組配置的兩個(gè)速率參數(shù),采用如下調(diào)度方法當(dāng)用戶有數(shù)據(jù)需要調(diào)度時(shí),判斷當(dāng)前用戶和用戶組CIR令牌桶中的令牌數(shù)是否足夠,如果足夠,則允許調(diào)度,如果不夠,則判斷當(dāng)前用戶和用戶組PIR令牌桶中的令牌數(shù)是否足夠,如果足夠,則允許調(diào)度,否則不允許調(diào)度,直到令牌數(shù)夠?yàn)橹埂?br>
參見(jiàn)圖3,為一種使用雙令牌桶來(lái)實(shí)現(xiàn)MDRR算法的邏輯框圖,從而實(shí)現(xiàn)雙速率的用戶和用戶組兩級(jí)的QOS調(diào)度。下面結(jié)合這個(gè)邏輯框圖來(lái)說(shuō)明用戶和用戶組的QOS調(diào)度過(guò)程,參見(jiàn)圖4,其調(diào)度過(guò)程如下步驟101從配置端口設(shè)置用戶和用戶組的QOS信息表中的每個(gè)用戶和用戶組的CIR速率和PIR速率,以及CIR和PIR令牌桶桶深。將用戶和用戶組關(guān)聯(lián),邏輯初始化CIR令牌桶、PIR令牌桶、CIR調(diào)度矩陣和PIR調(diào)度矩陣。
配置CIR速率和PIR速率的具體方法為以8Kbps為最小的速率單位,用10bits的低速率域表示1×8Kbps到999×8Kbps之間的速率,用8bits的高速率域表示1000×8Kbps以上的速率。軟件必須按照這種配置方法對(duì)用戶和用戶組的CIR和PIR速率進(jìn)行分解,分別配置好高速率域和低速率域。例如對(duì)用戶和用戶組的CIR速率分別配置為88Kbps和80.12Mbps,軟件將這兩個(gè)CIR速率分別分解為11×8Kbps+0×8Mbps和15×8Kbps+10×8Mbps,其中11×8Kbps代表用戶CIR低速率,0×8Mbps代表用戶CIR高速率,15×8Kbps代表用戶組CIR低速率,10×8Mbps代表用戶組CIR高速率,十進(jìn)制數(shù)11對(duì)應(yīng)的10個(gè)比特位的二進(jìn)制數(shù)為0000001011,十進(jìn)制數(shù)0對(duì)應(yīng)的8個(gè)比特位的二進(jìn)制數(shù)為00000000,十進(jìn)制數(shù)15對(duì)應(yīng)的10個(gè)比特位的二進(jìn)制數(shù)為0000001111,十進(jìn)制數(shù)10對(duì)應(yīng)的8個(gè)比特位的二進(jìn)制數(shù)為00001010,因此對(duì)用戶CIR高速率域配置0,低速率域配置11,用戶組CIR高速率域配置10,用戶組CIR低速率域配置15。對(duì)每個(gè)用戶和用戶組的PIR速率按照與CIR速率同樣的配置方法進(jìn)行配置,得到PIR高速率域和低速率域。令牌桶桶深以字節(jié)為單位,令牌桶中的一個(gè)令牌代表1字節(jié)的調(diào)度權(quán)限。
步驟102根據(jù)設(shè)置的用戶和用戶組的CIR速率和PIR速率,QOS信息管理模塊根據(jù)用戶和用戶組QOS信息表,定時(shí)刷新用戶和用戶組的CIR令牌桶和PIR令牌桶中的令牌數(shù),實(shí)現(xiàn)用戶和用戶組所設(shè)置的CIR速率和PIR速率。具體步驟如下刷新用戶和用戶組的CIR令牌桶和PIR令牌桶時(shí),以N微秒為刷新周期進(jìn)行高速率刷新,以M毫秒為刷新周期進(jìn)行低速率刷新,高速率刷新時(shí),將步驟101中得到的高速率域配置的數(shù)據(jù)乘以N,得到當(dāng)前用戶本次高速率刷新令牌桶時(shí)需要增加的令牌數(shù),低速率刷新時(shí),將步驟101中得到的低速率域配置的數(shù)據(jù)乘以M,得到當(dāng)前用戶本次低速率刷新令牌桶時(shí)需要增加的令牌數(shù),這樣就實(shí)現(xiàn)了所配置的高速率和低速率。例如對(duì)用戶配置80.12Mbps的速率,首先軟件將80.12M的速率分解為高速率區(qū)域和低速率區(qū)域,即80.12Mbps=10×8Mbps+15×8Kbps,所以高速率域配置10,低速率域配置15,QOS信息管理模塊以Nμs為刷新周期進(jìn)行高速率刷新時(shí),每次高速率刷新增加的令牌數(shù)為10N字節(jié),一秒鐘時(shí)間內(nèi)高速率刷新次數(shù)為1s/Nμs次,那么一秒鐘時(shí)間內(nèi)高速率刷新增加的令牌數(shù)為每次增加的令牌數(shù)乘以1秒鐘時(shí)間內(nèi)的刷新次數(shù),即10N×1s/Nμs=10M字節(jié),即每秒鐘增加80Mbit的令牌,實(shí)現(xiàn)了所配置的80Mbps的高速率,QOS信息管理模塊以Mms為刷新周期進(jìn)行低速率刷新時(shí),每次低速率刷新增加的令牌數(shù)為15M字節(jié),一秒鐘時(shí)間內(nèi)低速率刷新次數(shù)為1s/Mms次,那么一秒鐘時(shí)間內(nèi)低速率刷新增加的令牌數(shù)為每次增加的令牌數(shù)乘以1秒鐘時(shí)間內(nèi)的刷新次數(shù),即15M×1s/Mms=15K字節(jié),即每秒鐘增加120Kbit的令牌,實(shí)現(xiàn)了所配置的120Kbps的低速率,這樣就實(shí)現(xiàn)了所配的80.12Mbps的速率。其中,理論上參數(shù)N和M可以是任意的正整數(shù),但是考慮到實(shí)現(xiàn)的簡(jiǎn)單,N可以取32或64等,M可以取1、2或4等。
QOS信息管理模塊在刷新周期內(nèi)必須刷新完畢所有用戶和用戶組的CIR和PIR令牌桶中的令牌數(shù),一般情況下為了保證刷新完畢,采取對(duì)CIR和PIR令牌桶同時(shí)刷新的處理方法。如果由于支持的用戶/用戶組數(shù)目太多使得在刷新周期內(nèi)無(wú)法刷新完畢所有用戶和用戶組的令牌桶中的令牌數(shù),則可以將刷新周期擴(kuò)展。
步驟103刷新令牌桶時(shí)如果發(fā)現(xiàn)用戶和用戶組的CIR令牌桶中的令牌數(shù)大于設(shè)定的門限值,說(shuō)明用戶有足夠的可以用于調(diào)度的令牌數(shù),同時(shí)如果該用戶對(duì)應(yīng)的隊(duì)列狀態(tài)映射表中有非空隊(duì)列,則該用戶允許被調(diào)度,QOS信息管理模塊向矩陣更新信息模塊發(fā)送將CIR調(diào)度矩陣中該用戶對(duì)應(yīng)的位置刷新為“1”的信息;否則向矩陣更新信息模塊發(fā)送將CIR調(diào)度矩陣中該用戶對(duì)應(yīng)的位置刷新為“0”的信息。同理生成PIR調(diào)度矩陣刷新信息。
步驟104矩陣更新模塊根據(jù)矩陣更新信息模塊中的更新信息,將CIR調(diào)度矩陣和PIR調(diào)度矩陣更新。
CIR調(diào)度矩陣為X行X列的RAM,一共X×X個(gè)存儲(chǔ)單位,對(duì)應(yīng)X×X個(gè)用戶的調(diào)度使能標(biāo)志。如果某用戶對(duì)應(yīng)的存儲(chǔ)點(diǎn)上的調(diào)度使能標(biāo)志位為“1”,表示該用戶在CIR帶寬內(nèi)可以被調(diào)度。做成矩陣可以在花費(fèi)較少資源的同時(shí)減少用戶的輪循時(shí)間。
PIR調(diào)度矩陣為X行X列的RAM,一共X×X個(gè)存儲(chǔ)單位,對(duì)應(yīng)X×X個(gè)用戶的調(diào)度使能標(biāo)志。如果某用戶對(duì)應(yīng)的存儲(chǔ)點(diǎn)上的調(diào)度使能標(biāo)志位為“1”,表示該用戶在PIR帶寬內(nèi)可以被調(diào)度。做成矩陣可以在花費(fèi)較少資源的同時(shí)減少用戶的輪循時(shí)間。
步驟105用戶輪循模塊從CIR和PIR調(diào)度矩陣中輪循出本次需要調(diào)度的用戶號(hào),根據(jù)該用戶號(hào)判斷出隊(duì)列狀態(tài)映射表中該用戶哪個(gè)優(yōu)先級(jí)的流有數(shù)據(jù),找到非空的最高優(yōu)先級(jí)的流,發(fā)出本次的調(diào)度請(qǐng)求。具體步驟為用戶輪偱模塊對(duì)CIR調(diào)度矩陣和PIR調(diào)度矩陣進(jìn)行同步掃描,按照RR的模式對(duì)所有用戶進(jìn)行調(diào)度。下面以1024個(gè)用戶為例來(lái)說(shuō)明輪偱過(guò)程用戶輪偱模塊復(fù)位后首先從用戶0開(kāi)始掃描,掃描的優(yōu)先級(jí)從0到1023遞減,判斷出哪個(gè)用戶對(duì)應(yīng)的bit為1,則該用戶就是被掃描出的用戶號(hào)。如果第一次調(diào)度出的用戶號(hào)為4,則下次從用戶號(hào)為5的矩陣點(diǎn)開(kāi)始掃描,掃描優(yōu)先級(jí)從5到1023到0到4遞減,掃描出矩陣數(shù)據(jù)為“1”的用戶。如果CIR調(diào)度矩陣中的數(shù)據(jù)全部為0,則判斷PIR調(diào)度矩陣的掃描結(jié)果,如果PIR調(diào)度矩陣的數(shù)據(jù)也全部為0,則用戶輪循模塊重新開(kāi)始掃描,如此循環(huán)下去,直至掃描出第一個(gè)掃描到的矩陣數(shù)據(jù)為“1”的用戶。根據(jù)輪偱出的用戶號(hào)判斷出隊(duì)列狀態(tài)映射表中該用戶哪個(gè)優(yōu)先級(jí)的流有數(shù)據(jù),找到非空的最高優(yōu)先級(jí)的流,在調(diào)度結(jié)果反饋隊(duì)列反饋回上次調(diào)度結(jié)果后發(fā)出本次的調(diào)度申請(qǐng),如果該用戶的N個(gè)優(yōu)先級(jí)都沒(méi)有數(shù)據(jù),則將該次輪循出的用戶的掃描優(yōu)先級(jí)設(shè)為最低重新開(kāi)始掃描。
步驟106調(diào)度結(jié)果反饋隊(duì)列收到上一次的調(diào)度結(jié)果,執(zhí)行調(diào)度請(qǐng)求隊(duì)列中緩存的用戶調(diào)度請(qǐng)求,同時(shí)QOS信息管理模塊根據(jù)調(diào)度結(jié)果反饋隊(duì)列收到的上一次的調(diào)度結(jié)果,從上一次被調(diào)度的用戶和用戶組對(duì)應(yīng)的令牌桶中減去用去的令牌數(shù),得到減去令牌后CIR和PIR調(diào)度矩陣需要更新的信息。
QOS信息管理模塊判斷出上一次調(diào)度請(qǐng)求是由CIR調(diào)度矩陣輪循出來(lái)的,還是由PIR調(diào)度矩陣輪循出來(lái)的,如果是由CIR調(diào)度矩陣輪循出來(lái)的,則QOS信息管理模塊從CIR令牌桶和PIR令牌桶中減去用去的令牌數(shù),如果是由PIR調(diào)度矩陣輪循出來(lái)的,則QOS信息管理模塊從PIR令牌桶中減去用去的令牌數(shù)。
步驟107QOS信息管理模塊更新矩陣更新信息模塊中的更新信息,執(zhí)行步驟104,直到調(diào)度結(jié)束。
本實(shí)施例實(shí)現(xiàn)的是兩級(jí)的雙速率的QOS調(diào)度,即用戶和用戶組的CIR和PIR的QOS調(diào)度。本發(fā)明所述方法不僅適用于雙速率的QOS調(diào)度,而且還適用于單速率的QOS調(diào)度,具體的實(shí)施方法就是配置單速率的令牌桶,其調(diào)度過(guò)程與上面所述步驟一樣,這里不再敘述。本發(fā)明所述方法同時(shí)還支持多級(jí)的QOS調(diào)度,通過(guò)增加相應(yīng)的令牌桶,就可以實(shí)現(xiàn)多級(jí)的QOS調(diào)度。其調(diào)度過(guò)程也與上面所述步驟一樣,這里也不再敘述。
采用將設(shè)置的流量分解為高速率和低速率,分別配置入高速率域和低速率域,針對(duì)著兩個(gè)域以不同的刷新速度刷新令牌桶的方法,大大地降低了邏輯實(shí)現(xiàn)的難度。在現(xiàn)有技術(shù)中對(duì)用戶和用戶組的QOS信息表設(shè)置時(shí),一般只設(shè)置一個(gè)總的速率,是不分CIR/PIR高速率和CIR/PIR低速率的,本發(fā)明之所以要求軟件在設(shè)置的時(shí)候?qū)⑺俾史纸鉃楦叩退俾试O(shè)置基于以下原因1.因?yàn)樵O(shè)置1Mbps的速率表示1000Kbps,而非1024Kbps,這樣避免了軟件在設(shè)置速率的時(shí)候做10進(jìn)制到16進(jìn)制的轉(zhuǎn)換,便于軟件設(shè)置。
2.高低速率分離使得實(shí)現(xiàn)所設(shè)置的速率相當(dāng)簡(jiǎn)單。如果只設(shè)置一個(gè)總速率的話勢(shì)必使得高速率和低速率的刷新周期是一樣的。由于令牌的最小單位是以字節(jié)為單位,那么對(duì)用戶和用戶組QOS信息表的刷新周期必須是1ms,這樣如果設(shè)置的速率較高的話會(huì)使得每次往令牌桶中投入很多的令牌,流量比較粗暴,突發(fā)很厲害。如果要提高刷新周期,邏輯必須自己對(duì)該速率做判斷,根據(jù)設(shè)置的流量范圍作出相應(yīng)的處理,這樣勢(shì)必大大增加邏輯實(shí)現(xiàn)的難度。
參見(jiàn)圖5,本發(fā)明還提供了一種對(duì)多用戶進(jìn)行QOS調(diào)度的裝置,裝置包括配置模塊、令牌桶刷新模塊、調(diào)度矩陣更新模塊、輪循模塊、調(diào)度請(qǐng)求發(fā)出模塊和令牌減去模塊;配置模塊用于配置QOS信息表,并將配置結(jié)果發(fā)送給令牌桶刷新模塊;令牌桶刷新模塊根據(jù)配置模塊發(fā)送的配置結(jié)果,定時(shí)刷新令牌桶中的令牌數(shù);調(diào)度矩陣更新模塊用于根據(jù)隊(duì)列狀態(tài)映射表中當(dāng)前用戶的狀態(tài),更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息;
輪循模塊用于輪循出調(diào)度矩陣中需要調(diào)度的用戶號(hào),并將該用戶號(hào)發(fā)送給調(diào)度請(qǐng)求發(fā)出模塊;調(diào)度請(qǐng)求發(fā)出模塊用于根據(jù)輪循模塊輪循出的用戶號(hào),查詢隊(duì)列狀態(tài)映射表中該用戶的流隊(duì)列狀態(tài),發(fā)出該用戶的調(diào)度請(qǐng)求;令牌減去模塊用于根據(jù)反饋回的上次調(diào)度結(jié)果,從上次被調(diào)度的令牌桶中減去用去的令牌數(shù)。
配置模塊包括速率配置單元和令牌桶桶深配置單元;速率配置單元用于配置調(diào)度速率;令牌桶桶深配置單元用于配置令牌桶的桶深。
以上所述的實(shí)施例只是本發(fā)明較優(yōu)選的具體實(shí)施方式
的一種,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,用令牌桶實(shí)現(xiàn)改進(jìn)的差額循環(huán)MDRR調(diào)度算法,將令牌桶的維護(hù)與用戶輪循分開(kāi),各自獨(dú)立地運(yùn)行,所述方法具體包括以下步驟根據(jù)配置的QOS信息表定時(shí)刷新令牌桶中的令牌數(shù),并根據(jù)隊(duì)列狀態(tài)映射表中當(dāng)前用戶的狀態(tài),更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息;對(duì)調(diào)度矩陣進(jìn)行輪循,直到輪循出需要調(diào)度的用戶號(hào);根據(jù)輪循出的用戶號(hào)查詢隊(duì)列狀態(tài)映射表中該用戶的流隊(duì)列狀態(tài),得到需要調(diào)度的流的優(yōu)先級(jí)信息并發(fā)出調(diào)度請(qǐng)求;獲得上次調(diào)度結(jié)果反饋后,執(zhí)行所述調(diào)度請(qǐng)求,并根據(jù)反饋回的上次調(diào)度結(jié)果,從上次被調(diào)度的令牌桶中減去用去的令牌數(shù),更新調(diào)度矩陣。
2.如權(quán)利要求1所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述根據(jù)配置的QOS信息表定時(shí)刷新令牌桶中的令牌數(shù)的步驟具體包括在QOS信息表中配置調(diào)度速率,并將調(diào)度速率分解為高速率和低速率,分別配入高速率域和低速率域;根據(jù)配置的調(diào)度速率,定時(shí)刷新令牌桶中的令牌數(shù)。
3.如權(quán)利要求1所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息的步驟具體包括根據(jù)所述令牌桶中的令牌數(shù)是否大于設(shè)定的門限值,及隊(duì)列狀態(tài)映射表中該用戶是否有數(shù)據(jù)需要調(diào)度,更新調(diào)度矩陣中該用戶號(hào)對(duì)應(yīng)位置的數(shù)據(jù)。
4.如權(quán)利要求2所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述定時(shí)刷新令牌桶中的令牌數(shù)包括高速率刷新和低速率刷新,所述高速率刷新根據(jù)所述QOS信息表高速率域中所配速率得到需要增加的令牌數(shù),所述低速率刷新根據(jù)所述QOS信息表低速率域中所配速率得到需要增加的令牌數(shù)。
5.如權(quán)利要求4所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述高速率刷新和低速率刷新必須在刷新周期內(nèi)刷新完畢所有令牌桶,如果在刷新周期內(nèi)無(wú)法刷新完畢所有令牌桶,則將刷新周期進(jìn)行擴(kuò)展。
6.如權(quán)利要求1-5中任意一項(xiàng)權(quán)利要求所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述令牌桶為用戶令牌桶。
7.如權(quán)利要求1-5中任意一項(xiàng)權(quán)利要求所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述令牌桶為用戶令牌桶和用戶組令牌桶。
8.如權(quán)利要求2所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述調(diào)度速率為承諾速率。
9.如權(quán)利要求2所述的對(duì)多用戶進(jìn)行QOS調(diào)度的方法,其特征在于,所述調(diào)度速率為承諾速率和最高速率。
10.一種對(duì)多用戶進(jìn)行QOS調(diào)度的裝置,其特征在于,所述裝置包括配置模塊、令牌桶刷新模塊、調(diào)度矩陣更新模塊、輪循模塊、調(diào)度請(qǐng)求發(fā)出模塊和令牌減去模塊;所述配置模塊用于配置QOS信息表,并將配置結(jié)果發(fā)送給所述令牌桶刷新模塊;所述令牌桶刷新模塊根據(jù)所述配置模塊發(fā)送的配置結(jié)果,定時(shí)刷新令牌桶中的令牌數(shù);所述調(diào)度矩陣更新模塊用于根據(jù)隊(duì)列狀態(tài)映射表中當(dāng)前用戶的狀態(tài),更新調(diào)度矩陣中當(dāng)前用戶的調(diào)度信息;所述輪循模塊用于輪循出調(diào)度矩陣中需要調(diào)度的用戶號(hào),并將該用戶號(hào)發(fā)送給所述調(diào)度請(qǐng)求發(fā)出模塊;所述調(diào)度請(qǐng)求發(fā)出模塊用于根據(jù)所述輪循模塊輪循出的用戶號(hào),查詢隊(duì)列狀態(tài)映射表中該用戶的流隊(duì)列狀態(tài),發(fā)出該用戶的調(diào)度請(qǐng)求;所述令牌減去模塊用于根據(jù)反饋回的上次調(diào)度結(jié)果,從上次被調(diào)度的令牌桶中減去用去的令牌數(shù)。
11.如權(quán)利要求10所述的對(duì)多用戶進(jìn)行QOS調(diào)度的裝置,其特征在于,所述配置模塊包括速率配置單元和令牌桶桶深配置單元;所述速率配置單元用于配置調(diào)度速率;所述令牌桶桶深配置單元用于配置令牌桶的桶深。
全文摘要
本發(fā)明公開(kāi)了一種對(duì)多用戶進(jìn)行QOS調(diào)度的方法和裝置,屬于通訊技術(shù)領(lǐng)域。為了解決對(duì)多用戶進(jìn)行QOS調(diào)度時(shí),由于用戶數(shù)量的增加,或者調(diào)度級(jí)數(shù)增加,導(dǎo)致軟件分解和配置速率的工作量大大增加,以及其實(shí)現(xiàn)方法對(duì)邏輯資源消耗非常大的缺點(diǎn),本發(fā)明提出了一種采用令牌桶來(lái)實(shí)現(xiàn)MDRR算法,最終實(shí)現(xiàn)用戶的QOS調(diào)度方法。其具體步驟為根據(jù)配置的QOS信息表定時(shí)刷新令牌桶中的令牌數(shù);輪循出調(diào)度矩陣中的需要調(diào)度的用戶號(hào);根據(jù)輪循出的用戶號(hào)發(fā)出調(diào)度請(qǐng)求;獲得上次調(diào)度結(jié)果反饋后,執(zhí)行調(diào)度請(qǐng)求。本發(fā)明還提供了一種用來(lái)實(shí)現(xiàn)對(duì)多用戶進(jìn)行QOS調(diào)度的裝置。裝置包括配置模塊、令牌桶刷新模塊、調(diào)度矩陣更新模塊、輪循模塊、調(diào)度請(qǐng)求發(fā)出模塊和令牌減去模塊。
文檔編號(hào)H04L12/56GK1949748SQ20061014047
公開(kāi)日2007年4月18日 申請(qǐng)日期2006年10月9日 優(yōu)先權(quán)日2006年10月9日
發(fā)明者梁冰, 孫浩, 楊繼濤 申請(qǐng)人:華為數(shù)字技術(shù)有限公司