JP2007537626A - 深いパケットフィルタリングのためのプログラム可能なハードウエア - Google Patents

深いパケットフィルタリングのためのプログラム可能なハードウエア Download PDF

Info

Publication number
JP2007537626A
JP2007537626A JP2007509635A JP2007509635A JP2007537626A JP 2007537626 A JP2007537626 A JP 2007537626A JP 2007509635 A JP2007509635 A JP 2007509635A JP 2007509635 A JP2007509635 A JP 2007509635A JP 2007537626 A JP2007537626 A JP 2007537626A
Authority
JP
Japan
Prior art keywords
suffix
prefix
input
input data
pattern
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007509635A
Other languages
English (en)
Other versions
JP4755175B2 (ja
Inventor
エイチ. チョ,ユン
エイチ. マンギオーン−スミス,ウィリアム
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of California
Original Assignee
University of California
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of California filed Critical University of California
Publication of JP2007537626A publication Critical patent/JP2007537626A/ja
Application granted granted Critical
Publication of JP4755175B2 publication Critical patent/JP4755175B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2854Wide area networks, e.g. public data networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

高速ネットワーク・トラフィック用の動的なパターンのサーチを最適化するように設計された改良された深いパケット・フィルター・システム。改良された深いパケット・フィルター・システムは、最適化されたロジック面積を有するハードウエアによるシステムである。1つの最適化技術は、必要なゲートの個数を低減するように設計されたハードウエアにおける共通のサブ・ロジックの共有である。他の最適化技術は、パターン・セットの部分を記憶する組み込みメモリの使用であり、ゲートの低減にもなる。ロジック面積の低減は、深いパケット・フィルター・システムを単一のフィールド・プログラム可能アレイ・チップ上に実現するのを可能にする。

Description

連邦後援の研究/開発に関する声明
本発明は、国立科学基金(NSF)により査定された認可第0220100の下で政府の援助で行われた。政府はこの発明に関して一定の権利を有する。
発明の背景
猛威を振るっているネットワーク・ウイルスは、ネットワーク・パケットのヘッダのみを調べるこれまでのファイア・ウォールはコンピュータを侵入から防護するには十分でないことを示している。新しい攻撃の多くは、静的なヘッダ部分でなく、各種の動的な配置におけるパケットのペイロード部分に隠れている。例えば、インターネットで発見された多くの最近のウォーム(虫)は、未知の位置のパケット・ペイロードに組み込まれたアプリケーションレベルの攻撃である。このような攻撃のためのパケット・ヘッダは、パケットが違法であることを示しておらず、実際適法なパケットのように見える。従って、多層インスペクション・ユニットとも呼ばれる静的なパケット・ヘッダを調べるだけでなくペイロード全体を通して所定のパターンを調べる深いパケット・インスペクション(検査)・ユニットを有するセキュリティ・システムを有することが望ましい。
図1は、典型的な多層(マルチ・レイヤー)インスペクション・システムのブロック図である。このシステムは、入力パケット20を受けて、パケットのレイヤー3−7を、すべてのパケット・フィルタ・パターン30に対して調べる。パターン30のいずれか1つがレイヤー3−7における情報とマッチ(一致)すれば、パケットは通過することが許されない。そうでなければ、パケットは通過することが許される。
マルチ・レイヤーインスペクション・ユニット20は、ルール・ベースのパケット・フィルタリング・ソフトウエアを走らせる1つ以上の汎用プロセッサの形で実現される。しかし、ソフトウエア・システムにより使用される徹底的なパターン・インスペクション検出アルゴリズムのために、ソフトウエアで1Gbps以上の高速ネットワーク・トラフィックをフィルタするのが難しいことがしばしばある。特に、パターンの位置が予め決まっていないため、パターンはサーチ(調査)・プロセスの間ペイロードのすべてのバイト・アライメント(配置)から始めて比較しなければならない。このように、ルール・ベースのパケット・フィルタリング・ソフトウエアは、このような高速ネットワークで使用するのは現実的でない。
より高速のネットワークをサポートする従来技術のカスタム(既製)ハードウエア・チップが存在する。これらはパケットの静的なフィールドのサーチに基づくパケット分類器として使用すると効率的であるが、深いパケット・フィルタで必要な動的なパターン・サーチの候補としては不十分である。これは、必要とするパターン・チェック数が増加するに従って性能のボトルネックとなるフォン・ノイマン・アーキテクチャで実行するシーケンシャル・アルゴリズムを行うことに主として原因がある。
従って、高速ネットワークのための改良された深いパケット・フィルタ・システムが望まれている。
本発明は、入力データの第1の非ヘッダ部分を接頭パターンと比較するように構成された接頭サーチ・ロジックを有する深いパケット・フィルタに向けられる。このフィルタは、複数のサフィックス・パターンを記憶するメモリと、前記入力データの前記第1の非ヘッダ部分の前記接頭パターンとの一致に基づいてサフィックス・インデックスを発生するアドレス・インデックスと、を更に有する。フィルタは、前記入力データの第2の非ヘッダ部分を、前記発生されたサフィックス・インデックスに基づいて特定されたサフィックス・パターンと比較するように構成されたコンパレータ・ロジックを、更に備える。前記入力データは、前記第2の非ヘッダ部分の前記比較に基づいて通過を許可されるか許可されない。
1つの実施例によれば、前記接頭サーチ・ロジックは、前記入力データの前記第1の非ヘッダ部分を複数のサフィックス・パターンと並列に比較する。これは、前記入力データの前記第1の非ヘッダ部分の複数のバイトを前記複数のサフィックス・パターンのそれぞれの複数のバイトと並列に比較することによりなされる。
1つの実施例によれば、前記接頭サーチ・ロジックは、前記入力データの前記第1の非ヘッダ部分の複数のバイトを前記複数のサフィックス・パターンのそれぞれの異なるバイト・アライメントと並列に比較する。
1つの実施例によれば、前記接頭サーチ・ロジックは、前記接頭パターンの特定のサブストリングを検出するためのデコーダのチェーンを有する。最適化のために、前記特定のサブストリングを検出するための前記デコーダのチェーンは、前記特定のサブストリングを有する異なる接頭パターンを検出するように構成された複数の接頭サーチ・ロジック・ユニットにより共有される。
1つの実施例によれば、前記接頭サーチ・ロジック、メモリ、前記サフィックス・インデックスを発生するための手段、及び前記コンパレータ・ロジックは、単一のフィールド・プログラム可能ゲート・アレイ上にすべて組み込まれている。
1つの実施例によれば、前記メモリは、ソートされたサフィックス・インデックスのリストを記憶し、前記リストの偶数入力におけるパターンは前記メモリの第1の入力から最後の入力までに記憶され、前記リストの奇数入力におけるパターンは前記メモリの前記最後の入力から前記第1の入力までに記憶される。
1つの実施例によれば、前記アドレス・エンコーダは、前記接頭サーチ・ロジックの出力につながれたORゲートの2値ツリーから導出されたロジック式に基づいて、前記サフィックス・インデックスの各ビットを発生する。
1つの実施例によれば、前記接頭サーチ・ロジックはバイト・アライメントを示し、前記コンパレータ・ロジックは、前記指示されたバイト・アライメントに従って前記入力データの前記第2の非ヘッダ部分をシフトするシフタを有する。
1つの実施例によれば、前記入力データの前記第1及び第2の非ヘッダ部分は、前記データのペイロード部分である。
他の実施例によれば、本発明は、複数のパターンを接頭部分とサフィックス部分に区分けし、前記複数のパターンのそれぞれの前記サフィックス部分をメモリに記憶し、入力データの第1の非ヘッダ部分の少なくとも一部を前記複数のパターンのそれぞれの前記サフィックス部分の少なくとも一部と並列に比較し、前記入力データの前記第1の非ヘッダ部分の特定パターンの接頭部分とのマッチに基づいてサフィックス・インデックスを発生し、前記サフィックス・インデックスに基づいて前記メモリ内に記憶された前記特定のパターンのサフィックス部分を特定し、前記入力データの第2の非ヘッダ部分を前記特定されたサフィックス部分と比較し、前記第2の非ヘッダ部分の前記特定されたサフィックス部分との比較に基づいて、前記入力データを進めるか又は進めない深いパケット・フィルタリング方法に向けられる。
本発明のこれら及び他の特徴、態様及び利点は、以下の詳細な説明、請求の範囲、付属の図面について考慮された時により十分に理解されるであろう。もちろん、本発明の実際の範囲は、請求の範囲により定義される。
詳細な説明
本発明は、例えば1Gbps以上のネットワーク・トラフィックのような高速ネットワーク・トラフィックのための動的なパターンのサーチ(調査)を最適にするように設計された改良された深いパケット・フィルタ・システムに関する。1つの実施例によれば、改良された深いパケット・フィルタ・システムは、ハードウエアを介して実現される。このようなハードウエアに基づくシステムの設計における1つの挑戦は、多数のリソースが多数のパターン・セットをサポートするのに一般に必要とされているということである。このようなパターン・セットは、例えば、Snortとして普通に知られているオープン・ソース・ネットワーク侵入検出システムにより提供される。
1つの実施例によれば、改良されたシステムは、いくつかの最適な技術を適用することによりハードウエアの必要な論理部分を低減する。1つの最適化技術は、使用されるゲート数を低減するハードウエア設計における共通の副論理(サブ・ロジック)の共有である。他の最適化技術は、ゲートの低減になるパターン・セットの部分を記憶するための組み込みメモリの使用である。
ロジック領域の低減は、深いパケット・フィルタ・システムを単一チップで実現するのを可能にする。侵入検出のためのパターン・セットは新しいウィルス及びウォームの出現に対して常時更新されるため、チップは速く及び容易に再プログラムされるように使用されることが望ましい。従って、本発明の1つの実施例では、使用されるチップは、単一のフィールドでプログラム可能なゲート・アレイ(FPGA)である。しかし、当業者であれば、本発明がFPGAに限定されず、速く及び容易に再プログラム可能な他の類似のチップも使用できることが理解される。
図2は、改良された深いパケット・フィルタ・システムが本発明の例示の実施例に従って採用されたネットワークを示す。図示のネットワークでは、パケットは、例えば、インターネットのような信頼できない媒体40を介して伝達され、例えばローカル・エリア・ネットワークにおける機器のようなネットワーク機器50を侵入から防護するように構成されたファイア・ウォール45により受け取られて検査される。1つの実施例によれば、ファイア・ウォールは、パケットを止めるか又は通過を許可するかを決定するために、パケットのヘッダのみを検査するだけでなく、ペイロード部分も検査する改良された深いパケット・インスペクション・システム60が備えられている。1つの実施例によれば、ファイア・ウォールは、改良された深いパケット・インスペクション・システム60を補助するための他の従来の侵入検出及び防護機構も備えられている。
本発明の1つの実施例では、改良された深いパケット・インスペクション・システムは、高速のルータ又はスイッチも組み込まれている。システムにこのようなルータ又はスイッチを組み込むことにより、既知のアプリケーションレベルの攻撃の多くはフィルタで除去される。
図3は、本発明の1つの実施例の改良された深いパケット・フィルタ・システム60の概略ブロック図である。図示の深いパケット・フィルタ・システムは、並列に接続された各種のインスペクション・モジュール100a−100n(まとめて参照番号100で表す)で構成されている。この方法では、各インスペクション・モジュールは、各クロック・サイクルにおいて、入力データの一部を対象(ターゲット)パターン(ルール又はサインという場合もある)の所定のセット(組)に対して比較する。1つの実施例によれば、各インスペクション・モジュールは、単一Snortルール・サインを実現するための論理を有する。
入力パケット・データ102は、32ビットのバス100を介して32ビットのレジスタ112に送られる。レジスタに保持されたデータは、その後マッチ(一致)検出のためにインスペクション・モジュール100a−100nに並列に進められる。
本発明の1つの実施例によれば、各インスペクション・モジュール100は、入力データのペイロード部分を特別なルール・パターンに対して比較し、その結果をアドレス・エンコーダ108に送る動的なパターン・サーチ・エンジン104で構成される。本発明の1つの実施例によれば、サーチ・エンジン104は、各種の並列にパイプライン化された一連の再構成可能なディスクリート(個別の)・ロジックを有する。
アドレス・エンコーダ108は、各インスペクション・モジュールからマッチ指示を受け取り、検出されたパターンを示すパターンIDを出力する。または、アドレス・エンコーダ108は、マッチがあったかを示すだけのORゲートで置き換えることも可能である。マッチ指示は、その後ユーザに警告するか及び/又は入力パケットを止めるのに使用される。
動的なパターン・サーチ・エンジン104は、入力データ102の静的なヘッダ部分でヘッダ情報の特別なタイプをサーチする(探す)1つ以上の静的なヘッダ・パターン検出器106a−106dと一緒にも動作する。検出したヘッダ情報に基づいて、動的なパターン・サーチ・エンジン104による深いパケット・インスペクションが可能になるか又はそうでない。例えば、静的なヘッダ検出器は特別な物理的なアドレス、プロトコル、IPアドレス、ポート番号などをサーチする。
本発明の1つの実施例によれば、動的なパターン・サーチ・エンジン104は、異なるバイト・オフセットで特定のパターンをサーチするように構成されたデコーダのパイプライン化されたチェーンとして実現される。図4は、本発明の1つの実施例のデコーダによるパターン・サーチ・エンジン104aの動作図である。サーチ・エンジン104aは、入力データを特定のサインと比較するサブストリング(部分列)コンパレータ(比較器)のパイプライン化されたチェーン200を有する。1つの実施例では、再構成可能なロジックが使用されるため、各個別のコンパレータ202は1バイトのデータを検出する8から1(8-to-1)のデコーダで実現される。
図示のデコーダによるパターン・サーチ・エンジンは、ストリング”PATTERNS”をサーチするように構成されている。図示の例では、スループットを増加するように、4バイトのデータがパイプラインの各ステージ/チェーンで合わされる。入力データの多重バイトを提供するデータ・パス(経路)のため、同一のデータがバスの異なるバイト・アライメントで検査されなければならない。このように、サブストリング・コンパレータ204の4つの異なるセットが各パイプライン・ステージで使用され、4バイトの入力データのすべての異なるバイト・オフセットを並列に検査する。各マッチ結果は、その後サブストリング・コンパレータ200の各セットにつながる1ビット・レジスタ206に送られる。
図示の例では、32ビット・レジスタ112を構成する各8ビット・レジスタは、入力データ・ストリーム(流)のASCIIキャラクタを記憶する。レジスタAは第1のクロック・サイクルの間入力データを示し、レジスタBは第2のクロック・サイクルの間入力データを示し、レジスタCは第3のクロック・サイクルの間入力データを示す。同時に、パイプライン化されたレジスタA、B、及びCの内容は、ストリング・ストリーム”PATTERNS”を表す。
図示の例での第1のサイクルの間、サブストリング”PAT”は、列1に異なるバイト・オフセットを有する4個の異なるサブストリングと比較される。すべての1ビットレジスタ202が0に初期化されているので、もし列2及び3にマッチパターンがあっても結果はラッチされない。この例では、サブストリング”PAT”とマッチする行1で列2のコンパレータ200aのセットが”1”の結果値を生じる。この値は対応する1ビット・レジスタ202aを通してラッチされ、1ビット・レジスタの次の列を動作可能にする。
第2のサイクルの間、レジスタBにおけるサブストリングはレジスタAにラッチされる。サブストリングは次にすべてのパターン・サブセットと比較される。しかし、ラッチされたコンパレータの結果だけが、行1のコンパレータと行2の列2のコンパレータのセット200bのすべてである。パターンが第1のサイクルでレジスタBの内容で実際に開始してしまう可能性のために、行1のすべてのレジスタを可能にすることが望ましい。コンパレータ200bのセットでのマッチパターンは、”1”の値を発生し、それは対応する1ビットレジスタ202bを通してラッチされ、1ビットレジスタの次の行を可能にする。
第3のサイクルの間、レジスタCにおけるサブストリングはレジスタAにラッチされる。行3の列2のコンパレータ200cのセットで構成されたマッチパターンはアドレス・エンコーダ108に”1”の値を送る。
上記のように、ハードウエアによる深いパケット・フィルタ・システムの設計における挑戦の1つは、多数のロジック・リソースを必要とするということである。例えば、Snortルール・セットに2207個のサインを組み込むためには、最大のFPGAを12個以上も必要とするのが一般的である。このように、本発明の1つの実施例によれば、深いパケット・フィルタ・システム60を単一のFPGA上に組み込むのを可能にするために、各種の最適化技術が使用される。このような最適化技術の1つは、サブストリング・コンパレータの共有を可能にするデコーダによるパターン・サーチ・エンジン104aを設計することである。再度図4に示した設計を参照すると、同一のバイト・アライメントのためのサブストリング・コンパレータのすべてのセットは、同一の入力ピンに接続されている。これらのピンのいくつかは同一のサブストリングをチェックする。従って、サブストリング・コンパレータの二重のセットは、設計の機能性を失うこと無しに安全に取り除くことができる。
1つの実施例によれば、サブストリング・コンパレータの二重のセットを除去するための第1のステップの1つは、各ターゲット・ストリングを1から4バイトのセグメントのセットに分割することである。次に、唯一のセグメントのセットが、元のセットから取り出される。唯一のセグメントのすべては、サブストリング・コンパレータの唯一のセットに作り直される。最後に、サブストリング・コンパレータの出力は対応する動的なパターン・サーチ・エンジン104に進められる。
図5Aは、本発明の1つの実施例での、異なるバイト・アライメントでパターン”BABAB”及び”ABAB”をチェックするようにそれぞれ構成された2個のデコーダによるパターン・サーチ・エンジン104bを示す。図示を簡単にするために、サブストリング・コンパレータの各セットにおける8ビットの関係するコンパレータが示されている。
図示の例では、二重のサブストリング・コンパレータのセットの4つのペアがあり、それらは、サブストリング”ABAB”をチェックするサブストリング・コンパレータ・セット304a、304bと、サブストリング”BAB”をチェックするサブストリング・コンパレータ・セット306a、306bと、サブストリング”AB”をチェックするサブストリング・コンパレータ・セット308a、308bと、サブストリング”B”をチェックするサブストリング・コンパレータ・セット310a、310b、である。同一のバイト・アライメントのための二重のサブストリング・コンパレータのセットの各ペアは同一の入力ピンに接続されているため、各ペアからの1つのサブストリング・コンパレータのセットが問題無しに除去されてANDゲートで置き換えられる。
図5Bは、図5Aのサブストリング・コンパレータのセットを示すが、二重のセットは除去されている。図示の例では、サブストリング・コンパレータのセット304aは、サブストリング・コンパレータのセット304bからの出力を入力として受けるANDゲート356で置き換えられる。サブストリング・コンパレータのセット310bは、サブストリング・コンパレータのセット304aからの出力を入力として受けるANDゲート354で置き換えられる。サブストリング・コンパレータのセット308bは、サブストリング・コンパレータのセット308aからの出力を入力として受けるANDゲート352で置き換えられる。サブストリング・コンパレータのセット306bは、サブストリング・コンパレータのセット306aからの出力を入力として受けるANDゲート350で置き換えられる。
本発明の1つの実施例によれば、デコーダによるパターン・サーチ・エンジンのロジック面積を低減するのに使用される他の最適化技術は、同一のバイト・アライメント内の個別のコンパレータを共用するのを可能にするようにエンジンを設計することである。例えば、図5Bのデコーダによるパターン・サーチ・エンジン104b、104cでは、特定の入力ピンから入力を受ける第1のパイプライン・ステージにおける”B”コンパレータ360の出力は、同一の入力ピンからの入力を受ける第2のパイプライン・ステージにおける2個の他のコンパレータ304a、362のために再利用される。これに関して、冗長なコンパレータ304a、362は、”B”コンパレータ360からの出力を入力として受けるANDゲートで置き換えられる。図5Bに示した例示のサーチ・エンジン104b、104cにおける全ての二重部分を除去した後、機能的に等価な設計が8個の8ビットコンパレータのみで得られ、そこでは各8ビットコンパレータは2個の4ビットの再構成可能なルック・アップ・テーブルで構成される。これにより、この例では、ロジック全体の必要部分は25%低減される。
本発明の1つの実施例によれば、改良された深いパケット・フィルタ・システム60のロジック面積を低減するための他の最適化技術は、パイプライン・チェーンを組み合わせるのを可能にするパターン・サーチ・エンジン104のキーワード・ツリーの使用である。例えば、サーチされるパターンが”ABCDEF”、”ABCXXX”及び”ABCYYY”であれば、サブストリング・コンパレータは、図6Aに示したように二重部分を除去する方法で使用できる。図示の例では、サブストリング・コンパレータ400は、サブストリング”ABC”を検出し、サブストリング・コンパレータ402は、サブストリング”DEF”を検出し、サブストリング・コンパレータ404は、サブストリング”XXX”を検出し、サブストリング・コンパレータ406は、サブストリング”YYY”を検出する。各サブストリング・コンパレータの出力は、次にANDゲートを有する3つのパイプライン化されたチェーンを発生するのに使用される。1つの実施例によれば、チェーンは図6Bに示したように、チェーンのリソースを低減するためにつぶされる。変換は、必要な記憶量を低減するだけでなく、プログラムがツリーを下に進むに従って、可能性のあるパターンの個数を狭くもする。1つの実施例によれば、図4から図5の実施例で示したような並列設計におけるツリーの構築は、コンパレータ400−406の長さがデータ・パス幅の多重度であることを要求する。
図3の実施例におけるインスペクション・モジュール100a−100nは、クロック・サイクルでマッチが生じたかを示す1ビット出力を発生する。1529個の唯一のインスペクション・モジュールがルール・セットを表すのに使用される構成では、インスペクション・モジュールの出力は1519ビットである。いくつかのアプリケーションでは、単にこれらのビットの全ての論理和をとってマッチを示すようにして、マッチしたパターンの特定はソフトウエアで行われるようにしても十分である。しかし、マッチしたパターンのインデックス番号をハードウエアで発生するようにすることが更に望ましい。
インデックス番号の発生における1つの挑戦は、インデックス番号が例えば1519ビットのような非常に大きな入力からしばしば発生されることである。他の挑戦は、1つ以上のインスペクション・モジュールは同一のクロック・サイクルの間マッチを示すことである。
本発明の1つの実施例によれば、アドレス・エンコーダ108は、インスペクション・モジュールにより生成された1519ビットを取り出して、アドレス・エンコーダ108により提供されるORゲートの2値のツリーからの出力の組合せを使用して、マッチしたパターンの11ビットのインデックス番号を発生する。図7Aは、例示の実施例のORゲート500の例示の2値ツリーを示し、それは15ビットの入力502を4ビットのインデックスにエンコードする。2値ツリーの自然な特徴に基づいて、ツリーの対応するレベルにおける奇数ノードのいずれかが主張されるならば、インデックスの各インデックス・ビットが主張されるように決定される。このように、唯一の入力ピンがいずれかのクロック・サイクルで主張される(すなわち、1つのパターンのみが各サイクルで検出される)と仮定すれば、15ビット入力のための4ビットのインデックス・エンコーダは次のインデックス・ビット式(1)−(4)に従って発生される。
Index3=a1 (1)
Index2=b1+b3 (2)
Index1=c1+c3+c5+c7 (3)
Index0=d1+d3+d5+d7+d9+d11+d13+d15 (4)
このように、4ビットのインデックス・エンコーダを発生させる場合、ロジックは式で示されるように、2値ツリーの各種のノードの入力を組み合わせるのに使用される。例えば、インデックスのビット0を発生するためのロジックは、ツリー・レベルDにおける奇数番の入力ピンの出力を取り込む複数のORゲートを有する。インデックスのビット1を発生するためのロジックは、ツリー・レベルCにおける奇数番の入力ピンの出力を取り込む複数のORゲートを有する、などである。各インデックス・ビットのロジックの出力における1ビットのレジスタはエンコードされたインデックス・ビットを記憶する。
上記の議論のように、式(1)−(4)に従って発生されたアドレス・エンコーダは、1つ入力ピン以外は特定のクロック・サイクルで主張されることが無いと仮定される単純なエンコーダである。しかし、1つの入力ピン以外は主張されないならば、簡単なアドレス・エンコーダはパターン・インデックスを適切に示すには十分でないかもしれない。競合に対する1つの解答は、ルール・セットを、それぞれが重ならないパターンを含む多重のサブセットに分割することである。簡単なアドレス・エンコーダは、その後各サブセット・パターン・サーチ・ユニットのために提供される。しかし、いくつかの場合には、限られた出力ピンの個数が多重のインデックス出力を有するのを不可能にする。従って、このような場合には、パターン・インデックスに対して優先度を与えることが望ましい。
本発明の1つの実施例によれば、ソフトウエアによる前処理がインデックス番号に優先度を割当てるのに使用される。他の実施例によれば、ハードウエアがインデックス優先度を割当てるようにそのまま変形される。
ソフトウエア前処理方法によれば、同時にエンコーダ入力を主張できるすべてのパターンには式(5)に従ってインデックス番号が割当てられる。
Figure 2007537626
式(5)は、ビット型ORを重なりパターンのすべてのインデックスに適用し、そこでは、Inはnのより高い値を有するインデックス番号であり、高いnの値ほど高い優先度を示す。一旦すべてのインデックスが所望の優先度に従って重なりパターンに割り当てられると、インデックスは次にパターンの残りに割当てられる。
ソフトウエア処理の実施例によるインデックスの優先度の割り当ての機構は、優先されたパターン・セットのサイズに制限を設ける。各セットのインデックスの最大番号は、インデックス出力ピンの個数に等しい。実際の構成では重なりパターンのいくつかの独立のセットがあるかもしれないが、同時に重なるパターンの個数は通常4より小さい。従って、大部分のセットについては、この技術で十分である。ソフトウエア処理機構を使用する利点は、付加するゲートが必要ないことである。
厳密な優先度が必要な場合については、ハードウエアによる優先度インデックス・エンコーダは、アドレス・エンコーダのために付加されるゲートを使用する優先度によるインデックスを構築するように使用される。このハードウエアによる優先度エンコーダによれば、より高いインデックスがより高い優先度を示す。
ハードウエアによる優先度エンコーダは、図7Aの2値ORツリーの以下の試験に基づいて設計される。図示の2値ORツリーでは、もしA1ノード504の下の15ビット入力(Dノード)のいずれかが主張されたら、最大のインデックス・ビットは”1”である。より高い番号のDノードはより低い番号に対して優先度を有するので、A0ノード512の出力は考慮する必要がない。このように、ハードウエアによる優先度エンコーダは、インデックスの最大ビット値をA1の出力に割当てる。
次のインデックス・ビットについては、A1及びA0ノード504、512の直ぐの子供であるノードを有するブランチ(分岐)が考慮される。これにより、もしB3ノード508の出力が主張されるならば、第2のインデックス・ビットは”1”であるという推論になる。しかし、もしB1ノード506の出力が”1”で、より高いフラグに”1”がなければ、第2のインデックス・ビットも”1”である。図示の2値ORツリーでは、より高いフラグを構成するその子供のノードのいずれも主張されていないことを確認するようにA1ノード504が”0”であることをチェックする必要があるだけである。次のアドレス/インデックス・ビットは、この推論方法を使用して構成されている。このように、4ビット優先度インデックス・エンコーダは、次のインデックス・ビット式(6)−(9)に従って15ビット入力に対して発生される。
Figure 2007537626
このように、ハードウエアによる優先度エンコーダの発生においては、付加されるロジックが、式により示されるように、2値ツリーの各種ノードの入力を組み合わせるのに使用される。例えば、式(7)による優先度インデックスのビット2を発生するロジックは、式(2)による簡単なエンコーダのロジックと異なり、A1ノード504が”0”であることを確認するための追加のロジックを加える。
本発明の1つの実施例によれば、アドレス・エンコーダのリソースを最小にするために、いずれの式でも使用されないORツリーのノードが除去される。これにより、図7Aに示した例では、ツリーの左エッジ上のすべてのノード510、512、514、516、及び518は、主ルート・ノード510の初めから取り除かれる。出力のエンコードされたアドレス・ビットでのレジスタでは、限界パスは(log n)-1の最大ゲート遅延を有し、ここでnは入力ピンの個数である。パターン・サーチ構造は各ゲートの後でパイプライン化され、そのような長いゲートのチェーンが限界パスになる。大部分のFPGAにおける各ルック・アップ・テーブルは、通常D型フリップ・フロップと組み合わされる。このようにして、エンコーダのハードウエア設計は追加のパイプラインレジスタを挿入する。
図7Bは、D型フリップ・フロップが続く1−4入力の入力ゲートにより置き換えられた最大2−2入力ゲートを有するパイプライン化されたORツリーを示している。インデックス式を実現するロジックは、パイプライン化されたレジスタ内又はそれらの間での単一ゲート・レベルを維持するように更にパイプライン化される。
本発明の他の実施例によれば、改良された深いパケット・フィルタ・システム60を実現するためのロジック面積が、例えばFPGSチップ内に含まれる読出専用メモリ(ROM)のような組み込みメモリの使用を行うメモリによるパターン・サーチ・エンジンとしてパターン・サーチ・エンジン104を実現することにより低減される。
図8は、本発明の1つの実施例のメモリによるパターン・サーチ・エンジン104dのブロック図である。図8に示すように、以後接頭と呼ぶ入力データ600の開始部分は、以後サフィックスと呼ぶデータの残りとの完全な比較を行う前に、接頭サーチ・エンジン602により予備スクリーニングされる。接頭サーチ・エンジン602は、接頭部分を所定の接頭パターンと合わせる。多重バイト入力を有するデータ・パスのために、接頭サーチ・エンジン602は、接頭合わせのアライメント情報も発生する。接頭合わせパターンのインデックスは、その後図9に示すように、異なるサフィックス・パターンが記憶された組み込みメモリ604のアドレスに直接配置(マッピング)される。入力データ及びサフィックスは、対応するアライメントのコンパレータ・モジュール606により比較されて正確なマッチが発生しているかが決定される。
メモリによる設計が正確に機能するように、ルール・セット内のパターンは区分けされて1つ以上のROMに配置される。本発明の1つの実施例によれば、パターンは、各区分け内の接頭が唯一であるように区分けされる。これについて、異なる長さの接頭については、パターンは、区分け内のより長い接頭の終端がより短い接頭に合わないように区分けされる。さもなければ、1つ以上の接頭のマッチが起きる。もし1つ以上の接頭が検出されたら、接頭サーチ・エンジン602はどの接頭がメモリから読まれたか決定できない。
接頭長はどのようなサイズでもよい。しかし、本発明の1つの実施例によれば、接頭は例えば4バイトのような入力バス長に等しく設定される。すべてのクロックはサフィックスを再生するための有効インデックスを潜在的に生成できるので、サフィックス比較はサイクル当たり最大1回行われる。このようにして、2つの異なるアライメントを生成できるどのようなサフィックスも分離したROMに割当てられる。1バイト入力のデータ・パスについては、データは常時ゼロアライメントであるから、この強制は何の問題も生じない。しかし、データ・パスが多重バイト入力を提供するならば、特定の接頭は、2つの異なるアライメントをマッチさせることができる。
例えば、4バイト・データ・パスで、接頭サーチ・エンジン602は、接頭”ABAB”であるように構成されていると仮定する。もし入力データ600が”ABAB”で始まるとすると、接頭のアライメントは0又は2である。これは第2のサブストリング”AB”がパターンの実際の開始点になり得るからである。従って、データ・パス長及び接頭長に依存して、セット内のすべてのパターンを検査して各サイクルで1つのインデックス検出だけを可能にする状態が形成される。
固定の4バイト接頭を有する4バイト・データ・パスについては、区分け内のすべての接頭は次の3つの状態に合致するように構成される。第1の状態は、接頭のバイト1がバイト4に一致せず、第2の状態は、バイト1からバイト2のサブストリングがバイト3からバイト4のサブストリングに合致せず、そして、第3の状態は、バイト1からバイト3のサブストリングがバイト2からバイト4のサブストリングに合致しない。
図10は、本発明の1つの実施例による、メモリによるパターン・サーチ・エンジン104dに含まれる接頭サーチ・エンジン602のより詳細なブロック図である。接頭サーチ・エンジン602は、複数のサーチ・モジュール610a−610nを有し、本発明の1つの実施例によれば、複数のサーチ・モジュールは図4から図6に示したデコーダによるパターン・サーチ・エンジンとして実現される。各サーチ・モジュール610a−610nは、所定の接頭パターンの異なるバイト・アライメントにおいて入力データの接頭部分を比較する。各サーチ・モジュール610a−610nに接続されるアライメント・モジュール612a−612nは、マッチする接頭パターンのアライメントを示す。いろいろなアライメント・モジュール612a−612nからのマッチ信号は、次にアライメント情報を提供するようにエンコードされる。更に、アドレス・エンコーダ614は、いろいろなサーチ・モジュール610a−610nからのマッチ信号に基づいてサフィックス・インデックスを発生する。例えば、アドレス・エンコーダ614は、図3のアドレス・エンコーダ108に類似している。上記のように接頭は区分けされているので、所定のサブセット内の1つの接頭のみが各クロック・サイクルで検出される。従って、アライメント及びアドレス・エンコーディングはマッチ・パターンの優先度を考慮する必要はなく、これによりロジックは簡単で小型にできる。
本発明の1つの実施例によれば、メモリ604は、チップ内に組み込まれて、改良された深いパケット・フィルタ・システム60を実現するのに使用される。例えば、メモリ604は、FPGAチップ内に設けられたROMである。1つの実施例によれば、メモリの幅は、セット内の最長のサフィックス入力と同じ幅に固定される。サフィックスの変動する長さのために、そのような固定長を有するメモリの利用は非効率的である。
図11は、本発明の1つの実施例によるメモリの利用を改良するための機構を示す。図11に示すように、メモリ604aは、ソートされた形で、変動幅のN個のサフィックス入力を記憶する。しかし、メモリ604aの利用は、メモリの約半分が使用されないで残るので、非効率である。本発明の1つの実施例によれば、メモリ空間のより効率的な利用は、有効データの未使用空間を満たすことで達成される。このため、記憶されるサフィックス・パターンは、まずその長さに従ってソートされる。次に、すべての偶数入力はメモリの第1の入力から最後の入力に順番に記憶される。そして、すべての奇数入力は、そのビット順番がはじかれて、メモリ604bの内容により示されるように、メモリの最後の入力から第1の入力に順番に記憶される。このプロセスは奇数入力を移動したメモリに効率よく記憶する。
再配列されたメモリ入力を正確に読み出すために、少量のラッパー・ロジックが使用される。図12は、本発明の1つの実施例によるラッパー・ロジックの概略ブロック図である。メモリのアドレス入力では、最下位ビット(LSB)700を除くすべてのビットがメモリ604に送られる。LSB700は、アドレスが偶数であるか奇数であるかを判定するのに使用される。もしアドレスが偶数であれば、アドレスビットの残りは変更されずに物理アドレスとして送られる。あるいは、アドレス・ビットはまずインバータ702により反転され、その後メモリ604に送られる。同様に、メモリ604の出力は2から1のマルチプレクサ704に接続され、LSBはマルチプレクサの選択ピンに接続される。LSBが偶数の入力を示す時、通常の出力706が選択され。もし奇数入力が示されると、反転されたビット順の出力が選択される。
図13は、本発明の1つの実施例によるコンパレータ・モジュール606の概略ブロック図である。一旦サフィックス・パターンがメモリ604から読み取られると、入力パケット・データ802は、パイプライン化されてコンパレータ・モジュールにより提供されるシフタ804を介して適当なバイト・アライメントにシフトされる。パイプライン・ステージの段数は、最長パターン長及びROMレイテンシィに基づいて決定される。
シフタはマルチプレクサの単一レベルを介して実現されるか、又は入力バス長に依存する多重レベルにパイプライン化される。1バイト・データ・パスだけは単一アライメントを有し、そのためシフタは不要である。
サフィックス・パターンに加えて、メモリ604は各パターン長も記憶し、その長さ808をビット型コンパレータ806に提供する。この長さは、指示された長さのコンパレータを活性化するだけのためにビット型コンパレータ806によりデコードされる。ビット型コンパレータ806は、次に受け取ったサフィックス・パターン810をバイト配列(アラインされた)パケット・データと比較する。データがサフィックス・パターンとマッチする時、サフィックス・メモリ・アドレスとして使用される接頭サーチ・エンジン602により発生された接頭インデックスは、検出したパターンを特定するための出力として前に送られる。入力データ・パケットは停止されるか、及び/又は疑問のあるパケットのユーザへの警告とされる。
本発明の1つの実施例によれば、ビット型コンパレータ806は、1バイトXORコンパレータとして実現される。2つのルック・アップ・テーブルで作られた図4から図6のデコーダによる設計で使用したデコーダと異なり、XORコンパレータは、8個のルック・アップ・テーブルで作られる。しかし、コンパレータの1つのセットだけは、ROMに記憶されたすべてのパターンで使用されるから、バイト当たりの平均ゲートは、全でコーダを作った時よりはるかに少ない。
本発明の1つの実施例によれば、改良された深いパケット・フィルタ・システム60は、図4から図6のデコーダによる設計と図8から図13のメモリによる設計の両方を有する。図14は、両方の設計を組み合わせた本発明の1つの実施例のパターン・サーチ・エンジン104eのブロック図である。メモリに記憶されたパターンの接頭は、基本的により短いパターンのセットであるから、それらはパターンの残りと組み合わされて効率的なキーワード・ツリー900を作る。より短いパターンについては、デコーダ・サーチ・エンジン906が比較を実行してマッチ指示をアドレス・デコーダ902に送る。アドレス・デコーダ902は、図3のアドレス・デコーダ108に類似している。アドレス・デコーダ902は、次に対応するパターンIDを出力する。
より長いパターンについては、デコーダによるサーチ・エンジン908は接頭の比較を実行し、出力インデックスは、メモリによるサーチ・エンジン904に記憶されたサフィックスを選択するのに使用される。インデックスは対応するパターンIDとして出力される。
大量のパターンがメモリに記憶されるので、図14の結合した設計は、デコーダによるフィルタよりはるかに少ないゲートを必要とするだけである。その結果、全フィルタはより小さいSpartan 3-XC3S400装置内に配置して組み込める。実験の間、システムはXC3S400装置内での200MHz及びXC3S1000装置内の237MHzのクロック・レートで、4415個のルック・アップ・テーブルを使用した。XC3S1000装置での速度向上は、より大きなFPGA内に要素を配置する自由度をより高くする。
パターン検出レートが低い例では、パターンを特定せずにマッチ信号を示せば十分である。次に、ソフトウエアがどのパターンが検出されたかを決定するためにデータベース全体のサーチを行うそのような設計では、すべてのインデックス・エンコーダ902は、ゲート量を低減するためORゲートのツリーで置き換えられる。しかし、この効率的なインデックス・エンコーダのために、755個のルック・アップ・テーブルのみがデコーダによる設計から再利用され、65個のルック・アップ・テーブルのみがメモリによる設計から再利用される。
特定の例示の実施例を付属の図面に示して上記のように詳細を説明したが、このような実施例は説明のためであり、広い発明を制限するものではない。特に、発明が教示は、システム及びプロセッサの広い変形に適用されることが認識されるべきである。このように、各種の変形例が、広い発明の範囲から逸脱すること無しに、上記の発明の示された実施例及び他の実施例にすることができることが認識される。例えば、動的なパターン・サーチ・エンジンはデータ・パケットのペイロード部分をサーチするとして説明されたが、当業者には、サーチ・エンジンはペイロード部分に加えて又はそれに代わってパケットのほかの部分をサーチするように構成できることが認識される。
上記の観点から、本発明は記載した特定の実施例又は配置に限定されず、むしろ特許請求の範囲及びそれの等価物により定義される発明の範囲及び精神内にあるいかなる変更、適応又は変形をカバーするように意図されていることが理解されるであろう。
図1は、典型的なマルチ・レイヤー・インスペクション・システムのブロック図である。 図2は、本発明の例示の実施例による、改良された深いパケット・フィルタ・システムが採用されたネットワークを示す。 図3は、本発明の1つの実施例による、図1の改良された深いパケット・フィルタ・システムデコーダの概略ブロック図である。 図4は、本発明の1つの実施例による、デコーダによるパターン・サーチ・エンジンの動作図である。 図5Aは、本発明の1つの実施例による、異なるバイト・アライメントでパターン”BABAB”及び”ABAB”をそれぞれチェックするように構成された2つのデコーダによるパターン・サーチ・エンジンを示す。 図5Bは、図5Aのサブストリング・コンパレータを示すが、二重セットが除去されている。 図6Aは、本発明の1つの実施例による、二重のコンパレータを除去したパターン”ABCDEF”、”ABCXXX”及び”ABCYYY”をサーチするサブストリング・コンパレータを示す。 図6Bは、パターン”ABCDEF”、”ABCXXX”及び”ABCYYY”をサーチするコンパレータのつぶされたパイプライン化チェーンを示す。 図7Aは、本発明の1つの実施例による、15ビットの入力を4ビット・インデックスにエンコードするORゲートの例示の2値ツリーを示す。 図7Bは、本発明の1つの実施例による、D型フリップ・フロップが接続される、1−4入力ゲートにより置き換えられる最大2−2入力ゲートを有するパイプライン化されたORツリーを示す。 図8は、本発明の1つの実施例による、メモリによるパターン・サーチ・エンジンのブロック図である。 図9は、接頭部分とサフィックス部分に分割された入力データを示し、接頭部分は接頭サーチ・エンジンによりマッチされて、入力データの対応するサフィックス部分を記憶する読出専用メモリ内のアドレスを発生する。 図10は、本発明の1つの実施例による、図8のメモリによるパターン・サーチ・エンジンに含まれる接頭サーチ・エンジンのより詳細なブロック図である。 図11は、本発明の1つの実施例による、メモリ利用を改良する機構を示す。 図12は、本発明の1つの実施例による、図8のメモリによるパターン・サーチ・エンジンのメモリと一緒に使用するラッパー・ロジックの概略ブロック図である。 図13は、本発明の1つの実施例による、図8のメモリによるパターン・サーチ・エンジンのコンパレータ・モジュールの概略ブロック図である。 図14は、本発明の1つの実施例による、図4から図6のデコーダによる設計と図8から図13のメモリによる設計の両方を組み合わせるパターン・サーチ・エンジンのブロック図である。

Claims (20)

  1. 入力データの第1の非ヘッダ部分を接頭パターンと比較するように構成された接頭サーチ・ロジックと、
    前記接頭サーチ・ロジックにつながれ、複数のサフィックス・パターンを記憶するメモリと、
    前記入力データの前記第1の非ヘッダ部分の前記接頭パターンとの一致に基づいてサフィックス・インデックスを発生する手段と、
    前記入力データの第2の非ヘッダ部分を、前記発生されたサフィックス・インデックスに基づいて特定されたサフィックス・パターンと比較するように構成されたコンパレータ・ロジックと、を備え、
    前記入力データは、前記第2の非ヘッダ部分の前記比較に基づいて通過を許可されるか許可されない、深いパケット・フィルタ。
  2. 前記接頭サーチ・ロジックは、前記入力データの前記第1の非ヘッダ部分を複数のサフィックス・パターンと並列に比較する請求項1に記載の深いパケット・フィルタ。
  3. 前記接頭サーチ・ロジックは、前記入力データの前記第1の非ヘッダ部分の複数のバイトを前記複数のサフィックス・パターンのそれぞれの複数のバイトと並列に比較する請求項2に記載の深いパケット・フィルタ。
  4. 前記接頭サーチ・ロジックは、前記入力データの前記第1の非ヘッダ部分の複数のバイトを前記複数のサフィックス・パターンのそれぞれの異なるバイト・アライメントと並列に比較する請求項3に記載の深いパケット・フィルタ。
  5. 前記接頭サーチ・ロジックは、前記接頭パターンの特定のサブストリングを検出するためのデコーダのチェーンを有する請求項1に記載の深いパケット・フィルタ。
  6. 前記特定のサブストリングを検出するための前記デコーダのチェーンは、前記特定のサブストリングを有する異なる接頭パターンを検出するように構成された複数の接頭サーチ・ロジック・ユニットにより共有される請求項5に記載の深いパケット・フィルタ。
  7. 前記接頭サーチ・ロジック、メモリ、前記サフィックス・インデックスを発生するための手段、及び前記コンパレータ・ロジックは、単一のフィールド・プログラム可能ゲート・アレイ上にすべて組み込まれている請求項1に記載の深いパケット・フィルタ。
  8. 前記メモリは、ソートされたサフィックス・インデックスのリストを記憶し、
    前記リストの偶数入力におけるパターンは前記メモリの第1の入力から最後の入力までに記憶され、前記リストの奇数入力におけるパターンは前記メモリの前記最後の入力から前記第1の入力までに記憶される請求項7に記載の深いパケット・フィルタ。
  9. 前記サフィックス・インデックスを発生するための手段は、前記接頭サーチ・ロジックの出力につながれたORゲートの2値ツリーから導出されたロジック式に基づいて、前記サフィックス・インデックスの各ビットを発生する手段を有する請求項1に記載の深いパケット・フィルタ。
  10. 前記接頭サーチ・ロジックはバイト・アライメントを示し、前記コンパレータ・ロジックは、前記指示されたバイト・アライメントに従って前記入力データの前記第2の非ヘッダ部分をシフトするシフタを有する請求項1に記載の深いパケット・フィルタ。
  11. 前記入力データの前記第1及び第2の非ヘッダ部分は、前記データのペイロード部分である請求項1に記載の深いパケット・フィルタ。
  12. 複数のパターンを接頭部分とサフィックス部分に区分けし、
    前記複数のパターンのそれぞれの前記サフィックス部分をメモリに記憶し、
    入力データの第1の非ヘッダ部分の少なくとも一部を前記複数のパターンのそれぞれの前記サフィックス部分の少なくとも一部と並列に比較し、
    前記入力データの前記第1の非ヘッダ部分の特定パターンの接頭部分とのマッチに基づいてサフィックス・インデックスを発生し、
    前記サフィックス・インデックスに基づいて前記メモリ内に記憶された前記特定のパターンのサフィックス部分を特定し、
    前記入力データの第2の非ヘッダ部分を前記特定されたサフィックス部分と比較し、
    前記第2の非ヘッダ部分の前記特定されたサフィックス部分との比較に基づいて、前記入力データを進めるか又は進めない深いパケット・フィルタリング方法。
  13. 前記並列の比較は、前記入力データの前記第1の非ヘッダ部分の複数のバイトを前記複数のパターンのそれぞれの前記サフィックス部分の異なるバイト・アライメントとの並列の比較を有する請求項12に記載の方法。
  14. 前記比較は、特定のサブストリングを検出するように構成されたデコーダのチェーンを介して達成される請求項12に記載の深い方法。
  15. 前記特定のサブストリングを検出するための前記デコーダのチェーンは、前記特定のサブストリングを有する前記複数のパターンの異なる接頭パターンを検出するように構成された複数の接頭サーチ・ロジック・ユニットにより共有される請求項14に記載の方法。
  16. 前記メモリは、フィールド・プログラム可能ゲート・アレイに組み込まれた読出専用メモリである請求項12に記載の方法。
  17. 前記メモリは、前記複数のパターンのソートされたサフィックス部分のリストを記憶し、
    前記リストの偶数入力に挙げられたサフィックス部分は前記メモリの第1の入力から最後の入力までに記憶され、前記リストの奇数入力に挙げられたサフィックス部分は前記メモリの前記最後の入力から前記第1の入力までに記憶される請求項12に記載の方法。
  18. 前記サフィックス・インデックスの発生は、接頭サーチ・ロジックの出力につながれたORゲートの2値ツリーから導出されたロジック式に基づいて、前記サフィックス・インデックスの各ビットを発生することを有し、前記接頭サーチ・ロジックは、入力データの前記第1の非ヘッダ部分の少なくとも一部を前記複数のパターンのそれぞれの前記接頭部分の少なくとも一部と並列に比較する請求項12に記載の方法。
  19. 前記入力データの前記第1の非ヘッダ部分のマッチに関係するバイト・アライメントを、前記特定のパターンの前記接頭部分に対して特定し、
    前記指示されたバイト・アライメントに従って前記入力データの前記第2の非ヘッダ部分をシフトすることを、更に備える請求項12に記載の方法。
  20. 前記入力データの前記第1及び第2の非ヘッダ部分は、前記データのペイロード部分である請求項12に記載の方法。
JP2007509635A 2004-04-19 2005-04-19 深いパケットフィルタリングのためのプログラム可能なハードウエア Active JP4755175B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US56343504P 2004-04-19 2004-04-19
US60/563,435 2004-04-19
PCT/US2005/013629 WO2005104443A2 (en) 2004-04-19 2005-04-19 Programmable hardware for deep packet filtering

Publications (2)

Publication Number Publication Date
JP2007537626A true JP2007537626A (ja) 2007-12-20
JP4755175B2 JP4755175B2 (ja) 2011-08-24

Family

ID=35197644

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007509635A Active JP4755175B2 (ja) 2004-04-19 2005-04-19 深いパケットフィルタリングのためのプログラム可能なハードウエア

Country Status (6)

Country Link
US (1) US7519995B2 (ja)
EP (1) EP1738531B1 (ja)
JP (1) JP4755175B2 (ja)
KR (1) KR100828038B1 (ja)
CN (1) CN101401090B (ja)
WO (1) WO2005104443A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013038610A (ja) * 2011-08-08 2013-02-21 Nippon Telegr & Teleph Corp <Ntt> ルータ装置及びデータ解析方法
JP2017142744A (ja) * 2016-02-12 2017-08-17 日本電気株式会社 情報処理装置、ウィルス検出方法及びプログラム

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8458467B2 (en) 2005-06-21 2013-06-04 Cisco Technology, Inc. Method and apparatus for adaptive application message payload content transformation in a network infrastructure element
US7664879B2 (en) * 2004-11-23 2010-02-16 Cisco Technology, Inc. Caching content and state data at a network element
US7987272B2 (en) 2004-12-06 2011-07-26 Cisco Technology, Inc. Performing message payload processing functions in a network element on behalf of an application
US8082304B2 (en) * 2004-12-10 2011-12-20 Cisco Technology, Inc. Guaranteed delivery of application layer messages by a network element
US8266327B2 (en) * 2005-06-21 2012-09-11 Cisco Technology, Inc. Identity brokering in a network element
KR100981500B1 (ko) * 2006-02-07 2010-09-10 삼성전자주식회사 저밀도 패러티 검사 부호 기반의 하이브리드 재전송 방법
US7788719B1 (en) * 2006-03-23 2010-08-31 Symantec Corporation Graph buffering
US20070226483A1 (en) * 2006-03-24 2007-09-27 Dennis Cox System and method for storing and/or transmitting emulated network flows
US8621573B2 (en) 2007-08-28 2013-12-31 Cisco Technology, Inc. Highly scalable application network appliances with virtualized services
US8094560B2 (en) 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
US8677453B2 (en) 2008-05-19 2014-03-18 Cisco Technology, Inc. Highly parallel evaluation of XACML policies
US8667556B2 (en) 2008-05-19 2014-03-04 Cisco Technology, Inc. Method and apparatus for building and managing policies
KR101243298B1 (ko) * 2008-12-02 2013-03-13 한국전자통신연구원 전자 감시 시스템 및 방법
US20100212010A1 (en) * 2009-02-18 2010-08-19 Stringer John D Systems and methods that detect sensitive data leakages from applications
CN101599963B (zh) * 2009-06-10 2012-07-04 电子科技大学 网络疑似威胁信息筛选器及筛选处理方法
CN102576392B (zh) * 2009-10-31 2014-12-17 惠普发展公司,有限责任合伙企业 用于恶意代码检测的设备和方法及恶意代码检测器
TWI424445B (zh) * 2009-12-29 2014-01-21 Macronix Int Co Ltd 指令解碼電路及其方法
KR101201622B1 (ko) * 2010-08-19 2012-11-14 삼성에스디에스 주식회사 보안 기능을 가진 시스템 온 칩 및 이를 이용한 디바이스 및 스캔 방법
CN102014010B (zh) * 2010-12-31 2013-04-03 北京网康科技有限公司 一种网络行为管理系统及方法
US8458796B2 (en) * 2011-03-08 2013-06-04 Hewlett-Packard Development Company, L.P. Methods and systems for full pattern matching in hardware
EP2813036A4 (en) * 2012-02-07 2015-10-07 Oricane Ab CLASSIFICATION ENGINE FOR CLASSIFICATION OF DATA PACKETS
WO2013173565A1 (en) * 2012-05-16 2013-11-21 The Keyw Corporation Packet capture deep packet inspection sensor
US10824952B2 (en) 2014-09-22 2020-11-03 International Business Machines Corporation Reconfigurable array processor for pattern matching
US9891912B2 (en) 2014-10-31 2018-02-13 International Business Machines Corporation Comparison-based sort in a reconfigurable array processor having multiple processing elements for sorting array elements

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03131969A (ja) * 1989-10-18 1991-06-05 Hitachi Ltd 記号列検索方法および検索装置
JPH04169973A (ja) * 1990-11-02 1992-06-17 Hitachi Ltd 記号列検索方法および装置
JPH05282362A (ja) * 1992-03-31 1993-10-29 Sharp Corp データ検索回路
JPH07235878A (ja) * 1993-12-28 1995-09-05 Matsushita Electric Ind Co Ltd 可変長復号化器
JPH10187410A (ja) * 1996-12-24 1998-07-21 Fujitsu Ltd データ圧縮方法及び装置
JPH11232279A (ja) * 1998-02-12 1999-08-27 Kawasaki Steel Corp 分割探索方法及び装置
JP2000083056A (ja) * 1998-09-04 2000-03-21 Mitsubishi Electric Corp 検索方式
JP2001117929A (ja) * 1999-10-15 2001-04-27 Toshiba Corp データ検索方法、データ整列方法およびデータ検索装置
JP2001168911A (ja) * 1999-12-09 2001-06-22 Hitachi Cable Ltd パケットフィルタ装置
JP2002016638A (ja) * 2000-06-29 2002-01-18 Mitsubishi Electric Corp ルーチング情報検索装置およびルーチング情報検索制御データを記録したコンピュータ読み取り可能な記録媒体
JP2003099339A (ja) * 2001-09-25 2003-04-04 Toshiba Corp 侵入検知・防御装置及びプログラム
JP2003169044A (ja) * 2001-11-29 2003-06-13 Kyushu Ando Denki Kk フレーム同期装置及び方法
WO2004032435A1 (ja) * 2002-10-03 2004-04-15 In4S Inc. ビットストリングの照合方法および装置
JP2004164435A (ja) * 2002-11-14 2004-06-10 Nec Software Kyushu Ltd 接続要求中継装置、フィルタリングシステム、方法、及びプログラム
JP2004192279A (ja) * 2002-12-10 2004-07-08 Matsushita Electric Ind Co Ltd Url管理装置及びurl管理方法並びにurl管理プログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6781972B1 (en) * 2000-03-31 2004-08-24 Lucent Technologies Inc. Method and system for subscriber-configurable communications service
US6697363B1 (en) * 2000-06-28 2004-02-24 Alcatel Canada Inc. Method and apparatus for longest matching prefix determination in a communication network
US6693906B1 (en) * 2000-07-17 2004-02-17 Advanced Micro Devices, Inc. Apparatus and method for buffer-free evaluation of packet data bytes with multiple min terms
KR100686732B1 (ko) * 2000-08-26 2007-02-23 삼성전자주식회사 복수의 프리픽스로부터 데이터 패킷을 라우팅하기 위한데이터베이스 생성방법과 라우팅 방법 및 그 방법을이용한 라우터
US7624444B2 (en) * 2001-06-13 2009-11-24 Mcafee, Inc. Method and apparatus for detecting intrusions on a computer system
AU2002220130A1 (en) * 2001-09-12 2003-03-24 Raqia Networks, Inc. High speed data stream pattern recognition
US7454499B2 (en) * 2002-11-07 2008-11-18 Tippingpoint Technologies, Inc. Active network defense system and method
US7134143B2 (en) * 2003-02-04 2006-11-07 Stellenberg Gerald S Method and apparatus for data packet pattern matching
US7584303B2 (en) * 2002-12-20 2009-09-01 Forte 10 Networks, Inc. Lossless, stateful, real-time pattern matching with deterministic memory resources
US7444515B2 (en) * 2003-08-14 2008-10-28 Washington University Method and apparatus for detecting predefined signatures in packet payload using Bloom filters

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03131969A (ja) * 1989-10-18 1991-06-05 Hitachi Ltd 記号列検索方法および検索装置
JPH04169973A (ja) * 1990-11-02 1992-06-17 Hitachi Ltd 記号列検索方法および装置
JPH05282362A (ja) * 1992-03-31 1993-10-29 Sharp Corp データ検索回路
JPH07235878A (ja) * 1993-12-28 1995-09-05 Matsushita Electric Ind Co Ltd 可変長復号化器
JPH10187410A (ja) * 1996-12-24 1998-07-21 Fujitsu Ltd データ圧縮方法及び装置
JPH11232279A (ja) * 1998-02-12 1999-08-27 Kawasaki Steel Corp 分割探索方法及び装置
JP2000083056A (ja) * 1998-09-04 2000-03-21 Mitsubishi Electric Corp 検索方式
JP2001117929A (ja) * 1999-10-15 2001-04-27 Toshiba Corp データ検索方法、データ整列方法およびデータ検索装置
JP2001168911A (ja) * 1999-12-09 2001-06-22 Hitachi Cable Ltd パケットフィルタ装置
JP2002016638A (ja) * 2000-06-29 2002-01-18 Mitsubishi Electric Corp ルーチング情報検索装置およびルーチング情報検索制御データを記録したコンピュータ読み取り可能な記録媒体
JP2003099339A (ja) * 2001-09-25 2003-04-04 Toshiba Corp 侵入検知・防御装置及びプログラム
JP2003169044A (ja) * 2001-11-29 2003-06-13 Kyushu Ando Denki Kk フレーム同期装置及び方法
WO2004032435A1 (ja) * 2002-10-03 2004-04-15 In4S Inc. ビットストリングの照合方法および装置
JP2004164435A (ja) * 2002-11-14 2004-06-10 Nec Software Kyushu Ltd 接続要求中継装置、フィルタリングシステム、方法、及びプログラム
JP2004192279A (ja) * 2002-12-10 2004-07-08 Matsushita Electric Ind Co Ltd Url管理装置及びurl管理方法並びにurl管理プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013038610A (ja) * 2011-08-08 2013-02-21 Nippon Telegr & Teleph Corp <Ntt> ルータ装置及びデータ解析方法
JP2017142744A (ja) * 2016-02-12 2017-08-17 日本電気株式会社 情報処理装置、ウィルス検出方法及びプログラム

Also Published As

Publication number Publication date
US20080047008A1 (en) 2008-02-21
KR100828038B1 (ko) 2008-05-08
KR20070010064A (ko) 2007-01-19
EP1738531A4 (en) 2011-06-29
WO2005104443A2 (en) 2005-11-03
CN101401090B (zh) 2010-08-25
JP4755175B2 (ja) 2011-08-24
EP1738531B1 (en) 2014-06-11
WO2005104443A3 (en) 2008-10-23
CN101401090A (zh) 2009-04-01
US7519995B2 (en) 2009-04-14
EP1738531A2 (en) 2007-01-03

Similar Documents

Publication Publication Date Title
JP4755175B2 (ja) 深いパケットフィルタリングのためのプログラム可能なハードウエア
Cho et al. Deep packet filter with dedicated logic and read only memories
Cho et al. A pattern matching coprocessor for network security
US7805460B2 (en) Generating a hierarchical data structure associated with a plurality of known arbitrary-length bit strings used for detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit string
Chen et al. A survey on the application of FPGAs for network infrastructure security
Cho et al. Fast reconfiguring deep packet filter for 1+ gigabit network
Jiang et al. Field-split parallel architecture for high performance multi-match packet classification using FPGAs
US8191142B2 (en) Detecting whether an arbitrary-length bit string input matches one of a plurality of known arbitrary-length bit strings using a hierarchical data structure
Jiang et al. Scalable multi-pipeline architecture for high performance multi-pattern string matching
Tan et al. Architectures for bit-split string scanning in intrusion detection
US7805393B1 (en) Assigning encoded state values to a search tree according to failure chains
Cho et al. Deep network packet filter design for reconfigurable devices
US7610269B1 (en) Method and apparatus for constructing a failure tree from a search tree
Yusuf et al. Bitwise optimised CAM for network intrusion detection systems
Cho et al. Programmable hardware for deep packet filtering on a large signature set
Weng et al. Deep packet pre-filtering and finite state encoding for adaptive intrusion detection system
Singaraju et al. A signature match processor architecture for network intrusion detection
Karimov et al. Application of the Aho-Corasick algorithm to create a network intrusion detection system
Fide et al. A survey of string matching approaches in hardware
Thinh et al. Massively parallel cuckoo pattern matching applied for NIDS/NIPS
BabuKaruppiah et al. Deterministic finite automata for pattern matching in fpga for intrusion detection
Tashev et al. Application of the Aho-Corasick algorithm to create a network intrusion detection system
Nandhini et al. Advance virus detection using combined techniques of pattern matching and dynamic instruction sequences
Cho et al. Context-free-grammar based token tagger in reconfigurable devices
Kastil et al. Methodology for fast pattern matching by deterministic finite automaton with perfect hashing

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100521

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100528

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110404

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110426

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110526

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140603

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4755175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250