專利名稱:計(jì)算機(jī)或通信系統(tǒng)中的數(shù)據(jù)包處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)包處理的一個(gè)方面,諸如計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)包管理或通信網(wǎng)絡(luò)中的流量管理,也就是順序列表管理。本發(fā)明包括包含本發(fā)明的網(wǎng)絡(luò)處理器,實(shí)施本發(fā)明的方法以及包含本發(fā)明的組件。
背景技術(shù):
存在許多對(duì)通過計(jì)算機(jī)或通信網(wǎng)絡(luò)傳輸?shù)男畔⑦M(jìn)行控制和管理的方面,其超出在相對(duì)簡(jiǎn)單的流量路由概念。它們所包含的主題與網(wǎng)絡(luò)運(yùn)營(yíng)商和客戶之間的關(guān)系更相關(guān),諸如成本、質(zhì)量或業(yè)務(wù)級(jí)別、優(yōu)先級(jí)等。
廣泛地希望將互聯(lián)網(wǎng)徹底重新改造為用于新業(yè)務(wù)的基于包的匯聚平臺(tái),將所有形式的數(shù)字材料發(fā)送到所有類型的應(yīng)用領(lǐng)域中。這種“智能互聯(lián)網(wǎng)”將要在不同的流量流的需要之間進(jìn)行區(qū)分,并且適當(dāng)?shù)胤峙滟Y源來滿足這些需要。除了通過網(wǎng)絡(luò)進(jìn)行適當(dāng)?shù)墓芾碇С种猓焖偻ㄟ^網(wǎng)絡(luò)路由器的數(shù)據(jù)需要三個(gè)基本的流量管理機(jī)制。它們是流量分類、調(diào)節(jié)和處理。
路由器已經(jīng)確定了將包發(fā)送到何處。當(dāng)包被轉(zhuǎn)發(fā)時(shí),分類必須另外標(biāo)識(shí)應(yīng)該如何處理它們,就是所謂的業(yè)務(wù)分類(CoS)。調(diào)節(jié)器然后檢查每一流量流符合其業(yè)務(wù)等級(jí)協(xié)議(SLA)的規(guī)定。該SLA是一種協(xié)議,其指定客戶在不同的業(yè)務(wù)等級(jí)中所允許發(fā)送流量的速率限制。最終,處理機(jī)確符合運(yùn)營(yíng)商所提供的保業(yè)務(wù)保證。典型地,其可以通過實(shí)施每個(gè)有效QoS一個(gè)隊(duì)列來實(shí)現(xiàn)。每一隊(duì)列接收所規(guī)定配額的鏈路帶寬和包緩沖器空間。
由于流量管理是一種移動(dòng)的目標(biāo),隨著新標(biāo)準(zhǔn)和改進(jìn)的算法不斷地出現(xiàn),可編程的方案被認(rèn)為是有高優(yōu)先級(jí)的。工程師所面臨的一個(gè)問題就是如何設(shè)計(jì)可編程的結(jié)構(gòu)體系,其在40Gbit/s的線速率時(shí)每個(gè)包帶有有用的處理周期預(yù)算。
這可以通過參照?qǐng)D1來說明,其所示為網(wǎng)絡(luò)的流量處理部分的部件的非常簡(jiǎn)化的示意圖。所述的機(jī)構(gòu)按照順序包括流量分類器A、流量調(diào)節(jié)器B、流量處理系統(tǒng)C和交換結(jié)構(gòu)S。框C的位置可以不像圖1中所示的那樣,而可以位于該交換結(jié)構(gòu)S之前或之后。所期望的數(shù)據(jù)包的大小是變化的,范圍在40字節(jié)、1.5k字節(jié)、9k字節(jié)以及上至16k字節(jié)之間。
流量分類器框A沒有用于分配帶寬、計(jì)費(fèi)等的裝置。其主要功能是包應(yīng)該接收的業(yè)務(wù)分類的標(biāo)識(shí)。這典型地包括查找操作,從而根據(jù)查找表中的規(guī)則,可以匹配來自該包報(bào)頭的大量字段,其可以使用微流或流匯聚來唯一標(biāo)識(shí)該包。
流量調(diào)節(jié)器框B扮演監(jiān)督角色,其中其可以判定用戶使用了太多的帶寬(假設(shè)如此),并且可以使用對(duì)應(yīng)的標(biāo)記來對(duì)該用戶的包進(jìn)行標(biāo)記。這稱為“著色”,并且所分配的標(biāo)記例如可以是“紅”、“黃”或“綠”。這里也可以進(jìn)行記帳統(tǒng)計(jì),并且其可以考慮應(yīng)用于該包或該組包的色彩。
流量調(diào)節(jié)器執(zhí)行在網(wǎng)絡(luò)業(yè)務(wù)運(yùn)營(yíng)商與其客戶之間的流量調(diào)節(jié)協(xié)議(TCA)中所規(guī)定的策略。TCA通常形成部分更廣的SLA,其規(guī)定時(shí)進(jìn)入(或離開)該業(yè)務(wù)運(yùn)營(yíng)商網(wǎng)絡(luò)的流量配置文件進(jìn)行的商定限制。一般說來,調(diào)節(jié)器因此位于獨(dú)立管理域的邊界節(jié)點(diǎn)中。策略執(zhí)行需要對(duì)流量流進(jìn)行測(cè)量的機(jī)制,以確保它們符合該TCA的規(guī)定?!芭渲梦募獾摹绷?,即步出TCA的邊界之外的那些流可能丟棄大量的流量,這是一種稱為監(jiān)管的措施。可替換地,如上所指示的對(duì)包進(jìn)行標(biāo)記可以看作是更容易被接收的。對(duì)于在下游流量出現(xiàn)擁塞的情況下,所標(biāo)記的包可以順序被區(qū)分。
該流量處理系統(tǒng)框C判斷何時(shí)以及如何將包放入輸出緩沖器和將它們推出,以通過所示部分的輸出端口O/P向前轉(zhuǎn)發(fā)。當(dāng)線速率是40Gbits/s時(shí),包傳輸速率的數(shù)量級(jí)為每秒100,000,000個(gè)包,并且包排隊(duì)到緩沖器中的速率范圍在每秒幾百兆到幾千兆字節(jié)之間。將流量排隊(duì)并然后應(yīng)用調(diào)度和成型機(jī)制的是流量處理機(jī),以根據(jù)所需要的業(yè)務(wù)分類將其轉(zhuǎn)發(fā)。調(diào)度規(guī)則可以確保流量流彼此相互不受干擾,鏈路在流之間公平地共用,滿足對(duì)所保證的業(yè)務(wù)流量的性能限制,并且控制網(wǎng)絡(luò)中的擁塞。
在每一階段,可以收集統(tǒng)計(jì)數(shù)據(jù)用于管理。流量管理的范圍也包括某些其它重要的管理元件,諸如策略管理、系統(tǒng)配置、統(tǒng)計(jì)處理、報(bào)告、會(huì)計(jì)和記帳。
理想地以線速率,例如以40Gbits/s的速率通過塊A、B和C執(zhí)行該功能。在C位于S前面的情況下,不可能以線速率將包從C中取出進(jìn)入交換結(jié)構(gòu)S。因此需要大量的存儲(chǔ)器來將包排隊(duì),從而盡可能地與理想情況接近。作為該過程的輔助,C保持該包的記錄,而不是該包本身。這些記錄優(yōu)選地大小固定,并且包含關(guān)于該包的信息,當(dāng)然它們自己也是可變大小的。
在系統(tǒng)試圖以大于線速率的速率將包放入線中的情況下(就是在“超速率”的條件下),方框C必須確定保留哪些包和阻止或丟棄哪些包。方框B監(jiān)視使用,并試圖根據(jù)平均的基礎(chǔ),向單個(gè)用戶提供它們協(xié)商的帶寬。其可以容忍超過協(xié)商帶寬的暫時(shí)增加,只要該平均不超過預(yù)定的時(shí)間段。相反,方框C監(jiān)視實(shí)際的使用。
在流量處理中,包可以放在多個(gè)隊(duì)列中的一個(gè)中。如果存在超過一個(gè)的多個(gè)隊(duì)列,調(diào)度功能必須確定從隊(duì)列為包提供服務(wù)的順序。該功能的控制就是在該規(guī)范中由“順序列表管理”所表示的。原則上按照調(diào)度器放在隊(duì)列上的相對(duì)優(yōu)先級(jí)確定調(diào)度的順序,而不是根據(jù)包到達(dá)該隊(duì)列的順序。于是該調(diào)度功能是相稱的公平序列。
例如,考慮兩個(gè)流行的調(diào)度方法公平隊(duì)列調(diào)度——隊(duì)列中的每一包給定一個(gè)結(jié)束編號(hào),其指示將該包標(biāo)為待輸出的相對(duì)時(shí)間點(diǎn)。從隊(duì)列為包提供服務(wù)的功能必須標(biāo)識(shí)其下個(gè)包具有最小結(jié)束編號(hào)的隊(duì)列。理想地,只有在已經(jīng)服務(wù)了該包,并且同一隊(duì)列中的下一個(gè)包已經(jīng)出現(xiàn)了之后,出隊(duì)功能才可以作出其下一個(gè)判決。
循環(huán)調(diào)度——按照預(yù)定的順序輪流檢查隊(duì)列。在每次到達(dá)時(shí),可以服務(wù)所規(guī)定名額的數(shù)據(jù)。
基本問題是如何以高速執(zhí)行這種調(diào)度算法。串行化的處理只能隨著時(shí)鐘/周期頻率而縮放,或者通過增加處理管線的深度來進(jìn)行調(diào)度判決。該方法只能提供每包一對(duì)系統(tǒng)時(shí)鐘周期。
首先,由于需要大量可能非常深的隊(duì)列,該調(diào)度和隊(duì)列管理任務(wù)進(jìn)一步變得復(fù)雜。通過串行方式執(zhí)行調(diào)度功能的硬件很有可能是高度定制的,并因此如果其滿足所需要的性能,就會(huì)不靈活。
發(fā)明內(nèi)容
本發(fā)明從其最廣義的角度講,在其所有的方面中都提供一種用于在軟件中以高速率維護(hù)順序邏輯數(shù)據(jù)結(jié)構(gòu)的系統(tǒng)。本發(fā)明的各個(gè)方面陳述如下
在第一方面中,本發(fā)明提供一種用于在通信或計(jì)算機(jī)系統(tǒng)中處理包括數(shù)據(jù)包序列的包流的方法,該方法包括向每一所述包分配退出編號(hào);將所述包排隊(duì)到緩沖器裝置中;并且根據(jù)通過在所述包排隊(duì)之前分配給每一包的所述退出編號(hào)所確定的順序列表,以預(yù)定的順序輸出所排隊(duì)的包。
退出編號(hào)信息優(yōu)選地分配給包記錄,其排隊(duì)在與所述包所排隊(duì)在其中的緩沖器裝置相分開的緩沖器裝置中。該包記錄優(yōu)選地是固定長(zhǎng)度,并且比所述包短。
用于所述包記錄的緩沖器裝置便利地由倉(cāng)組組成,每一倉(cāng)包含一個(gè)范圍的退出編號(hào),用于高退出編號(hào)包記錄的倉(cāng)具有的范圍大于用于低退出編號(hào)包記錄的倉(cāng)。
倉(cāng)中的低退出編號(hào)包記錄優(yōu)選地被細(xì)分成多個(gè)倉(cāng),每一個(gè)都包含對(duì)應(yīng)于更小范圍的退出編號(hào)的包記錄。
在將與當(dāng)前為空的倉(cāng)對(duì)應(yīng)的退出編號(hào)分配給包記錄時(shí),該包記錄可以保持在同一退出編號(hào)的副倉(cāng)中,用于在當(dāng)前為空的所述倉(cāng)之后置空。
該倉(cāng)可以是FIFO緩沖器、LIFO棧或其混合。
該隊(duì)列管理優(yōu)選地通過如下進(jìn)行(a)并行處理所有倉(cāng),并通過并行處理器,優(yōu)選地是SIMD處理器將輸入數(shù)據(jù)插入到倉(cāng)中。
本發(fā)明也包括一種通信網(wǎng)絡(luò)處理器、一種用于在計(jì)算機(jī)系統(tǒng)中分類數(shù)據(jù)的裝置以及一種被結(jié)構(gòu)成用來執(zhí)行上述方法的并行處理器。
現(xiàn)在將參照下面的附圖描述本發(fā)明,其中圖1是理想的流量處理機(jī)制的示意表示;圖2所述為本發(fā)明的原理;圖3是使用本發(fā)明的系統(tǒng)的功能簡(jiǎn)圖;圖4所示為使用MTAP處理器和狀態(tài)引擎的本發(fā)明的實(shí)施方式;圖5是處理順序列表的方式的示意表示;以及圖6所示為如何管理細(xì)分的順序列表。
具體實(shí)施例方式
介紹根據(jù)本發(fā)明,第三種調(diào)度方法是維護(hù)單個(gè)完全排序的隊(duì)列,而不是多個(gè)FIFO隊(duì)列。換言之,不是對(duì)一組并行輸排隊(duì)列中的包進(jìn)行緩沖,并然后將某個(gè)序列中的包調(diào)度到輸出隊(duì)列中,而是在包到達(dá)的時(shí)候就被分類,直接進(jìn)入輸出隊(duì)列。
相比于公平隊(duì)列和循環(huán)調(diào)度方法,其在排隊(duì)之前必須以網(wǎng)速對(duì)每一包進(jìn)行計(jì)算,但是本發(fā)明必須將包插入到可能會(huì)非常巨大的順序數(shù)據(jù)結(jié)構(gòu)中。簡(jiǎn)化了包刪除。
然而,該方法使得在該方案的實(shí)施方式中可以開發(fā)并行性。當(dāng)在串行方案中通過強(qiáng)力不能再提高性能時(shí),前進(jìn)的方式就是找到可以通過其并行性提高的方法。
在優(yōu)選地實(shí)施方式中,本發(fā)明能夠利用并行處理結(jié)構(gòu)體系,其可以提供每個(gè)包足夠數(shù)量的處理周期,以使得在包從交換結(jié)構(gòu)到達(dá)時(shí),能夠以網(wǎng)速對(duì)包進(jìn)行結(jié)束編號(hào)(即確定該包的退出時(shí)間的編號(hào))的計(jì)算。本發(fā)明也提供一種以高速維護(hù)大量順序列表的方案。
陣列中的每一SIMD處理器可以用來將并行處理能力的量倍增,并且可以通過后面將要描述的方式在每一處理器元件(PE)中提供存儲(chǔ)。
交換結(jié)構(gòu)將來自多個(gè)源端口的包路由到每一目的地端口,導(dǎo)致瞬時(shí)突發(fā)的包的速率超出了線卡的出口線速率。在這種突發(fā)中,必須臨時(shí)存儲(chǔ)超出的包。在高線速率時(shí),包存儲(chǔ)以及存儲(chǔ)容量的速率都必須非常高。在400Gbits/s的線速率時(shí),典型地需要將120Gbits/s的數(shù)據(jù)帶寬匯聚到500M字節(jié)的存儲(chǔ)器中。更重要的是,對(duì)該存儲(chǔ)器的隨機(jī)訪問需要大量可獨(dú)立尋址的通道,并且相應(yīng)地對(duì)器件封裝需要大量的引線??梢允褂玫鸵€總數(shù)、與專用存儲(chǔ)集線器鏈接的高速串行鏈路實(shí)現(xiàn)可變存儲(chǔ)器子系統(tǒng)。該集線器然后提供多個(gè)通道的高容量快速訪問存儲(chǔ)器技術(shù),諸如快速循環(huán)RAM(FCRAM)或Rambus。這是在該系統(tǒng)結(jié)構(gòu)上均衡器件引線總數(shù)的有效方法。
由于在流量處理中不需要訪問包內(nèi)容,所以包可以直接流到存儲(chǔ)集線器。然后處理小的包元數(shù)據(jù)的記錄,并將其用來表示邏輯隊(duì)列中的包。流量處理所要求的擁塞避免(隨機(jī)早期檢測(cè))和調(diào)度(公平排隊(duì))算法典型地通過適當(dāng)配置的MTAP處理系統(tǒng)以軟件實(shí)現(xiàn)。
通過該流量處理機(jī)的包記錄的流在性質(zhì)上與通過該分類器和調(diào)節(jié)器的包的流截然不同。包記錄通常小于包本身,并且可以是固定大小,并且在從該交換結(jié)構(gòu)中突發(fā)包期間,吞吐速率可以非常高。
高的吞吐量必然減少了用于處理的周期預(yù)算。相干并行方法的一個(gè)重點(diǎn)就是其容易縮放。使用用于比較的分類器,就增加了每個(gè)處理器的PE數(shù)目或者每個(gè)芯片的MTAP處理器的數(shù)目,以滿足高速時(shí)每個(gè)包記錄所要求的處理周期數(shù)。通過顯著地減少每PE的存儲(chǔ)器以適應(yīng)相對(duì)小的包記錄,可以克服所需要的硅面積的隱含增加。
概念和發(fā)明的描述首先考慮圖2,其所示為倉(cāng)分類的基本概念。左邊所示為粗糙的倉(cāng)分類,右邊所示為精細(xì)的倉(cāng)分類。每一倉(cāng)包含帶有退出編號(hào)的范圍的包記錄,除了退出編號(hào)為1的倉(cāng)之外。為了說明,退出編號(hào)為2和3的倉(cāng)用粗線標(biāo)記,表示這是一個(gè)倉(cāng)??梢詫⑼顺鼍幪?hào)為4-7的包記錄放入另一倉(cāng)中,在圖2中也用粗實(shí)線標(biāo)記。更高退出編號(hào)的倉(cāng)通常包含比低退出編號(hào)的倉(cāng)更大范圍的退出編號(hào)。然而,倉(cāng)的內(nèi)容并沒有排序。
需要一種接收包并將它們放在適當(dāng)?shù)膫}(cāng)中的功能。另外需要一種按照結(jié)束編號(hào)范圍的升序輪流讀取每一倉(cāng)的內(nèi)容的功能。處理的這一階段產(chǎn)生根據(jù)倉(cāng)范圍以粗分類的順序包流。它們?nèi)缓筮M(jìn)入另一具有較小范圍的倉(cāng)中。重復(fù)該過程,直至該流被完全分類。
假定在具有結(jié)束編號(hào)的平均值不斷增加的包到達(dá)時(shí),在該序列的一端的倉(cāng)剛好為空,在另一端安裝新倉(cāng)。當(dāng)倉(cāng)為空時(shí),創(chuàng)建盡量較低退出編號(hào)的倉(cāng)。
圖3所示為應(yīng)用了包含本發(fā)明的概念的方法。該標(biāo)號(hào)表明在包到達(dá)時(shí)的事件順序訪問狀態(tài),以及將包組倉(cāng)等。該倉(cāng)分類過程的迭代性質(zhì)通過所述的兩個(gè)階段表示。每一倉(cāng)可以實(shí)施為FIFO隊(duì)列或存儲(chǔ)器中的LIFO?;蚨叩慕M合??梢酝ㄟ^指針管理這種數(shù)據(jù)結(jié)構(gòu),其定位將數(shù)據(jù)插入該結(jié)構(gòu)中和/或從其中刪除的點(diǎn)。操作這些倉(cāng)的功能需要訪問這些指針。這些功能可以映射到處理器中,并且指針可以映射到狀態(tài)存儲(chǔ)器中。
該數(shù)據(jù)結(jié)構(gòu)包括超過一個(gè)的多組倉(cāng)。在一組倉(cāng)內(nèi),結(jié)束編號(hào)范圍是常數(shù),但是在組之間,該范圍隨著退出編號(hào)變小而逐漸變小。范圍最寬的倉(cāng)具有最大的退出編號(hào)值,并且范圍最小的倉(cāng)具有最小的退出編號(hào)值。例如,一個(gè)組中所有倉(cāng)上的結(jié)束編號(hào)的總范圍可以等于相鄰組中單個(gè)倉(cāng)的范圍。
當(dāng)倉(cāng)被置空時(shí),將其分類到下一組倉(cāng)中。或者重復(fù)此直至最后一組倉(cāng)的結(jié)束編號(hào)范圍是一致的,或者當(dāng)最小的倉(cāng)被置空時(shí),在將它們按照次序轉(zhuǎn)發(fā)之前對(duì)它們進(jìn)行最終分類。
實(shí)施例的詳述圖4所示為MTAP處理器如何可以用來實(shí)施順序列表管理器。該標(biāo)號(hào)所示為在將包進(jìn)行調(diào)度、組倉(cāng)、重組倉(cāng)、分類和輸出等時(shí)出現(xiàn)的事件順序。當(dāng)將MTAP處理器設(shè)置在數(shù)據(jù)流處理結(jié)構(gòu)體系中時(shí),它們非常適合處理高速流的包。通過執(zhí)行數(shù)據(jù)的批讀取、執(zhí)行某些處理、并然后將數(shù)據(jù)輸出到隊(duì)列上,自然地對(duì)其進(jìn)行操作。
用作硬件加速器的狀態(tài)引擎使得該MTAP處理器能夠存儲(chǔ)和管理該倉(cāng)所需要的邏輯狀態(tài)。最方便地將這些倉(cāng)實(shí)施為L(zhǎng)IFO棧。這樣可以將每個(gè)倉(cāng)所需要的狀態(tài)最小化,并簡(jiǎn)化了作為存儲(chǔ)器中鏈接列表的倉(cāng)的管理。當(dāng)每一包存儲(chǔ)在倉(cāng)中時(shí),其位置保留在該狀態(tài)引擎中。其可以被需要寫到該同一倉(cāng)中的下一個(gè)包用作指針。于是每一倉(cāng)是一個(gè)棧,其中每一項(xiàng)向下指向下一個(gè)。
使用數(shù)據(jù)緩沖器塊來存儲(chǔ)倉(cāng)。塊包含倉(cāng)存儲(chǔ)器,并向制造者和用戶提供與該處理器的接口。用戶接收到包流,并將它們簡(jiǎn)單地寫到所提供的地址中。制造者接收到來自處理器的批讀取請(qǐng)求,并從所請(qǐng)求的倉(cāng)中輸出數(shù)據(jù)。由于每一倉(cāng)被作為鏈接列表組織,所以制造者的責(zé)任是在從倉(cāng)中讀取每一包時(shí),從每一包中提取該鏈接列表指針。使用SRAM,訪問時(shí)間應(yīng)該足夠快,以高效地進(jìn)行該串行化處理。
在實(shí)際的系統(tǒng)實(shí)施例中,不需要在倉(cāng)中存儲(chǔ)實(shí)際的包。如前所提到的,表示關(guān)于該包的信息的記錄可以在它們的位置中處理。由于倉(cāng)現(xiàn)在可以存儲(chǔ)項(xiàng)(記錄),其通常具有比包更小的大小,但也不一定如此,并且可以是固定大小,這樣就簡(jiǎn)化了實(shí)施方式。
作為對(duì)本發(fā)明的方法進(jìn)行理解的幫助,現(xiàn)在參照?qǐng)D5和6。所考慮的情況是包的結(jié)束編號(hào)表示緩沖器中的存儲(chǔ)位置,并因此表示從存儲(chǔ)器讀取包和將其傳送到線輸出O/P的次序。根據(jù)多個(gè)參數(shù)將數(shù)據(jù)包分配給“流”,包括它們的源、目的、業(yè)務(wù)分類、成本和性質(zhì),諸如視頻或網(wǎng)際協(xié)議(IP),但并不限于此。然后可以管理它們的次序?qū)ⅰ案摺?、“中”和“低”的?yōu)先級(jí)分配給這些流。然后可以根據(jù)每個(gè)流實(shí)施記帳。顯然需要一種策略,用于判決在何時(shí)從哪一隊(duì)列中取出哪一包。
可以根據(jù)為記帳目的設(shè)置的參數(shù),通過向每一包分配表示退出時(shí)間或編號(hào)的標(biāo)記來實(shí)現(xiàn)這種管理標(biāo)準(zhǔn)。因此按照退出時(shí)間或編號(hào)的次序?qū)鎯?chǔ)在緩沖器中。該“編號(hào)”可以表示在所需要的隊(duì)列中所分配的退出時(shí)間或退出編號(hào)。然后在該系統(tǒng)中不需要“智能”來按照所需要的次序推出包,這是因?yàn)樵缫呀?jīng)在存儲(chǔ)階段中設(shè)置了該次序。
可以通過將具有相似退出時(shí)間或編號(hào)的這些包存儲(chǔ)在相同的存儲(chǔ)倉(cāng)中便利地管理該退出時(shí)間次序。然而并不是每一退出時(shí)間或編號(hào)應(yīng)該具有專用的存儲(chǔ)倉(cāng)。倉(cāng)可能足夠多,可以按照次序容納包。其如圖5中示意性所示,其中具有退出時(shí)間或編號(hào)順序1的包放在一個(gè)倉(cāng)中,具有順序2和3的那些包共同放在外面的另一組倉(cāng)3-2中,具有順序4至7的那些包共同放在另一倉(cāng)7-4中,等等,如果需要的話,直至1000。為了拷貝超過當(dāng)前所使用的最高編號(hào)倉(cāng)的退出時(shí)間或編號(hào),該末倉(cāng)可以設(shè)計(jì)為n至無限大。當(dāng)大于n的編號(hào)進(jìn)入該倉(cāng)中時(shí),該倉(cāng)內(nèi)的范圍本身可以被細(xì)分,使得在將來可以將該末倉(cāng)重命名為10n至無限大??梢灾貜?fù)該過程。
重要的是要理解,只有包記錄的順序編號(hào)需要存儲(chǔ),而不是這些包本身。相比于大的多并且大小可變的包本身,通過這種方式可能有大量的保存,因?yàn)橛涗浛梢允枪潭ǖ拈L(zhǎng)度,并因此可能占用存儲(chǔ)倉(cāng)中已知的預(yù)定分配。而且,當(dāng)通過一系列并行MTAP處理器的方式實(shí)施本發(fā)明時(shí),如前所述,可以通過MTAP處理器的各個(gè)處理元件(PE)處理每一記錄。通過這種方式,單個(gè)時(shí)鐘周期可以享用64個(gè)周期的處理時(shí)間的好處,因?yàn)樵趩沃噶疃鄶?shù)據(jù)(SIMD)條件下操作的MTAP處理器具有并行結(jié)構(gòu)體系。
返回到圖5,并且例如考慮關(guān)于具有混合退出順序2和3的包記錄的位置的情況,該并行處理器可以將順序2或3記錄的列表分成用于順序2或順序3中每一個(gè)的各個(gè)列表。類似地,用于順序編號(hào)4至7的列表可以被粗糙地分成用于順序編號(hào)4和5(倉(cāng)5-4)以及用于順序編號(hào)6和7(倉(cāng)7-6)的各個(gè)順序列表。這些粗列表最終將通過與用于結(jié)束順序2和3的組合順序列表相同的方式被分解成為更精細(xì)的列表。如圖6中示意性地所示為用于細(xì)分該順序列表的過程。
如圖所示,用于2和3的組合順序列表被分解成為分別用于順序2和用于順序3的單獨(dú)順序列表。與此同時(shí),可以讀取列表1中的包記錄,以從緩沖器存儲(chǔ)中提取對(duì)應(yīng)的包,并將其傳送到線O/P裝置上。一旦列表1為空時(shí),管理器從前面分類的列表2移到空列表。例如在分類組合列表2-3時(shí),如果到達(dá)具有結(jié)束順序2的新記錄,將該新到達(dá)傳送到第二順序2列表(倉(cāng)2′)中,如圖6中用于該目的所創(chuàng)建的虛線所示。在用于順序2的包記錄的前一分類的列表已經(jīng)為空之后,用于順序2的包記錄的倉(cāng)2′將被置空。相同的設(shè)置也應(yīng)用于順序3的新項(xiàng)(倉(cāng)3′)。
根據(jù)SIMD結(jié)構(gòu)體系實(shí)施本發(fā)明的主要優(yōu)點(diǎn)就是在可編程性方面,而不是在硬件中必須預(yù)測(cè)用于每一順序組的各個(gè)存儲(chǔ)倉(cāng)的數(shù)目和大小?;谟布姆椒▽⒈厝灰髽O其高的處理器速度,并且會(huì)復(fù)雜的多。如前所述,SIMD處理優(yōu)選地倍增了處理器時(shí)鐘周期的數(shù)目,從而成比例的增加了處理器速度。
每一倉(cāng)或者可以是FIFO類型的,或者可以通過LIFO類型的棧實(shí)施。棧的優(yōu)點(diǎn)是它們?nèi)菀讓?shí)施。對(duì)于順序列表管理,它們顛倒記錄所存儲(chǔ)的順序這樣的事情并不重要,這是因?yàn)樽詣?dòng)地劃分列表確保了包會(huì)根據(jù)它們最初所分配的退出順序標(biāo)記,按照正確的順序在O/P端口上輸出。相同流中的包會(huì)具有不同的退出編號(hào),確保它們的順序得到維護(hù)。
倉(cāng)的編號(hào)可以變化到大約1000。在倉(cāng)的編號(hào)與倉(cāng)/列表分類的量之間不可避免地存在折中。越少的隊(duì)列要求越多的分類。系統(tǒng)設(shè)計(jì)者需要判定上下文,尤其是所想要的應(yīng)用。
另外,下面的標(biāo)準(zhǔn)可以影響關(guān)于列表管理的該流量處理機(jī)的最終設(shè)計(jì)按需負(fù)荷均衡該處理器在排隊(duì)(調(diào)度)任務(wù)與出隊(duì)(最終分類)任務(wù)之間分開。必須實(shí)施足夠數(shù)目的處理器,使得它們可以拷貝具有瞬間最差速率情況下的包到達(dá)。然而,標(biāo)稱的到達(dá)速率非常低。這表示多個(gè)處理器可以定期地處于空閑或未使用。在這種情況下,可以將少量的處理器永久地分配給排隊(duì)或出隊(duì)任務(wù)。其余的可以浮動(dòng)。如果檢測(cè)到輸入擁塞,然后浮動(dòng)處理器對(duì)交換進(jìn)行線程處理,并輔助排隊(duì)任務(wù)。當(dāng)清除了擁塞的時(shí)候,浮動(dòng)處理器移動(dòng)到出隊(duì)任務(wù),并幫助清除隊(duì)列中的積壓。如果出隊(duì)已經(jīng)很好的處理了,然后浮動(dòng)處理器可以進(jìn)行默認(rèn)的周邊任務(wù),諸如用于向控制平面順序報(bào)告的統(tǒng)計(jì)預(yù)處理。
遮蔽存儲(chǔ)器管理這是該順序列表管理的一個(gè)重要方面。任何給定的數(shù)據(jù)結(jié)構(gòu)需要讀取和寫入項(xiàng)的功能,將結(jié)構(gòu)特征化的邏輯狀態(tài),以及有效地存儲(chǔ)該結(jié)構(gòu)的下層存儲(chǔ)器管理。該處理器和加速器只實(shí)現(xiàn)了前兩個(gè)。還沒有注意到需要維護(hù)有效存儲(chǔ)器的自由列表和分配用于將該數(shù)據(jù)結(jié)構(gòu)裝入其中的存儲(chǔ)器。這其本身通常會(huì)導(dǎo)致相當(dāng)大的系統(tǒng)開銷。順序列表管理器的效率肯定是可行的,因?yàn)橐呀?jīng)為其執(zhí)行了該存儲(chǔ)器管理,如下背景在40G的流量處理中,實(shí)際上是將包緩沖與處理任務(wù)分開。包存儲(chǔ)在包緩沖系統(tǒng)內(nèi)的存儲(chǔ)器中。小記錄被傳送到處理系統(tǒng),其高效地操作記錄,來代替它們所表示的包。
該包存儲(chǔ)器被分成固定大小的決。雛護(hù)一個(gè)自由列表或位圖,其跟蹤哪些塊已經(jīng)分配,哪些塊是自由的。誼存儲(chǔ)器管理系統(tǒng)使用該位圖來動(dòng)態(tài)地管理存儲(chǔ)器。包在到達(dá)的時(shí)候可以直接從交換結(jié)構(gòu)流入存儲(chǔ)器中,并且保留元數(shù)據(jù)的小記錄,用于處理。更重要的是,該記錄會(huì)包含該包所存儲(chǔ)于其中的(第一)塊存儲(chǔ)器的存儲(chǔ)器地址。
包記錄處理和存儲(chǔ)通過順序列表管理器將包記錄存儲(chǔ)在數(shù)據(jù)結(jié)構(gòu)中。這需要存在兩個(gè)資源一一用于存儲(chǔ)描述結(jié)構(gòu)中每一倉(cāng)的邏輯狀態(tài)以及用于存儲(chǔ)記錄本身。狀態(tài)存儲(chǔ)和倉(cāng)操作分別通過隊(duì)列狀態(tài)引擎(QSE)和并行處理器實(shí)現(xiàn)。倉(cāng)存儲(chǔ)器管理直接依賴于該包存儲(chǔ)器管理。
倉(cāng)存儲(chǔ)器管理概念用于記錄存儲(chǔ)所提供的存儲(chǔ)器被組織成使得其與為包所提供的存儲(chǔ)器鏡像。對(duì)于讀包存儲(chǔ)器中的每一存儲(chǔ)器塊,在該記錄存儲(chǔ)中直接相關(guān)的存儲(chǔ)器地址中存在對(duì)應(yīng)的倉(cāng)。
當(dāng)存儲(chǔ)包時(shí),該包所放置于其中的存儲(chǔ)器塊必須是空的。然后該記錄存儲(chǔ)器中的倉(cāng)也必須是空的。當(dāng)調(diào)度記錄時(shí),該存儲(chǔ)系統(tǒng)恢復(fù)該包,并將該包所占用的存儲(chǔ)器塊釋放。同時(shí),釋放對(duì)應(yīng)的記錄倉(cāng)。由于在該包存儲(chǔ)和恢復(fù)的時(shí)間內(nèi),包記錄的存儲(chǔ)和檢索被有效地“嵌套”,該系統(tǒng)非常穩(wěn)健。
指針的使用由于記錄是隨機(jī)地存儲(chǔ)在該記錄存儲(chǔ)器中,屬于給定倉(cāng)的記錄必須指向鏈接列表管理中的另一個(gè)。該記錄包含指向包存儲(chǔ)器的指針。該指針然后也指向存儲(chǔ)器中該記錄自己的倉(cāng)。
實(shí)際上,記錄同時(shí)指向其自身以及其鄰居。相同的信息被存儲(chǔ)兩次??紤]鏈接列表中相鄰的記錄A和B。記錄A具有指針“Self_A”,這是其自己的倉(cāng),以及“Next_A”,這是指向該記錄中下一個(gè)記錄(記錄B)的指針。記錄B也具有“Self_B”和“Next_B”。可以認(rèn)為“Next_A”與“Self_B”相同。只有“下一個(gè)”指針才是每一包中所實(shí)際需要的。當(dāng)(按照順序A、B、C……)讀取倉(cāng)時(shí),通過在其存儲(chǔ)在列表中之前,從記錄中檢索其指針,每一記錄可以恢復(fù)其自己的指針標(biāo)識(shí)。這樣就相當(dāng)大地減少了記錄存儲(chǔ)要求。
輔助特征當(dāng)對(duì)一個(gè)存儲(chǔ)器的寫/讀訪問嵌套在對(duì)另一存儲(chǔ)器的寫/讀訪問中時(shí),兩個(gè)存儲(chǔ)系統(tǒng)可以共用相同的存儲(chǔ)器管理器。當(dāng)沒有存儲(chǔ)記錄自己的指針標(biāo)識(shí)時(shí),其可以與當(dāng)存儲(chǔ)了該記錄時(shí)的鏈接列表指針互換。當(dāng)記錄傳送入和傳出存儲(chǔ)器時(shí),必須存在轉(zhuǎn)換。可以通過專用算法管理倉(cāng)。
權(quán)利要求
1.一種用于在通信或計(jì)算機(jī)系統(tǒng)中處理包括數(shù)據(jù)包序列的包流的方法,該方法包括向每一所述包分配退出編號(hào);在緩沖器裝置中將所述包排隊(duì);并且根據(jù)通過在所述包排隊(duì)之前分配給每一包的所述退出編號(hào)所確定的順序列表,以預(yù)定的順序輸出所排隊(duì)的包。
2.如權(quán)利要求1中所述的方法,其中將所述退出編號(hào)信息分配給包記錄,其排隊(duì)在與所述包所排隊(duì)在其中的緩沖器裝置相分開的緩沖器裝置中。
3.如權(quán)利要求2中所述的方法,其中該包記錄的長(zhǎng)度固定。
4.如權(quán)利要求2中所述的方法,其中該包記錄比所述包短。
5.如權(quán)利要求1中所述的方法,其中用于所述包記錄的該緩沖器裝置包括多組倉(cāng),每一倉(cāng)包含一個(gè)范圍的退出編號(hào),用于高退出編號(hào)包記錄的倉(cāng)具有的范圍大于用于低退出編號(hào)包記錄的倉(cāng)。
6.如權(quán)利要求5中所述的方法,其中倉(cāng)中的低退出編號(hào)的包記錄被細(xì)分成多個(gè)倉(cāng),每一個(gè)都包含對(duì)應(yīng)于更小范圍的退出編號(hào)的包記錄。
7.如權(quán)利要求5中所述的方法,其中在將與當(dāng)前為空的倉(cāng)對(duì)應(yīng)的退出編號(hào)分配給包記錄時(shí),該包記錄保持在同一退出編號(hào)的副倉(cāng)中,用于在當(dāng)前被置空的所述倉(cāng)之后置空。
8.如權(quán)利要求6中所述的方法,其中該倉(cāng)是FIFO緩沖器。
9.如權(quán)利要求6中所述的方法,其中該倉(cāng)是LIFO棧。
10.如權(quán)利要求6中所述的方法,其中該倉(cāng)是FIFO緩沖器與LIFO棧的混合。
11.如權(quán)利要求5中所述的方法,其中該隊(duì)列管理通過如下進(jìn)行(a)并行處理所有倉(cāng);和(b)通過并行處理器將輸入數(shù)據(jù)插入到倉(cāng)中。
12.如權(quán)利要求11中所述的方法,其中執(zhí)行所述插入步驟(b)的所述并行處理器是陣列處理器。
13.如權(quán)利要求12中所述的方法,其中執(zhí)行所述插入步驟(b)的所述陣列處理器是SIMD處理器。
14.一種通信網(wǎng)絡(luò)處理器,其中流量流由數(shù)據(jù)包流組成,該網(wǎng)絡(luò)處理器包括用于向每一所述包分配緩沖器退出編號(hào)的裝置;用于將所述包排隊(duì)的緩沖器裝置;以及輸出裝置,用于根據(jù)通過在所述包排隊(duì)之前分配給每一包的所述退出編號(hào)所確定的順序列表,以預(yù)定的順序輸出所排隊(duì)的包。
15.一種用于對(duì)計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)進(jìn)行分類的裝置,其中所要處理的數(shù)據(jù)由數(shù)據(jù)包流組成,所述裝置包括用于向每一所述包分配緩沖器退出編號(hào)的裝置;用于將所述包排隊(duì)的緩沖器裝置;以及輸出裝置,用于根據(jù)通過在所述包排隊(duì)之前分配給每一包的所述退出編號(hào)所確定的順序列表,以預(yù)定的順序輸出所排隊(duì)的包。
16.一種并行處理器,用于實(shí)施根據(jù)權(quán)利要求1至13的任一項(xiàng)的方法。
17.一種使用SIMD的并行處理器,并且用于實(shí)施根據(jù)權(quán)利要求1至13的任一項(xiàng)的方法。
18.一種網(wǎng)絡(luò)處理器,用于在通信網(wǎng)絡(luò)中執(zhí)行如權(quán)利要求14中所述的數(shù)據(jù)包管理。
19.一種處理器,用于在計(jì)算機(jī)系統(tǒng)中執(zhí)行如權(quán)利要求15中所述的數(shù)據(jù)包分類。
全文摘要
一種在通信或計(jì)算機(jī)系統(tǒng)中對(duì)包括數(shù)據(jù)包序列的包流進(jìn)行的分類,其通過如下執(zhí)行向每一所述包分配退出編號(hào);將所述包排隊(duì)到緩沖器裝置中;并且根據(jù)通過在所述包排隊(duì)之前分配給每一包的所述退出編號(hào)所確定的順序列表,以預(yù)定的順序輸出所排隊(duì)的包。該退出編號(hào)信息優(yōu)選地分配給包記錄,其排隊(duì)在與所述包所排隊(duì)在其中的緩沖器裝置相分開的緩沖器裝置中。該包記錄優(yōu)選地是固定長(zhǎng)度,并且比所述包短。用于所述包記錄的緩沖器裝置包括倉(cāng)組,每一倉(cāng)包含一個(gè)范圍的退出編號(hào),用于高退出編號(hào)包記錄的倉(cāng)具有的范圍大于用于低退出編號(hào)包記錄的倉(cāng)。倉(cāng)中的低退出編號(hào)包記錄被細(xì)分成多個(gè)倉(cāng),每一個(gè)都包含對(duì)應(yīng)于更小范圍的退出編號(hào)的包記錄。可以創(chuàng)建副倉(cāng),以臨時(shí)存儲(chǔ)分配給當(dāng)前為空的倉(cāng)的記錄。該倉(cāng)可以通過并行處理器,優(yōu)選地通過SIMD陣列處理器填充。
文檔編號(hào)H04L12/54GK1736069SQ200380108530
公開日2006年2月15日 申請(qǐng)日期2003年11月11日 優(yōu)先權(quán)日2002年11月11日
發(fā)明者A·斯潘塞, K·卡梅倫 申請(qǐng)人:克利爾斯皮德科技有限公司