(57)【要約】空間効率が良いパケットフィルタリングを達成し、フィルタ規則を表わす、小さく、最適化されたバイナリ５タプルのシーケンス。ポストマッチング手順テーブルは、動的及び拡張可能なパケット処理を可能にする。パケットフィルタリングは、規則ファイルにユーザによって入力され、５タプルフィルタリング規則および手順テーブル（１２４）を発生するための、フィルタ規則文および手順文（１００）を処理することにより、かつ、フィルタリング規則および手順テーブルをフィルタインタープリタにロードすることにより達成される。フィルタリングされたパケットが規則に整合する場合、特定の機能が呼び出される。
2004535714.tif 000002
【特許請求の範囲】
【請求項１】
フィルタリング規則を受け取るステップと、
該フィルタリング規則を少なくとも一つのバイナリ規則ファイルにコンパイルするステップと、
該フィルタリング規則を少なくとも一つのバイナリ手順ファイルにコンパイルするステップと、
該少なくとも一つのバイナリ規則ファイルおよび少なくとも一つのバイナリ手順ファイルを、少なくとも一つのネットワークインターフェースを備えたデバイス上に、格納するステップと、
該規則を、該少なくとも一つのバイナリイメージファイルからロードするステップと、
該手順を、該少なくとも一つのバイナリ手順ファイルからロードするステップと、
該デバイスのデータを該ロードされた規則と比較するステップと、
該比較に基いて、該少なくとも一つのバイナリ手順ファイルからの少なくとも一つの適切な手順を実行するステップと
を包含する、データフィルタリング方法。
【請求項２】
前記フィルタリング規則がユーザによって入力される、請求項１に記載のデータフィルタリング方法。
【請求項３】
前記バイナリ規則ファイルコンパイルステップは、前記デバイス内に存在するそれぞれのネットワークインターフェースに対して少なくとも一つのバイナリ規則ファイルをコンパイルするプロセスをさらに包含する、請求項１に記載のデータファイリング方法。
【請求項４】
前記バイナリ手順ファイルコンパイルステップは、前記デバイス内に存在するそれぞれのネットワークインターフェースに対して少なくとも一つのバイナリ手順ファイルをコンパイルするプロセスをさらに包含する、請求項１に記載のデータファイリング方法。
【請求項５】
前記格納するステップは、前記少なくとも一つのバイナリ手順ファイルおよび前記少なくとも一つのバイナリ手順ファイルを、前記デバイス内の一時的なメモリ空間内に格納するステップをさらに包含する、請求項１に記載のデータフィルタリング方法。
【請求項６】
前記規則をロードするステップおよび前記手順をロードするステップは、デバイスがパワーアップする場合に実行される、請求項１に記載のデータフィルタリング方法。
【請求項７】
前記比較するステップのデータは、前記ネットワークインターフェースから受け取られたデータであるか、前記ネットワークインターフェース行きである、請求項１にデータフィルタリング方法。
【請求項８】
前記規則をロードするステップおよび前記手順をロードするステップは、デバイスが前記ネットワークインターフェースから受け取られたデータまたは該ネットワーク行きのデータを最初に処理する場合、実行される、請求項１に記載のデータフィルタリング方法。
【請求項９】
前記規則をロードするステップは、前記規則を１以上の５タプルに整えるステップをさらに包含する、請求項１に記載のデータフィルタリング方法。
【請求項１０】
前記５タプルは、長さフィールド、手順インデックスフィールド、規則オフセット、データオフセットフィールドおよび値フィールドを含む、請求項９に記載のデータフィルタリング方法。
【請求項１１】
前記バイナリ規則コンパイルステップおよび前記バイナリ手順コンパイルステップが同時に発生する、請求項１に記載のデータフィルタリング方法。
【請求項１２】
前記バイナリ規則コンパイルステップおよび前記バイナリ手順コンパイルステップは該ステップの一部として発生する、請求項１に記載のデータフィルタリング方法。
【請求項１３】
前記コンパイルされたバイナリ規則および前記コンパイルされたバイナリ手順が前記同一のファイルに格納される、請求項１に記載のデータフィルタリング方法。
【請求項１４】
ユーザ入力のフィルタリング規則を受け取るステップと、
データがフィルタリングされるデバイスを選択するステップであって、該デバイスが少なくとも一つのネットワークインターフェースを含むステップと、
該ユーザ入力のフィルタリング規則を、該デバイス上のそれぞれのネットワークインターフェースのために少なくとも一つのバイナリ規則ファイルにコンパイルするステップと、
該ユーザ入力のフィルタリング規則を、該デバイス上のそれぞれのネットワークインターフェースのために少なくとも一つのバイナリ手順ファイルにコンパイルするステップと、
該少なくとも一つのバイナリ規則ファイルおよび該少なくとも一つのバイナリ手順ファイルを該デバイス上に格納するステップと、
該規則を、該少なくとも一つのバイナリ画像ファイルからロードするステップであって、前記規則が５タプルに変換され、それぞれの５タプルは、長さフィールド、手順インデックスフィールド、規則オフセットフィールド、データオフセットフィールドおよび値フィールドを含むステップと、
該手順を、該少なくとも一つのバイナリ手順ファイルからロードするステップと、
該デバイスのデータを該ロードされた規則と比較するステップと、
少なくとも一つの適切な手順を、該比較に基づいて少なくとも一つのバイナリ手順ファイルから実行するステップと
を包含するデータフィルタリング方法。
【請求項１５】
前記バイナリ規則コンパイルステップおよび前記バイナリ手順コンパイルステップが同時に発生する、請求項１４に記載のデータフィルタリング方法。
【請求項１６】
前記バイナリ規則コンパイルステップおよび前記バイナリ手順コンパイルステップは該ステップの一部として発生する、請求項１４に記載のデータフィルタリング方法。
【請求項１７】
前記コンパイルされたバイナリ規則およびコンパイルされたバイナリ手順が前記同一のファイルに格納される、請求項１４に記載のデータフィルタリング方法。
【請求項１８】
規則をマシン読み出し可能フォーマットに変換する第１フィルタコンパイラと、
手順をマシン読み出し可能フォーマットに変換する第２フィルタコンパイラと、
該マシン読み出し可能規則およびマシン読み出し可能手順をロードするデバイス上で起動するフィルタローダと、
データを該ロードされるフィルタ規則と比較し、該比較に基いて１以上のロードされた手順を実行するフィルタインタープリタと
を含む、データフィルタリングシステム。
【請求項１９】
ユーザから規則を受けるユーザインターフェースをさらに含み、前記第１のフィルタコンパイラが該ユーザ規則をマシン読み出し可能フォーマットに変換する、請求項１８に記載のデータフィルタリングシステム。
【請求項２０】
前記第１のフィルタコンパイラおよび前記第２のフィルタコンパイラが前記同一のフィルタコンパイラである、請求項１８に記載のデータフィルタリングシステム。
【請求項２１】
前記ユーザ規則がコンパイルされる前記マシン読み出し可能フォーマットがバイナリフォーマットである、請求項１８に記載のデータフィルタリングシステム。
【請求項２２】
前記手順がコンパイルされる前記マシン読み出し可能フォーマットがバイナリフォーマットである、請求項１８に記載のデータフィルタリングシステム。
【請求項２３】
前記コンパイルされた手順は、前記マシン読み出し可能規則において参照される該手順のみを含む全ての利用可能な手順のサブセットを含む、請求項１８に記載のデータフィルタリングシステム。
【請求項２４】
前記全ての利用可能な手順のセットは、少なくとも許可、否定およびログ関数を含む、請求項２３に記載のデータフィルタリングシステム。
【請求項２５】
前記フィルタローダは、前記マシン読み出し可能手順を、手順インデックステーブルおよび手順関数テーブルにロードする、請求項１８に記載のデータフィルタリングシステム。
【請求項２６】
前記ロードされた規則は前記フィルタローダによって少なくとも一つの５タプルに変換される、請求項１８に記載のデータフィルタリングシステム。
【請求項２７】
前記少なくとも一つの５タプルは、長さフィールド、手順インデックスフィールド、規則オフセットフィールド、データオフセットフィールドおよび値フィールドを含む、請求項２６に記載のデータフィルタリングシステム。
【請求項２８】
前記規則オフセットフィールドは、現在の５タプルの始まりから次の規則の第１の５タプルの始まりまでのオフセットを表示する、請求項２７に記載のデータフィルタリングシステム。
【請求項２９】
前記データオフセットフィールドは、前記第１の５タプルによって調べられるようにネットワークパケットへのオフセットを表示する、請求項２７に記載のデータフィルタリングシステム。
【請求項３０】
前記データ値フィールドは、前記データオフセットフィールドによってアクセスされる前記ネットワークパケットのフィールドと比較される値を表示する、請求項２７に記載のデータフィルタリングシステム。
【請求項３１】
前記フィルタローダおよびフィルタインタープリタが、手順インデックステーブルまたは手順関数テーブルが規則処理と独立して変更され得るように、互いに独立して動作する、請求項２７に記載のデータフィルタリングシステム。
【請求項３２】
少なくとも１つのマシン読み出し可能規則および少なくとも１つの手順に規則をコンパイルするステップと、
該コンパイルされた少なくとも１つの規則および該コンパイルされた少なくとも１つの手順を、少なくとも１つのネットワークアダプタを有するデバイスにロードするステップと、
該少なくとも１つのネットワークアダプタを送るネットワークデータを妨害するステップと、
該コンパイルされた少なくとも１つのロードされた規則に関して該ネットワークデータを解釈するステップと、
比較の結果に基づいて少なくとも１つの手順を実行するステップと
を含む、ネットワークデータフィルタリング方法。
【請求項３３】
前記規則は、ユーザによって入力される、請求項３２に記載のネットワークデータフィルタリング方法。
【請求項３４】
前記デバイス内部の各ネットワークアダプタに対して、前記コンパイルされた少なくとも１つの規則および前記コンパイルされた少なくとも１つの手順をロードするステップをさらに含む、請求項３２に記載のネットワークデータフィルタリング方法。
【請求項３５】
前記妨害するステップは、該デバイス上で動作するデバイスドライバ内部で発生する、請求項３２に記載のネットワークデータフィルタリング方法。
【請求項３６】
前記ロードするステップは、前記コンパイルされた少なくとも１つの規則を少なくとも１つの５タプルフィルタリング規則に変換する、請求項３２に記載のネットワークデータフィルタリング方法。
【請求項３７】
前記少なくとも１つの５タプルのフィルタリング規則の内の各々は、長さフィールド、手順インデックス、規則オフセットフィールド、データオフセットフィールド、および値のフィールドを含む、請求項３６に記載のネットワークデータフィルタリング方法。
【請求項３８】
前記ロードするステップは、
少なくとも１つの構成された５タプルフィルタリング規則を保持するためにタプルバッファを作成するステップであって、該タプルのバッファは、先頭を有するように定義される、ステップと、
該タプルバッファの先頭に次のバイトのポインタを設定するステップと、
フィルタリング規則に対して５タプルを構成するステップと、該次のバイトポインタによって設定された位置における該タプルのバッファに５タプルをコピーするするステップと、該次のバイトポインタを増加させるステップと、
該次のバイトポインタを指すように次の規則タプルエレメントを設定するステップと、
より多くのフィルタ規則文が該コンパイルされた規則ファイルに存在する間、該構成するステップを繰り返すステップと
をさらに含む、請求項３６に記載のネットワークデータフィルタリング方法。
【請求項３９】
前記規則オフセットフィールドは、次のフラグを含む、請求項３７に記載のネットワークデータフィルタリング方法。
【請求項４０】
前記解釈するステップは、
パケットへのポインタを取得するステップと、
５タプルへのタプルポインタを取得するステップと、
ループ終了フラグを偽に設定するステップと、
該タプルポインタによって指された該５タプルの長さフィールドが０である場合、
該タプルポインタによって指定された該５タプルの手順インデックスに対応する手順関数を呼び出すステップと、
該タプルポインタおよび該パケットポインタを、該手順関数にパラメータとして送るステップと、
ループ終了フラグを真に設定するステップと
を含むステップをインプリメントするステップと、
該タプルポインタによって指された該５タプルの長さフィールドが０でない場合、
該タプルポインタによって指定された該５タプルのデータオフセットフィールドの値を該パケットポインタの値に追加することによって開始場所を計算するステップと、
該タプルポインタによって指定された５タプルのデータオフセットフィールドの値および該タプルポインタによって指定された５タプルによって指されたデータ長さフィールドの値を該パケットポインタの値に加算することによって終了位置を計算するステップと、
該開始位置で始まり、該終了位置で終了する該パケットデータの部分を、該タプルポインタによって指定された該５タプルの値のフィールドと比較するステップと、
該パケットデータが真に戻る場合、
該タプルポインタによって指定された該５タプルの該次のフラグおよび該手順インデックスが、該次の５タプルとの論理積関係を示す場合、該次の５タプルへのタプルポインタを指すステップ、または
該タプルポインタによって指定された該５タプルの該次のフラグおよび該手順インデックスが、該次の５タプルとの論理和関係を示す場合、該タプルポインタによって指定された該５タプルの手順インデックスに対応し、かつ該タプルポインタおよび該パケットポインタを該手順関数にパラメータとして送る手順関数を呼び出すステップ、または
該タプルポインタによって指定された該５タプルの該次のフラグおよび手順インデックスが、該次のタプルと無関係であることを示す場合、該タプルポインタによって指定された該５タプルの手順インデックスに対応し、かつ該タプルポインタおよび該パケットポインタを該手順関数にパラメータとして送る手順関数を呼び出すステップ、
を実行するステップと、
該パケットデータ比較が偽に戻る場合、
該タプルポインタによって指定された該５タプルの該次のフラグおよび該手順インデックスが、該次のタプルとの論理積関係を示す場合、次の規則で５タプルへのタプルポインタを指すステップ、または
該タプルポインタによって指定された該５タプルの該次のフラグおよび該手順インデックスが、該次の５タプルと無関係であることを示す場合、次の規則で５タプルへのタプルポインタを指すステップ、または
該タプルポインタによって指定された該５タプルの次のフラグおよび手順インデックスが、該次の５タプルと論理和関係を示す場合、該次の５タプルへの該タプルポインタを指すステップ
を実行するステップと
をインプリメントするステップと
を、ループ終了フラグが真になるまでループで繰り返すステップと
をさらに含む、請求項３９に記載の方法。
【請求項４１】
前記ネットワークデータは、ネットワークパケットに対応する、請求項３２に記載のネットワークデータフィルタリング方法。
【請求項４２】
前記実行ステップの間に利用可能である手順は、パケットを受け取ること、パケットを拒否すること、記録することを加えた処理を実行する、請求項２４に記載のネットワークデータフィルタリング方法。
【請求項４３】
少なくとも１つの条件および少なくとも１つの手順参照を含むデータフィルタリング規則のセットと、
手順関数への少なくとも１つのポインタを含む、手順テーブルと、
少なくとも１つの手順関数を含む拡張可能なセットの手順と、
該データフィルタリング規則に対して該ネットワーク内のデータを比較するための手段であって、該比較手段は、パケットからのデータおよびデータフィルタリング規則からの値を選択し、該選択されたデータと該値との間の比較動作を実行する、手段と、
該手順テーブル内の該参照された手順を調べることによって、および該少なくとも１つの手順テーブルポインタによって指された該拡張可能な手順セットにおける少なくとも１つの手順を実行することによって、該手順参照における該手順参照を実行する、手段と
を含む、データフィルタリングシステム。
【請求項４４】
ユーザが、少なくとも１つの条件および少なくとも１つの手順参照を含む少なくとも１つのデータフィルタリング規則を入力することを可能にし、該データフィルタリング規則のセットを作成するユーザインターフェースをさらに含む、請求項４３に記載のデータフィルタリングシステム。
【請求項４５】
オペレーティングシステムカーネルへのインターフェースにおける呼び出し者から受信されたネットワークパケットをフィルタリングするために埋め込まれたコンピュータ読み出し可能コード手段を有する少なくとも１つのコンピュータ使用可能媒体を含む、製造品であって、該製造品におけるコンピュータ読み出し可能プログラム手段は、
コンピュータに、ユーザによって規則で入力されたフィルタ規則文を処理させ、このようなフィルタ規則文に基づいて少なくとも１つの５タプルのフィルタリング規則を生成させるための少なくとも１つのコンピュータ読み出し可能プログラムコード手段であって、該少なくとも１つの５タプルフィルタリング規則は、長さフィールド、手順インデックス、規則オフセットフィールド、データオフセットフィールド、および値のフィールドを含む、少なくとも１つのコンピュータ読み出し可能プログラムコード手段と、
該コンピュータに、該オペレーティングシステムカーネルインターフェースにおいて受信された各ネットワークパケットに対する該フィルタリング規則を解釈させる少なくとも１つのコンピュータ読み出し可能プログラムコード手段と
を含む、製造品。
【発明の詳細な説明】
【技術分野】
【０００１】
（優先権主張）
本発明は、米国仮特許出願第０６／２９６，７６３号に関連し、米国仮特許出願第０６／２９６，７６３号の優先権を主張する。この教示は、全体として本明細書中で援用される。
【０００２】
（著作権主張）
本出願は、著作権保護を受ける資料を含む。著作権者は、それが特許商標庁のファイルまたは記録に現われている場合、特許開示物を有するいかなる人によるファクシミリコピーについて異議を有さないが、他の場合、全ての著作権を保有する。
【０００３】
（発明の分野）
本発明は、パケットフィルタリングに関する。更に詳細には、それは、空間効率の良いパケットフィルタリングを達成するためのフィルタ規則を表示する、小さな、バイナリ５タプルの最適化されたシーケンスの使用と、トリガするイベントの発生時に動的および拡張可能な処理挙動を支援するおよび手順テーブルの使用とに関する。
【背景技術】
【０００４】
（発明の背景）
パケットフィルタリングは、ネットワークアクセス制御、またはファイヤウォールタイプ、様々なネットワークシステムについての性能を提供する機能である。パケットフィルタリングは、通信ネットワークにおいて、ネットワークデバイス、またはノードから送信されるか、受信されたそれぞれのネットワークパケットを調べて、このように調べることに基づいて判断することにより、上記のファイヤウォールタイプを達成する。
【０００５】
従来技術のたいていのパケットフィルタは、ネットワークアドミニストレータ、システムアドミニストレータ、ネットワークデバイス所有者等が特定のフィルタリング規則を動作上のグラフィカルユーザインターフェース（ＧＵＩ）を介して規定することを可能にする。しかし、たいていのパケットフィルタリングは、単に、ユーザが、パケットが捨てられるか、このような判断に基づいて続行され得るかどうかを特定することを可能にする。これらは、「否定（ｄｅｎｙ）」および「許可（ａｌｌｏｗ）」アクションまたは規則と呼ばれる。Ｅｄｗａｒｄ  Ｂｏｄｅｎ等の、米国特許第６，１８２，２２８号Ｂ１（２００１年１月３０日に発行した‘２２８特許）によって教示されたシステム等の、この技術への上記のアプローチは、パケットデータに基づいて特定の情報をログするアクションを含むように利用可能なアクションの数を増加させた。
【０００６】
許可、否定およびログフィルタ規則は、上から下へ連続して処理された、規則の秩序化されたリストとして、最も一般的に、入力される。秩序は、規則作成者、しばしばシステムまたはネットワークアドミニストレータによって特定される。それぞれの規則は、ネットワークトラフィックのある種類を許可するか、または否定する。さらにセキュアなパケットフィルタにおいて、パケット処理は、パケットが明示的に許可され、明示的に否定され、またはパケットが否定される場合の規則がなくなるまで、全ての規則を通じて続行する。一般に、かなり大きく、複雑なフィルタ規則セットは、ネットワークデバイスが支援されるべきそれぞれのプロトコルのために書き出されなければならない。
【発明の開示】
【課題を解決するための手段】
【０００７】
（発明の要旨）
したがって、本発明は、関連技術の制限および不利益による問題の１以上を実質的に除去するコンパクトで、拡張可能なパケットフィルタリングシステムおよび方法に関する。
【０００８】
したがって、改良されたパケットフィルタリングシステムおよび方法を提供することが本発明の目的である。
【０００９】
空間効率の良いパケットフィルタリングシステムおよび方法を提供することが本発明のさらなる目的である。
【００１０】
動的および拡張可能なフィルタリングシステムおよび方法を提供することもまた本発明の目的である。
【００１１】
本発明のさらなる特徴および利益は、以下に続く説明に記載されており、この説明から部分的に明らかであり、本発明の実用によって獲得され得る。本発明の目的および他の利益は、本明細書の記載された説明および添付された図面に特に示された構造によって実現され、達成される。
【００１２】
本発明の実施形態にしたがって、ネットワークアダプタ（またはデータリンク）のネットワークプロトコルソフトウェアスタックのレベルで、またはそれより上で、パケットをフィルタリングするシステムおよび方法は提供される。ネットワークアダプタレベルのパケットまたはネットワークアダプタレベルより上のパケットのフィルタリングは、規則ファイルまたは規則データベース（まとめて「規則ファイル」）内にユーザによって入力されたフィルタ規則文および手順文を処理することにより、達成される。このような規則ファイルは、フィルタインタープリタにロードされ得る５タプルフィルタリング規則および手順テーブルに変換され得る。次いで、フィルタインタープリタは、このアダプタでまたは低いレベルネットワークソフトウェアによるかのどちらかを介して、ネットワークアダプタによって受け取られたそれぞれのパケットのユーザ生成フィルタリング規則を解釈し得、決定（ｒｅｓｏｌｖｅ）し得る。
【００１３】
小さく、ネットワーキングを備えたデバイス、限定されるわけではないが、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、ページャ、腕時計、カメラ等（まとめて「ネットワークデバイス」）について、フィルタリングアクションは、上記のデバイスにて利用可能な限定された処理力およびメモリ量のために、かつ、それぞれのパケットのために処理されなければならない潜在的に大きい数のフィルタ規則ために、可能な限り時間的に効率良く、空間的に効率良いことが好適である。不必要に大きなフィルタファイルまたは過度に時間を消費するフィルタリング規則は、デバイスの他の使用と干渉し得、スループットまたは他の好まれない性能問題を引き起こし得る。したがって、システムを介して流れるそれぞれのパケットが全てのフィルタ規則によって処理されなければならない従来技術のシステムと異なり、本発明は、一旦パケットが識別されると、知的に、必要な規則のみをパケットに適用する。
【００１４】
従来技術のいくつか（‘２２８特許等）は、約６以上のパラメータを有するフィルタリング規則に基くシステムを作成したが、本発明は、５タプル定義を実施する。この低減は、結果的に、柔軟性のより高いレベル、増大された性能、および従来技術よりも低減された記憶要件を生じさせる。このような改良は、本発明が限定された記憶および処理能力のみを備えたコンピューティングデバイス上で用いられる場合に、特に有益であり得る。
【００１５】
本発明の他の特徴および利益は、添付の図面と関連させて、本発明の以下の詳細な説明から明らかである。前述の一般的な説明および以下の詳細な説明は、模範であり、例示である。
【００１６】
添付の図面は、本発明のさらなる理解を提供するように含まれ、本明細書の一部に援用され、本明細書の一部を構成するように含まれており、本発明の原理を説明するのに有用である説明とともに、本発明の実施形態を例示する。
【００１７】
（好適な実施形態の詳細な説明）
ここで、本発明の好適な実施形態、添付図面に例示される実施例に、詳細に、参照される。ネットワークソフトウェアスタック内で実行され得る非常にコンパクトなパケットフィルタの生成およびテストと、不必要なオーバーヘッドで全てのパケットフィルタを担うことなく、パケットを識別する後の処理オプションの分離および拡張と、パケットフィルタがフィルタ規則を変えることなく、追加することなく、特定のパケットを識別する場合の動的プロセス変化とは、従来技術を超える本発明の利益の内にある。
【００１８】
図１は、本発明の好適な実施形態の重要な要素、およびこのような要素間の論理関係およびデータフローを例示する。図１に示された実施形態は、フィルタの変形、手順および、５タプル再生１２２および手順表示１２４、および、ネットワークソフトウェア１３２および１３６を介するネットワークパケットとしての５タプル１２２の解釈１３４に関する他の規則文１００に関係する。
【００１９】
フィルタ、手順、および他の規則文１００は、フィルタコンパイラ１０２によって処理される。フィルタコンパイラ１０２は、以下のテーブル１およびテーブル２に提示された擬似コードに類似したコードを用いて、実施され得る。テーブル１は、フィルタ文を処理するためのサンプル擬似コードを提供し、テーブル２は、手順文を処理するためのサンプル擬似コードを提供する。フィルタコンパイラ１０２は、規則ファイル１０６および手順ファイル１０８を出力する規則ファイル１０６は、フィルタによって適用されるための規則のバイナリ表示を含む。規則ファイル１０６は、Ｊａｖａ（Ｒ）バイトコード、マシン語その他の、マシン読み出し可能コードの形式を取り得る。手順ファイル１０８は、フィルタによって適用されるポリシーのバイナリ表示を含む。手順ファイル１０８は、好適には、手順表示のテーブルと、Ｊａｖａ（Ｒ）バイトコード、マシン語その他のマシン読み出しコードにコンパイルされた手順関数のセットとの組み合わせである規則ファイル１０６および手順ファイル１０８は、規則が適用されるべきであるそれぞれのネットワークアダプタのために、生成され得るか、規則ファイル１０６および手順ファイル１０８は、ネットワークデバイスの範囲にわたってコピーされ得る。
【００２０】
ネットワークアダプタデバイスドライバ１３０または低レベルのネットワークプロトコル１３２のいずれか、または両方が初期化され、フィルタローダ１２０が実行する。サンプルフィルタローダ１２０の実行擬似コードが、以下に、テーブル３およびテーブル４で提供される。テーブル３は、手順テーブルをロードするための擬似コードを提供し、テーブル４は、５タプルをロードするための擬似コードを提供する。
【００２１】
フィルタ文の処理
／＊５タプルを生成するためにフィルタ文を処理する＊／
構成された５タプルを保持するために５タプルバッファを作成する；
５タプルバッファの先頭に’ｎｅｘｔｔｕｐｌｅｐｏｉｎｔｅｒ’を設定する；
５タプルバッファの先頭に’ｎｅｘｔｒｕｌｅｐｏｉｎｔｅｒ’を設定する；
ｗｈｉｌｅ（より多くの文がファイルに存在する）｛
ｉｆ（規則文がフィルタ文である）｛
ｆｏｒ（文における各論理条件）｛
条件に対して５タプルを構成する；
５タプルバッファの’ｎｅｘｔｔｕｐｌｅｐｏｉｎｔｅｒ’にコピーする；
｝
ｎｅｘｔｒｕｌｅｐｏｉｎｔｅｒをインクリメントする；
ｆｏｒ（このフィルタ規則に対して生成された各５タプル）｛
’規則オフセット’５タプル要素を設定する＝
ｎｅｘｔｒｕｌｅｐｏｉｎｔｅｒ−５タプルのアドレス；
｝
デフォルトの最後の５タプルを構成する；
５タプルバッファの’ｎｅｘｔｔｕｐｌｅｐｏｉｎｔｅｒ’にコピーする；
５タプルバッファ’ｎｅｘｔｔｕｐｌｅｐｏｉｎｔｅｒ’をインクリメントする；
｝
ｎｅｘｔｒｕｌｅｐｏｉｎｔｅｒをインクリメントする；
ｆｏｒ（このフィルタ規則に対して生成された各５タプル）｛
「規則オフセット」５タプルエレメントを設定する＝
ｎｅｘｔｒｕｌｅｐｏｉｎｔｅｒ−５タプルのアドレス；
５タプルバッファｎｅｘｔｔｕｐｌｅｐｏｉｎｔｅｒ’をインクリメントする；
｝
ｅｌｓｅ｛／＊通常のように他の文を処理する＊／｝
｝
各ネットワークアダプタのための手順ファイルを書き込む
テーブル１
フィルタ文の処理
／＊手順テーブルを生成するために手順文を処理する＊／
構成された手順テーブルを保持するために手順バッファを作成する；
手順バッファの先頭部に’ｎｅｘｔｐｒｏｃｐｏｉｎｔｅｒ’を設定する；
ｗｈｉｌｅ（より多くの手順文がファイル内に存在する）｛
ｉｆ（規則文が手順文である）｛
手順インデックスエントリを構成する；
手順バッファの’ｎｅｘｔｐｒｏｃｐｏｉｎｔｅｒ’にコピーする；
手順バッファの’ｎｅｘｔｐｒｏｃｐｏｉｎｔｅｒ’をインクリメントする；
ｅｌｓｅ｛／＊通常のように他の文を処理する＊／｝
｝
各ネットワークアダプタのための規則ファイルを書き込む
テーブル２
ネットワークアダプタデバイスドライバ１３０または低レベルのネットワークプロトコル１３２のいずれか、または両方が初期化され、フィルタローダ１２０が実行する。サンプルフィルタローダ１２０の実行擬似コードが、以下に、表３および表４で提供される。表３は、手順テーブルをロードするための擬似コードを提供し、表４は、５タプルをロードするための擬似コードを提供する。
【００２２】
ロード手順テーブル
／＊手順インデックスをロードおよび分解する＊／
ロード手順関数ライブラリ；
手順ファイルを読み込む；
手順テーブルをフィルタインタープリタにロードする；
ｆｏｒ（各手順インデックスエントリ）｛
手順関数へのポインタを有するインデックスエントリをロードする；
｝
テーブル３
５タプルテーブルをロードする
／＊５タプルテーブルをロードする＊／
規則ファイルを読み出す；
規則をフィルタインタープリタにロードする；
テーブル４
好適な実施形態において、フィルタローダ１２０の実行または初期化はまた、フィルタインタープリタ１３４が５タプル規則１２２および手順テーブル１２４をロードすることを可能にする。５タプル１２２は、一旦ロードされると、ネットワークパケットが、１以上のネットワークアダプタ（図示せず）へのデバイスドライバ１３０を介して、システムに入り、そこから離れて１以上のネットワークアダプタに向かう場合に、フィルタインタープリタ１３４によって用いられ得る。５タプルがフィルタインタープリタ１３４によって解釈され得るプロセスを実施する擬似コードは、以下のテーブル５にて提供される。
2004535714.tif 000003
2004535714.tif 000004
テーブル５
ネットワークアダプタは、通常、デバイスに組み込まれるか、脱着可能にデバイスに結合される。このようなネットワークアダプタは、限定されるわけではないが、電気電子技術協会（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）（ＩＥＥＥ）８０２．３または８０２．５規格を実施し、ｆｉｂｅｒ  ｄｉｓｔｒｉｂｕｔｅｄ−ｄａｔａ  ｉｎｔｅｒｆａｃｅ（ＦＤＤＩ）、１０Ｂａｓｅ−２、１００−Ｂａｓｅ−ＦＸ、１００Ｂａｓｅ−ＴＸその他を含むもの等の無線デバイスの形式と、限定されるわけではないが、無線周波数、光学、音響または磁気誘導トランスミッタを実施し、ＩＥＥＥ８０２．１１規格、ブルートゥース（Ｂｌｕｅ  Ｔｏｏｔｈ）無線通信規格その他を含むもの等の有線デバイスの形式を取る。ネットワークアダプタは、通常、デバイスがアクセスを有するインターフェースデータ構造を提示することにより、ネットワークアダプタが組み込まれるか、取り付けられるデバイスと通信を取る。
【００２３】
デバイス開発者または製造者は、デバイスドライバコード１３０を書き込み、これにより、通常、コマンドのあるセットを用いて動作し得、所定のデータ構造を備えるデバイスが、コマンドの異なるセットおよび異なるデータ構造を用い得るネットワークアダプタと効果的かつ効率良く通信可能にする。デバイスドライバコード１３０は、常に、デバイスのコマンドおよびデータ構造を、ネットワークアダプタによって用いられるコマンドおよびデータ構造に変換する（逆もまた同様）。たいていの実施形態では、デバイスドライバコードは、ネットワークアダプタ、または、デバイスに取り付けられるか、または組み込まれる他の周辺機器とデバイス上で起動するオペレーティングシステムとの間のインターフェースとして、働く。周辺機器から受けるか、周辺機器があて先とされるデータまたはコマンド（まとめて「データ」）は、データが必要なフォーマットに変換され得るように、デバイスドライバを介してルーティングされる。上記の説明が明示的なデバイスドライバコードの使用を詳述するが、デバイスが明示的にデバイスドライバの使用を支援しないこのような環境にあってさえ、デバイスがネットワークアダプタとのインターフェースを取ることを可能にするソフトウェアまたはハードウェアがデバイスドライバと機能的な等価物であり、本発明の精神または範囲から逸脱することなく、デバイスドライバと取り替えられ得ることが当業者には明らかである。
【００２４】
現在では、フィルタインタープリタ１３４は、可能な限り、プロトコルスタック上で低く、ネットワークアダプタに近くで、実施されることが好適である。図１は、デバイスドライバコード１３０および低レベルネットワークプロトコルソフトウェア１３２に関して、本発明の一つの可能な実施形態を例示する。この実施形態において、フィルタインタープリタ１３４は、デバイスドライバコード１３０を介して１以上のネットワークアダプタと通信できる。図２に示された別の実施形態において、フィルタインタープリタ１３４は、低レベルネットワークプロトコルソフトウェア１３２を介して、１以上のネットワークアダプタと通信する。
【００２５】
図１および図２の両方が例示するように、フィルタインタープリタ１３４は、任意の入来するパケットを、ＴＣＰ、ＵＤＰ、ＮｅｔＢｉｏｓ、ＳＰＸ、ブルートゥースおよびその他等の低レベルネットワークプロトコル１３２またはより高いレベルのネットワークプロトコル１３６に通過させる前に、５タプル１２２として示されるフィルタ規則と、手順テーブルおよび手順関数１２４として例示される手順とを実施する。さらに、図２および図３に例示される実施形態は、フィルタインタープリタ１３４が、任意の出て行くパケットをデバイスドライバコード１３０または低レベルネットワークプロトコル１３２に通過させる前に、フィルタ規則および手順を実施することを可能にする。さらに別の実施形態において、フィルタインタープリタ１３４は、好適にはネットワークアダプタの近くで、可能な限りより高いレベルで、一つのプロトコルスタックレベルで入来するネットワークパケットを遮断し得る一方、出て行くパケットが別のプロトコルスタックレベルに遮断される。上述の説明は、可能な限りネットワークアダプタの近くで、主にフィルタインタープリタ１３４を実施することに焦点を置いているが、フィルタインタープリタ１３４は、本発明の精神または範囲から逸脱することなく、別のレベルで実施され得る。
【００２６】
図３は、ネットワークまたはシステムアドミニストレータによって入力され、フィルタコンパイラ１０２によって受信されるサンプルフィルタ規則文１００を例示する。三つの実施例規則１４０、１４２および１４４が示される。最初の二つの、規則１４０および１４２は、明示的にシステムアドミニストレータによって入力された規則である。好適な実施形態において、最後の、「デフォルト否定」規則とも呼ばれる規則１４４は、フィルタコンパイラ１０２により、自動的に、生成される。あるいは、システムアドミニストレータ、ネットワークアドミニストレータまたは他のユーザが規則を入力することを可能にするユーザインターフェースは、ユーザが、「デフォルト否定」規則の包含がイネーブルまたはディセーブルすることを可能にする。このような包含がディセーブルにされると、「デフォルト許可」規則が置き換えられ得る。「デフォルト否定」規則が用いられる場合、フィルタ規則１４６を秩序化する好適なアプローチは、所望の、または、望ましいネットワークトラフィックが続行することを可能にする規則を書き込むことである。パケットが続行することを明示的に可能にするいくつかの規則（規則１４０および１４２等）にマッチングしない任意のパケットは、デフォルト否定規則１４４によって捨てられる。
【００２７】
フィルタセットｆｓ１（Ｆｉｌｔｅｒ  Ｓｅｔ  ｆｓ１）の規則（ｒｕｌｅ）１４０は、Ｐｒｏｃｅｄｕｒｅ＝Ａｌｌｏｗ  １５０、およびセレクタのＤｉｒｅｃｔｉｏｎ＝＊１５２（＊は「任意」を意味する）、ソースアドレスＳｏｕｒｃｅ  Ａｄｄｒ＝＊１５４，あて先アドレスＤｅｓｔ  Ａｄｄｒ＝＊１５６およびプロトコルＰｒｏｔｏｃｏｌ＝ＴＣＰ１５８を含む。フィルタセットｆｓ１（Ｆｉｌｔｅｒ  Ｓｅｔ  ｆｓ１）の規則１４２は、Ｐｒｏｃｅｄｕｒｅ＝Ａｌｌｏｗ  ａｎｄ  Ｌｏｇ  １６０，およびセレクタのＤｉｒｅｃｔｉｏｎ＝＊１６２、ソースアドレスＳｏｕｒｃｅ  Ａｄｄｒ＝＊１６４、Ｄｅｓｔ  Ａｄｄｒ＝＊１６６およびプロトコルＰｒｏｔｏｃｏｌ＝ＵＣＰ１６８，ソースポートＳｏｕｒｃｅ  Ｐｏｒｔ＝（１６１，１６２）１７０，あて先ポートＤｅｓｔ  Ｐｏｒｔ＝（１６１，１６２）１７２を含む。ｎ規則１４４は、Ｐｒｏｃｅｄｕｒｅ＝Ｄｅｎｙ  １８０，およびセレクタのＤｉｒｅｃｔｉｏｎ＝＊１８２、Ｓｏｕｒｃｅ  Ａｄｄｒ＝＊１８４，Ｄｅｓｔ  Ａｄｄｒ＝＊１８６およびプロトコルＰｒｏｔｏｃｏｌ＝ＴＣＰ１８８を含む。図３に例示された例は特定のフィールド名を参照するが、このようなフィールド名は任意であり、任意のまたは全てのフィールド、または、デバイスによって支援されたパケット配向プロトコルと共に送信される他の類似の情報を含み得ることが当業者には理解される。
【００２８】
規則１４０、１４２および１４４は、それぞれのパケットについて上から下へと論理的に処理される。したがって、パケットが所与の規則に記載された局面全てを満足させる場合、適切な手順関数は、規則（図２のブロック１５０、１６０または１８０）に特定化されたように、呼び出される。例として、本発明を限定することを意図することなく、規則１４０については、Ｐｒｏｃｅｄｕｒｅ＝Ａｌｌｏｗ  １５０が、パケットが続行可能にする「Ａｌｌｏｗ手順関数を呼び出す」として解釈され得る。所与のパケットが第１の規則１４０にマッチングしない場合、パケットが次の規則１４２に対して調べられる。このプロセスは、最後の規則１４４まで繰り返す。用いられると、デフォルト否定規則１４４は、任意のパケットにマッチングし、パケットが否定手順関数によって処理され、捨てられる（すなわち続行することが可能とされない）ことを意味するＰｒｏｃｅｄｕｒｅ＝Ｄｅｎｙ  １８０を呼び出すように構成される。
【００２９】
図３に示された実施形態において、第１のフィルタ規則１４０は、任意のソースから任意のあて先への、全てのＴＣＰ／ＩＰデータグラムを許可する。第２のフィルタ規則１４２は、ソースポートまたはあて先ポートが１６１または１６２である場合、ＵＤＰトラフィックを許可する。これらは、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）についての周知のポートである。フィルタセット名（「ｆｓ１」）は、ＮＥＴＷＯＲＫ＿＿ＩＮＴＥＲＦＡＣＥ文を介して、規則セットの先頭に、フィルタ規則セットを特定のネットワークアダプタに関連させるように用いられる。この文について、１以上のフィルタセットは、１以上のネットワークアダプタと関連する。好適な実施形態において、ネットワークアダプタと関連するフィルタセットのみが、そのネットワークアダプタに、フィルタローダによってロードされる。これは、それぞれのネットワークアダプタが、ファイル規則のそれ自身の個別のコピーを備えたそれ自身のフィルタローダを有さなければならないことを意味する。これが全体の記憶要件を増加させる一方で、好適なバイナリ規則の実施は、デバイス上に重大な記憶要件を一般に課さないように十分に小さい規則セットを生成する。個別のフィルタローダの使用およびそれぞれのネットワークアダプタに対するフィルタ規則が、現在、好適であるが、任意の時間のメモリ内のフィルタ規則およびフィルタローダの数は、本発明の精神または範囲から逸脱することなく、様々な技術を介して低減され得ることが当業者には明らかである。
【００３０】
図４を参照すると、それぞれの５タプルの論理構造が長さ（ｌｅｎｇｔｈ）２００、手順インデックス２０２、規則オフセット２０４、データオフセット２０６および値２０８を含む。長さ２００は、実行されるべき比較する長さ（例えば一つのオクテット（ｏｃｔｅｔ）、二つのオクテット等）を表示する。長さ２００はまた、値２０８と比較されるべきオクテットのビット、例えばフラグビットを示し得る。
【００３１】
手順インデックス２０２は、比較が真である場合に実行されることになる手順テーブル関数を指す手順テーブルエントリについてのインデックス、またはポインタである。以下のテーブル６は、手順関数を実施するサンプル擬似コードを提供する。
【００３２】
【数１】
2004535714.tif 000005
テーブル６
テーブル６が示すように、全ての手順は、本発明の好適な実施形態において、パケットを許可し（Ａｌｌｏｗ）、否定し（Ｄｅｎｙ）、または拒絶する（Ｒｅｊｅｃｔ）ためにアクションコードを戻す。さらなるアクションコードおよび特定のパケット処理手順は、容易に、このスキームで実施される。好適な実施形態において、このようなさらなるパケット処理手順は、限定されるわけではないが、記録、サニタイジング（ｓａｎｉｔｉｚｉｎｇ）およびこれらの組み合わせを含み得る。好適な実施形態にて実施されるこのような手順の特定リストが、図５のパケット処理手順３４０〜３４８により、例示される。組み合わせ手順の例として、手順が規則の手順要素のＤＥＮＹ＿ＡＮＤ＿ＬＯＧである場合、フィルタリング処理の直接のユーザ可視性を提供するログエントリが作成され、パケットが否定される。
【００３３】
ログがフィルタ規則をデバッグし、検証し、アタックを検出するために用いられる場合、このような記録が有用であり得る。好適な実施形態において、ＩＰパケットのそれぞれのログエントリに含まれる情報は、手順インデックス要素（ＡＬＬＯＷ＿ＡＮＤ＿ＬＯＧ、ＤＥＮＹ＿ＡＮＤ＿ＬＯＧ等）、パケットの方向（内向きまたは外向き）、ソースおよびあて先ＩＰアドレス、オフセットでのパケット内のソースおよびあて先ポート数の値、フィルタ５タプルを識別するのに十分な情報（実際のフィルタ規則５タプルまたはフィルタ規則の始動位置のオフセット等）を含む。それぞれがログされ、フィルタリングされたプロトコルは、利用可能なフィールドおよび情報の任意の組み合わせまたはフォーマットを有する一意的なログエントリジェネレータを実施するための、本発明の、拡張可能な手順アーキテクチャを使用できる。
【００３４】
規則オフセット２０４は、規則テーブルの次の規則に対して現在の５タプルからオフセットされるバイトである数である。５タプルがパケットにマッチングしない場合、フィルタインタープリタは、ＮＥＸＴ  ｆｌａｇと呼ばれる特別のフラグが設定される場合を除いて、規則オフセットを現在の５タプルのアドレスに加えることにより、次の規則を選択する。５タプルがパケットにマッチングせず、ＮＥＸＴ  ｆｌａｇが設定され、手順インデックスが有効になる場合、フィルタインタープリタは、現在の５タプルのアドレスに、現在の５タプルのサイズを加えることにより、次の５タプルを選択する。フィルタコンパイラは、規則オフセットがゼロでないことを確実にする。ＮＥＸＴ  ｆｌａｇの使用についてさらに詳しく言うと、規則オフセット２０４のＮＥＸＴ  ｆｌａｇが設定される場合、フィルタインタープリタは、比較のために、規則の次の５タプルに踏み入れる。ＮＥＸＴ  ｆｌａｇが設定され、比較が真である後に手順インデックスが空かヌルである場合、次の比較の結果が現在の比較に論理積される。比較が偽である後にＮＥＸＴ  ｆｌａｇが設定され、Ｐｒｏｃｅｄｕｒｅ  Ｉｎｄｅｘが有効である場合、次の比較が現在の比較に論理和される。
【００３５】
データオフセット２０６は、この５タプルによって調べられるそのパケット内のフィールドに関するパケットへのオフセットである数である。データオフセットは、本発明が、ネットワークプロトコルパケットまたは他のネットワーク送信内の任意のフィールドまたはデータポジションにアクセスすることを可能にする。例により、本発明を限定する意図なく、データオフセット２０６は、オクテットオフセットまたはオクテットオフセットの組み合わせおよびオクテット内のビットオフセットであり得る。フィルタコンパイラは、規則セットの最新の５タプルが否定手順インデックスを含むことを確実にする。任意に、フィルタコンパイラは、許可手順インデックスを含む規則セットの最新の５タプルを発生し得る。データオフセットが、様々なネットワークスタックレベルで動作するための規則を採用するように、規則ローディング中に直接に変更され得るか、ベースパケットオフセットについての処理中に組み合わされ得ることが当業者に理解される。ベースパケットオフセットは、フィルタ規則が適用されるネットワークプロトコルレベルに依存して変更する。
【００３６】
値２０８は、データオフセット２０６によってアクセスされるパケット内のフィールドと比較されることになる値である。この５タプル要素に関して、５タプルの論理動作は、「オペランド１，イコール？，オペランド２」として表現される。オペランド１は、データオフセット２０６のパケットデータから得られ、オペランド２は、５タプル要素値２０８である。「イコール？」は均等性についてのテストを言う。そして、５タプルは、「ソースポート数，イコール？，テストポート数」等の表現を表示し得る。均等テストが、本発明の好適な実施形態の一部として用いられるが、別の数学テストが本発明の精神または範囲から逸脱することなく置き換わられ得ることが、当業者には明らかである。
【００３７】
図５は、図３の三つのフィルタ規則１４０、１４２および１４４に対応する５タプル２２０、２２４、２２６、２３０、２３２、２３４および２４０のセットを例示する。テーブル７は、これらの５タプルの別の表示を提示する。「ＮＥＸＴ＋」は、規則オフセットで論理積される設定されたＮＥＸＴ  ｆｌａｇを言う。図５を参照すると、ブロック２７４、２８４、２９４および３０４の「Ｎ」が設定されたＮＥＸＴｆｌａｇに対応する。
【００３８】
【数２】
2004535714.tif 000006
テーブル７
全ての５タプルは、いくつかがヌル（バイナリ０）であり得るか、いくつかの他の未使用の値であり得る５つの要素を有する。
【００３９】
テーブル７には、手順インデックス１は、図５の手順インデックス２５２および手順テーブルエントリ３４０に対応し、手順インデックス２は、図５の手順インデックス３１２および手順テーブルエントリ３４２に対応し、手順インデックス７は、図５の手順インデックス３２２および手順テーブルエントリ３４２に対応する。
【００４０】
もちろん、５タプルの直接メモリ内形式は、’’）’’または’’を含まず、’’は、個別の線上にあり、バイナリデータのＴ＊Ｓ８ビットオクテットである。Ｔは、５タプルの８ビットオクテット内に、この特定の例にて、５タプルであり、Ｓはサイズである。ユーザが定義し得るフィルタ規則の数または５タプルの結果として生じるサイズ（５タプル１２２のオクテット内の全長さ）についての効率的な限界はない。
【００４１】
テーブル７２および図５は、手順分解を示さない。（２５２、２７２、２８２、２９２、３０２、３２２）で示された手順値のそれぞれは、実際に、関数エントリポイントへのアドレスポインタのテーブルへのインデックスまたはポインタである。手順関数は、二つの独立変数、それらの手順インデックスを含む現在の５タプルへのポインタおよびパケットについてのポインを取り、リターンコードを戻す。手順関数は、戻す前にパケットを変更させ得る。
【００４２】
図５の例を参照すると、値２５８にマッチングするパケットデータに関する５タプル２２０の解釈後に、ｆｕｎｃｔｉｏｎ  Ａｌｌｏｗ３４０に関する独立変数は、２２０（すなわち５タプル２２０へのポインタ）およびパケットへのポインタ（図示せず）を含む。さらなる独立変数または別の独立変数は、本発明の精神または範囲から逸脱せずに、供給され得ることが明らかである。このアーキテクチャは、手順関数の処理オプションを拡張し、図１のフィルタインタープリタ１３４によって上記の関数３４０〜３４８の使用を単純化し、フィルタインタープリタを小型に維持する。
【００４３】
図５には、５タプル２３４の下の省略記号（ｅｌｌｉｐｓｅ）は、５タプルのさらなる任意の数が続き、これらの省略記号は図３の規則１４２の下の省略記号に対応することを示す。したがって、図５において、５タプル表示は、図３に示された全ての規則に提供される。フィルタ文１４０、１４２および１４４と図５の５タプルとの間の対応は、以下のようである。１４２は２２４、２２６、２３０、２３２、２３４に対応する。１４４は２４０に対応する。
【００４４】
５タプルオフセット要素２５６、２８６および３０６の値９、２０、２２は、それぞれ、適切なフィールドが見出されるＩＰデータグラムへのオクテットデータオフセットである。９は、ＩＰダイアグラムのプロトコルフィールドに対応する（オフセットされる）。同様に、２０はＩＰソースポートに対応し、２２はＩＰあて先ポートに対応する。５タプル値要素（ブロック２５８、２７８、２８８、２９８、３０８および３１８）が６（ＴＣＰ）、２０（ＵＤＰ）等である。
【００４５】
図５では、ボックス３４８はまた、さらなる、任意の手順関数が続くことを示す。手順テーブル２６０のサイズまたは手順関数の数は限定されない。
【００４６】
本発明が、詳細に、本発明の特定の実施形態を参考にして説明されてきた一方、様々な変化および変更は、本発明の精神および範囲から逸脱することなく、なされ得ることが当業者には明らかである。したがって、本発明が特許請求の範囲およびそれらの均等物の範囲内にある場合、本発明がこの発明の変更および改変を含むことが意図される。
【図面の簡単な説明】
【００４７】
【図１】図１は、好適なデータフローを例示するフローチャートである。
【図２】図２は、好適なデータフローを例示するフローチャートである。
【図３】図３は、サンプルフィルタ規則のセットである。
【図４】図４は、本発明の好適な実施形態にしたがって、５タプルのフォーマットを例示するブロック図である。
【図５】図５は、本発明の好適な実施形態にしたがって、図１のロードするステップに続く点にて、図１の実施例セットについて、５タプルの論理構造を例示するブロック図である。
【図１】
2004535714.tif 000007
【図２】
2004535714.tif 000008
【図３】
2004535714.tif 000009
【図４】
2004535714.tif 000010
【図５】
2004535714.tif 000011
【国際公開パンフレット】
2004535714.tif 000012
2004535714.tif 000013
2004535714.tif 000014
2004535714.tif 000015
2004535714.tif 000016
2004535714.tif 000017
2004535714.tif 000018
2004535714.tif 000019
2004535714.tif 000020
2004535714.tif 000021
2004535714.tif 000022
2004535714.tif 000023
2004535714.tif 000024
2004535714.tif 000025
2004535714.tif 000026
2004535714.tif 000027
2004535714.tif 000028
2004535714.tif 000029
2004535714.tif 000030
2004535714.tif 000031
2004535714.tif 000032
2004535714.tif 000033
2004535714.tif 000034
2004535714.tif 000035
2004535714.tif 000036
2004535714.tif 000037
2004535714.tif 000038
2004535714.tif 000039
2004535714.tif 000040
【国際公開パンフレット（コレクトバージョン）】
2004535714.tif 000041
2004535714.tif 000042
【国際調査報告】
2004535714.tif 000043
2004535714.tif 000044