專利名稱:基于網(wǎng)絡(luò)處理器平臺實現(xiàn)的綜合隊列管理方法
技術(shù)領(lǐng)域:
緩沖管理和分組調(diào)度領(lǐng)域。
背景技術(shù):
在比例區(qū)分服務(wù)(proportional differentiation services)模型中,任意兩個服務(wù)類在每一跳(per-hop)所獲得的服務(wù)滿足確定的比例,比例參數(shù)由網(wǎng)絡(luò)管理者設(shè)定而且與類的負(fù)載無關(guān)。即對于任意1<i,j<N,有qi(t,t+τ)/qj(t,t+τ)=ci/cj其中qi(t,t+τ)為數(shù)據(jù)類i在時間段[t,t+τ]內(nèi)所獲得的服務(wù),c1<c2<…<cN為網(wǎng)絡(luò)管理者設(shè)定的比例參數(shù)。PLR緩沖管理(Proportional LossRate Buffer Management)方法和PAD分組調(diào)度(Proportional Average Delay Packet Scheduling)方法都屬于比例區(qū)分服務(wù)。
qi(t,t+τ)使用丟失率作為標(biāo)準(zhǔn),則衍生出PLR緩沖管理方法。它是緩沖管理方法的一種,針對比例區(qū)分服務(wù)模型設(shè)計的方法,其控制目標(biāo)是使得任意兩個服務(wù)類的分組丟失率保持在恒定的比例。它的方法復(fù)雜度是O(logN)。
qi(t,t+τ)使用時延作為標(biāo)準(zhǔn),則衍生出PLR緩沖管理方法。它是分組調(diào)度方法的一種,針對比例區(qū)分服務(wù)模型設(shè)計的方法,其控制目標(biāo)是使得任意兩個服務(wù)類的平均排隊時延保持在恒定的比例。它的方法復(fù)雜度是O(logN)。
PLR緩沖管理方法和PAD分組調(diào)度方法存在的問題這兩種法屬于基于動態(tài)優(yōu)先級方法,基本思想總結(jié)如下為每個隊列計算一個索引值(動態(tài)優(yōu)先級),每次選取具有最大或最小索引值的隊列進(jìn)行調(diào)度。因此,查找/排序是動態(tài)優(yōu)先級方法的另一個重要的基本操作,并具有O(logN)的復(fù)雜度,其中N代表隊列數(shù)量。一般來講,索引值存儲在片外存儲器(比如SRAM)中,或片內(nèi)存儲器(比如Scratchpad,如果其容量足夠大的話)中。但不管怎樣,都需要大量的內(nèi)存訪問操作。而內(nèi)存訪問通常是一個性能瓶頸,因此對于大多數(shù)方法而言,O(logN)的復(fù)雜度會使得方法實現(xiàn)的效率非常低。PLR緩沖管理方法和PAD分組調(diào)度方法不適用于高速網(wǎng)絡(luò)設(shè)備。
本發(fā)明研究并實現(xiàn)了一種新的RR-PLR緩沖管理方法和WRR-PAD分組調(diào)度方法,極大地提高了緩沖管理和分組調(diào)度的速度。
發(fā)明內(nèi)容
本發(fā)明的目的是設(shè)計一個適應(yīng)網(wǎng)絡(luò)處理器的,低時間復(fù)雜度的,遵循比例區(qū)分的服務(wù)模型的隊列管理方法。在分組入隊列時實現(xiàn)丟失率控制的緩沖管理方法,在分組出隊列時實現(xiàn)時延控制的分組調(diào)度方法,分別實現(xiàn)平均分組丟失率和平均排隊時延的成比例控制。名詞解釋如下1)服務(wù)質(zhì)量(Quality of Service)控制服務(wù)質(zhì)量(QoS)控制是一系列控制機(jī)制的總稱,包括諸如隊列緩沖資源管理、分組調(diào)度、QoS路由等控制,旨在為使用網(wǎng)絡(luò)的用戶提供端到端的,包括帶寬、延遲、分組丟失率等在內(nèi)的性能保證?,F(xiàn)有的Internet網(wǎng)絡(luò)只能提供一種“盡力做好”(best-effort)的服務(wù),無法支撐越來越多的網(wǎng)上實時交互應(yīng)用。因此,服務(wù)質(zhì)量(QoS)控制問題應(yīng)運而生,成為下一代網(wǎng)絡(luò)需要解決的關(guān)鍵技術(shù)。
2)緩沖管理(Buffer Management)緩沖管理研究的主要內(nèi)容是緩沖區(qū)如何分配和當(dāng)緩沖區(qū)占用率到達(dá)一定程度時如何選擇分組進(jìn)行丟棄,所影響的性能參數(shù)主要是分組丟失率。
3)分組調(diào)度(Packet Scheduling)分組調(diào)度則是指按照一定的規(guī)則來決定從多個等待隊列中選擇哪個分組進(jìn)行發(fā)送,它影響的主要性能參數(shù)包括帶寬分配、時延和時延抖動。
4)網(wǎng)絡(luò)處理器(Network Processor)平臺網(wǎng)絡(luò)處理器是介于通用處理器和專用處理器(ASIC)芯片之間的一種可編程芯片,網(wǎng)絡(luò)處理器采用了如下技術(shù)以適應(yīng)網(wǎng)絡(luò)數(shù)據(jù)處理(1)多內(nèi)核結(jié)構(gòu),使用多線程或者并行處理兩種機(jī)制組織;(2)優(yōu)化的內(nèi)存管理和DMA單元;(3)優(yōu)化的運算邏輯單元ALU;(4)網(wǎng)絡(luò)專用的協(xié)處理器(co-processors);(5)硬件多線程技術(shù)。
INTEL IXP 2400是Intel公司在一款高性能的網(wǎng)絡(luò)處理器,我們基于它來實現(xiàn)本綜合隊列管理方法。
它的特點如下●本方法改進(jìn)了PLR緩沖管理方法和PAD分組調(diào)度方法,將方法復(fù)雜度由原有的O(logN)降低為O(1);●本方法使用輪循機(jī)制,消除了除法運算以及排序操作,適于網(wǎng)絡(luò)處理器的實現(xiàn);●RR-PLR和WRR-PAD方法根據(jù)到達(dá)分組的丟失行為來動態(tài)調(diào)整閾值,可以保證獲得預(yù)期的相對公平性能,并能一定程度上適應(yīng)網(wǎng)絡(luò)流量的變化,提高系統(tǒng)緩沖資源的利用率;●性能仿真和基于Intel IXP2400網(wǎng)絡(luò)處理器的性能實測結(jié)果表明綜合隊列管理方法的轉(zhuǎn)發(fā)性能達(dá)到了千兆線速。
基于網(wǎng)絡(luò)處理器平臺實現(xiàn)的綜合隊列管理方法,其特征在于,所述的綜合隊列管理方法是在一款I(lǐng)ntel公司生產(chǎn)的Intel IXP 2400網(wǎng)絡(luò)處理器上實現(xiàn)的,所述方法分別把網(wǎng)絡(luò)分組接受模塊、網(wǎng)絡(luò)分組發(fā)送模塊、RR-PLR即輪循-比例丟失率緩沖管理程序、WRR-PAD即加權(quán)輪循-比例平均延時分組調(diào)度程序,各自分別配置在網(wǎng)絡(luò)處理器的1個微引擎上,即分別分配在第0,第7,第1和第2個微引擎上;而把IPv4協(xié)議處理程序配置在所述網(wǎng)絡(luò)處理器的4個微引擎上,即分配在第3,4,5,6個微引擎上;當(dāng)分組進(jìn)入隊列時,采用平均分組丟失率比例控制,該控制方法依次含有一下步驟步驟1A初始化每個隊列的分組計數(shù)器設(shè)隊列m分配的計數(shù)器Cm=km·δm,m=0,1,…,n-1;指針i=0;其中,km為預(yù)先確定的參數(shù),它是各隊列的分組平均到達(dá)速率的比a0(t)/a1(t)/…/an-1(t)=k0/k1/…/kn-1;am(t)為隊列m在時間段
內(nèi)到達(dá)的分組數(shù);δm為預(yù)先確定的參數(shù),它是各個隊列分組丟失率的比L0/L1/…/Ln-1=δ0/δ1/…/δn-1,Lm為隊列m的平均分組丟失率;所述Lm=dm(t)/am(t)=dm(t)/(λm·t);其中,dm(t)為為隊列m在時間段
內(nèi)丟棄的分組數(shù);λm為隊列m的分組平均到達(dá)速率,在程序中以km的形式表現(xiàn)出來;kmδm為隊列m的丟棄分組數(shù);各個隊列的丟棄的分組數(shù)保持比例,即保持(k0·δ0)/(k1·δ1)/…/(kn-1·δn-1)的設(shè)定比例;步驟2A等待,一直到有新的分組p到達(dá),記該分組屬于隊列t,為該分組打上到達(dá)隊列的時間戳T入隊列,轉(zhuǎn)步驟3;否,轉(zhuǎn)步驟2;步驟3A判斷各個隊列的分組長度之和是否小于或等于緩存可以存放分組總個數(shù)若是,將分組p放入相應(yīng)的隊列t,對于該分組的處理結(jié)束;若否,轉(zhuǎn)步驟4A;步驟4A判斷隊列i的分組計數(shù)器Ci是否大于零,且隊列非空若是,從隊列i中丟棄一個分組;使分組計數(shù)器Ci=Ci-1;i=i+1;將分組p放入相應(yīng)的隊列t,對于該分組的處理結(jié)束;重新轉(zhuǎn)到步驟2A;若否,判斷i是否小于n若是,i=i+1;轉(zhuǎn)入步驟4A;若否,對于j=0,1,…,n-1,使隊列j分組計數(shù)器的做Cj=Cj+kj·δj;指針i=0;轉(zhuǎn)到步驟4A;
當(dāng)分組出隊列時,采用平均排隊時延的比例控制方法,即使得各個隊列中各分組的時延滿足一下比例關(guān)系Σj=0s0(t)d0j/Σj=0s1(t)d1j/···/Σj=0sn-1(t)dn-1j/=(ξ0·w0)/(ξ1·w1)/···/(ξn-1·wn-1);]]>其中,si(t)為隊列i在時間段
內(nèi)發(fā)送的分組數(shù),i=0,1,…,n-1;dij為隊列i的中第j個分組的延時;隊列i的平均排隊時延為Di=Σj=0si(t)dijsi(t),]]>各個隊列平均排隊時延的比保持一致,即D0/D1/…/Dn-1=ξ0/ξ1/…/ξn-1;ξi為預(yù)先確定的參數(shù);各個隊列發(fā)送的分組數(shù)滿足以下比例關(guān)系s0(t)/s1(t)/…/sn-1(t)=w0/w1/…/wn-1,wi為預(yù)先確定的參數(shù);以上所述的平均排隊時延的比例控制方法采用輪循一次含有以下步驟步驟1B給每個隊列分配3個計數(shù)器,隊列i的3個計數(shù)器分別記為CSi為記錄需要發(fā)送的分組數(shù)量的計數(shù)器;CDi為記錄需要經(jīng)歷的排隊時延之和的計數(shù)器;COi為根據(jù)隊列平均排隊時延的變化情況提前或推遲其隊列i分組的發(fā)送的輔助計數(shù)器;COi>0表示隊列分組被提前發(fā)送,輪循次數(shù)被“透支”;COi<0表示隊列分組被推遲發(fā)送,輪循次數(shù)有“盈余”;COi=0表示正常情況;φi為隊列i發(fā)送wi個分組的延時之和,φi=ξi·wi;初始化CSi=wi,CDi=φi,COi=0;初始化域值thdi=φi;指針i=0;步驟2B讀取CSi,COi,CDi三個計數(shù)器;根據(jù)下表判斷該情況是否需要調(diào)度若是,轉(zhuǎn)步驟3B;若否,轉(zhuǎn)步驟4B;根據(jù)以下CSi,COi,CDi三個寄存器的8種不同情況,判斷是否調(diào)度情況a,當(dāng)CSi=0,COi≥0,CDi-d<0時
調(diào)度;并改變寄存器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;情況b,當(dāng)CSi=0,COi≥0,CDi-d≥0時不調(diào)度;情況c,當(dāng)CSi=0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi時不調(diào)度;情況d,當(dāng)CSi=0,COi≥0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi時調(diào)度;并改變寄存器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;情況e,當(dāng)CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi時不調(diào)度;情況f,當(dāng)CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi時調(diào)度;并改變寄存器,使得CSi=CSi-1,CDi=CDi-d;情況g,當(dāng)CSi>0,COi≥0,CDi-d<0時調(diào)度;并改變寄存器,使得CSi=CSi-1,CDi=CDi-d;情況h,當(dāng)CSi>0,COi≥0,CDi-d≥0時不調(diào)度;其中,d為分組在隊列中的延時,d=T出隊列-T入隊列;對于條件D和D的意義解釋如下條件D和D是在出現(xiàn)在條件B之下需要進(jìn)一步判斷的,這種情況下,表明該隊列的分組曾被推遲發(fā)送,其輪循次數(shù)尚有“盈余”,因此需要判斷“盈余”被“補(bǔ)足”之后的CDi值;(-COi·φi)為“盈余”輪數(shù)所對應(yīng)的總延時數(shù);(CSi+(-COi·wi))為總共“盈余”的分組數(shù)減去這輪已經(jīng)發(fā)出的分組數(shù);CDi+(-COi·φi)-d·(CSi+(-COi·wi))即按照d的延時發(fā)送,“盈余”的總延時能不能被消耗的足夠多;步驟3B-1根據(jù)上述不同的情況,改變計數(shù)器的值;步驟3B-2從隊列i中取出一個分組;從RR-PLR模塊取得T入隊列;取當(dāng)前時間得到分組的出隊列時間T出隊列;
計算這個分組在隊列中的延時d=T出隊列-T入隊列,并發(fā)送;步驟3B-3使CSi=CSi-1;CDi=CDi-d;i=i+1;轉(zhuǎn)步驟2B;步驟4Bi=i+1;判斷CSi=0并且CDi≤0若是,轉(zhuǎn)步驟5B;若否,轉(zhuǎn)步驟6B;步驟5BCSi=CSi+wi;CDi=CDi+wi·ξi;轉(zhuǎn)步驟2B;步驟6BCOi=COi-1;轉(zhuǎn)步驟2B。
我們在Intel IXP2400網(wǎng)絡(luò)處理器上實現(xiàn)了RR-PLR緩沖管理方法和WRR-PAD分組調(diào)度方法,并對方法性能進(jìn)行了測試。
測試參數(shù)設(shè)置如下輸入的數(shù)據(jù)流共分為八個類。其中第一類到第四類的丟失率和時延的比值均設(shè)置為1/2/3/4,第五類到第八類的丟失率和時延比值設(shè)置均為2/2/3/4。我們測試的是重負(fù)載情況下系統(tǒng)的性能,總的輸入速率為2Gbps,分組設(shè)置為最小以太網(wǎng)分組,分組大小為64Byte,即總的輸入速率為4Mpps,八個服務(wù)類分組到達(dá)的速率相等,均為256Mbps(即0.5Mpps)。
RR-PLR和WRR-PAD方法在Intel IXP2400網(wǎng)絡(luò)處理器上協(xié)同工作的性能如圖5至圖8所示??梢?,方法能夠在適當(dāng)?shù)膮?shù)配置下對平均分組丟失率和平均排隊時延進(jìn)行成比例區(qū)分控制。在測試平臺運行穩(wěn)定之后,系統(tǒng)的總吞吐率達(dá)到了1.125483Gbps(即2.250966Mpps),在實現(xiàn)成比例的區(qū)分服務(wù)的基礎(chǔ)上達(dá)到了千兆線速轉(zhuǎn)發(fā)。
圖1 Intel IXP 2400網(wǎng)絡(luò)處理器結(jié)構(gòu)圖;注在圖1中,ME表示微引擎(Micro Engine);網(wǎng)絡(luò)分組接受模塊、網(wǎng)絡(luò)分組發(fā)送模塊、RR-PLR即輪循-比例丟失率緩沖管理程序、WRR-PAD即加權(quán)輪循-比例平均延時分組調(diào)度程序,各自分別配置在網(wǎng)絡(luò)處理器的1個微引擎上,即分別分配在第0,第7,第1和第2個微引擎上,而把IPv4協(xié)議處理程序配置在所述網(wǎng)絡(luò)處理器的4個微引擎上,即分配在第3,4,5,6個微引擎上。
圖2綜合隊列管理方法的整體實現(xiàn)圖;圖3 RR-PLR方法流程圖;圖4 WRR-PAD方法流程圖;圖5 RR-PLR方法丟失率曲線實施例1;圖6 RR-PLR方法丟失率曲線實施例2;圖7 WRR-PAD方法時延曲線實施例1;圖8 WRR-PAD方法時延曲線實施例2。
具體實施例方式
網(wǎng)絡(luò)處理器主要完成網(wǎng)絡(luò)分組的接受、存儲和轉(zhuǎn)發(fā)功能。接收模塊在接收到網(wǎng)絡(luò)分組時,將其按RR-PLR緩沖管理方法策略存儲于分組隊列中;轉(zhuǎn)發(fā)模塊則從分組隊列中,按WRR-PAD分組調(diào)度方法取出網(wǎng)絡(luò)分組并轉(zhuǎn)發(fā)。
RR-PLR方法是PLR方法針對網(wǎng)絡(luò)處理器的近似方法,主要是通過消除原有方法中的除法、排序,降低計算復(fù)雜度。另外,RR-PLR只是把長期的平均丟失率比例作為控制目標(biāo),即只考慮了大時間尺度的情況。
在本方法中,我們的控制目標(biāo)不是分組到達(dá)速率的絕對值和丟失慮的絕對值,而是不同隊列之間的比例關(guān)系。
如果記隊列i(i=0,1,…,n-1)在時間段
內(nèi)到達(dá)和丟棄的分組數(shù)分別為ai(t)和di(t);記隊列i的分組平均到達(dá)速率為λi,則ai(t)=λi·t;隊列i的平均分組丟失率為Li=di(t)/ai(t)=di(t)/(λi·t)。則RR-PLR方法保證大時間尺度下,各個隊列分組丟失率的比L0/L1/…/Ln-1維持不變,記這個丟失率的比L0/L1/…/Ln-1=δ0/δ1/…/δn-1。
如果記各隊列的分組平均到達(dá)速率的比λ0/λ1/…/λn-1=k0/k1/…/kn-1,則本方法就是要確保 的關(guān)系。也即說保證各個隊列的丟棄的分組數(shù)保持比例(k0·δ0)/(k1·δ1)/…/(kn-1·δn-1)即可。ki,δi(i=0,1,…,n-1)是預(yù)先輸入的參數(shù)(在方法初始化時已經(jīng)確定)。
RR-PLR方法步驟如下步驟1給每個隊列分配一個分組計數(shù)器,隊列i分配的計數(shù)器記為Ci;初始化每個隊列的分組計數(shù)器Ci=ki·δi;指針i=0。
步驟2是否有新的分組p(記該分組屬于隊列t)到達(dá)?是,轉(zhuǎn)步驟3;否,轉(zhuǎn)步驟2。
步驟3為該分組打上入隊列時間戳T入隊列;各個隊列的分組長度之和<緩存可以存放分組總個數(shù)?是,轉(zhuǎn)步驟4;否,轉(zhuǎn)步驟5。
步驟4將分組p放入相應(yīng)的隊列t;(對于該分組的處理結(jié)束)轉(zhuǎn)步驟2。
步驟5Ci>0?是,轉(zhuǎn)步驟6;否,轉(zhuǎn)步驟7。
步驟6從隊列i中丟棄一個分組;Ci=Ci-1;i=i+1。
轉(zhuǎn)步驟4。
步驟7i<n-1?是,轉(zhuǎn)步驟8;否,轉(zhuǎn)步驟9。
步驟8i=i+1;轉(zhuǎn)步驟5。
步驟9對于j=0,1,…,n-1,做Cj=Cj+kj·δj;指針i=0;轉(zhuǎn)步驟5。
WRR-PAD方法是對WRR方法的改進(jìn),在保持原方法簡單性的基礎(chǔ)上,使得方法能提供時延比例保證,即改善了WRR方法的時延特性。與PAD方法相比(復(fù)雜度O(logN),其中N為隊列數(shù)),主要的優(yōu)點是不含除法操作,并具有O(1)的復(fù)雜度。
如果記隊列i(i=0,1,…,n-1)在時間段
內(nèi)發(fā)送的分組數(shù)為si(t),記隊列i的中第j個分組的延時為dij,則隊列i的平均排隊時延為Di=Σj=0si(t)dijsi(t).]]>WRR-PAD方法的控制目標(biāo)是使得各個隊列平均排隊時延的比保持一致,即D0/D1/…/Dn-1=ξ0/ξ1/…/ξn-1。如果記隊列發(fā)送的分組個數(shù)滿足比例關(guān)系s0(t)/s1(t)/…/sn-1(t)=w0/w1/…/wn-1,則方法控制時延之和,滿足比例關(guān)系Σj=0s0(t)d0j/Σj=0s1(t)d1j/···/Σj=0sn-1(t)dn-1j/=(ξ0·w0)/(ξ1·w1)/···/(ξn-1·wn-1)]]>即可。
為達(dá)到這個目標(biāo),輪循是一種可行的方法為每個隊列分配需要發(fā)送的分組數(shù)量配額、分組排隊時延和的配額,維護(hù)兩個相應(yīng)的計數(shù)器(初始化為相應(yīng)的配額),并使得輪循時每個隊列發(fā)送的分組數(shù)和經(jīng)歷的排隊時延和接近于相應(yīng)計數(shù)器值。如果存在差值,則把差值補(bǔ)償?shù)较乱淮屋喲?,即每?jīng)過一次輪循就把計數(shù)器加上配額。
在實現(xiàn)中,為隊列i(i=0,1,…,n-1)維護(hù)3個計數(shù)器。前兩個是記錄需要發(fā)送的分組數(shù)量的CSi(主計數(shù)器),記錄需要經(jīng)歷的排隊時延之和的CDi(從計數(shù)器),分別初始化為CSi=wi和CDi=φi(其中φi=ξi·wi)。
為了維護(hù)主計數(shù)器CSi和從計數(shù)器CDi之間的同步平衡,還需要增加一個計數(shù)器COi。計數(shù)器COi的作用是根據(jù)隊列平均排隊時延的變化情況提前或推遲其分組的發(fā)送。COi>0表示隊列分組被提前發(fā)送,輪循次數(shù)被“透支”;COi<0表示隊列分組被推遲發(fā)送,輪循次數(shù)有“盈余”;COi=0表示正常情況。COi初始化為0。
每次調(diào)度前,CSi、COi、CDi三個計數(shù)器的值必屬于表3所列情況中的一種,根據(jù)不同的情況決定當(dāng)前應(yīng)該采取何種操作。
WRR-PAD方法步驟如下步驟1給每個隊列分配3個計數(shù)器,隊列i的3個計數(shù)器分別記為CSi,COi,CDi;φi=ξi·wi;初始化CSi=wi,CDi=φi,COi=0;初始化域值thdi=φi;指針i=0。
步驟2讀取CSi,COi,CDi三個計數(shù)器;根據(jù)表3判斷該情況是否需要調(diào)度?是,轉(zhuǎn)步驟3;否,轉(zhuǎn)步驟4。
步驟3根據(jù)表3改變計數(shù)器的值;從隊列i中取出一個分組;從RR-PLR模塊取得T入隊列,得到分組的出隊列時間T出隊列;計算這個分組在隊列中的延時d=T出隊列-T入隊列,并發(fā)送;CSi=CSi-1;CDi=CDi-d;i=i+1轉(zhuǎn)步驟2。
步驟4i=i+1;CSi=0并且CDi≤0?是,轉(zhuǎn)步驟5;否,轉(zhuǎn)步驟6。
步驟5CSi=CSi+wi;CDi=CDi+wi·ξi;轉(zhuǎn)步驟2。
步驟6COi=COi-1;
轉(zhuǎn)步驟2。
表1歸納了CSi,COi,CDi三個寄存器的8種不同情況。表中簡記的條件符號如下記CSi=0的情況為A,CSi>0的情況為A;記COi<0的情況為B,COi≥0的情況為B;CDi-d<0的情況為C,CDi-d≥0的情況為C;CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi的情況為D,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi的情況為D其中,d為分組在隊列中的延時,d=T出隊列-T入隊列;對于條件D和D的意義解釋如下條件D和D是在出現(xiàn)在條件B之下需要進(jìn)一步判斷的,這種情況下,表明該隊列的分組曾被推遲發(fā)送,其輪循次數(shù)尚有“盈余”,因此需要判斷“盈余”被“補(bǔ)足”之后的CDi值。(-COi·φi)為“盈余”輪數(shù)所對應(yīng)的總延時數(shù);(CSi+(-COi·wi))為總共“盈余”的分組數(shù)減去這輪已經(jīng)發(fā)出的分組數(shù);CDi+(-COi·φi)-d·(CSi+(-COi·wi))即按照d的延時發(fā)送,“盈余”的總延時能不能被消耗的足夠多。
表1 CSi,COi,CDi三個寄存器的8種不同情況歸納
權(quán)利要求
1.基于網(wǎng)絡(luò)處理器平臺實現(xiàn)的綜合隊列管理方法,其特征在于,所述的綜合隊列管理方法是在一款I(lǐng)ntel公司生產(chǎn)的Intel IXP 2400網(wǎng)絡(luò)處理器上實現(xiàn)的,所述方法分別把網(wǎng)絡(luò)分組接受模塊、網(wǎng)絡(luò)分組發(fā)送模塊、RR-PLR即輪循-比例丟失率緩沖管理程序、WRR-PAD即加權(quán)輪循-比例平均延時分組調(diào)度程序,各自分別配置在網(wǎng)絡(luò)處理器的1個微引擎上,即分別分配在第0,第7,第1和第2個微引擎上;而把IPv4協(xié)議處理程序配置在所述網(wǎng)絡(luò)處理器的4個微引擎上,即分配在第3,4,5,6個微引擎上;當(dāng)分組進(jìn)入隊列時,采用平均分組丟失率比例控制,該控制方法依次含有一下步驟步驟1A初始化每個隊列的分組計數(shù)器設(shè)隊列m分配的計數(shù)器Cm=km·δm,m=0,1,…,n-1;指針i=0;其中,km為預(yù)先確定的參數(shù),它是各隊列的分組平均到達(dá)速率的比a0(t)/a1(t)/…/an-1(t)=k0/k1/…/kn-1;am(t)為隊列m在時間段
內(nèi)到達(dá)的分組數(shù);δm為預(yù)先確定的參數(shù),它是各個隊列分組丟失率的比L0/L1/…/Ln-1=δ0/δ1/…/δn-1,Lm為隊列m的平均分組丟失率;所述Lm=dm(t)/am(t)=dm(t)/(λm·t);其中,dm(t)為為隊列m在時間段
內(nèi)丟棄的分組數(shù);λm為隊列m的分組平均到達(dá)速率,在程序中以km的形式表現(xiàn)出來;λmδm為隊列m的丟棄分組數(shù);各個隊列的丟棄的分組數(shù)保持比例,即保持(k0·δ0)/(k1·δ1)/…/(kn-1·δn-1)的設(shè)定比例;步驟2A等待,一直到有新的分組p到達(dá),記該分組屬于隊列t,為該分組打上到達(dá)隊列的時間戳T入隊列,轉(zhuǎn)步驟3;否,轉(zhuǎn)步驟2;步驟3A判斷各個隊列的分組長度之和是否小于或等于緩存可以存放分組總個數(shù)若是,將分組p放入相應(yīng)的隊列t,對于該分組的處理結(jié)束;若否,轉(zhuǎn)步驟4A;步驟4A判斷隊列i的分組計數(shù)器Ci是否大于零,且隊列非空若是,從隊列i中丟棄一個分組;使分組計數(shù)器Ci=Ci-1;i=i+1;將分組p放入相應(yīng)的隊列t,對于該分組的處理結(jié)束;重新轉(zhuǎn)到步驟2A;若否,判斷i是否小于n若是,i=i+1;轉(zhuǎn)入步驟4A;若否,對于j=0,1,…,n-1,使隊列j分組計數(shù)器的做Cj=Cj+kj·δj;指針i=0;轉(zhuǎn)到步驟4A;當(dāng)分組出隊列時,采用平均排隊時延的比例控制方法,即使得各個隊列中各分組的時延滿足一下比例關(guān)系Σj=0s0(t)d0j/Σj=0s1(t)d1j/···/Σj=0sn-1(t)dn-1j/=(ξ0·w0)/(ξ1·w1)/···/(ξn-1·wn-1);]]>其中,si(t)為隊列i在時間段
內(nèi)發(fā)送的分組數(shù),i=0,1,…,n-1;dij為隊列i的中第j個分組的延時;隊列i的平均排隊時延為Di=Σj=0si(t)dijsi(t),]]>各個隊列平均排隊時延的比保持一致,即D0/D1/…/Dn-1=ξ0/ξ1/…/ξn-1;ξi為預(yù)先確定的參數(shù);各個隊列發(fā)送的分組數(shù)滿足以下比例關(guān)系s0(t)/s1(t)/…/sn-1(t)=w0/w1/…/wn-1,wi為預(yù)先確定的參數(shù);以上所述的平均排隊時延的比例控制方法采用輪循一次含有以下步驟步驟1B給每個隊列分配3個計數(shù)器,隊列i的3個計數(shù)器分別記為CSi為記錄需要發(fā)送的分組數(shù)量的計數(shù)器;CDi為記錄需要經(jīng)歷的排隊時延之和的計數(shù)器;COi為根據(jù)隊列平均排隊時延的變化情況提前或推遲其隊列i分組的發(fā)送的輔助計數(shù)器;COi>0表示隊列分組被提前發(fā)送,輪循次數(shù)被“透支”;COi<0表示隊列分組被推遲發(fā)送,輪循次數(shù)有“盈余”;COi=0表示正常情況;φi為隊列i發(fā)送wi個分組的延時之和,φi=ξi·wi;初始化CSi=wi,CDi=φi,COi=0;初始化域值thdi=φi;指針i=0;步驟2B讀取CSi,COi,CDi三個計數(shù)器;根據(jù)下表判斷該情況是否需要調(diào)度若是,轉(zhuǎn)步驟3B;若否,轉(zhuǎn)步驟4B;根據(jù)以下CSi,COi,CDi三個寄存器的8種不同情況,判斷是否調(diào)度情況a,當(dāng)CSi=0,COi≥0,CDi-d<0時調(diào)度;并改變寄存器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;情況b,當(dāng)CSi=0,COi≥0,CDi-d≥0時不調(diào)度;情況c,當(dāng)CSi=0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi時不調(diào)度;情況d,當(dāng)CSi=0,COi≥0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi時調(diào)度;并改變寄存器,使得CSi=CSi+wi,CDi=CDi+φi,COi=COi+1;情況e,當(dāng)CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))≥thdi時不調(diào)度;情況f,當(dāng)CSi>0,COi<0,CDi+(-COi·φi)-d·(CSi+(-COi·wi))<thdi時調(diào)度;并改變寄存器,使得CSi=CSi-1,CDi=CDi-d;情況g,當(dāng)CSi>0,COi≥0,CDi-d<0時調(diào)度;并改變寄存器,使得CSi=CSi-1,CDi=CDi-d;情況h,當(dāng)CSi>0,COi≥0,CDi-d≥0時不調(diào)度;其中,d為分組在隊列中的延時,d=T出隊列-T入隊列;對于條件D和D的意義解釋如下條件D和D是在出現(xiàn)在條件B之下需要進(jìn)一步判斷的,這種情況下,表明該隊列的分組曾被推遲發(fā)送,其輪循次數(shù)尚有“盈余”,因此需要判斷“盈余”被“補(bǔ)足”之后的CDi值;(-COi·φi)為“盈余”輪數(shù)所對應(yīng)的總延時數(shù);(CSi+(-COi·wi))為總共“盈余”的分組數(shù)減去這輪已經(jīng)發(fā)出的分組數(shù);CDi+(-COi·φi)-d·(CSi+(-COi·wi))即按照d的延時發(fā)送,“盈余”的總延時能不能被消耗的足夠多;步驟3B-1根據(jù)上述不同的情況,改變計數(shù)器的值;步驟3B-2從隊列i中取出一個分組;從RR-PLR模塊取得T入隊列;取當(dāng)前時間得到分組的出隊列時間T出隊列;計算這個分組在隊列中的延時d=T出隊列-T入隊列,并發(fā)送;步驟3B-3使CSi=CSi-1;CDi=CDi-d;i=i+1;轉(zhuǎn)步驟2B;步驟4Bi=i+1;判斷CSi=0并且CDi≤0若是,轉(zhuǎn)步驟5B;若否,轉(zhuǎn)步驟6B;步驟5BCSi=CSi+wi;CDi=CDi+wi·ξi;轉(zhuǎn)步驟2B;步驟6BCOi=COi-1;轉(zhuǎn)步驟2B。
全文摘要
基于網(wǎng)絡(luò)處理器平臺實現(xiàn)的隊列綜合管理方法屬于隊列管理和分組調(diào)度技術(shù)領(lǐng)域,其特征在于它是在Intel公司的Intel IXP 2400網(wǎng)絡(luò)處理器上實現(xiàn)的;它在分組進(jìn)入隊列時,采用平均分組丟失率比例控制,確保分組丟失速率和分組到達(dá)平均速率之比為常數(shù);在分組出隊列時,采取平均排隊延時比例控制方法,確保各隊列中分組平均排隊時延之比為常數(shù)。它降低了丟失率比例緩沖管理和平均時延分組調(diào)度方法的復(fù)雜度,而且根據(jù)到達(dá)分組的丟失行為來動態(tài)調(diào)整閾值,保證獲得預(yù)期的相對公平性,提高了緩沖資源的利用率,他的轉(zhuǎn)發(fā)性能達(dá)到了千兆高速。
文檔編號H04L12/56GK1716906SQ20051001208
公開日2006年1月4日 申請日期2005年7月4日 優(yōu)先權(quán)日2005年7月4日
發(fā)明者林闖, 鄭波, 倪嘉 申請人:清華大學(xué)