路由檢索器534。
[0068]路由檢索器534可以為所述消息的最長(zhǎng)前綴匹配搜索存儲(chǔ)在散列表存儲(chǔ)裝置550中的FIB?;谟伤龇稚⑹讲悸V波器模塊532所指示的長(zhǎng)度,所述路由檢索器534可通過(guò)查找指示長(zhǎng)度的匹配前綴來(lái)開(kāi)始對(duì)FIB的搜索。如果所述分散式布隆濾波器模塊532遇到正誤識(shí)(false positive),所述路由檢索器534可逐漸降低被搜索的前綴的長(zhǎng)度,直到最終定位到對(duì)該消息具有最長(zhǎng)前綴匹配的條目。所述LPM塊530可隨后將該消息轉(zhuǎn)發(fā)給由所述被定位的條目所指示的輸出線卡。
[0069]SRAM540可包括硬件和/或機(jī)器可讀存儲(chǔ)介質(zhì)上的可執(zhí)行指令,所述可執(zhí)行指令被配置以為線卡500存儲(chǔ)各種有用數(shù)據(jù)。所述SRAM540的示例性內(nèi)容將參照?qǐng)D6更詳細(xì)地說(shuō)明如下。SRAM可以包括多個(gè)雙端口 32-Kbit的SRAM塊。應(yīng)當(dāng)理解,也可以使用多種其它類型的存儲(chǔ)器如,例如,DRAM或閃存。
[0070]散列表存儲(chǔ)裝置550可以包括硬件和/或機(jī)器可讀存儲(chǔ)介質(zhì)上的可執(zhí)行指令,所述可執(zhí)行指令被配置以為線卡500存儲(chǔ)FIB。因此,所述散列表存儲(chǔ)裝置可包括機(jī)器可讀存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁盤(pán)存儲(chǔ)介質(zhì)、光存儲(chǔ)介質(zhì)、閃存設(shè)備、和/或類似的存儲(chǔ)介質(zhì)。散列表存儲(chǔ)裝置550的示例性內(nèi)容將在下面參照?qǐng)D8更詳細(xì)地說(shuō)明。
[0071]散列表存儲(chǔ)裝置550可構(gòu)成“片外存儲(chǔ)器”,其可被實(shí)現(xiàn)為物理上從線卡500中的其他部件中分離的設(shè)備。所述處理管理器510、緩存520、LPM塊530和SRAM 540可被實(shí)現(xiàn)為單個(gè)芯片如,例如微處理器、FPGA或ASIC。
[0072]圖6示出了關(guān)于線卡的示例性存儲(chǔ)器內(nèi)容600。所述示例性存儲(chǔ)器內(nèi)容600可描述SRAM 540中的內(nèi)容。如圖所示,存儲(chǔ)器內(nèi)容600可包括線卡表610、緩存表620、和布隆濾波器630。可從控制平面接收所述線卡表610,并且其可將每個(gè)活動(dòng)線卡與分配整數(shù)相關(guān)聯(lián)。緩存表620可以存儲(chǔ)多個(gè)供繞過(guò)所述最長(zhǎng)前綴匹配的操作使用的緩存項(xiàng)。緩存表620的示例性內(nèi)容將參照?qǐng)D7更加詳細(xì)地說(shuō)明如下。所述布隆濾波器630可包括被選擇的布隆濾波器的數(shù)字“k”,其用于估計(jì)的最長(zhǎng)前綴匹配的長(zhǎng)度。例如,可基于用于在評(píng)估布隆濾波器時(shí)降低或最小化的正誤識(shí)的可能性的布隆濾波準(zhǔn)則來(lái)選擇所述數(shù)字“k”。
[0073]圖7示出了用于存儲(chǔ)緩存數(shù)據(jù)的示例性數(shù)據(jù)安排700。所述數(shù)據(jù)安排700可以通過(guò)使用不同的數(shù)據(jù)結(jié)構(gòu)如,例如,對(duì)象、數(shù)組、鏈表、樹(shù)、和/或散列表來(lái)實(shí)現(xiàn)。所述數(shù)據(jù)安排700可以被存儲(chǔ)在,例如,示例性線卡500的SRAM540中。所述數(shù)據(jù)安排700可以包括多個(gè)字段,如內(nèi)容名稱字段710和輸出卡字段720。內(nèi)容名稱字段710可指示緩存條目可應(yīng)用的目的地地址。輸出卡字段720可指示用于轉(zhuǎn)發(fā)攜帶了可用目的地地址的分組的適當(dāng)?shù)妮敵鼍€卡或輸出端口。輸出卡字段720可以通過(guò)線卡標(biāo)識(shí)符直接地識(shí)別輸出線卡,或者可以通過(guò),例如,指示下一跳設(shè)備或輸出端口非直接地識(shí)別輸出線卡。
[0074]作為示例,示例性數(shù)據(jù)安排700被示為存儲(chǔ)有兩個(gè)緩存條目730、740。數(shù)據(jù)安排700可以包括許多附加條目750。第一緩存條目730可指示包括目的地地址“/JD0E/PAPERS/PaperA.pdf ”的消息應(yīng)經(jīng)由線卡“2”轉(zhuǎn)發(fā),所述線卡2可對(duì)應(yīng)于輸出線卡2240b。第二緩存條目740可指示包括目的地地址“/JDOE/notes.txt”的消息應(yīng)該經(jīng)由線卡“ I”轉(zhuǎn)發(fā),所述線卡I可對(duì)應(yīng)于輸出線卡1220b。。
[0075]圖8示出了示例性的數(shù)據(jù)安排800,用于存儲(chǔ)轉(zhuǎn)發(fā)信息,諸如FIB。數(shù)據(jù)安排800可以通過(guò)使用各種數(shù)據(jù)結(jié)構(gòu)如,例如,對(duì)象、數(shù)組、鏈表、樹(shù)、和/或散列表來(lái)實(shí)現(xiàn)。所述數(shù)據(jù)安排800可被存儲(chǔ)在,例如,示例性線卡500的散列表存儲(chǔ)裝置550。所述數(shù)據(jù)安排800可以包括多個(gè)字段,如儲(chǔ)體字段840、內(nèi)容前綴字段820、與輸出卡字段830。儲(chǔ)體字段可以指示儲(chǔ)體標(biāo)識(shí)符。應(yīng)理解的是,術(shù)語(yǔ)“儲(chǔ)體”可指散列表的可尋址元素。每個(gè)儲(chǔ)體可包括多組轉(zhuǎn)發(fā)信息。所述內(nèi)容前綴字段820可指示轉(zhuǎn)發(fā)信息施加給哪個(gè)內(nèi)容前綴。所述內(nèi)容前綴可被存儲(chǔ)為散列值。所述輸出卡字段830可指示用于轉(zhuǎn)發(fā)攜帶有可用目的地地址的分組的適當(dāng)輸出線卡或輸出端口。所述輸出卡字段830可以通過(guò)線卡標(biāo)識(shí)符直接地識(shí)別輸出線卡,或者可以通過(guò),例如,指示下一跳設(shè)備或輸出端口非直接地識(shí)別輸出線卡。
[0076]作為示例,示例性數(shù)據(jù)安排800被示為存儲(chǔ)儲(chǔ)體840-880的數(shù)字“P”。第一儲(chǔ)體840可以包括單組轉(zhuǎn)發(fā)信息,其存儲(chǔ)散列,例如前綴“/JD0E”的CRC-64散列,并指示匹配的消息應(yīng)該經(jīng)由輸出卡“I”被轉(zhuǎn)發(fā)。第二儲(chǔ)體850可包括兩組路由信息。所述第二儲(chǔ)體可指示對(duì)于最長(zhǎng)前綴匹配“/TUX”,消息應(yīng)經(jīng)由輸出卡“I”被轉(zhuǎn)發(fā),而對(duì)于最長(zhǎng)前綴匹配“/JD0E/VIDEOS”,消息應(yīng)經(jīng)由輸出卡“2”被轉(zhuǎn)發(fā)。這兩組轉(zhuǎn)發(fā)信息可以占有同一個(gè)儲(chǔ)體,因?yàn)閷?duì)于這兩個(gè)前綴來(lái)說(shuō),用于確定適當(dāng)儲(chǔ)體的數(shù)學(xué)運(yùn)算可均為其標(biāo)識(shí)儲(chǔ)體“2”。例如,每個(gè)前綴的散列值模“P”可得出值2。參考上文的描述,剩余儲(chǔ)體860-880中的示例性數(shù)據(jù)的含義將是顯而易見(jiàn)的。
[0077]圖9示出了用于轉(zhuǎn)發(fā)消息的示例性方法900。該示例性方法可以,例如,通過(guò)線卡500的組件被執(zhí)行。方法900可開(kāi)始于步驟905并進(jìn)行到步驟910,其中所述處理管理器510可接收將被轉(zhuǎn)發(fā)的消息??蓮牧硪痪W(wǎng)絡(luò)設(shè)備或從另一線卡經(jīng)由交換結(jié)構(gòu)接收所述消息。接下來(lái),在步驟915中,所述處理管理器可以從該消息攜帶的內(nèi)容名稱中提取第一成分“bl”。然后,在步驟920中,所述處理管理器可以基于bl生成線卡索引“i”。該過(guò)程可類似于方法400的步驟430中的處理器214所使用的用于分散轉(zhuǎn)發(fā)信息的流程。所述處理管理器可以散列bl并計(jì)算所述散列模n,其中η為活動(dòng)線卡的數(shù)量。使用該索引,所述處理管理器510可在步驟925中從所述線卡表檢索記錄“i”,并在步驟930中確定該記錄是否標(biāo)識(shí)所述處理管理器510屬于的那個(gè)線卡。如果所述記錄指向不同線卡,所述處理管理器可以在步驟935中將所述消息傳遞給所識(shí)別的線卡的輸入端口,并且在步驟975中方法900可進(jìn)行到結(jié)束。所識(shí)別的線卡可隨后執(zhí)行方法900以進(jìn)一步處理該消息。
[0078]在另一方面,如果所述記錄標(biāo)識(shí)本線卡,方法900可進(jìn)行到步驟940,其中緩存520可以搜索緩存表以確定是否有任何條目與接收到的消息的內(nèi)容名稱相匹配。如果有緩存命中,所述緩存520可在步驟950中從緩存條目確定適當(dāng)?shù)妮敵鼍€卡。否則,所述LPM塊530可在步驟955中使用FIB執(zhí)行最長(zhǎng)前綴匹配以確定適當(dāng)?shù)妮敵鼍€卡。示例性的LPM流程將參照?qǐng)D10更加詳細(xì)地說(shuō)明如下。在識(shí)別適當(dāng)?shù)妮敵鼍€卡后,所述LPM塊530可確定是否緩存所述轉(zhuǎn)發(fā)信息以供將來(lái)使用。在多種的實(shí)施例中,所述LPM塊530可以緩存所有定位的記錄。在其他實(shí)施例中,所述LPM塊530可只緩存那些匹配超過(guò)預(yù)定長(zhǎng)度的內(nèi)容名稱的記錄。例如在步驟960,所述LPM塊可確定所述消息攜帶的內(nèi)容名稱的長(zhǎng)度是否大于預(yù)先配置的閾值“T”。如果所述內(nèi)容名稱的長(zhǎng)度超過(guò)“ T”,所述LPM塊530可以,在步驟965,緩存所述內(nèi)容名稱和標(biāo)識(shí)的輸出卡。最后,在步驟970中,所述線卡500可將消息轉(zhuǎn)發(fā)到所識(shí)別的線卡的輸出端口,并且所述方法900可在步驟975進(jìn)行到結(jié)束。
[0079]圖10示出了用于執(zhí)行最長(zhǎng)前綴匹配的示例性方法1000。所述方法1000可以通過(guò)LPM塊530的組件來(lái)執(zhí)行。所述方法1000可以開(kāi)始于步驟1005,并進(jìn)行到步驟1010,其中所述分散式布隆濾波器模塊532可施加多個(gè)散列函數(shù)“k”至所述內(nèi)容名稱的每一個(gè)可能的前綴。例如,對(duì)于內(nèi)容名稱“/JD0E/VIDE0S/JD2012/vid.avi”,所述分散式布隆濾波器模塊532可以使用所述“k”散列函數(shù)中的每一個(gè)來(lái)散列前綴“/JD0E”、“/JD0E/VIDE0S”、“/JD0E/VIDEOS/JD2012” 以及 “/JD0E/VIDE0S/JD2012/vid.avi”。
[0080]接下來(lái),在步驟1015中,所述分散式布隆濾波器模塊532可將適當(dāng)?shù)牟悸V波器施加至每個(gè)已散列的前綴。例如,施加到所述前綴的每個(gè)散列函數(shù)可與單獨(dú)的布隆濾波器相關(guān)聯(lián)。根據(jù)第一散列函數(shù)散列的每個(gè)前綴可以被施加至第一布隆濾波器,根據(jù)第二散列函數(shù)散列的每個(gè)前綴可以被施加至第二布隆濾波器,以此類推。每個(gè)布隆濾波器的應(yīng)用可能會(huì)生成一個(gè)比特字段,其根據(jù)該布隆濾波器指示每個(gè)前綴是否可能在FIB中得到匹配。例如,比特字段“0110”可指示前綴“/JD0E/VIDE0S”和“/JD0E/VIDE0S/JD2012”有可能具有FIB匹配,而前綴“/JD0E”與“/JD0E/VIDE0S/JD2012/vid.avi”沒(méi)有匹配。所述分散式布隆濾波器模塊532可隨后在步驟1020中,結(jié)合每一個(gè)“k”比特字段以生成單個(gè)的主比特字段。例如,所述分散式布隆濾波器模塊532可以產(chǎn)生所有“k”比特字段的“與”邏輯。所述主比特字段可在步驟1025中被所述分散式布隆濾波器模塊532使用以識(shí)別可能的最長(zhǎng)前綴匹配的長(zhǎng)度“m”。例如,第