綴及至少一個(gè)目的地址前綴,確定儲(chǔ)存于乘積表中(如在乘積表的表項(xiàng)中)的一個(gè)或多個(gè)匹配的源標(biāo)簽和目的標(biāo)簽對(duì)。如前所述,可為每個(gè)所述一個(gè)或多個(gè)源地址前綴及所述至少一個(gè)目的地址前綴分配標(biāo)簽,從而得到多個(gè)標(biāo)簽。進(jìn)一步地,如前所述,每個(gè)標(biāo)簽反映了關(guān)聯(lián)前綴的父子關(guān)系??捎肧.SPM、S.LPM、D.SPM及D.LPM確定所述一個(gè)或多個(gè)匹配的源標(biāo)簽和目的標(biāo)簽對(duì)。在一實(shí)施例中,本發(fā)明所公開的條件I和2可用于確定所述匹配的對(duì)。
[0072]例如,假設(shè)屬于所述分trie樹的前綴較佳地包括兩個(gè)前綴:第一前綴和第二前綴,其中所述第二前綴為所述第一前綴的子前綴,所述第一前綴可為源地址前綴或目的地址前綴。進(jìn)一步地,假設(shè)為所述第一前綴分配第一標(biāo)簽,所述第一標(biāo)簽包括第一 Value和第一 Mask;為所述第二前綴分配第二標(biāo)簽,所述第二標(biāo)簽包括第二 Value和第二 Mask。基于本發(fā)明的等式(I)和(2),可以看出使用所述第二 Value和所述第一 Mask的邏輯和運(yùn)算的結(jié)果等于使用所述第一 Value和所述第一 Mask的邏輯和運(yùn)算的結(jié)果,且使用所述第一 Value和所述第二 Mask的邏輯和運(yùn)算的結(jié)果不等于使用所述第二 Value和所述第二 Mask的邏輯和運(yùn)算的結(jié)果。
[0073]與此相反,假設(shè)所述第一和第二前綴沒有父子關(guān)系?;诒景l(fā)明的等式(3)和
(4),可以看出使用所述第二 Value和所述第一 Mask的邏輯和運(yùn)算的結(jié)果不等于使用所述第一 Value和所述第一 Mask的邏輯和運(yùn)算的結(jié)果,且使用所述第一 Value和所述第二 Mask的邏輯和運(yùn)算的結(jié)果不等于使用所述第二 Value和所述第二 Mask的邏輯和運(yùn)算的結(jié)果。
[0074]在步驟580,所述方法500可將每個(gè)所述一條或多條規(guī)則映射到一個(gè)匹配的源標(biāo)簽和目的標(biāo)簽對(duì)。如前所述,所述規(guī)則可儲(chǔ)存在規(guī)則表或所述TCAM中。如果在步驟580對(duì)多條規(guī)則進(jìn)行了映射,則在步驟590,所述方法500可根據(jù)所述規(guī)則在所述乘積表中的儲(chǔ)存順序從所述多條規(guī)則中選擇具有最高級(jí)的規(guī)則。在步驟592,所述方法500可基于所述選擇的規(guī)則確定要對(duì)所述包進(jìn)行的動(dòng)作。所述動(dòng)作可在動(dòng)作表中指定,所述動(dòng)作表可通過所述規(guī)則進(jìn)行索引。
[0075]本領(lǐng)域普通技術(shù)人員理解,在實(shí)現(xiàn)中,所述方法500可能有各種變化,某些步驟有時(shí)可省略,必要是可新增其他步驟,且當(dāng)一個(gè)步驟不依賴于前一步驟時(shí),執(zhí)行順序可以改變。例如,如果對(duì)所述包只匹配到一條規(guī)則,則步驟590可以省略,因?yàn)闆]有必要進(jìn)行優(yōu)先級(jí)選擇。
[0076]本領(lǐng)域普通技術(shù)人員應(yīng)理解,盡管本發(fā)明大都使用源地址和目的地址作為規(guī)則的兩個(gè)較佳維度來闡述匹配多維trie樹的原理,但在不脫離所公開的原理的前提下也可使用源地址和目的地址之外的其他維度(如,源端口、目的端口、協(xié)議或任意其他適當(dāng)維度)。進(jìn)一步地,如果需要,可使用兩個(gè)以上的維度進(jìn)行多維trie樹的匹配。通常,包頭可包括多個(gè)維度字段(簡稱字段),所述多個(gè)字段可由規(guī)則集指定。如上所述,在本發(fā)明公開的包分類中,可用所述TCAM中儲(chǔ)存的對(duì)應(yīng)表項(xiàng)以及儲(chǔ)存于至少一個(gè)非TCAM內(nèi)存的所述多維trie樹中儲(chǔ)存的數(shù)據(jù),將所述包中的至少兩個(gè)所述字段與所述規(guī)則的兩個(gè)維度進(jìn)行匹配。
[0077]總的來說,本發(fā)明提出了 TCAM協(xié)助的包分類的各實(shí)施例,以期為數(shù)據(jù)中心和/或云應(yīng)用提供高速度低時(shí)延等期望屬性。通過支持低成本的片裝搜索引擎實(shí)現(xiàn)方式,可明顯節(jié)省內(nèi)存。
[0078]圖6示出了網(wǎng)絡(luò)設(shè)備或單元600的一個(gè)實(shí)施例,所述網(wǎng)絡(luò)設(shè)備或單元600可為任意用于通過網(wǎng)絡(luò)傳送數(shù)據(jù)包的設(shè)備。例如,所述網(wǎng)絡(luò)單元600可為網(wǎng)絡(luò)路由器,其中所述內(nèi)存系統(tǒng)200位于所述網(wǎng)絡(luò)路由器。所述網(wǎng)絡(luò)單元600可包括與接收器612 (Rx)連接的一個(gè)或多個(gè)入端口 610,其中所述接收器612可用于從其他網(wǎng)絡(luò)部件接收包或幀。所述網(wǎng)絡(luò)單元600可包括邏輯單元或處理器620,所述邏輯單元或處理器620與所述接收器612相連,用于處理所述包或確定將所述包發(fā)往哪個(gè)網(wǎng)絡(luò)部件。所述處理器620可用硬件或硬件和軟件的組合來實(shí)現(xiàn)。
[0079]所述網(wǎng)絡(luò)單元600可進(jìn)一步包括TCAM 622及至少一個(gè)非TCAM內(nèi)存624。所述TCAM 622可用于儲(chǔ)存獨(dú)立trie樹的根節(jié)點(diǎn)和/或前綴。非TCAM內(nèi)存624可用于儲(chǔ)存TCAMAD表、哈?;謙rie樹表、乘積表、規(guī)則表及動(dòng)作表。注意所述各表可采用任意其他數(shù)據(jù)結(jié)構(gòu)形式完成本發(fā)明所提出的功能。所述網(wǎng)絡(luò)單元600還可包括與發(fā)射器632 (Tx)連接的一個(gè)或多個(gè)出端口 630,其中所述發(fā)射器632 (Tx)可用于向其他網(wǎng)絡(luò)部件發(fā)送包或幀。注意,在實(shí)際實(shí)現(xiàn)中,可能會(huì)有所述網(wǎng)絡(luò)單元600處理的雙向流量,因此一些端口可既接收也發(fā)送包。從這點(diǎn)來說,所述入端口 610與所述出端口 630可共存或可認(rèn)為是與收發(fā)器(Rx/Tx)連接的相同端口的不同功能。所述處理器620、所述TCAM 622、所述非TCAM內(nèi)存624、所述接收器612及所述發(fā)射器632還可用于實(shí)現(xiàn)或支持上述的任意方案和方法,如所述實(shí)現(xiàn)方式300和所述方法500。
[0080]應(yīng)理解,通過將可執(zhí)行指令編碼和/或加載到所述網(wǎng)絡(luò)單元600上,所述處理器620、所述TCAM 622及所述非TCAM內(nèi)存624中的至少一個(gè)會(huì)發(fā)生變化。從而可將所述網(wǎng)絡(luò)單元600轉(zhuǎn)變?yōu)橛刑厥庥猛镜臋C(jī)器或裝置(如具有本發(fā)明所提出的新穎功能的內(nèi)存系統(tǒng)或子系統(tǒng))。所述可執(zhí)行指令可儲(chǔ)存于所述非TCAM內(nèi)存624中,并加載到所述處理器620中執(zhí)行。對(duì)電氣工程和軟件工程技術(shù)而言,能通過加載可執(zhí)行軟件到計(jì)算機(jī)實(shí)現(xiàn)的功能可以通過眾所周知的設(shè)計(jì)規(guī)則變?yōu)橛布?shí)現(xiàn)是基本常識(shí)。采用軟件還是硬件來實(shí)現(xiàn)概念的決策通常取決于設(shè)計(jì)的穩(wěn)定性和待生產(chǎn)的元件數(shù)量,而不是軟件域到硬件域的轉(zhuǎn)換涉及的其他問題。一般來說,仍在頻繁修改的設(shè)計(jì)可首選軟件實(shí)現(xiàn),這是因?yàn)橛布?shí)現(xiàn)改動(dòng)的成本要高于軟件實(shí)現(xiàn)的改動(dòng)。一般來說,將投入量產(chǎn)的穩(wěn)定的設(shè)計(jì)可首選硬件實(shí)現(xiàn),例如通過專用集成電路(ASIC)實(shí)現(xiàn),這是因?yàn)閷?duì)于大型生產(chǎn)活動(dòng),硬件實(shí)現(xiàn)的成本可能要低于軟件實(shí)現(xiàn)。設(shè)計(jì)通常可以軟件形式進(jìn)行開發(fā)和測試,然后再根據(jù)眾所周知的設(shè)計(jì)原則轉(zhuǎn)變?yōu)榈刃У挠布?shí)現(xiàn),通過ASIC對(duì)軟件指令進(jìn)行固化。機(jī)器由新的ASIC控制后就成為具有特殊用途的機(jī)器或裝置,同樣,經(jīng)過編程和/或已加載可執(zhí)行指令的計(jì)算機(jī)也可視為具有特殊用途的機(jī)器或裝置。
[0081]以上對(duì)至少一個(gè)實(shí)施例進(jìn)行了說明,但由本領(lǐng)域普通技術(shù)人員對(duì)所述實(shí)施例的變化、組合、和/或修改,和/或?qū)λ鰧?shí)施例提出的特性都應(yīng)在本發(fā)明的范圍內(nèi)。通過整合、集成、和/或省略所述實(shí)施例的特性而產(chǎn)生的替代實(shí)施例也屬于本發(fā)明的范圍。本發(fā)明中明確說明的數(shù)值范圍或限制可理解為包括此明確說明的范圍或限制范圍內(nèi)的類似數(shù)值的迭代范圍或限制(如,從約I到約10包括2、3、4等;大于0.10包括0.11,0.12,0.13等)。例如,每公開具有下限R1和上限Ru的數(shù)值范圍時(shí),具體公開了此范圍內(nèi)的任何數(shù)值。具體來說,公開了此范圍內(nèi)的以下數(shù)值:R = Rfl^(Ru-R1),其中,k為取值范圍從1%到100%的遞進(jìn)步長為 1% 的變量,即 k 為 1%、2%、3%、4%、5%、......、50%、51%、52%、......、95%、
96%、97%、98%、99%或100%。而且,具體還公開如上所述的兩個(gè)數(shù)字R所定義的任意數(shù)值范圍。其中,除非另有說明,“約”摂表示其后數(shù)值的±10%。權(quán)利要求中某個(gè)元素“可選”表示需要或不需要該元素,這兩種情況都屬于權(quán)利要求的范圍。包括、包含及具有等廣義詞匯的使用應(yīng)理解為由……組成、主要由……組成、大體上由……組成等狹義詞匯也成立。相應(yīng)地,保護(hù)范圍不限于上述說明,而應(yīng)由其后所附的權(quán)利要求書定義,所述范圍包括權(quán)利要求書所述內(nèi)容的所有同等替代。每個(gè)權(quán)利要求都結(jié)合在本說明書中,作為對(duì)本發(fā)明的進(jìn)一步說明,且權(quán)利要求是本發(fā)明的實(shí)施例。在本發(fā)明中提到某個(gè)參考技術(shù)并不表示承認(rèn)該技術(shù)為現(xiàn)有技術(shù),尤其是出版日期在本申請(qǐng)的優(yōu)先權(quán)日期之后的任何參考技術(shù)。本發(fā)明所援引的所有專利、專利申請(qǐng)及出版物的公開信息,其對(duì)本發(fā)明提供補(bǔ)充的示例性、程序性或其他細(xì)節(jié)都通過引用結(jié)合在本發(fā)明中。
[0082]盡管本發(fā)明提供了若干實(shí)施例,可理解所公開的系統(tǒng)和方法可能在不脫離本發(fā)明精神與范圍的前提下存在許多其他具體形式。所述示例應(yīng)理解為示例性而非限制性的,且并不用于將本發(fā)明限于所給出的具體細(xì)節(jié)。例如,各種元素或組件可以整合或集成在其他系統(tǒng)中,或可省略或不實(shí)現(xiàn)某些特征。
[0083]此外,各實(shí)施例中以離散或單獨(dú)方式描述及闡明的技術(shù)、系統(tǒng)、子系統(tǒng)及方法,可與其他系統(tǒng)、模塊、技術(shù)或方法在不脫離本發(fā)明范圍的前提下進(jìn)行整合或集成。以耦合、直接耦合或彼此通信的方式示出或討論的其他項(xiàng)目,可以通過一些電氣、機(jī)械或其他類型的接口、設(shè)備或中間組件進(jìn)行間接耦合或通信。本領(lǐng)域技術(shù)人員可以理解確定本發(fā)明的其他變化、替換或變更,并可在不脫離本發(fā)明精神與范圍的前提下做出其他變化、替換或變更。
【主權(quán)項(xiàng)】
1.一種網(wǎng)絡(luò)路由器實(shí)現(xiàn)的包分類方法,其特征在于,所述方法包括: 獲取包,其中所述包的包頭包括由規(guī)則集指定的多個(gè)維度字段; 將至少兩個(gè)所述維度字段的一個(gè)或多個(gè)比特與儲(chǔ)存于三重內(nèi)容可尋址內(nèi)存(TCAM)中的對(duì)應(yīng)表項(xiàng)進(jìn)行匹配; 基于與所述TCAM中的所述對(duì)應(yīng)表項(xiàng)關(guān)聯(lián)的數(shù)據(jù)生成哈希鍵,其中所述關(guān)聯(lián)數(shù)據(jù)儲(chǔ)存于至少一個(gè)非TCAM內(nèi)存中; 用所述哈希鍵搜索儲(chǔ)存于所述至少一個(gè)非TCAM內(nèi)存中的多維trie樹; 基于所述搜索將所述包映射到所述規(guī)則集中的一條或多條規(guī)則。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述包中的所述至少兩個(gè)維度字段包括第一維度字段和第二維度字段,其中所述多維度trie樹包括對(duì)應(yīng)所述規(guī)則集指定的至少兩個(gè)維度的至少兩個(gè)分trie樹,其中所述至少兩個(gè)分trie樹包括第一分trie樹和第二分trie樹,所述將所述包映射包括: 將所述第一維度字段中的比特與所述第一分trie樹中儲(chǔ)存的數(shù)據(jù)進(jìn)行匹配; 將所述第二維度字段中的比特與所述第二分trie樹中儲(chǔ)存的數(shù)據(jù)進(jìn)行匹配。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一和第二維度字段選自由源地址、目的地址、源端口號(hào)、目的端口號(hào)及協(xié)議組成的群組。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第一維度字段為源地址,所述第二維度字段為目的地址,所述TCAM中的所述對(duì)應(yīng)表項(xiàng)包括源地址前綴和目的地址前綴中的至少一個(gè),所述儲(chǔ)存在所述第一分trie樹中的數(shù)據(jù)包括一個(gè)或多個(gè)源地址前綴,所述儲(chǔ)存在所述第二分trie樹中的數(shù)據(jù)包括至少一個(gè)目的地址前綴。
5.根據(jù)權(quán)利要求4所述的方法