專利名稱:對軟件管理樹進(jìn)行模式范圍比較的方法和裝置的制作方法
本申請和下述共同未決、共同轉(zhuǎn)讓的專利申請相關(guān)并含有共用的公開“網(wǎng)絡(luò)處理器處理復(fù)合體和方法”,序列號09/384,691,1999年8月27日提交;“用于網(wǎng)絡(luò)處理器的全匹配(FM)搜索算法實(shí)現(xiàn)”,序列號09/543,531;以及“用于網(wǎng)絡(luò)處理器的最長前綴匹配(LPM)算法實(shí)現(xiàn)”,序列號09/544,992。每件共同未決專利申請完整地收錄為本說明書的參考資料。
本發(fā)明一般地涉及模式匹配算法,并且更具體地涉及可在網(wǎng)絡(luò)處理部件中實(shí)現(xiàn)的軟件管理樹搜索算法。
為在媒體速度下支持越來越復(fù)雜的任務(wù),需要硬件集成處理,這導(dǎo)致建立網(wǎng)絡(luò)處理器。通過一組嵌入的可編程協(xié)議處理器以及互補(bǔ)的系統(tǒng)協(xié)處理器,網(wǎng)絡(luò)處理器在具有功能靈活性下提供線路速度幀處理和傳送能力。期待網(wǎng)絡(luò)處理器會以微處理器用于當(dāng)今的個人計(jì)算機(jī)的方式變?yōu)榫W(wǎng)絡(luò)的基本網(wǎng)絡(luò)構(gòu)件。網(wǎng)絡(luò)處理器提供多數(shù)據(jù)流的實(shí)時處理,提供增強(qiáng)的安全性并且提供IP包處理和傳送能力。另外,它們通過先進(jìn)的技術(shù),例如并行分布式處理和流水線處理設(shè)計(jì),提供速度改進(jìn)。這些能力可以使有效的搜索引擎成為可能,可提高數(shù)據(jù)處理吞吐量并對復(fù)雜任務(wù)提供快速執(zhí)行。網(wǎng)絡(luò)處理器的可編程特性對網(wǎng)絡(luò)產(chǎn)品開發(fā)人員在無須新顧客的專用集成電路(ASIC)設(shè)計(jì)下提供一種更容易的遷移路徑來實(shí)現(xiàn)新協(xié)議和新技術(shù)。
網(wǎng)絡(luò)處理器為因特網(wǎng)或企業(yè)網(wǎng)提供者開發(fā)互連解決辦法提供一種可高定制化、可擴(kuò)縮的技術(shù)。網(wǎng)絡(luò)處理器為從低端、獨(dú)立部件到多機(jī)柜設(shè)備的大范圍的解決辦法提供基礎(chǔ)。通過采用高性能、非阻塞包路由選擇交換技術(shù)以及專用接口,例如IBM的Data Aligned Serial Link(DASL)接口(該接口可適用于其它工業(yè)交換技術(shù)),達(dá)到這種定標(biāo)特性。
作為一種可編程通信集成電路,網(wǎng)絡(luò)處理器提供非常有效的包分類、對每幀的多表查找、包修改、隊(duì)列/政策管理以及其它包處理能力。網(wǎng)絡(luò)管理器把交換引擎、搜索引擎、幀處理器和以太網(wǎng)MAC集成一個部件上以支持要求基于任何協(xié)議層上的幀內(nèi)容的高容量、媒體加權(quán)交換幀的顧客的需求。
硬件加速器進(jìn)行幀傳送、幀過濾和幀改變。網(wǎng)絡(luò)處理器的執(zhí)行數(shù)百條帶有復(fù)雜的范圍及動作規(guī)定的規(guī)則的能力為過濾能力建立了新的基準(zhǔn),使得基于網(wǎng)絡(luò)處理器的系統(tǒng)獨(dú)特地適用于高能力的服務(wù)器處理應(yīng)用。
用網(wǎng)絡(luò)處理器構(gòu)筑的典型系統(tǒng)采用分布式軟件模型,其中各個可編程網(wǎng)絡(luò)處理器并發(fā)地執(zhí)行任務(wù)。有些功能是在控制點(diǎn)(CP)處理器處進(jìn)行的,CP可在網(wǎng)絡(luò)處理器的內(nèi)部或外部。CP提供對層2和層3的路由選擇協(xié)議、層4和層5的網(wǎng)絡(luò)應(yīng)用以及系統(tǒng)管理的支持。通過網(wǎng)絡(luò)處理器硬件和常駐皮代碼的組合實(shí)現(xiàn)線路速度傳送和過濾功能。
在由一些互連節(jié)點(diǎn)組成的通信網(wǎng)絡(luò)中,可從一節(jié)點(diǎn)向任何另一節(jié)點(diǎn)或向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。稱為路由器的專用節(jié)點(diǎn)負(fù)責(zé)把數(shù)據(jù)傳送到它們的目的地。任何通過通信網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包含有關(guān)目的地地址的信息,通常作為標(biāo)題的一部分。每個路由器把該信息或者至少它的一部分和內(nèi)部存儲的地址表比較。若找到所存儲的地址和目的地地址之間的匹配,該路由器建立一條通往該目的地節(jié)點(diǎn)的路徑。取決于網(wǎng)絡(luò)尺寸和結(jié)構(gòu),或者把數(shù)據(jù)直接傳送到它們的目的地或者發(fā)送到另一個中間路由器。國際標(biāo)準(zhǔn)化組織已頒布一個路由選擇標(biāo)準(zhǔn),在其中路由器存儲用于部分地址的路由選擇信息。接著路由器把包發(fā)送到它的數(shù)據(jù)庫中所具有的最佳匹配部分地址。該ISO標(biāo)準(zhǔn)允許利用給定數(shù)量的數(shù)字或給定的標(biāo)題長度建立節(jié)點(diǎn)的分層結(jié)構(gòu)。主路由器通過地址的起始部分定址,子路由器通過中間部分,而最終目的地通過地址的最后幾位數(shù)字。從而,路由器讀分配給數(shù)據(jù)要發(fā)送到層次的幾位數(shù)字就夠了。
接收包的路由選擇基于伴隨的地址串。該地址串充當(dāng)數(shù)據(jù)庫中的搜索關(guān)鍵字,其中該數(shù)據(jù)庫含有該地址串以及其它有關(guān)細(xì)節(jié)例如在包的遞送中哪個路由器是下一個路由器。該數(shù)據(jù)庫被稱為路由選擇表,而當(dāng)前路由器和下個路由器之間的鏈路稱為包的前進(jìn)中的下個跳躍。路由選擇表搜索過程取決于地址的結(jié)構(gòu)以及表的組織。例如,長度小于8位并具有非層次結(jié)構(gòu)的搜索關(guān)鍵字應(yīng)會最高效地在按一系列地址項(xiàng)組織的路由選擇表中找到。該搜索關(guān)鍵字應(yīng)充當(dāng)表中的索引以定位正確的項(xiàng)。對于較長的搜索關(guān)鍵字,例如32位長,相應(yīng)的路由選擇表可能具有多于10,000的項(xiàng),把這種數(shù)據(jù)庫組織成簡單的表以借助索引直接搜索會浪費(fèi)大量的存儲器空間,因?yàn)樵摫淼拇蟛糠謺强盏摹?br>
常規(guī)路由器把搜索過程分解為幾步。第一步是判定路由器是否直接和目的地主計(jì)算機(jī)連接。在該情況下,消息離目的地為一次跳躍,并應(yīng)在該方向上進(jìn)行路由選擇。若目的地計(jì)算機(jī)不和路由器直接連接,下一步是確定目的地網(wǎng)絡(luò)的拓樸方向。若從拓樸布局確定方向,則以這種方式為消息選擇路由。反之,最后的步驟是沿默認(rèn)鏈路為消息確定路由。
典型地,第一步是利用線性搜索通過含有與路由器直接連接的主計(jì)算機(jī)的32位地址的表進(jìn)行的。為了反映其局部拓樸,該地址表中的每項(xiàng)和一個直接導(dǎo)向被尋址的計(jì)算機(jī)的對應(yīng)輸出接口相連接。當(dāng)路由器接收一目的地地址時,所有的32位和表中的每個目的地地址比較。若找到匹配,通過專用路由器接口把消息直接發(fā)送到對應(yīng)的目的地。
確定目的地網(wǎng)絡(luò)的方向的第二步通常不是通過對表的線性搜索進(jìn)行的,因?yàn)榫W(wǎng)絡(luò)地址會使這種表難以管理和使用。在現(xiàn)有技術(shù)中,當(dāng)?shù)刂反駨木W(wǎng)絡(luò)地址、子網(wǎng)地址和主標(biāo)識的三層分層時,路由器利用數(shù)種周知的技術(shù),例如散列、Patricia樹搜索和多級搜索,中的一種進(jìn)行確定。在散列下,散列函數(shù)減小網(wǎng)絡(luò)的地址部分從而產(chǎn)生小的可管理的索引。散列索引用于檢索散列表和搜索匹配的散列項(xiàng)。和散列表的每個散列項(xiàng)對應(yīng)的是指向?qū)?yīng)網(wǎng)絡(luò)的拓樸方向的輸出接口的地址。若在散列網(wǎng)絡(luò)部分和散列項(xiàng)之間找到匹配,把消息引向?qū)?yīng)的接口和目的地網(wǎng)絡(luò)。
散列法把大量不能管理的字段簡化成小的可管理的索引。然而,在這種處理中存在著二個或更多的字段產(chǎn)生相同散列索引的可能。這種情況稱為沖突,因?yàn)楸仨毎堰@些字段存儲在散列表中的相同位置上。在沖突期間需要進(jìn)一步搜索以區(qū)分這些項(xiàng)。因此,沖突減少利用散列搜索獲得的效率,并且在最壞的情況下所有許可的地址簡化成單個索引使散列法變成實(shí)踐上不可使用的搜索過程。
Patricia樹搜索避免散列法遇到的沖突。該搜索方法要求在一二進(jìn)制樹中存儲所有地址串以及伴隨信息,例如有關(guān)的路由信息。從地址串內(nèi)的最高有效位位置開始,該搜索過程逐位地比較地址和樹的各節(jié)點(diǎn)。匹配的位值引導(dǎo)搜索訪問左子節(jié)點(diǎn)或者右子節(jié)點(diǎn)并且對地址中的下一位重復(fù)該過程。搜索時間正比于所存儲的最長地址串的長度。在Patricia樹搜索中,平均搜索時間和最壞情況搜索時間之間的差異不是非常大。另外,路由選擇表是相當(dāng)有效地組織的。和散列法的路由選擇表相比,它需要的存儲器較小。Patricia樹搜索處理最壞情況搜索優(yōu)于散列法,但在大多數(shù)情況中為定位匹配它需要明顯更長的時間。從而,許多常用路由器使用散列和Patricia樹搜索的組合。這種組合稱為多級搜索。
多級搜索結(jié)合散列法和Patricia樹搜索。一高速緩存存儲一個包含著最近使用的并假定是最常用的路由網(wǎng)絡(luò)地址的子集的散列表,而Patricia樹存儲完整的網(wǎng)絡(luò)地址集。當(dāng)接收消息時,把目的地地址散列到該表中。若在預(yù)定的時間周期內(nèi)它未被定位,把該地址傳送到Patricia樹搜索引擎,后者若確保該地址已存儲就會找到。
在現(xiàn)有技術(shù)中,存在一些周知的樹搜索算法,包括固定匹配樹、最長前綴匹配樹和軟件管理樹。固定匹配樹用于要求準(zhǔn)確匹配的定長模式,例如層2以太網(wǎng)MAC表。最長前綴匹配樹用于只需要部分匹配的可變長度模式,例如IP子網(wǎng)傳送。軟件管理樹用于用范圍或位屏蔽定義的模式,例如過濾規(guī)則。通常在樹搜索引擎(TSE)的幫助下進(jìn)行查找。
本發(fā)明的一個目的是提供一種獨(dú)特和有效的機(jī)制以在無需多級搜索下為應(yīng)用處理多個過濾規(guī)則。
本發(fā)明的另一個目的是提供一種搜索機(jī)制,其不需要前一指針上的存儲而是只使用一個前向指針以及下一個或下一組要檢查的位,從而減少用于各節(jié)點(diǎn)的存儲空間。
本發(fā)明說明一種用于軟件管理樹(SMT)的新穎數(shù)據(jù)結(jié)構(gòu),其提供一種建立遵循由控制點(diǎn)定義的搜索機(jī)制的樹結(jié)構(gòu)的機(jī)制。它的一個示例機(jī)制應(yīng)是網(wǎng)際協(xié)議(IP)5元組過濾表,包括IP源地址(IPSA)、IP目的地地址(IPDA)、源端口(SP)、目的地端口(DP)和通信協(xié)議。和全匹配樹或者最長前綴匹配樹不同,SMT樹能支持范圍比較。例如,可利用葉子規(guī)定源端口必須在范圍x和y中。這種方法允許高效存儲和搜索時間下的有效且簡單的實(shí)現(xiàn)。該方法還允許鏈接不同的過濾規(guī)則。
通過在連同附圖下閱讀下述對優(yōu)選實(shí)施例的詳細(xì)說明可更好地理解本發(fā)明,附圖是
圖1示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的用于網(wǎng)絡(luò)處理器的示例體系結(jié)構(gòu)。
圖2示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的用于嵌入式處理器復(fù)合體的示范實(shí)施例。
圖3示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的示例協(xié)議處理器結(jié)構(gòu)。
圖4示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的示例入口處和出口處幀流。
圖5示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的用于全匹配搜索算法的樹數(shù)據(jù)結(jié)構(gòu)。
圖6示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例使用直接表對示例數(shù)據(jù)結(jié)構(gòu)的作用。
圖7示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例具有直接葉子對示例數(shù)據(jù)結(jié)構(gòu)的作用。
圖8示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的用于軟件管理樹(SMT)的輸入關(guān)鍵字中的以及葉子模式中的各字段。
圖9示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的比較定義表的項(xiàng)的示例格式。
圖10示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的軟件管理樹搜索算法的處理邏輯。
圖11示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的一示例查找定義表的內(nèi)部結(jié)構(gòu)。
圖12示出PSCB寄存器的內(nèi)部格式。
圖13示出用于SMT樹的固定葉子格式。
圖14示出依據(jù)本發(fā)明的一優(yōu)選實(shí)施例的樹搜索引擎的示例體系結(jié)構(gòu)。
將在其中嵌有本發(fā)明的網(wǎng)絡(luò)處理器的環(huán)境下說明本發(fā)明。網(wǎng)絡(luò)處理器10是單芯片上的可編程交換和路由選擇系統(tǒng),在圖1中描述它的體系結(jié)構(gòu)。它提供用于10/100以太網(wǎng)、吉位以太網(wǎng)、SONET上的包(POS)的媒體接口并提供用于附著到交換接口上的數(shù)據(jù)對準(zhǔn)串行鏈路(DASL)。內(nèi)部硬件加速器提高性能和效率。嵌入式處理器復(fù)合體(EPC)12包括多個協(xié)議處理器以及一個內(nèi)部控制點(diǎn)處理器,用于幀處理、配置和管理支持。
可使用多達(dá)N個的并行協(xié)議處理器。在16個協(xié)議處理機(jī)的實(shí)施例中,可得到16,384字的內(nèi)部皮代碼指令存儲和32,768字的外部皮代碼指令存儲以提供每秒2,128百萬條指令(MIPS)的集合處理能力。另外,每個協(xié)議處理器訪問M個提供高速模式搜索、數(shù)據(jù)操作、內(nèi)部芯片管理操作、幀分析和數(shù)據(jù)預(yù)取支持的硬件加速器協(xié)處理器。在一優(yōu)選實(shí)施例中用于各協(xié)議處理器的控制存儲是通過內(nèi)部和外部存儲器提供的用于立即存取的32K的內(nèi)部靜態(tài)隨機(jī)存取存儲器(SRAM)28,用于快速存取的外部零總線往返(ZBT)SRAM30,以及用于大存儲要求的外部雙數(shù)據(jù)率(DDR)動態(tài)隨機(jī)存取存儲器(DRAM)32。
利用嵌入式硬件加速器以及在相連的控制點(diǎn)處理器34上運(yùn)行的預(yù)處理算法,網(wǎng)絡(luò)處理器10能在線路速度下通過帶有復(fù)雜的范圍、優(yōu)先級、動作規(guī)定的一百條或更多的過濾規(guī)則處理幀。這使得基于網(wǎng)絡(luò)處理器的系統(tǒng)很適用于網(wǎng)關(guān)、服務(wù)器處理應(yīng)用以及對和處理混合業(yè)務(wù)相關(guān)的任務(wù)的過濾。
當(dāng)網(wǎng)絡(luò)管理員向相干的用戶友好接口輸入過濾規(guī)則時控制點(diǎn)軟件提供自動的邏輯檢查。利用基于穩(wěn)定性理論的新穎流控制,在不造成傳輸控制協(xié)議(TCP)失敗前提下比通常采用的隨機(jī)早期放棄法能忍受更高的暫時過預(yù)約率。網(wǎng)絡(luò)處理器10還通過自動地分配帶寬,把網(wǎng)路管理員從必須根據(jù)瞬間或假定的業(yè)務(wù)統(tǒng)計(jì)預(yù)測設(shè)立閾值區(qū)的作用解脫出來提供有差別的服務(wù)。
單個網(wǎng)絡(luò)服務(wù)器10為多達(dá)40個的快速以太網(wǎng)端口或者4個吉位以太網(wǎng)端口提供媒體速度交換。還可把它配置成支持OC-48C、OC-48、4個OC-12或16個OC-3端口。對于可擴(kuò)縮性,可使用二個3.5Gbps的串行DASL連接來互連二個網(wǎng)絡(luò)處理器以對端口密度翻番,或者和交換結(jié)構(gòu)連接以創(chuàng)造對多達(dá)64個網(wǎng)絡(luò)處理器的交換解決辦法。這二個DASL連接,其中一個是主連接另一個是次連接,還可提供對一條冗余交換結(jié)構(gòu)的連接以提高系統(tǒng)可使用性。
如圖1中所示網(wǎng)絡(luò)處理器10的一個示范實(shí)施例包括下述主要部分1.一個嵌入式處理器復(fù)合體(EPC)12,其包括多達(dá)16個可編程處理器加若干協(xié)處理器;2.一個入隊(duì)一離隊(duì)調(diào)度邏輯14,用于從以太網(wǎng)物理層部件移動到交換結(jié)構(gòu)(EDS-入口處)的幀;3.一個入隊(duì)一離隊(duì)調(diào)度邏輯16,用于從交換結(jié)構(gòu)移動到以太網(wǎng)物理層部件(EDS-出口處)的幀;4.入口處交換接口(交換入口處)18和出口處交換接口(交換出口處)20 DASL連接,用于和另一個網(wǎng)絡(luò)處理器或中間接線器互連;5.從以太網(wǎng)或POS物理層物件26(PMM-入口處)接收幀的物理MAC多路復(fù)用器22以及對以太網(wǎng)或POS物理層部件26(PMM-出口處)發(fā)送幀的物理MAC多路復(fù)用器24。
圖2示出嵌入式處理器復(fù)合體的示范實(shí)施例。它包括16個協(xié)議處理器,提供2128 MIPS的處理能力。每個協(xié)議處理器40包括一個3階段流水線(取、譯碼和執(zhí)行)、一組通用寄存器、一組專用寄存器、一個八指令高速緩存、一個專用算述邏輯單元(ALU)以及一組都在133MHz上運(yùn)行的協(xié)處理器。其中二個協(xié)議處理器是專用的一個用于處理導(dǎo)向幀(導(dǎo)向幀處理器),另一個用于在控制存儲器中建立查找數(shù)據(jù)(類屬樹處理器)。
圖3示出協(xié)議處理器的一示范實(shí)施例。和每個可編程協(xié)議處理器40關(guān)聯(lián)的各協(xié)處理器提供下述功能。
1.數(shù)據(jù)存儲協(xié)處理器64和幀緩沖存儲器42、44(入口和出口方向)接口以提供直接存儲器存取(DMA)能力;2.校驗(yàn)和協(xié)處理器62計(jì)算標(biāo)題校驗(yàn)和;3.入隊(duì)協(xié)處理器66控制對含有關(guān)鍵字幀參數(shù)的256位的工作寄存器的訪問。該協(xié)處理器和完成單元4.6接口以使幀進(jìn)入交換隊(duì)列和目標(biāo)端口隊(duì)列;4.接口協(xié)處理器對所有協(xié)議處理器提供對內(nèi)部寄存器、計(jì)數(shù)器和存儲器的訪問,以進(jìn)行調(diào)試和統(tǒng)計(jì)數(shù)據(jù)收集;5.串拷貝協(xié)處理器使EPC內(nèi)的數(shù)據(jù)能有效移動;6.計(jì)數(shù)器協(xié)處理器為各協(xié)議處理器40管理計(jì)數(shù)器更新;7.政策協(xié)處理器確定流控制信息并且檢查和預(yù)分配帶寬的一致性。
硬件加速器48執(zhí)行幀傳送、幀過濾、幀改變和樹搜索。網(wǎng)絡(luò)處理器含有的其它特性包括新的過濾規(guī)則處理、散列運(yùn)算和流控制。
協(xié)議處理器40可以執(zhí)行一百條或更多的帶有復(fù)雜的范圍和動作規(guī)定的幀過濾規(guī)則。對于網(wǎng)絡(luò)安全過濾是最基本的,并且網(wǎng)絡(luò)處理器硬件助理48提供這些復(fù)雜規(guī)則組的線路速度執(zhí)行。根據(jù)IP標(biāo)題信息過濾規(guī)則可拒絕或允許幀或者分配服務(wù)質(zhì)量。用來預(yù)處理規(guī)則的控制點(diǎn)軟件自動地改正邏輯錯誤。在輸入邏輯上正確的規(guī)則組后,從包標(biāo)題信息形成關(guān)鍵字并利用網(wǎng)絡(luò)處理器的軟件管理樹在線路速度下進(jìn)行檢查。
幾何散列函數(shù)利用IP標(biāo)題中的統(tǒng)計(jì)結(jié)構(gòu)以勝過理想的隨機(jī)散列。從而,低沖突率使能在無須附加的分辨搜索下對全匹配表高速查找。
在和各協(xié)議處理器的執(zhí)行并行操作下,樹搜索引擎70執(zhí)行樹搜索指令(包括存儲器讀、寫或讀—寫)、存儲器范圍檢查和非法存儲器存取報(bào)告。圖14示出樹搜索引擎的一示范實(shí)施例。
在網(wǎng)絡(luò)處理器10內(nèi)存在二種系統(tǒng)控制選擇。內(nèi)部處理器34可充當(dāng)系統(tǒng)的控制點(diǎn)(CP)處理器,或者替代地,可對四個以太網(wǎng)宏中的一個連接一個外部處理器用于初始化和配置。通過建立稱為導(dǎo)向幀的專用以太網(wǎng)幀,CP處理器34和這些網(wǎng)絡(luò)處理器內(nèi)的其它處理器實(shí)體通信??稍贒ASL連接上把導(dǎo)向幀傳送到其它部件,這允許和單個以太網(wǎng)端口連接的一個CP處理器和該子系統(tǒng)內(nèi)含有的所有網(wǎng)絡(luò)處理器部件通信并控制它們。每個網(wǎng)絡(luò)處理器10的內(nèi)部處理器34還可利用分立的32位PCI總線通信。
網(wǎng)絡(luò)處理器10通常駐留在子系統(tǒng)板上并提供協(xié)議層(即,層2、層3、層4和更高層)幀處理。在CP子系統(tǒng)中的CP處理器34上運(yùn)行的軟件提供管理和路由發(fā)現(xiàn)功能。CP代碼、各協(xié)議處理器上運(yùn)行的皮代碼以及在導(dǎo)向幀處理器上運(yùn)行的皮代碼使該系統(tǒng)能開始進(jìn)行初始化、維護(hù)傳送路徑和管理系統(tǒng)。作為分布式系統(tǒng),CP和每個網(wǎng)絡(luò)處理器子系統(tǒng)包含多個并行操作和利用導(dǎo)向幀通信的處理器,以提高效率和性能。
通過PMM 22接收來自媒體的數(shù)據(jù)幀并傳送到數(shù)據(jù)存儲緩沖器42。在接收過程中PMM還進(jìn)行CRC校驗(yàn)和幀確認(rèn)。分配器50把64字節(jié)的幀信息發(fā)送到可使用的協(xié)議處理器40供幀查找。分類器硬件助理48提供識別幀格式的控制數(shù)據(jù)。協(xié)議處理器40利用該控制數(shù)據(jù)確定要應(yīng)用的樹搜索算法,包括固定匹配樹、最長前綴匹配樹或軟件管理樹。
在樹搜索引擎(TSE)70的幫助下進(jìn)行查找。TSE 70執(zhí)行控制存儲器72存取,以使協(xié)議處理器40能繼續(xù)執(zhí)行??刂拼鎯ζ?2存儲皮代碼所需的所有的表、計(jì)數(shù)器以及任何其它數(shù)據(jù)。為了高效,控制存儲器仲裁器52通過在協(xié)議處理器40和各種芯片上、芯片外控制存儲器選擇54之間分配存儲器周期管理控制存儲器操作。
協(xié)議處理器40包括用于數(shù)據(jù)存儲操作的一個主數(shù)據(jù)緩沖器、一個暫存數(shù)據(jù)緩沖器和控制寄存器組(集體地,72)。一旦找到匹配,可應(yīng)用入口處幀改變,例如VLAN標(biāo)題插入或覆蓋。這些改變不通過EPC 12進(jìn)行。替代地,若設(shè)定硬件標(biāo)志,入口處交換接口硬件18執(zhí)行改變。通過修改入口處數(shù)據(jù)存儲42中保存的幀內(nèi)容,可由皮代碼和數(shù)據(jù)存儲協(xié)處理器64完成其它幀改變。
在把幀發(fā)送到交換結(jié)構(gòu)之前,收集控制數(shù)據(jù)并且用于建立交換標(biāo)題和幀標(biāo)題??刂茢?shù)據(jù)包括交換信息例如幀的目的地,以及用于出口處網(wǎng)絡(luò)處理器的以幫助它進(jìn)行目的地端口的幀查找、多播或單播操作以及出口處幀改變的信息。
圖4示出示例的入口處和出口處幀流。一旦完成,入隊(duì)協(xié)處理器66建立必需的用于把幀排到隊(duì)列控制塊(QCB)74中的格式并且把它們傳送到完成單元46。完成單元46保證從16個協(xié)議處理器40的頂部到各交換結(jié)構(gòu)隊(duì)列76的幀次序。來自各交換結(jié)構(gòu)隊(duì)列76的幀分割成帶有插入著交換標(biāo)題和幀標(biāo)題字節(jié)的64字節(jié)信元,如由交換結(jié)構(gòu)76按此發(fā)送那樣。
利用由重組控制塊(RCB)80和EDS-出口44提供的信息把從交換結(jié)構(gòu)接收的幀放到出口數(shù)據(jù)存儲緩沖器78中并且入隊(duì)到EPC 12。通過分配器把幀的一部分發(fā)送到任何空閑的協(xié)議處理器40以進(jìn)行幀查找。把幀數(shù)據(jù)以及來自分類器硬件助理48的數(shù)據(jù)分配到協(xié)議處理器40。分類器硬件助理48利用入口處網(wǎng)絡(luò)處理器建立的幀控制數(shù)據(jù)幫助確定供出口處處理的開始指令地址。
出口處樹搜索支持和入口處搜索支持的算法相同的算法。用TSE70執(zhí)行查找,以釋放協(xié)議處理器40去繼續(xù)執(zhí)行。所有的控制存儲器操作是由在各處理器復(fù)合體之間分配存儲器存取的控制存儲器仲裁器52管理的。
通過數(shù)據(jù)存儲協(xié)處理器64訪問出口處幀數(shù)據(jù)。成功查找的結(jié)果包含傳送信息并且在某些情況下包含幀改變信息。出口處幀改變可包括VLAN標(biāo)題刪除、生存時間增加(IPX)或減少(IP)、IP標(biāo)題校驗(yàn)和再計(jì)算、以太網(wǎng)幀CRC覆蓋和MAC目的地地址或源地址覆蓋或者插入。IP標(biāo)題校驗(yàn)和是由校驗(yàn)和協(xié)處理器62準(zhǔn)備的,嵌入式處理器復(fù)合體12不執(zhí)行改變而是建立硬件標(biāo)志,并由PMM出口處硬件24執(zhí)行改變。一旦完成,利用入隊(duì)協(xié)處理器46建立把幀入到EDS出口處各隊(duì)列44中的所需格式并且把它們傳送到完成單元46。完成單元46保證從16個協(xié)議處理器的頂部到饋送出口處以太網(wǎng)MAC的EDS出口處隊(duì)列的幀次序。最后通過PMM出口處硬件24把完成的幀發(fā)送到以太網(wǎng)MAC或POS接口并且離開物理端口。
如圖14中所描述的樹搜索引擎(TSE)70利用樹的概念存儲和檢索信息。檢索即樹搜索以及插入和刪除是根據(jù)關(guān)鍵字完成的,關(guān)鍵字為位模式,例如為MAC源地址或者為IP源地址和IP目的地地址的串接。圖5中描述本發(fā)明中使用的示例樹數(shù)據(jù)結(jié)構(gòu)。信息存儲在稱為葉子116、118、120、122的控制塊中,葉子至少包含關(guān)鍵字102(所存儲的位模式實(shí)際上的散列關(guān)鍵字106)。葉子還可包含其它信息,例如老化信息或用戶信息,這可以是轉(zhuǎn)發(fā)信息例如目標(biāo)葉子片(blade)和目標(biāo)端口號碼。葉子的格式由皮代碼定義;對象被放入到內(nèi)部或外部控制存儲中。
對樹的搜索算法對包括著關(guān)鍵字102的各輸入?yún)?shù)產(chǎn)生影響,對關(guān)鍵字完成散列104,訪問直接表(DT)108,沿樹進(jìn)行模式搜索控制塊(PSCB)110、112、114并且結(jié)束在葉子116、118、120、122處。每種類型的樹具有它自己的搜索算法,從而根據(jù)不同的規(guī)則發(fā)生樹查找。例如,對于固定匹配(FM)樹,數(shù)據(jù)結(jié)構(gòu)是Patricia樹。當(dāng)找到一個葉子時,該葉子是可和輸入關(guān)鍵字102匹配的唯一可能候選?!白詈蟊容^”運(yùn)算比較輸入關(guān)鍵字102和該葉子中存儲的模式。這驗(yàn)證該葉子是否真正和輸入關(guān)鍵字102匹配。當(dāng)找到該葉子并且出現(xiàn)匹配時搜索結(jié)果為成功(OK),而在所有其它情況下搜索結(jié)果為失敗(KO)。
搜索運(yùn)算的輸入包含下述參數(shù)關(guān)鍵字 必須在搜索或插入/刪除之前利用專用皮代碼指令建立176位的關(guān)鍵字。只存在一個關(guān)鍵字寄存器。
然而,在開始樹搜索后,可通過皮代碼利用該關(guān)鍵字寄存器建立并發(fā)地利用執(zhí)行該搜索的TSE 70的下個搜索的關(guān)鍵字。這是因?yàn)門SE 70散列關(guān)鍵字并且把結(jié)果存儲到192位的“散列關(guān)鍵字”寄存器106中。關(guān)鍵字長度 該8位寄存器含有減掉一位的關(guān)鍵字長度。在建立關(guān)鍵字期間通過硬件自動地更新它。查找定義索引這是對查找定義表的8位索引,它包含對在其中發(fā)生搜索的樹的完整定義。圖11示出查找定義表的內(nèi)部結(jié)構(gòu)。TSRNr 搜索結(jié)果可存儲在1位的樹搜索結(jié)果區(qū)TSRO或TSR1之一中。這是通過TSRNr規(guī)定的。在TSE進(jìn)行搜索的同時,皮代碼可訪問另一個TSR以分析前一次搜索的結(jié)果。色彩對于允許色彩的樹(在查找定義表中規(guī)定),在散列運(yùn)算期間把16位色彩寄存器124的內(nèi)容插入到關(guān)鍵字中。
對于FM樹,如圖4中所示,輸入的關(guān)鍵字將會散列成散列關(guān)鍵字106。存在幾種可使用的固定算法。在查找定義表中規(guī)定將使用的算法。
查找定義表是管理樹搜索存儲器的主結(jié)構(gòu)。查找定義表是一個內(nèi)部存儲器結(jié)構(gòu)并且含有用于建立樹的128個項(xiàng)。查找定義表包含用于定義樹所存在的物理存儲器(例如,DRAM、SRAM、內(nèi)部RAM)、是否使能高速緩存、關(guān)鍵字和葉子的長度以及要執(zhí)行的搜索動作類型的各種項(xiàng)。查找定義表是用三個分立的隨機(jī)存取存儲器實(shí)現(xiàn)的—一個只能由通用處理器式樹處理器(GTH)訪問的RAM以及二個彼此完全相同可由所有皮處理器訪問的RAM。
散列函數(shù)104的輸出總是一個176位的數(shù)字,其具有在原始輸入關(guān)鍵字102和散列函數(shù)104的輸出之間存在一對一的對應(yīng)關(guān)系的特性。如后面所解釋,該特性使從直接表108之后開始的樹的深度最小。
若樹允許色彩(圖4的例子為這種情況),把16位的彩色寄存器插入到176位散列函數(shù)輸出中,其結(jié)果是一個192位的數(shù),稱為“散列關(guān)鍵字106”。在直接表108后面直接出現(xiàn)該插入。若直接表108含有2N個項(xiàng),在位位置N處插入該16位的彩色值,如圖4中所示。在“散列關(guān)鍵字106”寄存器106中存儲散列函數(shù)的輸出和插入的色彩值。若某樹不允許色彩,則不修改地取用176位的散列函數(shù),并對散列輸出附中16個零以產(chǎn)生192位的最后的“散列關(guān)鍵字”。
可使用色彩以在多個獨(dú)立的樹之間共享單個直接表108。例如,色彩的一種使用可以是MAC源地址(SA)表中的VLAN ID。在這種情況下,輸入關(guān)鍵字102會是MAC SA,而色彩124會是VLAN ID(由于VLAN ID為12位,色彩的四個位將不使用,即,置為零)。在散列函數(shù)104后,所使用的模式為48+16=64位?,F(xiàn)在色彩是模式的一部分并可區(qū)分不同VLAN的MAC地址。
散列函數(shù)104定義成使它的輸出中的大部分熵位于最高的位組中。“散列關(guān)鍵字”寄存器106的N個最高位用于計(jì)算進(jìn)入直接表(DT)108的索引。
對于SMT樹,輸入關(guān)鍵字和色彩一起構(gòu)成一個192位的輸入模式。從這個角度,應(yīng)把色彩寄存器看成是關(guān)鍵字寄存器的延伸。SMT樹必須把色彩使能位置成“0”。另外,SMT樹必須使用散列函數(shù),該散列函數(shù)取176位的輸入關(guān)鍵字102以及16位的色彩寄存器124并且生成一個192位的“散列關(guān)鍵字”106,從而關(guān)鍵字形成176個最左側(cè)的位而色彩形成16個最右側(cè)(LSB)的位。這樣,用于SMT樹的散列函數(shù)并不真正是一個散列函數(shù),而是一個把色彩用作為關(guān)鍵字的延伸的裝置。
為達(dá)到存儲以及搜索的高效性,本實(shí)現(xiàn)使用下述數(shù)據(jù)結(jié)構(gòu)a.需要搜索的模式/關(guān)鍵字;b.直接表(DT)項(xiàng);c.模式搜索控制塊(PSCB);d.葉子;e.最后比較操作;以及f.比較表項(xiàng)。
DT表是基于關(guān)鍵字的前“N”位的第一地址位置。它包括下面說明的3個部分。PSCB項(xiàng)是中間節(jié)點(diǎn)位置。葉子項(xiàng)是搜索結(jié)果的地址單元。比較表項(xiàng)說明葉子/模式比較參數(shù)。如后面進(jìn)一步說明那樣,DT項(xiàng)或者具有用寬度一和高度一定義的形狀或者具有寬度為一高度為二的形狀。
PSCB代表樹中的分支。在本優(yōu)選實(shí)施例中,存在分支0和分支1。從一PSCB發(fā)出的分支數(shù)量是一個取決于用于指定分支的位數(shù)的變量。若使用n位,則在該P(yáng)SCB處定義2n條分支。每個PSCB還和一個位位置p相關(guān)。從PSCB通過分支0可達(dá)到的葉子在位置p處都具有“0”,而通過分支1可達(dá)到的葉子在位置p處都具有“1”。另外,從某PSCB可到達(dá)的所有葉子具有位0,…,p-1相等的模式,即,這些模式從位置p開始不同。和一PSCB相關(guān)的位位置存儲在前一個PSCB中或存儲在一DT項(xiàng)中并稱為NBT(即,要檢查的下一位)。PSCB項(xiàng)的格式和DT項(xiàng)的格式相同。在隨機(jī)存取存儲器中實(shí)現(xiàn)它。
從而,在樹中僅在位模式不同的位置處插入PSCB。這允許有效的搜索操作,因?yàn)镻SCB的數(shù)量以及由此的搜索性能只取決于樹中的葉子的數(shù)量而和模式的長度無關(guān)。PSCB寄存器格式在圖12中描述。
在SMT樹中,PSCB后面的第一個葉子必須具有在查找定義表中定義的形狀。葉子鏈中的任何其它中具有通過鏈接指針中的5個位定義的形狀,該指針是葉子中的NLASMT字段。
DT項(xiàng)和PSCB項(xiàng)的格式是相同的并且包括下列部分a.2位的SCB(搜索控制塊)。
b.NPA(下個模式地址)指向下個PSCB地址或LCBA(葉子控制塊地址)指向葉子/結(jié)果。
c.NBT(下一個或下一組要檢查的位)可以是下一對或者一組為“x”(x=1或n)個的要檢查的位。根據(jù)存儲效率等確定要檢查的位的數(shù)量。
d.直接葉子。
該實(shí)現(xiàn)下的每個項(xiàng)為36位寬并且包含三種可能現(xiàn)行定義的項(xiàng)格式中的一種格式a.空DT項(xiàng)SCB=00和NPA=0并且NBT是無效的或?yàn)榱恪?br>
b.NPA/NBT有效SCB=00以及NPA和NBT是有效的。對于DT項(xiàng),NPA指向第一中間節(jié)點(diǎn)并且NBT指向要檢查的位或位組。在PSCB項(xiàng)的情況下,NPA指向鏈中的其它節(jié)點(diǎn)。
c.LCBA有效SCB=01。該LCBA指向一個相關(guān)的葉子地址,即,搜索結(jié)果。
d.直接葉子SCB=10并且該數(shù)據(jù)的其余部分含有搜索結(jié)果或葉子。葉子數(shù)據(jù)的一部分可包括葉子地址的鏈接以支持大型搜索結(jié)果存儲。
對于DT項(xiàng)和PSCB項(xiàng)的存儲分配除了總是包括2**no_of_bits_to_be_tested個的地址即按對/組之外,SMT PSCB的結(jié)構(gòu)和SMT DT項(xiàng)的結(jié)構(gòu)相同。在存儲器中相鄰地這些地址對或組并且用作為查找搜索樹的分支/轉(zhuǎn)移指針。
SMT樹中的葉子的格式包括包含著二種模式的控制信息。這二種模式用于定義范圍比較。SMT中的葉子可利用NLASMT鏈接起來。圖13示出用于SMT樹的格式。當(dāng)達(dá)到PSCB后面的第一個葉子時,進(jìn)行最后比較操作。當(dāng)回送OK時,停止搜索。然而,當(dāng)該最后比較操作回送KO并存在非零的NLASMT字段時,讀下個葉子并進(jìn)行另一次最后比較操作。繼續(xù)該處理,直至最后比較回送OK或者保存的NLASMT等于零,在后一種情況下該搜索回送KO。
軟件管理樹搜索的高層算法流程如下
1.讀DT項(xiàng)。
a.若SCB=00并且NPA和NBT是有效的則讀NPA和NBT以生成下個PSCB地址;b.若NBT無效并且直接葉子有效,讀葉子內(nèi)容并轉(zhuǎn)到葉子評估步驟;c.若NBT無效和/或不存在葉子,回送KO;即,搜索結(jié)果為失敗并設(shè)置完成標(biāo)記。
2.葉子評估比較模式(關(guān)鍵字)和該葉子中存儲的模式。SMT永遠(yuǎn)包含二個模式。這二個模式用于定義范圍比較。而且,SMT中的葉子可以鏈接(即,利用表示下個葉子地址的NLASMT)。
當(dāng)在PSCB后面擊中第一個葉子時,進(jìn)行最后比較操作。當(dāng)其回送OK(成功)時,在OK下結(jié)束搜索。然而,當(dāng)該最后比較操作回送KO(失敗)并且存在非零即有效NLASMT字段時,讀下一個葉子并進(jìn)行另一次最后比較操作。繼續(xù)該操作,直至最后比較回送OK(成功)或者NLASMT字段不再有效,在后一種情況下搜索回送KO(失敗)。
本文中所描述的位/寄存器寬度值是示例性的并可改變?yōu)椴煌闹狄詢?yōu)化可使用的存儲器、性能要求等等。
搜索從訪問直接表108,即從直接表讀某DT項(xiàng)開始。用來讀該DT項(xiàng)的地址是從寄存器106中的“散列關(guān)鍵字”的N個最高位計(jì)算的,如根據(jù)查找定義表中定義的樹特性那樣。DT項(xiàng)可看成是樹的根。實(shí)際的樹數(shù)據(jù)結(jié)構(gòu)取決于樹類型。對SMT樹采用擴(kuò)充的Patricla樹數(shù)據(jù)結(jié)構(gòu)。
圖6中示出使用一個8項(xiàng)DT 108的一個例子??梢钥闯?,通過利用DT 108可減少搜索時間,即,必須要訪問的PSCB的數(shù)量,從而,通過加大DT尺寸,可在存儲器使用和搜索性能之間做出折衷。
對于性能原因,讀DT項(xiàng)僅查找它含有對某葉子的指針然后又必須讀出該葉子本身這是低效的。對于許多DT項(xiàng)可能具有單個葉子的FM,這種情況常常會發(fā)生。直接葉子的概念允許在更多存儲器使用和更好性能之間進(jìn)行折衷。
一個樹可以啟用直接葉子,這一點(diǎn)在查找定義表表中規(guī)定。在圖7中示出啟用直接葉子的樹和禁用直接葉子的樹之間的差別。當(dāng)啟用直接葉子并且某DT項(xiàng)含有單個葉子時,把該葉子130直接存儲在該DT項(xiàng)本身中。反之,該DT項(xiàng)將含有一個對該葉子的指針。
定形是樹搜索存儲器(TSM)的一個特性并用于規(guī)定如何在TSM中存儲對象,例如葉子或PSCB。形狀是通過參數(shù)寬度和高度定義的。對象的高度表示存儲該對象的連續(xù)地址單元的數(shù)量。對象的寬度表示存儲該對象的連續(xù)存儲體(bank)的數(shù)量。對于寬度和高度,硬件自動地讀適當(dāng)數(shù)量的單元。從皮代碼的觀點(diǎn)來看,對象是訪問的原子單元。對于存儲在SRAM中的對象,寬度必須總是為1。以于DRAM中的對象,寬度可能大于1。足夠小的適應(yīng)單個存儲器單元的對象被定義為高度為一和寬度為一。禁用直接葉子的DT項(xiàng)的形狀總是為(寬度=1,高度=1)。當(dāng)在動態(tài)隨機(jī)存取存儲器中存儲該DT項(xiàng)時,它準(zhǔn)確地占據(jù)64位。啟用直接葉子的DT項(xiàng)的形狀和葉子的形狀相同,該形狀在查找定義表中規(guī)定。通常,這造成DT 108使用更多的存儲器。這還使葉子的形狀對DT項(xiàng)地址計(jì)算造成影響。
在讀了一DT項(xiàng)后并假定該DT項(xiàng)不包含直接葉子而且也不是空的,通過在該DT項(xiàng)處開始對該樹的查找繼續(xù)搜索。沿樹查找可能通過幾個PSCB(模式搜索控制塊),直到到達(dá)一個葉子為止。
當(dāng)在FM樹中的搜索期間遇到PSCB時,樹搜索引擎硬件70會取決于“散列關(guān)鍵字”的位p的值繼續(xù)在分支0或分支1上沿樹查找。
圖10示出本發(fā)明的軟件管理樹搜索算法的處理邏輯。該算法在邏輯框1100以讀輸入關(guān)鍵字開始。在SMT搜索中,隨意地可把輸入關(guān)鍵字散列成散列關(guān)鍵字。散列函數(shù)可顛倒輸入關(guān)鍵字中位的次序。例如,它可交換位1和位7。當(dāng)使用散列函數(shù)時,它可以是可編程的,即,可把它編程為交換哪些位。如邏輯框1002中所示,接著讀直接表。利用散列關(guān)鍵字的N個高位(其中N是可編程的)檢索直接表。當(dāng)被讀的項(xiàng)是空的時,如判定框1004所指示搜索回送KO(未找到)。若在判定框中該項(xiàng)指向一個葉子,則處理在邏輯框1010以讀該葉子的內(nèi)容繼續(xù)。否則,該項(xiàng)指向一個PSCB并如邏輯框1008中所示讀PSCB的適當(dāng)部分。對于SMT搜索,PSCB可具有FM PSCB的格式。替代地,它可具有更先進(jìn)的格式如后面所說明那樣。
從邏輯框1008處理返回判定框1006以判定是否找到葉子。當(dāng)在判定框1006中找到葉子時,如邏輯1010所示讀該葉子并且接著如邏輯框1012所示和輸入關(guān)鍵字比較。若在判定框1014中存在葉子中存儲的模式和輸入關(guān)鍵字之間的匹配,則搜索回送OK(成功)并且把該葉子的內(nèi)容傳給應(yīng)用,如結(jié)束框1018所示。若在判定框1014中不存在匹配,則如判定框1016中所示處理以判定是否存在下個葉子繼續(xù)。若在葉子鏈中存在下個葉子,處理回到邏輯框1010以讀該葉子的內(nèi)容。反之,若不存在下個葉子,搜索回送KO(失敗),如結(jié)束框1020所指示。
葉子模式和散列關(guān)鍵字之間的比較操作要比FM搜索和LPM搜索下更為復(fù)雜。這種葉子含有二個模式,p1和p2。p1和p2中的散列關(guān)鍵字邏輯上各劃分為N個字段。該比較操作包括N個必須都回送OK(成功)的子比較,這樣總比較才能回送OK。可以根據(jù)二種方式執(zhí)行每個子比較(i)p1表示最小值而p2表示最大值,或者(ii)p1表示一個模式而p2表示一個屏蔽。在第一種情況下,當(dāng)p1≤散列關(guān)鍵字≤p2時該子比較回送OK。在第二種情況下,當(dāng)(散列關(guān)鍵字“與”p2)=(p1“與”p2)時該子比較回送OK??梢砸跃幋a形式在葉子中存儲各字段的定義(每個字段的長度和位置)以及每個字段的比較方式,或者可以在一個專用查找表中存儲這些信息。在本優(yōu)選實(shí)施例中,使用比較定義表,在葉子中存儲該表的索引。
作為一種擴(kuò)充,PSCB可含有2b個項(xiàng),從而來自散列關(guān)鍵字的b個位選擇從PSCB讀哪個項(xiàng)。這在使用更多存儲器的代價下提高性能。另外,還可擴(kuò)充PSCB從而每個項(xiàng)包括一個或二個(p1和p2)按對葉子比較說明的相同方式操作的的模式。例如,假定PSCB含有長度為L的p1和p2,它們也存儲在PSCB中。接著從散列關(guān)鍵字在由NBT給定的位置處取出L個位。把這些L個位說明成是一個整數(shù)I。當(dāng)p1≤I≤p2時,使用來自下個PSCB的項(xiàng)1,反之使用來自下個PSCB的項(xiàng)0。
可使用高速緩存來提高樹中的搜索性能。使用高速緩存可在以樹為基礎(chǔ)下啟用查找定義表。在搜索期間,樹搜索引擎70首先在高速緩存中檢查以判定是否存在和“散列關(guān)鍵字”匹配的葉子。若找到這樣的葉子,則返回,無需更多的搜索。若未找到這樣的葉子,啟動常規(guī)搜索。
對于樹搜索引擎硬件70,高速緩存查找和常規(guī)搜索完全相同。即,把輸入關(guān)鍵字散列成“散列關(guān)鍵字”,并進(jìn)行直接表108訪問。直接表108充當(dāng)一個高速緩存。當(dāng)高速緩存搜索回送OK(成功)時,搜索結(jié)束。反之,樹搜索引擎70啟動完整樹中的第二次搜索-不同的只是不必進(jìn)行散列操作?!吧⒘嘘P(guān)鍵字”寄存器106的內(nèi)容被重新使用。
可在查找定義表中規(guī)定是否采用高速緩存搜索。若高速緩存搜索使用查找定義表項(xiàng)I并且搜索以KO(失敗)結(jié)束,自動地利用查找定義表項(xiàng)I+1啟動另一次搜索。原理上,這允許鏈接多次搜索,盡管建議在查找定義表項(xiàng)I+1之下存儲完整的樹。
樹搜索引擎70提供FM樹、LPM樹和SMT樹的硬件搜索操作。對于所有樹類型,需要不同數(shù)量的軟件以初始化和維護(hù)樹。只有FM樹和LPM樹具有不必在控制點(diǎn)處理器34的介入下進(jìn)行葉子的插入和去掉的能力。利用這種特性允許可擴(kuò)縮的配置并且還具有若需要允許CP34插入或去掉葉子的靈活性。
SMT為CP提供一種建立遵循由CP定義的搜索機(jī)制的樹結(jié)構(gòu)的機(jī)制。其的一個例子應(yīng)是IP5元過濾表,包含IP源地址(IPSA)、IP目的地地址(IPDA)、源端口、目的地端口和協(xié)議。和FM樹以及LPM樹不同,SMT提供對范圍的支持。例如,可利用葉子規(guī)定源端口必須在100…110的范圍內(nèi)。
SMT樹和FM/LPM樹之間存在下述不同·SMT永遠(yuǎn)在葉子中包含二個模式。這二個模式用于定義范圍比較,如后面所解釋。
·可以利用下個葉子地址(NLASMT)字段鏈接SMT中的葉子。
當(dāng)命中PSCB后面的第一個葉子時,進(jìn)行最后比較操作。當(dāng)它回送OK(成功)時,用OK停止搜索。然而,當(dāng)其回送KO(失敗)并存在非零的NLASMT字段時,讀下個葉子并進(jìn)行另一次最后比較。繼續(xù)這種處理,直至最后比較回送OK(成功)或者NLASMT字段等于零,在后一情況下搜索回送KO(失敗)。
和FM樹以及LPM樹不同,SMT在每個葉子中含有二個長度相同的模式。出于比較操作的目的,可以邏輯地把輸入關(guān)鍵字(以及類似地,把葉子中存儲的二個模式)分割成多個字段。在圖8中示出一個例子。對于每個字段,可以進(jìn)行二種比較中的一種1.按屏蔽的比較。按葉子模式1中定義的屏蔽,比較輸入關(guān)鍵字中的位組和葉子模式0中的位組。屏蔽中的“1”表示輸入關(guān)鍵字中的相應(yīng)位必須和模式0中的相應(yīng)位相等,屏蔽中的“0”表示輸入關(guān)鍵字中的相應(yīng)位不影響比較。僅當(dāng)所有的位比較OK,整個字段的比較才OK。
2.按范圍的比較。把輸入關(guān)鍵字中的位組看成是一個整數(shù)并且檢查它是否在由Min和Max(二個邊界點(diǎn)都在該范圍內(nèi))給出的范圍內(nèi)。若是這樣的情況,該字段比較OK,反之該字段比較KO。僅當(dāng)所有的字段比較OK,整個最后比較才回送OK,反之最后比較回送KO。
在比較定義表中規(guī)定各個邏輯字段是如何定義的,圖9中給出一個有關(guān)它的項(xiàng)格式的例子。作為默認(rèn),借助屏蔽字段比較字段,在比較定義表中存在一個作出其它規(guī)定的字段例外。
比較定義表中的每個項(xiàng)規(guī)定一個或二個范圍比較。如下面所解釋,可使用多個項(xiàng)規(guī)定多于二個的范圍比較。每次范圍比較是通過二個參數(shù)規(guī)定的·偏置,它是字段的第一個位的位置。偏置必須在16位的邊界處并且可具有如下值0、16、32、48、64、80、96、112或
128。
·按位的字段長度。長度可具有如下值8、16、24或32。
例如,對于圖8中示的關(guān)鍵字,對源端口的按范圍的比較應(yīng)具有置成為64的偏置0和置成為16的最小/最大長度0,而對目的地端口的按范圍的比較應(yīng)具有置成為80的偏置1和置成為16的最小/最大長度1。若需要多于2個的范圍比較,必須把繼續(xù)位置成為1,這使得把比較定義表中的下個項(xiàng)用于另一個或二個按范圍定義的比較,在葉子中規(guī)定比較定義表中的用于SMT比較的索引。
出于性能目的,建議盡可能少地使用按范圍的比較。每次按范圍的比較從執(zhí)行一個額外的時鐘周期(7.5nsec)為代價。從而,若范圍是二的冪(即,128-256),不需要按范圍的比較并且這種類型的范圍可以利用按屏蔽的比較操作來處理。
當(dāng)一SMT最后比較失敗并且葉子中的NLASMT字段非零時,TSE70讀下個葉子并執(zhí)行另一次最后比較操作,直至比較回送OK或者NLASMT等于零。
本發(fā)明可在硬件、軟件或二者的結(jié)合下實(shí)現(xiàn)。任何類型的計(jì)算機(jī)系統(tǒng)或者其它適應(yīng)用實(shí)現(xiàn)本文中說明的方法的設(shè)備都是適用的。典型的硬件和軟件的組合可以是一個通用計(jì)算機(jī)系統(tǒng),在裝入和執(zhí)行時其控制該計(jì)算機(jī)系統(tǒng)從而實(shí)現(xiàn)本文中說明的方法。本發(fā)明還可以植入計(jì)算機(jī)程序產(chǎn)品中,該產(chǎn)品具有所有能實(shí)現(xiàn)本文中所說明的各方法的特征,當(dāng)把它裝入計(jì)算機(jī)系統(tǒng)中時該產(chǎn)品能實(shí)現(xiàn)這些方法。
本語境下的計(jì)算機(jī)程序指令或計(jì)算機(jī)程序意味一組以任何語言、代碼(即,皮代碼指令)或符號表達(dá)的指令,這組指令的意圖是使具有信息處理能力的系統(tǒng)直接地或在下述之一或二者出現(xiàn)下a)轉(zhuǎn)換成另一種語言、代碼或符號;b)再生不同的實(shí)質(zhì)格式,執(zhí)行特定功能。
業(yè)內(nèi)人士理解,對本發(fā)明的該優(yōu)選實(shí)施例的許多修改是可能的,且不背離本發(fā)明的精神和范圍。另外,有可能在不相應(yīng)地使用其它特性下使用本發(fā)明的一些特性。上述對優(yōu)選實(shí)施例的說明是出于示出本發(fā)明的原理的目的提供的并不是作出限制,因?yàn)楸景l(fā)明的范圍只由附屬權(quán)利要求書定義。
權(quán)利要求
1.一種通過計(jì)算機(jī)處理部件對軟件管理樹中的可變長度搜索關(guān)鍵字進(jìn)行模式范圍比較的方法,包括動作讀作為搜索串的輸入關(guān)鍵字;利用搜索關(guān)鍵字的N個最高有效位作為一個代表搜索樹的多個根節(jié)點(diǎn)的表的索引,其中每個非空項(xiàng)含有一個指向搜索樹中的下個分支或者一個葉子的指針;確定非空表項(xiàng)中的指針是否指向相應(yīng)搜索樹中的一個葉子或下個分支;若該指針不指向?qū)?yīng)搜索樹的葉子,讀下個分支內(nèi)容;當(dāng)?shù)竭_(dá)對應(yīng)搜索樹的葉子時讀葉子內(nèi)容,并把該葉子內(nèi)的一對模式和搜索關(guān)鍵字比較以判定由該對葉子模式定義的范圍是否包括該搜索關(guān)鍵字;以及若這些葉子模式包括該搜索關(guān)鍵字把找到的該葉子的內(nèi)容回送給請求應(yīng)用。
2.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法還包括利用可編程的散列函數(shù)散列輸入關(guān)鍵字以形成搜索關(guān)鍵字。
3.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,其中代表搜索樹的多個根節(jié)點(diǎn)的表含有2N個項(xiàng)。
4.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,其中計(jì)算機(jī)處理部件是網(wǎng)絡(luò)處理器。
5.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,其中相應(yīng)搜索樹的下個分支的內(nèi)容指向其他下個分支。
6.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,其中下個分支的內(nèi)容指向相應(yīng)搜索樹的葉子。
7.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,還包括若葉子模式不包括搜索關(guān)鍵字并且不含有至另一個葉子的指針,回送不成功的指示。
8.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法還包括若表的索引是一個空項(xiàng),回送不成功的指示。
9.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法還包括把色彩寄存器的內(nèi)容附加到搜索關(guān)鍵字上以提供最終搜索關(guān)鍵字。
10.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法還包括把一串零附加到搜索關(guān)鍵字上以提供最終搜索關(guān)鍵字。
11.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,其中比較一對模式的動作包括按范圍比較的操作,在其中把搜索關(guān)鍵字的位對待成一個整數(shù)以檢查它是否在該對模式定義的范圍內(nèi)。
12.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,其中比較一對模式的動作包括按屏蔽比較的操作,在其中按第二葉子模式規(guī)定的屏蔽把搜索關(guān)鍵字中的位和第一葉子模式中的位進(jìn)行比較。
13.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法,還包括動作若葉子包含至另一個葉子的鏈?zhǔn)街羔?,讀另一個葉子中存儲的一對模式并把這些模式和搜索關(guān)鍵字比較;若所存儲的這些模式不包含搜索關(guān)鍵字并且不含有對鏈中下個葉子的指針回送不成功的指示。
14.權(quán)利要求1的用于進(jìn)行模式范圍比較的方法還包括動作若葉子包含至另一個葉子的鏈?zhǔn)街羔?,讀另一個葉子中存儲的一對模式并把這些模式和搜索關(guān)鍵字比較;若所存儲的這些模式包含該搜索關(guān)鍵字,回送成功的指示。
15.一種包含多個用于為軟件管理樹中的可變長度搜索關(guān)鍵字進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),包括要搜索的模式或關(guān)鍵字;一個為搜索樹存儲第一地址位置的直接表;多個各代表搜索樹中的一個分支的模式搜索控制塊;一個規(guī)定和每個項(xiàng)相關(guān)的至少一個范圍比較的比較表;以及多個葉子,其中每個葉子存儲一對要和搜索關(guān)鍵字比較的模式。
16.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),還包括一個管理樹搜索存儲器的查找定義表。
17.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中查找定義表包括定義樹所駐留的物理存儲器、關(guān)鍵字和葉子的尺寸、要執(zhí)行的搜索類型的項(xiàng)。
18.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中在多個存儲器中實(shí)現(xiàn)查找定義表。
19.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中直接表的項(xiàng)的格式包括以下各項(xiàng)中的至少一項(xiàng)搜索控制塊;指向下個模式搜索控制塊的下個模式地址;指向葉子或結(jié)果的葉子控制塊地址;下個要檢查的位或位組;以及直接葉子。
20.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中模式搜索控制塊的格式包括以下各項(xiàng)中的至少一項(xiàng)搜索控制塊;指向下個模式搜索控制塊的下個模式地址;指向葉子或結(jié)果的葉子控制塊地址;以及下個要檢查的位或位組。
21.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中比較表包括定義至少一個范圍比較的項(xiàng),每個范圍比較是由一個為該字段的第一位的位置的偏置參數(shù)和一個為該字段的以位數(shù)為長度的長度參數(shù)定義的。
22.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中葉子數(shù)據(jù)結(jié)構(gòu)包括以下各項(xiàng)中的至少一項(xiàng)葉子鏈接指針;一個前綴長度;一對要和搜索關(guān)鍵字比較的模式;以及可變用戶數(shù)據(jù)。
23.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中直接葉子直接存儲在一個直接表的項(xiàng)中并且包括一個搜索控制塊和一對要和搜索關(guān)鍵字比較的模式。
24.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中把模式搜索控制塊插入到搜索樹中葉子模式不同的位置處。
25.權(quán)利要求15的包含多個用于進(jìn)行模式范圍比較的數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì),其中模式搜索控制塊具有用寬度為一和高度為一定義的形狀并且存儲在行長度至少為36位的存儲器中。
26.一種在半導(dǎo)體基片上實(shí)現(xiàn)的用于對軟件管理樹中的可變長度搜索關(guān)鍵字進(jìn)行模式范圍比較的設(shè)備,包括一個嵌入式處理器復(fù)合體,包括提供幀處理的多個協(xié)議處理器和一個內(nèi)部控制點(diǎn)處理器;多個可對每個協(xié)議處理器訪問并提供高速模式搜索、數(shù)據(jù)操作和幀分析的硬件加速器協(xié)處理器;多個存儲多個表示至少一個搜索樹的數(shù)據(jù)結(jié)構(gòu)的可編程存儲器部件,其中這些數(shù)據(jù)結(jié)構(gòu)包括一個直接表、一個模式搜索控制塊、一個比較表和一個包括一對要和搜索關(guān)鍵字比較的模式的葉子;以及一個控制存儲器仲裁器,其控制每個協(xié)議處理器對該多個存儲器部件的訪問。
27.權(quán)利要求26的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,還包括一個和各協(xié)議處理器并行操作的以執(zhí)行包括著存儲器讀、寫和存儲器范圍檢查的樹搜索指令的樹搜索引擎。
28.權(quán)利要求26的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,其中該多個存儲器部件還包括內(nèi)部靜態(tài)隨機(jī)存取存儲器、外部靜態(tài)隨機(jī)存取存儲器和外部動態(tài)隨機(jī)存取存儲器中的至少一個。
29.權(quán)利要求26的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,其中該控制存儲器仲裁器通過在該多個協(xié)議處理器和該多個存儲器部件之間分配存儲器周期管理控制存儲器的操作。
30.權(quán)利要求26的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,其中每個協(xié)議處理器包括一個主數(shù)據(jù)緩沖器、一個暫存數(shù)據(jù)緩沖器和一組控制寄存器,用于數(shù)據(jù)存儲操作。
31.權(quán)利要求26的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,還包括一個在搜索關(guān)鍵字上運(yùn)算幾何散列函數(shù)的散列盒部件。
32.權(quán)利要求26的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,還包括一個可編程搜索關(guān)鍵字寄存器和一個可編程散列關(guān)鍵字寄存器。
33.權(quán)利要求32的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,還包括一個可編程色彩關(guān)鍵字寄存器以能在多個獨(dú)立的搜索樹之間共享單個表數(shù)據(jù)結(jié)構(gòu)。
34.權(quán)利要求33的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,其中,若啟用,把色彩寄存器的內(nèi)容附加到散列輸出以生成最終散列關(guān)鍵字。
35.權(quán)利要求33的在半導(dǎo)體基片上實(shí)現(xiàn)的用于進(jìn)行模式范圍比較的設(shè)備,其中,若不啟用色彩寄存器,把相等數(shù)量的零附加到散列輸出上以生成最終散列關(guān)鍵字。
36.一種含有對軟件管理樹中的可變長度搜索關(guān)鍵字進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品的計(jì)算機(jī)可讀介質(zhì),包括讀作為搜索串的輸入關(guān)鍵字的程序指令組;利用搜索關(guān)鍵字的N個最高有效位作為一個代表搜索樹的多個根節(jié)點(diǎn)的表的索引的程序指令組,其中每個非空項(xiàng)含有一個對搜索樹中的下個分支或?qū)σ粋€葉子的指針;確定非空表項(xiàng)中的指針是否指向相應(yīng)搜索樹中的一個葉子或下個分支的程序指令組;若該指針不指向?qū)?yīng)搜索樹的葉子讀下個分支內(nèi)容的程序指令組;當(dāng)?shù)竭_(dá)對應(yīng)搜索樹的葉子時讀葉子內(nèi)容、并把該葉子內(nèi)的一對模式和搜索關(guān)鍵字比較以判定該對葉子模式規(guī)定的范圍是否包括該搜索關(guān)鍵字的程序指令組,以及若這些葉子模式包括該搜索關(guān)鍵字把找到的該葉子的內(nèi)容回送給請求應(yīng)用的程序指令組。
37.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括利用可編程的散列函數(shù)散列輸入關(guān)鍵字以形成搜索關(guān)鍵字的程序指令組。
38.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,其中代表搜索樹組的多個根節(jié)點(diǎn)的表含有2N個項(xiàng)。
39.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,其中計(jì)算機(jī)處理部件是網(wǎng)絡(luò)處理器。
40.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,其中相應(yīng)搜索樹的下個分支的內(nèi)容指向其他下個分支。
41.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,其中下個分支的內(nèi)容指向相應(yīng)搜索樹的葉子。
42.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括若這些葉子模式不包括搜索關(guān)鍵字并且不含有至另一個葉子的指針,回送不成功匹配指示的程序指令組。
43.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括若對表的索引是一個空項(xiàng),回送不成功指示的程序指令組。
44.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括把色彩寄存器的內(nèi)容附加到搜索關(guān)鍵字上以提供最終搜索關(guān)鍵字的程序指令組。
45.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括把一串零附加到搜索關(guān)鍵字上以提供最終搜索關(guān)鍵字的程序指令組。
46.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品還包括進(jìn)行按范圍的比較操作的程序指令組,在其中把搜索關(guān)鍵字的位組對待成一個整數(shù)以檢查它是否在該對模式定義的范圍內(nèi)。
47.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品還包括進(jìn)行按屏蔽的比較操作的程序指令組,在其中按第二葉子模式規(guī)定的屏蔽把搜索關(guān)鍵字中的位組和第一葉子模式中的位組進(jìn)行比較。
48.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括若葉子包含至另一個葉子的鏈?zhǔn)街羔?,讀另一個葉子中存儲的一對模式并把這些模式和搜索關(guān)鍵字比較的程序指令組;若所存儲的這些模式不和搜索關(guān)鍵字匹配并且不含有對鏈中下個葉子的指針回送不成功的指示的程序指令組。
49.權(quán)利要求36的用于進(jìn)行模式范圍比較的計(jì)算機(jī)程序產(chǎn)品,還包括若葉子包含至另一個葉子的鏈?zhǔn)街羔槪x另一個葉子中存儲的一對模式并把這些模式和搜索關(guān)鍵字比較的程序指令組;若所存儲的這些模式和搜索關(guān)鍵字匹配,回送成功的指示的程序指令組。
全文摘要
一種用于軟件管理樹的提供建立遵循由控制點(diǎn)處理機(jī)定義的搜索機(jī)制的樹結(jié)構(gòu)的機(jī)制的新穎數(shù)據(jù)結(jié)構(gòu)、方法和設(shè)備。該搜索機(jī)制不需要前一指針上的存儲而是只使用一個前向指針以及下一個或下一組要檢查的位,從而減少用于各節(jié)點(diǎn)的存儲空間。該搜索機(jī)制在不必多次搜索并允許鏈接不同的過濾規(guī)則下為應(yīng)用處理多個過濾規(guī)則。在每個葉子中存儲長度相同的二個模式以定義范圍比較。最后比較是按范圍或者按屏蔽的比較中的一種。
文檔編號H04L12/56GK1316708SQ0111621
公開日2001年10月10日 申請日期2001年4月5日 優(yōu)先權(quán)日2000年4月6日
發(fā)明者讓·路易斯·卡爾維格納, 馬爾科·C·赫茲, 克拉克·德布斯·杰弗里斯, 皮尤什·邱尼拉爾·帕特爾, 馬克·安托尼·里納爾迪 申請人:國際商業(yè)機(jī)器公司