專利名稱:Ip查找方法和裝置以及路由更新方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于IP的網(wǎng)絡(luò)路由器,尤其涉及IP查找方法和路由更新方法。
背景技術(shù):
IP查找是網(wǎng)絡(luò)路由器的核心組成部分。自從1993年采用CIDR(無(wú)類別域間路由) 以來(lái),IP查找問題變成了最長(zhǎng)前綴匹配(LPM,Longest Prefix Matching)問題。給定一個(gè)目的IP地址,路由表中多個(gè)IP前綴可能匹配該地址。在這些匹配的前綴中,最長(zhǎng)前綴對(duì)應(yīng)的下一跳信息將正確決定數(shù)據(jù)包的下一跳。隨著網(wǎng)絡(luò)鏈路速率朝40(ibpS及其以上發(fā)展,基于最長(zhǎng)前綴匹配的IP查找成為路由器中的一個(gè)主要瓶頸。為了達(dá)到40(ibpS的吞吐量,一個(gè)40字節(jié)的網(wǎng)絡(luò)數(shù)據(jù)包需要在8納秒之內(nèi)完成IP查找,這在傳統(tǒng)的基于軟件的IP查找方法中難以實(shí)現(xiàn)。有兩種硬件平臺(tái)常用于實(shí)現(xiàn)高吞吐量三態(tài)內(nèi)容可尋址存儲(chǔ)器(TCAM)和靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)。TCAM是一種專用的高速查找器件,一個(gè)給定搜索關(guān)鍵字可以在0(1)的時(shí)間內(nèi)與 TCAM中存儲(chǔ)的所有條目同時(shí)進(jìn)行比較,并輸出匹配條目所在的地址。由于TCAM中的每個(gè)存儲(chǔ)單元都可以被指定為三種狀態(tài)(“0”“1”和1”(隨意))之一,TCAM非常適用于最長(zhǎng)前綴匹配。然而,一個(gè)給定的目的IP地址,可能匹配TCAM中存儲(chǔ)的多條前綴,TCAM輸出地址最小的匹配前綴的地址。因此,為了保證正確的最長(zhǎng)前綴匹配,IP前綴在TCAM中的存儲(chǔ)必須遵循一定的順序限制。這種前綴之間的順序限制導(dǎo)致路由更新時(shí)可能需要大量的前綴移動(dòng),從而影響轉(zhuǎn)發(fā)性能,導(dǎo)致丟包。為了解決基于TCAM的路由更新問題,Devavrat Shah等人提出了兩種具體的方法PL0_0PT 禾口 CA0_0PT (請(qǐng)參考文獻(xiàn)Fast updating algorithms for TCAMs, Micro 2001)。在PL0_0PT方法中,所有的IP前綴按照前綴長(zhǎng)度降序存儲(chǔ)在TCAM中,同時(shí)將TCAM 中的空閑空間維護(hù)在TCAM中央位置。在CA0_0PT方法中,前綴長(zhǎng)度順序限制只應(yīng)用于同一條鏈上的IP前綴(在用1比特特里樹(1-bit trie)結(jié)構(gòu)表示的IP前綴中,一條鏈指從該特里樹的根節(jié)點(diǎn)出發(fā)的任意一條路徑)。上述兩種方法都降低了每次路由更新可能導(dǎo)致的前綴移動(dòng)次數(shù)。然而,由于前綴長(zhǎng)度順序限制依然存在,一次路由更新仍然可能導(dǎo)致多次前綴移動(dòng)。在Gesan Wang等人提出的MIPS (Minimum Independent Prefix kt,最小獨(dú)立前 MM) ^firP (TCAM-Based Forwarding Engine with Minimum Independent Prefix Set (MIPS) for Fast Updating, ICC 2006),使用了一種葉推技術(shù)(leaf pushing), 將整個(gè)前綴集轉(zhuǎn)換為一個(gè)不相交的前綴集,從而徹底地避免了前綴順序。然而,葉推技術(shù)可能導(dǎo)致前綴復(fù)制。當(dāng)更新一條被復(fù)制的前綴時(shí),與該前綴對(duì)應(yīng)的多條復(fù)制前綴都需要更新。 因此,在最壞情況下,一次路由更新仍然需要多次TCAM寫操作。另一個(gè)常見的快速查找硬件技術(shù)是基于SRAM的IP查找流水線。1比特特里樹數(shù)據(jù)結(jié)構(gòu)常用于實(shí)現(xiàn)IP查找流水線。IP查找流水線的一種簡(jiǎn)單實(shí)現(xiàn)方式是將特里樹的每個(gè)層次的節(jié)點(diǎn)分別存儲(chǔ)到流水線中的一個(gè)流水級(jí)。每個(gè)流水級(jí)都有獨(dú)立的SRAM來(lái)存儲(chǔ)特里樹節(jié)點(diǎn),因此,多個(gè)流水級(jí)可以并行查找,從而實(shí)現(xiàn)高吞吐量(一個(gè)時(shí)鐘周期輸出一個(gè)IP查找結(jié)果)。然而,IP查找流水線中流水級(jí)的個(gè)數(shù)跟特里樹的層數(shù)有直接關(guān)系(對(duì)ipv4來(lái)說(shuō)是32個(gè)),在IP查找流水線中需要大量的SRAM?,F(xiàn)場(chǎng)可編程邏輯門陣列(FPGA)內(nèi)部有大量的小SRAM,因此,F(xiàn)PGA常用于實(shí)現(xiàn)基于SRAM的IP查找流水線。在基于SRAM的IP查找流水線中,快速的路由更新可以使用Anindya Basu等人提出的寫氣泡(write bubble)方法實(shí)現(xiàn)(請(qǐng)參考文獻(xiàn)Fast incremental updates for pipelined forwarding engines, INFOCOM 2003)。然而,F(xiàn)PGA片內(nèi)的SRAM是相對(duì)稀缺的資源,對(duì)其的合理分配和有效利用尤為重要。最近幾年研究學(xué)者提出了大量的存儲(chǔ)均衡方法,雖然很好的利用了片內(nèi)的SRAM資源, 但是,從總體上講,片內(nèi)的SRAM資源還是很難滿足目前大的路由表對(duì)SRAM容量的需求。片內(nèi)SRAM存儲(chǔ)容量的不足,成為基于FPGA片內(nèi)SRAM的IP查找流水線的一個(gè)瓶頸,從而降低了基于FPGA片內(nèi)SRAM的IP查找流水線的實(shí)用性。
發(fā)明內(nèi)容
因此,本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺陷,提供一種IP查找裝置,在保證快速查找的同時(shí),支持快速的路由更新。本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的根據(jù)本發(fā)明的一個(gè)方面,提供了一種IP查找裝置,所述裝置包括基于TCAM的IP查找引擎,其用于存儲(chǔ)第一前綴集,所述第一前綴集包括根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)(FIB)構(gòu)造的1比特特里樹的所有葉子節(jié)點(diǎn)對(duì)應(yīng)的前綴;基于SRAM的IP查找流水線,其用于存儲(chǔ)第二前綴集,所述第二前綴集包括所述特里樹的所有中間節(jié)點(diǎn)對(duì)應(yīng)的前綴;優(yōu)先級(jí)仲裁模塊,其用于對(duì)基于TCAM的IP查找引擎和基于SRAM的IP查找流水線的輸出結(jié)果進(jìn)行仲裁,以輸出下一跳信息。上述IP查找裝置中,所述第二前綴集以1比特特里樹的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在基于SRAM 的IP查找流水線中。上述IP查找裝置中,基于TCAM的IP查找引擎的輸出結(jié)果比基于SRAM的IP查找流水線的輸出結(jié)果具有更高的優(yōu)先級(jí)。上述IP查找裝置中,當(dāng)基于TCAM的IP查找引擎和基于SRAM的IP查找流水線只有一個(gè)輸出結(jié)果時(shí),優(yōu)先級(jí)仲裁模塊直接選擇該輸出結(jié)果作為下一跳信息,否則,選擇基于 TCAM的IP查找引擎的輸出結(jié)果作為下一跳信息。上述IP查找裝置中,基于SRAM的IP查找流水線中的每個(gè)流水級(jí)都采用獨(dú)立的雙口 SRAM,所述雙口 SRAM的一個(gè)端口只進(jìn)行讀操作,另一個(gè)端口只進(jìn)行寫操作。根據(jù)本發(fā)明的另一個(gè)方面,提供了基于上述IP查找裝置的IP查找方法,所述方法包括步驟1)在接收到待查詢的數(shù)據(jù)包的目的IP地址后,同時(shí)將其送入基于TCAM的查找引擎和基于SRAM的查找流水線中進(jìn)行查找;步驟2)當(dāng)步驟1)只得到一個(gè)查找結(jié)果時(shí),直接將該結(jié)果作為下一跳信息;當(dāng)步驟 1)得到兩個(gè)查找結(jié)果時(shí),選擇基于TCAM的查找引擎所輸出的查找結(jié)果作為下一跳信息。根據(jù)本發(fā)明的又一個(gè)方面,提供了基于上述IP查找裝置的路由更新方法,所述方法包括步驟1)基于路由器的轉(zhuǎn)發(fā)信息庫(kù)的路由更新,完成對(duì)路由器控制平面中輔助的1 比特特里樹的更新,得到對(duì)第一前綴集和第二前綴集的更新操作序列;步驟2)根據(jù)所述更新操作序列,針對(duì)基于TCAM的查找引擎和基于SRAM的查找流水線,在數(shù)據(jù)平面中分別執(zhí)行相應(yīng)的更新操作。上述路由更新方法中,所述步驟1)中對(duì)路由器控制平面中輔助的1比特特里樹的更新包括(a)插入一條新前綴,(b)刪除一條已存在的前綴,以及(c)修改一條已存在的前上述路由更新方法中,所述插入一條新前綴的更新包括以下步驟步驟101)將前綴P插入原特里樹T中,得到新的特里樹T’ ;步驟10 在新特里樹T’中,找到前綴P的最長(zhǎng)前綴Q,所述最長(zhǎng)前綴Q是在新特里樹T’中離前綴P所處節(jié)點(diǎn)最近的祖先節(jié)點(diǎn)所對(duì)應(yīng)的前綴;步驟10 如果前綴P是特里樹T’中的非葉子前綴,則將前綴P插入第二前綴集;步驟104)如果P是特里樹T’中的葉子前綴,則判斷Q是否是原特里樹T中的非葉子前綴;如果是,則將P插入第一前綴集,否則將Q插入第二前綴集并從第一前綴集中刪除Q,然后將P插入第一前綴集。上述路由更新方法中,所述刪除一條已存在的前綴的更新包括以下步驟步驟111)將前綴P從原特里樹T中刪除,得到新的特里樹T’ ;步驟11 在原特里樹T中找到前綴P的最長(zhǎng)前綴Q,所述最長(zhǎng)前綴Q是在原特里樹T中離前綴P所處節(jié)點(diǎn)最近的祖先節(jié)點(diǎn)所對(duì)應(yīng)的前綴;步驟113)如果前綴P在特里樹T中是非葉子前綴,則從第二前綴集中刪除P ;步驟114)如果前綴P在特里樹T中是葉子前綴,則判斷Q在特里樹T’中是否是非葉子前綴,如果是,則從第一前綴集中刪除P ;否則,從第一前綴集中刪除P,然后將Q插入第一前綴集,并從第二前綴集中刪除Q。上述路由更新方法中,所述步驟2、根據(jù)所述更新操作序列,在數(shù)據(jù)平面中相應(yīng)地對(duì)基于TCAM的查找引擎進(jìn)行寫操作,對(duì)基于SRAM的查找流水線以寫氣泡的方式執(zhí)行更新操作。根據(jù)本發(fā)明的又一個(gè)方面,還提供了一種路由更新裝置,所述裝置包括基于TCAM的IP查找引擎,其用于存儲(chǔ)第一前綴集,所述第一前綴集包括根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的所有葉子節(jié)點(diǎn)對(duì)應(yīng)的前綴;基于SRAM的IP查找流水線,其用于存儲(chǔ)第二前綴集,所述第二前綴集包括所述特里樹的所有中間節(jié)點(diǎn)對(duì)應(yīng)的前綴;更新控制單元,其用于根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)的路由更新,完成對(duì)路由器控制平面中輔助的1比特特里樹的更新,以得到對(duì)第一前綴集和第二前綴集的更新操作序列; 以及用于根據(jù)所述更新操作序列,在數(shù)據(jù)平面中分別對(duì)基于TCAM的查找引擎中的第一前綴集和基于SRAM的查找流水線中的第二前綴集進(jìn)行更新。上述的路由更新裝置中,在基于SRAM的IP查找流水線中以1比特特里樹的數(shù)據(jù)
結(jié)構(gòu)存儲(chǔ)第二前綴集。上述的路由更新裝置中,基于SRAM的IP查找流水線中的每個(gè)流水級(jí)都采用獨(dú)立的雙口 SRAM,所述雙口 SRAM的一個(gè)端口只進(jìn)行讀操作,另一個(gè)端口只進(jìn)行寫操作。
上述的路由更新裝置中,所述更新控制單元主要用于根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)的路由更新,采用如上所述的路由更新方法對(duì)完成對(duì)基于TCAM的查找引擎中的第一前綴集和基于SRAM的查找流水線中的第二前綴集進(jìn)行更新。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于1、在實(shí)現(xiàn)快速IP查找的同時(shí),支持快速的增量路由更新。通過結(jié)合TCAM和SRAM 的特點(diǎn),針對(duì)其特點(diǎn)分別存儲(chǔ)不同類型的前綴,可以實(shí)現(xiàn)很高的吞吐量,并同時(shí)支持快速的路由更新。在最壞情況下,一次路由更新只需要暫停IP查找過程1次TCAM寫操作的時(shí)間。2、提高了 TCAM的利用率,并緩解了基于SRAM的查找流水線存儲(chǔ)空間的不足的問題。由于在本發(fā)明中,在基于TCAM的查找引擎中存儲(chǔ)的前綴是不相交的葉子前綴,葉子前綴之間不需要遵循任何順序限制,因此,葉子前綴可以以任意順序存儲(chǔ)在TCAM中的任意位置。靈活的存儲(chǔ)方式保證了 TCAM的利用率可以接近100% (仍然需要預(yù)留適當(dāng)?shù)目臻g供進(jìn)一步路由更新使用)。而實(shí)際存儲(chǔ)在基于SRAM的IP查找流水線中的重疊前綴集所需的空間也非常小,緩解了 FPGA片內(nèi)SRAM存儲(chǔ)空間不足的問題。
以下參照附圖對(duì)本發(fā)明實(shí)施例作進(jìn)一步說(shuō)明,其中圖1為根據(jù)本發(fā)明實(shí)施例的IP查找裝置的結(jié)構(gòu)示意圖;圖2(a)為本發(fā)明實(shí)施例中所使用的1比特特里樹示意圖;圖2(b)為圖2(a)所示的特里樹的葉子節(jié)點(diǎn)對(duì)應(yīng)的不相交前綴集示意圖;圖2 (C)為對(duì)應(yīng)于重疊前綴集的剩余特里樹的示意圖;圖3 (a)為根據(jù)本發(fā)明實(shí)施例的基于SRAM的IP查找流水線的結(jié)構(gòu)示意圖;圖3(b)為圖3(a)所示的IP查找流水線的每個(gè)流水級(jí)的細(xì)節(jié)示意圖;圖4為在圖2(a)所示的特里樹中插入一條葉子前綴給不相交前綴集和重疊前綴集的帶來(lái)的變化的示意圖;圖5為在圖2 (a)所示的特里樹中刪除一條葉子前綴給不相交前綴集和重疊前綴集的帶來(lái)的變化的示意圖;圖6為根據(jù)本發(fā)明的實(shí)施例的IP查找裝置的理論吞吐量和實(shí)際吞吐量對(duì)比示意圖;圖7為用實(shí)際路由表仿真的多種基于TCAM的查找引擎的更新開銷對(duì)比圖。
具體實(shí)施例方式為了使本發(fā)明的目的,技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖通過具體實(shí)施例對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明, 并不用于限定本發(fā)明。圖1示出了 IP查找裝置的一個(gè)實(shí)施例的架構(gòu)示意圖。該IP查找裝置包括兩個(gè)并行的IP查找引擎一個(gè)基于TCAM的IP查找引擎和一個(gè)基于SRAM的IP查找流水線。在基于TCAM的IP查找引擎中,存儲(chǔ)的是根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的所有葉子前綴,所述葉子前綴為特里樹的葉子節(jié)點(diǎn)所對(duì)應(yīng)的前綴。在基于SRAM的IP查找流水線中存儲(chǔ)的是根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的所有非葉子前綴,所述非葉子前綴為特里樹的中間節(jié)點(diǎn)所對(duì)應(yīng)的前綴。應(yīng)指出,根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的中間節(jié)點(diǎn)可能對(duì)應(yīng)前綴,也有可能不對(duì)應(yīng)任何前綴。為了描述方便,下文將1比特特里樹簡(jiǎn)稱為特里樹。其中,可以使用本領(lǐng)域普通技術(shù)人員所熟知的構(gòu)造1比特特里樹的方法來(lái)根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造特里樹。在本實(shí)施例中,為了直觀地顯示特里樹構(gòu)造過程,選取了一個(gè)簡(jiǎn)單的示例前綴集合P1-P6,分別對(duì)應(yīng)于Pl 0*, P2 00*, P3 :11*,P4 100*, P5 :101*,P6 111*。圖2(a)示出了根據(jù)該示例前綴集合構(gòu)造的1比特特里樹。在該特里樹中以及后續(xù)所有附圖的特里樹中,灰色節(jié)點(diǎn)代表前綴節(jié)點(diǎn)(即,該節(jié)點(diǎn)對(duì)應(yīng)一個(gè)前綴),有對(duì)應(yīng)的下一跳信息;白色節(jié)點(diǎn)代表非前綴節(jié)點(diǎn),沒有對(duì)應(yīng)的下一跳信息。值得注意的是,轉(zhuǎn)發(fā)信息庫(kù)中的條目不僅包括前綴,還包括對(duì)應(yīng)的下一跳信息。下一跳信息的管理對(duì)于路由更新的影響不大,因此,為了描述的方便,本發(fā)明中忽略下一跳信息的管理,轉(zhuǎn)發(fā)信息庫(kù)和前綴集合這兩個(gè)術(shù)語(yǔ)不加以區(qū)分。在圖2(a)所示的特里樹中,前綴P2、P4、P5和P6均為葉子前綴,將這些葉子前綴收集到一個(gè)葉子前綴集合中。圖2(b)所示的是圖2(a)的特里樹的葉子前綴集合。由于葉子前綴集合中的前綴兩兩不相交,所以也可以稱之為不相交前綴集。將不相交前綴集存儲(chǔ)到IP查找裝置的基于TCAM的IP查找引擎中。在所有的葉子前綴已經(jīng)被收集到一個(gè)單獨(dú)的葉子前綴集合之后,圖2(a)所示的原始特里樹中的所有葉子節(jié)點(diǎn)可以刪除。刪除掉節(jié)點(diǎn)4、7、8和9之后,剩下的特里樹可能包含非前綴的葉子節(jié)點(diǎn),如圖2(a)中所示的節(jié)點(diǎn)5。這些非前綴的葉子節(jié)點(diǎn)不存儲(chǔ)任何前綴信息,也不繼續(xù)導(dǎo)向有效的前綴,因此,所有的非前綴的葉子節(jié)點(diǎn)都可以遞歸的刪除,直到剩下的特里樹中,所有的葉子節(jié)點(diǎn)都是前綴節(jié)點(diǎn)。最后裁剪后的特里樹如圖2(c)所示。 圖2(c)所示的特里樹中對(duì)應(yīng)的前綴(其中,Pl對(duì)應(yīng)0*,P3對(duì)應(yīng)11*),與圖2(b)中所示的前綴表示的地址范圍有重疊,例如Pl表示的地址范圍覆蓋了 P2表示的地址范圍。同時(shí),裁剪過的特里樹中前綴之間本身也有可能存在重疊,因此,也可以將圖2(c)中所示的特里樹對(duì)應(yīng)的前綴集合稱之為重疊前綴集。這個(gè)重疊前綴集中的前綴是不相交前綴集中的前綴的子前綴,例如Pl是P2的子前綴,P3是P6的子前綴。在本實(shí)施例中,將這個(gè)重疊前綴集以1 比特特里樹數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)到IP查找裝置的基于SRAM的IP查找流水線中。在其他實(shí)施例中,也可以以其他的特里樹數(shù)據(jù)結(jié)構(gòu)將重疊前綴集存儲(chǔ)到IP查找裝置的基于SRAM的IP查找流水線中。在本實(shí)施例中,可以采用基于FPGA片內(nèi)SRAM的IP查找流水線。對(duì)于一個(gè)給定的數(shù)據(jù)包,其數(shù)據(jù)包頭部送入包頭解析模塊進(jìn)行解析,抽取出目的 IP地址。同時(shí),數(shù)據(jù)包緩存在數(shù)據(jù)包緩沖區(qū)中等待查詢的下一跳信息。抽取出目的IP地址之后,目的IP地址被同時(shí)送入基于TCAM的IP查找引擎和基于SRAM的IP查找流水線進(jìn)行同時(shí)查找。由于基于SRAM的查找流水線中存儲(chǔ)的前綴為基于TCAM的查找引擎中存儲(chǔ)的前綴的子前綴,TCAM查找引擎輸出的結(jié)果具有更高的優(yōu)先級(jí)(代表更長(zhǎng)的前綴)。優(yōu)先級(jí)仲裁模塊對(duì)TCAM查找引擎和SRAM查找流水線的輸出結(jié)果進(jìn)行仲裁。當(dāng)只有一個(gè)查找引擎輸出查找結(jié)果時(shí),優(yōu)先級(jí)仲裁模塊直接輸出該結(jié)果作為最終的下一跳信息;當(dāng)兩個(gè)查找引擎均輸出查找結(jié)果時(shí),優(yōu)先級(jí)仲裁模塊選擇TCAM查找引擎輸出的結(jié)果作為下一跳信息。最后,一旦優(yōu)先級(jí)仲裁模塊輸出下一跳信息,數(shù)據(jù)包修改模塊從數(shù)據(jù)包緩沖區(qū)中讀取一個(gè)數(shù)據(jù)包,根據(jù)下一跳信息對(duì)數(shù)據(jù)包頭部進(jìn)行相應(yīng)的修改,然后將數(shù)據(jù)包發(fā)送到下一跳信息指定的物理接口。由于基于TCAM的IP查找引擎和基于SRAM的IP查找流水線都可以實(shí)現(xiàn)快速查找, 因此本實(shí)施例中的IP查找裝置同樣能夠?qū)崿F(xiàn)快速的IP查找。而且本實(shí)施例中的IP查找裝置還有效的緩解了現(xiàn)有的基于FPGA片內(nèi)SRAM的IP查找流水線中的存儲(chǔ)空間不足的問題。 這是因?yàn)樵谠揑P查找裝置的基于SRAM的IP查找流水線中,只存儲(chǔ)了重疊前綴集。在上文為了方便描述而使用的是一個(gè)簡(jiǎn)單的示例前綴集合P1-P6。但在使用真實(shí)的骨干網(wǎng)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造特里樹并進(jìn)行劃分后,可以發(fā)現(xiàn),大約90%的前綴為不相交的葉子前綴, 重疊前綴集很小,其對(duì)應(yīng)的裁剪過的特里樹的節(jié)點(diǎn)數(shù)為原始特里樹節(jié)點(diǎn)數(shù)的12%左右(請(qǐng)參考下文中的表1的分析結(jié)果)。因此,實(shí)際存儲(chǔ)在基于SRAM的IP查找流水線中的重疊前綴集所需的空間非常小。更重要的是,本實(shí)施例中的IP查找裝置能夠支持快速的增量更新,因?yàn)樵谠揑P查找裝置的基于TCAM的IP查找引擎中,只存儲(chǔ)了如圖2(b)所示的葉子前綴集合(不相交前綴集)。由于葉子前綴集合中的前綴兩兩不相交,對(duì)于一個(gè)給定的目的IP地址,最多只能匹配其中的一個(gè)前綴。該不相交前綴集在基于TCAM的IP查找引擎中的存儲(chǔ)不需要考慮任何順序限制,一條新的前綴可以插入在基于TCAM的IP查找引擎中任意可用的位置,而不會(huì)導(dǎo)致不正確的最長(zhǎng)前綴匹配。可見,在本發(fā)明的實(shí)施例中,在基于TCAM的IP查找引擎中的路由更新,不會(huì)導(dǎo)致任何前綴移動(dòng);另外,由于該不相交前綴集中的所有前綴天然不相交的,沒有任何前綴被復(fù)制,因此,對(duì)于一次路由更新,最壞情況下只需要一次TCAM寫操作即可完成。在現(xiàn)有的基于SRAM的IP查找流水線中,寫氣泡常用于實(shí)現(xiàn)增量更新(請(qǐng)參考文獻(xiàn):Fast incremental updates for pipelined forwarding engines, INFOCOM 2003 以及文獻(xiàn)Dynamic pipelining =Making IP lookup truly scalable, SIGCOMM 2005)。但是在上述現(xiàn)有的方法中,流水線中使用的是單口 SRAM,寫氣泡有可能導(dǎo)致IP查找流水線的停頓,因?yàn)镮P查找執(zhí)行的是讀操作,路由更新執(zhí)行的是寫操作,而讀、寫操作不可能同時(shí)在SRAM的同一個(gè)端口進(jìn)行。目前FPGA中SRAM普遍具有雙口特性,如Xilinx公司的 FPGA中的Block RAM就是雙口的?,F(xiàn)有的基于雙口 SRAM的IP流水線設(shè)計(jì)(請(qǐng)參考文獻(xiàn) Memory—efficient and scalable virtual routers using FPGA,FPGA 2011),設(shè)計(jì)了兩條獨(dú)立的IP查找流水線,但是這兩條流水線均進(jìn)行IP查找和路由更新,雖然提高了性能,但是每個(gè)端口仍然是同時(shí)既做更新又做查找,并沒有解決路由更新對(duì)查找的影響。但是,在根據(jù)本發(fā)明實(shí)施例的IP查找裝置中,整體的IP查找性能取決于TCAM的查找性能(因?yàn)橐话闱闆r下,基于SRAM的查找流水線的查找性能高于基于TCAM的查找引擎)。因此,在又一個(gè)實(shí)施例中,在不影響整體查找性能的情況下,為了保證了在基于SRAM 的查找流水線中,路由更新對(duì)IP查找沒有任何影響,在IP查找裝置中采用了基于雙口 SRAM 的、具有獨(dú)立查找和更新通路的IP查找流水線。圖3 (a)示出了基于雙口 SRAM的、具有獨(dú)立查找和更新通道通路的IP查找流水線的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。其中,雙口 SRAM的一個(gè)端口專用于IP查找,另一個(gè)端口專用于路由更新。這樣,雖然仍是采用一條流水線,但是路由更新和IP查找互不影響。圖3(b) 描述了圖3(a)所示的每個(gè)流水級(jí)的具體細(xì)節(jié)。在如圖3(b)所示的流水級(jí)中,雙口 SRAM的一個(gè)端口只進(jìn)行讀操作,即在IP查找時(shí)根據(jù)節(jié)點(diǎn)地址讀出節(jié)點(diǎn)內(nèi)容;另外一個(gè)端口只進(jìn)行寫操作,即在路由更新時(shí)在對(duì)應(yīng)地址處添加或修改節(jié)點(diǎn)內(nèi)容。因此,讀、寫操作可以無(wú)沖突地同時(shí)進(jìn)行。這樣,在如圖3(a)所示的IP查找流水線中,IP查找和路由更新使用兩條不同的數(shù)據(jù)通路進(jìn)行,從而解決了路由更新對(duì)IP查找的影響。更具體地,在該實(shí)施例中,當(dāng)重疊前綴集對(duì)應(yīng)的特里樹存儲(chǔ)到基于SRAM的IP查找流水線時(shí),不同層次的節(jié)點(diǎn)存儲(chǔ)在不同的流水級(jí)中。當(dāng)進(jìn)行IP查找時(shí),目的IP地址從圖 3(a)所示的第一個(gè)流水級(jí)開始依次往后遍歷。在每個(gè)流水級(jí)中,根據(jù)上一級(jí)輸出的節(jié)點(diǎn)地址(第一個(gè)流水級(jí)直接訪問地址0),讀出當(dāng)前流水級(jí)中訪問的節(jié)點(diǎn)信息。如果當(dāng)前節(jié)點(diǎn)為前綴節(jié)點(diǎn),則更新最長(zhǎng)前綴的內(nèi)容。然后,根據(jù)目的IP地址對(duì)應(yīng)比特的取值(0或1),以及當(dāng)前訪問節(jié)點(diǎn)的左、右孩子指針情況,判斷應(yīng)該遍歷的當(dāng)前節(jié)點(diǎn)的孩子節(jié)點(diǎn)在下一流水級(jí)中的地址。然后,使用孩子節(jié)點(diǎn)的地址訪問下一個(gè)流水級(jí)。當(dāng)IP查找從最后一個(gè)流水級(jí)退出時(shí),記錄的最長(zhǎng)前綴即為該目的IP地址匹配的最長(zhǎng)前綴。當(dāng)進(jìn)行路由更新時(shí),路由器控制平面的軟件中會(huì)計(jì)算實(shí)現(xiàn)當(dāng)前更新的寫氣泡。值得注意的是,寫氣泡本身并不包含任何數(shù)據(jù)。在寫氣泡注入流水線之前,路由更新導(dǎo)致的在各個(gè)流水級(jí)中需要修改的數(shù)據(jù)及其地址事先由控制平面的軟件計(jì)算好,然后存儲(chǔ)在每個(gè)流水級(jí)對(duì)應(yīng)的存儲(chǔ)寫氣泡數(shù)據(jù)的先進(jìn)先出存儲(chǔ)器(Write Bubble FIFO)中(如圖3(b)所示)。一個(gè)寫氣泡注入流水級(jí)后,依次訪問每個(gè)流水級(jí)。當(dāng)訪問一個(gè)具體的流水級(jí)時(shí),如果Write Bubble FIFO中當(dāng)前內(nèi)容的有效標(biāo)志為1,則將當(dāng)前內(nèi)容中的數(shù)據(jù)寫入其對(duì)應(yīng)的地址。通過這種方法,寫氣泡不需要等待數(shù)據(jù),訪問每個(gè)流水級(jí)只需要一個(gè)時(shí)鐘周期,這意味著寫氣泡遍歷流水級(jí)的速度和IP查找遍歷流水級(jí)的速度相同。因此,可以支持快速的IP查找和路由更新。另外,當(dāng)使用基于1比特特里樹作為IP查找流水線的數(shù)據(jù)結(jié)構(gòu)時(shí),在最壞情況下, 一次路由更新只需要一個(gè)寫氣泡(請(qǐng)參考文獻(xiàn)=Dynamic pipelining =Making IP lookup truly scalable, SIGCOMM 2005),因此,IP查找和路由更新同時(shí)進(jìn)行時(shí),IP查找不會(huì)訪問到一個(gè)不一致的特里樹狀態(tài)。即使某個(gè)IP查找和寫氣泡同時(shí)訪問同一個(gè)流水級(jí)的同一個(gè)節(jié)點(diǎn)時(shí),IP查找總是讀出修改前的節(jié)點(diǎn)內(nèi)容(請(qǐng)參考Xilinx公司FPGA片內(nèi)SRAM的READ_ FIRST特性),并且,這種讀優(yōu)先的特性在整個(gè)遍歷的過程中一直保持。因此,即使路由更新和IP查找同時(shí)進(jìn)行,IP查找總是訪問一棵完整的特里樹,不會(huì)發(fā)生錯(cuò)誤的最長(zhǎng)前綴匹配。由此可見,在該實(shí)施例中IP查找裝置中的路由更新的開銷非常小,因?yàn)榛赟RAM 的IP查找流水線中的路由更新對(duì)IP查找在性能上沒有任何影響;而在基于TCAM的IP查找引擎中,一次路由更新在最壞情況下只需要進(jìn)行一次TCAM寫操作。而且與現(xiàn)有的基于雙口 SRAM的兩條流水線結(jié)構(gòu)相比,本實(shí)施例中具有獨(dú)立查找和更新通路的流水線結(jié)構(gòu)簡(jiǎn)單、 實(shí)現(xiàn)方便。在又一個(gè)實(shí)施例中,還提供了一種基于上述IP查找裝置的IP查找方法,該方法首先將根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)所構(gòu)造的特里樹分割成一個(gè)不相交的葉子前綴集合和一個(gè)重疊的前綴集合;將不相交的葉子前綴集合存儲(chǔ)在基于TCAM的查找引擎中,將重疊的前綴集合以特里樹的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在基于SRAM的查找流水線中;同時(shí)在基于TCAM的查找引擎和基于SRAM的查找流水線中進(jìn)行IP查找。主要包括以下步驟步驟1,分割根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)所構(gòu)造的特里樹。首先,將所構(gòu)造的特里樹的所有葉子前綴收集到一個(gè)集合(即不相交前綴集)。接著將原始特里樹中的所有葉子節(jié)點(diǎn)刪除,并從剩下的特里樹中遞歸刪除所有的非前綴葉子節(jié)點(diǎn),直到裁剪后的特里樹中,所有的葉子節(jié)點(diǎn)都是前綴節(jié)點(diǎn)。最后將裁剪后的特里樹對(duì)應(yīng)的所有前綴收集到另一個(gè)集合(即重疊前綴集)步驟2,將不相交前綴集存儲(chǔ)到基于TCAM的查找引擎中,將重疊前綴集以特里樹的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)到基于SRAM的查找流水線中。步驟3,同時(shí)在基于TCAM的查找引擎和基于SRAM的查找流水線中進(jìn)行IP查找,當(dāng)在基于TCAM的查找引擎和基于SRAM的查找流水線中只得到一個(gè)查找結(jié)果時(shí),直接將該查找結(jié)果作為最終的下一跳信息;當(dāng)在基于TCAM的查找引擎和基于SRAM的查找流水線中均得到查找結(jié)果時(shí),選擇基于TCAM的查找引擎中的查找結(jié)果作為下一跳信息。在又一個(gè)實(shí)施例中,還提出了一種用于上述IP查找裝置的路由更新方法。在上述 IP查找裝置的實(shí)例中,一次針對(duì)原始的轉(zhuǎn)發(fā)信息庫(kù)的路由更新,可能導(dǎo)致基于TCAM的查找引擎和基于SRAM的查找流水線中都產(chǎn)生路由更新。一次路由更新可以分為三類(1)插入一條新前綴;( 刪除一條已存在的前綴;C3)修改一條已存在的前綴。第三類更新的實(shí)現(xiàn)非常簡(jiǎn)單,因?yàn)樵擃惛聝H僅是對(duì)已有前綴的下一跳信息的修改,不會(huì)改變?cè)继乩飿涞男再|(zhì)。然而,前面兩類更新相對(duì)復(fù)雜,插入或者刪除一條前綴均可能導(dǎo)致原始特里樹形狀的改變,從而同時(shí)影響不相交前綴集和重疊前綴集。通常,在路由器的控制平面維護(hù)一個(gè)輔助的1比特特里樹,用于記錄前綴存儲(chǔ)在上述IP查找裝置中的位置。應(yīng)指出這個(gè)1比特特里樹是在路由器的控制平面中(比如 CPU中)進(jìn)行維護(hù)的,用于輔助路由更新。針對(duì)這個(gè)輔助1比特特里樹的任何操作,都不會(huì)影響轉(zhuǎn)發(fā)過程,因?yàn)檗D(zhuǎn)發(fā)引擎是在數(shù)據(jù)平面中。在該實(shí)施例中,一次完整的路由更新操作包括兩個(gè)階段。第一個(gè)階段完成對(duì)路由器控制平面中輔助的特里樹的更新。該階段的主要目的是找到該路由更新對(duì)不相交前綴集和重疊前綴集的影響。根據(jù)第一個(gè)階段的結(jié)果,第二個(gè)階段主要分別針對(duì)基于TCAM的查找引擎和基于SRAM的查找流水線,在數(shù)據(jù)平面中具體實(shí)施更新操作(針對(duì)TCAM的寫操作以及針對(duì)SRAM的寫氣泡)。下面結(jié)合圖4和圖5來(lái)更清楚地介紹上述路由更新過程。圖4所示的是在圖2(a)所示的特里樹中插入一條新葉子前綴P7的場(chǎng)景。在前綴 P7插入之前,前綴P2、P4、P5和P6為葉子前綴,屬于不相交前綴集,應(yīng)該存儲(chǔ)在基于TCAM 的查找引擎中;前綴Pl和P3為中間節(jié)點(diǎn)存儲(chǔ)的前綴,屬于重疊前綴集,應(yīng)該以特里樹的方式存儲(chǔ)到基于SRAM的IP查找流水線中。在前綴P7插入之后,P7所在的節(jié)點(diǎn)為一個(gè)新的葉子節(jié)點(diǎn),因此,前綴P7在更新后的特里樹中變成一個(gè)新的葉子前綴。另外,由于前綴P7 的插入,之前的葉子前綴P2變成了非葉子前綴。前綴P7的插入給不相交前綴集和重疊前綴集帶來(lái)的改變可以歸納為(1)前綴P2應(yīng)該插入到重疊前綴集中;( 前綴P2應(yīng)該從不相交前綴集中刪除;C3)前綴P7應(yīng)該插入到不相交前綴集。在這些改變?cè)诳刂破矫嬷斜话l(fā)現(xiàn)后,前綴P2應(yīng)該以寫氣泡的方式插入到基于SRAM的IP查找流水線中,前綴P7應(yīng)該覆蓋基于TCAM的查找引擎中已經(jīng)存儲(chǔ)的前綴P2。葉子前綴在基于TCAM的查找引擎中的存儲(chǔ)位置,可以記錄在控制平面的輔助的1比特特里樹的葉子節(jié)點(diǎn)中。圖5所示的是在圖2(a)所示的特里樹中刪除一條已存在的前綴P2的場(chǎng)景。在刪除前綴P2之前,前綴P2、P4、P5和P6為葉子前綴,屬于不相交前綴集,應(yīng)該存儲(chǔ)在基于TCAM 的查找引擎中;前綴Pl和P3為中間節(jié)點(diǎn)存儲(chǔ)的前綴,屬于重疊前綴集,應(yīng)該以特里樹的方式存儲(chǔ)到基于SRAM的IP查找流水線中。在刪除前綴P2之后,之前的非葉子前綴Pl變成了葉子前綴。前綴P2的刪除給不相交前綴集和重疊前綴集帶來(lái)的改變可以歸納為(1)前綴P2應(yīng)該從不相交前綴集中刪除;( 前綴Pl應(yīng)該插入到不相交前綴集;C3)前綴Pl應(yīng)該從重疊前綴集中刪除。在這些改變?cè)诳刂破矫嬷斜话l(fā)現(xiàn)后,前綴Pl應(yīng)該覆蓋基于TCAM的查找引擎中已經(jīng)存儲(chǔ)的前綴P2。葉子前綴在基于TCAM的查找引擎中的存儲(chǔ)位置,可以記錄在控制平面的輔助的1比特特里樹的葉子節(jié)點(diǎn)中。另外,前綴Pl在重疊前綴集中的刪除操作,應(yīng)該以寫氣泡的方式在基于SRAM的IP查找流水線中進(jìn)行。圖4和圖5所示的僅僅是兩種典型的更新場(chǎng)景,其它類型的插入和刪除操作可以類似地完成。其中,所采用的前綴插入算法為
權(quán)利要求
1.一種IP查找裝置,包括基于TCAM的IP查找引擎,其用于存儲(chǔ)第一前綴集,所述第一前綴集包括根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的所有葉子節(jié)點(diǎn)對(duì)應(yīng)的前綴;基于SRAM的IP查找流水線,其用于存儲(chǔ)第二前綴集,所述第二前綴集包括所述特里樹的所有中間節(jié)點(diǎn)對(duì)應(yīng)的前綴;優(yōu)先級(jí)仲裁模塊,其用于對(duì)基于TCAM的IP查找引擎和基于SRAM的IP查找流水線的輸出結(jié)果進(jìn)行仲裁,以輸出下一跳信息。
2.根據(jù)權(quán)利要求1所述的IP查找裝置,其中,所述第二前綴集以1比特特里樹的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在基于SRAM的IP查找流水線中。
3.根據(jù)權(quán)利要求1所述的IP查找裝置,其中,對(duì)基于TCAM的IP查找引擎的輸出結(jié)果比基于SRAM的IP查找流水線的輸出結(jié)果具有更高的優(yōu)先級(jí)。
4.根據(jù)權(quán)利要求1所述的IP查找裝置,其中當(dāng)基于TCAM的IP查找引擎和基于SRAM 的IP查找流水線只有一個(gè)輸出結(jié)果時(shí),優(yōu)先級(jí)仲裁模塊直接選擇該輸出結(jié)果作為下一跳信息,否則,選擇基于TCAM的IP查找引擎的輸出結(jié)果作為下一跳信息。
5.根據(jù)權(quán)利要求1、2、3或4所述的IP查找裝置,其中基于SRAM的IP查找流水線中的每個(gè)流水級(jí)都采用獨(dú)立的雙口 SRAM,所述雙口 SRAM的一個(gè)端口只進(jìn)行讀操作,另一個(gè)端口只進(jìn)行寫操作。
6.一種基于如上述任一權(quán)利要求所述的IP查找裝置的IP查找方法,所述方法包括 步驟1)在接收到待查詢的數(shù)據(jù)包的目的IP地址后,同時(shí)將其送入基于TCAM的查找引擎和基于SRAM的查找流水線中進(jìn)行查找;步驟2)當(dāng)步驟1)只得到一個(gè)查找結(jié)果時(shí),直接將該結(jié)果作為下一跳信息;當(dāng)步驟1) 得到兩個(gè)查找結(jié)果時(shí),選擇基于TCAM的查找引擎所輸出的查找結(jié)果作為下一跳信息。
7.一種基于如權(quán)利要求1、2、3、4或5所述的IP查找裝置的路由更新方法,所述方法包括步驟1)基于路由器的轉(zhuǎn)發(fā)信息庫(kù)的路由更新,完成對(duì)路由器控制平面中輔助的1比特特里樹的更新,得到對(duì)第一前綴集和第二前綴集的更新操作序列;步驟2)根據(jù)所述更新操作序列,針對(duì)基于TCAM的查找引擎和基于SRAM的查找流水線,在數(shù)據(jù)平面中分別執(zhí)行相應(yīng)的更新操作。
8.根據(jù)權(quán)利要求7所述的路由更新方法,所述步驟1)中對(duì)路由器控制平面中輔助的1 比特特里樹的更新包括(a)插入一條新前綴,(b)刪除一條已存在的前綴,以及(c)修改一條已存在的前綴。
9.根據(jù)權(quán)利要求8所述的路由更新方法,所述插入一條新前綴的更新包括以下步驟 步驟101)將前綴P插入原特里樹T中,得到新的特里樹T’ ;步驟10 在新特里樹T’中,找到前綴P的最長(zhǎng)前綴Q,所述最長(zhǎng)前綴Q是在新特里樹 T’中離前綴P所處節(jié)點(diǎn)最近的祖先節(jié)點(diǎn)所對(duì)應(yīng)的前綴;步驟103)如果前綴P是特里樹T’中的非葉子前綴,則將前綴P插入第二前綴集; 步驟104)如果P是特里樹T’中的葉子前綴,則判斷Q是否是原特里樹T中的非葉子前綴;如果是,則將P插入第一前綴集,否則將Q插入第二前綴集并從第一前綴集中刪除Q, 然后將P插入第一前綴集。
10.根據(jù)權(quán)利要求8所述的路由更新方法,所述刪除一條已存在的前綴的更新包括以下步驟步驟111)將前綴P從原特里樹T中刪除,得到新的特里樹T’ ;步驟11 在原特里樹T中找到前綴P的最長(zhǎng)前綴Q,所述最長(zhǎng)前綴Q是在原特里樹T 中離前綴P所處節(jié)點(diǎn)最近的祖先節(jié)點(diǎn)所對(duì)應(yīng)的前綴;步驟113)如果前綴P在特里樹T中是非葉子前綴,則從第二前綴集中刪除P ;步驟114)如果前綴P在特里樹T中是葉子前綴,則判斷Q在特里樹T’中是否是非葉子前綴,如果是,則從第一前綴集中刪除P ;否則,從第一前綴集中刪除P,然后將Q插入第一前綴集,并從第二前綴集中刪除Q。
11.根據(jù)權(quán)利要求7所述的路由更新方法,所述步驟幻根據(jù)所述更新操作序列,在數(shù)據(jù)平面中相應(yīng)地對(duì)基于TCAM的查找引擎進(jìn)行寫操作,對(duì)基于SRAM的查找流水線以寫氣泡的方式執(zhí)行更新操作。
12.—種路由更新裝置,所述裝置包括基于TCAM的IP查找引擎,其用于存儲(chǔ)第一前綴集,所述第一前綴集包括根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的所有葉子節(jié)點(diǎn)對(duì)應(yīng)的前綴;基于SRAM的IP查找流水線,其用于存儲(chǔ)第二前綴集,所述第二前綴集包括所述特里樹的所有中間節(jié)點(diǎn)對(duì)應(yīng)的前綴;更新控制單元,其用于根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)的路由更新,完成對(duì)路由器控制平面中輔助的1比特特里樹的更新,以得到對(duì)第一前綴集和第二前綴集的更新操作序列;以及用于根據(jù)所述更新操作序列,在數(shù)據(jù)平面中分別對(duì)基于TCAM的查找引擎中的第一前綴集和基于SRAM的查找流水線中的第二前綴集進(jìn)行更新。
13.根據(jù)權(quán)利要求12所述的路由更新裝置,其中,在基于SRAM的IP查找流水線中以1 比特特里樹的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)第二前綴集。
14.根據(jù)權(quán)利要求12所述的路由更新裝置,其中,基于SRAM的IP查找流水線中的每個(gè)流水級(jí)都采用獨(dú)立的雙口 SRAM,所述雙口 SRAM的一個(gè)端口只進(jìn)行讀操作,另一個(gè)端口只進(jìn)行寫操作。
15.根據(jù)權(quán)利要求12、13或14所述的路由更新裝置,其中所述更新控制單元對(duì)路由器控制平面中輔助的1比特特里樹的更新包括(a)插入一條新前綴,(b)刪除一條已存在的前綴,以及(c)修改一條已存在的前綴。
16.根據(jù)權(quán)利要求15所述的路由更新裝置,所述更新控制單元以如下方式插入一條新前綴(101)將前綴P插入原特里樹T中,得到新的特里樹T’;(102)在新特里樹T’中,找到前綴P的最長(zhǎng)前綴Q,所述最長(zhǎng)前綴Q是在新特里樹T’ 中離前綴P所處節(jié)點(diǎn)最近的祖先節(jié)點(diǎn)所對(duì)應(yīng)的前綴;(103)如果前綴P是特里樹T’中的非葉子前綴,則將前綴P插入第二前綴集;(104)如果P是特里樹T’中的葉子前綴,則判斷Q是否是原特里樹T中的非葉子前綴; 如果是,則將P插入第一前綴集,否則將Q插入第二前綴集并從第一前綴集中刪除Q,然后將 P插入第一前綴集。
17.根據(jù)權(quán)利要求15所述的路由更新裝置,所述更新控制單元以如下方式刪除一條已存在的前綴(111)將前綴P從原特里樹T中刪除,得到新的特里樹T’;(112)在原特里樹T中找到前綴P的最長(zhǎng)前綴Q,所述最長(zhǎng)前綴Q是在原特里樹T中離前綴P所處節(jié)點(diǎn)最近的祖先節(jié)點(diǎn)所對(duì)應(yīng)的前綴;(113)如果前綴P在特里樹T中是非葉子前綴,則從第二前綴集中刪除P;(114)如果前綴P在特里樹T中是葉子前綴,則判斷Q在特里樹T’中是否是非葉子前綴,如果是,則從第一前綴集中刪除P;否則,從第一前綴集中刪除P,然后將Q插入第一前綴集,并從第二前綴集中刪除Q。
18.根據(jù)權(quán)利要求12所述的路由更新裝置,其中,所述更新控制單元在數(shù)據(jù)平面中以對(duì)基于TCAM的查找引擎進(jìn)行寫操作的方式對(duì)第一前綴集進(jìn)行更新;以及以寫氣泡的方式對(duì)基于SRAM的查找流水線中的第二前綴集進(jìn)行更新。
全文摘要
本發(fā)明提供一種IP查找裝置,其包括基于TCAM的IP查找引擎和基于SRAM的IP查找流水線,可以同時(shí)在這兩個(gè)查找引擎中進(jìn)行IP查找。在基于TCAM的IP查找引擎中,存儲(chǔ)的是根據(jù)路由器的轉(zhuǎn)發(fā)信息庫(kù)構(gòu)造的1比特特里樹的所有葉子節(jié)點(diǎn)所對(duì)應(yīng)的前綴,而在基于SRAM的IP查找流水線中,存儲(chǔ)的是該特里樹的中間節(jié)點(diǎn)對(duì)應(yīng)的所有前綴。該裝置在實(shí)現(xiàn)快速IP查找的同時(shí),支持快速的增量路由更新。而且提高了TCAM的利用率,并緩解了基于FPGA片內(nèi)SRAM的IP查找流水線存儲(chǔ)空間不足的問題。
文檔編號(hào)H04L12/56GK102307149SQ20111028651
公開日2012年1月4日 申請(qǐng)日期2011年9月23日 優(yōu)先權(quán)日2011年9月23日
發(fā)明者羅臘詠, 謝應(yīng)科, 謝高崗 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所