(57)【要約】【課題】  ネットワーク装置においてファイアウォールアーキテクチャを実装する方法およびシステムを提供すること。【解決手段】  ファイアウォールアーキテクチャは、複数のネットワークレイヤー、第１のファイアウォールエンジン、および１つまたは複数のコールアウトモジュールを含む。レイヤーは、パケットおよびパケット情報を第１のファイアウォールエンジンに送信し、パケットコンテキストを維持し、その後のレイヤーに渡し、パケットを処理する。第１のファイアウォールエンジンは、パケット情報をインストールされている１つまたは複数のフィルタと比較し、パケットをどのように扱うかを示すアクションをレイヤーに戻す。コールアウトは、侵入検知、ロギング、保護者による制御機能など追加の機能を提供する。【選択図】  図３
2004362581.tif 000002
【特許請求の範囲】
【請求項１】
パケットのマルチレイヤーフィルタリングを提供するコンピュータシステム内に実装されるファイアウォールフレームワークにおいて、
各レイヤープロセッサが前記レイヤープロセッサに関連するパケットのレイヤーパラメータを処理することができ、さらに前記レイヤーパラメータを含む分類要求を発行することができる１組のレイヤープロセッサと、
前記１組のレイヤープロセッサのうちの１つである要求レイヤープロセッサから第１のレイヤーパラメータを受信し、アクションを前記要求レイヤーに戻すレイヤーインターフェースと、
１組のインストール済みフィルタと、
前記１組のインストール済みフィルタから少なくとも１つの整合フィルタを識別し、前記整合フィルタから前記レイヤーインターフェースによって戻される前記アクションを識別するルックアップ構成要素と
を含む第１のファイアウォールエンジンと
を含むことを特徴とするファイアウォールフレームワーク。
【請求項２】
前記要求レイヤーは、前のレイヤープロセッサから、第２のレイヤーパラメータを含むパケットコンテキストを受信し、前記分類要求は、前記パケットコンテキストを含み、前記ルックアップ構成要素は、さらに前記パケットコンテキストを使用して前記少なくとも１つの整合フィルタを識別することを特徴とする請求項１に記載のファイアウォールフレームワーク。
【請求項３】
前記ファイアウォールエンジンは、
前記第１のレイヤーパラメータ、前記パケットコンテキスト、および前記パケットを、前記パケットを分析し前記アクションを前記ファイアウォールエンジンに戻すコールアウトに送信するコールアウトインターフェース
をさらに備えることを特徴とする請求項２に記載のファイアウォールフレームワーク。
【請求項４】
前記要求レイヤーは、前記パケットコンテキストを次のレイヤーに渡すことを特徴とする請求項２に記載のファイアウォールフレームワーク。
【請求項５】
新しいフィルタを確立するポリシープロバイダと、
前記新しいフィルタを前記１組のインストール済みフィルタに追加する第２のファイアウォールエンジンと
をさらに備えることを特徴とする請求項１に記載のファイアウォールフレームワーク。
【請求項６】
前記インストール済みフィルタのそれぞれは、
データのサイズを定義する型と、フィルタパラメータを含むデータとからなる型―データ対を含むフィルタ条件と、
前記アクションと
を備えることを特徴とする請求項１に記載のファイアウォールフレームワーク。
【請求項７】
前記フィルタパラメータは、値の範囲を含むことを特徴とする請求項６に記載のファイアウォールフレームワーク。
【請求項８】
前記フィルタは、前記フィルタの優先度を定義する重み係数を備えることを特徴とする請求項６に記載のファイアウォールフレームワーク。
【請求項９】
前記１組のレイヤープロセッサは、
インターフェース番号、ソースおよび宛先のＭＡＣアドレスを含むレイヤーパラメータを有するリンクレイヤーと、
ソースおよび宛先のＩＰアドレスを含むレイヤーパラメータを有するネットワークレイヤーと、
ソースおよび宛先のポートを含むレイヤーパラメータを有するトランスポートレイヤーと、
データストリームを含むレイヤーパラメータを有するアプリケーションレイヤーと
をさらに含むことを特徴とする請求項１に記載のファイアウォールフレームワーク。
【請求項１０】
前記ネットワークレイヤーは、ＩＰパケットのフラグメントを処理するフラグメントレイヤー、および完全なＩＰパケットを処理する完全アセンブル済みレイヤーにさらに分割され、前記フラグメントレイヤーおよび前記完全アセンブル済みレイヤーは、各々、前記分類要求を発行することを特徴とする請求項９に記載のファイアウォールフレームワーク。
【請求項１１】
前記第１のファイアウォールエンジンは、オペレーティングシステムカーネルモードで実行されることを特徴とする請求項１に記載のファイアウォールフレームワーク。
【請求項１２】
前記第１のファイアウォールエンジンは、オペレーティングシステムユーザモードで実行されることを特徴とする請求項１に記載のファイアウォールフレームワーク。
【請求項１３】
オペレーティングシステム内で第１のレイヤープロセスとファイアウォールプロセスの間で通信を行う方法において、
プロトコルパケット、少なくとも１つのレイヤーパラメータ、および第２のレイヤープロセスからのパケットコンテキストを含む複数のパラメータを有するクラスファイ呼出しを前記第１のレイヤープロセスによって発行するステップと、
前記クラスファイ呼出を前記ファイアウォールプロセスによって受信するステップと、
前記少なくとも１つのレイヤーパラメータと一致するフィルタから識別されたアクションを前記ファイアウォールプロセスによって発行するステップと
を含むことを特徴とする方法。
【請求項１４】
前記第１のレイヤープロセスは、新しいプロセスであり、
前記第１のレイヤープロセスによってアドレイヤー呼出しを発行するステップ
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１のレイヤープロセスは、既存のプロセスであり、
前記第１のレイヤープロセスによってデリートレイヤー呼出しを発行するステップ
をさらに含むことを特徴とする請求項１３に記載の方法。
【請求項１６】
オペレーティングシステム内でファイアウォールプロセスとコールアウトプロセスの間で通信を行う方法において、
プロトコルパケット、少なくとも１つのレイヤーパラメータ、パケットコンテキスト、および整合フィルタの識別を含む複数のパラメータを有するクラスファイ呼出しを前記第１のレイヤープロセスによって発行するステップと、
前記クラスファイ呼出しを前記コールアウトプロセスによって受信するステップと、
前記クラスファイ呼出しで前記複数のパラメータから識別されたアクションを前記コールアウトプロセスによって発行するステップと
を含むことを特徴とする方法。
【請求項１７】
前記コールアウトプロセスは、許容可能なリソース位置のキャッシュを維持する保護者による制御モジュールであり、
前記パケットを検査することによりリソース位置を識別し、前記リソース位置を前記許容可能な位置と比較するステップ
をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記コールアウトプロセスによって発行された前記アクションは、阻止であり、前記プロトコルパケットは、ネットワークを横断できないことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記コールアウトプロセスによって発行された前記アクションは、許可であり、前記プロトコルパケットは、前記ネットワークをさらに横断できることを特徴とする請求項１７に記載の方法。
【請求項２０】
前記コールアウトプロセスは、ロギングモジュールであり、前記プロトコルパケットをメモリに格納するステップをさらに含むことを特徴とする請求項１６に記載の方法。
【請求項２１】
前記コールアウトプロセスは、セキュリティモジュールであり、
前記セキュリティモジュールによって、前記プロトコルパケットがセキュリティプロトコルに適合することが求められると決定するステップと、
前記プロトコルパケットが前記セキュリティプロトコルに適合することを確認するステップと
をさらに含むことを特徴とする請求項１６に記載の方法。
【請求項２２】
前記セキュリティプロトコルは、ＩＰＳｅｃセキュリティプロトコルであることを特徴とする請求項２１に記載の方法。
【請求項２３】
パケットのマルチレイヤーフィルタリングを提供するコンピュータシステム内に実装されるファイアウォールフレームワークを簡易化するコンピュータ可読命令を実行するコンピュータ可読媒体において、
各レイヤープロセッサが前記レイヤープロセッサに関連するパケットのレイヤーパラメータを処理することができ、さらに前記レイヤーパラメータを含む分類要求を発行することができる１組のレイヤープロセッサと、
前記１組のレイヤープロセッサのうちの１つである要求レイヤープロセッサから第１のレイヤーパラメータを受信し、アクションを前記要求レイヤーに戻すレイヤーインターフェースと、
１組のインストール済みフィルタと、
前記１組のインストール済みフィルタから少なくとも１つの整合フィルタを識別し、前記整合フィルタから前記レイヤーインターフェースによって戻される前記アクションを識別するルックアップ構成要素と
を含む第１のファイアウォールエンジンと
を含むことを特徴とするコンピュータ可読媒体。
【請求項２４】
前記要求レイヤーは、前のレイヤープロセッサから第２のレイヤーパラメータを含むパケットコンテキストを受信し、前記分類要求は、前記パケットコンテキストを含み、前記ルックアップ構成要素は、さらに前記パケットコンテキストを使用して前記少なくとも１つの整合フィルタを識別することを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
前記ファイアウォールエンジンは、
前記第１のレイヤーパラメータ、前記パケットコンテキスト、および前記パケットを、前記パケットを分析し前記アクションを前記ファイアウォールエンジンに戻すコールアウトに送信するコールアウトインターフェース
をさらに含むことを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２６】
前記要求レイヤーは、前記パケットコンテキストを次のレイヤーに渡すことを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２７】
新しいフィルタを確立するポリシープロバイダと、
前記新しいフィルタを前記１組のインストール済みフィルタに追加する第２のファイアウォールエンジンと
をさらに含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２８】
オペレーティングシステム内で第１のレイヤープロセスとファイアウォールプロセスの間で通信を行うコンピュータ可読命令を実行するコンピュータ可読媒体において、
プロトコルパケット、少なくとも１つのレイヤーパラメータ、および第２のレイヤープロセスからのパケットコンテキストを含む複数のパラメータを有するクラスファイ呼出しを前記第１のレイヤープロセスによって発行するステップと、
前記クラスファイ呼出しを前記ファイアウォールプロセスによって受信するステップと、
前記少なくとも１つのレイヤーパラメータと一致するフィルタから識別されたアクションを前記ファイアウォールプロセスによって発行するステップと
を含むことを特徴とするコンピュータ可読媒体。
【請求項２９】
前記第１のレイヤープロセスは、新しいプロセスであり、
前記第１のレイヤープロセスによってアドレイヤー呼出しを発行するステップ
をさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記第１のレイヤープロセスは、既存のプロセスであり、
前記第１のレイヤープロセスによってデリートレイヤー呼出しを発行するステップ
をさらに含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３１】
オペレーティングシステム内でファイアウォールプロセスとコールアウトプロセスの間で通信を行うコンピュータ可読命令を実行するコンピュータ可読媒体において、  
プロトコルパケット、少なくとも１つのレイヤーパラメータ、パケットコンテキスト、および整合フィルタの識別を含む複数のパラメータを有するクラスファイ呼出しを前記第１のレイヤープロセスによって発行するステップと、
前記クラスファイ呼出しを前記コールアウトプロセスによって受信するステップと、
前記クラスファイ呼出しで前記複数のパラメータから識別されたアクションを前記コールアウトプロセスによって発行するステップと
を含むことを特徴とするコンピュータ可読媒体。
【請求項３２】
前記コールアウトプロセスは、ロギングモジュールであり、前記プロトコルパケットをメモリに格納するステップをさらに含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３３】
前記コールアウトプロセスは、セキュリティモジュールであり、
前記セキュリティモジュールによって、前記プロトコルパケットはセキュリティプロトコルに適合することが求められると決定するステップと、
前記プロトコルパケットは、前記セキュリティプロトコルに適合することを確認するステップと
をさらに含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３４】
複数のレイヤーのうちの１つである要求レイヤーがパケットのポリシーを取得することができる機能インタフェースにおいて、
要求レイヤーによって受信されたパケットと、
前記要求レイヤーによって処理されたデータを含む、前記パケットに関連する１組のパラメータと、
前記要求レイヤーによって前記複数のレイヤーのうちの別のレイヤーから受信されたパケットコンテキストと、
前記パケットに適用される第１のポリシーを識別する前記要求レイヤーに戻されるアクションと
を含むクラスファイメソッド
を含むことを特徴とする機能インターフェース。
【請求項３５】
新しいレイヤーを前記複数のレイヤーに追加することができるアドレイヤーメソッド
をさらに含むことを特徴とする請求項３４に記載の機能インターフェース。
【請求項３６】
既存のレイヤーを前記複数のレイヤーから削除するデリートレイヤーメソッド
をさらに含むことを特徴とする請求項３４に記載の機能インターフェース。
【請求項３７】
前記パケットに適用する第２のポリシーを定義するポリシーコンテキスト
をさらに含むことを特徴とする請求項３４に記載の機能インターフェース。
【請求項３８】
前記第１のポリシーは、ファイアウォールポリシーであり、前記第２のポリシーは、非ファイアウォールポリシーであることを特徴とする請求項３７に記載の機能インターフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータシステムおよびネットワークセキュリティに関する。より詳細には、本発明は１つまたは複数のネットワーク装置に実装されたファイアウォールアーキテクチャに関する。
【背景技術】
【０００２】
ネットワークプロトコルは、データのオープンな交換を介してネットワーク装置間の通信を容易にするように設計されている。データのオープンな交換によって、ネットワーク装置を使用したタスクの達成が大幅に強化されるが、一方で問題ももたらされる。というのは、ネットワークプロトコルは、ネットワークセキュリティ用には設計されておらず、一般にネットワークセキュリティを提供しないからである。ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、イントラネット、インターネットなど公衆ネットワークおよびプライベートネットワークに結合されているコンピュータは、ネットワークに直接的、または間接的に結合されている他のネットワーク装置から悪意のある攻撃を受けやすい。こうした悪意のある攻撃には、データの盗用、サービス拒否（ＤＯＳ）攻撃、コンピュータウィルスの蔓延などがある。子供による望ましくない、または不適切なＷｅｂサイトへのアクセスを制御するなど、コンピュータをネットワークに結合するときに他の関連の問題が生じる。
【０００３】
ファイアウォールは、ポリシーの実装によりネットワーク上のデータ交換を制御する能力を追加すると同時に、一般に悪意のある攻撃から個々のユーザ、ネットワーク装置、およびネットワークを保護するために使用するツールである。ファイアウォールは、ネットワークパケットを検査し、その検査に基づいて、パケットを許可すべきか、逆にパケットがネットワークをさらに横断することを阻止すべきかを判断することによってポリシーを実装する。
【０００４】
ファイアウォールを介して実装されるポリシーは、１つまたは複数のフィルタによって定義される。各フィルタは、フィルタパラメータおよび関連するアクションを含む。フィルタパラメータは、ファイアウォールポリシーの対象となるネットワークパケットを識別するために使用され、メディアアクセス制御（ＭＡＣ）アドレスなどのハードウェアアドレス、インターネットプロトコル（ＩＰ）アドレスなどのネットワークアドレス、伝送制御プロトコル（ＴＣＰ）などのプロトコルタイプ、ポート番号などの情報を含む。アクションは、フィルタパラメータと一致するパラメータをともなったパケットをどのように扱うべきかを定義する。具体例として、フィルタは、「http://www.foo.com」などのＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）アドレスをそのパラメータとして含む。フィルタはさらに、阻止のアクション、すなわちパケットのドロップをそのＵＲＬアドレスと関連付ける。ファイアウォールは、パケットを検査し、その検査によってＵＲＬアドレス「http://www.foo.com」をパケットに埋め込まれているものと識別したときは、必ずパケットをドロップし、それによってそのパケットがネットワークを横断するのを防ぐ。
【０００５】
ネットワーク装置は、階層化されたネットワークアーキテクチャから成るネットワークスタックを介してパケットを送受信することによってデータを交換する。様々なネットワークアーキテクチャモデルが存在するが、大部分は少なくともアプリケーションレイヤー、トランスポートレイヤー、ネットワークレイヤー、およびリンクレイヤーを含んでいる。ネットワークパケットは、各レイヤーを順次に横断し、各レイヤーの横断中にパケットが処理される。アウトバウンドパケットの場合、アプリケーションレイヤーは、いくつか例を挙げるとハイパーテキスト転送プロトコル（ＨＴＴＰ）、ファイル転送プロトコル（ＦＴＰ）、および簡易メール転送プロトコル（ＳＭＴＰ）などのアプリケーションプロトコルに従ってデータを処理する。ネットワークレイヤーやトランスポートレイヤーなどの他のレイヤーは、ＴＣＰおよびＩＰヘッダーに埋め込むことによってデータをパケット化する。レイヤーは、インバウンドパケットでは、例えばヘッダーを解析する、あるいはデータをパケット解除する（ｕｎｐａｃｋｅｔｉｚｅ）ことによって逆の処理を行う。いくつかのレイヤーによって実行される階層化された「スタック」アーキテクチャおよび処理機能によって、パケットがネットワークプロトコルスタックを横断する間にパケットパラメータを含むパケットの内容が変更される動的パケット構造が得られる。
【０００６】
ファイアウォールは、階層化されたネットワークスタック内にある検査ポイントでパケットを検査する。一方では、検査ポイントはアプリケーションレイヤーにある。例えば、ファイアウォールは、ＬＳＰ（Ｌａｙｅｒｅｄ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）として配置される。アプリケーションレイヤーのパケットは、別のネットワーク装置に送信され、または別のネットワーク装置から受信される基礎データを含む。アプリケーションレイヤーでパケットを検査することによって、ファイアウォールは、ＵＲＬアドレスなどのアプリケーションレイヤーパラメータを識別し、アプリケーションレイヤーパラメータをフィルタパラメータと比較することができる。しかし、ＩＰアドレス、ポート番号、ＭＡＣアドレスなど他のパケットパラメータは使用できない。というのは、これらは、アウトバウンドパケットに追加されていないか、またはインバウンドパケットから離して解析されているからである。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
もう一方では、ファイアウォール検査ポイントは、リンクレイヤーとネットワークレイヤーの間に介在する中間ドライバとして、下位レベルのネットワークスタックに実装される。下位レベルのネットワークスタックのパケットは、インターフェース番号、ＭＡＣアドレス、ＩＰアドレス、プロトコルタイプ、ポート、ペイロードデータなど、最大数のパラメータを含む。パケットはこうしたパラメータを含んでいるが、パラメータは容易に識別可能にはならない。ファイアウォールは、パケットを受信した後、フィルタパラメータと比較するために、関連するパケットパラメータを解析し、解釈する必要がある。したがって、ネットワークスタックのレイヤーおよびファイアウォールは、パケットの解析機能および解釈機能を重複して行っている。
【課題を解決するための手段】
【０００８】
本発明は、ネットワークスタック内のすべてのレイヤーでネットワークパケットにファイアウォールフィルタを適用できるようにするファイアウォールアーキテクチャを対象とする。アーキテクチャは、ネットワークパケットからのレイヤーパラメータを処理することができる１組のレイヤープロセッサを含む。レイヤーパラメータは、レイヤープロセッサに関連付けられたパラメータであり、レイヤープロセッサがネットワークパケットから解析するパラメータ、ネットワークパケットに追加するパラメータ、そうでない場合はネットワークパケットから導出するパラメータを含む。レイヤープロセッサはさらに、レイヤーパラメータを含む分類要求を発行することができる。
【０００９】
また、アーキテクチャは、レイヤーインターフェース、インストール済みの１組のフィルタ、およびルックアップ構成要素を含む第１のファイアウォールエンジンを含む。レイヤーインターフェースは、分類要求の一部として送信されるレイヤーパラメータを受信する。第１のファイアウォールエンジンルックアップ構成要素は、レイヤーパラメータを使用して、インストールされている１組のフィルタから１つまたは複数の整合フィルタを識別する。整合フィルタのそれぞれは、パケットがネットワークをさらに横断することを許可するか、パケットを阻止するかをレイヤープロセッサに指示するアクションを含む。第１のファイアウォールエンジンは、レイヤーインターフェースを介して少なくとも１つのアクションをレイヤープロセッサに戻す。
【００１０】
本発明の一実施形態では、レイヤープロセッサはパケットコンテキストを維持する。レイヤープロセッサは、前のレイヤープロセッサからパケットコンテキストを受信し、第１のファイアウォールエンジンにパケットコンテキストを送信する。第１のファイアウォールエンジン内のルックアップ構成要素は、パケットコンテキストをレイヤーパラメータとともに使用して、１つまたは複数の整合フィルタを識別する。また、レイヤープロセッサは、レイヤーパラメータを追加することによってパケットコンテキストを変更し、次いで変更されたパケットコンテキストを次のレイヤープロセッサに送信する。
【００１１】
本発明の別の実施形態では、１つまたは複数のコールアウト（ｃａｌｌｏｕｔ）がファイアウォールアーキテクチャの一部として含まれる。１つまたは複数のコールアウトモジュールのそれぞれは、パケットロギング機能、インターネットプロトコルセキュリティ（ＩＰＳｅｃ）検証、および保護者による制限の実行など、（許可および阻止を超える）追加機能を提供する。コールアウトモジュールは、整合フィルタのうちの１つにおいてアクションとして識別されると、パケットに対して実行される。
【００１２】
本発明の別の実施形態では、第２のファイアウォールエンジンが提供される。第２のファイアウォールエンジンは、管理ＡＰＩを介して、インストールされている１組のフィルタに新しいフィルタを追加する。第２のファイアウォールエンジンは、第２のファイアウォールエンジン内に第１のファイアウォールエンジンのサービスを複製する、フィルタモジュールと呼ばれる第１のファイアウォールエンジンも含む。
【００１３】
本発明の他の機能および利点は、添付の図面を参照して進める以下の実施形態の例の詳細な説明から明らかになる。
【００１４】
添付の特許請求の範囲には本発明の特徴を詳しく記載しているが、添付の図面と併せ読めば、本発明、およびその目的および利点を以下の詳細な説明から最もよく理解できよう。
【発明を実施するための最良の形態】
【００１５】
本明細書ではレイヤーと呼ぶ多レイヤープロセスでのフィルタリングを可能にするファイアウォールアーキテクチャを開示する。アーキテクチャは、オペレーティングシステムにおいて実行されるユーザモードプロセスおよびカーネルモードプロセスを含む。あるいは、ファイアウォールアーキテクチャは、オペレーティングシステムの外部で１つまたは複数のプログラムモジュールで、または単一のオペレーティングシステムモード内で実行される。
【００１６】
カーネルモードプロセスは、プロトコルスタックを含む複数のレイヤー、カーネルファイアウォールエンジン、および１つまたは複数のコールアウトを含む。プロトコルスタックは、アプリケーションレイヤー、トランスポートレイヤー、ネットワークレイヤー、およびリンクレイヤーを含む。必要に応じて、レイヤーをさらにアーキテクチャに追加したり、アーキテクチャから削除する。レイヤーはそれぞれ、前のレイヤーまたはプロセスからネットワークパケットおよび対応するパケットコンテキストを受信することができる要求レイヤー（ｒｅｑｕｅｓｔｉｎｇ  ｌａｙｅｒ）を形成する。次いで要求レイヤーは、レイヤーＡＰＩを介してカーネルファイアウォールエンジンに分類要求を発行する。分類要求は、要求レイヤーによって受信されるパケット、パケットコンテキスト、および要求レイヤーに関連する１組のレイヤーパラメータを含む。カーネルファイアウォールエンジンは、要求を処理し、アクションを戻す。一例として、アクションは、パケットをどのように扱うか（許可、阻止など）を要求レイヤーに指示する。アクションが許可である場合、要求レイヤーは、レイヤープロトコルに従ってパケットを処理し、レイヤーパラメータを含むようにパケットコンテキストを変更し、パケットおよびパケットコンテキストを次のレイヤーに渡す。アクションが阻止の場合、要求レイヤーは、パケットをドロップし、パケットを次のレイヤーに渡さない。要求レイヤーは、阻止アクションの結果、ＴＣＰパケットがドロップされるＴＣＰ接続を切断するなど追加の機能を行うことができる。
【００１７】
カーネルファイアウォールエンジンは、レイヤーＡＰＩ、インストールされている１組のフィルタ、およびコールアウトＡＰＩを含む。インストールされている１組のフィルタのそれぞれは、１組のフィルタ条件および関連するアクションを含む。カーネルファイアウォールエンジンは、１つまたは複数の整合フィルタを識別することによって要求レイヤーから送信された分類要求を処理する。整合フィルタは、レイヤーパラメータおよびパケットコンテキストと一致するフィルタ条件を有する。整合フィルタが識別されると、これらは、フィルタの優先度の順序で適用される。適用されるフィルタのアクションが許可または阻止である場合、アクションは要求レイヤーに戻される。アクションがコールアウトである場合、要求レイヤーによって発行される分類要求は、整合フィルタの識別とともに、コールアウトモジュールのうちの１つに渡される。コールアウトモジュールは、そのプログラムされた機能を実行し、アクションをカーネルファイアウォールエンジンに戻す。
【００１８】
カーネルファイアウォールエンジンは、少なくとも１つの終了アクション（ｔｅｒｍｉｎａｔｉｎｇ  ａｃｔｉｏｎ）が指定されるまで、整合フィルタをパケットに優先度の順序で適用する。終了アクションが指定されると、そのアクションが要求レイヤーに戻され、整合フィルタはそれ以上適用されない。あるパケットについて整合フィルタが識別されない場合、整合フィルタが見つからなかったことが要求レイヤーに通知され、次いで要求レイヤーは、どのようにパケットを扱うかを決定する。一般に、整合フィルタが識別されない場合、要求レイヤーは、許可アクションが戻されたかのようにパケットを扱う。
【００１９】
典型的なユーザモードプロセスは、ユーザモードファイアウォールエンジンおよび１つまたは複数のポリシープロバイダを含む。ポリシープロバイダは、揮発性または不揮発性メモリ、またはグラフィカルユーザインターフェースなどのツールを介してユーザが入力したものなど適した任意のソースからポリシーを取得する。ポリシーは、１組のフィルタ条件、および関連するアクションを含む、新しいフィルタを提供するための情報のソースである。
【００２０】
また、ユーザモードは、ユーザファイアウォールエンジン内にカーネルファイアウォールエンジンのインスタンスを含み、それによってユーザモードレイヤーを作成することができる。次いでユーザモードレイヤーは、カーネルファイアウォールエンジンのユーザモードインスタンスを使用してフィルタをインストールし、ユーザモード内でのフィルタリングの適用を可能にする１組のパラメータに一致するフィルタを識別する。
【００２１】
本発明の一実施形態では、ファイアウォールエンジンから１組のコールアウトモジュールへのコールアウトインターフェースによって、ファイアウォール機能を事実上無限に拡張することができる。一例として、ＨＴＴＰコンテキストコールアウトは、許容できるＵＲＬアドレスおよび許容できないＵＲＬアドレスを識別することによって保護者による制限機能を提供する。ＩＰＳｅｃコールアウトは、ＩＰＳｅｃを使用することになっているパケットが適切にＩＰＳｅｃ処理の対象となっていることを確認する。ロギングコールアウトは、設定された基準を満たすパケットを記録し、それによってパケットのその後の検査が容易になる。侵入検知コールアウトは、既知のアルゴリズムに基づいて不審なパケットを識別する。
【００２２】
図面を参照すると、図中同様の参照番号は同様の要素を指しており、本発明を、適したコンピューティング環境で実施されるものとして説明している。必須ではないが、本発明は、パーソナルコンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明されるであろう。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートのメモリ記憶装置に置くことができる。
【００２３】
図１は、本発明を実施するのに適したコンピューティングシステム環境１００の例を示している。コンピューティングシステム環境１００は、適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に関する限定を示唆するものではない。また、コンピューティング環境１００を、動作環境１００の例に示した構成要素のいずれか１つ、またはその組合せに関連する依存性または必要条件を有しているものと解釈すべきではない。
【００２４】
本発明は、他の多くの汎用または専用コンピューティングシステム環境または構成で動作可能である。本発明を使用するのに適したよく知られたコンピューティングシステム、環境、および／または構成の例には、それだけには限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境などが含まれる。
【００２５】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。また、本発明は、タスクが通信ネットワークによってリンクされているリモート処理装置によって実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールを、メモリ記憶装置を含むローカルおよびリモートのコンピュータ記憶媒体に置くことができる。
【００２６】
図１を参照すると、本発明を実施するシステムの例は、汎用コンピューティング装置をコンピュータ１１０の形で含んでいる。コンピュータ１１０の構成要素は、それだけには限定されないが、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１を含み得る。システムバス１２１は、様々なバスアーキテクチャの中の任意のものを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のうちどんな種類のものでもよい。こうしたアーキテクチャには、それだけには限定されないが一例として、業界標準アーキテクチャ（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（ＭＣＡ）バス、拡張ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子装置規格化協会（ＶＥＳＡ）ローカルバス、およびメザニンバスとしても知られている周辺部品相互接続（ＰＣＩ）バスなどがある。
【００２７】
コンピュータ１１０は、一般に様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる使用可能な任意の媒体とすることができ、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ可読媒体は、それだけには限定されないが一例として、コンピュータ記憶媒体および通信媒体を含み得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体がある。コンピュータ記憶媒体には、それだけには限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または所望の情報の格納に使用でき、コンピュータ１１０からアクセスできる他の任意の媒体などがある。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送機構などの変調されたデータ信号に組み込む。これには任意の情報配送媒体がある。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定または変更された１つまたは複数のその特徴を有する信号を意味する。通信媒体には、それだけには限定されないが一例として、有線ネットワーク、直接配線された接続などの有線媒体、および音響、ＲＦ、赤外線、その他の無線媒体などの無線媒体がある。また、上記のどんな組合せでもコンピュータ可読媒体の範囲内に含まれるものとする。
【００２８】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。基本入出力システム１３３（ＢＩＯＳ）は、例えば起動中など、コンピュータ１１０内の要素間での情報の転送を助ける基本ルーチンを含み、一般にＲＯＭ１３１に格納されている。ＲＡＭ１３２は一般に、処理ユニット１２０から直接アクセス可能な、かつ／または処理ユニット１２０が現在処理しているデータおよび／またはプログラムモジュールを含む。図１は、それだけには限定されないが一例として、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示している。
【００２９】
コンピュータ１１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。一例にすぎないが、図１は、非リムーバブル不揮発性磁気媒体から読み取り、あるいはそこに書き込むハードディスクドライブ１４１、リムーバブル不揮発性磁気ディスク１５２から読み取り、あるいはそこに書き込む磁気ディスクドライブ１５１、およびＣＤ−ＲＯＭや他の光媒体など、リムーバブル不揮発性光ディスク１５６から読み取り、あるいはそこに書き込む光ディスクドライブ１５５を示している。動作環境の例で使用できる他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、それだけには限定されないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭなどがある。ハードディスクドライブ１４１は一般に、インターフェース１４０などの非リムーバブルメモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は一般に、インターフェース１５０などのリムーバブルメモリインターフェースによってシステムバス１２１に接続される。
【００３０】
上述し、図１に示したドライブおよびその関連のコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ１１０の他のデータの記憶を提供する。図１では例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じであっても、異なっていてもよいことに注意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は少なくとも異なるコピーであることを示すために、ここではそれらに異なる番号を付している。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティング装置１６１などの入力装置を介してコマンドおよび情報をコンピュータ１１０に入力することができる。他の入力装置（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシステムバスに結合されているユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（ＵＳＢ）など他のインターフェースおよびバス構造で接続してもよい。モニタ１９１または他の種類の表示装置もまた、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース１９５などを介して接続できるスピーカー１９７、プリンタ１９６などの他の周辺出力装置を含むこともできる。
【００３１】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で操作することができる。リモートコンピュータ１８０は、別のパーソナルコンピュータ、サーバ、ルーター、ネットワークＰＣ、ピア装置、または他の一般のネットワークノードでよく、一般にパーソナルコンピュータ１１０に関連して上述した多くまたはすべての要素を含むが、図１にはメモリ記憶装置１８１のみを示している。図１に示した論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１および広域エリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含んでいてもよい。こうしたネットワーキング環境は、オフィス、全社規模のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的である。
【００３２】
ＬＡＮネットワーキング環境で使用する場合、パーソナルコンピュータ１１０は、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用する場合、コンピュータ１１０は一般に、モデム１７２、またはインターネットなどＷＡＮ１７３を介して通信を確立する他の手段を含む。モデム１７２は、内蔵のものでも外付けのものでもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク式環境では、パーソナルコンピュータ１１０に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。図１は、それだけには限定されないが一例として、リモートアプリケーションプログラム１８５をメモリ装置１８１上に存在するものとして示している。図示したネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。
【００３３】
以下の説明では、特に指定のない限り、１つまたは複数のコンピュータによって実行される動作および操作の象徴を参照して本発明を説明する。したがって、コンピュータで実行されると言うこともあるこうした動作および操作は、コンピュータの処理単位による構造化された形式のデータを表す電気信号の操作を含むことは理解されよう。この操作は、データを変換し、またはコンピュータのメモリシステムのいくつかの場所にデータを維持し、これによって当分野の技術者にはよく理解されているようにコンピュータが再構成され、そうでない場合はその動作が変更される。データが維持されるデータ構造は、データの形式で定義された特定の特性を有するメモリの物理位置である。しかし、本発明を上記の文脈で説明しているが、以下に記載する様々な動作および操作をハードウェアでも実施できることを当分野の技術者であれば理解できるので、これに限定されるものではない。
【００３４】
次に図２を参照して、本発明のファイアウォールアーキテクチャを使用するネットワーク環境について説明する。本発明のファイアウォールアーキテクチャは任意のネットワーク構成に結合される任意のネットワーク装置に実装されるので、このネットワークは例示的なものである。ネットワーク環境は、プライベートネットワーク２００およびパブリックネットワーク２０２を含む。プライベートネットワーク２００およびパブリックネットワーク２０２は、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、イントラネット、インターネット、またはその任意の組合せなど適切な任意の種類のものである。
【００３５】
ネットワーク環境は、複数のネットワーク装置２０４、２０６、２０８、２１０、および２１２を含む。ネットワーク装置２０４、２０６は、プライベートネットワーク２００に結合される。ネットワーク装置２１０、２１２は、パブリックネットワーク２０２に結合される。ネットワーク装置２０８は、プライベートネットワーク２００およびパブリックネットワーク２０２に結合され、その間のインターフェースを提供する。ネットワーク装置は、Ｅｔｈｅｒｎｅｔ（登録商標）、１３９４、８０２．１１（ｂ）など適切な任意の技術を使用してパブリックネットワークおよびプライベートネットワークに結合される。ネットワーク装置は、パーソナルコンピュータ、サーバ、ハンドヘルド装置、プリンタ、スイッチ、ルーター、ブリッジ、中継器など、適切な任意のコンピューティング装置としてさらに実装される。
【００３６】
ネットワーク装置２０８は、ファイアウォール２１４および１つまたは複数のフィルタ２１６を含む。ファイアウォール２１４は、本発明のアーキテクチャに従って実装され、プライベートネットワーク２００に結合されているネットワーク装置２０４、２０６、２０８と、パブリックネットワーク２０２に結合されているネットワーク装置２１０、２１２との間で交換されるネットワークパケットを検査する１つまたは１組のプログラムモジュールである。本発明の一実施形態では、ファイアウォール２１４は、プライベートネットワーク２００内でネットワーク装置が送信元および受信先であるローカル向けのネットワークパケットの検査も行う。
【００３７】
ファイアウォール２１４は、ネットワーク装置２０８に実装されてプライベートネットワーク２００とパブリックネットワーク２０２の間で交換されるネットワークトラフィックを保護し、制御する。これをエッジファイアウォール（ｅｄｇｅ  ｆｉｒｅｗａｌｌ）と呼ぶ。あるいは、ファイアウォール２１４は、ネットワーク装置２１０に示すように単一のネットワーク装置に実装され、それを保護する。これをホストファイアウォールと呼ぶ。また、ファイアウォールを、同期的に中央管理される１組のホストおよび／またはエッジファイアウォールとして実装することもできる。これを分散ファイアウォールと呼ぶ。ファイアウォール２１４を実装しているネットワーク装置の配置は、ファイアウォール２１４が保護することになっているネットワーク装置に向けられるすべてのネットワークトラフィックがファイアウォール２１４によって検査されるように選択されることが好ましい。
【００３８】
フィルタ２１６は、ファイアウォール２１４の一部として実装される。あるいはフィルタ２１６は、ファイアウォール２１４からアクセス可能な個別のデータ構造の一部として実装される。ファイアウォール２１４およびフィルタ２１６は、パブリックネットワークに結合されているネットワーク装置２１０、２１２から発せられる悪意のある攻撃からネットワーク装置２０４、２０６、２０８を保護するように設計されているファイアウォールポリシーを実行する。ファイアウォール２１４は、保護者による制限、侵入検知、ネットワークパケットのロギング、および他の追加フィルタベースの機能を簡易化するなど、追加の機能も提供する。
【００３９】
各フィルタ２１６は、１組のフィルタ条件および１つまたは関連するアクションを含む。フィルタ条件は、インターフェース番号、ハードウェアアドレス、ネットワークアドレス、プロトコルタイプ、ポート番号、ペイロードデータなど、ネットワークパケットから解析できる、そうでなければそこから取得できるパラメータおよび情報を含む。１つまたは複数の関連するアクションは、ファイアウォールを実装しているネットワーク装置がフィルタ条件に一致するパケットをどのように扱うべきかを定義する。一般のアクションは、許可、すなわちパケットが引き続きネットワークを横断できること、および阻止、すなわちパケットをドロップすることによってそれ以上のネットワークの横断を防止することなどがある。
【００４０】
ファイアウォール２１４は、ネットワークを横断するネットワークパケットがネットワーク装置２０８で受信されると、そのパケットを検査し、パケットパラメータをフィルタ条件と比較することによって、１つまたは複数の整合フィルタを識別する。整合フィルタは、フィルタ条件がパケットパラメータと一致したときに得られる。パケットパラメータは、フィルタ条件同様、パケットから解析され、そうでない場合はそこから取得される情報を含む。ファイアウォールが整合フィルタを識別したとき、フィルタ条件に関連する１つまたは複数のアクションが実行される。
【００４１】
図３は、本発明のファイアウォールアーキテクチャの一実施形態の概要を示す。アーキテクチャは、ネットワークスタックのすべてのレイヤーでパケットをフィルタにかける機能を提供する。ファイアウォールは、フィルタを追加、削除でき、フィルタ競合を識別し、解決する中央管理機能を提供する。ファイアウォールアーキテクチャは、フィルタレイヤーが必要に応じて追加、削除されるという点で拡張可能であり、許可および阻止のアクションを超える特化された機能を含むまで拡張される。本発明は、ファイアウォールおよびファイアウォールフィルタとの特定の関連で説明するが、他のフィルタおよびポリシーを簡易化し、管理するためにも使用される。具体例として、本発明は、サービス品質（ＱＯＳ）、インターネットプロトコルセキュリティ（ＩＰＳｅｃ）スイートなどとともに使用するフィルタ、他の暗号化プロトコル、認証プロトコル、鍵管理プロトコルを簡易化し、管理するのに適している。
【００４２】
ファイアウォールアーキテクチャは、ユーザモードプロセス２５０およびカーネルモードプロセス２５２を含む。ユーザモードプロセス２５０およびカーネルモードプロセス２５２は、ネットワーク装置においてオペレーティングシステムの一部として実行される。オペレーティングシステムのユーザモードプロセス２５０およびカーネルモードプロセス２５２が、簡単化のために図示はされていないが、追加の構成要素を含んでいることを当分野の技術者であれば理解できるであろう。あるいは、ファイアウォールアーキテクチャの全部または一部は、オペレーティングシステムの外部で、１つまたは複数のプログラムモジュールまたはアプリケーションプログラムとして、または単一のオペレーティングシステムプロセス内で実行される。
【００４３】
カーネルモードプロセス２５２は、ネットワークスタック２５４、本明細書ではカーネルファイアウォールエンジン２５６と呼ばれる第１のファイアウォールエンジン、および任意選択のコールアウト２５８を含む。まとめると、カーネルモードプロセス２５２は、ネットワークパケットについて照合フィルタを識別し、既知のプロトコルに従ってパケットを処理し、照合フィルタによって指示されているようにパケットに対する他のアクションを実行することによって、設定されたファイアウォールポリシーを実装する。
【００４４】
ネットワークスタック２５４は、データストリームレイヤー２６８、トランスポートレイヤー２７０、ネットワークレイヤー２７２、およびリンクレイヤー２７４を含む、本明細書ではレイヤーと呼ぶ複数のレイヤープロセスを備えている。本発明のファイアウォールアーキテクチャは拡張可能であり、必要に応じて追加のレイヤーが動的に追加、削除される。追加されるレイヤーの例には、サーバマスターブロック（ＳＭＢ）プロトコルに従って実装されるファイルアクセスレイヤー２７６がある。レイヤーは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）パーサモジュール２７８など他のプログラムモジュールと連携して動作することができる。
【００４５】
ネットワークスタック２５４内のレイヤーは、インバウンドおよびアウトバウンドのネットワークパケットを処理する。アウトバウンドネットワークパケットは、ファイアウォールアーキテクチャをネットワーク上に実装しているネットワーク装置から送信されるパケットである。インバウンドパケットは、ファイアウォールアーキテクチャを実装しているネットワーク装置で受信されるパケットである。図３に示したそれぞれの矢印で示すように、インバウンドパケットは、ネットワークスタック２５４を下から上に横断し、アウトバウンドパケットは、ネットワークスタック２５４を上から下に横断する。
【００４６】
ネットワークパケットは、ネットワークレイヤーを連続的に横断し、ネットワークレイヤーによって連続的に処理される。既知の技術によれば、ネットワークスタック２５４の各レイヤーは、前のレイヤーまたはプロセスからパケットを受信し、仕様またはプロトコルに従ってパケットを処理し、処理されたパケットを次のレイヤーまたはプロセスに送信することができる。本発明によれば、ネットワークスタック２５４の各レイヤーは、パケットコンテキストを維持し、パケットコンテキストを次のレイヤーに渡し、分類要求をカーネルファイアウォールエンジン２５６に発行し、ファイアウォールポリシーに従ってパケットに対するアクションを起こすこともできる。
【００４７】
パケットコンテキストは、パケットに付随してレイヤーからレイヤーに進むデータ構造である。各レイヤーは、例えばレイヤーがインバウンドパケットから解析する情報、アウトバウンドパケットに追加する情報、そうでない場合はパケットの内容から導出するように設計されている情報など、レイヤーが処理するように設計されている１組のパラメータをコンテキストデータ構造に追加することによってコンテキストを維持する。パケットコンテキストに使用するデータ構造の例は、図５を参照して説明する。
【００４８】
ネットワークスタック２５４のレイヤーによって実行される操作の１つは、分類要求を発行することによってカーネルファイアウォールエンジンを呼び出すことである。分類要求とは、ネットワークスタック２５４の１つのレイヤーによる呼出であり、パケットに一致する任意のフィルタの識別と、例えば許可や阻止などをレイヤーに戻すといった関連する任意のアクションとを要求するものである。分類要求を発行するレイヤーを、本明細書では要求レイヤーと呼ぶ。また、各レイヤーは、カーネルファイアウォールエンジン２５６によって戻されるパケットに対するアクションを起こす。
【００４９】
カーネルファイアウォールエンジン２５６は、レイヤーＡＰＩ２８０、インストールされている１組のフィルタ２８２、およびコールアウトＡＰＩ２８４を含む。カーネルファイアウォールエンジン２５６は、（１）ファイアウォールポリシーを定義するインストールされている１組のフィルタ２８２を維持すること、（２）ネットワークスタック２５４内のレイヤーから分類要求を受信すること、（３）分類要求に基づいて１つまたは複数の整合フィルタを識別すること、（４）整合フィルタに基づいてパケットに対して起こすべき任意のアクションを要求レイヤーに伝えることを含む様々な機能を実行する。
【００５０】
インストールされている１組のフィルタのそれぞれは、１組のフィルタ条件および１つまたは複数の関連するアクションを含む。図２を参照して説明したように、フィルタ条件は、関連するフィルタアクションの対象となるネットワークパケットを識別する。インストールされている１組のフィルタ２８２で指定されているアクションには、許可および阻止がある。追加の機能は、任意選択のコールアウト２５８によって追加される。フィルタの形式の例については、図４を参照して説明する。
【００５１】
レイヤーＡＰＩ２８０は、ネットワークスタック２５４のレイヤーとカーネルファイアウォールエンジン２５６の間にインターフェースを提供する。レイヤーＡＰＩ２８０を介して、要求レイヤーは、分類要求をカーネルファイアウォールエンジン２５６に発行する。分類要求は、要求レイヤーによって受信されたパケット、要求レイヤーによって受信されたパケットコンテキスト、およびレイヤーパラメータを含む。レイヤーパラメータは、例えば要求レイヤーによって追加または解析することによって処理されるパケットパラメータである。具体例として、ソースおよび宛先のインターネットプロトコル（ＩＰ）アドレスは、ＩＰプロトコルを実装するときにネットワークレイヤー２７２によって送信されるレイヤーパラメータである。またレイヤーパラメータは、パケットに追加されるパケットパラメータまたはパケットから解析されるパケットパラメータを超える情報を含むことができる。具体例として、レイヤーパラメータは、ローカルアドレスタイプを含む。ローカルアドレスタイプは、ＩＰレイヤーによって決定され、分類要求の一部として送信される。ローカルアドレスタイプには、ユニキャスト、ブロードキャスト、マルチキャスト、エニーキャストなどがある。レイヤーＡＰＩ２８０の具体的な一実装形態については、図６を参照して説明する。
【００５２】
任意選択で、コ―ルアウト２５８を使用して、許可および阻止のフィルタアクションを超える追加の機能を実施する。コールアウトは、カーネルファイアウォールエンジン２５６が、関連するアクションとしてコールアウトモジュールのうちの１つへのコールアウトを含むパケットの整合フィルタを識別するときに実行される。カーネルファイアウォールエンジンは、要求レイヤーによって発行された分類要求、すなわち全パケット、レイヤーパラメータ、およびパケットコンテキストを整合フィルタの識別とともに、コールアウトＡＰＩ２８４を介してコールアウトモジュールに送信する。本発明の一実施形態では、ファイアウォールアーキテクチャは、基本的な１組のコールアウト２５８を含む。追加のコールアウトは、レイヤーのように、必要に応じて拡張可能なファイアウォールアーキテクチャに追加される。コールアウトＡＰＩ２８４の具体的な一実装形態については、図６を参照して説明する。
【００５３】
ユーザモードプロセス２５０は、ユーザファイアウォールエンジン２６０と呼ばれる第２のファイアウォールエンジン、および「ＰＰ１」、「ＰＰ２」、「ＰＰ３」として識別される１つまたは複数のポリシープロバイダ２６２を含む。ポリシープロバイダ２６２は、ファイアウォールポリシー、すなわちインストールされているフィルタ２８２をファイアウォールアーキテクチャに追加するプロセスである。このタスクの達成には、任意のプロセスが使用される。一例にはレガシーＩＰＳｅｃポリシーサービス（ｌｅｇａｃｙ  ＩＰＳｅｃ  ｐｏｌｉｃｙ  ｓｅｒｖｉｃｅ：ＬＩＰＳ）がある。レガシーＩＰＳｅｃポリシーサービスは、カプセル化セキュリティプロトコル（Ｅｎｃａｐｓｕｌａｔｉｎｇ  Ｓｅｃｕｒｉｔｙ  Ｐｒｏｔｏｃｏｌ：ＥＳＰ）、認証ヘッダープロトコル（Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  Ｈｅａｄｅｒ  Ｐｒｏｔｏｃｏｌ：ＡＨ）などのＩＰＳｅｃプロトコルを使用することになっているネットワークトラフィックを定義するフィルタを追加する。具体例として、レガシーＩＰＳｅｃポリシーは、要求していないすべてのインバウンドパケットをＥＳＰプロトコルに従って暗号化する必要があることを知らせるファイアウォールポリシーを追加する。ポリシーはさらに、平文の要求していない任意のインバウンドパケット、すなわち暗号化されていないパケットを阻止すべきであることを規定する。ポリシープロバイダ２６２は、揮発性または不揮発性メモリ内のデータ、あるいは管理者またはシステムユーザがポリシーを直接入力することができるグラフィカルユーザインターフェース（ＧＵＩ）など、適した任意のソースからポリシーを取得する。ユーザファイアウォールエンジン２６０は、ポリシーを新しいフィルタに変換する。すなわち、フィルタ条件および関連するアクションに関してポリシーを定義し、インストールされている１組のフィルタ２８２に新しいフィルタを追加する。
【００５４】
また、ユーザファイアウォールエンジン２６０は、フィルタ調停機能および競合解決機能を実行する。ポリシープロバイダ２６２がユーザモードファイアウォールエンジン２６０に新しいポリシーを提供するとき、ユーザファイアウォールエンジンは、新しいポリシーに起因する新しいフィルタが、インストールされているフィルタ２８２の中のいずれかと競合するかどうかを判断する。
【００５５】
アーキテクチャはさらに、ユーザモードファイアウォールエンジン２６０とカーネルファイアウォールエンジン２５６の間のインターフェースを形成するフィルタエンジンＡＰＩ２６６を含む。フィルタエンジンＡＰＩ２６６は、ユーザファイアウォールエンジン２６０が、インストールされている１組のフィルタ２８２に新しいフィルタを追加し、またはそこからフィルタを削除し、フィルタ競合を検出でき、解決できるようにインストールされているフィルタ２８２を検査するための機構を提供する。また、ポリシープロバイダ２６２からアクセス可能な管理ＡＰＩ２９０は、アーキテクチャにフィルタを追加し、そこからフィルタを削除する機構を提供する。
【００５６】
ユーザモードファイアウォールエンジン２６０は、フィルタモジュール２９４も含む。フィルタモジュール２９４は、ユーザモード２５０でのカーネルファイアウォールエンジン２５６のインスタンスである。ユーザモードファイアウォールエンジン２６０内のフィルタモジュール２９４のインスタンスによって、ユーザファイアウォールエンジン２６０は、本明細書ではユーザモードレイヤー２８２と呼ばれる１つまたは複数のユーザモードレイヤープロセスに対してカーネルファイアウォールエンジン２５６のサービスを複製することができる。ユーザモードレイヤー２８２は、カーネルモードレイヤーが作成されたのと同じように追加される。フィルタモジュール２９４は、カーネルファイアウォールエンジン２５６のユーザモードのインスタンスであるため、本明細書で記載したカーネルモードエンジン２５６の任意の機能は、フィルタモジュール２９４にも適用されることを理解されよう。
【００５７】
キーイングモジュールＡＰＩ２８８は、ユーザポリシーエンジン２６０とキーイングモジュール２９６の間のインターフェースを提供する。キーイングモジュールＡＰＩ２８８は、ＳＡを確立する必要があることをキーイングモジュールに知らせるために使用する。
【００５８】
ファイアウォールアーキテクチャは、起動時間ポリシー２８６およびフェールセーフポリシー２６４を含む。起動時間ポリシー２８６およびフェールセーフポリシー２６４は、ネットワーク装置が初期化されているとき、例えばオンになった、リセットされた、再起動されたときなどシステムが移行状態の間に、インストールされている基本的な１組のフィルタ２８２を提供するために実装される。移行状態の間、ユーザモード２５０は確立されておらず、ポリシープロバイダ２６２およびユーザファイアウォールエンジン２６０を介してフィルタをインストールすることができない待ち時間がある。その結果、ネットワーク装置は、例えば要求していないインバウンドパケットなど、悪意のある攻撃を受けやすい。起動時間ポリシー２８６は、カーネルモード２５２内にあり、ユーザモード２５０が確立される時間より前にカーネルファイアウォールエンジン２５６にロードされる。起動時間ポリシー２８６は、移行状態の間システムを保護するのに適した任意のフィルタ条件および関連するアクションを提供するように設定可能な、インストールされている基本的なフィルタ２８２を提供する。起動時間ポリシー２８６の一例には、インバウンドおよびアウトバウンドのすべてのネットワークパケットを阻止するものがある。
【００５９】
ユーザモード２５０が確立すると、移行状態は、ポリシープロバイダ２６２がポリシーを識別し、インストールされているフィルタ２８２をカーネルファイアウォールエンジン２５６に追加しようとしている間続く。ユーザモード２５０が確立すると、ユーザファイアウォールエンジン２６０は、まず、ポリシープロバイダ２６２が任意のポリシーを受諾する前にフェールセーフポリシー２６４をカーネルファイアウォールエンジン２５６にロードする。次いで起動時間ポリシー２８６が無効になる。起動時間ポリシー２８６と同様、フェールセーフポリシー２６４は、ポリシープロバイダおよびユーザファイアウォールエンジンが依然としてフィルタのインストールの最中である移行状態の間、システムを攻撃から保護するように設計されている基本的なフィルタである。ポリシープロバイダ２６２がそれぞれのフィルタをネットワーク装置に正常にインストールすると、フェールセーフポリシー２６４は無効になる。
【００６０】
次に図４を参照して、インストールされている１組のフィルタ２８２について説明する。インストールされている１組のフィルタ２８２の各フィルタ３１０は、フィルタＩＤ３１２、重み３１４、１つまたは複数のアクション３１６、ポリシーコンテキスト３２８、および１組のフィルタ条件３１８を含む複数のフィールドを有する。フィルタＩＤ３１２は、一意の識別をフィルタに提供する。フィルタＩＤ３１２は、例えばカーネルファイアウォールエンジン２５６が整合フィルタ情報をユーザファイアウォールエンジン２６０およびコールアウト２５８に戻すための手段として使用される。本発明の一実施形態では、フィルタは、ネットワークスタック２５４内のレイヤーのうちの１つに割り当てられる。フィルタＩＤ３１２は、カーネルファイアウォールエンジン２５６によってどのフィルタがどのレイヤーに割り当てられるかを追跡するために使用する。
【００６１】
重みフィールド３１４は、フィルタ３１０の優先度を識別する値を含む。重みフィールド３１４内の値が高くなれば、それだけフィルタの優先度が高くなる。フィルタの優先度は、整合フィルタがカーネルファイアウォールエンジン２５６によってパケットに適用される順序を決定する。
【００６２】
本発明の一実施形態では、優先度の最も高い、すなわち重み値の最も高いフィルタが最初に適用され、次いで次に優先度の高いフィルタが適用され、以下同様に、終了アクションを備える整合フィルタに出会うまで続けられる。終了アクションについては、以下で詳しく説明する。終了アクションを備える整合フィルタが適用されると、カーネルファイアウォールエンジン２５６は、整合フィルタの適用を停止する。したがって、終了アクションが適用された後は、優先度のより低い整合フィルタで指定されたアクション３１６はパケット上で行われない。あるいは、ファイアウォールエンジン２５６は、単一の整合フィルタを識別し、単一の整合フィルタから１組のアクションを戻す。
【００６３】
１組のフィルタ条件３１８は、パケットがフィルタ３１０と一致するかどうかを決定する。各フィルタ条件３１８は、型３２０、データ３２２、およびレイヤーＩＤ：フィールドＩＤ３２４を含む。型３２０は、対応するデータ３２２に含まれる変数の長さおよび数を定義する。アーキテクチャは、Ｂｙｔｅ、Ｓｈｏｒｔ、Ｌｏｎｇ、８Ｂｙｔｅｓ、Ｓｔｒｉｎｇ、Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ４（ＩＰｖ４）Ａｄｄｒｅｓｓ、Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ  ｖｅｒｓｉｏｎ  ６（ＩＰｖ６）Ａｄｄｒｅｓｓ、ＩＰｖ４  Ａｄｄｒｅｓｓ  ｐｌｕｓ  Ｍａｓｋ、ＩＰｖ６  Ａｄｄｒｅｓｓ  ｐｌｕｓ  Ｍａｓｋ、Ａｄｄｒｅｓｓ  Ｒａｎｇｅなど事前に定義されている既知の変数型を提供する。
【００６４】
データフィールド３２２は、型に一致するデータを含む。例えば、型がＩＰｖ４  Ａｄｄｒｅｓｓの場合、データフィールド３２２の許容値は、ドット付き１０進数表記で表される００．００．００．００から２５５．２５５．２５５．２５５までの範囲内の３２ビットの数字である。場合によっては、型３２０によってデータフィールド３２２に複数の値が提供される。Ａｄｄｒｅｓｓ  Ｒａｎｇｅ、ＩＰｖ４  Ａｄｄｒｅｓｓ  ｐｌｕｓ  Ｍａｓｋ、およびＩＰｖ６  Ａｄｄｒｅｓｓ  ｐｌｕｓ  ｍａｓｋの型によって、ＩＰアドレスの最初と最後の範囲を定義する２つのＩＰアドレス値が可能になる。柔軟性を最大にするために、アーキテクチャは、ユーザ定義された型も許可する。あるいは、追加の型を手動でシステムアーキテクチャに追加する。
【００６５】
レイヤーＩＤ：フィールドＩＤ３２４は、発信レイヤー（ｏｒｉｇｉｎａｔｉｎｇ  ｌａｙｅｒ）、および発信レイヤーからのパラメータをそれぞれ識別するために使用する。発信レイヤーおよび発信レイヤーからのパラメータは、パケットパラメータ、すなわち整合フィルタを識別するときにデータ３２２が比較されるレイヤーパラメータおよびパケットコンテキストを定義する。発信レイヤーは、ネットワークスタック内のレイヤーを識別する。発信レイヤーからのパラメータは、発信レイヤーに関連する特定のパラメータを識別する。具体例をフィルタ条件３２６によって示す。型はＩＰｖ４であり、それによってデータ３２２が３２ビットのＩＰアドレスであることを示す。レイヤーＩＤは「ＩＰ」であり、３２ビットの数字がＩＰ、すなわちネットワークレイヤーパラメータであることを表す。フィールドＩＤは、「Ｓｉｃ  ＩＰ  Ａｄｄｒ」であり、この例ではソースＩＰアドレスを示す。データフィールド３２２に提供されるＩＰアドレスは、「１２３．３．２．１」であり、そのソースＩＰアドレスを備える任意のパケットは、フィルタ条件を満たし、それによってフィルタに一致することを示す。フィルタ３１０は、複数のフィルタ条件３１８を含むことができ、この場合、すべてのフィルタ条件が満たされる場合のみ、パケットはフィルタ３１０に一致する。
【００６６】
フィルタ３１０のアクション３１６は、許可、阻止、またはコールアウトである。フィルタ３１０のアクション３１６が許可または阻止であり、パケットがフィルタ３１０に一致する場合、許可または阻止のアクションは、カーネルファイアウォールエンジン２５６によって要求レイヤーに戻される。アクション３１６がコールアウトの場合、カーネルファイアウォールエンジン２５６は、全パケット、レイヤーパラメータ、コンテキストおよび整合フィルタの識別を含むそれ自体の分類要求を指定されたコールアウトモジュール２５８に発行する。コールアウトモジュール２５８は、侵入検知など、パケットに対してプログラムされたその機能を実行する。コールアウトは、アクション（許可または阻止）をカーネルファイアウォールエンジンに戻し、カーネルファイアウォールエンジンは、要求レイヤーにアクションを中継して送る。コールアウトは、カーネルファイアウォールエンジン２５６を介して同じように要求レイヤーに戻されるパケットコンテキストの維持を行うこともできる。アクションは、ファイアウォールポリシーが存在しないことを示すヌル値などの値でもよい。
【００６７】
アクションには、終了または非終了が指定される。アクションが終了である場合、パケットに対してアクションが識別されると、そのアクションは、要求レイヤーに戻され、フィルタはそれ以上パケットに適用されない。アクションが非終了である場合、パケットに対する終了アクションが識別されるまで、さらにフィルタ検索が続行する。デフォルトとして、許可および阻止に終了アクションが指定されている。
【００６８】
ポリシーコンテキスト３２８は、セキュリティポリシーやＱＯＳポリシーなど、ファイアウォールポリシー以外のポリシーを格納するために使用する。ポリシーコンテキストは、適したデータ構造であればどんなものでもよい。例えばポリシーコンテキストは、ポリシーコンテキストを追加したプロセスによって解釈される６４ビットの数字である。ポリシーコンテキストおよび／またはアクションは、ヌル値とすることができる。
【００６９】
図５は、ネットワークスタック２５４のレイヤーおよびコールアウトモジュール２５８によって維持され、それらに渡されるパケットコンテキストに使用するデータ構造３３０の例を示す。パケットコンテキスト３３０は、レイヤーを横断する間インバウンドまたはアウトバウンドのネットワークパケットに付随し、３３６〜３４０とラベル付けされた１つまたは複数のエントリを含む。各エントリは、レイヤーＩＤ：フィールドＩＤ３３２および対応する値３３４を含む。
【００７０】
レイヤーＩＤ：フィールドＩＤ３３２は、フィルタ３１０（図４）のフィルタ条件３１８の一部として提供されているレイヤーＩＤ：フィールドＩＤ３２４と同じ意味を有する。つまり、レイヤーＩＤ：フィールドＩＤ３３２は、値フィールド３３４内のデータについての発信レイヤー、および発信レイヤーからのレイヤーパラメータを識別する。値フィールド３３４は、特定のレイヤーパラメータを含む。
【００７１】
具体例として、エントリ３３６は、レイヤーＩＤ：フィールドＩＤ３３２「ＮＤＩＳ：Ｓｒｃ．ＭＡＣ  Ａｄｄｒ」を含む。「ＮＤＩＳ」は、リンクレイヤー２７４（図３）のネットワークドライバインターフェース仕様の実装を表す。「Ｓｒｃ．ＭＡＣ  Ａｄｄｒ」は、ソースＭＡＣアドレスを表す。したがって、レイヤー：フィールドＩＤ３３２は、値フィールド３３４のデ―タがＮＤＩＳ（リンク）レイヤーによって処理されたソースＭＡＣアドレスであることを示す。値フィールド３３４は、実際のソースＭＡＣアドレスを含み、これは、例では１６進法で表される「００．０８．７４．４Ｆ．２２．Ｅ５」である。
【００７２】
第２の例として、エントリ３３８は、「ＮＤＩＳ：ＩＦ  Ｎｏ」のレイヤーＩＤ：フィールドＩＤ３３２を有する。この場合もまた、レイヤーをＮＤＩＳとして識別するが、この場合、インターフェース番号を特定のＮＤＩＳパラメータとして表す「ＩＦ  Ｎｏ」としてパラメータを識別する。値フィールド３３４は、実際のインターフェース番号を含む。この場合は２である。
【００７３】
第３の例として、エントリ３４０は、「ＩＰ：Ｄｓｔ  ＩＰ  Ａｄｄｒ」のレイヤーＩＤ：フィールドＩＤ３３２を有する。「ＩＰ」は、ＩＰプロトコルを使用するネットワークレイヤーを表し、「Ｄｓｔ  ＩＰ  Ａｄｄｒ」は、宛先ＩＰアドレスをＩＰレイヤーパラメータとして表す。値フィールド３３４は、実際の宛先ＩＰアドレス「１２３．３．２．１」を含む。
【００７４】
本発明の基礎となるファイアウォールアーキテクチャについて説明してきたが、本明細書に記載した基礎となるファイアウォールアーキテクチャを使用して実行されるシステムの機能インターフェースおよび方法の例に注目する。機能インターフェースが複数のアプリケーションプログラミングインターフェース（ＡＰＩ）として実装される。ＡＰＩは、図６および図７に示すように、レイヤーＡＰＩ２８０、コールアウトＡＰＩ２８４、フィルタエンジンＡＰＩ２６６、およびキーイングモジュールＡＰＩ２８８を含む。
【００７５】
レイヤーＡＰＩ２８０は、ネットワークスタック２５４の各レイヤーとカーネルファイアウォールエンジン２５６の間のデータ交換を容易にする。図に示すように、レイヤーＡＰＩ２８０は、Ｃｌａｓｓｉｆｙメソッド４０２、Ａｄｄ  Ｌａｙｅｒメソッド４０４、およびＤｅｌｅｔｅ  Ｌａｙｅｒメソッド４０６を含む。レイヤーＡＰＩ２８０は、フィルタモジュール２９４内で、ユーザモードレイヤーとフィルタモジュール２９４の間の通信を容易にするために実行することもできる。
【００７６】
Ｃｌａｓｓｉｆｙメソッド４０２は、要求レイヤーによって使用されて、レイヤーパラメータ、要求レイヤーが受信したパケット、およびパケットコンテキストをカーネルファイアウォールエンジン２５６に送信する。カーネルファイアウォールエンジン２５６は、（１）要求レイヤーからのレイヤーパラメータ、および（２）パケットコンテキストエントリを、要求レイヤーに割り当てられる各フィルタ３１０内のフィルタ条件３１８と比較して、整合フィルタを識別する。以下は、Ｃｌａｓｓｉｆｙメソッドの実装の例である。以下のメソッドはデータ値を受信する、または戻すものとして説明していることは理解されよう。既知のプログラミング技術によれば、こうしたメソッドは、実際のデータ値の代わりに、データ値へのポインタを使用することができる。
【００７７】
【表１】
2004362581.tif 000003
【００７８】
示したパラメータの特徴を以下に述べる。
【００７９】
ＬａｙｅｒＩｄは、分類要求を発行するネットワークレイヤー、すなわち要求レイヤーを識別する。図３を参照すると、レイヤーＩＤは、デ―タストリームレイヤー２６８、トランスポートレイヤー２７０、ネットワークレイヤー２７２、またはリンクレイヤー２７４としてレイヤーを識別する。他のレイヤーをシステムに追加した場合、それも有効である。例えばＳＭＢレイヤー２７６を追加すると、ＳＭＢレイヤーはそれ自体の一意の識別を有する。本発明のファイアウォールアーキテクチャによって、ネットワークスタック２５４の１つのレイヤーにおける複数のプロトコルの実装がさらに可能になる。例えば、スタックが２つのトランスポートレイヤー２７０を有している場合、第１のトランスポートレイヤーは、ＴＣＰプロトコルを使用し、第２のトランスポートレイヤーはＵＤＰプロトコルを使用する。ユーザモードレイヤー２８２を追加して、それによって有効なレイヤーを形成することもできる。
【００８０】
ｐＩｎＦｉｘｅｄＶａｌｕｅｓは、要求レイヤーによって処理されるレイヤーパラメータの一部を含む。ｐＩｎＦｉｘｅｄＶａｌｕｅｓは、パケットコンテキストエントリとともにフィルタ条件と比較されて、パケットがフィルタと一致するかどうかが判断される。レイヤーごとにｐＩｎＦｉｘｅｄＶａｌｕｅｓに含まれているデフォルトのレイヤーパラメータの例を次の表Ａに示す。このアーキテクチャの利点はそのレイヤーからアクセス可能な任意の値をレイヤーが使用できることなので、以下の値は例にすぎない。
【００８１】
【表２】
2004362581.tif 000004
【００８２】
ｐＩｎＣｏｎｔｅｘｔは、要求レイヤーで受信されたコンテキストデータ構造３３０（図５）を含む。カーネルファイアウォールエンジン２５６は、パケットコンテキストをレイヤーパラメータとともに使用して、一致するパケットを識別する。
【００８３】
ｐＰａｃｋｅｔは、要求レイヤーによって受信された全パケットを含む。カーネルファイアウォールエンジン２５６は、整合フィルタを識別するのにｐＰａｃｋｅｔを使用しない。上述したように、カーネルファイアウォールエンジン２５６は、ｐＩｎＦｉｘｅｄＶａｌｕｅｓおよびｐＩｎＣｏｎｔｅｘｔを使用して整合フィルタを識別する。ｐＰａｃｋｅｔは、Ｃｌａｓｓｉｆｙメソッドに含まれ、これにより、カーネルファイアウォールエンジン２５６は、整合フィルタでアクション３１６として識別された１つまたは複数のコールアウトモジュール２５８にそれを送信できる。ｐＡｃｔｉｏｎＴｙｐｅは、要求レイヤーに戻されるアクション３１６を含む。戻されるアクション３１６は、整合フィルタで識別される許可または阻止であるか、整合フィルタによって実行されるコールアウトモジュールである。
【００８４】
ｐＯｕｔＣｏｎｔｅｘｔは、ポリシーコンテキストデータを含む。上述したように、ポリシーコンテキストは、ＩＰＳｅｃ、ＱＯＳ、および他の非ファイアウォールフィルタベースのポリシーに関連するネットワークポリシーを簡易化するために使用する。
【００８５】
Ａｄｄ  Ｌａｙｅｒ４０４メソッドおよびＤｅｌｅｔｅ  Ｌａｙｅｒ４０６メソッドは、それぞれファイアウォールアーキテクチャへのレイヤーの追加、ファイアウォールアーキテクチャからのレイヤーの削除のために使用する。以下は、Ａｄｄ  Ｌａｙｅｒ４０４メソッドの形式の例である。
【００８６】
【表３】
2004362581.tif 000005
【００８７】
示したパラメータの特徴を以下に述べる。
【００８８】
ｐＬａｙｅｒｌｄは、追加されるレイヤー、すなわちＡｄｄ  Ｌａｙｅｒメソッドを実行するレイヤーに戻される一意のレイヤー識別値である。
【００８９】
以下は、Ｄｅｌｅｔｅ  Ｌａｙｅｒ４０６メソッドの形式の例である。
【００９０】
【表４】
2004362581.tif 000006
【００９１】
示したパラメータの特徴を以下に述べる。
【００９２】
Ｌａｙｅｒｌｄは、削除されるレイヤー、すなわちＤｅｌｅｔｅ  Ｌａｙｅｒメソッドを実行するレイヤーを識別する。
【００９３】
コールアウトＡＰＩ２８４は、カーネルファイアウォールエンジン２５６とコールアウト２５８の間のデータ交換を容易にする。コールアウトＡＰＩ２８４は、Ｃｌａｓｓｉｆｙメソッド４１０、Ｎｏｔｉｆｙメソッド４１２、Ｒｅｇｉｓｔｅｒ  Ｃａｌｌｏｕｔメソッド４１４、およびＤｅｒｅｇｉｓｔｅｒ  Ｃａｌｌｏｕｔメソッド４１６を含む。コールアウトＡＰＩ２８４のＣｌａｓｓｉｆｙメソッド４１０は、整合フィルタデータも含んでいることを除いてレイヤーＡＰＩ２８０のＣｌａｓｓｉｆｙメソッド４０２と似ている。以下は、コールアウトの実行に使用するＣｌａｓｓｉｆｙメソッド４１０の形式の例である。
【００９４】
【表５】
2004362581.tif 000007
【００９５】
示したパラメータの特徴を以下に述べる。
【００９６】
ｆｉｘｅｄＶａｌｕｅｓは、要求レイヤーから送信されたレイヤーパラメータを含む。ｆｉｘｅｄＶａｌｕｅｓは、レイヤーＡＰＩ２８０のＣｌａｓｓｉｆｙメソッド４０２の一部として送信されるｐＩｎＦｉｘｅｄＶａｌｕｅｓデータ中の要求レイヤーによって提供されるデータと同じものである。
【００９７】
ｗｆｐＣｏｎｔｅｘｔは、コンテキストデータ構造３３０（図５）を含む。このデータは、レイヤーＡＰＩ２８０のＣｌａｓｓｉｆｙメソッド４０２の一部として送信されるｐＩｎＣｏｎｔｅｘｔ中の要求レイヤーによって送信されるデータと同じものである。
【００９８】
ｐａｃｋｅｔは、要求レイヤーによって受信された全パケットを含む。このデータは、レイヤーＡＰＩ２８０のＣｌａｓｓｉｆｙメソッド４０２の一部として送信されるｐＰａｃｋｅｔ中の要求レイヤーによって送信されるデータと同じものである。
【００９９】
ｍａｔｃｈｅｄＦｉｌｔｅｒは、コールアウトを要求するフィルタを識別する。一般に、整合フィルタは、コールアウトＡＰＩ２８４のＣｌａｓｓｉｆｙメソッド４１０を開始する整合フィルタ３１０のフィルタＩＤ３１２によって識別される。
【０１００】
ｐＡｃｔｉｏｎＴｙｐｅは、コールアウト２５８からカーネルファイアウォールエンジン２５６に戻されるアクションを含む。ｐＡｃｔｉｏｎＴｙｐｅは、許可または阻止の場合、レイヤーＡＰＩ２８０によって戻されるｐＡｃｔｉｏｎＴｙｐｅとして要求レイヤーに戻される。また、コールアウトは、パケットに整合フィルタを引き続き適用することをカーネルファイアウォールエンジン２５６に指示する続行アクションを戻すことができる。
【０１０１】
ｐＯｕｔＣｏｎｔｅｘｔは、セキュリティまたはＱＯＳポリシーデータなどのポリシーコンテキストデータを含む。
【０１０２】
Ｎｏｔｉｆｙメソッド４１２は、そのアクション３１６の１つとしてコールアウトモジュール２５８を識別するインストールされている１組のフィルタ２８２にフィルタ３１０が追加されたとき、またはそこからフィルタ３１０が削除されたときにコールアウトに知らせるために使用する。ｎｏｔｉｆｙは、カーネルファイアウォールエンジン２５６によって実行されたときにコールアウト２５８が使用するバッファの割り当ておよび割り当て解除など必要な任意のアクションを起こす機会をコールアウトに提供する。以下は、Ｎｏｔｉｆｙメソッドの形式の例である。
【０１０３】
【表６】
2004362581.tif 000008
【０１０４】
示したパラメータの特徴を以下に述べる。
【０１０５】
ｎｏｔｉｆｙは、フィルタが追加されるか、削除されるかを示す数値を含む。例えば、値１はフィルタが追加されることを示し、値２はフィルタが削除されることを示す。
【０１０６】
ｆｉｌｔｅｒは、一意の値によって追加または削除されるフィルタを示す。これは、フィルタ３１０の一部として含まれているフィルタＩＤ３１２を提供することによって達成できる。
【０１０７】
ｃａｌｌｏｕｔ  Ｒｅｇｉｓｔｒａｔｉｏｎメソッド４１４およびｃａｌｌｏｕｔ  Ｄｅｒｅｇｉｓｔｒａｔｉｏｎメソッド４１６は、それぞれコールアウトモジュールを追加、および削除するために使用する。Ｒｅｇｉｓｔｒａｔｉｏｎメソッド４１４の形式の例は以下の通りである。
【０１０８】
【表７】
2004362581.tif 000009
【０１０９】
示したパラメータの特徴を以下に述べる。
【０１１０】
ｃａｌｌｏｕｔ  Ｉｄは、登録するコールアウトモジュールの一意の識別を提供する。
【０１１１】
ｃａｌｌｏｕｔは、ドライバサービス名、装置名、およびコールアウトのＣｌａｓｓｉｆｙ関数およびＮｏｔｉｆｙ関数へのポインタなど任意のコールアウト固有の情報を提供する。
【０１１２】
ｓｄは、コールアウトのセキュリティ記述子を提供する。セキュリティ記述子は、どのプロセスがコールアウトを変更し、削除できるかを指定するアクセスコントロールリスト（ＡＣＬ）を提供する。
【０１１３】
ｃａｌｌｏｕｔ  ｄｅｒｅｇｉｓｔｒａｔｉｏｎメソッド４１６の形式の例は、以下の通りである。
【０１１４】
【表８】
2004362581.tif 000010
【０１１５】
示したパラメータの特徴を以下に述べる。
【０１１６】
ｃａｌｌｏｕｔ  Ｉｄは、削除すべきコールアウトの一意のＩＤである。
【０１１７】
フィルタエンジンＡＰＩ２６６は、ユーザモードファイアウォールエンジン２６０とカーネルモードファイアウォール２５６エンジンの間のデータ交換を容易にする。図に示すように、管理ＡＰＩ２６６は、Ａｄｄ  Ｆｉｌｔｅｒメソッド４１８、Ｄｅｌｅｔｅ  Ｆｉｌｔｅｒメソッド４２０、Ｅｎｕｍ  Ｌａｙｅｒメソッド４２２を含む。また、フィルタエンジンＡＰＩ２６６のメソッドは、管理ＡＰＩ２９０の一部としても提供される。
【０１１８】
Ａｄｄ  Ｆｉｌｔｅｒメソッド４１８およびＤｅｌｅｔｅ  Ｆｉｌｔｅｒメソッド４２０は、それぞれインストールされている１組のフィルタ２８２への新しいフィルタの追加、インストールされている１組のフィルタ２８２からの既存のフィルタの削除のために使用する。以下は、Ａｄｄ  Ｆｉｌｔｅｒメソッド４１８の形式の例である。
【０１１９】
【表９】
2004362581.tif 000011
【０１２０】
示したパラメータの特徴を以下に述べる。
【０１２１】
Ｌａｙｅｒｌｄは、フィルタが割り当てられるレイヤーを識別する。
【０１２２】
ｐＦｉｌｔｅｒは、インストールされている１組のフィルタ２８２に追加されるフィルタ３１０である。
【０１２３】
以下は、Ｄｅｌｅｔｅ  Ｆｉｌｔｅｒメソッド４２０の形式の例である。
【０１２４】
【表１０】
2004362581.tif 000012
【０１２５】
示したパラメータの特徴を以下に述べる。
【０１２６】
Ｌａｙｅｒｌｄは、フィルタが割り当てられるレイヤーを識別する。
【０１２７】
ｐＦｉｌｔｅｒは、インストールされている１組のフィルタから削除されるフィルタである。
【０１２８】
Ｅｎｕｍ  Ｌａｙｅｒメソッド４２２は、ユーザファイアウォールエンジン２６０が１組の基準と一致するすべてのフィルタを識別するための機構を提供する。これによって、フィルタエンジンＡＰＩは、フィルタの調停および競合の解決のために競合するフィルタを識別することができる。以下は、Ｅｎｕｍ  Ｌａｙｅｒメソッド４２２の形式の例である。
【０１２９】
【表１１】
2004362581.tif 000013
【０１３０】
示したパラメータの特徴を以下に述べる。
【０１３１】
ｐＥｎｕｍＴｅｍｐｌａｔｅは、戻されるべきフィルタを定義するデータ構造を含む。例えばこれは、フィルタが戻されるためにフィルタ条件が一致しなければならないパラメータを含む。
【０１３２】
ｐＭａｔｃｈＣｏｕｎｔは、指定されたｐＥｎｕｍＴｅｍｐｌａｔｅに基づくフィルタの一致数を含む。
【０１３３】
ｐＥｎｕｍＨａｎｌｄｅは、一致したフィルタエントリへの参照を含む。
【０１３４】
キーイングモジュールＡＰＩ２８８は、キーイングモジュールとユーザファイアウォールエンジン２６０の間のインターフェースを提供する。キーイングモジュールＡＰＩ２８８は、ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅメソッド４３０、Ｅｘｐｉｒｅ  Ｎｏｔｉｆｙメソッド４３２、ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅ  Ｃｏｍｐｌｅｔｅメソッド４３４、Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｒｅｇｉｓｔｅｒメソッド４３６、Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｄｅｒｅｇｉｓｔｅｒメソッド４３８、ＩＰＳｅｃ  Ｉｎｂｏｕｎｄ  Ｇｅｔ  ＳＰＩメソッド４４０、Ａｄｄ  Ｉｎｂｏｕｎｄ  ＳＡメソッド４４４、Ａｄｄ  Ｏｕｔｂｏｕｎｄ  ＳＡメソッド４４６、Ｉｎｂｏｕｎｄ  ＳＡ  Ｅｘｐｉｒｅメソッド４４８、およびＫｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｉｎｉｔｉａｔｅメソッド３５０を含む。キーイングモジュールＡＰＩ２８８は、Ｃｌａｓｓｉｆｙメソッド４０２、Ａｄｄ  Ｌａｙｅｒメソッド４０４、およびＤｅｌｅｔｅ  Ｌａｙｅｒメソッド４０６など、レイヤーＡＰＩに関して上述したメソッドを含むこともできる。
【０１３５】
キーイングモジュールＡＰＩを使用すると、開始側コンピュータおよび応答側コンピュータによって使用される、例えばＩＰＳｅｃによって定義される既知のセキュリティプロトコルの使用が容易になる。ＩＰＳｅｃは、ＡＨやＥＳＰなどのプロトコルを含む。ＥＳＰプロトコルは、暗号機構を使用して整合性、ソース認証、およびデータの機密性を提供する認証および暗号化プロトコルである。ＡＨプロトコルは、パケットヘッダーにハッシュ署名を使用してパケットデータの整合性および送信者の真正さを検証する認証プロトコルである。
【０１３６】
ＩＫＥプロトコルは、開始側コンピュータおよび応答側コンピュータがＡＨプロトコルおよびＥＳＰプロトコルとともに使用するセキュリティ設定をネゴシエートするための方法を提供する。ネゴシエートされたセキュリティ設定は、セキュリティアソシエーション（ＳＡ）と呼ばれるデータ構造を形成する。ＳＡは、ＥＳＰまたはＡＨによって使用される認証アルゴリズム、暗号化アルゴリズム、鍵、および鍵の寿命などのパラメータを定義してＩＰパケットの内容を保護する。ＥＳＰおよびＡＨは、確立されたＳＡを必要とするため、ＩＫＥネゴシエーションは、開始側および応答側のコンピュータがＥＳＰまたはＡＨプロトコルを使用する前に実行される。所与のＳＡは、セキュリティパラメータインデックス（ＳＰＩ）として知られる値によって識別される。
【０１３７】
開始側コンピュータおよび応答側コンピュータのそれぞれは、ＩＰＳｅｃポリシーに基づいて、開始側コンピュータと応答側コンピュータの間で送信されるデータが暗号化または認証を必要とするかどうかを決定するＩＰＳｅｃドライバを含む。ＩＰＳｅｃポリシーは、ネットワーク装置がどのようにＩＰＳｅｃを使用するかを定義する１組のフィルタであり、フィルタリスト、認証メソッド、および他の情報を含む。本発明の一実施形態では、ＩＰＳｅｃポリシーは、カーネルファイアウォールエンジンまたはフィルタモジュール２９４にインストールされている１組のフィルタに含まれるフィルタによって定義される。パケットに適用されるポリシーは、Ｃｌａｓｓｉｆｙメソッドを使用して整合フィルタを識別するキーイングモジュールレイヤーを呼び出すことによって識別される。
【０１３８】
ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅメソッド４３０は、（クライアントプロキシを介して）ユーザファイアウォールエンジン２６０によって呼び出されて、ドライバ取得または外部開始要求をキーイングモジュールレイヤーとして実装されているユーザモードレイヤー２８２に渡す。キーイングモジュールレイヤーは、この呼出を戻し、非同期にネゴシエーションを行う。キーイングモジュールレイヤーがネゴシエーションを完了すると、キーイングモジュールレイヤーは、ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅ  Ｃｏｍｐｌｅｔｅメソッド４３４を呼び出して、ネゴシエーションが完了したことをユーザポリシーエンジン２６０に通知する。以下は、ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅメソッドの形式の例である。
【０１３９】
【表１２】
2004362581.tif 000014
【０１４０】
示したパラメータの特徴を以下に述べる。
【０１４１】
ｉｐｓｅｃＣｏｎｔｅｘｔは、ａｃｑｕｉｒｅを追加されるＳＡと連結するハンドルである。
【０１４２】
ａｃｑｕｉｒｅは、ＩＫＥなど既知のプロトコルに従ってＳＡをネゴシエートするために必要な情報を含む。
【０１４３】
ｉｎｂｏｕｎｄＳＡｓｐｉは、インバウンドＳＡに使用するＳＰＩを含む。
【０１４４】
Ｅｘｐｉｒｅ  Ｎｏｔｉｆｙメソッド４３２は、インバウンドＳＡを追加したキーイングモジュールレイヤーに期限切れ通知を渡すために呼び出される。以下は、Ｅｘｐｉｒｅ  Ｎｏｔｉｆｙメソッドの形式の例である。
【０１４５】
【表１３】
2004362581.tif 000015
【０１４６】
示したパラメータの特徴を以下に述べる。
【０１４７】
ｅｘｐｉｒｅＮｏｔｉｆｙは、期限切れのＳＡを識別する情報を含む。例えば、アウトバウンドＳＡの場合、ＳＰＩが提供される。
【０１４８】
ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅ  Ｃｏｍｐｌｅｔｅ４３４メソッドは、キーイングモジュールレイヤーによって呼び出されて、ネゴシエーションが終了し、すべてのＳＡが追加された後、またはエラーが検出された後に、ユーザファイアウォールエンジンのコンテキストを閉じる。このメソッドが実行された後、キーイングモジュールレイヤーは、他の任意のＡＰＩメソッドにｉｐｓｅｃＣｏｎｔｅｘｔを再利用しない。以下は、ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅ  Ｃｏｍｐｌｅｔｅメソッドの形式の例である。
【０１４９】
【表１４】
2004362581.tif 000016
【０１５０】
示したパラメータの特徴を以下に述べる。
【０１５１】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルを提供する。
【０１５２】
ｉｐｓｅｃＣｏｎｔｅｘｔは、ＩＰＳｅｃ  Ａｃｑｕｉｒｅメソッドによりユーザファイアウォールエンジンによって渡されたコンテキストである。
【０１５３】
ｓｔａｔｕｓは、ＳＡネゴシエーションの状態および他の詳細を提供する。ａｃｑｕｉｒｅがＦｗｐＫｅｙｉｎｇＭｏｄｕｌｅｌｎｉｔｉａｔｅ０を介して外部で開始された場合、ユーザファイアウォールエンジン２６０によってｓｔａｔｕｓが戻される。
【０１５４】
Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｒｅｇｉｓｔｅｒメソッド４３６は、キーイングモジュールレイヤーによって呼び出されてユーザファイアウォールエンジン２６０にキーイングモジュールを登録し、その関数ポインタを渡す。以下は、Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｒｅｇｉｓｔｅｒメソッドの形式の例である。
【０１５５】
【表１５】
2004362581.tif 000017
【０１５６】
示したパラメータの特徴を以下に述べる。
【０１５７】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルを提供する。
【０１５８】
ｋｅｙｉｎｇＭｏｄｕｌｅＩＤは、キーイングモジュールレイヤーの一意のＩＤである。
【０１５９】
ｋｅｙｍｏｄｌｎｆｏは、プロセスＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅ関数やプロセスＩＰＳｅｃ  ＳＡ  Ｅｘｐｉｒｅ関数へのポインタなど、キーイングモジュールレイヤーに関する登録情報を含む。
【０１６０】
Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｄｅｒｅｇｉｓｔｅｒメソッド４３８は、キーイングモジュールレイヤーによって呼び出されて、キーイングモジュールをユーザファイアウォールエンジン２６０から登録解除する。以下は、Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｄｅｒｅｇｉｓｔｅｒメソッドの形式の例である。
【０１６１】
【表１６】
2004362581.tif 000018
【０１６２】
示したパラメータの特徴を以下に述べる。
【０１６３】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルである。
【０１６４】
ｋｅｙｉｎｇＭｏｄｕｌｅＩＤは、キーイングモジュールレイヤーの一意のＩＤである。
【０１６５】
ＩＰＳｅｃ  Ｉｎｂｏｕｎｄ  Ｇｅｔ  ＳＰＩメソッド４４０は、キーイングモジュールレイヤーによって呼び出されて新しいインバウンドＳＡのＳＰＩを取得する。ＩＰＳｅｃ  Ｉｎｂｏｕｎｄ  Ｇｅｔ  ＳＰＩメソッド４４０は、通常、キーイングモジュールレイヤーが応答側ネットワーク装置で実行されるときに使用する。以下は、ＩＰＳｅｃ  Ｉｎｂｏｕｎｄ  Ｇｅｔ  ＳＰＩメソッドの形式の例である。
【０１６６】
【表１７】
2004362581.tif 000019
示したパラメータの特徴を以下に述べる。
【０１６７】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルである。
【０１６８】
ｉｐｓｅｃＴｒａｆｆｉｃＤｅｓｃｒｉｐｔｉｏｎは、初期段階の（ｌａｒｖａｌ）インバウンドＳＡを作成する５タプル記述である。５タプルは、ソースおよび宛先のＩＰアドレス、ソースおよび宛先のポート、およびトランスポートレイヤープロトコルタイプを含む。
【０１６９】
ｕｄｐＥｎｃａｐＩｎｆｏは、初期段階のＳＡを作成するＵＤＰカプセル化データである。ＵＤＰカプセル化とは、セキュリティプロトコルに従って書式化されたパケットを暗号化されていないＵＤＰパケットに埋め込む既知の方法である。
【０１７０】
ｉｎｂｏｕｎｄＳｐｉは、インバウンドＳＡのＳＰＩである。
【０１７１】
Ａｄｄ  Ｉｎｂｏｕｎｄ  ＳＡメソッド４４４は、キーイングモジュールレイヤーによって呼び出されてインバウンドＳＡを追加する。すなわち、初期段階のＳＡを更新する。ユーザファイアウォールエンジン２６０は、ＳＡにＳＰＩを使用して、この呼出をその内部状態にマップし、ＳＡに対してＩＰＳｅｃドライバまでｉｏｃｔｌを実行する。以下は、Ａｄｄ  Ｉｎｂｏｕｎｄ  ＳＡメソッドの形式の例である。
【０１７２】
【表１８】
2004362581.tif 000020
【０１７３】
示したパラメータの特徴を以下に述べる。
【０１７４】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルである。
【０１７５】
ｉｎｂｏｕｎｄＳＡは、インバウンドＳＡを含む。
【０１７６】
Ａｄｄ  Ｏｕｔｂｏｕｎｄ  ＳＡ４４６メソッドは、キーイングモジュールレイヤーによって呼び出されてアウトバウンドＳＡを追加する。ユーザファイアウォールエンジンは、インバウンドＳＰＩパラメータを使用して、この呼出をその内部状態にマップし、ＳＡに対してＩＰＳｅｃドライバまでｉｏｃｔｌを実行する。以下は、Ａｄｄ  Ｏｕｔｂｏｕｎｄ  ＳＡメソッドの形式の例である。
【０１７７】
【表１９】
2004362581.tif 000021
【０１７８】
示したパラメータの特徴を以下に述べる。
【０１７９】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルである。
【０１８０】
ｉｎｂｏｕｎｄＳｐｉは、アウトバウンドＳＡと対のインバウンドＳＡのＳＰＩである。
【０１８１】
ｏｕｔｂｏｕｎｄＳＡは、アウトバウンドＳＡを含む。
【０１８２】
Ｉｎｂｏｕｎｄ  ＳＡ  Ｅｘｐｉｒｅメソッド４４８は、キーイングモジュールレイヤーによって呼び出されて以前追加されたインバウンドＳＡを無効にする。以下は、Ｉｎｂｏｕｎｄ  ＳＡ  Ｅｘｐｉｒｅメソッド４４８の形式の例である。
【０１８３】
【表２０】
2004362581.tif 000022
【０１８４】
示したパラメータの特徴を以下に述べる。
【０１８５】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルである。
【０１８６】
ｅｘｐｉｒｅは、ＳＡを無効にするためのデータを含む。
【０１８７】
Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｉｎｉｔｉａｔｅメソッド４５０は、ＲＡＳ、Ｗｉｎｓｏｃｋ  ＡＰＩなど既知の外部アプリケーションによって呼び出されて、アプリケーションがそのネットワークトラフィックの送信を開始する前にキーイングモジュールレイヤーを開始し、ＳＡをセットアップする。ユーザファイアウォールエンジン２６０は、ＲＰＣ呼出を非同期に保留し、ＩＰＳｅｃドライバからＳＰＩを取得し、ａｃｑｕｉｒｅを適切なキーイングモジュールに渡す。キーイングモジュールレイヤーがＦｗｐＩＰＳｅｃＳＡＡｃｑｕｉｒｅＣｏｍｐｌｅｔｅ０を呼び出すと、ユーザファイアウォールエンジンは、非同期ＲＰＣをネゴシエーション状態で完了する。以下は、Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｉｎｉｔｉａｔｅメソッドの形式の例である。
【０１８８】
【表２１】
2004362581.tif 000023
【０１８９】
示したパラメータの特徴を以下に述べる。
【０１９０】
ｅｎｇｉｎｅＨａｎｄｌｅは、ユーザファイアウォールエンジン２６０へのハンドルである。
【０１９１】
ａｃｑｕｉｒｅは、ＳＡのネゴシエーションに必要なデータを含む。
【０１９２】
ｗａｉｔＥｖｅｎｔは、ネゴシエーション状態が使用可能なときにトリガされるイベントへのハンドルである。クライアント、すなわち呼出側外部アプリケーションは、ネゴシエーションの完了を待つことに関係がない場合、このパラメータをＮＵＬＬに設定することができる。非同期ＲＰＣ呼出が完了すると、内部的に、クライアントプロキシはこのイベントを任意選択でＲＰＣに渡し、イベントを設定するようＲＰＣに要求する。
【０１９３】
ｎｅｇｏｔｉａｔｉｏｎＳｔａｔｕｓは、ネゴシエーションの結果を含む。ｗａｉｔＥｖｅｎｔがＮＵＬＬである場合、ｎｅｇｏｔｉａｔｉｏｎＳｔａｔｕｓはＮＵＬＬである。そうでない場合、ｗａｉｔＥｖｅｎｔがトリガされるまでｎｅｇｏｔｉａｔｉｏｎＳｔａｔｕｓは有効なままである。
【０１９４】
図８は、本発明に従ってネットワークスタック２５４内のレイヤーが使用する方法を示している。図８で示した方法は、フィルタモジュール２９４およびユーザファイアウォールエンジン２６０とともに１つまたは複数のユーザモードレイヤー２８２によって使用することもできる。
【０１９５】
各レイヤーでは、ネットワークパケットの処理、分類要求のカーネルファイアウォールエンジン２５６への発行、およびパケットコンテキストの管理などを含む複数の機能が可能になる。本発明の一実施形態では、ネットワークスタック２５４にインストールされている各レイヤーのシム（ｓｈｉｍ）４６０、４６２、４６４、４６６で機能が実行される。あるいは、シムの必要なく、機能が直接個々のレイヤーに組み込まれる。
【０１９６】
ネットワークスタック２５４は、データストリームレイヤー２６８、トランスポートレイヤー２７０、ネットワークレイヤー２７２、およびリンクレイヤー２７４を含む。本発明を説明するために、リンクレイヤー２７４はＮＤＩＳドライバとして、ネットワークレイヤー２７２はＩＰレイヤーとして、トランスポートレイヤー２７０はＴＣＰレイヤーとして、またデータストリームレイヤー２６８はＨＴＴＰレイヤーとして実装されている。レイヤーは任意のプロトコルに従って実装できることを理解されたい。例えば、トランスポートレイヤーは、ユーザデータグラムプロトコル（ＵＤＰ）にも対応している。アプリケーションレイヤーは、ファイル転送プロトコル（ＦＴＰ）、リモートプロシージャコール（ＲＰＣ）、簡易メール転送プロトコル（ＳＭＴＰ）、サーバマスターブロック（ＳＭＢ）などに対応している。上述したように、追加のレイヤーをアーキテクチャに追加したり、レイヤーを削除したりすることができる。例えば、図６を参照して説明したように、Ａｄｄ  ＬａｙｅｒメソッドおよびＤｅｌｅｔｅ  Ｌａｙｅｒメソッドを使用してレイヤーを追加、削除する。
【０１９７】
４６８（ａ）〜（ｄ）とラベル付けしたネットワークパケットは、それがネットワークスタック２５４内のレイヤーを横断し、それらによって処理される間のネットワークパケットを示している。パケット４６８（ａ）〜（ｄ）がインバウンドパケットの場合、パケットは、ネットワークスタックを下から上に横断する。パケット４６８（ａ）〜（ｄ）がアウトバウンドパケットの場合、パケットは、ネットワークスタックを上から下に横断する。こうした処理はよく知られているが、本発明を説明する目的で簡単に説明する。
【０１９８】
Ｗｅｂブラウザなどネットワーク装置で実行されているアプリケーションが別のネットワーク装置上にあるＷｅｂページの内容の要求を開始すると仮定すると、アプリケーションは、要求をデータストリームレイヤー２６８に発行する。この例では、データストリーム２６４は、ＨＴＴＰプロトコルに従って要求をフォーマットし、その要求をパケット４６８（ａ）でトランスポートレイヤーに送信する。トランスポートレイヤー２７０は、パケット４６８（ａ）を受信する。トランスポートレイヤー２７０は、ＴＣＰプロトコルを実装しており、データを１つまたは複数のパケットに入れ、各パケットはＴＣＰヘッダーを備える。ＴＣＰヘッダーは、ソースポートおよび宛先ポート、プロトコルタイプ、すなわちＴＣＰ、シーケンス番号、フラグ、チェックサムなどの情報を含む。次いでトランスポートレイヤーは、４６８（ｂ）とラベル付けされているパケットをネットワークレイヤーに送信する。
【０１９９】
ネットワークレイヤーは、ＩＰプロトコルを実装し、ソースおよび宛先のＩＰアドレス、フラグ、チェックサム、および他の既知の情報を含むデータをＩＰヘッダー内にカプセル化する。また、ＩＰヘッダーは、パケットをフラグメント化するかどうかも示す。パケットは、ＩＰパケットのサイズがパケットの送信に使用するネットワーク技術の最大伝送単位（ＭＴＵ）サイズを超えるときにフラグメント化される。例えば、Ｅｔｈｅｒｎｅｔ（登録商標）技術は、ＭＴＵを１５００バイトと規定している。ＩＰパケット長がＭＴＵを超える場合、パケットは、それ自体のＩＰヘッダーをそれぞれ備え、すべてがＭＴＵと比較して等しいかそれより短い長さの２つ以上のＩＰパケットにフラグメント化される。
【０２００】
本発明の一実施形態では、ネットワークレイヤーは、第１のレイヤーおよび第２のレイヤーに分割される。第１のレイヤーは、フラグメントレイヤー（ｆｒａｇｍｅｎｔ  ｌａｙｅｒ）と呼ばれ、ＩＰパケットフラグメントを処理する。第２のレイヤーは、完全アセンブル済みレイヤー（ｆｕｌｌｙ  ａｓｓｅｍｂｌｅｄ  ｌａｙｅｒ）と呼ばれ、例えばアウトバウンドＩＰパケットがフラグメント化される前、インバウンドＩＰパケットが単一のＩＰパケットに再アセンブルされた後などに全ＩＰパケットを処理する。ネットワークレイヤーの処理および起こりうるフラグメンテーションに続いて、パケット４６８（ｃ）はリンクレイヤー２７４に送信される。リンクレイヤー２７４は、ソースおよび宛先のＭＡＣアドレスおよび他の情報をＭＡＣヘッダーに提供することによってさらにデータをパケット化する。次いでパケットは、パケットがネットワークに物理的に送信されるネットワークインターフェースカード（ＮＩＣ）に送信される。
【０２０１】
インバウンドパケットは、逆のやり方で処理される。パケット４６８（ｄ）は、ＮＩＣによって受信され、リンクレイヤー２７４に送信される。ＭＡＣヘッダーが取り除かれ、パケット４６８（ｃ）はネットワークレイヤーに送信され、そこで必要に応じてＩＰパケットのフラグメントが再アセンブルされ、ＩＰアドレスが解析される。次いでネットワークレイヤーは、パケット４６８（ｂ）をトランスポートレイヤーに送信し、そこでＴＣＰヘッダーが取り除かれ、データストリームが複数のＴＣＰパケットで送信された場合、データストリームが再アセンブルされる。最後に、データストリーム４６８（ａ）はデータストリームレイヤー２６８に送信され、そこでアプリケーションプロトコルによってデータが解読される。この場合、アプリケーションプロトコルはＨＴＴＰプロトコルである。
【０２０２】
ネットワークスタックのレイヤーは、アウトバウンドパケットごとに、パケットコンテキスト４７０（ａ）〜（ｃ）を維持する。ネットワークスタックのレイヤーは、インバウンドパケットごとに、パケットコンテキスト４７２（ａ）〜（ｃ）を維持する。パケットコンテキストは、各パケットがネットワークレイヤーを横断する間、それに付随する。また、パケットコンテキストは、コールアウト２５８（図３）に渡され、それらによって変更されることもある。
【０２０３】
パケットコンテキストは、パケットが各レイヤーで処理されるときに更新される。各レイヤーは、そのレイヤーパラメータをパケットコンテキストに追加し、それによってこの情報をその後のレイヤーまたはプロセスに提供する。図に示すように、リンクレイヤー２７４は、コンテキスト４７２（ａ）で示すようにソースおよび宛先のＭＡＣアドレスおよびインバウンドパケットのインターフェース番号を追加する。そのコンテキストをネットワークレイヤー２７２が受信し、コンテキスト４７２（ｂ）で示すようにソースおよび宛先のＩＰアドレスを追加する。トランスポートレイヤー２７０は、コンテキストを受信し、コンテキスト４７２（ｃ）で示すようにポート番号を追加する。
【０２０４】
同様のプロセスが、アウトバウンドパケットに関連するコンテキスト４７０（ａ）〜（ｃ）について行われる。データストリームレイヤー２６８は、コンテキスト４７０（ａ）で示すようにパケットペイロードからＵＲＬアドレスなどの情報を追加し、トランスポートレイヤー２７０は、コンテキスト４７０（ｂ）で示すようにソースおよび宛先のポート番号をさらに追加し、ネットワークレイヤーは、コンテキスト４７０（ｃ）で示すようにソースおよび宛先のＩＰアドレスを追加する。
【０２０５】
各レイヤーがそのレイヤーで使用可能な任意のコンテキスト情報を追加できることは理解されよう。一般にこれは、パケットに対する処理、すなわちパケットに追加する、パケットから解析する、そうでない場合はパケットから導出するなどの処理を行うようにレイヤーが設計されているという任意の情報を含む。
【０２０６】
パケットおよびその対応するコンテキストが各レイヤーで受信されると、レイヤーは、レイヤーパラメータを識別し、４７４とラベル付けした分類要求を送信することによって、要求レイヤーとして機能する。分類要求４７４は、レイヤーパラメータ４７６、前のレイヤーから受信されたパケットコンテキスト４７８、および全パケット４８０を含む。分類要求の発行に使用する方法の例は、レイヤーＡＰＩ２８０（図６）を参照して説明したＣｌａｓｓｉｆｙメソッド４０２である。
【０２０７】
各分類要求に応答して、カーネルファイアウォールエンジン２５６は、レイヤーパラメータ４７６およびパケットコンテキスト４７８を、要求レイヤーに割り当てられたフィルタのフィルタ条件３１８（図４）と比較する。カーネルファイアウォールエンジン２５６は、最高の重み３１４を有する整合フィルタ３１０からのアクション４８４を含む４８２とラベル付けされた応答を要求レイヤーに送信する。また、カーネルファイアウォールエンジン２５６は、ポリシーコンテキスト４７２を戻す。整合フィルタがカーネルファイアウォールエンジン２５６によって識別されない場合、カーネルファイアウォールエンジンは、整合フィルタが存在しないことを要求レイヤーに通知する。カーネルファイアウォールエンジン２５６は、整合フィルタが終了アクション、すなわち許可または阻止を指定するか、要求レイヤーに割り当てられたすべてのフィルタがチェックされるかのいずれかが先に起こるまで、引き続き整合フィルタを識別する。あるいは、カーネルファイアウォールエンジン２５６は、すべての一致を識別し、単一の応答でアクションを要求レイヤーに戻す。
【０２０８】
全体的に示したように、レイヤーパラメータの識別は、ネットワークスタック２５４のレイヤーによって実行される通常のレイヤーの処理の一部として行われる。追加のパケット解析は必要なく、それによってシステムパフォーマンスへの影響が最小限に抑えられる。さらに、レイヤーは、パケットコンテキストの維持に協力するため、ファイアウォールエンジン２５６は、フィルタ条件を、通常こうしたパケットパラメータにアクセスできないレイヤーにあるパケットパラメータと比較することができる。例えば、ネットワークレイヤー２６８は、ソースおよび宛先のＭＡＣアドレスを含むリンクレイヤー２７４からインバウンドパケットのコンテキストを受信する。ネットワークレイヤー２７２は、ソースおよび宛先のＩＰアドレスなどのネットワークレイヤーパラメータ、およびパケットコンテキストを備える分類要求を発行するので、カーネルファイアウォールエンジン２５６は、ＭＡＣアドレスが通常使用できない場合でさえ、ネットワークレイヤー２７２でＩＰアドレスおよびＭＡＣアドレスにフィルタをかけることができる。
【０２０９】
次に図９を参照して、本発明のファイアウォールアーキテクチャに含まれるコールアウトモジュール２５８の組の例について説明する。コールアウトモジュール２５８は、ＨＴＴＰコンテキストコールアウト５００、侵入検知コールアウト５０２、ＩＰＳｅｃコールアウト５０４、およびロギングコールアウト５０６を含む。コールアウトＡＰＩ２８４は、カーネルファイアウォールエンジン２５６とコールアウト２５８の間のデータ交換を形成する。
【０２１０】
ＨＴＴＰコンテキストコールアウト５００は、許容可能な、あるいは許容不可のＵＲＬアドレスのキャッシュ５０８を維持する。ＨＴＴＰコンテキストコールアウト５００は、ＵＲＬアドレスを維持し、それらを許容可能または許容不可と分類するパブリックネットワークに接続されているサーバ５１０に定期的にアクセスする。カーネルファイアウォールエンジン２５６がＨＴＴＰコンテキストコールアウトを実行すると、コールアウトは、パケットを検査し、必要に応じてＵＲＬアドレスを解読し、キャッシュ５０８内の情報に基づいて許容可能かどうかを判断する。次いでＨＴＴＰコールアウトは、ＵＲＬアドレスが許容可能な場合はアクション３１６として許可を、ＵＲＬアドレスが許容不可の場合は阻止をカーネルモードファイアウォールエンジン２５６に戻し、カーネルモードファイアウォールエンジンは、次には、レイヤーＡＰＩ２８０を介してアクション３１６を要求レイヤーに戻す。ＨＴＴＰコンテキストコールアウトは、保護者による制限機能を実装するのに役立つ。
【０２１１】
侵入検知コールアウト５０２は、使用可能なアルゴリズムおよび技術を使用して、パケットを検査してウィルスの徴候、そうでない場合は不審なパケットを識別する。不審なパケットが検出されると、阻止のアクション３１６が戻される。不審なパケットの一例は、ＩＰヘッダーおよびＴＣＰヘッダー内のすべてのフラグが値１に設定されるパケットである。このパケットは、決して有効ではなく、攻撃シグネチャを示し得るため、不審である。あるいは、侵入検知コールアウト５０２は、パケットコンテキストを変更してパケットの不審な性質にフラグを立て、それによってネットワークスタックのその後のレイヤーへのパケットを阻止するかどうかについての決定を保留する。
【０２１２】
ＩＰＳｅｃコールアウト５０４は、適切なセキュリティプロトコルがパケットに適用されたかどうかを決定するように設計されている。ＩＰＳｅｃコールアウト５０４は、ＩＰＳｅｃプロセスと通信し、ＩＰＳｅｃポリシーに基づいてパケットがＩＰＳｅｃ処理の対象になる予定だったかどうかを判断する。そうである場合、ＩＰＳｅｃコールアウト５０４は、パケットコンテキストに基づいてパケットが実際にＩＰＳｅｃ処理にかけられたかどうかを確認する。パケットはＩＰＳｅｃに従って処理される予定であったが、例えばパケットが平文であったので処理されなかった場合、阻止のアクションが戻される。パケットがＩＰＳｅｃ処理の対象であった場合、ＩＰＳｅｃコールアウトは、適切なセキュリティアソシエーション（ＳＡ）が適用されたことを確認する。適切なＳＡが適用されなかった場合、コールアウトは、阻止のアクション３１６を戻し、そうでない場合は許可のアクション３１６が戻される。あるいは、ＩＰＳｅｃコールアウトは、次のレイヤーに対する許可を阻止するか許可するかについての決定を保留するパケットコンテキストを変更する。
【０２１３】
ロギングコールアウト５０６は、後で使用するために、全パケット(full packet)などパケットに関連する情報を保存するために使用する。こうした後での使用は、例えば一部のネットワークトラフィックが、阻止されているために予期せずネットワークを横断しない原因の診断、またはシステムに対する悪意のある攻撃を追跡するための診断であっても良い。
【０２１４】
本明細書で述べたすべての参照は、参照により本明細書に完全に組み込む。
【０２１５】
本発明の原理を適用できる多くの可能な実施形態を考慮して、図面との関連で本明細書に記載した実施形態は、例示的なものにすぎず、本発明の範囲を限定するものとみなされるべきではないことを理解されたい。例えば、ソフトウェアで示した実施形態の例の要素をハードウェアに、またその逆に実装でき、あるいは、実施形態の例を、本発明の意図から逸脱することなく、構成および詳細について変更できることを当分野の技術者であれば理解されよう。したがって、本明細書に記載した本発明は、特許請求の範囲、およびその均等物の範囲内に含まれ得るすべての実施形態を企図する。
【図面の簡単な説明】
【０２１６】
【図１】本発明が存在するコンピュータシステムの例を示す概略ブロック図である。
【図２】本発明が使用されるネットワーク環境の例を示す概略ブロック図である。
【図３】本発明のファイアウォールアーキテクチャを示す概略ブロック図である。
【図４】本発明とともに使用するフィルタの例を示すブロック図である。
【図５】本発明とともに使用するパケットコンテキストのデータ構造の例を示すブロック図である。
【図６】本発明とともに使用する１組のアプリケーションプログラミングインターフェースの例を示すブロック図である。
【図７】本発明とともに使用するアプリケーションプログラミングインターフェースの例を示すブロック図である。
【図８】本発明によるネットワークレイヤーによって実行される機能を示すブロック図である。
【図９】本発明とともに使用する１組のコールアウトの例を示すブロック図である。
【符号の説明】
【０２１７】
１００  コンピューティングシステム環境
１１０  コンピュータ
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３１  読取り専用メモリ（ＲＯＭ）
１３２  ランダムアクセスメモリ（ＲＡＭ）
１３３  基本入出力システム（ＢＩＯＳ）
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  インターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  インターフェース
１５１  磁気ディスクドライブ
１５２  リムーバブル不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  リムーバブル不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  ポインティング装置
１６２  キーボード
１７０  ネットワークインターフェースまたはアダプタ
１７１  ローカルエリアネットワーク（ＬＡＮ）
１７２  モデム
１７３  広域エリアネットワーク（ＷＡＮ）
１８０  リモートコンピュータ
１８１  メモリ記憶装置
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカー
２００  プライベートネットワーク
２０２  パブリックネットワーク
２０４  ネットワーク装置
２０６  ネットワーク装置
２０８  ネットワーク装置
２１０  ネットワーク装置
２１２  ネットワーク装置
２１４  ファイアウォール
２１６  フィルタ
２５０  ユーザモードプロセス
２５２  カーネルモードプロセス
２５４  ネットワークスタック
２５６  カーネルモードファイアウォールエンジン
２５８  コールアウト
２６０  ユーザモードファイアウォールエンジン
２６２  ポリシープロバイダ
２６４  フェールセーフポリシー
２６６  フィルタエンジンＡＰＩ
２６８  データストリームレイヤー
２７０  トランスポートレイヤー
２７２  ネットワークレイヤー
２７４  リンクレイヤー
２７６  ＳＭＢレイヤー
２７８  ハイパーテキスト転送プロトコル（ＨＴＴＰ）パーサモジュール
２８０  レイヤーＡＰＩ
２８２  フィルタ
２８２  ユーザモードレイヤー
２８４  コールアウトＡＰＩ
２８６  起動時間ポリシー
２８８  キーイングモジュールＡＰＩ
２９０  管理ＡＰＩ
２９４  フィルタモジュール
２９６  キーイングモジュール
３１０  フィルタ
３１２  フィルタＩＤ
３１４  重み
３１６  アクション
３１８  フィルタ条件
３２０  型
３２２  データ
３２４  レイヤーＩＤ：フィールドＩＤ
３２６  フィルタ条件
３２８  ポリシーコンテキスト
３３０  コンテキストデータ構造
３３２  レイヤーＩＤ：フィールドＩＤ
３３４  値
３３６  エントリ
３３８  エントリ
３４０  エントリ
３５０  Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｉｎｉｔｉａｔｅメソッド
４０２  Ｃｌａｓｓｉｆｙメソッド
４０４  Ａｄｄ  Ｌａｙｅｒメソッド
４０６  Ｄｅｌｅｔｅ  Ｌａｙｅｒメソッド
４１０  Ｃｌａｓｓｉｆｙメソッド
４１２  Ｎｏｔｉｆｙメソッド
４１４  Ｒｅｇｉｓｔｅｒ  Ｃａｌｌｏｕｔメソッド
４１６  Ｄｅｒｅｇｉｓｔｅｒ  Ｃａｌｌｏｕｔメソッド
４１８  Ａｄｄ  Ｆｉｌｔｅｒメソッド
４２０  Ｄｅｌｅｔｅ  Ｆｉｌｔｅｒメソッド
４２２  Ｅｎｕｍ  Ｌａｙｅｒメソッド
４３０  ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅメソッド
４３２  Ｅｘｐｉｒｅ  Ｎｏｔｉｆｙメソッド
４３４  ＩＰＳｅｃ  ＳＡ  Ａｃｑｕｉｒｅ  Ｃｏｍｐｌｅｔｅメソッド
４３６  Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｒｅｇｉｓｔｅｒメソッド
４３８  Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｄｅｒｅｇｉｓｔｅｒメソッド
４４０  ＩＰＳｅｃ  Ｉｎｂｏｕｎｄ  Ｇｅｔ  ＳＰＩメソッド
４４４  Ａｄｄ  Ｉｎｂｏｕｎｄ  ＳＡメソッド
４４６  Ａｄｄ  Ｏｕｔｂｏｕｎｄ  ＳＡメソッド
４４８  Ｉｎｂｏｕｎｄ  ＳＡ  Ｅｘｐｉｒｅメソッド
４５０  Ｋｅｙｉｎｇ  Ｍｏｄｕｌｅ  Ｉｎｉｔｉａｔｅメソッド
４６０  シム
４６２  シム
４６４  シム
４６６  シム
４６８  パケット
４７０  パケットコンテキスト
４７２  パケットコンテキスト
４７４  分類要求
４７６  レイヤーパラメータ
４７８  パケットコンテキスト
４８０  全パケット
４８２  応答
４８４  アクション
５００  ＨＴＴＰコンテキストコールアウト
５０２  侵入検知コールアウト
５０４  ＩＰＳｅｃコールアウト
５０６  ロギングコールアウト
５０８  キャッシュ
５１０  サーバ
【図１】
2004362581.tif 000024
【図２】
2004362581.tif 000025
【図３】
2004362581.tif 000026
【図４】
2004362581.tif 000027
【図５】
2004362581.tif 000028
【図６】
2004362581.tif 000029
【図７】
2004362581.tif 000030
【図８】
2004362581.tif 000031
【図９】
2004362581.tif 000032