基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法及裝置。
【背景技術(shù)】
[0002]目前,在數(shù)據(jù)通信領(lǐng)域,通過設備的業(yè)務種類繁多且流量較大,所以在數(shù)據(jù)通信設備上都會用到隊列調(diào)度,動態(tài)加權(quán)循環(huán)法(Dynamic Weighted Round-Robin, DffRR)的隊列調(diào)度方法是對各隊列按照配置比例為每個隊列增加調(diào)度權(quán)值,在每一輪調(diào)度循環(huán)過程中,使每個隊列發(fā)送的數(shù)據(jù)包字節(jié)數(shù)與填充的調(diào)度權(quán)值一致,從而到達按比例分配帶寬的要求。
[0003]然而,由于DWRR的隊列調(diào)度方法中是輪流對隊列進行調(diào)度,當調(diào)度裝置對非空且調(diào)度權(quán)值為正的隊列進行輪流調(diào)度時,會導致高配置比例的隊列分配的流量帶寬小于配置比例,而在其他低比例配置的隊列調(diào)度權(quán)值為負或O時,調(diào)度權(quán)值大的隊列會存在一段時間內(nèi)發(fā)送帶寬大于輸入帶寬,在隊列緩存空間有限情況下,造成隊列空情況,例如,隊列a、b、c、d的輸入速率都為120M,DWRR配置的調(diào)度比例為I:49:50:100,端口限速為200M,調(diào)度最大包長為1K,則每輪調(diào)度循環(huán)時四個隊列填充的調(diào)度權(quán)值分別為1K、49K、50K、100K,在輪流從4個隊列中的非空且調(diào)度權(quán)值為正的隊列中選擇一個隊列進行調(diào)度時,當a、b、c三個隊列的調(diào)度權(quán)值用完后隊列d的調(diào)度權(quán)值剩余50K,此時調(diào)度裝置只會對隊列d進行調(diào)度,由于隊列的輸入速率小于端口限速速率,隊列d分配的緩存空間有限,從而會導致隊列d空而其調(diào)度權(quán)值剩余即結(jié)束一輪調(diào)度循環(huán),積累的過程會造成此隊列的調(diào)度權(quán)值溢出,使隊列調(diào)度發(fā)送的數(shù)據(jù)帶寬小于配置比例對應的帶寬而無法達到預期帶寬,從而導致調(diào)度比例不準確。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種能提高調(diào)度比例準確性的基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法及裝置。
[0005]一種基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法,其用于在調(diào)度裝置端口進行隊列的調(diào)度,所述基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法包括以下步驟:
[0006]設置各隊列的調(diào)度比例及一個調(diào)度門限值并存儲;
[0007]根據(jù)配置的調(diào)度比例依需要為各個隊列填充對應的調(diào)度權(quán)值;
[0008]在存在非空隊列時獲取非空隊列的各個調(diào)度權(quán)值來比較各隊列的調(diào)度權(quán)值與所述調(diào)度門限值的大小并根據(jù)比較結(jié)果選擇相應隊列讀取數(shù)據(jù)包;
[0009]根據(jù)所選隊列的調(diào)度權(quán)值與對應讀取的數(shù)據(jù)包的長度計算以更新所選隊列的調(diào)度權(quán)值;
[0010]判斷所有隊列是否均為空或各隊列調(diào)度權(quán)值是否均小于或等于O并根據(jù)判斷結(jié)果來確定是否重新填充各隊列的調(diào)度權(quán)值以進行調(diào)度。
[0011]一種基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度裝置,其用于在調(diào)度裝置端口進行隊列的調(diào)度,所述基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度裝置包括一個配置模塊、一個填充模塊、一個判斷模塊、一個分組比較模塊、一個數(shù)據(jù)包讀取模塊及一個更新計算模塊,所述配置模塊用于設置各隊列的調(diào)度比例及一個調(diào)度門限值并存儲,所述填充模塊用于根據(jù)配置的調(diào)度比例依需要為各個隊列填充對應的調(diào)度權(quán)值,所述判斷模塊用于判斷各隊列中是否存在非空隊列,所述分組比較模塊用于在存在非空隊列時獲取非空隊列的各個調(diào)度權(quán)值來比較各隊列的調(diào)度權(quán)值與所述調(diào)度門限值的大小,所述數(shù)據(jù)包讀取模塊用于根據(jù)比較結(jié)果來選擇相應的隊列讀取數(shù)據(jù)包,所述更新計算模塊用于根據(jù)所選隊列的調(diào)度權(quán)值與對應讀取的數(shù)據(jù)包的長度計算以更新所選隊列的調(diào)度權(quán)值,在更新所選隊列的調(diào)度權(quán)值后所述判斷模塊判斷所有隊列是否均為空或各隊列調(diào)度權(quán)值是否均小于或等于O并根據(jù)判斷結(jié)果來確定是否重新填充各隊列的調(diào)度權(quán)值以進行調(diào)度。
[0012]與現(xiàn)有技術(shù)相比,本發(fā)明提供的基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法及裝置利用配置模塊預先設置一個調(diào)度門限值,分組比較模塊比較各隊列的調(diào)度權(quán)值與調(diào)度門限值的大小后優(yōu)先對調(diào)度權(quán)值大于調(diào)度門限值或者調(diào)度權(quán)值大于等于調(diào)度門限值的優(yōu)先隊列進行調(diào)度,避免高配置比例的隊列分配的流量帶寬小于配置比例,防止高配置比例的隊列調(diào)度權(quán)值溢出,保證了動態(tài)加權(quán)循環(huán)法的隊列調(diào)度比例的準確性,以使隊列的帶寬達到預期效果。
【附圖說明】
[0013]圖1是本發(fā)明提供的基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度裝置的模塊示意圖。
[0014]圖2是本發(fā)明基于動態(tài)加權(quán)循環(huán)法的隊列調(diào)度方法的流程圖。
[0015]主要元件符號說明
[0016]基于DWRR的隊列調(diào)度裝置100
[0017]配置模塊110
[0018]填充模塊120
[0019]基數(shù)設置單元122
[0020]填充計算單元124
[0021]判斷模塊130
[0022]分組比較模塊140
[0023]數(shù)據(jù)包讀取模塊150
[0024]更新計算模塊160
[0025]如下【具體實施方式】將結(jié)合上述附圖進一步說明本發(fā)明。
【具體實施方式】
[0026]請參閱圖1,其為本發(fā)明實施方式提供的一種基于動態(tài)加權(quán)循環(huán)法(DynamicWeighted Round-Robin,DWRR)的隊列調(diào)度裝置100,其用于在DWRR調(diào)度裝置的端口進行隊列的調(diào)度,所述基于DWRR的隊列調(diào)度裝置100包括一個配置模塊110、一個填充模塊120、一個判斷模塊130、一個分組比較模塊140、一個數(shù)據(jù)包讀取模塊150及一個更新計算模塊160。
[0027]所述配置模塊110用于設置各隊列的調(diào)度比例及一個調(diào)度門限值并存儲,本實施方式中,設定四個隊列a、b、c、d使用DWRR調(diào)度方式映射到一個輸出端口,配置四個隊列a、
b、c、d的調(diào)度比例為I:10:20:50,調(diào)度門限值設定為120KB(千字節(jié))??梢岳斫獾氖?,調(diào)度比例及調(diào)度門限值依需要自行設定即可。
[0028]所述填充模塊120包括一個基數(shù)設置單元122及一個填充計算單元124,所述基數(shù)設置單元122用于依需要確定一個填充基數(shù)值,本實施方式中,為方便電路的處理,確定的填充基數(shù)值為一個大于最大包長的最小整數(shù)值,如以太網(wǎng)的最大包長為1518B (Byte),則確定填充基數(shù)值為2K,從而保證每輪調(diào)度每個隊列可以調(diào)度一個數(shù)據(jù)包。所述填充計算單元124用于依照配置模塊110對各隊列配置的調(diào)度比例分別乘以所確定的填充基數(shù)值以得到各個隊列的調(diào)度權(quán)值。本實施方式中,隊列a、b、c、d的調(diào)度權(quán)值分別為1X2K、10X2K、20X2K、50X2K,即分別為 2Κ、20Κ、40Κ、100Κ。
[0029]所述判斷模塊130用于判斷各隊列中是否存在非空隊列及端口的發(fā)送速率是否正常,若隊列中不存在非空隊列且端口的發(fā)送速率不正常即端口發(fā)送速率不在正常限速范圍內(nèi)時,調(diào)度裝置100會處于等待狀態(tài)直到端口發(fā)送速率滿足端口的限速范圍且存在非空隊列??梢岳斫獾氖牵袛嗄K130判斷出存在非空隊列后會記錄下非空隊列的隊列號。本實施方式中,判斷端口限速使用單令牌桶的方式實現(xiàn),當令牌桶的令牌為正數(shù)時表示端口發(fā)送速率在正常范圍內(nèi),隊列中沒有任何元素時表示隊列為空隊列,如根據(jù)隊列的頭尾指針或表頭中的標志位等來判斷隊列是否為非空。
[0030]所述分組比較模塊140用于在判斷模塊130判斷隊列中存在非空隊列時從填充模塊120中獲取相應非空隊列中各隊列的調(diào)度權(quán)值,并比較各非空隊列的調(diào)度權(quán)值與所設置的調(diào)度門限值的大小,可以理解的是,分組比較模塊140根據(jù)判斷模塊130記