專利名稱:一種網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及一種對網(wǎng)絡(luò)中的數(shù)據(jù)包進(jìn)行多維的分類排隊服務(wù)的技術(shù)。
背景技術(shù):
常用的隊列調(diào)度策略,其核心問題是如何實現(xiàn)公平的帶寬分配和動態(tài)的帶寬共享,且避免不正常業(yè)務(wù)的影響。所謂公平地分配帶寬,就是每個業(yè)務(wù)類型獲得相同的帶寬,或者一些業(yè)務(wù)類型按照管理者的意圖獲得比其他業(yè)務(wù)類型更多的帶寬。所謂合理地共享帶寬,就是將分配給一種業(yè)務(wù)類型的剩余帶寬,給其它業(yè)務(wù)類型共享。所謂避免不正常業(yè)務(wù)類型的影響,就是在某些業(yè)務(wù)類型表現(xiàn)不正常的時候,保證其他業(yè)務(wù)類型得到正常的服務(wù)。
現(xiàn)有的常用隊列調(diào)度策略有FIFO(先進(jìn)先出)、PQ(優(yōu)先級隊列)、FQ(公平隊列)、WRR(加權(quán)循環(huán))、WFQ(加權(quán)公平隊列)、DRR(赤字循環(huán))等。
FIFO是一種最基本也是目前使用最多的隊列調(diào)度策略。FIFO按照數(shù)據(jù)包的到達(dá)順序入隊,又按照這個順序?qū)γ總€包進(jìn)行無區(qū)別的服務(wù)。數(shù)據(jù)包的最大時延是由隊列的長度決定的,因此可以通過調(diào)整隊列緩沖區(qū)的大小使得時延被控制在允許的范圍內(nèi)。
在PQ調(diào)度算法中,每個類型的數(shù)據(jù)包對應(yīng)于一個優(yōu)先級隊列。同一優(yōu)先級隊列中的數(shù)據(jù)包按照FIFO服務(wù)。但在調(diào)度過程中,高優(yōu)先級的隊列總是在低優(yōu)先級隊列之前被服務(wù)。其特點是關(guān)鍵的業(yè)務(wù)可以得到保證。它包括絕對優(yōu)先級隊列(Strict priority queuing)和速率限制優(yōu)先級隊列(Rate-controlled priority queuing)兩種應(yīng)用。在前一應(yīng)用中,某一隊列只有在比其優(yōu)先級高的隊列為空的情況下才被調(diào)度。其缺點是在高優(yōu)先級隊列流量較大的情況下,較低優(yōu)先級的隊列會長時間的處于饑餓(starvation)狀態(tài)。在后一應(yīng)用中,高優(yōu)先級隊列被加上一個帶寬限制,一旦高優(yōu)先級隊列消耗的帶寬超過此限制,則轉(zhuǎn)到下一個低優(yōu)先級隊列。
FQ對各個隊列循環(huán)服務(wù),每一隊列在一次循環(huán)中只傳送一個數(shù)據(jù)包。其特點是防止突發(fā)流對網(wǎng)絡(luò)資源的強(qiáng)占,使各個隊列享有完全相同的輸出帶寬。它缺點是當(dāng)一個隊列中的數(shù)據(jù)包明顯大于其他隊列中的數(shù)據(jù)包時,這個隊列就會占有比其他隊列更多的帶寬,所以它并不能真正實現(xiàn)帶寬的公平分配。
WFQ作為對FQ的一種改進(jìn),它通過給各個隊列分配不同的權(quán)重來滿足不同業(yè)務(wù)對于帶寬的不同要求。
在WRR隊列調(diào)度算法中,每個業(yè)務(wù)類型對應(yīng)一個隊列,每個隊列被分配一定的資源和優(yōu)先級,采用輪詢的方式服務(wù)這些隊列。一次循環(huán)當(dāng)中,每個隊列至少可以發(fā)送一個數(shù)據(jù)包,根據(jù)權(quán)重的不同獲得不同的帶寬。
DRR(赤字循環(huán))給各隊列分配不同的定額(quantum)——它決定該隊列所占的帶寬。調(diào)度器輪詢每個非空的隊列,在將赤字計數(shù)器的值加上該隊列的定額以后,若此隊列隊首數(shù)據(jù)包的大小不大于赤字計數(shù)器的值,則對其進(jìn)行服務(wù),同時相應(yīng)減少赤字計數(shù)器的值;如此對該隊列服務(wù),直到隊列為空或隊首數(shù)據(jù)包的大小大于計數(shù)器的值。其特點是算法簡單、各個隊列可真正得到和權(quán)重相當(dāng)?shù)膸?、各隊列間互不影響、可按需要給各個隊列分配不同帶寬等。其改進(jìn)調(diào)度策略MDRR在Cisco 12000系列的路由器中被采用。
目前常用的隊列管理方法,其隊列管理機(jī)制可以分為兩大類被動式隊列管理(Passive Queue Management,PQM)和主動式隊列管理(Active Queue Management,AQM)。
傳統(tǒng)的被動式隊列管理一般采用“丟尾”(DropTail)策略,即當(dāng)緩沖區(qū)滿時,丟棄新到達(dá)的數(shù)據(jù)包。它的局限性是將擁塞控制的責(zé)任推給端用戶,不能處罰惡意流;在某些情況下,會讓某個流或者少數(shù)幾個流獨占隊列空間,阻止其他流的包進(jìn)入隊列;會使得隊列在相當(dāng)長時間內(nèi)處于充滿(或幾乎充滿)的狀態(tài)。
主動式隊列管理機(jī)制就是要求網(wǎng)絡(luò)本身參與資源的管理和控制。它的不同之處在于通過采用特定的數(shù)據(jù)包丟棄技術(shù),維護(hù)緩沖區(qū)的占用量(即隊列的長度)在一定的范圍內(nèi)。即,在網(wǎng)絡(luò)輕度擁塞的時候就按照預(yù)定的規(guī)則來丟棄少量的數(shù)據(jù)包,從而使得某些源端降低發(fā)送速率,減少了數(shù)據(jù)包因為在緩沖區(qū)中的時間過長而導(dǎo)致的超時重傳,并且防止了擁塞的進(jìn)一步惡化,降低了丟包率,同時還具有容納突發(fā)流量的能力。典型的主動式隊列管理機(jī)制包括RED、BLUE、ARED、PDPC等。
RED算法,即隨機(jī)早期檢測算法有兩個和隊列長度相關(guān)的閾值minth和maxth。當(dāng)有數(shù)據(jù)包到達(dá)路由器時,RED計算出平均隊長avg,當(dāng)平均隊列長度avg小于預(yù)先設(shè)定的閾值minth時接收所有數(shù)據(jù)包;當(dāng)avg大于minth并小于maxth時按照一定的概率P丟棄新到數(shù)據(jù)包;當(dāng)avg大于maxth時到達(dá)的數(shù)據(jù)包全部被丟棄。RED在計算平均隊長avg時,采用了滑動平均的方法。丟包概率P不僅和avg有關(guān),還和從上一次丟包到現(xiàn)在連續(xù)進(jìn)入隊列的包的數(shù)量count有關(guān)。隨著count的增加,下一個包被丟棄的可能性也在緩慢增加,以便均勻地、避免連續(xù)地丟包。
BLUE算法與RED最大的區(qū)別在于,BLUE使用實際隊列長度來反映擁塞狀況,并且使用丟包事件和鏈路空閑事件來管理擁塞。BLUE動態(tài)地改變丟包概率P值鏈路空閑和隊列空時減小P值,隊列溢出導(dǎo)致連續(xù)丟包則增加P值。在最小時間間隔freeze-time時間內(nèi),概率P只能改變一次。參數(shù)d1決定了當(dāng)隊列溢出時P增加的量,d2決定了當(dāng)鏈路空閑時P減少的量。當(dāng)d1比d2大很多時,丟包事件被賦予更大的比重,因而能夠?qū)α髁康目焖僭黾幼鞒隹焖俜磻?yīng)。
ARED(Adaptive RED)算法的基本思想就是通過檢查平均隊長的變化來決定RED是應(yīng)更激進(jìn)還是更保守,從而盡量保持平均隊長在minth和maxth之間。它根據(jù)流量的變化來自動配置參數(shù)maxp。如果avg是在minth附近振蕩,說明擁塞控制太激進(jìn)了,所以減小maxp;如果avg在maxth附近振蕩,說明擁塞控制太保守了,那么就增大maxp。ARED是對RED改動很小的一種算法,它保留了RED的基本結(jié)構(gòu),但消除了RED的隊列延時問題和參數(shù)敏感性問題。
PDPC(Packet Discard Prevention Counter)算法對隊列的實際長度進(jìn)行監(jiān)測當(dāng)隊列長度小于minth時接收新到達(dá)的數(shù)據(jù)包;當(dāng)隊長大于maxth時丟棄該數(shù)據(jù)包;當(dāng)隊長介于minth和maxth之間時,將該數(shù)據(jù)包丟棄,并將計算器counter置為n,然后在隊長不超過maxth的情況下接收接下來的n個數(shù)據(jù)包。PDPC的特點是通過丟棄單個數(shù)據(jù)包來表明擁塞,接收接下來的n個數(shù)據(jù)包可以減小從TCP同一個發(fā)送窗口丟棄多個數(shù)據(jù)包的可能性。算法簡單,易于實現(xiàn),對無線網(wǎng)絡(luò)的變化反應(yīng)速度快,提供了不同流之間的公平性。其缺點是當(dāng)網(wǎng)絡(luò)用戶數(shù)大大增加的時候,它的性能會很快下降,各項參數(shù)缺乏足夠的自適應(yīng)性。
從前述隊列調(diào)度策略可以看到,現(xiàn)有的技術(shù)都是按照數(shù)據(jù)包的某一種屬性,例如流、業(yè)務(wù)類型等對它們進(jìn)行區(qū)分,然后送入相應(yīng)的隊列排隊等待服務(wù)。這種區(qū)分方法,不適用于多屬性的情況。假如一個數(shù)據(jù)包最多有N個屬性,每個屬性最多有M個值,則用現(xiàn)有的分類排隊方法,最大需要(M+1)N-1個隊列,才能夠?qū)崿F(xiàn)分類排隊控制!例如,如果我們將網(wǎng)絡(luò)中的IP數(shù)據(jù)報按照它的protocol字段、port字段、長度等屬性進(jìn)行區(qū)分,則由下表表示的日本到美國的主干線上的實際統(tǒng)計數(shù)據(jù)可以看到表1 MAWI 2005年03月20日14:00-14:15分的統(tǒng)計結(jié)果
按protocol進(jìn)行分類,至少分為6種;按數(shù)據(jù)報長度進(jìn)行區(qū)分,可以分成7個段;按port進(jìn)行分類,至少可以分成19個;在一個屬性內(nèi)可以被區(qū)分開的二個包,在另一個屬性內(nèi)又可能被合在一起。例如,按protocol區(qū)分為tcp和upd的二個包,它們的port可能都是53(dns),包長度可能都在128-255之間。
所以當(dāng)我們通過全部這三個屬性來對數(shù)據(jù)報進(jìn)行分類時,將需要分成24(協(xié)議端口)×7(長度段)=168個隊列。
在有些情況下,例如在對網(wǎng)絡(luò)運行情況進(jìn)行監(jiān)控的時候,系統(tǒng)需要通過隊列調(diào)度和管理,將網(wǎng)絡(luò)中各分量所占的比例限制在正常范圍內(nèi),如上表所示,以避免某些分量的異常增高對網(wǎng)絡(luò)造成的危害。某些分量異常增高的典型例子是泛洪攻擊,例如攻擊者向被害服務(wù)器發(fā)送大量的TCP SYN分組、HTTP GET請求、DNS查詢、超長包、或者端口掃描包等。如果采用現(xiàn)有的隊列調(diào)度與管理技術(shù),對于上述例子,系統(tǒng)將需要建立168個并列的隊列,對到達(dá)的數(shù)據(jù)包進(jìn)行分類排隊控制。如果采用串行隊列調(diào)度與管理的方式,則在各屬性之間人為引入了先后順序。某些具有較多屬性的包,在串行隊列中可能遇到瓶頸,有可能被丟棄;某些具有較少屬性的包在串行隊列中走的路徑短,因而得以快速通過。由此可見,采用現(xiàn)有技術(shù)進(jìn)行串行隊列調(diào)度與管理,失去了并行隊列的優(yōu)先權(quán)和權(quán)重控制、同一隊列內(nèi)的先進(jìn)先出排隊服務(wù)等重要特征。因此,現(xiàn)有的隊列調(diào)度與管理技術(shù),不適用于多屬性(或多維)排隊控制的情況。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng)。利用該技術(shù)使得網(wǎng)絡(luò)可以用比現(xiàn)有隊列調(diào)度技術(shù)更有效的方式,對不同的數(shù)據(jù)包進(jìn)行有區(qū)別的控制,例如業(yè)務(wù)質(zhì)量控制、安全控制等。
為了實現(xiàn)發(fā)明目的,采用的技術(shù)方案如下一種網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),用于對具有多屬性且每個屬性具有多個取值的網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行管理,它設(shè)置有與網(wǎng)絡(luò)數(shù)據(jù)包的屬性個數(shù)相等的N個隊列組,且每個隊列組i設(shè)置有與屬性i取值個數(shù)相等的Mi個隊列,然后將網(wǎng)絡(luò)數(shù)據(jù)包按屬性和屬性值分類在具體的隊列里排隊進(jìn)行調(diào)度和管理,以提供不同的服務(wù)。
具體的多屬性排隊方式如下設(shè)數(shù)據(jù)包i有Ci個屬性Ai1=ai1,]]>Ai2=ai2,]]>...,Aici=aici,]]>其中aij為屬性Aij的取值;
將數(shù)據(jù)包i的標(biāo)識i分別送入與屬性Ai1,Ai2,...,AiCi對應(yīng)的隊列組Qi1,Qi2...,QiCi內(nèi),所述標(biāo)識i可采用指針或數(shù)據(jù)包的存儲地址;在每個隊列組Qij內(nèi),將i送入與屬性值aij對應(yīng)的隊列qij內(nèi)。
通過上述多維隊列對數(shù)據(jù)包進(jìn)行多屬性分類排隊后,具有相同屬性值aij的數(shù)據(jù)包在隊列qij中進(jìn)行FIFO排隊。
本發(fā)明還包括隊列組調(diào)度策略,所述隊列組調(diào)度策略包括預(yù)調(diào)度操作、實際調(diào)度操作和隊列組之間的輪詢操作所述預(yù)調(diào)度操作是對一個隊列組內(nèi)的隊列的調(diào)度操作,可采用現(xiàn)有的適用于該隊列組所對應(yīng)的屬性特點的隊列調(diào)度策略,例如優(yōu)先級隊列PQ、或公平隊列FQ、或加權(quán)循環(huán)WRR、或加權(quán)公平隊列WFQ、或赤字循環(huán)DRR等。當(dāng)一個隊列組被輪詢到且非空時,則運行該隊列組的隊列調(diào)度策略,直到一個正在排隊的項(不妨設(shè)數(shù)據(jù)包標(biāo)識i)能夠離開其所在的隊列qij;將該標(biāo)識i從隊列qij中取出;記錄下剛剛被輪詢的隊列號qij,以備下次運行該隊列組的隊列調(diào)度策略時,從下一狀態(tài),即隊列qij+1開始;然后結(jié)束這一次預(yù)調(diào)度操作。
所述實際調(diào)度操作是將得到一次預(yù)調(diào)度操作的數(shù)據(jù)包i的屬性計數(shù)器Gi減1,并檢查是否Ci=0;如果Ci≠0,則結(jié)束這一次實際調(diào)度操作;如果Ci=0,則完成對該數(shù)據(jù)包的最后調(diào)度操作,即將數(shù)據(jù)包i實際調(diào)離全部的隊列組和隊列,并提供預(yù)設(shè)的服務(wù)(例如發(fā)送出去、或處理其請求等);完成預(yù)設(shè)的服務(wù)將需要一段時間,完成后結(jié)束這一次實際調(diào)度操作。
所述的隊列組之間的輪詢操作,具體如下
(a)按照公平輪詢或加權(quán)輪詢的方式輪詢所有的隊列組;(b)如果是空隊列組,則轉(zhuǎn)到下一個隊列組;(c)如果是非空隊列組,則進(jìn)行預(yù)調(diào)度操作,再進(jìn)行實際的調(diào)度操作,然后轉(zhuǎn)到下一個隊列組。
與上述的多屬性排隊方法和隊列組調(diào)度策略相對應(yīng),本發(fā)明還提供多維隊列管理算法,所述多維隊列管理算法設(shè)置一個隊列管理主模塊,且為每個隊列設(shè)置一個管理子模塊。但隊列管理子模塊并不直接進(jìn)行隊列的操作,只是為隊列管理主模塊提供參數(shù),即丟棄數(shù)據(jù)包的概率;由隊列管理主模塊真正執(zhí)行對所有隊列的管理和操作。
所述多維隊列管理算法具體如下當(dāng)數(shù)據(jù)包i到達(dá)時,所述多屬性排隊方式將對其進(jìn)行屬性匹配,并按照其屬性和屬性值選擇隊列組和每個組內(nèi)的一個隊列,設(shè)有Ci個屬性,并設(shè)這些隊列分別為qi1,qi2,...,qiCi;每個隊列所對應(yīng)的管理子模塊按照設(shè)定的隊列管理算法進(jìn)行隊列管理,從而得出每個隊列qij丟棄一個新到達(dá)數(shù)據(jù)包的概率pij;以概率 決定丟棄該數(shù)據(jù)包還是讓它參加排隊;如果允許它排隊,則將它的標(biāo)識i同時加入到qi1,qi2,...,qiCi隊列內(nèi);否則丟棄該數(shù)據(jù)包。
所述管理子模塊根據(jù)隊列長分布、時延分布、到達(dá)過程、丟棄率、服務(wù)時間分布的一種或多種結(jié)合來決定丟棄數(shù)據(jù)包的概率。每個管理子模塊都采用適合于自身特點的隊列管理算法,它可以是現(xiàn)有的任何隊列管理算法,包括RED算法、或BLUE算法、或ARED算法、或PDPC算法,且每個管理子模塊采用的隊列管理算法可以不同。
本發(fā)明通過N個隊列組對應(yīng)數(shù)據(jù)包的N個屬性,每個隊列組設(shè)置最多M個隊列,每個隊列對應(yīng)一個屬性值。通過本發(fā)明提供的隊列調(diào)度策略和隊列管理算法,最大只需要NM個隊列就可以實現(xiàn)分類排隊控制。而且本發(fā)明可應(yīng)用于對網(wǎng)絡(luò)中的數(shù)據(jù)包進(jìn)行細(xì)粒度的控制,可實現(xiàn)多種應(yīng)用系統(tǒng),例如QoS保證、有區(qū)分的服務(wù)、帶寬共享、分類速率控制和過濾、網(wǎng)絡(luò)入侵防御、異常流過濾等,適用面廣。
圖1為本發(fā)明的一個實施例的系統(tǒng)結(jié)構(gòu)圖;圖2為本發(fā)明的隊列調(diào)度原理示意圖;圖3為本發(fā)明的隊列管理原理示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明做進(jìn)一步的說明。
本發(fā)明的系統(tǒng)結(jié)構(gòu)如附圖1所示,首先將系統(tǒng)感興趣的有關(guān)各協(xié)議層的各字段的特征值存入屬性特征庫,以備多屬性匹配時使用。當(dāng)一個數(shù)據(jù)包到達(dá)時,系統(tǒng)將它存入存儲區(qū)內(nèi),并記下其所在地址或本地標(biāo)識。然后開始對該數(shù)據(jù)包進(jìn)行多屬性匹配。將這些屬性和所對應(yīng)的屬性值記錄下來。按照這些屬性找到多維隊列管理模塊中的多個對應(yīng)的隊列組,再按照屬性值找到每個隊列組中的一個隊列,由此得到每個隊列丟棄該數(shù)據(jù)包的概率。再由所有這些丟棄概率得到總的平均丟棄概率??偟钠骄鶃G棄概率就決定了是丟棄還是接納該數(shù)據(jù)包。如果決定丟棄,則將該數(shù)據(jù)包從存儲中清除,并清空其它有關(guān)該數(shù)據(jù)包的記錄;如果決定接納,則將該數(shù)據(jù)包的標(biāo)識或者地址送入多維隊列調(diào)度模塊進(jìn)行排隊服務(wù)。所進(jìn)的隊列就是該數(shù)據(jù)包的各屬性所對應(yīng)的隊列組中與屬性值對應(yīng)的隊列。當(dāng)該數(shù)據(jù)包在所進(jìn)各隊列組均獲得服務(wù)權(quán)以后,該數(shù)據(jù)包就可以離開多維隊列調(diào)度模塊,也即,將該數(shù)據(jù)包的標(biāo)識或存儲地址送給分類服務(wù)模塊,由它從存儲中取出該數(shù)據(jù)包,并提供分類服務(wù)。分類服務(wù)策略可以依據(jù)應(yīng)用系統(tǒng)的不同而不同。例如,最簡單的服務(wù)方式就是將該數(shù)據(jù)包發(fā)送出去。這種方式借助于前述隊列調(diào)度和隊列管理策略,可以保證網(wǎng)絡(luò)中的各分量所占比例在一定范圍內(nèi),避免某些分量異常增高,因而可以應(yīng)用于保證業(yè)務(wù)質(zhì)量、保證各業(yè)務(wù)公平共享網(wǎng)絡(luò)帶寬、保證網(wǎng)絡(luò)諧調(diào)運行、化解攻擊流等各種應(yīng)用系統(tǒng)。較為復(fù)雜的服務(wù)方式是對具有某些屬性的數(shù)據(jù)包提供有區(qū)別的服務(wù)。這種方式除了具有前述的保證網(wǎng)絡(luò)諧調(diào)運行的特點以外,還可以實現(xiàn)對數(shù)據(jù)包的細(xì)粒度的控制,發(fā)現(xiàn)可能存在的異?,F(xiàn)象或者已知的或新型的攻擊。例如從高溢出率的隊列的組合模式可以發(fā)現(xiàn)被丟棄的數(shù)據(jù)包的共同特征,由此可以采取對應(yīng)的策略防御,防止攻擊并減少對正常數(shù)據(jù)包的丟棄。
隊列調(diào)度原理如附圖2所示。首先要確定系統(tǒng)的隊列組數(shù)目和每個隊列組內(nèi)的隊列的個數(shù)。如果系統(tǒng)感興趣的屬性有N個,則需要N個隊列組。如果各屬性分別有M1,M2,...,MN個值,則各隊列組分別需要M1,M2,...,MN個隊列。在確定隊列組數(shù)目和每個隊列組內(nèi)的隊列的個數(shù)以后,需要根據(jù)各屬性的特點,分別確定各隊列組的隊列調(diào)度策略。它們不必采用相同的隊列調(diào)度策略,可以是現(xiàn)有隊列調(diào)度策略中的任意一種,例如PQ、FQ、WRR、WFQ、DRR等,只要它適合于隊列組所對應(yīng)的屬性的特點。各隊列組調(diào)度策略之間也不必相互諧調(diào),它們可以各自獨立運行。
在確定各隊列組的隊列調(diào)度策略以后,需要確定各隊列的最大長度,它應(yīng)該保證排隊項的平均等待時間和丟棄概率在一定范圍內(nèi)。這里需要注意的是,在計算平均等待時間和丟棄概率的時候,服務(wù)時間與被服務(wù)的數(shù)據(jù)包的長度沒有直接關(guān)系,這是因為每個隊列組只完成預(yù)調(diào)度,剛被預(yù)調(diào)度出該隊列組的項,不一定立即得到服務(wù),它可能還需要等待其它的隊列組完成對該數(shù)據(jù)包的預(yù)調(diào)度,才可以獲得后續(xù)的服務(wù)。所以從一個給定的隊列組看來,在它預(yù)調(diào)度出隊列的兩個項之間,有可能有未參加該隊列組排隊的數(shù)據(jù)包得到服務(wù)并造成這兩個項目之間的時延。
當(dāng)一個數(shù)據(jù)包到達(dá)并完成屬性匹配以后,設(shè)有Ci個屬性Ai1=ai1,]]>Ai2=ai2,...,]]>Aici=aici,]]>其中aij是屬性Aij的值,該數(shù)據(jù)包的標(biāo)識i,或指針或數(shù)據(jù)包的存儲地址被模塊復(fù)制成Ci份,并分別送入與屬性Ai1,Ai2,...,AiCi對應(yīng)的隊列組集合的子集Qi1,Qi2,...,QiC1內(nèi)。
在每個隊列組Qi內(nèi),按值分類模塊將數(shù)據(jù)包標(biāo)識i送入與屬性值aij對應(yīng)的隊列qij內(nèi)。所以,具有相同屬性值aij的數(shù)據(jù)包,會在相同的隊列qij內(nèi)進(jìn)行FIFO排隊。
對于一個給定的隊列組Qij,預(yù)調(diào)度模塊可以采用任何預(yù)定的隊列調(diào)度策略,例如PQ、FQ、WRR、WFQ、DRR中的一種。如果該隊列組非空,則運行給定的隊列調(diào)度策略,直到一個正在排隊的項,例如數(shù)據(jù)包標(biāo)識i能夠離開隊列。將該標(biāo)識i從隊列中取出,并記錄下當(dāng)前的狀態(tài),以備下次運行該隊列組的隊列調(diào)度策略時,從下一狀態(tài)開始。在完成這些操作以后,即完成了一次預(yù)調(diào)度以后,進(jìn)行下一步的實際調(diào)度操作。
實際調(diào)度操作首先將剛剛得到一次預(yù)調(diào)度操作的數(shù)據(jù)包i的屬性計數(shù)器Ci減1。然后檢查Ci是否等于0,即該數(shù)據(jù)包是否得到了它所加入的所有隊列組的預(yù)調(diào)度服務(wù)。如果Ci≠0,則說明該數(shù)據(jù)包仍然在某些隊列組中排隊等待服務(wù);如果Ci=0,則說明可以完成對該數(shù)據(jù)包的最后調(diào)度操作,即將數(shù)據(jù)包i的有關(guān)記錄從全部的隊列組和隊列中清除,然后從緩沖區(qū)中取出,送入后續(xù)的分類服務(wù)模塊。完成后續(xù)的分類服務(wù)將需要一段時間。在此期間,所有隊列組停止預(yù)調(diào)度操作,僅僅進(jìn)行新到數(shù)據(jù)包的入隊操作。在完成對數(shù)據(jù)包i的服務(wù)后,將控制權(quán)交回給輪詢模塊。
由輪詢模塊執(zhí)行隊列組之間的輪詢操作。它負(fù)責(zé)輪詢所有的隊列組。如果是空隊列組,則不做任何操作,轉(zhuǎn)到下一個隊列組;如果是非空隊列組,則進(jìn)行預(yù)調(diào)度操作,然后進(jìn)行實調(diào)度操作。除了正在被輪詢到的那個隊列組執(zhí)行所述的預(yù)調(diào)度操作以外,其它隊列組不能進(jìn)行預(yù)調(diào)度操作,但可以進(jìn)行新到項目的入隊操作以及隊列管理操作。
隊列管理原理如附圖3所示。首先確定每個隊列組每個隊列的隊列管理算法,例如RED、BLUE、ARED、PDPC等,這里統(tǒng)稱為AQMn,m,其中AQM代表主動隊列管理算法,n代表第幾個隊列組,m代表該隊列組中的第幾個隊列。每個隊列的隊列管理算法都由一個管理子模塊來執(zhí)行。每個管理子模塊都獨立運行,采用各自的隊列管理算法進(jìn)行隊列管理。但這些隊列管理子模塊并不直接進(jìn)行隊列的操作,例如丟棄溢出的數(shù)據(jù)包等,它們只是根據(jù)隊列長分布、時延分布、到達(dá)過程、丟棄率、服務(wù)時間分布等,采用它們中的部分或全部參數(shù),這些決定于隊列管理算法,來決定丟棄數(shù)據(jù)包的概率。以隊列管理算法RED為例,當(dāng)隊列qij的平均隊列長小于minth時,丟棄新到達(dá)數(shù)據(jù)包的概率為0;當(dāng)平均隊列長大于maxth時,丟棄新到達(dá)數(shù)據(jù)包的概率為1;當(dāng)平均隊列長處于minth和maxth之間時,丟棄新到達(dá)數(shù)據(jù)包的概率為動態(tài)決定的pij。所以,各隊列管理子模塊僅僅為隊列管理主模塊的決策提供所需的參數(shù)。隊列管理主模塊真正執(zhí)行對所有隊列的管理和操作,包括丟棄溢出的數(shù)據(jù)包等。
當(dāng)數(shù)據(jù)包i到達(dá)并完成屬性匹配之后,開始進(jìn)行隊列管理。按照該數(shù)據(jù)包的屬性和屬性值,設(shè)該數(shù)據(jù)包擬加入的隊列分別為qi1,qi2,...,qiCi,每個隊列都按照自己的隊列管理算法由各自的隊列管理子模塊進(jìn)行隊列管理。設(shè)隊列qij丟棄一個新到達(dá)數(shù)據(jù)包的概率為pij,則數(shù)據(jù)包i被正要加入的所有隊列都丟棄的平均概率p為 在計算了平均丟棄概率p以后,按照(0,1)區(qū)間上的均勻分布產(chǎn)生一個隨機(jī)數(shù)R。根據(jù)R大于p否,決定是丟棄該數(shù)據(jù)包還是讓它參加排隊。如果R大于p則允許它排隊,即將它的標(biāo)識i送給后續(xù)的隊列調(diào)度模塊,使得該數(shù)據(jù)包的標(biāo)識i可以同時加入到隊列qi1,qi2,...,qiCi內(nèi);否則丟棄該數(shù)據(jù)包,即將它從緩沖區(qū)內(nèi)清除,并清空與該數(shù)據(jù)包有關(guān)的全部記錄。
權(quán)利要求
1.一種網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),用于對具有多屬性且每個屬性具有多個取值的網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行調(diào)度和管理,其特征在于設(shè)置與網(wǎng)絡(luò)數(shù)據(jù)包的屬性個數(shù)相等的N個隊列組,且每個隊列組i設(shè)置與屬性i取值個數(shù)相等的Mi個隊列,然后將到達(dá)的網(wǎng)絡(luò)數(shù)據(jù)包按屬性和屬性值分類在具體的隊列里排隊進(jìn)行調(diào)度和管理。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),其特征在于所述的排隊方式如下當(dāng)數(shù)據(jù)包i到達(dá)時,進(jìn)行屬性匹配,設(shè)數(shù)據(jù)包i有Ci個屬性Ai1=ai1,Ai2=ai2,···,AiCi=aiCi,]]>其中aij為屬性Aij的取值;將數(shù)據(jù)包i的標(biāo)識i分別送入與屬性Ai1,Ai2,…,AiCi對應(yīng)的隊列組Qi1,Qi2…,QiCi內(nèi),所述標(biāo)識i可采用指針或數(shù)據(jù)包的存儲地址;在每個隊列組Qij內(nèi),將i送入與屬性值aij對應(yīng)的隊列qij內(nèi)。
3.根據(jù)權(quán)利要求2所述的網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),其特征在于具有相同屬性值aij的數(shù)據(jù)包在隊列qij中進(jìn)行FIFO排隊。
4.根據(jù)權(quán)利要求1或2或3所述的網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),其特征在于還包括隊列組調(diào)度策略,所述隊列組調(diào)度策略包括預(yù)調(diào)度操作、實際調(diào)度操作和隊列組之間的輪詢操作;所述預(yù)調(diào)度操作是當(dāng)一個隊列組被輪詢到并且非空時,運行該隊列組的隊列調(diào)度策略,直到任一個正在排隊的數(shù)據(jù)包標(biāo)識能夠離開其所在隊列;將該標(biāo)識從所在隊列中取出;記錄下剛剛被輪詢的隊列號,使得下次運行該隊列組的隊列調(diào)度策略時,知道從下一個隊列開始;結(jié)束這一次預(yù)調(diào)度操作;所述實際調(diào)度操作是將得到一次預(yù)調(diào)度操作的數(shù)據(jù)包i的屬性計數(shù)器Ci減1;檢查是否Ci=0,如果Ci≠0,則結(jié)束這一次實際調(diào)度操作;如果Ci=0,則將數(shù)據(jù)包i實際調(diào)離全部的隊列組和隊列,并提供預(yù)設(shè)的服務(wù);在完成對數(shù)據(jù)包i的服務(wù)以后,結(jié)束這一次實際調(diào)度操作;所述隊列組之間的輪詢操作采用如下方式(a)采用公平輪詢或加權(quán)輪詢的方式輪詢所有的隊列組;(b)如果是空隊列組,則轉(zhuǎn)到下一個隊列組;(c)如果是非空隊列組,則進(jìn)行預(yù)調(diào)度操作,再進(jìn)行實際的調(diào)度操作;然后轉(zhuǎn)到下一個隊列組。
5.根據(jù)權(quán)利要求4所述的網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),其特征在于所述的隊列組調(diào)度策略的預(yù)調(diào)度操作采用的隊列調(diào)度策略可以采用任何一種適合于該隊列組屬性特點的隊列調(diào)度策略,包括優(yōu)先級隊列PQ、或公平隊列FQ、或加權(quán)循環(huán)WRR、或加權(quán)公平隊列WFQ、或赤字循環(huán)DRR,且各隊列組的隊列調(diào)度策略可以不同。
6.根據(jù)權(quán)利要求1和2所述的網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),其特征在于還包括多維隊列管理算法,所述多維隊列管理算法設(shè)置一個隊列管理主模塊,且為每個隊列設(shè)置一個管理子模塊;所述多維隊列管理算法具體如下設(shè)數(shù)據(jù)包i有Ci個屬性,且按照其屬性和屬性值選擇的隊列分別為qi1,qi2,…,qiCi;每個隊列所對應(yīng)的管理子模塊都按照設(shè)定的隊列管理算法進(jìn)行隊列管理,從而得出每個隊列qij丟棄一個新到達(dá)數(shù)據(jù)包的概率pij;以概率Σj=1Cipij/Ci]]>決定丟棄該數(shù)據(jù)包還是讓它參加排隊;如果允許它排隊,則將它的標(biāo)識i同時加入到qi1,qi2,…,qiCi隊列內(nèi);否則丟棄該數(shù)據(jù)包。
7.根據(jù)權(quán)利要求6所述的網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),其特征在于所述管理子模塊根據(jù)隊列長分布、時延分布、到達(dá)過程、丟棄率、服務(wù)時間分布的一種或多種結(jié)合來決定丟棄數(shù)據(jù)包的概率,所述管理子模塊采用的隊列管理算法可以是現(xiàn)有的任何適用的隊列管理算法,包括RED算法、或BLUE算法、或ARED算法、或PDPC算法,且各管理子模塊采用的隊列管理算法可以不同,各自獨立運行。
全文摘要
本發(fā)明提供一種網(wǎng)絡(luò)數(shù)據(jù)流的多維隊列調(diào)度與管理系統(tǒng),用于對具有多屬性且每個屬性具有多個取值的網(wǎng)絡(luò)數(shù)據(jù)流進(jìn)行調(diào)度和管理。該系統(tǒng)設(shè)置有與網(wǎng)絡(luò)數(shù)據(jù)包的屬性個數(shù)相等的N個隊列組,且每個隊列組i設(shè)置有與屬性i取值個數(shù)相等的M
文檔編號H04L12/56GK1801778SQ20051012108
公開日2006年7月12日 申請日期2005年12月29日 優(yōu)先權(quán)日2005年12月29日
發(fā)明者余順爭 申請人:中山大學(xué)