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