国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)包模式匹配的方法和裝置的制作方法

      文檔序號(hào):6477292閱讀:251來(lái)源:國(guó)知局
      專(zhuān)利名稱(chēng):數(shù)據(jù)包模式匹配的方法和裝置的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及模式匹配操作,特別涉及一種利用模式匹配器篩選數(shù)據(jù)包流的可疑內(nèi)容的網(wǎng)絡(luò)安全系統(tǒng)。
      背景技術(shù)
      隨著企業(yè)越來(lái)越多地使用互聯(lián)網(wǎng)管理業(yè)務(wù),互聯(lián)網(wǎng)也正在擴(kuò)大,通過(guò)互聯(lián)網(wǎng)傳送和訪(fǎng)問(wèn)大量的機(jī)密及敏感的信息。與私人的不同,近幾十年企業(yè)為管理業(yè)務(wù)而使用的專(zhuān)用通信網(wǎng)絡(luò)相對(duì)沒(méi)有遭受外部入侵者的危害,而由于與企業(yè)連接的互聯(lián)網(wǎng)和網(wǎng)絡(luò)具有開(kāi)放性且容易訪(fǎng)問(wèn),所以它們?nèi)菀资艿桨踩{和惡意竊聽(tīng)。近來(lái),試圖破壞網(wǎng)絡(luò)安全或黑客攻擊愈加頻繁,企圖訪(fǎng)問(wèn)該機(jī)密信息或干擾網(wǎng)絡(luò)通信。
      網(wǎng)絡(luò)功擊變得不但更普遍而且更復(fù)雜和嚴(yán)重,這一部分是由于有關(guān)如何進(jìn)行這些攻擊的工具和信息的可用性、黑客技術(shù)的提高、易受攻擊的網(wǎng)絡(luò)訪(fǎng)問(wèn)點(diǎn)數(shù)目的增加、以及通過(guò)互聯(lián)網(wǎng)訪(fǎng)問(wèn)或傳送的機(jī)密信息總量的增加。這些攻擊包括分布式拒絕服務(wù)攻擊,其中黑客利用大量的包或連接請(qǐng)求沖擊網(wǎng)站,從而控制該網(wǎng)站并阻止合法用戶(hù)訪(fǎng)問(wèn)網(wǎng)站。其他類(lèi)型的攻擊被設(shè)計(jì)成不但阻止訪(fǎng)問(wèn)網(wǎng)站,而且穿透其安全措施并允許黑客控制服務(wù)器、破壞該網(wǎng)站或竊取敏感信息。其他攻擊還包括惡意竊聽(tīng),其允許黑客盜用通過(guò)互聯(lián)網(wǎng)傳送的機(jī)密通信。如果機(jī)密信息落入壞人手中,就會(huì)引起對(duì)企業(yè)業(yè)務(wù)的破壞,或者至少破壞其名譽(yù)。由于拒絕服務(wù)攻擊還會(huì)導(dǎo)致大量的費(fèi)用和負(fù)面宣傳。在抵御所有這些類(lèi)型攻擊的嘗試中,企業(yè)已經(jīng)增加了它們的安全預(yù)算以解決有關(guān)提高的網(wǎng)絡(luò)易受攻擊性。
      入侵檢測(cè)系統(tǒng)通常用作一種網(wǎng)絡(luò)防護(hù)的方法。這種系統(tǒng)通常是被動(dòng)系統(tǒng),其用來(lái)監(jiān)測(cè)業(yè)務(wù)流,識(shí)別業(yè)務(wù)流中可疑、威脅或危險(xiǎn)的部分,然后當(dāng)檢測(cè)出這種業(yè)務(wù)流時(shí)發(fā)出警報(bào)或者報(bào)警。這種系統(tǒng)的問(wèn)題是它們的響應(yīng)能力僅限于報(bào)警。這就需要響應(yīng)檢測(cè)到的威脅或危險(xiǎn)而主動(dòng)管理包和業(yè)務(wù)流的能力。另一個(gè)問(wèn)題是這種系統(tǒng)非常慢,并且不具有有效并且高效監(jiān)測(cè)每秒G比特或更高范圍線(xiàn)路速率的包流的性能。
      為此在開(kāi)發(fā)入侵防護(hù)系統(tǒng)上已做出了努力。入侵防護(hù)系統(tǒng)作為一種主動(dòng)業(yè)務(wù)流監(jiān)測(cè)系統(tǒng)而設(shè)計(jì)。優(yōu)選地,這種系統(tǒng)相對(duì)于包數(shù)據(jù)流“內(nèi)嵌”布置,并且可以作為用于受保護(hù)網(wǎng)絡(luò)的基礎(chǔ)設(shè)施的一部分而存在。利用這種結(jié)構(gòu),系統(tǒng)必須在作為適用于網(wǎng)絡(luò)交換機(jī)或路由器的相同性能基準(zhǔn)下運(yùn)行。進(jìn)入系統(tǒng)的包必須被檢查,并且在幾毫秒窗口的時(shí)間內(nèi)被轉(zhuǎn)送或被阻止。
      眾所周知檢查包業(yè)務(wù)流的篩選操作費(fèi)時(shí),從而會(huì)延遲包業(yè)務(wù)流傳輸吞吐量。當(dāng)將被檢查的流量增加時(shí),這種延遲關(guān)系被放大,并且入侵檢測(cè)系統(tǒng)使包業(yè)務(wù)流通道存在潛在的瓶頸。由于使用更全面的(并且費(fèi)時(shí)的)篩選操作,會(huì)進(jìn)一步延遲用于處理包的吞吐量時(shí)間。
      內(nèi)嵌篩選處理可以采用模式匹配操作的形式。在這個(gè)操作中,將通過(guò)的包業(yè)務(wù)流與包含已知的可疑、威脅或危險(xiǎn)包業(yè)務(wù)流的已存儲(chǔ)模式的庫(kù)作比較。如果在篩選的包業(yè)務(wù)流與庫(kù)中模式條目之間發(fā)現(xiàn)匹配,則可以發(fā)出警報(bào),此外匹配包業(yè)務(wù)流可以在任何損害發(fā)生前捕獲。
      為了使這種模式匹配操作是有效的,很重要的是該操作不會(huì)過(guò)度影響包吞吐量。換句話(huà)說(shuō),模式匹配操作不能起瓶頸作用且不可限制包流。當(dāng)包流的速度隨著時(shí)間增加(例如,接近或大于每秒2.4G比特)時(shí),現(xiàn)存基于軟件的在先技術(shù)解決方案和現(xiàn)存基于硬件的在先技術(shù)解決方案(例如直接存儲(chǔ)器訪(fǎng)問(wèn)類(lèi)型匹配系統(tǒng))已經(jīng)不能通過(guò)不能接受地限制包流來(lái)滿(mǎn)足吞吐量的需要。由于這個(gè)原因(和其他關(guān)于所需存儲(chǔ)器的花費(fèi)和尺寸),這些在先技術(shù)模式匹配系統(tǒng)不再是滿(mǎn)意的解決方案。
      因此就需要一種更有效的方法進(jìn)行例如包篩選的各種應(yīng)用中使用的模式匹配。

      發(fā)明內(nèi)容
      本發(fā)明提供一種以非錨定方式支持高速(等于至少每秒2.4G比特線(xiàn)路速率的速度)并行模式匹配的模式匹配引擎。優(yōu)選地以硬件裝置實(shí)現(xiàn)該引擎。
      根據(jù)模式匹配引擎的一個(gè)實(shí)施例,移位寄存器順序接收數(shù)據(jù)流字節(jié)串。移位寄存器將數(shù)據(jù)流字節(jié)串分成多個(gè)多字節(jié)重疊相鄰流塊(或子串)。將被搜索的庫(kù)模式字節(jié)被分成存儲(chǔ)在查找表中的多字節(jié)重疊相鄰表塊。然后將多個(gè)多字節(jié)重疊相鄰流塊并行應(yīng)用到存儲(chǔ)表塊的查找表。然后邏輯組合并行查找操作的結(jié)果以判定數(shù)據(jù)流的一部分是否與字節(jié)模式中的一個(gè)匹配。
      也可以執(zhí)行辨別數(shù)據(jù)流的特征的預(yù)匹配操作。然后可使用數(shù)據(jù)流特征的結(jié)果以協(xié)助模式匹配器在考慮中減小庫(kù)模式的字段。
      附加預(yù)匹配操作可以重新組合數(shù)據(jù)流中無(wú)次序的包。從而使得模式匹配器可利用正確次序的包以提高匹配準(zhǔn)確性。
      另一附加預(yù)匹配操作還可解碼數(shù)據(jù)流的任何編碼部分,在這種方式中,僅需要以解碼格式提供庫(kù)模式。此外,在執(zhí)行與編碼和解碼數(shù)據(jù)流部分相關(guān)的模式匹配操作時(shí),可以編碼和解碼格式提供庫(kù)模式。
      多個(gè)查找表可被用來(lái)存儲(chǔ)用于待尋找的不同類(lèi)庫(kù)模式的重疊相鄰表字節(jié)塊。不同類(lèi)庫(kù)模式可以包括用于每個(gè)查找表的不同長(zhǎng)度的模式。不同類(lèi)庫(kù)模式還可以包括用于每個(gè)查找表的不同業(yè)務(wù)流類(lèi)別的模式。


      當(dāng)結(jié)合附圖參考下面的詳細(xì)描述時(shí),可獲得對(duì)本發(fā)明的方法和裝置更完整的理解,其中圖1是示出根據(jù)本發(fā)明實(shí)施例包業(yè)務(wù)流篩選的引擎的方框圖。
      圖2A和圖2B示出流模式如何載入移位寄存器并且被引擎處理的典型實(shí)施例。
      圖3A,圖3B和圖4示出圖2B所示的技術(shù)的典型實(shí)施。
      圖5是示出用于圖2B所示的引擎的邏輯組合器實(shí)施的方框圖。
      圖6A和圖6B示出使用圖2B所示技術(shù)的包業(yè)務(wù)流篩選引擎的優(yōu)選實(shí)施例。
      圖7示出由引擎利用以減小模式表存儲(chǔ)器需求的機(jī)構(gòu)。
      圖8至圖11是示出根據(jù)本發(fā)明其他實(shí)施例用于包業(yè)務(wù)流篩選的引擎的方框圖。
      圖12是本發(fā)明模式匹配引擎的優(yōu)選實(shí)施的硬件功能方框圖。
      具體實(shí)施例方式
      現(xiàn)在參考圖1,其中顯示了示出根據(jù)本發(fā)明實(shí)施例包業(yè)務(wù)流篩選的方法的方框圖。篩選引擎10(用在例如網(wǎng)絡(luò)保護(hù)、入侵防護(hù)、防火墻、防病毒內(nèi)容過(guò)濾等許多應(yīng)用中)執(zhí)行模式匹配處理技術(shù)。模式匹配器12相對(duì)于數(shù)據(jù)包流14“內(nèi)嵌(in-line)”布置,從而接收數(shù)據(jù)包流14。該數(shù)據(jù)包流例如可以是具有線(xiàn)路速率等于且超過(guò)每秒2.4G比特的數(shù)據(jù)包流。模式匹配器12包括多單元16串聯(lián)移位寄存器18,用于順序處理接收的數(shù)據(jù)包流14。一旦寄存器18的每個(gè)單元16載有一個(gè)字節(jié)的數(shù)據(jù)包流(組成數(shù)據(jù)串的載入字節(jié)包括全部或一部分將被評(píng)估的“流模式”19),模式匹配器12就將寄存器內(nèi)的多個(gè)字節(jié)的數(shù)據(jù)串分為多個(gè)重疊字節(jié)塊20(“流模式字節(jié)塊”)。在本發(fā)明的優(yōu)選實(shí)施例中,載入寄存器18的多個(gè)字節(jié)的流14只包括所含流包的有效載荷部分。也支持全部數(shù)據(jù)流(和其中的多個(gè)流,如將描述的)的檢查。然后在指定時(shí)鐘周期以并行格式22將多個(gè)重疊流模式字節(jié)塊20中的每一個(gè)輸出。
      篩選引擎10還包括模式表24,其用于存儲(chǔ)(在包業(yè)務(wù)流中)已經(jīng)預(yù)先被識(shí)別為可疑、威脅或危險(xiǎn)的字節(jié)模式的有關(guān)信息(“表模式”25,也被稱(chēng)為庫(kù)模式)。為了使檢查數(shù)據(jù)包流是否存在這些表模式25的字節(jié)的篩選引擎10處理的等待時(shí)間最小化并使其速度最大化,表模式相似地被分為重疊字節(jié)塊26(“表模式字節(jié)塊”)并以查找表類(lèi)型格式被存儲(chǔ)在模式表24中。
      然后將在指定時(shí)鐘周期輸出的重疊流模式字節(jié)塊20以并行格式22應(yīng)用到模式表24,在模式表24中對(duì)表模式字節(jié)塊26執(zhí)行相應(yīng)的多個(gè)并行查找。優(yōu)選以這種方式執(zhí)行該查尋操作將流模式字節(jié)塊20視為被應(yīng)用到作為可尋址存儲(chǔ)器執(zhí)行的模式表的一些地址。如果存儲(chǔ)器具有一個(gè)與流模式字節(jié)塊20對(duì)應(yīng)的有效地址(也就是,一個(gè)表模式字節(jié)塊26),則發(fā)現(xiàn)該地址匹配。每個(gè)比較(地址)查找的結(jié)果都是從模式表24輸出的返回(也稱(chēng)為結(jié)果)28。如果指定的流模式字節(jié)塊20與模式表24中發(fā)現(xiàn)的已存儲(chǔ)表模式字節(jié)塊26中的一個(gè)匹配,則查找操作返回28有關(guān)該比較的第一邏輯狀態(tài)(例如,真或邏輯1),否則返回28第二邏輯狀態(tài)(例如,假或邏輯0)。由于在每個(gè)時(shí)鐘周期中并行進(jìn)行多個(gè)這種匹配查找操作,因此對(duì)應(yīng)的多個(gè)返回28提供到模式匹配器12。然后模式匹配器12對(duì)來(lái)自模式表24查找操作的返回28邏輯組合(例如,邏輯地AND和/或邏輯地OR)來(lái)確定是否在檢查中的流模式19(在接收的數(shù)據(jù)包流14之中)中發(fā)現(xiàn)表模式25(也就是,預(yù)先被識(shí)別為可疑、威脅或危險(xiǎn)的字節(jié)模式)匹配。在這個(gè)情況中,模式匹配器12假設(shè)(該假設(shè)不是完全地正確,下面將被描述),如果在模式表24中發(fā)現(xiàn)每個(gè)單獨(dú)的流模式字節(jié)塊20(也就是說(shuō),與表模式字節(jié)塊26匹配),則流模式19自身也與表模式25中的一個(gè)匹配。
      響應(yīng)來(lái)自每個(gè)流塊(有關(guān)串流模式19)與有關(guān)模式表24中存儲(chǔ)的表模式25的表塊之間的主動(dòng)匹配的邏輯組合器30的指示32,模式匹配器12決定應(yīng)當(dāng)如何處理一般而言的接收的數(shù)據(jù)包流14,特別是其中在檢查之中的流模式19(或串)。例如,主動(dòng)匹配可以觸發(fā)發(fā)出報(bào)警或者警報(bào)34?;蛘撸蛇m當(dāng)包過(guò)濾功能組件36在模式匹配器12中可捕獲或阻止接收的數(shù)據(jù)包流14、在其中的匹配流模式19(或串)、和/或其他關(guān)聯(lián)的數(shù)據(jù)包或流或串。再進(jìn)一步說(shuō),由模式匹配器12發(fā)出的報(bào)警或警報(bào)34可以觸發(fā)單個(gè)元件或功能組件,例如,防火墻(未示出),以在引擎10的下游位置捕獲或阻止接收的數(shù)據(jù)包流14、在其中的匹配流模式19(或串)、和/或其他關(guān)聯(lián)的數(shù)據(jù)包或流或串。到目前為止的另一選擇,可以從數(shù)據(jù)流中分離接收的數(shù)據(jù)包流14、在其中的匹配流模式19(或串)、和/或其他關(guān)聯(lián)的數(shù)據(jù)包或流或串并將它們傳遞以由第二處理(篩選)層進(jìn)行更深入的檢查。
      現(xiàn)在來(lái)參考圖2A和2B,它們說(shuō)明了流模式/串(例如,流包的有效載荷部分)如何被載入移位寄存器18并由圖1的系統(tǒng)所處理的兩個(gè)實(shí)施例。假設(shè)數(shù)據(jù)包流14的格式為X0,X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,...,Xn-1,Xn,...
      進(jìn)一步假設(shè)表模式25的長(zhǎng)度為P個(gè)字節(jié)。再進(jìn)一步假設(shè)字節(jié)重疊為兩個(gè),從而每個(gè)表模式25將產(chǎn)生P-1個(gè)存儲(chǔ)在模式表24中的關(guān)聯(lián)表模式字節(jié)塊26。移位寄存器18包括N個(gè)單元16。在這個(gè)結(jié)構(gòu)中,在移位寄存器18之內(nèi)N=P個(gè)單元16(雖然,如這里所述,但是并不需要N=P,并且事實(shí)上當(dāng)P≠N時(shí)會(huì)產(chǎn)生某些優(yōu)點(diǎn))。
      對(duì)于圖2A中所示的實(shí)施例,X個(gè)字節(jié)的數(shù)據(jù)包流14一次一個(gè)字節(jié)地順序移入寄存器18。換句話(huà)說(shuō),隨著每個(gè)時(shí)鐘周期,一個(gè)新的字節(jié)移入寄存器18并且一個(gè)舊的字節(jié)從寄存器中移出。隨著每個(gè)時(shí)鐘周期,模式匹配器12還產(chǎn)生P-1個(gè)重疊流模式字節(jié)塊20,它們代表在檢查之中的當(dāng)前寄存器18中的流模式(或串)。
      為了說(shuō)明這點(diǎn),設(shè)定圖2A中特定時(shí)鐘周期T1,其中移位寄存器18的N=P個(gè)單元16載有下面的字節(jié)(串)X0,X1,X2,X3,X4,X5在時(shí)鐘周期T1期間,模式匹配器12將多個(gè)字節(jié)的串劃分(或分割)成P-1個(gè)重疊流模式字節(jié)塊20,如下(X0,X1),(X1,X2),(X2,X3),(X3,X4),(X4,X5)然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24,以用于與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。如果在模式表24中發(fā)現(xiàn)每個(gè)流模式字節(jié)塊20,則將返回28有關(guān)每個(gè)塊的第一邏輯狀態(tài),并且邏輯器30將產(chǎn)生有關(guān)在檢查之中的流模式19的主動(dòng)匹配的指示32。優(yōu)選在與查找的同一時(shí)鐘周期期間發(fā)出這個(gè)指示32,并且如果希望的話(huà)也可以在隨后的時(shí)鐘周期中發(fā)出。如果任何一個(gè)或多個(gè)的查找L未發(fā)現(xiàn)匹配,則將返回28一個(gè)或多個(gè)對(duì)應(yīng)的第二邏輯狀態(tài),并且邏輯器30將產(chǎn)生有關(guān)在檢查之中的流模式19的未匹配指示32。
      下面,假設(shè)前進(jìn)一個(gè)時(shí)間到下一時(shí)鐘周期T2。隨著這個(gè)前進(jìn),寄存器18中最舊的字節(jié)被移出,并且移入數(shù)據(jù)包流14中的下一個(gè)字節(jié)。在這個(gè)時(shí)間點(diǎn)上,移位寄存器18的N個(gè)單元16載有字節(jié)(串)X1,X2,X3,X4,X5,X6在時(shí)鐘周期T2期間,模式匹配器12將多個(gè)字節(jié)的串劃分(或分割)成P-1個(gè)重疊流模式字節(jié)塊20,如下(X1,X2),(X2,X3),(X3,X4),(X4,X5),(X5,X6)然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24,以用于與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。如果在模式表24中發(fā)現(xiàn)每個(gè)流模式字節(jié)塊20,則將返回有關(guān)每個(gè)塊的第一邏輯狀態(tài),并且邏輯器30將產(chǎn)生有關(guān)在檢查之中的流模式19的主動(dòng)匹配的指示32。相反,如果任何一個(gè)或多個(gè)查找L未發(fā)現(xiàn)匹配,則將返回28一個(gè)或多個(gè)對(duì)應(yīng)的第二邏輯狀態(tài),并且邏輯器30將產(chǎn)生有關(guān)在檢查之中的流模式19的未匹配指示32。
      當(dāng)在每個(gè)時(shí)鐘周期這種單個(gè)字節(jié)移位執(zhí)行運(yùn)轉(zhuǎn)良好時(shí),考慮可以如圖2B中所示執(zhí)行更有效的處理。不是將X個(gè)字節(jié)的數(shù)據(jù)包流14一次一個(gè)字節(jié)地順序移入寄存器18,而是優(yōu)選地一次移位N-1個(gè)字節(jié)(也稱(chēng)為一次移位多個(gè)字節(jié)的塊)。換句話(huà)說(shuō),隨著每個(gè)時(shí)鐘周期,N-1個(gè)字節(jié)的舊塊移出寄存器的同時(shí),N-1個(gè)字節(jié)的新塊移入寄存器18。以與上述同樣的方式,隨著每個(gè)時(shí)鐘周期,模式匹配器12還產(chǎn)生P-1個(gè)重疊流模式字節(jié)塊20。然而,由于每個(gè)時(shí)鐘周期的N-1個(gè)字節(jié)的塊移位和重疊的塊,邏輯器30不僅必須考慮當(dāng)前時(shí)鐘周期的對(duì)應(yīng)的P-1個(gè)返回28,而且還要考慮以前時(shí)鐘周期的一個(gè)或多個(gè)返回28,以進(jìn)行匹配判定。為了協(xié)助該操作,模式匹配器12包括一歷史存儲(chǔ)器38,其臨時(shí)保存以前時(shí)鐘周期的返回28以用于作為當(dāng)前時(shí)鐘周期期間的返回28’。然后,邏輯組合被選擇的一個(gè)返回28與被選擇的一個(gè)返回28’,以進(jìn)行有關(guān)該時(shí)鐘周期的匹配判定。為了說(shuō)明該塊移位,該時(shí)鐘周期匹配判定實(shí)際上是在不同移位位置上進(jìn)行的多個(gè)單獨(dú)匹配判定的組合結(jié)果。這里將更詳細(xì)地解釋這個(gè)概念。
      為了說(shuō)明該塊移位操作,考慮圖2B中某個(gè)時(shí)鐘周期T1,其中移位寄存器18的N=P個(gè)單元16載有下面的字節(jié)(串)X5,X6,X7,X8,X9,X10在時(shí)鐘周期T1期間,模式匹配器12將多個(gè)字節(jié)的串劃分(或分割)成P-1個(gè)重疊流模式字節(jié)塊20,如下(X5,X6),(X6,X7),(X7,X8),(X8,X9),(X9,X10)然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24,以用于與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。如果在模式表24中發(fā)現(xiàn)每個(gè)流模式字節(jié)塊20,則將返回28有關(guān)每個(gè)塊的第一邏輯狀態(tài)。
      然而,必須記住,由于在前一時(shí)鐘周期T0期間的塊移位,移位寄存器18的N個(gè)單元16載有下面的流模式X0,X1,X2,X3,X4,X5因此只有字節(jié)X5在相鄰時(shí)鐘周期中執(zhí)行的匹配操作之間被共享。由于P個(gè)字節(jié)表模式、兩個(gè)字節(jié)重疊和N-1個(gè)字節(jié)塊移位,所以邏輯組合器30需要訪(fǎng)問(wèn)有關(guān)下面重疊流模式字節(jié)塊20的來(lái)自時(shí)鐘周期T0的返回28(X2,X3),(X3,X4),(X4,X5)以在每個(gè)移位位置上進(jìn)行必需的匹配判定。因此從時(shí)鐘周期T0就在歷史存儲(chǔ)器38中保存這些返回28,然后在時(shí)鐘周期T1中作為再用的返回28’與當(dāng)前組返回28一起被提供。
      在這個(gè)執(zhí)行中選擇性地使用返回28和28’以進(jìn)行匹配判定。由于N-1個(gè)字節(jié)移位,邏輯組合器30必須查找跨越多個(gè)字節(jié)移位的多個(gè)位置上的模式匹配。因此,對(duì)于每個(gè)位置,邏輯器30檢驗(yàn)是否在模式表24中發(fā)現(xiàn)那個(gè)移位位置發(fā)出的流模式字節(jié)塊20(如僅與當(dāng)前時(shí)鐘周期返回28的某幾個(gè)以及前一時(shí)鐘周期的歷史返回28’的某幾個(gè)有關(guān)的相鄰第一邏輯狀態(tài)所指示)。如果那些相鄰返回28和28’為真,則邏輯器30將發(fā)現(xiàn)在那個(gè)移位位置上的匹配,并在該時(shí)鐘周期產(chǎn)生有關(guān)在檢查之中的流模式19的主動(dòng)匹配的指示32。優(yōu)選在與查找的同一時(shí)鐘周期期間發(fā)出該指示32,但是如果需要的話(huà)也可以在隨后的時(shí)鐘周期中發(fā)出。如果肯定在當(dāng)前時(shí)鐘周期移位位置上沒(méi)有匹配判定(例如,由于每個(gè)移位位置上的一個(gè)或多個(gè)相干返回28/28’具有第二邏輯狀態(tài)),則邏輯器30將產(chǎn)生與在檢查之中的流模式19有關(guān)的未匹配指示32。
      為了協(xié)助在下一時(shí)鐘周期(T2)期間的檢查,用于下面的重疊流模式字節(jié)塊20的當(dāng)前時(shí)鐘周期返回28被保存在歷史存儲(chǔ)器38中(X7,X8),(X8,X9),(X9,X10)為了進(jìn)行匹配判定,上述選擇使用的返回28和28’可以參考圖5獲得更好的理解,其中示出用于圖2B中所示技術(shù)的邏輯組合器30的典型實(shí)施的方框圖。這個(gè)電路設(shè)計(jì)假定真返回28/28’為邏輯1,并且已經(jīng)明確設(shè)計(jì)用于圖2B的執(zhí)行。然而,圖5中邏輯器30的一般系統(tǒng)結(jié)構(gòu)可應(yīng)用到圖2B類(lèi)型塊移位解決方案的任何實(shí)施中。
      設(shè)置多個(gè)AND門(mén)31以邏輯AND所選擇的相鄰幾個(gè)查找表返回28/28’。特別地,包括N-1個(gè)AND門(mén)31,考慮跨越塊移位的全部字節(jié)(也就是,不但考慮當(dāng)前串的多個(gè)字節(jié),而且考慮過(guò)去串的多個(gè)字節(jié)),在對(duì)應(yīng)的N-1個(gè)移位位置上進(jìn)行匹配判定。因此,第一個(gè)AND門(mén)31(1)考慮與圖2B(時(shí)間T1)中字節(jié)X6-X10的移位位置上發(fā)現(xiàn)模式匹配有關(guān)的四個(gè)相鄰返回28(如所需的五個(gè)字節(jié)模式匹配)。然后進(jìn)行一個(gè)字節(jié)移位,并且第二AND門(mén)31(2)考慮與圖2B中字節(jié)X5-X9的移位位置上發(fā)現(xiàn)模式匹配有關(guān)的四個(gè)相鄰返回28。現(xiàn)在移動(dòng)例如進(jìn)行兩個(gè)字節(jié)移位,第四AND門(mén)31(4)考慮與圖2B中字節(jié)X3-X6的移位位置上發(fā)現(xiàn)模式匹配有關(guān)的四個(gè)相鄰返回28/28’。因而可以注意到,隨著考慮與N-1個(gè)移位位置有關(guān)的P-1個(gè)相鄰返回28/28’的每個(gè)比較,通過(guò)邏輯器30執(zhí)行N-1個(gè)單獨(dú)匹配比較。OR門(mén)33邏輯組合N-1個(gè)AND操作的結(jié)果,產(chǎn)生指示32。從而,如果執(zhí)行匹配比較的那些AND門(mén)中的任一個(gè)是成功的(也就是,輸入到AND門(mén)的全部相干相鄰的返回28/28’是邏輯1),則OR門(mén)產(chǎn)生真的匹配結(jié)果指示32。
      很重要的是從圖5的典型組合器30中認(rèn)識(shí)到每個(gè)AND門(mén)執(zhí)行單獨(dú)的匹配查找檢驗(yàn)(與執(zhí)行塊移位中的特定移位位置有關(guān)),并且如果任一AND門(mén)發(fā)現(xiàn)匹配,OR門(mén)便產(chǎn)生“真”的匹配結(jié)果指示32。采用另一種方法,(當(dāng)施加到AND門(mén)的全部適當(dāng)返回28/28’是真時(shí))并行操作,每個(gè)AND門(mén)檢驗(yàn)與數(shù)據(jù)流中不同移位位置有關(guān)(也就是,關(guān)于不同的流模式)的匹配,并且如果任何檢驗(yàn)的流模式的P-1個(gè)相鄰流塊與存儲(chǔ)的表塊匹配,則在當(dāng)前時(shí)鐘周期輸出真匹配結(jié)果指示32。
      現(xiàn)在,假設(shè)前進(jìn)一個(gè)時(shí)間到下一時(shí)鐘周期T2。隨著該前進(jìn),寄存器18中的N-1個(gè)最舊的字節(jié)移出,并且數(shù)據(jù)包流14中的N-1個(gè)隨后的字節(jié)塊移入。在這個(gè)時(shí)間點(diǎn)上,移位寄存器18的N個(gè)單元16載有字節(jié)(串)X10,X11,X12,X13,X14,X15在時(shí)鐘周期T2期間,模式匹配器12將多個(gè)字節(jié)的串劃分(或分割)成P-1個(gè)重疊流模式字節(jié)塊20,如下(X10,X11),(X11,X12),(X12,X13),(X13,X14),(X14,X15)然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24以便應(yīng)用,從而與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。再次如通過(guò)圖5的典型實(shí)例所述,選擇性地使用返回28和28’以進(jìn)行匹配判定。邏輯組合器30通過(guò)對(duì)每個(gè)位置檢驗(yàn)是否在模式表24中發(fā)現(xiàn)那個(gè)移位位置發(fā)出的流模式字節(jié)塊20,來(lái)查找跨越多個(gè)字節(jié)塊移位的多個(gè)移位位置上的模式匹配。如果關(guān)于任一移位位置存在與當(dāng)前時(shí)鐘周期返回28和/或來(lái)自前一時(shí)鐘周期的歷史返回28’中相干的、相鄰的幾個(gè)有關(guān)的第一邏輯狀態(tài),則在該時(shí)鐘周期產(chǎn)生匹配指示32。相反,如果有關(guān)每個(gè)移位位置匹配比較的返回28或28’是第二邏輯狀態(tài),則邏輯器30將產(chǎn)生有關(guān)在檢查之中的流模式19的未匹配指示32。
      再次,可理解的是用于下面重疊流模式字節(jié)塊20的當(dāng)前時(shí)鐘周期返回28將被保存在歷史存儲(chǔ)器38中,以協(xié)助下一時(shí)鐘周期(T2)期間的檢查(X12,X13),(X13,X14),(X14,X15)然后反復(fù)重復(fù)上述處理以繼續(xù)流14的檢查和篩選。
      當(dāng)然,可理解的是具有N=P=6的上述方案、兩個(gè)字節(jié)重疊以及N-1個(gè)字節(jié)的塊移位實(shí)質(zhì)上是典型的。用戶(hù)能夠選擇模式大小、字節(jié)重疊、字節(jié)塊移位量以及模式查找的任何適當(dāng)組合,該組合是用戶(hù)所期望的并且適合正被檢查的數(shù)據(jù)包流的處理需求。圖3A說(shuō)明了具有P=8個(gè)字節(jié)表模式、N=9個(gè)單元16、兩個(gè)字節(jié)重疊和N-1個(gè)字節(jié)塊移位的圖2B類(lèi)型解決方案的操作。此外,圖3B說(shuō)明了具有P=5個(gè)字節(jié)表模式、N=9個(gè)單元16、兩個(gè)字節(jié)重疊和N-1個(gè)字節(jié)塊移位的圖2B類(lèi)型解決方案的操作。最后,作為另一個(gè)實(shí)例,圖4說(shuō)明了具有P=5個(gè)字節(jié)表模式、N=7個(gè)單元16、三個(gè)字節(jié)重疊和N-1個(gè)字節(jié)塊移位的圖2B類(lèi)型方案的操作。這里不再提供圖3A、圖3B和圖4的實(shí)例的詳細(xì)解釋?zhuān)嘈疟绢I(lǐng)域的技術(shù)人員利用圖2B類(lèi)型方案的知識(shí)并且參考在此提供的有關(guān)附圖2B的描述,將會(huì)明白在每種情況中的操作。進(jìn)一步提供圖3A、圖3B和圖4的實(shí)例,是為了說(shuō)明圖2B類(lèi)型解決方案在處理不同大小的字節(jié)模式、寄存器大小和重疊中的適應(yīng)性。借此,應(yīng)當(dāng)知道,該解決方案能夠適合特定處理和數(shù)據(jù)處理需求以及當(dāng)用戶(hù)設(shè)計(jì)并執(zhí)行一模式匹配系統(tǒng)時(shí)的限制。
      可以知道在同一包數(shù)據(jù)流中可以同時(shí)存在多個(gè)流,以使多個(gè)流的數(shù)據(jù)包相互交錯(cuò)。引擎10能夠同時(shí)處理多個(gè)流的篩選。為了完成此處理,引擎10記住傳輸多個(gè)流的包(也就是,屬于該流的每個(gè)包)狀態(tài)。除了存儲(chǔ)在隨后時(shí)鐘周期中使用的返回28之外,當(dāng)檢查中出現(xiàn)了屬于不同流的新包時(shí),歷史存儲(chǔ)器38記錄每個(gè)流的上下文,然后使得適當(dāng)上下文的歷史返回28為可用的。
      由圖2A或2B執(zhí)行的寄存器加載處理和相關(guān)查找處理說(shuō)明了本發(fā)明的重要特性。由于在每個(gè)時(shí)鐘周期匹配加載寄存器時(shí)使用的移位處理,以及為了查找流中不同位置上的匹配而由組合器30執(zhí)行的邏輯操作,正在執(zhí)行的模式匹配操作可被認(rèn)識(shí)(或辨別)為非錨定的。通過(guò)“非錨定的”,這就意味著模式匹配器能夠在流14之內(nèi)的任何所選擇的字節(jié)位置上查找感興趣的表模式。這就與“錨定的”搜索相對(duì)比,在錨定的搜索中用于發(fā)現(xiàn)匹配模式的查找被約束在流內(nèi)的特定位置(例如,在包頭、在某頭字段(如IP地址)、在有效載荷內(nèi)的特定位置,等等)。如本發(fā)明所支持的非錨定模式匹配相比錨定搜索提供了更加靈活的解決方案。該非錨定的特征是需要進(jìn)行模式匹配器操作以檢測(cè)作為包頭字段中不可識(shí)別模式的更高層的動(dòng)作。通過(guò)在指定時(shí)鐘周期內(nèi)在多個(gè)移位位置上的單獨(dú)檢查以及在指定時(shí)鐘周期內(nèi)在任何被檢查的位置上發(fā)現(xiàn)相鄰流塊的匹配時(shí)匹配指示32的產(chǎn)生,圖2B解決方案中的邏輯組合器30執(zhí)行的功能性進(jìn)一步強(qiáng)調(diào)了非錨定特性的處理。
      現(xiàn)在再一次參考圖5。盡管所示的組合邏輯器對(duì)于圖2的實(shí)施來(lái)說(shuō)是特定的,但是也并未提供有關(guān)對(duì)圖3A、圖3B和圖4的邏輯組合器30的詳述,相信本領(lǐng)域的技術(shù)人員能夠設(shè)計(jì)出邏輯組合返回28(和用于每個(gè)移位位置的28’,如果需要)和產(chǎn)生匹配結(jié)果指示32所需的邏輯電路。應(yīng)當(dāng)記住的是在每個(gè)可能的移位位置的塊移位執(zhí)行中必須進(jìn)行單獨(dú)匹配查找檢測(cè)。在任何那些移位位置的相干的、相鄰的返回28/28’的匹配表示該時(shí)鐘周期的匹配,并且必須產(chǎn)生匹配指示32。相反地,對(duì)于任一移位位置未匹配至少一個(gè)返回28/28’表示該時(shí)鐘周期沒(méi)有匹配,并且必須產(chǎn)生未匹配指示32。優(yōu)選地,這些單獨(dú)的匹配查找檢測(cè)并行執(zhí)行。這里不再提供對(duì)任一邏輯組合器30的組合邏輯執(zhí)行的進(jìn)一步詳述,并且相信,通過(guò)圖5所示的典型設(shè)計(jì),本領(lǐng)域的技術(shù)人員將能夠設(shè)計(jì)出實(shí)施圖2B類(lèi)型解決方案的任何期望的P、N、重疊、塊移位實(shí)施例所需的組合邏輯器。然而,應(yīng)當(dāng)注意的是,如果希望針對(duì)全部包(與單一流模式相反)進(jìn)行匹配判定分析,則在產(chǎn)生匹配結(jié)果指示32之前,由OR門(mén)執(zhí)行的邏輯OR操作可以重復(fù)多個(gè)時(shí)鐘周期,直到達(dá)到包的結(jié)尾(如圖5中所示的返回循環(huán))。
      圖5以典型方式進(jìn)一步說(shuō)明了當(dāng)前查找操作(也就是,當(dāng)前時(shí)鐘周期)的返回28是如何被保存到歷史存儲(chǔ)器38中,作為隨后使用的返回28’(在下一時(shí)鐘周期中)。適當(dāng)?shù)倪壿嬈骱?或延遲電路執(zhí)行以適當(dāng)加載歷史存儲(chǔ)器的單元也是在本領(lǐng)域的技術(shù)人員的能力范圍內(nèi)。
      下面參考6A和圖6B,其中示出圖2B類(lèi)型解決方案的優(yōu)選實(shí)施以高速處理模式匹配、網(wǎng)絡(luò)安全、安裝。在這個(gè)優(yōu)選實(shí)施中,關(guān)于數(shù)據(jù)包流14的檢查,支持9個(gè)單元16(N=9)移位寄存器18與P=12個(gè)字節(jié)表模式25的匹配。能夠以非常高的速度,例如,以線(xiàn)路速率等于且超過(guò)每秒2.4G比特的速度進(jìn)行該模式匹配器的操作。
      如上所述,數(shù)據(jù)包流14的字節(jié)X以一次N-1=8個(gè)字節(jié)地順序塊移入寄存器18。換句話(huà)說(shuō),隨著每個(gè)時(shí)鐘周期,在N-1=8個(gè)舊字節(jié)的塊從寄存器中移出的同時(shí),N-1=8個(gè)新字節(jié)的塊移入寄存器18。隨著每個(gè)時(shí)鐘周期,模式匹配器12還產(chǎn)生N-1=8個(gè)重疊流模式字節(jié)塊20。將要記住匹配P個(gè)字節(jié)模式需要有P-1個(gè)塊20。來(lái)自寄存器18的所需塊不僅限于在這個(gè)時(shí)鐘周期中供邏輯器30使用。然而,可以認(rèn)識(shí)到寄存器考慮對(duì)以前時(shí)鐘周期期間中失去的塊20的匹配,而且可以認(rèn)識(shí)到這些查找返回28能夠被保存并被再次使用。因而,邏輯器30不但考慮當(dāng)前時(shí)鐘周期的對(duì)應(yīng)N=8個(gè)返回28,而且考慮來(lái)自?xún)蓚€(gè)以前時(shí)鐘周期(如果需要)的返回28。為了協(xié)助這個(gè)操作,并且考慮到需要匹配跨越N-1=8個(gè)字節(jié)移位的多個(gè)位置,模式匹配器12利用十個(gè)單元?dú)v史存儲(chǔ)器38來(lái)臨時(shí)保存來(lái)自?xún)蓚€(gè)以前時(shí)鐘周期的所需返回28以用作當(dāng)前時(shí)鐘周期期間的返回28’。每個(gè)移位位置的相鄰返回28/28’的選擇使用允許邏輯組合器30有權(quán)使用相鄰P-1塊查找和跨越塊移位的對(duì)應(yīng)返回,這些對(duì)于在每個(gè)移位位置上獨(dú)立進(jìn)行匹配判定并產(chǎn)生匹配指示32或時(shí)鐘周期很重要。
      為了說(shuō)明,假定圖6A中某時(shí)鐘周期T1,其中移位寄存器18的N=9個(gè)單元16載有字節(jié)(串)X8,X9,X10,X11,X12,X13,X14,X15,X16在時(shí)鐘周期T1期間,模式匹配器12將串的多個(gè)字節(jié)劃分(分割)成N-1=8個(gè)重疊流模式字節(jié)塊20,如下(X8,X9),(X9,X10),(X10,X11),(X11,X12),(X12,X13),(X13,X14),(X14,X15),(X15,X16)然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24以便應(yīng)用,從而與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。如果在模式表24中發(fā)現(xiàn)每個(gè)流模式字節(jié)塊20,則將返回28有關(guān)每個(gè)塊的第一邏輯狀態(tài)。
      然而,必須記住以前時(shí)鐘周期T0期間中,移位寄存器18的N=9個(gè)單元16載有下面流模式X0,X1,X2,X3,X4,X5,X6,X7,X8因而只有字節(jié)X8在相鄰時(shí)鐘周期中執(zhí)行的匹配操作之間被共享。此外,在以前時(shí)鐘周期T-1期間,移位寄存器18的N=9個(gè)單元16載有下面流模式(串)X8,X7,X6,X5,X4,X3,X2,X1,X0由于兩個(gè)字節(jié)重疊、將被匹配的P=12個(gè)字節(jié)表模式、以及N-1=8個(gè)字節(jié)塊移位,邏輯組合器30需要有權(quán)使用有關(guān)下面重疊流模式字節(jié)塊20的來(lái)自以前時(shí)鐘周期T0的返回28(X0,X1),(X1,X2),(X2,X3),(X3,X4),(X4,X5),(X5,X6),(X6,X7),(X7,X8)以及有關(guān)下面重疊流模式字節(jié)塊20的來(lái)自以前時(shí)鐘周期T-1的返回28(X2,X1),(X1,X0)因此在歷史存儲(chǔ)器38中保存了從時(shí)鐘周期T-1和T0的這些返回28,然后在時(shí)鐘周期T1中作為再用的28’與當(dāng)前組返回28(整個(gè)P-1個(gè)塊查找返回)一起被提供。然后獨(dú)立地基于每個(gè)移位位置,由邏輯器30處理當(dāng)前時(shí)鐘周期返回28和/或來(lái)自以前時(shí)鐘周期的歷史返回28’中所選擇的、相鄰的幾個(gè),以確定是否產(chǎn)生匹配指示32。上面提供了這個(gè)選擇使用處理的說(shuō)明性討論以及典型實(shí)施。圖6A和6B中邏輯器30的執(zhí)行比圖5所示的執(zhí)行更加復(fù)雜,盡管如此,其還是采用了相同的理論原理,使用相似的結(jié)構(gòu)模式,因而也在本領(lǐng)域的技術(shù)人員的設(shè)計(jì)能力范圍之內(nèi)。
      為了協(xié)助下面的處理,在歷史存儲(chǔ)器28中保存當(dāng)前時(shí)鐘周期T1的下面重疊流模式字節(jié)塊20的返回28(X8,X9),(X9,X10),(X10,X11),(X11,X12),(X12,X13),(X13,X14),(X14,X15),(X15,X16)加上前一時(shí)鐘周期T0的下面重疊流模式字節(jié)塊20的返回28(X6,X7),(X7,X8)以在下一時(shí)鐘周期中隨后使用(提供所需補(bǔ)充返回以達(dá)到跨越塊移位的所需P-1個(gè)返回)。
      下面,參考圖6B,假設(shè)前進(jìn)一個(gè)時(shí)間到達(dá)下一個(gè)時(shí)鐘周期T2。隨著這個(gè)時(shí)間前進(jìn),寄存器18中N-1=8個(gè)最舊的字節(jié)移出,并且數(shù)據(jù)包流14的N-1=8個(gè)隨后的字節(jié)移入。在這個(gè)時(shí)間點(diǎn)上,移位寄存器18的N=9個(gè)單元16載有下面的字節(jié)(串)X16,X17,X18,X19,X20,X21,X22,X23,X24在時(shí)鐘周期T2期間,模式匹配器12將多字節(jié)的串劃分成N-1=8個(gè)的重疊流模式字節(jié)塊20,如下
      (X16,X17),(X17,X18),(X18,X19),(X19,X20),(X20,X21),(X21,X22),(X22,X23),(X23,X24)然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24以便應(yīng)用,從而與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。然后,由邏輯器使用所選擇的一個(gè)返回28和一個(gè)返回28’以檢查每個(gè)移位位置的獨(dú)立模式匹配,在任一移位位置上有匹配,便導(dǎo)致在該時(shí)鐘周期中匹配指示32的產(chǎn)生。
      然后,能夠理解的是時(shí)鐘周期(T2)和(T1)的所需返回28將被保存在歷史存儲(chǔ)器38中以協(xié)助在下一時(shí)鐘周期(T3)期間中的檢查。然后反復(fù)重復(fù)上述處理以繼續(xù)流14的檢查和篩選。
      先前說(shuō)明是對(duì)模式匹配器12進(jìn)行的假設(shè),如果在模式表24中發(fā)現(xiàn)每個(gè)可應(yīng)用的流模式字節(jié)塊20(當(dāng)前和或許以前的)(也就是,匹配表模式字節(jié)塊26),那么在檢查之中的流模式19便匹配表模式25中的一個(gè)。然而這個(gè)假設(shè)并不完全準(zhǔn)確。參考實(shí)例可能有助于更好地理解本發(fā)明執(zhí)行的字節(jié)塊匹配處理的限制。
      首先設(shè)想一個(gè)方案,其中表模式25如下ABBCDCDABDDEABC因此用于這三個(gè)表模式(模式表24中存儲(chǔ)的)的兩個(gè)字節(jié)重疊表模式字節(jié)塊26為AB,BB,BC,CDCD,DA,AB,BDDE,EA,AB,BC現(xiàn)在假設(shè)在檢查之中的流模式19為ABECD這個(gè)模式產(chǎn)生下面流模式字節(jié)塊20AB,BE,EC,CD以并行應(yīng)用22到模式表24。然后該表查找操作將產(chǎn)生下面的返回28真,假,假,真其中,當(dāng)邏輯組合時(shí),將正確地產(chǎn)生“未匹配”指示32(由于ABECD不是表模式25中ABBCD、CDABD或DEABC中的一個(gè))。
      然而,現(xiàn)在假設(shè)具有流模式19的相同表模式25ABCDE模式產(chǎn)生下面的流模式字節(jié)塊20AB,BC,CD,DE以并行應(yīng)用22到模式表24。然后表查找操作將產(chǎn)生下面的返回28真,真,真,真其中,當(dāng)邏輯組合時(shí),將錯(cuò)誤地產(chǎn)生“匹配”指示32(注意ABCDE不是表模式25中ABBCD、CDABD或DEABC中的一個(gè))。
      因此引擎10完全能夠產(chǎn)生“錯(cuò)誤肯定”結(jié)果。然后便出現(xiàn)用戶(hù)是否關(guān)心的問(wèn)題。在一些情況中,由于產(chǎn)生的報(bào)警或警報(bào)34和/或捕獲或阻止操作可以觸發(fā)進(jìn)一步執(zhí)行以更仔細(xì)地檢查已經(jīng)標(biāo)記的包業(yè)務(wù)流,所以錯(cuò)誤肯定的存在可能不被用戶(hù)關(guān)心。例如,利用引擎10可執(zhí)行多等級(jí)篩選操作,其包括第一(或較低)等級(jí)篩選,其中匹配包業(yè)務(wù)流的標(biāo)記部分;以及為了更加詳細(xì)檢查的第二(或較高)等級(jí)篩選,其中進(jìn)行了附加的管理以區(qū)別正確肯定和錯(cuò)誤肯定。這種可以使用引擎10的多等級(jí)篩選系統(tǒng)的實(shí)例描述在申請(qǐng)?zhí)枮?0/217,862的美國(guó)專(zhuān)利申請(qǐng)中,該申請(qǐng)為2002年8月12日申請(qǐng)的共同未決、共同轉(zhuǎn)讓的申請(qǐng),在此通過(guò)參考的方式援引其公開(kāi)內(nèi)容。
      如果希望有關(guān)引擎10的操作的更高準(zhǔn)確性,可以將表模式25指定為多個(gè)“類(lèi)”的多種模式。在上下文中,“類(lèi)”是指以有助于減小錯(cuò)誤肯定匹配情況的方式的表模式25的智能分組。通過(guò)再次參考上述“錯(cuò)誤肯定”產(chǎn)生實(shí)例可以更好的理解這些概念。
      再次參考下面表模式25ABBCD(1)CDABD(1)DEABC(2)附加說(shuō)明(x)表示表模式已被指定(分組)為兩個(gè)單獨(dú)的類(lèi)。因此用于這三個(gè)表模式(如模式表24中存儲(chǔ)的)兩個(gè)字節(jié)重疊表模式字節(jié)塊26為AB,BB,BC,CD(1)
      CD,DA,AB,BD(1)DE,EA,AB,BC(2)這里附加說(shuō)明(x)表示每個(gè)字節(jié)塊已被指定的類(lèi)?,F(xiàn)在假設(shè)在檢查之中的流模式19為ABCDE這個(gè)模式產(chǎn)生下面流模式字節(jié)塊20AB,BC,CD,DE以并行應(yīng)用22到模式表24。但是在這種情況下,查找操作被分類(lèi)。借此,意味著流模式字節(jié)塊20要與分離的類(lèi)(1)的表模式字節(jié)塊26匹配并且與分離的類(lèi)(2)的表模式字節(jié)塊26匹配。關(guān)于類(lèi)(1)的匹配操作,表查找操作將產(chǎn)生下面的返回28真,真,真,假其中,當(dāng)邏輯組合時(shí),將正確地產(chǎn)生“未匹配”指示32(注意ABCDE不是類(lèi)(1)中表模式25的ABBCD或CDABD中的一個(gè))。關(guān)于類(lèi)(2)的匹配操作,表查找操作將產(chǎn)生下面返回28真,真,假,真其中,當(dāng)邏輯組合時(shí),也將正確地產(chǎn)生“未匹配”指示32(注意ABCDE不是類(lèi)(2)中表模式25的DEABC中的一個(gè))。以這種方法,由于在兩類(lèi)中發(fā)現(xiàn)“未匹配”,所以引擎正確地發(fā)現(xiàn)全部的“未匹配”并處理“錯(cuò)誤肯定”問(wèn)題。
      通過(guò)在模式表24內(nèi)包括多個(gè)存儲(chǔ)器100可以在引擎10中執(zhí)行模式的分類(lèi),從而每個(gè)存儲(chǔ)器與不同的類(lèi)相關(guān)聯(lián),且每個(gè)存儲(chǔ)器只包括指定給它自己關(guān)聯(lián)的類(lèi)的表模式的表模式字節(jié)塊26。圖1中示出模式表的分類(lèi),其中包括用于兩個(gè)相應(yīng)類(lèi)的兩個(gè)存儲(chǔ)器100(指定“(1)”和“(2)”)。然而,應(yīng)當(dāng)理解可以將類(lèi)的任何選擇數(shù)目指定到引擎10中。本發(fā)明的優(yōu)選實(shí)施例利用至少四個(gè)不同的類(lèi)。盡管其他附圖中并未特別地說(shuō)明,但是應(yīng)當(dāng)進(jìn)一步理解,為了處理類(lèi)問(wèn)題并且協(xié)助錯(cuò)誤肯定指示32的決定,每個(gè)模式表24可以類(lèi)似地包括一個(gè)或多個(gè)存儲(chǔ)器100。
      然而,模式存儲(chǔ)器24中多個(gè)類(lèi)的提供會(huì)對(duì)邏輯組合器30執(zhí)行的操作添加附加等級(jí)的復(fù)雜性。在這種關(guān)系中注意,每個(gè)流模式字節(jié)塊20查找操作(參見(jiàn),圖中“L”指定)現(xiàn)在將產(chǎn)生與類(lèi)的數(shù)目對(duì)應(yīng)的數(shù)個(gè)返回28(也就是,每個(gè)存儲(chǔ)器100有一個(gè)返回)。從而,作為一個(gè)實(shí)例,如果在模式表24中提供兩個(gè)類(lèi)(如上所述),則每個(gè)流模式字節(jié)塊20查找將產(chǎn)生兩個(gè)單獨(dú)的返回28(用與每個(gè)返回28關(guān)聯(lián)的“/2”標(biāo)記來(lái)指定)。邏輯組合器30的操作將優(yōu)選保存這種分離并因此產(chǎn)生單獨(dú)的匹配指示32(也就是,每個(gè)類(lèi)有一個(gè)指示)。這種方式中,邏輯組合器30中使用的邏輯電路(例如,參見(jiàn)圖5)將需要被(并行)復(fù)制與可能類(lèi)的預(yù)期數(shù)目相等的次數(shù)。
      為了進(jìn)一步減小錯(cuò)誤肯定指示的可能性,應(yīng)當(dāng)知道表模式越大便產(chǎn)生越少的錯(cuò)誤肯定。例如,由于為使邏輯組合器30發(fā)現(xiàn)全部的匹配而必須匹配數(shù)目顯著增加的塊的實(shí)事,8個(gè)字節(jié)表模式比5個(gè)字節(jié)表模式產(chǎn)生錯(cuò)誤肯定指示的可能性更小。通過(guò)支持在模式表24中存儲(chǔ)的具有多個(gè)表模式長(zhǎng)度的表模式字節(jié)塊26,本發(fā)明的引擎10利用這個(gè)概念(每個(gè)模式長(zhǎng)度也可被認(rèn)為“類(lèi)”)。
      通過(guò)檢查圖6C可以更好的理解,圖6C示出關(guān)于具有線(xiàn)路速率等于且超過(guò)每秒2.4G比特的數(shù)據(jù)包流14,使用九個(gè)單元16(N=9)移位寄存器18來(lái)匹配P=12個(gè)字節(jié)、P=8個(gè)字節(jié)和P=5個(gè)字節(jié)表模式的引擎的優(yōu)選實(shí)施(與圖6A和圖6B以及圖3和圖4比較)。
      數(shù)據(jù)包流14的字節(jié)X一次N-1=8個(gè)字節(jié)地順序塊移入寄存器18。換句話(huà)說(shuō),隨著每個(gè)時(shí)鐘周期,N-1=8個(gè)舊字節(jié)的塊從寄存器中移出,同時(shí)N-1=8個(gè)新字節(jié)的塊移入寄存器18。隨著每個(gè)時(shí)鐘周期,模式匹配器12進(jìn)一步產(chǎn)生N-1=8個(gè)重疊流模式字節(jié)塊20。然后將這些重疊流模式字節(jié)塊20中的每一個(gè)并行22輸出到模式表24以便應(yīng)用,從而與其中存儲(chǔ)的表模式字節(jié)塊26比較(查找L)。
      在圖6C的優(yōu)選實(shí)施例中,每個(gè)查找操作包括5個(gè)字節(jié)表、8個(gè)字節(jié)表和12個(gè)字節(jié)表中的單獨(dú)并行查找。特別地,5個(gè)字節(jié)表包括與任何5個(gè)字節(jié)表模式25相關(guān)聯(lián)的表模式字節(jié)塊26,8個(gè)字節(jié)表包括與任何8個(gè)字節(jié)表模式25相關(guān)聯(lián)的表模式字節(jié)塊26,12個(gè)字節(jié)表包括與任何12個(gè)字節(jié)表模式25相關(guān)聯(lián)的表模式字節(jié)塊26。從而,作為對(duì)流模式字節(jié)塊20執(zhí)行的查找操作的結(jié)果,提供了有關(guān)每一個(gè)字節(jié)表的單獨(dú)返回28被(也就是,來(lái)自5個(gè)字節(jié)表的返回28(5),來(lái)自8個(gè)字節(jié)表的返回28(8)和來(lái)自12個(gè)字節(jié)表的返回28(12))。
      更具體地,如圖1和圖7所示,5個(gè)、8個(gè)和12個(gè)字節(jié)表的每一個(gè)包括多個(gè)存儲(chǔ)器100(優(yōu)選為4個(gè))以支持模式表類(lèi)的使用。從而,對(duì)于模式表中包括的存儲(chǔ)器100的每一個(gè),來(lái)自字節(jié)表的每個(gè)單獨(dú)返回28(也就是,返回28(5)、28(8)和28(12))將包括一個(gè)位,以指定是否發(fā)現(xiàn)有關(guān)每個(gè)所包括的模式表類(lèi)的匹配。在圖6C中用與返回28(5)、28(8)和28(12)相關(guān)聯(lián)的“/4”標(biāo)記來(lái)表示。
      引擎10還包括10個(gè)單元?dú)v史存儲(chǔ)器38,其中如果需要,每個(gè)單元可以存儲(chǔ)有關(guān)單一過(guò)去查找操作的多個(gè)返回28。例如,歷史存儲(chǔ)器38的單元38(1)存儲(chǔ)有關(guān)在以前一個(gè)時(shí)鐘周期中查找(L)150(1)的返回28(5)、28(8)和28(12)。歷史存儲(chǔ)器38的單元38(6)存儲(chǔ)有關(guān)在以前一個(gè)周期中查找(L)150(6)的28(8)和返回28(12)。此外,歷史存儲(chǔ)器38的單元38(11)存儲(chǔ)有關(guān)在以前兩個(gè)周期中查找(L)150(1)的28(12)(也就是,來(lái)自以前一個(gè)周期中單元38(1)的返回28(12))。圖2A、3A、3B、6A和6B中的說(shuō)明,以及這里他們相關(guān)的描述解釋了為什么需要這個(gè)歷史返回信息以及如何存儲(chǔ)和處理。為了簡(jiǎn)單化圖6C的說(shuō)明,省略了關(guān)于如何加載和從哪里加載歷史存儲(chǔ)器38中單元的特別說(shuō)明。然而,應(yīng)當(dāng)知道,為了增加發(fā)生模式匹配的速度而減小寄存器的大小并且執(zhí)行塊移位,在這種情況下,提供歷史返回以使邏輯組合器30能夠有權(quán)使用所需的P-1個(gè)返回以進(jìn)行匹配判定。
      用于進(jìn)行匹配判定的邏輯組合器30的通常操作重申如下與當(dāng)前時(shí)鐘周期中從查找(L)產(chǎn)生的返回28一起,提供歷史存儲(chǔ)器38中保存的來(lái)自先前時(shí)鐘周期的返回28,作為當(dāng)前時(shí)鐘周期中的再用返回28’。有關(guān)發(fā)出的每個(gè)流模式字節(jié)塊20的、用于適當(dāng)當(dāng)前時(shí)鐘周期返回28和/或適當(dāng)以前時(shí)鐘周期歷史返回28’的第一邏輯狀態(tài)組將使邏輯器30產(chǎn)生肯定匹配的指示32。再次,必須記住由這些返回28/28’構(gòu)成了選擇使用,因此能夠在每個(gè)單獨(dú)的移位位置上獨(dú)立地進(jìn)行匹配判定。然而,由于圖6C的實(shí)施執(zhí)行了5個(gè)字節(jié)、8個(gè)字節(jié)和12個(gè)字節(jié)模式匹配,因此邏輯器30必須被分成三個(gè)對(duì)應(yīng)的單獨(dú)邏輯功能(30(5),30(8)和30(12))以執(zhí)行適當(dāng)?shù)钠ヅ錂z測(cè)。從而,用于進(jìn)行5個(gè)字節(jié)匹配判定的邏輯器30(5)根據(jù)來(lái)自歷史存儲(chǔ)器38的單元38(1)-38(3)的當(dāng)前時(shí)鐘周期返回28和以前時(shí)鐘周期歷史返回28’中所需的(也就是,基于移位位置選擇的)幾個(gè)返回作為它的匹配指示32判定。在另一方面,用于進(jìn)行8個(gè)字節(jié)匹配判定的邏輯器30(8)根據(jù)來(lái)自歷史存儲(chǔ)器38的單元38(1)-38(6)的當(dāng)前時(shí)鐘周期返回28和以前時(shí)鐘周期歷史返回28’中所需的(也就是,基于移位位置選擇的)幾個(gè)返回作為它的匹配指示32判定。最后,用于進(jìn)行12個(gè)字節(jié)匹配判定的邏輯器30(12)根據(jù)來(lái)自歷史存儲(chǔ)器38的單元38(1)-38(12)的當(dāng)前時(shí)鐘周期返回28和以前時(shí)鐘周期歷史返回28’中所需的(也就是,基于移位位置選擇的)幾個(gè)返回作為它的匹配指示32判定。
      與這里所述的其它實(shí)施例類(lèi)似,圖6C的系統(tǒng)是可方便編程的,其中只要利用適當(dāng)?shù)谋韷K簡(jiǎn)單地再編程模式表24,就能夠?qū)Ω信d趣的表模式進(jìn)行修改、刪除、更新等。通過(guò)執(zhí)行多個(gè)存儲(chǔ)器100以支持多類(lèi)表模式,進(jìn)一步支持了模式匹配操作的適應(yīng)性和可塑性。此外,利用表模式的數(shù)目和表模式的不同長(zhǎng)度,系統(tǒng)是可簡(jiǎn)單升級(jí)的。對(duì)模式表大小的調(diào)節(jié)以及邏輯器30的特性和復(fù)雜性有助于這種改變而不會(huì)明顯影響操作速度。
      應(yīng)當(dāng)知道,如果需要大量表模式,那么總的來(lái)說(shuō)用于模式表24的存儲(chǔ)器需求(也就是,存儲(chǔ)器大小)特別是其中的每個(gè)存儲(chǔ)器100便會(huì)非常大。下面參考圖7,其中示出一種減少模式表24之內(nèi)的存儲(chǔ)器需求的機(jī)構(gòu)。為了簡(jiǎn)化說(shuō)明和解釋?zhuān)f(shuō)明有關(guān)單一流模式字節(jié)塊20的模式表中的查找。假定兩個(gè)字節(jié)重疊和且每個(gè)字節(jié)8個(gè)位,每個(gè)流模式字節(jié)塊20將包括16個(gè)位(圖7中所示的“/16”標(biāo)記)。為了減少與16位地址查找相關(guān)的存儲(chǔ)器需求,引擎10使用雜湊表110(在模式匹配器12或模式表24之內(nèi))來(lái)將16位地址查找轉(zhuǎn)換成更小的地址查找,例如14位(圖7中所示的“/14”標(biāo)記)地址查找。雜湊表的執(zhí)行和操作對(duì)于本領(lǐng)域的技術(shù)人員是公知的,因而將不提供進(jìn)一步詳細(xì)的解釋。雜湊表110可以進(jìn)一步被用作上述圖6C的優(yōu)選實(shí)施中所示的那樣。
      可以知道,使用較小的查找地址可以產(chǎn)生附加的錯(cuò)誤肯定結(jié)果(即使結(jié)合上述的類(lèi)和串長(zhǎng)度解決方案使用時(shí))。為了處理這個(gè)問(wèn)題,引擎10可以選擇以代替執(zhí)行有關(guān)每個(gè)流模式字節(jié)塊20處理的多個(gè)雜湊表110。特別地,由多個(gè)雜湊表110將16位地址查找轉(zhuǎn)換成相應(yīng)較小數(shù)目,例如14位地址查找。多個(gè)雜湊表110中的每一個(gè)將預(yù)期執(zhí)行的不同的轉(zhuǎn)換,即由多個(gè)雜湊表所利用的組合轉(zhuǎn)換僅使用一個(gè)雜湊表處理錯(cuò)誤肯定問(wèn)題。有關(guān)每個(gè)較小地址查找的由模式表24執(zhí)行的比較產(chǎn)生有關(guān)相同流模式字節(jié)塊20的單獨(dú)返回28(參見(jiàn),圖7中與正在使用的兩個(gè)雜湊表110對(duì)應(yīng)的“/2”標(biāo)記),然后邏輯組合器30邏輯組合有關(guān)每個(gè)單一流模式字節(jié)塊20的多個(gè)返回28以產(chǎn)生組合返回。通常來(lái)說(shuō),為了發(fā)現(xiàn)有關(guān)單一流模式字節(jié)塊20的真返回28,邏輯組合器30必須發(fā)現(xiàn)有關(guān)每個(gè)雜湊地址的查找的匹配。
      還可以通過(guò)對(duì)具有不敏感狀態(tài)數(shù)據(jù)的模式表編程減小查找地址的大小(也就是,該特征表示在模式表24的存儲(chǔ)器中,而不考慮其狀態(tài)),然后忽略在查找期間應(yīng)用的字節(jié)塊20之內(nèi)該狀態(tài)位。如果需要可結(jié)合使用上述一個(gè)或多個(gè)雜湊表而使用這個(gè)特征,以提供大大減小的地址位。
      圖7進(jìn)一步示出模式表24之內(nèi)多個(gè)存儲(chǔ)器100的使用。如上所述,這些多個(gè)存儲(chǔ)器可以與多類(lèi)的實(shí)施結(jié)合作為一個(gè)機(jī)構(gòu)有利地使用以減小錯(cuò)誤肯定的可能性。在所示的實(shí)施中,提供m個(gè)存儲(chǔ)器100以支持將表模式劃分成m個(gè)對(duì)應(yīng)的類(lèi)。利用這種結(jié)構(gòu),每個(gè)流模式字節(jié)塊20查找將產(chǎn)生m個(gè)單獨(dú)的返回28(由與每個(gè)返回28相關(guān)的“/m”標(biāo)記表示)。當(dāng)然應(yīng)當(dāng)認(rèn)識(shí)到,如果使用多個(gè)雜湊表110例如k個(gè)不同的雜湊表,則每個(gè)流模式字節(jié)塊20查找將產(chǎn)生(m×k個(gè))單獨(dú)返回28(由與每個(gè)返回28相關(guān)的“/mk”標(biāo)記表示)。
      現(xiàn)在參考圖8,其中示出說(shuō)明根據(jù)本發(fā)明另一個(gè)實(shí)施例的用于包業(yè)務(wù)流篩選的引擎的方框圖。與圖1所示的實(shí)施例類(lèi)似,這個(gè)實(shí)施例利用如上所述的模式匹配器12和模式表24。因而,除為需要而解釋有關(guān)兩個(gè)實(shí)施例之間的不同和區(qū)別之外,也省略了模式匹配器12和模式表24的詳細(xì)解釋。圖8的引擎10還包括類(lèi)標(biāo)識(shí)符(CID)功能組件120,其在包匹配之前執(zhí)行有關(guān)接收的數(shù)據(jù)包流14的處理。該類(lèi)標(biāo)識(shí)符功能組件120通常檢查每個(gè)包的頭,并且進(jìn)一步查看通過(guò)的流14之內(nèi)的包序列的特性。從這個(gè)分析中,類(lèi)標(biāo)識(shí)符功能組件120分類(lèi)包和/或包流,并產(chǎn)生表示該類(lèi)的CID編碼122。然后使用該CID編碼122,以下面將詳細(xì)描述的方式,協(xié)助模式匹配器12執(zhí)行更有效和高效的流篩選。
      一般而言,通過(guò)類(lèi)標(biāo)識(shí)符功能組件120快速地且以不檢查有效載荷的方式檢查流。例如,可以檢查每個(gè)包的頭的感興趣的信息,例如感興趣的某個(gè)頭字段的內(nèi)容(源地址,目的地址等)。作為另一個(gè)實(shí)例,為了識(shí)別什么類(lèi)型的業(yè)務(wù)流正在通過(guò)(例如,http,ftp等)而檢查流。也可以通過(guò)類(lèi)標(biāo)識(shí)符功能組件120提取有關(guān)數(shù)據(jù)速度的信息。從一個(gè)或多個(gè)收集的感興趣信息中,類(lèi)標(biāo)識(shí)符功能組件120判定并輸出歸類(lèi)或者分類(lèi)流的適當(dāng)CID編碼122。
      應(yīng)當(dāng)認(rèn)識(shí)到,模式匹配器12有利地利用CID編碼提供的包/流的類(lèi),以執(zhí)行更有效和高效的流14篩選。當(dāng)用戶(hù)識(shí)別出將被篩選的表模式,且/或分類(lèi)這些表模式(在某個(gè)存儲(chǔ)器100中存儲(chǔ)的)時(shí),還可以知道這些表模式為只是對(duì)由類(lèi)標(biāo)識(shí)符功能組件所識(shí)別并且由CID編碼122所表示的包/流的某個(gè)類(lèi)/類(lèi)別感興趣。以這種方法,通過(guò)直接或集中有關(guān)模式表類(lèi)的查找,能夠使用CID編碼以改進(jìn)模式匹配器12執(zhí)行的篩選操作。僅在查找指示某個(gè)模式表類(lèi)中的匹配,并且只有當(dāng)CID編碼122還指出該模式表類(lèi)中的匹配與分類(lèi)或歸類(lèi)包/流的類(lèi)標(biāo)識(shí)符功能組件120相關(guān),才將產(chǎn)生匹配指示32。
      通過(guò)一些特殊實(shí)例的分析可以更好的理解前述內(nèi)容。假設(shè)模式表24包括多個(gè)存儲(chǔ)器100,每個(gè)存儲(chǔ)器100都與上述減小錯(cuò)誤肯定可能性的不同模式表類(lèi)相關(guān)。這些存儲(chǔ)器的第一個(gè)存儲(chǔ)與http業(yè)務(wù)流篩選有關(guān)的表模式的表模式字節(jié)塊26。這些存儲(chǔ)器的第二個(gè)存儲(chǔ)與ftp業(yè)務(wù)流篩選有關(guān)的表模式的表模式字節(jié)塊26。這些存儲(chǔ)器的第三個(gè)存儲(chǔ)與來(lái)自某個(gè)源IP地址的業(yè)務(wù)流篩選有關(guān)的表模式的表模式字節(jié)塊26。
      在第一實(shí)例中,假設(shè)由類(lèi)標(biāo)識(shí)符功能組件120檢查流14,并且判定包/流為http業(yè)務(wù)流。然后將產(chǎn)生(表示http業(yè)務(wù)流的)適當(dāng)?shù)腃ID編碼122并將其提供給模式匹配器12。然后由模式匹配器產(chǎn)生流模式字節(jié)塊20并將其提供到應(yīng)用每個(gè)存儲(chǔ)器100的模式表24。如果來(lái)自這些存儲(chǔ)器的第一個(gè)(也就是,存儲(chǔ)與http業(yè)務(wù)流篩選相關(guān)的表模式的表模式字節(jié)塊26的一個(gè)存儲(chǔ)器)中的返回28指示匹配,則邏輯器30將進(jìn)一步比較表示http的匹配與CID編碼122(其表示該包/流是http業(yè)務(wù)流),并發(fā)出匹配指示32。相反地,如果第一存儲(chǔ)器指示匹配,但是CID編碼122末指示包/流是http業(yè)務(wù)流,則邏輯器30將忽略http存儲(chǔ)器100匹配且不發(fā)出匹配指示。
      在第二實(shí)例中,假設(shè)由類(lèi)標(biāo)識(shí)符功能組件120檢查流14,并且判定包/流是ftp業(yè)務(wù)流。然后將產(chǎn)生(表示ftp業(yè)務(wù)流的)適當(dāng)?shù)腃ID編碼122并將其提供給模式匹配器12。然后由模式匹配器產(chǎn)生流模式字節(jié)塊20并將其提供到應(yīng)用每個(gè)存儲(chǔ)器100的模式表24。如果來(lái)自這些存儲(chǔ)器的第二個(gè)(也就是,存儲(chǔ)與ftp業(yè)務(wù)流篩選相關(guān)的表模式的表模式字節(jié)塊26的一個(gè)存儲(chǔ)器)中的返回28指示匹配,則邏輯器30將進(jìn)一步比較表示ftp的匹配與CID編碼122(其表示該包/流是ftp業(yè)務(wù)流),并發(fā)出匹配指示32。相反地,如果第二存儲(chǔ)器指示匹配,但是CID編碼122未指示包/流是ftp業(yè)務(wù)流,則邏輯器30將忽略ftp存儲(chǔ)器100匹配且不發(fā)出匹配指示。
      在第三實(shí)例中,假設(shè)由類(lèi)標(biāo)識(shí)符功能組件120檢查流14,并且判定包/流是來(lái)自某個(gè)源IP地址的ftp業(yè)務(wù)流。然后將產(chǎn)生(表示ftp業(yè)務(wù)流和源地址的)適當(dāng)?shù)腃ID編碼122并將其提供給模式匹配器12。然后由模式匹配器產(chǎn)生流模式字節(jié)塊20并將其提供到應(yīng)用每個(gè)存儲(chǔ)器100的模式表24。如果來(lái)自這些存儲(chǔ)器的第二個(gè)(也就是,存儲(chǔ)與ftp業(yè)務(wù)流篩選相關(guān)的表模式的表模式字節(jié)塊26的一個(gè)存儲(chǔ)器)中的返回28指示匹配,則邏輯器30將進(jìn)一步比較表示ftp的匹配與CID編碼122(其指示該包/流是ftp業(yè)務(wù)流),并發(fā)出第一匹配指示32。如果來(lái)自這些存儲(chǔ)器的第三個(gè)(也就是,存儲(chǔ)與來(lái)自某個(gè)源IP地址的業(yè)務(wù)流篩選相關(guān)的表模式的表模式字節(jié)塊26的一個(gè)存儲(chǔ)器)中的返回28指示匹配,則邏輯器30將進(jìn)一步比較表示源地址的匹配與CID編碼122(其表示該包/流是來(lái)自源IP地址的),并發(fā)出第二匹配信息32。在某種情況中,任一匹配指示32可能足以觸發(fā)并報(bào)警或過(guò)濾例如流14。在其它情況中,在發(fā)出警告或者過(guò)濾流14之前,邏輯器30可能還需要匹配將要出現(xiàn)的指示32。
      從而,以前的描述和實(shí)例示出只有當(dāng)發(fā)現(xiàn)有關(guān)與包/流的類(lèi)標(biāo)識(shí)符功能組件120對(duì)應(yīng)的模式表類(lèi)的匹配時(shí)才發(fā)生圖8實(shí)施例中的匹配指示32。以這個(gè)方式就會(huì)清楚,如上所述為什么引擎10必須保存邏輯器30操作過(guò)程中分類(lèi)的返回28。沒(méi)有這種保存,將不可能使用CID編碼122以進(jìn)一步改進(jìn)匹配判定。圖5示出OR的輸出如何可以進(jìn)一步應(yīng)用到接收CID編碼122的附加邏輯器中。如果與某個(gè)包/流類(lèi)相關(guān)的CID編碼122和用于某個(gè)模式表類(lèi)的邏輯組合的返回28都是真時(shí),則輸出匹配指示32。
      CID編碼122與模式表類(lèi)結(jié)合的類(lèi)標(biāo)識(shí)符功能組件120的使用提供了對(duì)發(fā)出錯(cuò)誤肯定的附加等級(jí)的保護(hù)。例如,不包括并且也不使用CID編碼122時(shí),應(yīng)用到fttp類(lèi)存儲(chǔ)器100的流模式字節(jié)塊20可以返回有關(guān)ftp業(yè)務(wù)流的匹配。然而,這種錯(cuò)誤肯定匹配對(duì)于正被篩選的業(yè)務(wù)流類(lèi)型是不重要的或者毫無(wú)意義。使用CID1編碼122處理這個(gè)問(wèn)題,并且提高引擎10提供的錯(cuò)誤肯定保護(hù)的等級(jí)。
      現(xiàn)在參考圖9,其中示出根據(jù)本發(fā)明另一實(shí)施例用于包業(yè)務(wù)流篩選的引擎的方框圖。與圖1所示實(shí)施例類(lèi)似,本實(shí)施例利用上述的模式匹配器12和模式表24。因而,除為需要而解釋有關(guān)兩個(gè)實(shí)施例之間的不同和區(qū)別之外,也省略了模式匹配器12和模式表24的詳細(xì)解釋。圖9的引擎10還包括重新組裝緩沖器130,其在模式匹配之前對(duì)接收的數(shù)據(jù)包流14進(jìn)行操作。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)知道,流14中的包可以無(wú)次序地到達(dá),并且還應(yīng)知道可能出現(xiàn)邊界條件問(wèn)題。重新組裝緩沖器130用于確保在執(zhí)行篩選之前適當(dāng)組合流的多個(gè)包。特別地,緩沖器130使包的次序正確并進(jìn)一步處理有關(guān)流的邊界問(wèn)題,從而當(dāng)模式匹配器12處理流14時(shí),流14以正確次序被檢查并檢查跨越邊界的匹配。
      現(xiàn)在參考圖10,其中示出根據(jù)本發(fā)明另一實(shí)施例用于包業(yè)務(wù)流篩選的引擎的方框圖。與圖1所示實(shí)施例類(lèi)似,本實(shí)施例利用上述的模式匹配器12和模式表24。因而,除為需要而解釋有關(guān)兩個(gè)實(shí)施例之間的不同和區(qū)別之外,也省略了模式匹配器12和模式表24的詳細(xì)解釋。圖10的引擎10還包括至少一個(gè),優(yōu)選為多個(gè)解碼器140。當(dāng)需要或希望在模式匹配之前將流14翻譯成普通格式(語(yǔ)言)時(shí),使用該解碼器140。在這種方式中,不需配置模式表24以處理不同格式的模式。例如,可以用HEX或UNICODE編碼流14或其中一部分。在模式匹配之前,希望通過(guò)使用解碼器140來(lái)對(duì)已編碼的字節(jié)解碼。翻譯決定功能142檢查流14之內(nèi)的字節(jié)并且識(shí)別需要解碼的字節(jié)。這些字節(jié)被傳遞到適當(dāng)?shù)慕獯a器140以進(jìn)行處理。解碼之后,字節(jié)被傳輸?shù)侥J狡ヅ淦?2以進(jìn)行篩選,如上面詳細(xì)討論。非常重要需要記住的是,解碼器140為優(yōu)先方案,將正被篩選的全部業(yè)務(wù)流轉(zhuǎn)換成標(biāo)準(zhǔn)化/基本格式,從而在模式表24中能夠存儲(chǔ)單一版本的表模式。
      在進(jìn)行有關(guān)翻譯問(wèn)題的可選擇處理時(shí),應(yīng)當(dāng)理解的是模式表24可以載有已編碼和已解碼的表模式(或許在單獨(dú)模式表類(lèi)中),因而可能應(yīng)避免使用解碼器140。此外,在進(jìn)行另一可選擇處理時(shí),字節(jié)可以它們已編碼和已解碼狀態(tài)傳遞到模式匹配器12以進(jìn)行篩選。
      現(xiàn)在參考圖11,其中示出根據(jù)本發(fā)明另一實(shí)施例用于包業(yè)務(wù)流篩選的引擎的方框圖。與圖1所示實(shí)施例類(lèi)似,本實(shí)施例利用上述的模式匹配器12和模式表24。因而,除為需要而解釋有關(guān)兩個(gè)實(shí)施例之間的不同和區(qū)別之外,也省略了模式匹配器12和模式表24的詳細(xì)解釋。圖11的引擎10使用上文詳細(xì)說(shuō)明的圖8-圖10中所述實(shí)施例的組合。盡管圖11示出圖8-圖10全部三個(gè)實(shí)施例的組合使用,將可以理解也可以使用三個(gè)實(shí)施例中任何選擇的兩個(gè)。
      有利且優(yōu)選完全用硬件執(zhí)行本發(fā)明的引擎10。這種執(zhí)行有助于高速操作。在過(guò)去,并不贊成單獨(dú)硬件的模式匹配器執(zhí)行,這是由于它們不能隨時(shí)修改或修整。本發(fā)明通過(guò)利用模式表存儲(chǔ)器存儲(chǔ)與希望的5個(gè)字節(jié)、8個(gè)字節(jié)和12個(gè)字節(jié)模式匹配的表模式相關(guān)的表模式字節(jié)塊26,仍舊提出硬件設(shè)計(jì),同時(shí)處理了這個(gè)問(wèn)題。當(dāng)需要時(shí),能夠容易地修改存儲(chǔ)器以添加或刪除某個(gè)表模式字節(jié)塊26。此外,模式表不但在支持多種大小表模式匹配方面,而且在支持多個(gè)類(lèi)方面都支持多存儲(chǔ)器的使用。再有,能夠容易地修改模式表之中的存儲(chǔ)器以改變表模式大小中和/或類(lèi)中的塊,從而允許硬件設(shè)計(jì)支持如軟件設(shè)計(jì)一樣的靈活性。
      下面參考圖12,其中示出用于本發(fā)明模式匹配引擎的優(yōu)選執(zhí)行的硬件功能方框圖。網(wǎng)絡(luò)處理器(NP)200通過(guò)PL3總線(xiàn)接收32位寬格式的數(shù)據(jù)流14。處理器200通過(guò)快速檢查數(shù)據(jù)流而不檢查有效載荷來(lái)執(zhí)行類(lèi)標(biāo)識(shí)符功能(圖8,附圖標(biāo)記120和相關(guān)的描述)。檢查包括每個(gè)包的頭以及通過(guò)的流14中包次序的特性。通過(guò)這個(gè)分析,處理器200分類(lèi)包和/或包流,并產(chǎn)生指示判定的類(lèi)的CID編碼122。該CID編碼122是12位值,其中所包含的每個(gè)位特別指出模式匹配是否是與多個(gè)不同模式匹配的每一個(gè)中某幾個(gè)類(lèi)相關(guān)的感興趣的問(wèn)題(例如,一個(gè)位用于5字節(jié)、8字節(jié)和12字節(jié)表中四個(gè)單獨(dú)類(lèi)的每一個(gè))。特別地,由處理器200執(zhí)行的流14的檢查協(xié)助發(fā)出篩選(例如,模式匹配)操作是與指定的包/流/會(huì)話(huà)相關(guān)的。這個(gè)評(píng)估處理實(shí)例,并且結(jié)合上述圖8的說(shuō)明已提供了它對(duì)匹配判定的影響。優(yōu)選在每個(gè)包分類(lèi)之后,將CID編碼122附加到每個(gè)包中。
      接收器(RX)202通過(guò)單向PL3接收來(lái)自處理器200的數(shù)據(jù)流14。接收器202用作PL3鏈路層接收標(biāo)準(zhǔn)接口??偩€(xiàn)204的數(shù)據(jù)寬度為32位。通過(guò)調(diào)節(jié)被檢測(cè)到的PL3總線(xiàn)的速度,能夠配置引擎10以將線(xiàn)路速率處理在等于且超過(guò)每秒4.2G比特(例如,具有133MHz時(shí)鐘)。在接收器202中提供網(wǎng)絡(luò)FIFO存儲(chǔ)器以臨時(shí)存儲(chǔ)收到的數(shù)據(jù)。FIFO用于附加提供PL3接口與引擎10的內(nèi)部邏輯器之間的速度調(diào)整和時(shí)鐘同步。在優(yōu)選實(shí)施例中,該數(shù)據(jù)在寫(xiě)入FIFO之前被轉(zhuǎn)換成64位(該數(shù)據(jù)可以具有分成多個(gè)32字節(jié)塊的4千位長(zhǎng)度)。一旦塊滿(mǎn),就輸出被緩沖的數(shù)據(jù)。
      數(shù)據(jù)過(guò)濾器204接收從接收器202發(fā)送的輸出塊并且以一次8個(gè)字節(jié)地輸出所接收的數(shù)據(jù)(也就是,以給定的時(shí)鐘周期,如結(jié)合圖2A執(zhí)行的上述討論)。
      包剖析器206用于分析有關(guān)流14的包頭信息,以識(shí)別在何處可以發(fā)現(xiàn)每個(gè)包的有效載荷。為了完成此處理,從剖析器208以及啟動(dòng)指示器中輸出接收的數(shù)據(jù),該啟動(dòng)指示器識(shí)別該數(shù)據(jù)應(yīng)當(dāng)(也就是,其為有效載荷)還是不應(yīng)當(dāng)(也就是,其為頭)被模式匹配。剖析器206進(jìn)一步確保流中的包次序是正確的(也參見(jiàn)圖9)。通過(guò)跟蹤次序號(hào)來(lái)完成處理。
      引擎10還包括模式匹配器208(也參見(jiàn)圖9,如上述附圖標(biāo)記12)。模式匹配器208搜索在有效載荷部分(由剖析器206所識(shí)別的,也參見(jiàn)圖6C及其相關(guān)描述)中所希望的5字節(jié)、8字節(jié)和12字節(jié)模式的包或跨越TCP包的有效載荷邊界的包。每個(gè)包有效載荷的每?jī)蓚€(gè)相鄰字節(jié)(流模式字節(jié)塊20)被用作進(jìn)入模式表中的地址(參見(jiàn)上述附圖標(biāo)記24)。從模式表返回的數(shù)據(jù)為12位值,其中每位表示與3個(gè)不同(5字節(jié)、8字節(jié)、12字節(jié))模式匹配(例如,為每個(gè)模式匹配提供4個(gè)類(lèi))的每一個(gè)中多個(gè)不同類(lèi)相關(guān)的匹配/未匹配的存在。理論上能夠在任何一個(gè)、大于一個(gè)或全部的值中表示匹配。對(duì)于發(fā)生5字節(jié)匹配,5字節(jié)串中的每個(gè)2字節(jié)對(duì)(塊20)必須產(chǎn)生與5字節(jié)模式表的至少一個(gè)類(lèi)中的所存儲(chǔ)庫(kù)2字節(jié)對(duì)(表模式字節(jié)塊26)的匹配。相似地,對(duì)于發(fā)生8字節(jié)匹配,8字節(jié)串中的每個(gè)2字節(jié)對(duì)(塊20)必須產(chǎn)生與8字節(jié)模式表的至少一個(gè)類(lèi)中的所存儲(chǔ)庫(kù)2字節(jié)對(duì)(塊26)的匹配。最后,對(duì)于發(fā)生12字節(jié)匹配,12字節(jié)串中的每個(gè)2字節(jié)對(duì)(塊20)必須產(chǎn)生與12字節(jié)模式表的至少一個(gè)類(lèi)中的所存儲(chǔ)庫(kù)2字節(jié)對(duì)(塊26)的匹配。
      然后將輸出的12位值與由快速模式處理器200早先產(chǎn)生的12位CID編碼122進(jìn)行邏輯AND。如果AND結(jié)果的至少一位為真(例如,邏輯1),則認(rèn)為已經(jīng)發(fā)現(xiàn)模式匹配并且對(duì)該包作標(biāo)記以進(jìn)行不同的處理(例如,改道發(fā)送)和/或產(chǎn)生警報(bào)。如果跨越TCP邊界發(fā)生匹配,可以設(shè)置改道發(fā)送標(biāo)記指示引擎10,應(yīng)當(dāng)區(qū)別對(duì)待在同一TCP會(huì)話(huà)中的全部將來(lái)的包?;蛘撸€可以設(shè)置標(biāo)記指示引擎,應(yīng)當(dāng)區(qū)別對(duì)待在相同TCP會(huì)話(huà)內(nèi)的將來(lái)的包。
      如果模式匹配器208檢測(cè)到包是無(wú)次序地到達(dá)的,發(fā)送無(wú)次序的包以區(qū)別對(duì)待(不需要發(fā)生模式匹配),并且同樣地處理在同一TCP會(huì)話(huà)中的全部將來(lái)的包。
      然后通過(guò)PL3總線(xiàn)將模式匹配的流14轉(zhuǎn)交到發(fā)射器(TX)210。與接收器202輸入總線(xiàn)類(lèi)似,優(yōu)選測(cè)得該總線(xiàn)的速度支持等于且超過(guò)每秒4.2G比特的線(xiàn)路速率。
      優(yōu)選物理上使用包括多個(gè)互連集成電路芯片的電路板實(shí)現(xiàn)圖12所示的引擎10。這些芯片優(yōu)選包括為執(zhí)行所希望功能而配置的商業(yè)上現(xiàn)成的芯片的組合(例如,NP 200),以及為執(zhí)行所希望功能而設(shè)計(jì)的定制處理芯片(FPGA結(jié)構(gòu)包括一個(gè)適當(dāng)?shù)膶?shí)施方案;定制芯片包括另一個(gè)選擇方案)。用于引擎10的必需的存儲(chǔ)器和其它功能組件可被嵌進(jìn)所包括的集成電路芯片中或作為分離元件而提供。
      盡管公開(kāi)了優(yōu)選僅用硬件實(shí)施,但是本領(lǐng)域的技術(shù)人員能夠理解也可在基于軟件的解決方案中實(shí)施所公開(kāi)的功能性,以應(yīng)用于不需要非常高的線(xiàn)路速率處理的情況。
      盡管本發(fā)明方法和裝置的優(yōu)選實(shí)施例已在附圖中示出并在前述的詳細(xì)描述中描述,應(yīng)當(dāng)理解本發(fā)明并不限于公開(kāi)的實(shí)施例,而是如同在后面的權(quán)利要求書(shū)中提出和定義的,在不偏離本發(fā)明的精神下能夠進(jìn)行多種調(diào)整、修改和替換。
      權(quán)利要求
      1.一種模式匹配裝置,其以硬件的方式實(shí)現(xiàn)并且能夠以非錨定方式匹配多字節(jié)數(shù)據(jù)流模式與多字節(jié)庫(kù)模式。
      2.根據(jù)權(quán)利要求1的裝置,其中該模式匹配裝置運(yùn)行以匹配線(xiàn)路速率大于或等于每秒1G比特的數(shù)據(jù)流。
      3.根據(jù)權(quán)利要求2的裝置,其中該模式匹配裝置運(yùn)行以匹配線(xiàn)路速率大于或等于每秒2G比特的數(shù)據(jù)流。
      4.根據(jù)權(quán)利要求3的裝置,其中該模式匹配裝置運(yùn)行以匹配線(xiàn)路速率大于或等于每秒2.4G比特的數(shù)據(jù)流。
      5.根據(jù)權(quán)利要求1的裝置,其中該模式匹配裝置接收包括數(shù)據(jù)包有效載荷的數(shù)據(jù)流,其中執(zhí)行與數(shù)據(jù)包有效載荷有關(guān)的非錨定匹配。
      6.根據(jù)權(quán)利要求1的裝置,其中該模式匹配裝置接收包括具有頭和有效載荷的數(shù)據(jù)包的數(shù)據(jù)流,其中執(zhí)行與數(shù)據(jù)包頭和有效載荷有關(guān)的非錨定匹配。
      7.根據(jù)權(quán)利要求1的裝置,還包括移位寄存器,存儲(chǔ)數(shù)據(jù)流的串部分并且能夠?qū)⒋糠址殖啥鄠€(gè)重疊相鄰流字節(jié)塊;查找表,存儲(chǔ)庫(kù)模式的重疊相鄰表字節(jié)塊,該查找表并行接收用于串部分的流字節(jié)塊,同時(shí)查找所存儲(chǔ)的表字節(jié)塊;以及邏輯電路,能夠收集并行查找的結(jié)果并且處理這些結(jié)果以進(jìn)行匹配判定。
      8.根據(jù)權(quán)利要求7裝置,其中該數(shù)據(jù)流包括多種數(shù)據(jù)字節(jié),該移位寄存器還能夠在每個(gè)時(shí)鐘周期將包括多個(gè)數(shù)據(jù)字節(jié)的塊移入寄存器。
      9.根據(jù)權(quán)利要求8的裝置,其中在該寄存器內(nèi)每個(gè)塊移位保留至少一個(gè)相鄰的串之間共有的字節(jié)。
      10.根據(jù)權(quán)利要求7的裝置,其中查找表包括多個(gè)查找表,每個(gè)查找表存儲(chǔ)用于待尋找的不同類(lèi)庫(kù)模式的重疊相鄰表字節(jié)塊。
      11.根據(jù)權(quán)利要求10的裝置,其中不同類(lèi)庫(kù)模式包括用于每個(gè)查找表的不同長(zhǎng)度的模式。
      12.根據(jù)權(quán)利要求10的裝置,其中不同類(lèi)庫(kù)模式包括用于每個(gè)查找表的不同業(yè)務(wù)流類(lèi)別的模式。
      13.根據(jù)權(quán)利要求12的裝置,還包括業(yè)務(wù)流處理器,其能夠在模式匹配之前檢查和分類(lèi)該數(shù)據(jù)流;該邏輯電路還包括邏輯處理,其在匹配判定中強(qiáng)調(diào)從查找表收集的那些結(jié)果,該查找表的業(yè)務(wù)流類(lèi)別模式與數(shù)據(jù)流分類(lèi)有關(guān)。
      14.根據(jù)權(quán)利要求10的裝置,其中將用于該串部分的流字節(jié)塊同時(shí)并行應(yīng)用到多個(gè)查找表。
      15.根據(jù)權(quán)利要求10的裝置,其中邏輯電路包括用于處理從每個(gè)查找表收集的結(jié)果的單獨(dú)邏輯處理。
      16.根據(jù)權(quán)利要求7的裝置,其中移位寄存器具有N個(gè)單元并且?guī)炷J骄哂蠵個(gè)字節(jié),其中N=P。
      17.根據(jù)權(quán)利要求7的裝置,其中移位寄存器具有N個(gè)單元并且?guī)炷J骄哂蠵個(gè)字節(jié),其中N<P。
      18.根據(jù)權(quán)利要求7的裝置,其中移位寄存器具有N個(gè)單元并且?guī)炷J骄哂蠵個(gè)字節(jié),其中N>P。
      19.根據(jù)權(quán)利要求7的裝置,還包括雜湊表,在應(yīng)用查找表之前,該雜湊表處理流字節(jié)塊。
      20.根據(jù)權(quán)利要求7的裝置,其中串部分是將與庫(kù)模式進(jìn)行匹配的流模式。
      21.根據(jù)權(quán)利要求7的裝置,其中串部分是將與庫(kù)模式進(jìn)行匹配的流模式的一部分。
      22.根據(jù)權(quán)利要求7的裝置,其中串部分包括將與庫(kù)模式進(jìn)行匹配的流模式。
      23.根據(jù)權(quán)利要求7的裝置,其中數(shù)據(jù)流包括多種數(shù)據(jù)字節(jié),該移位寄存器還能夠在每個(gè)時(shí)鐘周期將包括多個(gè)數(shù)據(jù)字節(jié)的塊移入寄存器,該裝置還包括歷史存儲(chǔ)器,用于存儲(chǔ)與以前塊的數(shù)據(jù)字節(jié)的流字節(jié)塊有關(guān)的以前時(shí)鐘周期中從查找表收集的查找結(jié)果,該邏輯電路能夠處理來(lái)自當(dāng)前時(shí)鐘周期的收集結(jié)果以及來(lái)自以前時(shí)鐘周期的存儲(chǔ)結(jié)果以進(jìn)行匹配判定。
      24.根據(jù)權(quán)利要求23的裝置,其中歷史存儲(chǔ)器存儲(chǔ)與多個(gè)以前時(shí)鐘周期有關(guān)的從查找表收集的查找結(jié)果。
      25.根據(jù)權(quán)利要求23的裝置,其中數(shù)據(jù)流包括多個(gè)不同流的交錯(cuò)數(shù)據(jù)包,歷史存儲(chǔ)器存儲(chǔ)與每個(gè)流有關(guān)的從先前時(shí)鐘周期收集的查找結(jié)果,并且邏輯電路能夠處理與當(dāng)前正在寄存器中的流的數(shù)據(jù)字節(jié)有關(guān)的、來(lái)自歷史存儲(chǔ)器的存儲(chǔ)結(jié)果。
      26.根據(jù)權(quán)利要求7的裝置,還包括解碼器,其能夠在模式匹配之前解碼數(shù)據(jù)流的編碼部分。
      27.根據(jù)權(quán)利要求26的裝置,其中庫(kù)模式的重疊相鄰表字節(jié)塊存儲(chǔ)在按編碼格式和解碼格式的查找表中,并且進(jìn)行與數(shù)據(jù)流的編碼部分和解碼部分有關(guān)的匹配判定。
      28.根據(jù)權(quán)利要求7的裝置,還包括重新組裝緩沖器,其能夠在模式匹配之前重新組合數(shù)據(jù)流中無(wú)次序的數(shù)據(jù)包。
      29.根據(jù)權(quán)利要求1的裝置,其中模式匹配裝置接收包括多個(gè)不同流的交錯(cuò)數(shù)據(jù)包的數(shù)據(jù)流,其中執(zhí)行與每個(gè)流的數(shù)據(jù)包有關(guān)的非錨定匹配。
      30.一種匹配多個(gè)字節(jié)流模式與多個(gè)字節(jié)庫(kù)模式的方法,將多個(gè)字節(jié)庫(kù)模式分成重疊相鄰表字節(jié)塊,包括如下步驟接收數(shù)據(jù)流的串部分;將串部分分成多個(gè)重疊相鄰流字節(jié)塊;判定每個(gè)流字節(jié)塊是否與重疊相鄰表字節(jié)塊匹配;邏輯組合判定步驟的結(jié)果以進(jìn)行匹配判定。
      31.根據(jù)權(quán)利要求30的方法,其中數(shù)據(jù)流包括多個(gè)不同流的交錯(cuò)數(shù)據(jù)包,并且邏輯組合步驟包括進(jìn)行與每個(gè)流有關(guān)的匹配判定的步驟。
      32.根據(jù)權(quán)利要求30的方法,其中數(shù)據(jù)流包括多個(gè)不同流的交錯(cuò)數(shù)據(jù)包,該方法還包括確定某個(gè)包屬于的哪個(gè)流的步驟,邏輯組合步驟包括在匹配判定中考慮與某個(gè)包所屬的那個(gè)流相關(guān)的結(jié)果的步驟。
      33.根據(jù)權(quán)利要求30的方法,其中判定步驟包括并行匹配多個(gè)重疊相鄰流字節(jié)塊與重疊相鄰表字節(jié)塊的步驟。
      34.根據(jù)權(quán)利要求30的方法,還包括在查找表中存儲(chǔ)重疊相鄰表字節(jié)塊的步驟。
      35.根據(jù)權(quán)利要求30的方法,還包括在多個(gè)查找表中存儲(chǔ)重疊相鄰表字節(jié)塊的步驟,每個(gè)查找表存儲(chǔ)用于待尋找的不同類(lèi)庫(kù)模式的重疊相鄰表字節(jié)塊。
      36.根據(jù)權(quán)利要求35的方法,其中不同類(lèi)庫(kù)模式包括用于每個(gè)查找表的不同長(zhǎng)度的模式。
      37.根據(jù)權(quán)利要求35的方法,其中不同類(lèi)庫(kù)模式包括用于每個(gè)查找表的不同業(yè)務(wù)流類(lèi)別的模式。
      38.根據(jù)權(quán)利要求37的方法,還包括步驟在模式匹配之前對(duì)數(shù)據(jù)流分類(lèi);其中邏輯組合步驟包括在匹配判定中強(qiáng)調(diào)從查找表收集的那些結(jié)果,該查找表的業(yè)務(wù)流類(lèi)別模式與數(shù)據(jù)流分類(lèi)有關(guān)。
      39.根據(jù)權(quán)利要求35的方法,其中將用于串部分的流字節(jié)塊同時(shí)并行應(yīng)用到多個(gè)查找表。
      40.根據(jù)權(quán)利要求35的方法,其中邏輯組合步驟包括在匹配判定中單獨(dú)處理從每個(gè)查找表收集的結(jié)果的步驟。
      41.根據(jù)權(quán)利要求30的方法,其中以非錨定方式執(zhí)行匹配。
      42.根據(jù)權(quán)利要求41的方法,其中數(shù)據(jù)流包括數(shù)據(jù)包有效載荷,其中執(zhí)行與數(shù)據(jù)包有效載荷有關(guān)的非錨定匹配。
      43.根據(jù)權(quán)利要求41的方法,其中數(shù)據(jù)流包括具有頭和有效載荷的數(shù)據(jù)包,其中執(zhí)行與數(shù)據(jù)包頭和有效載荷有關(guān)的非錨定匹配。
      44.根據(jù)權(quán)利要求30的方法,其中在線(xiàn)路速率大于或等于每秒1G比特的數(shù)據(jù)流上發(fā)生匹配。
      45.根據(jù)權(quán)利要求44的方法,其中在線(xiàn)路速率大于或等于每秒2G比特的數(shù)據(jù)流上發(fā)生匹配。
      46.根據(jù)權(quán)利要求45的方法,其中在線(xiàn)路速率大于或等于每秒2.4G比特的數(shù)據(jù)流上發(fā)生匹配。
      47.一種模式匹配器,包括移位寄存器,連接該移位寄存器以接收包括多個(gè)字節(jié)數(shù)據(jù)流模式的數(shù)據(jù)流,移位寄存器將接收的數(shù)據(jù)流的存儲(chǔ)串部分分成重疊相鄰子串;查找表,通過(guò)移位寄存器訪(fǎng)問(wèn)該查找表以同步并行搜索每個(gè)重疊相鄰子串,查找表產(chǎn)生指示重疊相鄰子串是否存在的每個(gè)搜索的返回;以及累加器,收集來(lái)自查找表的返回并確定多個(gè)字節(jié)數(shù)據(jù)流模式是否匹配多個(gè)字節(jié)庫(kù)模式。
      48.根據(jù)權(quán)利要求47的模式匹配器,其中數(shù)據(jù)流包括多個(gè)不同流的交錯(cuò)包,并且累加器運(yùn)行以進(jìn)行與每個(gè)流有關(guān)的匹配判定。
      49.根據(jù)權(quán)利要求47的模式匹配器,其中數(shù)據(jù)流包括多個(gè)不同流的交錯(cuò)包,每個(gè)包具有使該包和不同流中的某一個(gè)相關(guān)聯(lián)的狀態(tài),模式匹配器判定包狀態(tài),并且累加器在匹配判定中收集與該包所屬的、由判定的狀態(tài)所指示的某個(gè)流相關(guān)聯(lián)的返回。
      50.根據(jù)權(quán)利要求47的模式匹配器,其中以非錨定方式執(zhí)行與數(shù)據(jù)流有關(guān)的、多個(gè)字節(jié)數(shù)據(jù)流模式與多個(gè)字節(jié)庫(kù)模式的匹配。
      51.根據(jù)權(quán)利要求50的模式匹配器,其中在線(xiàn)路速率超過(guò)每秒1G比特的數(shù)據(jù)流上執(zhí)行多個(gè)字節(jié)數(shù)據(jù)流模式與多個(gè)字節(jié)庫(kù)模式的匹配。
      52.根據(jù)權(quán)利要求50的模式匹配器,其中在線(xiàn)路速率超過(guò)每秒2G比特的數(shù)據(jù)流上執(zhí)行多個(gè)字節(jié)數(shù)據(jù)流模式與多個(gè)字節(jié)庫(kù)模式的匹配。
      53.根據(jù)權(quán)利要求47的模式匹配器,其中數(shù)據(jù)流包括多種數(shù)據(jù)字節(jié),移位寄存器還能夠在每個(gè)時(shí)鐘周期中將包括多個(gè)數(shù)據(jù)字節(jié)的塊移入寄存器。
      54.根據(jù)權(quán)利要求47的模式匹配器,其中將每個(gè)多字節(jié)庫(kù)模式分成存儲(chǔ)在查找表中的重疊相鄰表字節(jié)塊,當(dāng)重疊相鄰子串與重疊相鄰表字節(jié)塊中的一個(gè)匹配時(shí),查找表產(chǎn)生指示該重疊相鄰子串存在的返回。
      55.根據(jù)權(quán)利要求54的模式匹配器,其中查找表包括多個(gè)查找表,每個(gè)查找表存儲(chǔ)用于不同類(lèi)庫(kù)模式的重疊相鄰表字節(jié)塊。
      56.根據(jù)權(quán)利要求55的模式匹配器,其中不同類(lèi)庫(kù)模式包括用于每個(gè)查找表的不同長(zhǎng)度的模式。
      57.根據(jù)權(quán)利要求55的匹配模式器,其中不同類(lèi)庫(kù)模式包括用于每個(gè)查找表的不同業(yè)務(wù)流特征的模式。
      58.根據(jù)權(quán)利要求57的匹配模式器,還包括數(shù)據(jù)流處理器,其能夠在模式匹配之前辨別數(shù)據(jù)流的特征,累加器還包括邏輯處理,該邏輯處理在模式?jīng)Q定中強(qiáng)調(diào)從查找表收集的那些返回,該查找表的業(yè)務(wù)流特征模式與數(shù)據(jù)流特征有關(guān)。
      59.根據(jù)權(quán)利要求55的匹配模式器,其中累加器包括用于組合從不同查找表收集的返回的單獨(dú)邏輯處理。
      60.根據(jù)權(quán)利要求47的模式匹配器,還包括雜湊表,在應(yīng)用查找表之前,該雜湊表將每個(gè)流字節(jié)塊的位地址轉(zhuǎn)換成減小的位地址。
      61.根據(jù)權(quán)利要求47的模式匹配器,還包括歷史存儲(chǔ)器,用于存儲(chǔ)以前時(shí)鐘周期中從查找表收集的查找返回,累加器包括邏輯處理,用于將來(lái)自當(dāng)前時(shí)鐘周期的收集返回和來(lái)自以前時(shí)鐘周期的存儲(chǔ)返回組合,以進(jìn)行匹配判定。
      62.根據(jù)權(quán)利要求47的模式匹配器,還包括解碼器,其能夠在模式匹配之前解碼數(shù)據(jù)流的編碼部分。
      63.根據(jù)權(quán)利要求47的模式匹配器,還包括重新組裝緩沖器,其能夠在模式匹配之前重新組合數(shù)據(jù)流中無(wú)次序的數(shù)據(jù)包。
      全文摘要
      一種模式匹配引擎(12)以非錨定方式支持高速(等于至少每秒2.4G比特線(xiàn)(14)速的速度)并行模式匹配操作。優(yōu)選以硬件裝置實(shí)現(xiàn)該引擎(12)。移位寄存器(18)順序接收數(shù)據(jù)流字節(jié)串,這些數(shù)據(jù)流字節(jié)被分成多個(gè)多字節(jié)重疊相鄰流塊(20)。將被搜索的庫(kù)模式字節(jié)(24,25)相似地被分成存儲(chǔ)在查找表(24)中的多字節(jié)重疊相鄰表塊(26)。寄存器將多個(gè)多字節(jié)重疊相鄰流塊(20)并行應(yīng)用到查找表(24),并得到指示每個(gè)流塊(20)是否與查找表存儲(chǔ)的表塊(26)中的一個(gè)匹配的返回。然后邏輯組合(30)并行查找操作的結(jié)果以進(jìn)行匹配判定(34,36)。
      文檔編號(hào)G06K9/68GK1748205SQ200480003481
      公開(kāi)日2006年3月15日 申請(qǐng)日期2004年2月4日 優(yōu)先權(quán)日2003年2月4日
      發(fā)明者杰拉爾德·S.·施特倫伯格, 華金·J.·阿維萊斯 申請(qǐng)人:尖端技術(shù)公司
      網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1