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