專(zhuān)利名稱(chēng)::一種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)管理和網(wǎng)絡(luò)監(jiān)控
技術(shù)領(lǐng)域:
,特別涉及一種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法。
背景技術(shù):
:急速增長(zhǎng)的用戶(hù)數(shù)量和流量,嚴(yán)重影響關(guān)鍵業(yè)務(wù)正常使用。如何保障關(guān)鍵業(yè)務(wù),進(jìn)行流量管理是關(guān)鍵。增長(zhǎng)帶寬,可能暫時(shí)解決網(wǎng)絡(luò)速度變慢的現(xiàn)象,關(guān)鍵業(yè)務(wù)的網(wǎng)絡(luò)質(zhì)量有所改善。然而增長(zhǎng)的帶寬很快被無(wú)休止的增長(zhǎng)的非關(guān)鍵業(yè)務(wù)流量所占據(jù)。因此合理分配網(wǎng)絡(luò)資源,保障關(guān)鍵業(yè)務(wù)的關(guān)鍵在于(l)如何能夠?qū)捄侠淼姆峙涞矫總€(gè)流;(2)如何實(shí)施監(jiān)控和直接控制各種應(yīng)用流量,根據(jù)不同應(yīng)用程序設(shè)置不同的優(yōu)先級(jí)別,以保證對(duì)關(guān)鍵業(yè)務(wù)應(yīng)用提供快捷、準(zhǔn)確的網(wǎng)絡(luò)服務(wù)。為每個(gè)流分配一個(gè)專(zhuān)有的隊(duì)列,加上適當(dāng)?shù)恼{(diào)度出隊(duì)算法,能夠提供帶寬分配和服務(wù)保障。然而其面臨著多個(gè)難題高速網(wǎng)絡(luò)設(shè)備中同時(shí)存在的流的數(shù)目在百萬(wàn)量級(jí),隨著網(wǎng)絡(luò)帶寬的進(jìn)一步增長(zhǎng),流的數(shù)目也隨之增長(zhǎng)。而在高速網(wǎng)絡(luò)中相鄰兩個(gè)包的時(shí)間間隔只有幾十納秒。如果將百萬(wàn)量級(jí)的流存儲(chǔ)在慢速的DRAM中,不能達(dá)到線(xiàn)速處理;而如果將百萬(wàn)的流存儲(chǔ)在快速存儲(chǔ)器,如SRAM中,成本將很高。流一般定義為網(wǎng)絡(luò)數(shù)據(jù)包頭具有特定相同域的網(wǎng)絡(luò)數(shù)據(jù)包集合(如TCP/IP協(xié)議的五元組)。同一個(gè)流的網(wǎng)絡(luò)數(shù)據(jù)包要求相同的服務(wù)等級(jí)。當(dāng)前學(xué)術(shù)界和工業(yè)界廣泛采用的方法是以秒或者分鐘做為處理時(shí)間粒度(即認(rèn)為在秒或分鐘內(nèi)的存在的流),在此粒度下,系統(tǒng)內(nèi)流的數(shù)目在百萬(wàn)量級(jí)。集成服務(wù)(IntServ)做為調(diào)度結(jié)構(gòu)的先驅(qū),它為每個(gè)同時(shí)存在的流保留資源,由于其處理的流數(shù)目在百萬(wàn)量級(jí)。所以其處理復(fù)雜度高,限制了其廣泛應(yīng)用。另外的一種思路是采用ASIC硬件加速隊(duì)列組織和調(diào)度,然而該種方法開(kāi)發(fā)周期長(zhǎng),成本高,在通用硬件中應(yīng)用并不廣泛。另外一種在Li皿x系統(tǒng)中廣泛使用的調(diào)度算法CBQ(Class-BasedQueueing)MainpageofCBQ.www.icir.org/floyd/cbq.html米用樹(shù)的組織結(jié)構(gòu),根節(jié)點(diǎn)表示真?zhèn)€帶寬資源,其下每個(gè)子節(jié)點(diǎn)代表一種資源分配單位,不同的分支根據(jù)策略可以采用不同的調(diào)度算法。然而該算法僅適合處理高度聚類(lèi)的流,如果要處理細(xì)粒度的流,如一個(gè)具有相同五元組(源IP,源端口,目的IP,目的端口,協(xié)議)的流,該樹(shù)結(jié)構(gòu)的高度將變得很大,從而處理復(fù)雜度高。
發(fā)明內(nèi)容(—)發(fā)明目的本發(fā)明的目的是提供一種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,該方法實(shí)現(xiàn)了全流的服務(wù)區(qū)分和帶寬保證。
發(fā)明內(nèi)容—種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,該方法將相同優(yōu)先級(jí)的流分為一組,組間按優(yōu)先級(jí)調(diào)度,組內(nèi)按差額輪詢(xún)方式調(diào)度,包括以下步驟SI:接收網(wǎng)絡(luò)數(shù)據(jù)包,解析所述網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽;S2:根據(jù)流標(biāo)簽計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,并將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列;S3:網(wǎng)絡(luò)數(shù)據(jù)包組間按優(yōu)先級(jí)、組內(nèi)按出隊(duì)列順序出隊(duì)列;S4:將網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。其中,所述步驟S2包括步驟根據(jù)流標(biāo)簽檢查網(wǎng)絡(luò)數(shù)據(jù)包所屬流是否存在于活躍流表中;計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,若所屬流存在于活躍流表中,將所屬流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加l,否則,獲取流的優(yōu)先級(jí),申請(qǐng)一個(gè)該流的空隊(duì)列,并初始化該流的調(diào)度信息;將所述網(wǎng)絡(luò)數(shù)據(jù)包插入所屬的流隊(duì)列;流隊(duì)列所在優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1;判斷所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為l,若是,則將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為1。其中,所述步驟S2還包括步驟當(dāng)所述流不存在于活躍流表時(shí),將該流插入到活躍流表尾部,并建立流和流隊(duì)列動(dòng)態(tài)映射關(guān)系。其中,所述步驟S3包括步驟找到一個(gè)具有最高優(yōu)先級(jí)的非空優(yōu)先級(jí)組;取得所述優(yōu)先級(jí)組上的一輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包,并更新網(wǎng)絡(luò)數(shù)據(jù)包所在流的剩余配額;判斷所述流的配額是否大于所述網(wǎng)絡(luò)數(shù)據(jù)包的長(zhǎng)度,若是,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列,并更新所述流的配額、網(wǎng)絡(luò)數(shù)據(jù)包數(shù)以及所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù),否則更新所述優(yōu)先級(jí)組出隊(duì)輪;判斷所述流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,在活躍流表中刪除所述流并更新所述優(yōu)先級(jí)組出隊(duì)輪,否則,直接更新所述優(yōu)先級(jí)組出隊(duì)輪;所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)減1;判斷所述優(yōu)先級(jí)組中網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為O,否則結(jié)束。其中,所述初始化流的調(diào)度信息包括初始化流中的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)、流的配額和流的當(dāng)前剩余配額?!N可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度系統(tǒng),包括網(wǎng)絡(luò)數(shù)據(jù)包接收模塊,用于接收網(wǎng)絡(luò)數(shù)據(jù)包,并解析所述網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽;網(wǎng)絡(luò)數(shù)據(jù)包入隊(duì)列模塊,用于根據(jù)流標(biāo)簽計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,并將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列;網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列模塊,用于網(wǎng)絡(luò)數(shù)據(jù)包組間按優(yōu)先級(jí)、組內(nèi)按出隊(duì)列順序出隊(duì)列;網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。其中,所述網(wǎng)絡(luò)數(shù)據(jù)包入隊(duì)列模塊包括活躍流表中流查詢(xún)模塊,用于根據(jù)流標(biāo)簽查詢(xún)網(wǎng)絡(luò)數(shù)據(jù)包所屬流是否存在于活躍流表中;5流隊(duì)列準(zhǔn)備模塊,用于計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,若所屬流存在于活躍流表中,將所屬流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加l,否則,獲取流的優(yōu)先級(jí),申請(qǐng)一個(gè)該流的空隊(duì)列,并初始化該流的調(diào)度信息;流隊(duì)列插入模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包插入所屬的流隊(duì)列;優(yōu)先級(jí)組更新模塊,用于將流隊(duì)列所在優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1;比特向量設(shè)置模塊,用于判斷所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為l,若是,則將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為1。其中,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列模塊包括最高非空優(yōu)先級(jí)組查找模塊,用于找到一個(gè)具有最高優(yōu)先級(jí)的非空優(yōu)先級(jí)組;調(diào)度輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包獲取模塊,用于取得所述優(yōu)先級(jí)組上的一輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包,并更新網(wǎng)絡(luò)數(shù)據(jù)包所在流的剩余配額;出隊(duì)列判斷模塊,用于判斷所述流的配額是否大于所述網(wǎng)絡(luò)數(shù)據(jù)包的長(zhǎng)度,若是,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列,并更新所述流的配額、網(wǎng)絡(luò)數(shù)據(jù)包數(shù)以及所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù),否則更新所述優(yōu)先級(jí)組出隊(duì)輪;流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)判斷模塊,用于判斷所述流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,在活躍流表中刪除所述流并更新所述優(yōu)先級(jí)組出隊(duì)輪,否則,直接更新所述優(yōu)先級(jí)組出隊(duì)輪;優(yōu)先級(jí)組更新模塊,用于將所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)減1;比特向量設(shè)置模塊,用于判斷所述優(yōu)先級(jí)組中網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為0,若是,將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為O,否則結(jié)束。(三)有益效果本發(fā)明提出的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法實(shí)現(xiàn)了全流的服務(wù)區(qū)分和帶寬保證,通過(guò)合成流量的實(shí)驗(yàn),表明本方法確實(shí)在服務(wù)保證上有較高的性能。圖1是根據(jù)本發(fā)明的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法的基本流程圖;圖2是根據(jù)本發(fā)明的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法的進(jìn)隊(duì)列流程圖;圖3是根據(jù)本發(fā)明的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法的出隊(duì)列流程圖;圖4是根據(jù)本發(fā)明的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法的實(shí)驗(yàn)中三個(gè)不同流的活躍流表長(zhǎng)度圖;圖5是根據(jù)本發(fā)明的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法的實(shí)驗(yàn)中不同速率流相對(duì)偏差的累積概率分布曲線(xiàn)。具體實(shí)施例方式本發(fā)明提出的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,簡(jiǎn)稱(chēng)AFL-SFQ-DRR(活躍流表_嚴(yán)格優(yōu)先級(jí)隊(duì)列_差額輪詢(xún)調(diào)度)方法,將相同優(yōu)先級(jí)的流分為一組,組間按優(yōu)先級(jí)調(diào)度,組內(nèi)按差額輪詢(xún)方式調(diào)度。結(jié)合如下。如圖1所示,步驟Sl接收網(wǎng)絡(luò)數(shù)據(jù)包p,并解析網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽fi,流標(biāo)簽用以下數(shù)據(jù)結(jié)構(gòu)描述Header{int32sIP,dIP;〃32位源地址和目標(biāo)地址int16sPort,dPort;〃32位源端口和目標(biāo)端口int8protocol;〃8位協(xié)議};步驟S2根據(jù)流標(biāo)簽計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,并將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列。如圖2所示,該步驟中,根據(jù)流標(biāo)簽fi查詢(xún)?cè)摼W(wǎng)絡(luò)數(shù)據(jù)包所屬流fi_>qk是否存在于活躍流表中;若存在,將所屬流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1,即fi_>PktNum++,否則獲取流的優(yōu)先級(jí)(由網(wǎng)絡(luò)系統(tǒng)管理員事先設(shè)定,O為優(yōu)先級(jí)最高,以下遞減),申請(qǐng)一個(gè)該流的空隊(duì)列qk,若有優(yōu)先級(jí)組pri的優(yōu)先級(jí)與該空隊(duì)列的優(yōu)先級(jí)相同,則將該空隊(duì)列加入該優(yōu)先級(jí)組,否則,該空隊(duì)列為一個(gè)優(yōu)先級(jí)組pri,隨后初始化該流的調(diào)度信息,即初始化流中的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)fi_>PktsN咖=1,流的配額fi_>Quantum=Qi(—個(gè)給定值)和流的當(dāng)前剩余配額fi->DC=0;在入隊(duì)前計(jì)算該網(wǎng)絡(luò)數(shù)據(jù)包p的出隊(duì)輪,然后直接將網(wǎng)絡(luò)數(shù)據(jù)包p放到出隊(duì)輪所對(duì)應(yīng)的隊(duì)列qk中,即網(wǎng)絡(luò)數(shù)據(jù)包所屬的流隊(duì)列;將流隊(duì)列所在的優(yōu)先級(jí)組pri的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1;判斷該優(yōu)先級(jí)組pri的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為l,若是則將比特向量中所述優(yōu)先級(jí)組pri對(duì)應(yīng)的比特向量位設(shè)為l,否則不對(duì)比特向量做任何處理;當(dāng)網(wǎng)絡(luò)數(shù)據(jù)包P所屬流不存在于活躍流表中時(shí),還要將所屬流加入活躍流表尾部,并建立流和流隊(duì)列動(dòng)態(tài)映射關(guān)系。其中活躍流表用于記錄流的特征,由于在進(jìn)隊(duì)時(shí)需要計(jì)算每個(gè)流的差額,權(quán)重等,以確定出隊(duì)順序,為加快進(jìn)隊(duì)運(yùn)算,將調(diào)度的差額等,寫(xiě)入到活躍流表Entry中。因?yàn)楸眄?xiàng)操作包括插入與刪除,所以采用雙鏈表結(jié)構(gòu)。其數(shù)據(jù)結(jié)構(gòu)如下所示AFLEntry{Headerhead;intl6Queuelndexint16Quantum;int32ByteN咖;iht32PacketN咖;int32priority;AFLEntry*pre;AFLEntry*next;};其中head存儲(chǔ)流標(biāo)簽;Queuelndex為動(dòng)態(tài)分配隊(duì)列的索引;Quantum為為流分配的配額,ByteNum為當(dāng)前流的字節(jié)數(shù),PacketNum為網(wǎng)絡(luò)數(shù)據(jù)包數(shù)。Priority為流的優(yōu)先級(jí)。charPriorityGroup[16]來(lái)存儲(chǔ)優(yōu)先級(jí)組,其組數(shù)一般為2的整數(shù)次冪,如128,為維護(hù)以上向量,需要記錄當(dāng)前組內(nèi)網(wǎng)絡(luò)數(shù)據(jù)包數(shù),所以需要有一個(gè)向量記錄每個(gè)組內(nèi)當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)目lnt32PGPacketNum[128]。為快速索引到非空的最高優(yōu)先級(jí)組,采用一個(gè)位向量,每比特代表一個(gè)優(yōu)先級(jí)組。如果對(duì)應(yīng)組為非空,則該比特為l,否則為O。優(yōu)先級(jí)調(diào)7度時(shí),檢查比特向量,調(diào)度第一個(gè)非空比特對(duì)應(yīng)的組。步驟S3,網(wǎng)絡(luò)數(shù)據(jù)包組間按優(yōu)先級(jí)、組內(nèi)按出隊(duì)列順序出隊(duì)列,即當(dāng)優(yōu)先級(jí)組i為空時(shí),組(i+1)才有能獲得調(diào)度,組內(nèi)的出隊(duì)順序在入隊(duì)時(shí)已確定。如圖3所示,該步驟中,根據(jù)比特向量找到一個(gè)具有最高優(yōu)先級(jí)的非空優(yōu)先級(jí)組K;取得該優(yōu)先級(jí)組上的一輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包P,并更新網(wǎng)絡(luò)數(shù)據(jù)包P所在流fi的剩余配額,即;fi->DC+=fi->Quantum;判斷該流的配額fi_>DC是否8大于所述網(wǎng)絡(luò)數(shù)據(jù)包p的長(zhǎng)度,若是,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列,并更新所述流的配額fi_>DC-=fi->Quantum,網(wǎng)絡(luò)數(shù)據(jù)包數(shù)fi_>PksNum—以及優(yōu)先級(jí)組K的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)K->PksNum—,否則更新所述優(yōu)先級(jí)組出隊(duì)輪K->dequeuer0und++;判斷流fi的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為0,若是,從活躍流表中刪除該流fi,并更新所述優(yōu)先級(jí)組出隊(duì)輪K->dequeuer0und++,否則,直接更新所述優(yōu)先級(jí)組出隊(duì)輪K->dequeuer0und++;優(yōu)先級(jí)組K的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)減1;判斷優(yōu)先級(jí)組K中網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,將比特向量中所述優(yōu)先級(jí)組K對(duì)應(yīng)的比特向量位設(shè)為O,否則結(jié)束。其中,低優(yōu)先級(jí)的出隊(duì)可能被高優(yōu)先級(jí)隊(duì)列中斷,為了保持低優(yōu)先級(jí)隊(duì)列出隊(duì)的順序性,int32LastDequeueRound[128]為每個(gè)組保存上一次出隊(duì)位置。每個(gè)優(yōu)先級(jí)組內(nèi),出隊(duì)順序已經(jīng)在進(jìn)隊(duì)時(shí)確定。其結(jié)構(gòu)為每輪調(diào)度的鏈表。出隊(duì)時(shí)順序訪問(wèn)鏈表即可。該機(jī)制僅在SRAM中存儲(chǔ)每個(gè)鏈表的頭和尾部指針。系統(tǒng)同時(shí)存在的出隊(duì)輪數(shù)為M,為簡(jiǎn)化處理將其看成2的整數(shù)次冪。如256。Packe洲o皿dHead[256];Packet氺Ro皿dRear[256];本發(fā)明還提出了一種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度系統(tǒng),該系統(tǒng)包括網(wǎng)絡(luò)數(shù)據(jù)包接收模塊,用于接收網(wǎng)絡(luò)數(shù)據(jù)包,并解析所述網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽;網(wǎng)絡(luò)數(shù)據(jù)包入隊(duì)列模塊,用于根據(jù)流標(biāo)簽計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,并將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列;網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列模塊,用于網(wǎng)絡(luò)數(shù)據(jù)包組間按優(yōu)先級(jí)、組內(nèi)按出隊(duì)列順序出隊(duì)列;網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。其中,所述網(wǎng)絡(luò)數(shù)據(jù)包入隊(duì)列模塊包括活躍流表中流查詢(xún)模塊,用于根據(jù)流標(biāo)簽查詢(xún)網(wǎng)絡(luò)數(shù)據(jù)包所屬流是否存在于活躍流表中;流隊(duì)列準(zhǔn)備模塊,用于計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,若所屬流存在于活躍流表中,將所屬流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加l,否則,獲取流的優(yōu)先級(jí),申請(qǐng)一個(gè)該流的空隊(duì)列,并初始化該流的調(diào)度信息;流隊(duì)列插入模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包插入所屬的流隊(duì)列;優(yōu)先級(jí)組更新模塊,用于將流隊(duì)列所在優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1;比特向量設(shè)置模塊,用于判斷所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為l,若是,則將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為1。其中,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列模塊包括最高非空優(yōu)先級(jí)組查找模塊,用于找到一個(gè)具有最高優(yōu)先級(jí)的非空優(yōu)先級(jí)組;調(diào)度輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包獲取模塊,用于取得所述優(yōu)先級(jí)組上的一輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包,并更新網(wǎng)絡(luò)數(shù)據(jù)包所在流的剩余配額;出隊(duì)列判斷模塊,用于判斷所述流的配額是否大于所述網(wǎng)絡(luò)數(shù)據(jù)包的長(zhǎng)度,若是,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列,并更新所述流的配額、網(wǎng)絡(luò)數(shù)據(jù)包數(shù)以及所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù),否則更新所述優(yōu)先級(jí)組出隊(duì)輪;流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)判斷模塊,用于判斷所述流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,在活躍流表中刪除所述流并更新所述優(yōu)先級(jí)組出隊(duì)輪,否則,直接更新所述優(yōu)先級(jí)組出隊(duì)輪;優(yōu)先級(jí)組更新模塊,用于將所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)減1;比特向量設(shè)置模塊,用于判斷所述優(yōu)先級(jí)組中網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為0,若是,將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為O,否則結(jié)束。以下是本發(fā)明的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法的性能比較。測(cè)試數(shù)據(jù)采用真實(shí)流量和仿真流量的合成。將真實(shí)流量作為背景流,向其添加不同速率的流以檢驗(yàn)本發(fā)明的性能。為增加本發(fā)明的可信性,真實(shí)流量采用了NLANR提供的0C3、0C48和0C192三種不同速率的流。通過(guò)調(diào)整,使負(fù)載都為0.95。其活躍流的分布如圖4所示。從中可以看到,最壞情況下活躍流僅為256,遠(yuǎn)小于表一中的并發(fā)流的數(shù)目(flowsinprogress)。表1流信息統(tǒng)計(jì)<table>tableseeoriginaldocumentpage9</column></row><table>向真實(shí)流量中合成1、8、16、32、64、128六種不同速率的仿真流量用作被保護(hù)流。每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的大小為1024byte。比較通過(guò)活躍流表的三種機(jī)制對(duì)流的保護(hù)效果。本方法簡(jiǎn)稱(chēng)為AFL-SFQ-DRR(活躍流表_嚴(yán)格優(yōu)先級(jí)隊(duì)列_差額輪詢(xún)調(diào)度)。另外兩種為AFL-FIFO和AFL-DRR。相鄰網(wǎng)絡(luò)數(shù)據(jù)包的時(shí)延是測(cè)試網(wǎng)速的一個(gè)重要指標(biāo)。此處定義期待時(shí)間=網(wǎng)絡(luò)數(shù)據(jù)包長(zhǎng)度/流速而相對(duì)偏差定義為相對(duì)偏差=(實(shí)驗(yàn)結(jié)果_期待時(shí)間)/期待時(shí)間。從圖5(a)1Mbps流的相對(duì)偏差、(b)32Mbps流的相對(duì)偏差和(c)128Mbps流的相對(duì)偏差中可看出本方法的相對(duì)偏差較小,如圖中藍(lán)色曲線(xiàn)所示。本方法可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法通過(guò)使用活躍流表,僅為系統(tǒng)中同時(shí)存在的流動(dòng)態(tài)綁定物理隊(duì)列,從而實(shí)現(xiàn)了全流隊(duì)列。在此基礎(chǔ)上增加了兩層調(diào)度策略,實(shí)現(xiàn)了全流的服務(wù)區(qū)分和帶寬保證。通過(guò)合成流量的實(shí)驗(yàn),表明本方法確實(shí)在服務(wù)保證上有較高的性能。隨著互聯(lián)網(wǎng)的廣泛應(yīng)用,各種應(yīng)用的興起,對(duì)網(wǎng)絡(luò)有著不同的時(shí)延和帶寬要求。通過(guò)細(xì)粒度的服務(wù)區(qū)分和帶寬保證,直接關(guān)系到每應(yīng)用的推廣和用戶(hù)體驗(yàn)。本方法通過(guò)采用全流優(yōu)先級(jí)調(diào)度,并且整個(gè)數(shù)據(jù)結(jié)構(gòu)限制在高速SRAM中,使其易于在高速網(wǎng)絡(luò)中使用和擴(kuò)展。以上實(shí)施方式僅用于說(shuō)明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)
技術(shù)領(lǐng)域:
的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專(zhuān)利保護(hù)范圍應(yīng)由權(quán)利要求限定。權(quán)利要求一種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,其特征在于,將相同優(yōu)先級(jí)的流分為一組,組間按優(yōu)先級(jí)調(diào)度,組內(nèi)按差額輪詢(xún)方式調(diào)度,包括以下步驟S1接收網(wǎng)絡(luò)數(shù)據(jù)包,解析所述網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽;S2根據(jù)流標(biāo)簽計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,并將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列;S3網(wǎng)絡(luò)數(shù)據(jù)包組間按優(yōu)先級(jí)、組內(nèi)按出隊(duì)列順序出隊(duì)列;S4將網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。2.如權(quán)利要求1所述的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,其特征在于,所述步驟S2包括步驟根據(jù)流標(biāo)簽檢查網(wǎng)絡(luò)數(shù)據(jù)包所屬流是否存在于活躍流表中;計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,若所屬流存在于活躍流表中,將所屬流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加l,否則,獲取流的優(yōu)先級(jí),申請(qǐng)一個(gè)該流的空隊(duì)列,并初始化該流的調(diào)度信息;將所述網(wǎng)絡(luò)數(shù)據(jù)包插入所屬的流隊(duì)列;流隊(duì)列所在優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1;判斷所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為l,若是,則將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為l。3.如權(quán)利要求2所述的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,其特征在于,所述步驟S2還包括步驟當(dāng)所述流不存在于活躍流表時(shí),將該流插入到活躍流表尾部,并建立流和流隊(duì)列動(dòng)態(tài)映射關(guān)系。4.如權(quán)利要求1所述的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,其特征在于,所述步驟S3包括步驟找到一個(gè)具有最高優(yōu)先級(jí)的非空優(yōu)先級(jí)組;取得所述優(yōu)先級(jí)組上的一輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包,并更新網(wǎng)絡(luò)數(shù)據(jù)包所在流的剩余配額;判斷所述流的配額是否大于所述網(wǎng)絡(luò)數(shù)據(jù)包的長(zhǎng)度,若是,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列,并更新所述流的配額、網(wǎng)絡(luò)數(shù)據(jù)包數(shù)以及所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù),否則更新所述優(yōu)先級(jí)組出隊(duì)輪;判斷所述流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,在活躍表中刪除所述流并更新所述優(yōu)先級(jí)組出隊(duì)輪,否則,直接更新所述優(yōu)先級(jí)組出隊(duì)輪;所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)減1;判斷所述優(yōu)先級(jí)組中網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為0,若是,將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為O,否則結(jié)束。5.如權(quán)利要求2或4所述的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,其特征在于,所述初始化流的調(diào)度信息包括初始化流中的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)、流的配額和流的當(dāng)前剩余配額。6.—種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度系統(tǒng),其特征在于,包括網(wǎng)絡(luò)數(shù)據(jù)包接收模塊,用于接收網(wǎng)絡(luò)數(shù)據(jù)包,并解析所述網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽;網(wǎng)絡(luò)數(shù)據(jù)包入隊(duì)列模塊,用于根據(jù)流標(biāo)簽計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,并將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列;網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列模塊,用于網(wǎng)絡(luò)數(shù)據(jù)包組間按優(yōu)先級(jí)、組內(nèi)按出隊(duì)列順序出隊(duì)列;網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。7.如權(quán)利要求6所述的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度系統(tǒng),其特征在于,所述網(wǎng)絡(luò)數(shù)據(jù)包入隊(duì)列模塊包括活躍流表中流查詢(xún)模塊,用于根據(jù)流標(biāo)簽查詢(xún)網(wǎng)絡(luò)數(shù)據(jù)包所屬流是否存在于活躍流表中;流隊(duì)列準(zhǔn)備模塊,用于計(jì)算網(wǎng)絡(luò)數(shù)據(jù)包組內(nèi)出隊(duì)列順序,若所屬流存在于活躍流表中,將所屬流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加l,否則,獲取流的優(yōu)先級(jí),申請(qǐng)一個(gè)該流的空隊(duì)列,并初始化該流的調(diào)度信息;流隊(duì)列插入模塊,用于將網(wǎng)絡(luò)數(shù)據(jù)包插入所屬的流隊(duì)列;優(yōu)先級(jí)組更新模塊,用于將流隊(duì)列所在優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)加1;比特向量設(shè)置模塊,用于判斷所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為l,若是,則將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為1。8.如權(quán)利要求6所述的可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度系統(tǒng),其特征在于,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列模塊包括最高非空優(yōu)先級(jí)組查找模塊,用于找到一個(gè)具有最高優(yōu)先級(jí)的非空優(yōu)先級(jí)組;調(diào)度輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包獲取模塊,用于取得所述優(yōu)先級(jí)組上的一輪鏈表頭的網(wǎng)絡(luò)數(shù)據(jù)包,并更新網(wǎng)絡(luò)數(shù)據(jù)包所在流的剩余配額;出隊(duì)列判斷模塊,用于判斷所述流的配額是否大于所述網(wǎng)絡(luò)數(shù)據(jù)包的長(zhǎng)度,若是,所述網(wǎng)絡(luò)數(shù)據(jù)包出隊(duì)列,并更新所述流的配額、網(wǎng)絡(luò)數(shù)據(jù)包數(shù)以及所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù),否則更新所述優(yōu)先級(jí)組出隊(duì)輪;流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)判斷模塊,用于判斷所述流的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為0,若是,則在活躍流表中刪除所述流并更新所述優(yōu)先級(jí)組出隊(duì)輪,否則,直接更新所述優(yōu)先級(jí)組出隊(duì)輪;優(yōu)先級(jí)組更新模塊,用于將所述優(yōu)先級(jí)組的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)減1;比特向量設(shè)置模塊,用于判斷所述優(yōu)先級(jí)組中網(wǎng)絡(luò)數(shù)據(jù)包數(shù)是否為O,若是,將比特向量中所述優(yōu)先級(jí)組對(duì)應(yīng)的比特向量位設(shè)為O,否則結(jié)束。全文摘要本發(fā)明公開(kāi)了一種可擴(kuò)展的全流優(yōu)先級(jí)調(diào)度方法,所述方法將同優(yōu)先級(jí)的流分為一組,組間按優(yōu)先級(jí)調(diào)度,組內(nèi)按差額輪詢(xún)方式調(diào)度,包括以下步驟接收網(wǎng)絡(luò)數(shù)據(jù)包,檢查所述網(wǎng)絡(luò)數(shù)據(jù)包流標(biāo)簽;根據(jù)流標(biāo)簽將網(wǎng)絡(luò)數(shù)據(jù)包插入到所屬流隊(duì)列,同時(shí)計(jì)算組內(nèi)出隊(duì)列順序;網(wǎng)絡(luò)數(shù)據(jù)包按組間優(yōu)先級(jí)、組內(nèi)出隊(duì)列順序出隊(duì)列;將網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送出去。該方法通過(guò)使用活躍流表,僅為系統(tǒng)中同時(shí)存在的流動(dòng)態(tài)綁定物理隊(duì)列,從而實(shí)現(xiàn)了全流隊(duì)列。在此基礎(chǔ)上增加了兩層調(diào)度策略,實(shí)現(xiàn)了細(xì)粒度全流的服務(wù)區(qū)分和帶寬保證,通過(guò)合成流量的實(shí)驗(yàn),表明本方法確實(shí)在服務(wù)保證上有較高的性能。文檔編號(hào)H04L12/56GK101714947SQ20091023681公開(kāi)日2010年5月26日申請(qǐng)日期2009年10月30日優(yōu)先權(quán)日2009年10月30日發(fā)明者李軍,李國(guó)棟,薛一波,陳震申請(qǐng)人:清華大學(xué)