專利名稱:一種前綴匹配算法的制作方法
技術領域:
本發(fā)明涉及計算機網絡結構和系統,特別是一種在網絡處理程序 中運行的采用前綴匹配算法的模式匹配運算,所述網絡處理程序需要 內容匹配或者內容過濾。
背景技術:
現在,計算機系統在一個近乎無所不在的互聯環(huán)境中運行,無論 是連接到互聯網和網絡還是通過無線技術互相連接。雖然無時不在的 通信已經為商業(yè)網絡和信息共享創(chuàng)造了無數的新機會,但也同時增加 了破壞網絡安,或者說黑客攻擊,試圖竊取保密信息或者以其他方式 妨礙網絡通信等情況發(fā)生的頻率??紤]到保護信息和服務的重要性,需要大量的工作確保公共安全。 最近,大量以在網絡中偵測和阻止攻擊為目標的計算機程序出現,包 括反病毒內容過濾,防火墻,侵入偵測/防止和網絡保護。幾乎每個現 代安全網絡系統的核心都是一種模式匹配算法,所述模式包括一個內容匹配的特征字符串(signature string)。在模式匹配運算中,正在通過 的包數據流(packettraffic)被用來和一個代碼庫(library)進行比較, 所述代碼庫包含一些已知的可疑的、有威脅的、或危險的包數據流的 模式。 一旦發(fā)現在待檢測的包數據流(screened packet traffic)和代碼 庫中的一個模式之間存在匹配,就會發(fā)出一個警報,并且該匹配的包 數據流就可以在造成任何損害前被捕獲。除了在網絡安全程序中的運 用,模式匹配也用在IP (internet protocol;互聯網協議)路徑中,其中 每個通過該路徑的包數據流被檢索以找到IP地址。遺憾的是,檢査每個包數據流的每個字節(jié)以檢測其是否與一組上 萬個模式中的一個匹配,需要大量的處理資源,包括處理每個包數據 流的時間量存儲量。另外,由于包數據流的速度隨時間不斷增加,為了不限制數據包的流量,模式匹配操作必須以每秒千兆字節(jié)(Gbps)的速度運行??紤]以上因素,所述特征字符串匹配引擎被設計成包括一個 前綴匹配引擎和一個精確匹配引擎。所述前綴匹配引擎,通過比對一 個預編譯過的前綴查詢表檢查包數據流的前綴,并作為預處理器過濾 出大多數包數據流。只有那些其前綴被發(fā)現與在前綴查詢表中的預定 義前綴匹配的包數據流,會在精確匹配引擎中被進一步檢測。因為精 確匹配引擎很少啟動,因此總的包數據流流量被很大提高。雖然前綴匹配算法提供了一個提高流量的解決方案,但是目前的 前綴匹配技術仍不能提供滿意的性能、流量、和靈活性。例如,簡單 的前綴匹配根據所有存儲在前綴査詢表中的前綴,檢査一個包數據流 的前綴。當特征字符串的數量達到幾千個時,所述簡單前綴匹配的性 能會因為大量處理時間和有不利影響的流量而明顯降低。而且,當最 短特征字符串的長度比較小時,簡單的前綴匹配被證實會增加誤判次 數并因此頻繁啟動精確匹配引擎。這樣,前綴匹配引擎就不能提高數 據流量。發(fā)明內容因此,本發(fā)明要解決的技術問題在于,提供一種前綴匹配算法, 其使得前綴匹配判斷切實有效。一個典型的前綴匹配引擎包括一個査詢表, 一個邏輯電路和一個 表項。所述查詢表存儲預定義特征組的前綴信息。所述邏輯電路連接 到所述查詢表,根據輸入流的一部分,讀取表項組在查詢表中預先設 定的數字。所述表項緩存器連接到所述邏輯電路,用來存儲表項組預 定義數字的臨時表項值組。根據所述臨時表項值組,所述邏輯電路判 斷是否找到一個預定義特征組字符可能的匹配。具體地說,本發(fā)明提供了一種用于將輸入流與預定義特征字符串進行匹配的設備,包括一個查詢表,用于把預定義特征字符串的前綴信息存儲在一組表項中;一個邏輯電路,連接至所述査詢表,以根據所述輸入流的一部分讀取査詢表中的表項;一個表項緩存器,連接至所述邏輯電路,以存儲所述預定數量表 項的臨時表項值,其中所述邏輯電路判斷是否找到一個基于臨時表項 值的可能匹配。本發(fā)明還提供了一種將一個輸入流與預定義特征字符串進行匹配 的方法,包括將預定義特征字符串的前綴信息存儲在表項組中;根據所述輸入流的一部分讀取一預定數量的表項;存儲所述預定數量的表項組的臨時表項值;基于所述臨時表項值判斷是否有一個可能匹配。本發(fā)明另提供了一種將一輸入流與預定義特征字符串進行匹配的 系統,包括一個前綴匹配引擎,用于將預定義特征字符串的前綴信息存儲在 一個査詢表的多個表項中,檢査預定數量的表項組以在輸入流中找到與預定義特征字符串一個可能的匹配;以及一個精確匹配引擎,連接至所述前綴匹配引擎,用于收集與可能 匹配有關的前綴信息,并基于收集到的前綴信息作出精確匹配的判斷。上述設備與方法使得前綴匹配判斷切實有效。
本發(fā)明的優(yōu)點可以從如下詳述的典型實施例中明顯得出,其中對 發(fā)明的詳述應與相應的附圖一起理解,其中圖1所示是根據本發(fā)明的一個實施例的一個前綴匹配引擎的方框圖。圖2所示是根據本發(fā)明的一個實施例的所述圖1中一個前綴査詢表的結構。圖3所示是根據本發(fā)明的一個實施例的在前綴査詢表中一個表項 的數據結構。圖4所示是根據本發(fā)明的一個實施例的圖1中前綴匹配引擎的一 個時序圖。圖5是根據本發(fā)明的一個實施例的一個顯示前綴匹配條件的表。
具體實施方式
現在將要對本發(fā)明的具體實施例詳細說明,雖然本發(fā)明將會以相 關實施例進行表述,但是可以理解的是,本發(fā)明并不局限于所述實施 例中。相反,本發(fā)明意在覆蓋其他任何包含在由所附權利要求書所定 義的本發(fā)明的主旨和范圍內的各種變型、修改和等同方式。圖1顯示了一個典型前綴匹配引擎100的框圖,所述前綴匹配引 擎100包括一個前綴邏輯電路103, 一個前綴査詢表105和一個表項緩 存器107,有效載荷包數據流從輸入流模塊101中流出。所述前綴匹配 引擎100連接到輸入流模塊101,并用于檢査在一個有效載荷包數據流 中,是否有被認為對網絡有害的預定義特征字符串,例如互聯網蠕蟲 或計算機病毒的存在。最后,每個包數據流最左邊部分的前綴字符串 都被所述前綴匹配引擎100所檢査。如果在前綴字符串檢查后得到的 是否定結果,則說明被檢査的包數據流與預定義的所有特征字符串都 不匹配,從而被檢査的包數據流就能夠被濾出。如果在前綴字符串檢 査后,得到的是肯定結果,則說明被檢査的包數據流可能與預定義的 特征字符串中的一個匹配。當發(fā)現一個可能的匹配時,關于被檢査包 數據流的信息就被直接從前綴匹配引擎100傳送到一個輸出模塊109, 所述信息從模塊109進一步被輸送給一個精確匹配引擎(圖中未示出) 以對照預定義特征字符串進行精確包數據流檢查。為了實現所述前綴字符串檢查,所述前綴邏輯電路103連接到所 述輸入流模塊101并因此接收輸入流的一部分,所述輸入流的線速率 能接近或超過l吉比特(Gbits) /秒。根據輸入流的所述部分,所述前 綴邏輯電路103在連續(xù)時鐘周期中讀取所述前綴査詢表105中預定數 量的表項,并把接收到的表項的值存儲在表項緩存器107中。這里, 前綴査詢表105為一個預編譯快速存儲器,例如靜態(tài)隨機存儲器 (SRAM)或減少遲延的動態(tài)隨機存儲器(RLDRAM),用于存儲所述預 定義特征字符串的前綴信息。前綴査詢表中的每個表項包括一個位置 段, 一個長度段和一個地址段,下文將會對此加以詳述。通過檢査存儲在表項緩存器107中的臨時表項值的位置段,前綴邏輯電路103能判斷是否找到與預定義特征組字符串中的一個可能匹配。圖2顯示了前綴査詢表105的一個典型結構200,所述前綴査詢 表105優(yōu)選的組成結構在于其中的預定義特征字符串的前綴可以作為 地址瀏覽,這樣,前綴査詢表105就可以作為一個可尋址存儲器工作。 例如,前綴"ABC"被視作表項201的地址,則當提供有效的地址"ABC" 時,表項201可以被讀取。相似地,前綴"BCD"被視作表項203的地址, 前綴"CDE"被視作表項205的地址。本領域技術人員容易理解,當存儲空間受限制時,前綴査詢表105 不能提供大量被編址成預定義特征字符串的前綴的表項。因此,可以 對前綴査詢表105采用哈希處理,哈希處理可以把所需的大量的、不 能控制的表減小成一個小的可控制的索引。在處理過程中,有可能兩 個或者更多的表項會生成相同的哈希索引并且這些表項被存儲在哈希 表中相同的位置。例如,前綴查詢表105可以采用CRC(cycle redundancy check;循環(huán)冗余匹配)的方式進行哈希處理,在CRC哈希處理后,前 綴"ABC"對應表項201的索引,并且當提供地址"ABC"時,也可以讀取 表項201。與此類似,前綴"BCD"對應表項203的索引,前綴"CDE"對 應表項205的索引。圖3是在前綴查詢表105中一個表項的典型數據結構300,如前 所述,每個表項包括位置段,長度段和地址段。因此,表項的數據結 構包括位置比特組,長度比特組和地址比特組。位置比特組,例如從 比特O到比特M,存儲屬于同一個前綴的位置信息。例如,由"ABC" 索引的表項201的位置比特N,表示前綴"ABC"是否出現在一個預定義 特征字符串的位置N中。長度比特組存儲屬于同一個前綴的長度信息。 例如,由"ABC"索引的表項201的長度比特組表示所有以前綴"ABC" 開頭的特征字符串中最短的預定義特征字符串的長度。地址比特組存 儲屬于同一個前綴的地址信息,例如,由"ABC"索引的表項201的地址 比特組表示一組以前綴"ABC"開頭的預定義特征字符串的地址。圖4顯示前綴匹配引擎100的一個典型時序圖400。假設輸入流 的一個部分是"ABCDEFGH",前綴邏輯電路103會分別以"ABC","BCD", "CDE", "DEF", "EFG,,和"FGH"作為地址,在連續(xù)時鐘周期內讀 取前綴查詢表105。即數據部分"ABCDEFGH"被分割成6個相鄰重疊 的字符串,并且每個相鄰重疊的字符串對應前綴査詢表105索引中的 一個。本領域技術人員容易理解,用于前綴匹配的輸入流的部分長度 取決于設計參數,例如輸入流的線速率、所需流量等。另外,每個相 鄰重疊字符串的字節(jié)長度取決于前綴查詢表105中每個索引的字節(jié)長 度。當每個索引分別為"ABC", "BCD", "CDE", "DEF", "EFG"和 "FGH"的表項被讀取時,前綴邏輯電路103接收的表項值被進一步存儲 在表項緩存器107中。前綴邏輯電路103可以査詢相關的臨時表項值 的位置比特,以便判斷是否發(fā)現與預定義特征組字符串之一的可能的 匹配。圖5是一個表示前綴匹配條件的典型表500。假設輸入流的一個 部分是"ABCDEFGH",表項緩存器107存儲索引分別為"ABC", "BCD", "CDE", "DEF", "EFG"禾卩"FGH"的臨時表項值。為判斷字符串"ABC" 是否是一個預定義特征字符串的前綴,前綴邏輯電路103會根據由 "ABC"索引的臨時表項值的長度比特組,識別用于檢査的相關表項 值。例如,如果長度比特組表示前綴為"ABC"的最短特征字符串具有 3字節(jié),那么前綴邏輯電路103會檢査由"ABC"索引的臨時表項值的位 置比特0,以判斷前綴"ABC"是否匹配。如果長度比特組表示前綴為 "ABC"的最短特征字符串具有4個字節(jié),那么前綴邏輯電路103不僅會 檢査由"ABC"索引的臨時表項值的位置比特O,還要檢査由"BCD"索引 的臨時表項值的位置比特1,以便判斷出前綴"ABC"是否匹配。與此類似,如果長度比特組表示前綴為"ABC"的最短特征字符串 具有8個字節(jié),那么前綴邏輯電路103不僅會檢査由"ABC"索引的臨時 表項值的位置比特0,還會檢查由"BCD"索引的臨時表項值的位置比 特1,由"CDE"索引的臨時表項值的位置比特2,臨時表項值由"DEF" 索引的位置比特3,由"EFG"索引的臨時表項值的位置比特4,和由 "FGH"索引的臨時表項值的位置比特5。在這種條件下,只有在如圖5 所示,所有被檢査的比特組都是邏輯1時,前綴邏輯電路103才能判斷出以"ABC"開始的輸入流與前綴為"ABC"的預定義特征組字符串匹 配。這樣, 一個可能與預定義特征組字符串之一的匹配就會被發(fā)現, 并且包含在這些臨時表項值的位置和地址信息能夠被傳給輸出模塊 109并接著進入精確匹配引擎(圖中未示出),用來輔助精確匹配檢査。 進一步而言,添有星號(*)的比特在前綴匹配檢査中是不考慮(NC)的 比特。然而,如果沒有遇到在圖5中所示的前綴匹配條件,所述前綴 匹配邏輯電路103能判斷以"ABC"開始的輸入流和前綴為"ABC"的預 定義特征組字符串不匹配,并且以"ABC"開始的輸入流會被過濾出并被 丟棄。這樣,精確匹配引擎(圖中未示出)就不會啟動。另外,雖然 位置比特組的有效邏輯如圖5所示被設為邏輯1,但是本領域技術人員 容易理解,有效邏輯是可編程的并且因此可被編程為邏輯0。以類似的方式,為了判斷字符串"BCD"是否是預定義特征字符串 的一個前綴,前綴邏輯電路103會根據由"BCD"索引的臨時表項值的長 度比特組,識別需要被檢査的表項值。例如,如果長度比特組表示前 綴為"BCD"的最短特征字符串具有3個字節(jié),前綴邏輯電路103會檢查 臨時表項值由"BCD"索引的位置比特0,以便作出前綴"BCD"匹配的判 斷。如果長度比特組顯示前綴為"BCD"的最短特征字符串為4字節(jié),那 么前綴邏輯電路103不僅會檢查臨時表項值由"BCD"索引的位置比特 0,還檢査臨時表項值由"CDE"索引的位置比特1,以便判斷前綴"BCD" 是否匹配。從以上說明可以理解,當判斷是否以"ABC"開始的輸入流是一個 可能的匹配時,前綴匹配引擎100比起僅僅檢查"ABC"的傳統的前綴匹 配算法來說,要檢査更多的字節(jié)(例如"ABCDEFGH")。隨著輸入流 實際被檢查長度的增加,明顯減少了短前綴匹配的誤判,并且因此, 前綴匹配引擎100不再對最短特征字符串的判斷過分敏感。實驗結果 顯示使用如上所推薦的前綴匹配算法,超過99%的輸入流能在嚴格的 條件下被濾出。另外,前綴匹配引擎100在非常大量的預定義特征字 符串的情況下仍舊可以維持其性能。并且,在后續(xù)階段,前綴匹配引 擎IOO支持任意類型的精確匹配算法。進一步而言,前綴匹配引擎100 特別適用于現場可編程門陣列(FPGA)或者特定用途集成電路(ASIC)并允許低配置的FPGA/ASIC資源。本領域技術人員可以理解,如上所述假設的3字節(jié)索引,2字節(jié) 重疊和輸入流的8字節(jié)部分等是本領域技術的典型實施方式。使用者 可以根據需求和滿足所要檢查的輸入流的處理需要和硬件資源,就索 引大小,字節(jié)重疊,和輸入流的字節(jié)部分選擇任何合適的組合。本發(fā)明說明書所用的術語和表述是用來對發(fā)明本身進行說明而非 限定,而且不排除任何與所述技術術語和表述(或者部分表述)等同 的技術,其他根據本發(fā)明做的任何修改、變型和可選擇的方式,都屬 于本發(fā)明權利要求書要求保護的范圍。
權利要求
1.一種用于將輸入流與預定義特征字符串進行匹配的設備,包括一個查詢表,用于把預定義特征字符串的前綴信息存儲在一組表項中;一個邏輯電路,連接至所述查詢表,以根據所述輸入流的一部分讀取查詢表中的表項;一個表項緩存器,連接至所述邏輯電路,以存儲所述預定數量表項的臨時表項值,其中所述邏輯電路判斷是否找到一個基于臨時表項值的可能匹配。
2. 根據權利要求1所述的設備,其特征在于,還包括 一個輸出模塊,連接至所述邏輯電路,用于當找到所述可能的匹配時收集由臨時表項值表示的前綴信息,其中所述由臨時表項值表示 的前綴信息被進一步傳送到一個精確匹配引擎進行精確特征匹配。
3. 根據權利要求l所述的設備,其特征在于,所述査詢表中的所 述表項是以索引的形式組織的,并且所述表項的索引對應所述預定義 特征字符串的前綴。
4. 根據權利要求l所述的設備,其特征在于,所述査詢表對應一 個預編譯的快速存儲器。
5. 根據權利要求l所述的設備,其特征在于,所述査詢表是被哈 希處理的。
6. 根據權利要求l所述的設備,其特征在于,輸入流的所述部分 被分割成預定數量的相鄰重疊字符串,并且所述預定數量的相鄰重疊 字符串分別對應所述預定數量的表項的索引。
7. 根據權利要求l所述的設備,其特征在于,所述預定數量的表項在連續(xù)時鐘周期內被讀取。
8. 根據權利要求l所述的設備,其特征在于,所述每個所述查詢 表中的表項包括一個位置段, 一個長度段和一個地址段,其中位置段的位N表示表項的索引是否對應某一預定義特征字符串中的位置N, 所述長度段存儲最短預定義特征字符串的長度,其中所述最短預定義 特征字符串的前綴對應所述表項的索引,并且所述地址段存儲一列預 定義特征字符串的地址,其中所述預定義特征字符串的前綴對應所述 表項的索引。
9. 根據權利要求l所述的設備,其特征在于,所述每個臨時表項 值包含位置比特組和長度比特組,所述長度比特組能夠確定與所述可 能的匹配判斷相關的表項值,并且每個與臨時表項值相關的預設位置 比特被檢查,以便作出可能匹配的判斷。
10. 根據權利要求1所述的設備,其特征在于,當臨時表項值組 滿足一個預設的條件時,則找到一個可能的匹配。
11. 根據權利要求1所述的設備,其特征在于,所述匹配設備以 現場可編程門陣列或者特定用途集成電路的方式實施。
12. —種將一個輸入流與預定義特征字符串進行匹配的方法,其 特征在于,包括將預定義特征字符串的前綴信息存儲在表項組中; 根據所述輸入流的一部分讀取一預定數量的表項; 存儲所述預定數量的表項組的臨時表項值; 基于所述臨時表項值判斷是否有一個可能匹配。
13. 根據權利要求12所述的方法,其特征在于,還包括 對所述預定義特征字符串的前綴信息執(zhí)行一個哈希處理。
14. 根據權利要求12所述的方法,其特征在于,對所述預定數量表項的在連續(xù)時鐘周期內讀取的。
15. 根據權利要求12所述的方法,其特征在于,還包括 將由臨時表項值表示的前綴信息傳送到一精確匹配引擎;并且 基于接收到的前綴信息,在精確匹配引擎中進行精確匹配判斷。
16. 根據權利要求12所述的方法,其特征在于,還包括 使用所述預定義特征字符串的前綴對所述表項組進行索引。
17. 根據權利要求12所述的方法,其特征在于,還包括 將輸入流的一部分分割成預定數量的相鄰重疊字符串,其中預定數量的相鄰重疊字符串對應預定數量的表項索引。
18. 根據權利要求12所述的方法,其特征在于,當臨時表項值組符合一預設條件時,確定一可能的匹配。
19. 根據權利要求12所述的方法,其特征在于,所述每個臨時表項值包含位置比特組,長度比特組和地址比特組。
20. 根據權利要求12所述的方法,其特征在于,所述作出一可能匹配的判斷步驟還包括確定與所述可能匹配判斷相關的臨時表項值;并且 檢査與每個相關臨時表項值的預設位置比特,以便作出可能匹配 的判斷。
21. —種將一輸入流與預定義特征字符串進行匹配的系統,其特征在于,包括一個前綴匹配引擎,用于將預定義特征字符串的前綴信息存儲在一個查詢表的多個表項中,檢査預定數量的表項組以在輸入流中找到 與預定義特征字符串一個可能的匹配;以及一個精確匹配引擎,連接至所述前綴匹配引擎,用于收集與可能 匹配有關的前綴信息,并基于收集到的前綴信息作出精確匹配的判斷。
22. 根據權利要求21所述的系統,其特征在于,所述多個表項以 索引的形式組織,所述輸入流的一部分被分割成預定數量的相鄰重疊 字符串,并且預定數量的表項的索引對應預定數量的相鄰重疊字符串。
23. 根據權利要求21所述的系統,其特征在于,所述精確匹配引 擎只有在前綴匹配引擎找到可能的匹配時才啟動。
24. 根據權利要求21所述的系統,其特征在于,所述前綴匹配引 擎以現場可編程門陣列或特定用途集成電路的方式運行。
25. 根據權利要求21所述的系統,其特征在于,所述的精確匹配 引擎以任意的精確匹配算法運行。
全文摘要
本發(fā)明揭示了一種前綴匹配算法和方法,所述前綴匹配引擎用來將輸入流前綴和預定義特征前綴進行匹配,其包括一個前綴邏輯電路,一個存儲預定義特征字符串前綴信息的前綴查詢表和一個表項緩存器。根據輸入流的一部分,所述前綴邏輯電路能夠讀取在前綴查詢表中表項組的一個預設數字,并將表項組預設數字的表項值組存儲在表項緩存器中。通過檢查表項緩存器中的臨時表項值組,所述前綴邏輯電路判斷是否找到一個前綴匹配,上述方法使得前綴匹配判斷切實有效。
文檔編號G06F17/30GK101272386SQ20081008800
公開日2008年9月24日 申請日期2008年3月24日 優(yōu)先權日2007年3月23日
發(fā)明者符永貴, 邢獻武 申請人:凹凸電子(武漢)有限公司