專(zhuān)利名稱(chēng):一種調(diào)度數(shù)據(jù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域中的數(shù)據(jù)處理技術(shù),尤其涉及一種調(diào)度數(shù)據(jù)的方法及裝置。
背景技術(shù):
通信測(cè)試儀,特別是數(shù)據(jù)通信測(cè)試儀通常都包括數(shù)據(jù)產(chǎn)生模塊、數(shù)據(jù)分析模塊、接口模塊、主控模塊(帶單板軟件)和終端操作程序,各模塊的關(guān)系如圖1所示。
終端操作程序是測(cè)試儀的控制臺(tái),它通常是一個(gè)包括人機(jī)界面的終端程序。
主控模塊,是一個(gè)微處理器(CPU)控制系統(tǒng),實(shí)現(xiàn)對(duì)測(cè)試儀各個(gè)硬件模塊的配置、控制和信息處理,同時(shí)也是硬件和終端程序的通信橋梁。
數(shù)據(jù)產(chǎn)生模塊,主要實(shí)現(xiàn)測(cè)試數(shù)據(jù)的產(chǎn)生,是測(cè)試儀的數(shù)據(jù)源,通常由高速的特定用途集成電路(Application Sepcific Imegrated Circuit,AISC)或大規(guī)模邏輯器件實(shí)現(xiàn)。
數(shù)據(jù)分析模塊,是測(cè)試儀對(duì)接收的數(shù)據(jù)進(jìn)行分析、統(tǒng)計(jì)、捕捉等功能的模塊,通常也是由高速的AISC或大規(guī)模邏輯器件實(shí)現(xiàn)。
物理接口模塊,是測(cè)試儀的對(duì)外測(cè)試接口,它通常包括物理層的處理,多數(shù)測(cè)試儀具有多個(gè)端口。
一個(gè)測(cè)試儀的數(shù)據(jù)產(chǎn)生過(guò)程通常為終端程序給出數(shù)據(jù)產(chǎn)生的條件,通過(guò)主控模塊將條件下發(fā)到數(shù)據(jù)產(chǎn)生模塊,由數(shù)據(jù)產(chǎn)生模塊根據(jù)終端的約定條件產(chǎn)生數(shù)據(jù),經(jīng)物理接口發(fā)送出去。當(dāng)然有時(shí)主控模塊也會(huì)配合數(shù)據(jù)產(chǎn)生模塊產(chǎn)生數(shù)據(jù)。
現(xiàn)有技術(shù)中,測(cè)試儀的數(shù)據(jù)產(chǎn)生主要有以下幾種方式1、單端口測(cè)試儀的簡(jiǎn)單數(shù)據(jù)產(chǎn)生方法如圖2所示,該種方案構(gòu)成簡(jiǎn)單,通常不需要數(shù)據(jù)的調(diào)度。其實(shí)現(xiàn)方案是在數(shù)據(jù)產(chǎn)生側(cè),提供一個(gè)RAM用于存放發(fā)送的測(cè)試數(shù)據(jù),F(xiàn)PGA依次從RAM中讀取數(shù)據(jù)并發(fā)送,讀完RAM后再?gòu)腞AM的起始地址開(kāi)發(fā)讀數(shù)據(jù),這樣循環(huán)下去。讀出的數(shù)據(jù)經(jīng)過(guò)多個(gè)數(shù)據(jù)產(chǎn)生功能子模塊進(jìn)行處理后發(fā)送到物理端口。
2、單端口測(cè)試儀的多測(cè)試流調(diào)度的數(shù)據(jù)產(chǎn)生方法如圖3所示,該方法與第1種方法的不同點(diǎn)是,把RAM劃分為幾個(gè)流量發(fā)生器(Generator),每個(gè)Generator包括多種數(shù)據(jù)。為此數(shù)據(jù)產(chǎn)生的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)中增加對(duì)Generator的調(diào)度。調(diào)度實(shí)現(xiàn)對(duì)不同Generator發(fā)送的順序、數(shù)量等等進(jìn)行協(xié)調(diào)、處理。
在本申請(qǐng)中,流量發(fā)生器(Generator)是指一個(gè)能產(chǎn)生具有某種相同功能特征的測(cè)試數(shù)據(jù)流的單位,通常是一組數(shù)據(jù)包。
3、基于單端口模塊構(gòu)建的多端口測(cè)試儀的數(shù)據(jù)產(chǎn)生方法該方案是針對(duì)上述兩種方案的簡(jiǎn)單堆砌,以使一臺(tái)測(cè)試儀可以產(chǎn)生出多個(gè)物理端口。
上述方法具有以下缺點(diǎn)1、目前的通信設(shè)備通常都有很高的端口密度,因此,一個(gè)端口的測(cè)試儀和端口密度低的測(cè)試儀通常不能滿(mǎn)足現(xiàn)在通信設(shè)備的測(cè)試需求。
2、獨(dú)立的端口拼成多個(gè)端口的情況,通常需要的器件多,所以測(cè)試儀的體積通常較大,測(cè)試儀的成本較高。
3、產(chǎn)生的數(shù)據(jù)類(lèi)型單一,通常不能構(gòu)建功能更靈活、更強(qiáng)大的測(cè)試儀。
發(fā)明內(nèi)容
本發(fā)明提供一種調(diào)度數(shù)據(jù)的方法及裝置,以解決現(xiàn)有寬帶測(cè)試設(shè)備中存在端口數(shù)量少和數(shù)據(jù)構(gòu)建類(lèi)型單一的問(wèn)題。
為解決上述問(wèn)題,本發(fā)明提供以下技術(shù)方案一種調(diào)度數(shù)據(jù)的方法,用于對(duì)多個(gè)端口的數(shù)據(jù)進(jìn)行調(diào)度,所述端口包含一個(gè)或多個(gè)流量發(fā)生器,各流量發(fā)生器包含有一個(gè)或多個(gè)數(shù)據(jù)包;所述方法包括
確定步驟,根據(jù)每個(gè)端口各流量發(fā)生器的數(shù)據(jù)流量占該端口總流量的比值確定這些比值的最大公約數(shù)和各流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;設(shè)置步驟,分別為端口的各流量發(fā)生器設(shè)置用于累計(jì)該流量發(fā)生器被輪詢(xún)的次數(shù)的第一計(jì)數(shù)器,各第一計(jì)數(shù)器的最大值為對(duì)應(yīng)流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;調(diào)度步驟,用于輪詢(xún)各端口,在每次輪詢(xún)一個(gè)端口時(shí)僅從該端口的一個(gè)流量發(fā)生器中讀取最大公約數(shù)數(shù)量的數(shù)據(jù)包存入發(fā)送緩存,和更新對(duì)應(yīng)的第一計(jì)數(shù)器,并且在同一端口,只有前一次被輪詢(xún)的流量發(fā)生器的輪詢(xún)次數(shù)已達(dá)到對(duì)應(yīng)的第一計(jì)數(shù)器的最大值時(shí),當(dāng)前的輪詢(xún)才從該端口的下一個(gè)流量發(fā)生器讀取數(shù)據(jù)包。
一種調(diào)度數(shù)據(jù)的裝置,包括主控模塊、數(shù)據(jù)產(chǎn)生模塊和物理接口模塊;該數(shù)據(jù)產(chǎn)生模塊具有用于存儲(chǔ)端口的數(shù)據(jù)的存儲(chǔ)器;還包括調(diào)度模塊,該調(diào)度模塊包括復(fù)數(shù)個(gè)調(diào)度單元和對(duì)應(yīng)數(shù)量的緩存單元,所述存儲(chǔ)器存儲(chǔ)有復(fù)數(shù)個(gè)端口的數(shù)據(jù);各個(gè)調(diào)度單元分別根據(jù)各端口及端口的數(shù)據(jù)的狀態(tài),輪流從所述存儲(chǔ)器中讀取一個(gè)端口的數(shù)據(jù)并存儲(chǔ)到對(duì)應(yīng)的一個(gè)緩存單元。
本發(fā)明具有以下有益效果1、采用本發(fā)明可以實(shí)現(xiàn)具有多個(gè)端口的測(cè)試儀的端口調(diào)度。
2、在端口下可以包含多個(gè)流量發(fā)生器(Generator),并對(duì)這些Generator進(jìn)行調(diào)度。
3、每個(gè)Generator還可以包含大量的數(shù)據(jù)包(Flow),實(shí)現(xiàn)這些數(shù)據(jù)包的連續(xù)發(fā)送。這種靈活的、大量的組合為開(kāi)發(fā)復(fù)雜的測(cè)試儀提供了可行的方案。
4、本發(fā)明的調(diào)度方式可以通過(guò)FPGA實(shí)現(xiàn),因此對(duì)測(cè)試儀的可擴(kuò)展性和靈活性提供了很好的支持,同時(shí),也降低了儀器的構(gòu)成成本。
圖1為現(xiàn)有技術(shù)中通信測(cè)試儀的基本結(jié)構(gòu)框圖;圖2為現(xiàn)有技術(shù)中單端口測(cè)試儀產(chǎn)生數(shù)據(jù)的示意圖;
圖3為現(xiàn)有技術(shù)中單端口測(cè)試儀的多測(cè)試流調(diào)度的數(shù)據(jù)產(chǎn)生示意圖;圖4為本發(fā)明測(cè)試儀的調(diào)度模塊的結(jié)構(gòu)示意圖;圖5為本發(fā)明的流程圖。
具體實(shí)施例方式
在本發(fā)明中,流量發(fā)生器(Generator)是指一個(gè)能產(chǎn)生具有某種相同功能特征的測(cè)試數(shù)據(jù)流的單位,通常產(chǎn)生一組數(shù)據(jù)包。數(shù)據(jù)包(Flow)是指具有某一種固定特性的單一數(shù)據(jù)包,是一個(gè)特定的數(shù)據(jù)包。
為了在測(cè)試儀中支持多個(gè)端口和使每個(gè)端口可支持多種數(shù)據(jù)流調(diào)度的數(shù)據(jù)產(chǎn)生方法,本發(fā)明的調(diào)度數(shù)據(jù)的裝置在現(xiàn)有的測(cè)試儀的數(shù)據(jù)產(chǎn)生模塊中增加調(diào)度模塊,其結(jié)構(gòu)如圖4所示,包括主控模塊、數(shù)據(jù)產(chǎn)生模塊和物理接口模塊;該數(shù)據(jù)產(chǎn)生模塊具有用于存儲(chǔ)端口的數(shù)據(jù)的存儲(chǔ)器;還包括調(diào)度模塊,該調(diào)度模塊包括復(fù)數(shù)個(gè)調(diào)度單元和對(duì)應(yīng)數(shù)量的緩存單元,所述存儲(chǔ)器存儲(chǔ)有復(fù)數(shù)個(gè)端口的數(shù)據(jù);各個(gè)調(diào)度單元分別根據(jù)各端口及端口的數(shù)據(jù)的狀態(tài),輪流從所述存儲(chǔ)器中讀取一個(gè)端口的數(shù)據(jù)并存儲(chǔ)到對(duì)應(yīng)的一個(gè)緩存單元。。
圖4中數(shù)據(jù)產(chǎn)生側(cè)的存儲(chǔ)器RAM用于存儲(chǔ)多個(gè)端口的數(shù)據(jù),每個(gè)端口包含有一個(gè)或多個(gè)Generator,每個(gè)流量發(fā)生器包含有多個(gè)Flow(在圖4中,端口簡(jiǎn)稱(chēng)為P,Generator簡(jiǎn)稱(chēng)為G,F(xiàn)low簡(jiǎn)稱(chēng)為F)。
調(diào)度模塊包括多個(gè)調(diào)度單元和對(duì)應(yīng)數(shù)量的緩存單元,在本實(shí)施例中緩存單元為先進(jìn)先出(FIFO)隊(duì)列,也是發(fā)送數(shù)據(jù)的緩存單元。調(diào)度單元與緩存單元之間具有接口,調(diào)度單元根據(jù)端口、Genertor和Flow的狀態(tài)進(jìn)行調(diào)度,即控制對(duì)RAM的數(shù)據(jù)讀取并將數(shù)據(jù)存入對(duì)應(yīng)的FIFO隊(duì)列。
為了在調(diào)度過(guò)程中對(duì)端口的發(fā)送速率進(jìn)行動(dòng)態(tài)調(diào)整,調(diào)度模塊中還包括多個(gè)速率調(diào)整單元,每個(gè)速率調(diào)整單元對(duì)應(yīng)一個(gè)FIFO隊(duì)列,主要用于提高從FIFO隊(duì)列讀出數(shù)據(jù)的速度(當(dāng)然根據(jù)需要也可以是降低速度)。
為了方便數(shù)據(jù)調(diào)度,首先根據(jù)每個(gè)端口中各Genertor的數(shù)據(jù)流量占該端口總流量的比值確定這些比值的最大公約數(shù)和各流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;其次,分別為端口中的各Genertor設(shè)置用于累計(jì)該Genertor被輪詢(xún)的次數(shù)的第一計(jì)數(shù)器,各第一計(jì)數(shù)器的最大值為對(duì)應(yīng)Genertor的數(shù)據(jù)流量的權(quán)值;然后對(duì)各端口進(jìn)行輪詢(xún)。在每次輪詢(xún)一個(gè)端口時(shí)僅從該端口的一個(gè)流量發(fā)生器中讀取最大公約數(shù)數(shù)量的數(shù)據(jù)包存入發(fā)送緩存,和更新對(duì)應(yīng)的第一計(jì)數(shù)器,并且在同一端口中,只有前一次被輪詢(xún)的流量發(fā)生器的輪詢(xún)次數(shù)已達(dá)到對(duì)應(yīng)的第一計(jì)數(shù)器的最大值時(shí),當(dāng)前的輪詢(xún)才從下一個(gè)流量發(fā)生器讀取數(shù)據(jù)包。
為了方便地確定每次從流量發(fā)生器讀取數(shù)據(jù)包的開(kāi)始位置,分別為端口中的各流量發(fā)生器設(shè)置用于累計(jì)從該流量發(fā)生器讀出數(shù)據(jù)包數(shù)量的第二計(jì)數(shù)器,各第二計(jì)數(shù)器的最大值為對(duì)應(yīng)流量發(fā)生器數(shù)據(jù)包的數(shù)量值。在從流量發(fā)生器讀取Flow前,首先判斷從該流量發(fā)生器讀取數(shù)據(jù)包的數(shù)量是否已達(dá)到第二計(jì)數(shù)器的最大值,如果是則將第二計(jì)數(shù)器置初始值并從流量發(fā)生器的開(kāi)始位置讀取數(shù)據(jù)包,否則根據(jù)第二計(jì)數(shù)器的計(jì)數(shù)值確定讀取數(shù)據(jù)包的開(kāi)始位置。
以下通過(guò)實(shí)例進(jìn)行說(shuō)明假設(shè)一個(gè)測(cè)試儀模塊具有n個(gè)端口,每個(gè)端口有m個(gè)Generator,每個(gè)Generator包含k個(gè)Flow。
對(duì)測(cè)試儀的調(diào)度要求是(1)進(jìn)行n個(gè)端口的數(shù)據(jù)調(diào)度,n個(gè)端口完全獨(dú)立;(2)每個(gè)端口要按照數(shù)據(jù)的Generator的比例關(guān)系進(jìn)行Generator調(diào)度;(3)每個(gè)端口還可調(diào)發(fā)送速率,調(diào)整范圍是0到端口最大帶寬;(4)調(diào)度時(shí),要保證各個(gè)Flow能循環(huán)發(fā)送。
在調(diào)度過(guò)程中,一個(gè)端口獲取完指針后,馬上開(kāi)始準(zhǔn)備下一個(gè)指針,這樣可以提供調(diào)度效率。如果某個(gè)端口沒(méi)有起用則不執(zhí)行該端口的調(diào)度;G計(jì)數(shù)器(第一計(jì)數(shù)器)是m個(gè)Generator的最小公倍數(shù)遞減計(jì)數(shù);F計(jì)數(shù)器(第二計(jì)數(shù)器)是配置到存儲(chǔ)器的Flow個(gè)數(shù)k。
對(duì)于端口調(diào)度,采用循環(huán)調(diào)度策略,一個(gè)端口發(fā)送完一個(gè)包就轉(zhuǎn)到另一個(gè)端口讀數(shù)據(jù)發(fā)送,從RAM讀出數(shù)據(jù)后,先放到異步FIFO(可緩存i個(gè)包)里,F(xiàn)IFO的另一側(cè)讀出頻率就決定了其端口的發(fā)送速率,F(xiàn)IFO輸出的數(shù)據(jù)送到測(cè)試儀的下一級(jí)處理。當(dāng)調(diào)度過(guò)程中某個(gè)端口不可以發(fā)送或FIFO滿(mǎn)時(shí),則直接跳過(guò)該端口到下一個(gè)端口進(jìn)行調(diào)度。
每個(gè)端口的Generator和Flow調(diào)度首先確定端口m個(gè)Generator的不同流量比例的最大公約數(shù),然后循環(huán)發(fā)送各個(gè)Generator的最大公約數(shù)數(shù)目的Flow數(shù)據(jù),對(duì)Generator所含的Flow發(fā)送也要循環(huán)進(jìn)行,因此針對(duì)每個(gè)Generator要保留當(dāng)前的Flow指針(當(dāng)前的Flow數(shù)+偏移地址),當(dāng)發(fā)送完最后的Flow后,指針要指向其Generator的起始地址。
例如假設(shè)一個(gè)測(cè)試儀的一個(gè)端口支持8個(gè)Generator,每個(gè)Generator包含不同個(gè)數(shù)的Flow,并設(shè)這8個(gè)Generator的流量分別設(shè)置為總端口帶寬的30%,5%,15%,20%,5%,5%,10%,10%,這些比例的分子的最大公約數(shù)為5,權(quán)值比為6∶1∶3∶4∶1∶1∶2∶2,則各G計(jì)數(shù)器對(duì)應(yīng)的初始值(即最大計(jì)數(shù)值)分別為6、1、3、4、1、1、2、2,各F計(jì)數(shù)器對(duì)應(yīng)的初始值為對(duì)應(yīng)G所包含的Flow數(shù)量。調(diào)度過(guò)程中在每次輪詢(xún)?cè)摱丝跁r(shí),從某一個(gè)G中讀出5個(gè)Flow,G計(jì)數(shù)器遞減1,F(xiàn)計(jì)數(shù)器遞減5。G計(jì)數(shù)器為0表示完成該G的調(diào)度。如果某個(gè)G要發(fā)送的Flow數(shù)大于它的最大公約數(shù)(舉例,如果G的最大公約數(shù)是5,而該G實(shí)際要發(fā)送的FLOW是100時(shí),因此一次循環(huán)它只能發(fā)送5個(gè)Flow,為使下次輪尋到該G時(shí)能連續(xù)發(fā)送,要保留第6個(gè)Flow的地址),那么就要保留進(jìn)行一次G循環(huán)所發(fā)送的Flow地址的指針,以便下次輪尋到該G時(shí)繼續(xù)完成后續(xù)的Flow發(fā)送,指針是根據(jù)F計(jì)數(shù)器轉(zhuǎn)換的存放Flow的實(shí)際的RAM地址。在實(shí)現(xiàn)時(shí),F(xiàn)PGA內(nèi)部可以增加專(zhuān)門(mén)的調(diào)度表,存放使能發(fā)送的G計(jì)數(shù)、F的計(jì)數(shù)和指針。
參閱圖5所示,調(diào)度的具體流程如下步驟1確定端口中G的最大公約數(shù)和各G的數(shù)據(jù)流量的權(quán)值。
步驟2為端口中的各G設(shè)置G計(jì)數(shù)器和F計(jì)數(shù)器,并賦初始值。
步驟3開(kāi)始輪詢(xún)當(dāng)前端口。
步驟4判斷當(dāng)前端口中所有G計(jì)數(shù)器是否為0(即已達(dá)到對(duì)應(yīng)的第一計(jì)數(shù)器的最大值),如果是則進(jìn)行步驟5,否則進(jìn)行步驟6。
步驟5將該端口的所有G數(shù)器置初始值,并選擇第一個(gè)G作為當(dāng)前G,轉(zhuǎn)步驟7。
步驟6判斷當(dāng)前端口中上次被輪詢(xún)的G的G計(jì)數(shù)器是否為0,如果是,則進(jìn)行步驟7,否則進(jìn)行步驟8。
步驟7選擇當(dāng)前端口中的下一個(gè)G作為當(dāng)前G。
步驟8判斷當(dāng)前G的F計(jì)數(shù)器是否為0,如果是,則跳到該G的起始地址,并且F計(jì)數(shù)器置初始值(步驟8-1);否則從指針寄存器獲取存放下一個(gè)要讀的G的F地址(步驟8-2)。
步驟9從當(dāng)前G中讀取最大公約數(shù)數(shù)量的數(shù)據(jù)包存入FIFO隊(duì)列,G計(jì)數(shù)器遞減1、F計(jì)數(shù)器遞最大公數(shù)值。
步驟10選擇下一端口作為當(dāng)前端口,并進(jìn)行步驟1。
為了控制FIFO的數(shù)據(jù)讀出速度實(shí)現(xiàn)端口發(fā)送速率調(diào)整,在讀FIFO數(shù)據(jù)時(shí)增加一個(gè)時(shí)延計(jì)數(shù)器,該計(jì)數(shù)器以一個(gè)時(shí)鐘周期為單位,調(diào)速時(shí),只需等待一定的時(shí)鐘周期(計(jì)數(shù)器由初始值遞減到0)再?gòu)腇IFO讀數(shù)據(jù)即可。
在本發(fā)明中,調(diào)度模塊可采用現(xiàn)場(chǎng)可編程門(mén)陣列實(shí)現(xiàn)。
本發(fā)明能夠支持多個(gè)端口,每個(gè)端口可支持多種數(shù)據(jù)流調(diào)度的數(shù)據(jù)產(chǎn)生,因而可以解決當(dāng)前寬帶測(cè)試儀的端口數(shù)量少,數(shù)據(jù)構(gòu)建類(lèi)型單一等缺點(diǎn)。同時(shí)本發(fā)明充分利用先進(jìn)的大規(guī)模FPGA芯片和先進(jìn)的電子技術(shù),大大降低了儀器成本。
權(quán)利要求
1.一種調(diào)度數(shù)據(jù)的方法,用于對(duì)多個(gè)端口的數(shù)據(jù)進(jìn)行調(diào)度,所述端口包含一個(gè)或多個(gè)流量發(fā)生器,各流量發(fā)生器包含有一個(gè)或多個(gè)數(shù)據(jù)包;所述方法包括確定步驟,根據(jù)每個(gè)端口各流量發(fā)生器的數(shù)據(jù)流量占該端口總流量的比值確定這些比值的最大公約數(shù)和各流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;設(shè)置步驟,分別為端口的各流量發(fā)生器設(shè)置用于累計(jì)該流量發(fā)生器被輪詢(xún)的次數(shù)的第一計(jì)數(shù)器,各第一計(jì)數(shù)器的最大值為對(duì)應(yīng)流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;調(diào)度步驟,用于輪詢(xún)各端口,即在每次輪詢(xún)一個(gè)端口時(shí)僅從該端口的一個(gè)流量發(fā)生器中讀取最大公約數(shù)數(shù)量的數(shù)據(jù)包存入發(fā)送緩存,和更新對(duì)應(yīng)的第一計(jì)數(shù)器,并且在同一端口,在前一次被輪詢(xún)的流量發(fā)生器的輪詢(xún)次數(shù)已達(dá)到對(duì)應(yīng)的第一計(jì)數(shù)器的最大值時(shí),當(dāng)前的輪詢(xún)從該端口的下一個(gè)流量發(fā)生器讀取數(shù)據(jù)包。
2.如權(quán)利要求1所述的方法,其特征在于,所述調(diào)度步驟具體包括如下步驟A、開(kāi)始輪詢(xún)當(dāng)前端口;B、判斷當(dāng)前端口中所有流量發(fā)生器的輪詢(xún)次數(shù)是否已達(dá)到對(duì)應(yīng)的第一計(jì)數(shù)器的最大值,如果是則進(jìn)行步驟C,否則進(jìn)行步驟D;C、將該端口中的所有第一計(jì)數(shù)器置初始值,并選擇第一個(gè)流量發(fā)生器作為當(dāng)前流量發(fā)生器,轉(zhuǎn)步驟E;D、判斷當(dāng)前端口中上次被輪詢(xún)的流量發(fā)生器的輪詢(xún)次數(shù)是否達(dá)到該流量發(fā)生器的第一計(jì)數(shù)器的最大值,如果是,則進(jìn)行步驟E,否則進(jìn)行步驟F;E、選擇當(dāng)前端口中的下一個(gè)流量發(fā)生器作為當(dāng)前流量發(fā)生器;F、從當(dāng)前流量發(fā)生器中讀取最大公約數(shù)數(shù)量的數(shù)據(jù)包存入發(fā)送緩存,并由第一計(jì)數(shù)器累計(jì)當(dāng)前流量發(fā)生器的輪詢(xún)次數(shù);G、選擇下一端口作為當(dāng)前端口,并進(jìn)行步驟A。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述設(shè)置步驟中,還分別為端口中的各流量發(fā)生器設(shè)置用于累計(jì)從該流量發(fā)生器讀出數(shù)據(jù)包數(shù)量的第二計(jì)數(shù)器,各第二計(jì)數(shù)器的最大值為對(duì)應(yīng)流量發(fā)生器包含數(shù)據(jù)包的數(shù)量值;所述調(diào)度步驟中,通過(guò)該第二計(jì)數(shù)器的計(jì)數(shù)值確定每次從流量發(fā)生器讀取數(shù)據(jù)包的開(kāi)始位置。
4.如權(quán)利要求3所述的方法,其特征在于,所述調(diào)度步驟中,在從流量發(fā)生器讀取數(shù)據(jù)包前,首先判斷從該流量發(fā)生器讀取數(shù)據(jù)包的數(shù)量是否已達(dá)到第二計(jì)數(shù)器的最大值,如果是則將第二計(jì)數(shù)器置初始值并從開(kāi)始位置讀取數(shù)據(jù)包,否則根據(jù)第二計(jì)數(shù)器的計(jì)數(shù)值確定讀取數(shù)據(jù)包的開(kāi)始位置。
5.如權(quán)利要求4所述的方法,其特征在于,所述第一計(jì)數(shù)器和第二計(jì)數(shù)器為遞減計(jì)數(shù)器;所述第一計(jì)數(shù)器的初始值為對(duì)應(yīng)流量發(fā)生器的數(shù)據(jù)流量的權(quán)值,所述第二計(jì)數(shù)器的初始值為對(duì)應(yīng)流量發(fā)生器包含數(shù)據(jù)包數(shù)量的值。
6.如權(quán)利要求3所述的方法,其特征在于,所述調(diào)度步驟中,如果存儲(chǔ)當(dāng)前端口數(shù)據(jù)的發(fā)送緩存已滿(mǎn),則提高從該發(fā)送緩存讀出數(shù)據(jù)的速度,以調(diào)整發(fā)送速率,和/或開(kāi)始輪詢(xún)下一端口。
7.一種調(diào)度數(shù)據(jù)的裝置,包括主控模塊、數(shù)據(jù)產(chǎn)生模塊和物理接口模塊;該數(shù)據(jù)產(chǎn)生模塊具有用于存儲(chǔ)端口的數(shù)據(jù)的存儲(chǔ)器;其特征在于還包括調(diào)度模塊,該調(diào)度模塊包括復(fù)數(shù)個(gè)調(diào)度單元和對(duì)應(yīng)數(shù)量的緩存單元,所述存儲(chǔ)器存儲(chǔ)有復(fù)數(shù)個(gè)端口的數(shù)據(jù);各個(gè)調(diào)度單元分別根據(jù)各端口及端口的數(shù)據(jù)的狀態(tài),輪流從所述存儲(chǔ)器中讀取一個(gè)端口的數(shù)據(jù)并存儲(chǔ)到對(duì)應(yīng)的一個(gè)緩存單元。
8.如權(quán)利要求7所述的調(diào)度數(shù)據(jù)的裝置,其特征在于,所述控制單元還包括復(fù)數(shù)個(gè)控制緩存單元讀出速率的速率調(diào)整單元,其中每個(gè)速率調(diào)整單元控制一個(gè)緩存單元。
9.如權(quán)利要求7或8所述的調(diào)度數(shù)據(jù)的裝置,其特征在于,所述調(diào)度模塊采用現(xiàn)場(chǎng)可編程門(mén)陣列實(shí)現(xiàn)。
全文摘要
本發(fā)明公開(kāi)了一種調(diào)度數(shù)據(jù)的方法,用于對(duì)多個(gè)端口的數(shù)據(jù)進(jìn)行調(diào)度,該方法根據(jù)每個(gè)端口中各流量發(fā)生器的數(shù)據(jù)流量占該端口總流量的比值確定這些比值的最大公約數(shù)和各流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;分別為端口中的各流量發(fā)生器設(shè)置用于累計(jì)該流量發(fā)生器被輪詢(xún)的次數(shù)的第一計(jì)數(shù)器,各第一計(jì)數(shù)器的最大值為對(duì)應(yīng)流量發(fā)生器的數(shù)據(jù)流量的權(quán)值;輪詢(xún)各端口,在每次輪詢(xún)一個(gè)端口時(shí)僅從該端口的一個(gè)流量發(fā)生器中讀取最大公約數(shù)數(shù)量的數(shù)據(jù)包存入發(fā)送緩存,和更新對(duì)應(yīng)的第一計(jì)數(shù)器。本發(fā)明還同時(shí)公開(kāi)了一種相應(yīng)的調(diào)度數(shù)據(jù)的裝置。
文檔編號(hào)H04L12/56GK1767456SQ20041009023
公開(kāi)日2006年5月3日 申請(qǐng)日期2004年10月27日 優(yōu)先權(quán)日2004年10月27日
發(fā)明者李占有 申請(qǐng)人:華為技術(shù)有限公司