(57)【要約】【課題】改善されたファイアウォールソリューションを提供する。【解決手段】本発明のいくつかの実施形態は、ファイアウォール規則を指定する新規な方法を提供する。いくつかの実施形態では、前記方法が、特定のファイアウォール規則、特定のファイアウォールが実施されるべきネットワークノードの組（以下、実施ポイントの組とも称する）を指定する能力を提供する。この能力を提供するため、いくつかの実施形態での前記方法は、ファイアウォール規則に追加のタプル（以下、適用先タプルと称する）を追加する。この追加された適用先タプルは、ファイアウォール規則が適用（即ち実施）されなければならない実施ポイントの組をリストにする。【選択図】図１
2015156624.tif 000002
【特許請求の範囲】
【請求項１】
ファイアウォール規則を指定する方法であって、
複数のファイアウォール規則を指定する工程と、
前記指定されたファイアウォール規則の少なくとも２つの異なるサブセットを少なくとも２つの実施デバイスへと分配する工程と、を含み、
前記ファイアウォール規則のそれぞれは、ネットワーク中の前記ファイアウォール規則が使用されなければならない実施ノードのセットを識別する実施ノードタプルを有し、
前記指定されたファイアウォール規則のサブセットのそれぞれは、実施ノードタプルを有する少なくとも１つのファイアウォール規則を含む
ことを特徴とする方法。
【請求項２】
前記分配する工程が、前記指定されたファイアウォール規則の前記２つの異なるサブセットを識別するために前記実施ノードタプルの値を用いる工程を含むことを特徴とする、請求項１に記載の方法。
【請求項３】
前記分配する工程が、前記２つの異なるサブセットを前記２つの実施デバイスへと分配する前に、前記指定されたファイアウォール規則の前記識別された２つの異なるサブセットを２つの異なるデータストレージに格納する工程をさらに含むことを特徴とする、請求項２に記載の方法。
【請求項４】
ファイアウォール規則のそれぞれがさらに、
（ｉ）ファイアウォール規則がパケットに適用可能であるか否かを判定するためにパケットの属性セットと比較するためのｎ個タプルのセットと、
（ｉｉ）前記ファイアウォール規則が前記パケットに適用可能である場合にパケットに対して行われるアクションを指定するアクション識別子と、
を含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記ｎ個タプルのうちの少なくとも１つはワイルドカード値であることを特徴とする、請求項４に記載の方法。
【請求項６】
それぞれの前記ｎ個タプルは、発信元識別子及び宛先識別子を含むことを特徴とする、請求項４に記載の方法。
【請求項７】
前記２つの実施デバイスは、それぞれにおいて１つの仮想マシンが実行される２つのホストデバイスであることを特徴とする、請求項１に記載の方法。
【請求項８】
前記２つの実施デバイスは、（ｉ）１つの仮想マシンが実行される仮想化デバイスと（ｉｉ）非仮想化デバイスとを含むことを特徴とする、請求項１に記載の方法。
【請求項９】
実施ノードタプルを有さない前記指定されたファイアウォール規則の少なくとも１つのサブセットを、少なくとも１つの特定の実施デバイスに分配する工程をさらに含むことを特徴とする、請求項１に記載の方法。
【請求項１０】
前記特定の実施デバイスがサードパーティ機器であることを特徴とする、請求項９に記載の方法。
【請求項１１】
それぞれのサブセットのそれぞれのファイアウォール規則が、少なくとも１つの実施ノードタプルを有することを特徴とする、請求項１に記載の方法。
【請求項１２】
特定の指定されたファイアウォール規則から、特定の分配されるファイアウォール規則を導出する工程をさらに含み、
前記導出する工程は、前記特定の指定されたファイアウォール規則の実施ノード識別子から、前記特定の分配されるファイアウォール規則の実施ノード識別子を導出する工程を含む
ことを特徴とする、請求項１１に記載の方法。
【請求項１３】
特定の指定されたファイアウォール規則から、特定の分配されるファイアウォール規則を導出する工程をさらに含み、
前記特定の分配されるファイアウォール規則の実施ノード識別子は、前記特定されたファイアウォール規則の特定の実施ノード識別子と同一であることを特徴とする、請求項１１に記載の方法。
【請求項１４】
ファイアウォール規則を指定する方法であって、
前記ファイアウォール規則についての、パケットの属性のセットと比較されるタプルのセットを受け取る工程と、
ネットワーク中の前記ファイアウォール規則が使用される実施ノードのセットを識別する実施ノード識別子のセットを受け取る工程と、
パケットの属性のセットが前記ファイアウォール規則のタプルのセットと一致する場合に実行するアクションを受け取る工程と、
前記受け取ったタプルのセット、前記実施ノードのセット、及び前記受け取ったアクションに基づいて、前記ファイアウォール規則を指定する工程と、
前記指定されたファイアウォール規則を複数の実施デバイスへと分配する工程と、を含み、
前記分配されるファイアウォール規則は少なくとも１つの実施ノード識別子を含むことを特徴とする方法。
【請求項１５】
前記分配されるファイアウォール規則の前記実施ノード識別子が、前記実施ノード識別子のセットに含まれることを特徴とする、請求項１４に記載の方法。
【請求項１６】
前記分配されるファイアウォール規則の前記実施ノード識別子が、前記実施ノード識別子のセットから導出されることを特徴とする、請求項１４に記載の方法。
【請求項１７】
前記分配されるファイアウォール規則の前記実施ノード識別子が、前期実施ノード識別子のセットのうちの１つの識別子から導出されることを特徴とする、請求項１６に記載の方法。
【請求項１８】
ファイアウォール規則を指定する方法であって、
複数のファイアウォール規則を指定する工程を含み、
前記ファイアウォール規則のそれぞれは、ネットワーク中の前記ファイアウォール規則が使用されなければならない実施ノードのセットを識別する実施ノード識別子を少なくとも１つ含み、
少なくとも１つの実施ノード識別子は、動的に改変可能なメンバーのセットを含む動的コンテナであり、
前記方法はさらに、前記指定されたファイアウォール規則の前記実施ノード識別子に基づいて、前記指定されたファイアウォール規則の少なくとも第１及び第２のサブセットを、第１及び第２の実施デバイスへと分配する工程と、
前記動的コンテナのメンバー構成の改変に応じて、実施ノードを指定するために前記動的コンテナを用いる少なくとも１つのファイアウォール規則を識別する工程と、
前記第１の実施デバイスが前記識別されたファイアウォール規則を適用する実施ノードのセットを更新するために、前記第１の実施デバイスへと更新を分配する工程と、
を含むことを特徴とする方法。
【請求項１９】
前記更新は、前記第１の実施デバイスの前記実施ノードのセットから、実施ノードを取り除くことを特徴とする、請求項１８に記載の方法。
【請求項２０】
前記更新は、前記第１の実施デバイスの前記実施ノードのセットへと、実施ノードを追加することを特徴とする、請求項１８に記載の方法。
【請求項２１】
前記改変された動的コンテナを用いる規則を前記ファイアウォール規則が有していることを識別した後に、第３の実施デバイスへと前記識別されたファイアウォール規則を分配する工程をさらに含むことを特徴とする、請求項１８に記載の方法。
【請求項２２】
前記第３の実施デバイスは前記第２の実施デバイスであることを特徴とする、請求項２１に記載の方法。
【請求項２３】
前記改変された動的コンテナを用いる規則を前記ファイアウォール規則が有していることを識別した後に、前記識別されたファイアウォール規則を取り除くように第３の実施デバイスに指示する工程をさらに含むことを特徴とする、請求項１８に記載の方法。
【請求項２４】
ファイアウォール実施デバイス上にファイアウォール規則データストアを作成する方法であって、
コントローラから、前記ファイアウォール実施デバイスに接続されているデータエンドノードの第１のセットについてのファイアウォール規則の第１のセットと、前記ファイアウォール実施デバイスに接続されていないデータエンドノードの第２のセットについてのファイアウォール規則の第２のセットと、を含む複数のファイアウォール規則を受け取る工程と、
前記データエンドノードの第１のセットについて、少なくとも第１のファイアウォールデータストアを作成するために前記ファイアウォール規則の第１のセットを用いる工程と、
前記データエンドノードの第２のセットのうちのデータエンドノードの接続に応じて、前記コントローラとやりとりすることなく、前記新しく接続されたデータエンドノードについての第２のファイアウォールデータストアを作成するために、前記ファイアウォール規則の第２のセットを用いる工程と、
それぞれのファイアウォールデータストア内の前記規則を用いて、前記接続されたデータエンドノードについてファイアウォール規則を使用する工程と、
を含むことを特徴とする方法。
【請求項２５】
前記ファイアウォール実施デバイスは、ホストデバイス上で実行されるファイアウォールエンジンであり、
前記接続されているデータエンドノードは、前記ホスト上で実行されている仮想マシンであり、
前記接続されていないデータエンドノードは、前記ホスト上で実行されていない仮想マシンである
ことを特徴とする、請求項２４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
一般的に、ファイアウォール規則定義は、アクション値に加えて、以下の５個のタプル、即ち発信元、発信元ポート、宛先、宛先ポート、及びサービス（又はアプリケーション）を含む。各タプルは、そのタプルにとって許容可能な値を提供する識別子の組を指定する。このことは、ハードウェアベースのファイアウォール及びソフトウェアベースのファイアウォールを含む、今日使用されている大半のファイアウォールに当てはまる。ハードウェアファイアウォールは、物理的なマシンと仮想マシン（ＶＭ）の両方を保護するために使用することができる。ハードウェアファイアウォールは、多数の欠点を有する。例えば、ハードウェアファイアウォールは、多くの場合チョークポイント型のソリューションである。ハードウェアファイアウォールのそれぞれは、そこを全トラフィックが通過しなければならないので、全てのファイアウォール規則を実施するための１つのチョークポイント（接点）としての機能を果たすからである。また、ハードウェアファイアウォールは、チョークポイントの後ろのマシンのなかでのセキュリティは提供しない。
【０００２】
ソフトウェアファイアウォールは、サービスノードファイアウォールとして、又はＶＮＩＣ（仮想ネットワークインタフェースカード）レベルのファイアウォールとしてのいずれでも実現することができる。サービス−ノードファイアウォールは、それらのハードウェア型相当物に類似しており、境界においてファイアウォール能力を実施するものである。したがって、サービス−ノードファイアウォールはハードウェアファイアウォールと同じ不都合を有する。即ち、サービス−ノードファイアウォールはネットワークトラフィックに対するチョークポイントであり、内部ネットワークトラフィックに対する（即ち、チョークポイントの後ろの仮想マシンに対する）セキュリティを提供しない。一方、ＶＮＩＣ−レベルファイアウォールは、パケットがＶＭのＶＮＩＣから出てくるとすぐにセキュリティポリシーを実施する。よって、ＶＮＩＣ−レベルファイアウォールは、イントラＶＭトラフィックに対するセキュリティを提供できる。ＶＮＩＣレベルファイアウォールはまた、発信元で１回、宛先で１回の２回、トラフィックを検査する。
【０００３】
しかし、ＶＮＩＣ−レベルファイアウォールの現行モデルでは、全ての規則がデータセンターにおける全てのＶＭに適用される。つまり、管理プレーンにおいて定義された規則とＶＮＩＣレベル規則テーブルとの間に１対１写像が存在する。この１対１写像は、管理レベルでの規則定義の数を制限する。また、このアプローチにより、ＶＮＩＣレベルファイアウォールテーブルにおいて規則膨張が生じ、これにより更にファイアウォールエンジンの処理速度が低下する。このアプローチはまた、規則処理が内部ＶＭトラフィックの発信元で行われるか、宛先で行われるかを制御することができない。現行のＶＮＩＣ−レベルアプローチはまた、真のマルチテナントソリューションではない。マルチテナントを達成するためには、ユーザがコントローラレベルで多数のファイアウォールコンテキスト（又は多数のファイアウォールテーブル）を作成しなければならないからである。したがって、当分野ではより良いファイアウォールソリューションに対するニーズが存在する。
【発明の概要】
【０００４】
本発明のいくつかの実施形態は、ファイアウォール規則を指定するための新規な方法を提供する。いくつかの実施形態では、前記方法は、特定のファイアウォール規則のために、その特定のファイアウォールが実施されるネットワークノードの組（以下実施ポイントの組とも称する）を指定する能力を提供する。この能力を提供するために、いくつかの実施形態の方法は、追加のタプル（以下適用先（ＡｐｐｌｉｅｄＴｏ）タプルと称する）をファイアウォール規則に追加する。この追加された適用先タプルは、そのファイアウォール規則が適用（即ち実施）されなければならない実施ポイントの組をリストにしている。
【０００５】
いくつかの実施形態では、適用先タプルは、ネットワーク構成体及び／又はコンピュート構成体についての実施ポイント識別子の組を特定するべく構成することができる。異なる実施形態は、ファイアウォール規則の適用先タプルにおける使用のためのネットワーク構成体及びコンピュート構成体の異なる組を提供する。そのような構成体の例としては、（１）独立したＶＮＩＣ又はＶＭ、あるいはＶＮＩＣ又はＶＭの組、（２）仮想化又は非仮想化環境においてホスト又はＶＭのグループ化を表現する、ホスト、コンピュート（演算）クラスタ、データセンター等のコンピュート構成体、（３）物理フォワード処理要素（例えば、物理スイッチ、物理ルータ等）、論理フォワード処理要素（例えば、論理スイッチ、論理ルータ等）、他の管理された機器、管理されていないサードパーティの機器（例えば、サードパーティのファイアウォール）、及び／又はそれらの要素の組み合わせのようなネットワーク要素、及び（４）１つ又は複数のＶＮＩＣ、ＶＭ，ホスト、コンピュート構成体、及び／又はネットワーク構成体の組によって形成されるセキュリティグループが挙げられる。いくつかの実施形態では、適用先タプルを、その適用先タプルに対する全ての可能な値（例えば全てのＶＮＩＣ）を表すワイルドカード値に設定することもできる。
【０００６】
いくつかの実施形態では、１つ又は複数のコンピュート構成体、ネットワーク構成体、及びセキュリティ構成体を、動的に追加及び／又は除去されるメンバー（例えばフォワード処理要素、ホスト、ＶＮＩＣ等）を有し得る動的コンテナとして指定することができる。ファイアウォール規則の適用先タプルは、そのような動的に改変可能な構成体を参照することが可能なので、適用先（ＡｐｐｌｉｅｄＴｏ）ファイアウォール規則（即ち、適用先タプルを含むべく指定された規則）は、これらの改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置に対して動的に調節することができる。
【０００７】
これらの実施形態の方法は、適用先ファイアウォール規則を、種々のファイアウォール実施デバイスに分配する。ある場合には、ファイアウォール実施デバイスのそれぞれは、ファイアウォール実施ノードであり、別の場合には、ファイアウォール実施デバイスのそれぞれは、１つ又は複数のファイアウォール実施ノード（即ち、実施ポイント）に接続する、及び／又は１つ又は複数のファイアウォール実施ノードのためにファイアウォール規則を実施する。いくつかの実施形態では、前記方法は、各ファイアウォール実施デバイスに対して、そのデバイスに関連する適用先ファイアウォール規則のみを分配する。つまり、いくつかの実施形態の前記方法は、各ファイアウォール実施デバイスに分配するファイアウォール規則の組から、そのファイアウォール実施デバイスに関連しない指定された適用先ファイアウォール規則を除去する。
【０００８】
いくつかの実施形態では、これらのファイアウォール実施デバイスには、複数のＶＭが実行されるホストが含まれる。これらの、又は他の実施形態では、適用先ファイアウォール規則を受け取るネットワークノードは、他のタイプのファイアウォール実施デバイスを含む。１つ又は複数のファイアウォール規則の適用先タプルを定めるために用いられる動的コンテナが改変されるとき、いくつかの実施形態の前記方法は、影響を受けるネットワークノードにファイアウォール規則を再送しないが、代わりに、その動的コンテナで定められたグループに対して、更新されたメンバー構成の送信のみを行う。前記方法はまた、動的コンテナに対するメンバー構成の変更によってファイアウォール実施デバイスの追加又は除去が必要となったとき、新しいファイアウォール実施デバイスへのファイアウォール規則の送信か、ファイアウォール実施デバイスからのファイアウォール規則の除去を行う。
【０００９】
いくつかの実施形態の前記方法により、適用先ファイアウォール規則を、（１）より高レベルの実施ポイント識別子によって指定されたものとするが、次に（２）その規則を受け取ったネットワークノードに解読可能又は解読が容易なより低レベルの実施ポイント識別子によって分配することが可能になる。いくつかの実施形態では、前記方法が、適用先タプルを有するいくつかのノードに対していくつかの適用先ファイアウォール規則を分配するとともに、その適用先タプルを有していない他のノードに対して他のファイアウォール規則を分配する。例えば、いくつかの実施形態では、前記方法が、１つ又は複数の実行されているＶＭを有するホストに対して適用先ファイアウォール規則を分配するとともに、適用先ファイアウォール規則の処理ができない１つ又は複数の管理されていないサードバーティの機器に対しては非適用先ファイアウォール規則を分配する。しかし、他の実施形態では、前記方法が、いくつか又は全ての管理されていないサードバーティの機器に対しても、適用先ファイアウォール規則を分配する。これらの機器も適用先ファイアウォール規則を処理可能であり得るからである。
【００１０】
いくつかの実施形態では、適用先ファイアウォール規則を受けるネットワークノードが、受け取った適用先ファイアウォール規則に基づいて、そのノードに接続する１つ又は複数のデータエンドノード（ＶＭ、ＶＮＩＣ、マシン、又は他のネットワーク要素）のための１つ又は複数のファイアウォール規則テーブルを指定する。いくつかの実施形態のネットワークノードでは、受け取った適用先ファイアウォール規則における適用先タプルを用いて、そのネットワークノードが、そのためのファイアウォール規則テーブルを作成する必要があるデータエンドノードを特定する。いくつかの実施形態では、指定されたファイアウォール規則テーブルは、もはや適用先タプルを有していない。
【００１１】
そのようなファイアウォール規則テーブルの例として、ホスト上で実行されているＶＭのＶＮＩＣのためにホストが作成するＶＮＩＣ−レベルファイアウォールテーブルが挙げられる。ＶＮＩＣ−レベルファイアウォール規則は、特定のＶＭのＶＮＩＣに対して適用可能な規則の組のみを含み、この規則の組は、その上で実行される全てのＶＭに対してホストが格納している規則の総数より少ない。各ＶＮＩＣテーブルには不要な規則が多数含まれているので、仮想マシンに出入りする各パケットに対するファイアウォールエンジンによるこれらの規則の処理が遅くなる。逆に言えば、ＶＮＩＣ−レベルファイアウォール規則は、そのサイズが小さいために、より大きい膨張した規則テーブルより検索が早く行える。
【００１２】
いくつかの実施形態では、適用先ファイアウォール規則を、異なるＶＭ又は異なる論理フォワード処理要素に対して、これらのＶＭ又はフォワード処理要素をインスタンス化することなく特定することができる。更に、データエンドノード（例えば、ＶＭ又は物理マシン）がファイアウォール実施デバイスに接続する前でさえも、いくつかの実施形態の前記方法は、これらのデータエンドノードに接続し得るファイアウォール実施デバイスに対し、適用先ファイアウォール規則を分配する。例えば、特定の論理ネットワークに属するＶＭを実行している可能性のあるホストに対して、いくつかの実施形態の前記方法は、そのＶＭがそのホスト上でインスタンス化される前でさえ、その論理ネットワークのためのより低レベルの適用先ファイアウォール規則を分配する。前もってそのようなホストに対して適用先ファイアウォール規則をプッシュしておくことは都合が良い。そのことにより、ホストが、いくつかの実施形態の前記方法を実施するコントローラとやり取りすることなく、ＶＭをインスタンス化し、そのＶＭのためのＶＮＩＣ−又はＶＭ−レベルファイアウォールテーブルを指定することが可能となるからである。
【００１３】
上述の方法は、いくつかの利点を有する。適用先を用いてファイアウォール規則のために設定された実施ポイントを指定し、管理プレーンのプロビジョニング（準備）及びデータプレーンの配置の間に複数のレベルにおいて規則フィルタリングを適用することによって、データエンドノード（例えばＶＭ、ＶＮＩＣ等）に対して、非膨張型のファイアウォール規則テーブルを容易に指定することができる。非膨張型のファイアウォール規則テーブルにより、ファイアウォール規則エンジンによる処理がより高速となり、よってより良い処理能力が得られる。
【００１４】
適用先タプルが、管理レベルの規則とデータプレーンレベルのそれとの間の１対１写像を壊すので、適用先ファイアウォール規則により、管理プレーンにおける規則の数を顕著に増加させることができる。その規則の処理がパケットの発信元で行われるか、宛先で行われるかを指定するための効率的な制御を有していない従来型のファイアウォール規則の配置とは異なり、適用先ファイアウォール規則は、定義により、その規則がパケットの発信元に適用されるか、パケットの宛先に適用されるか、その両方に適用されるかを指定するためのメカニズムを提供する。この規則には、それらを実施する場所が含まれているからである。より高レベルの構成体や動的な構成体に対して適用先ファイアウォール規則が適用可能であることで、ファイアウォール規則より高レベルの構成体に対して容易に指定できるようになり、かつ動的な構成体に対してメンバー構成を変えることによってその規則が適用可能な要素のグループを動的に変更することが可能となる。そのようなわけで、適用先ファイアウォール規則を用いて、１個のテナントのため、又はマルチテナント環境における１個のテナントのための１個の論理ネットワークのためのファイアウォール規則を容易に作成することが可能となる。
【００１５】
前述の概要は、本発明のいくつかの実施形態に対する簡単な紹介として記載したものである。本明細書に開示するすべての発明主題の紹介又は概説を意図したものではない。下記の詳細な説明及び詳細な説明で参照される図面においては、発明の概要に記載した実施形態とともに、他の実施形態も更に記載する。したがって、本明細書に記載する全ての実施形態を理解するために、発明の概要、詳細な説明、及び図面の全部に目を通すことが必要である。更に、請求項に記載する発明主題は、発明の概要、詳細な説明、及び図面における例示的な細部の説明によって限定されるものではない。
【図面の簡単な説明】
【００１６】
本発明の新規な特徴は、特許請求の範囲の請求項に記載されている。しかし、説明のため、以下の図面に本発明のいくつかの実施形態を記載する。
【００１７】
【図１】適用先識別子を有するファイアウォール規則を構成し、分配するコントローラを示す図である。
【図２】いくつかの実施形態における適用先タプルを指定するために用いられる実施ポイントのいくつかの例を示す図である。
【図３】適用先ファイアウォール規則を指定し、分配する別のコントローラを示す図である。
【図４】規則テーブルのいくつかの例を示す図である。
【図５】適用先ファイアウォール規則を指定し、分配する別のコントローラを示す図である。
【図６】いくつかの実施形態における、図５のコントローラのいくつかの操作のための処理を示す図である。
【図７】いくつかの実施形態における、図５のコントローラのいくつかの操作のための処理を示す図である。
【図８】いくつかの実施形態における、図５のコントローラのいくつかの操作のための処理を示す図である。
【図９】いくつかの実施形態における、図５のコントローラのいくつかの操作のための処理を示す図である。
【図１０】本発明のいくつかの実施形態のマルチＶＭホストのファイアウォール実施アーキテクチャを示す図である。
【図１１】いくつかの実施形態での図１０のホストのファイアウォール実施モジュールのいくつかの操作のための処理を示す図である。
【図１２】いくつかの実施形態での図１０のホストのファイアウォール実施モジュールのいくつかの操作のための処理を示す図である。
【図１３】いくつかの実施形態での図１０のホストのファイアウォール実施モジュールのいくつかの操作のための処理を示す図である。
【図１４】本発明のいくつかの実施形態のネットワーク制御システムを示す図である。
【図１５】本発明のいくつかの実施形態のネットワーク制御システムを示す図である。
【図１６】本発明のいくつかの実施形態を実現するために使用可能な電子デバイスを示す図である。
【発明を実施するための形態】
【００１８】
以下の発明の詳細な説明では、本発明の多くの細部、例示、及び実施形態について記載し、詳述する。しかし、本発明は、ここに記載された実施形態に限定されず、本発明はここに詳述する特定の細部及び例示を含めずに実施可能であることは当業者には明白、自明であろう。
【００１９】
本発明のいくつかの実施形態は、ファイアウォール規則を指定するための新規な方法を提供する。いくつかの実施形態では、前記方法は、特定のファイアウォール規則のために、その特定のファイアウォールが実施されるべきネットワークノードの位置の組（以下、実施ポイントの組と称する）を指定する能力を提供する。この能力を提供するため、いくつかの実施形態の前記方法は、ファイアウォール規則に追加のタプル（以下、適用先タプルと称する）を追加する。この追加された適用先タプルは、そのファイアウォール規則が適用（即ち実施）されなければならない実施ポイントの組をリストにしている。
【００２０】
図１は、そのような方法を実現するコントローラ１００を示す。コントローラ１００により、適用先ファイアウォールを、ユーザ及び／又は自動化プロセスによって構成することが可能となる。このコントローラはまた、そのコントローラによって管理される複数のネットワークノードを含むネットワーク（図示せず）における複数のファイアウォール実施デバイス１２０に対し、構成された適用先ファイアウォール規則を分配する。図１に示すように、コントローラは、ファイアウォール規則構成器１０５、ファイアウォールデータストレージ１１０、及びファイアウォール規則分配器１１５を備える。ファイアウォール規則構成器１０５は、ユーザと（１つ又は複数のユーザインタフェース（ＵＩ）モジュールを介して）、又はファイアウォールプロビジョニング及び／又はネットワーク構成の一部である自動化処理とやり取りすることにより、適用先ファイアウォール規則を構成する。この構成器１０５は、構成された適用先規則をファイアウォール規則データストレージ１１０に格納する。
【００２１】
図１に示すように、規則構成器１０５は、パケットを、ファイアウォール規則及びパケットがその規則に一致したとき行うべきアクションに照合するために、ｎ個データタプルによってデータストレージ１１０に各ファイアウォール規則１２５を指定する。本明細書では、用語「パケット」は、ネットワークにおいて送信される特定のフォーマットのビットの集合を指すものである。当業者であれば、用語パケットが、ネットワークにおいて送信される種々のフォーマットのビットの集合、例えばＥｔｈｅｒｎｅｔ（登録商標）フレーム、ＴＣＰセグメント、ＵＤＰデータグラム、ＩＰパケット等を表すために本明細書において用いられることがある、ということを理解するであろう。
【００２２】
図１に示す例では、ｎ個データタプルが、発信元、発信元ポート、宛先、宛先ポート、サービス、及び適用先識別子の、６個データタプルである。これらの識別子の１つ又は複数が、全ての可能な値が適用可能であることを表すワイルドカード値によって指定されてもよい。いくつかの実施形態では、Ｌ３レベルファイアウォール規則のためには発信元及び宛先識別子がＩＰアドレスによって指定されるとともに、Ｌ２レベルファイアウォール規則のためには、それらはＭＡＣアドレスによって指定される。後で更に説明するように、適用先識別子は、ファイアウォール規則が適用（即ち実施）されなければならない実施ポイントの組を指定する。
【００２３】
パケットが少なくとも１つのファイアウォール規則に一致することを確実にするため、規則構成器１０５は、各パケットがファイアウォールテーブル内の他のいずれの規則にも一致しない場合にも少なくとも１つの規則に一致することを確実にするキャッチオールファイアウォール規則を、少なくとも１つ、データストレージ１１０において指定する。また、パケットが複数の規則と一致し得る状況に対処するため、いくつかの実施形態では、規則構成器が、ストレージ中でより高い優先度の規則がより低い優先度の規則より先に現れるのを確実にする優先度階層に従って、規則をデータストレージ１１０に配置する。しかし、適用先識別子を用いて、異なる規則について異なる実施ノードを指定することが可能であるならば、規則構成器（又は規則構成器を介して操作するユーザ）は、異なる実施ノードに送信されるべきファイアウォール規則の優先度の順番を処理する必要はない。
【００２４】
図１とともに、以下に説明する他の図に示す例では、ファイアウォール規則のための発信元及び宛先ポート値が、ワイルドカード値として指定される。当業者であれば、全てのファイアウォール規則についてこのようにする必要はないことを理解されよう。適用先ファイアウォール規則は、従来のポート値、例えばポート２０、８０、１４３等によって指定することが可能である。また、図面に示す例では、頭字語ＷＳ、ＡＳ、及びＤＢＳは、ウェブサーバ、アプリケーションサーバ、及びデータベースサーバを表す。これらのサーバは、関連するネットワークアドレス（例えば、ＩＰアドレス）によって指定することができる。また、これらの図における例示されたファイアウォール規則は、システムの実際のファイアウォール規則を表すのでなく、ファイアウォール規則のイメージを単に概念的に伝えることを意図したものである。
【００２５】
ファイアウォールエンジン（図示せず）がパケットに一致するファイアウォール規則を特定したとき、エンジンは、規則のアクション識別子によって指定された操作をパケットに対して行う。いくつかの実施形態では、アクション識別子が、パケットを拒否すべきか、通過を許可するかを指定する。他の実施形態では、拒否及び許可処理の代わりに、又は拒否及び許可処理とともに、他の処理が指定されてもよい。
【００２６】
上述のように、適用先識別子は、ファイアウォール規則が適用されなければならない実施ポイントの組を指定する。いくつかの実施形態では、実施ポイントは、（１）ＶＮＩＣ、ＶＭ，ホスト、又は他のコンピュート構成体（コンピュートクラスタ、データセンター等）、（２）ネットワーク要素、例えば物理フォワード処理要素（例えば、物理スイッチ、物理ルータ等）、論理フォワード処理要素（例えば、論理スイッチ、論理ルータ等）、他の管理された機器、管理されていないサードパーティの機器（例えば、サードパーティのファイアウォール）、及び／又はそれらの要素の組み合わせ、及び／又は（３）１つ又は複数のＶＮＩＣ、ＶＭ，ホスト、コンピュート構成体、及び／又はネットワーク構成体の組によって形成されるセキュリティグループによって定めることができる。管理されたネットワークデバイス及び管理されていないネットワークデバイスの両方によって適用先識別子を指定できるようにすることにより、ファイアウォール構成器１０５は、管理されたネットワークデバイス及び管理されていないネットワークデバイスの両方を含むネットワークのためのファイアウォール規則定義の全体を管理する１つの統合されたインタフェースを提供する。
【００２７】
いくつかの実施形態では、適用先タプルを、その適用先タプルについての全ての可能な値（例えば全てのＶＮＩＣ）を表すワイルドカード値に設定することができる。後に更に説明するように、いくつかの実施形態において適用先識別子は、動的に改変可能な構成体を参照可能であり、このことにより、コントローラが更に、動的に改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置についてファイアウォール規則を動的に調節することが可能になる。
【００２８】
図１に示すように、コントローラは、適用先ファイアウォール規則を、ネットワークにおける種々のファイアウォール実施デバイス１２０に分配する。いくつかの実施形態では、ファイアウォール実施デバイスは、その上で複数のＶＭを実行するホストを含む。そのようなホストに加えて、又はそのようなホストの代わりに、いくつかの実施形態のファイアウォール実施デバイスは、他のタイプのファイアウォール実施デバイス、例えば物理フォワード処理要素、サービスノード（例えば、管理された専用マシン又は管理されたＶＭ）、エッジ機器（例えば、トップオブラック・スイッチ）、及びサードパーティの機器等を含む。
【００２９】
いくつかの実施形態では、コントローラは、適用先ファイアウォール規則を、（ファイアウォール規則に関連する実施ポイントの組を指定する）適用先タプルを有するいくつかノードに分配するとともに、他のファイアウォール規則を、適用先タプルを有していない他のノードに分配する。例えば、いくつかの実施形態では、前記方法は、適用先ファイアウォール規則を、１つ又は複数の実行されているＶＭを有するホストに分配するとともに、非適用先ファイアウォール規則を、適用先ファイアウォール規則を処理できない１つ又は複数のサードパーティの機器に分配する。しかし、他の実施形態では、前記方法は、いくつか又は全てのサードパーティの機器に、これらの機器が適用先ファイアウォール規則を処理可能なので、適用先ファイアウォール規則を分配する。
【００３０】
ファイアウォール実施デバイス１２０は、異なる実施形態では異なるタイプのエンドノードを含み得る１つ又は複数のデータエンドノード１３５に接続する。そのようなデータエンドノードの例として、ＶＭ及び非ＶＭのアドレス指定可能なノード（例えば、ボリュームマウンタ（ｉＳＣＳＩマウンタ、ＮＦＳマウンタ等）、ＶＭマイグレータ（例えば、ＶＭｗａｒｅ  Ｉｎｃ．のＥＳＸハイパーバイザで用いられるｖＭｏｔｉｏｎモジュール）、及びハイパーバイザカーネルネットワークインタフェース（例えば、ＶＭｗａｒｅ  Ｉｎｃ．のｖｍｋｎｉｃ）等が挙げられる。いくつかの実施形態では、各データエンドノード、又はデータエンドノードの組に対して、ファイアウォール実施デバイス１２０は、受け取った適用先ファイアウォール規則に基づき、カスタムファイアウォールデータストレージ（例えば、ファイアウォール規則テーブル）を生成する。カスタムファイアウォールデータストレージを生成するために、ファイアウォール実施デバイスは、受け取った適用先ファイアウォール規則の適用先識別子を用いて、異なるカスタムファイアウォールデータストレージに格納すべきファイアウォール規則を特定する。
【００３１】
例えば、いくつかの実施形態では、適用先ファイアウォール規則を受け取ったマルチＶＭホストが、ファイアウォール規則の適用先識別子に基づいて、ＶＭの複数のＶＮＩＣに対して複数のファイアウォール規則テーブルを指定する。いくつかの実施形態では、指定されたファイアウォール規則テーブルは、もはや適用先タプルを有していない。いくつかの実施形態では、ＶＮＩＣ−レベルファイアウォール規則テーブルが、ＶＮＩＣのＶＭに適用可能な規則の組のみを含み、この規則の組は、ホスト上で実行される全てのＶＭのためにホストが格納している規則の総数より少ない。また、ＶＮＩＣ−レベルファイアウォール規則テーブルにおける各規則は、発信元、発信元ポート、宛先、宛先ポート、サービス、及びアクション識別子の、６個タプルによって指定される。
【００３２】
いくつかの実施形態では、ファイアウォール実施デバイス１２０は、データエンドノード１３５に対し、直接接続するか、又は１つ又は複数のフォワード処理要素を介して間接的に接続する。それらのデータエンドノードへの接続を介して、ファイアウォール実施デバイス１２０は、データエンドノードとのパケットの授受を行う。いくつかの実施形態の実施デバイス１２０は、受け取ったパケットの属性と、パケットの発信元又は宛先ノードのために実施デバイスが作成したカスタムファイアウォールデータストレージにおけるファイアウォール規則（例えば、ファイアウォール規則の発信元、発信元ポート、宛先、宛先ポート、及びサービス識別子からなる５個データタプルを有するもの）とを比較する。この比較に基づいて、実施デバイスはパケットに対応するファイアウォール規則を特定し、次に特定されたファイアウォール規則によって指定されたアクションを行う。
【００３３】
図２は、いくつかの実施形態において適用先タプルを指定するために用いられる実施ポイントのいくつかの例を示す。具体的には、この図は、いくつかの実施形態のコントローラ１００によって構成され、格納された適用先ファイアウォール規則１２５のいくつかの例を示す。従来のように、これらの規則のそれぞれは、従来の５個タプル、即ち発信元、発信元ポート、宛先、宛先ポート、及びサービスを含み、それに加えて適用先タプル及びアクション値を含む。
【００３４】
図２に示す適用先タプルの例には、（１）データクラスタ２０５及びコンピュートクラスタ２１０等のコンピュート構成体、（２）物理ルータ２１５、論理スイッチ２２０、及び論理ネットワーク２２５等のネットワーク構成体、（３）サードパーティのネットワーク機器２３０、（４）セキュリティグループ２３５、及び（５）ワイルドカードエントリ２４０が含まれる。
【００３５】
いくつかの実施形態では、データセンターは、それぞれが１つのテナント又は複数のテナント専用であり得る複数のホストを包含する場所である。各ホストは専用の非仮想化マシンでもよく、あるいはその上で複数のＶＭが実行される仮想化マシンでもよい。コンピュートクラスタは、データセンターにおけるホストのグループである。図２は、それぞれ２つのＶＭ２５０を実行する２つのホスト２４５によって形成されるコンピュートクラスタの一例である。いくつかの実施形態では、コンピュートクラスタにおける各ホストが、テナントの組をサポートするように構成され、それにより、ＶＭがインスタンス化されるか、そのようなホストの１つに移動したとき、そのＶＭを構成し、ホスト上のＶＮＩＣ−レベルファイアウォールデータストレージを構成するために必要なデータのいくつか又は全てがそのホスト上に既に存在するようにする。
【００３６】
いくつかの実施形態では、各物理フォワード処理要素（ＰＦＥ）が、物理的世界に存在するフォワード処理要素である。図２は、ＰＦＥの一例として物理ルータ２１５を示す。そのようなＰＦＥの例として、スイッチ、ルータ、ファイアウォール機器、ロードバランサ等が挙げられる。いくつかの実施形態では、そのような物理デバイス（スイッチ、ルータ、ファイアウォール機器、ロードバランサ等）の全てがスタンドアロンのハードウェアデバイスであるか、ホストの物理ＮＩＣによって実現されるハードウェアデバイスであるか、又は共有されたホスト又は専用のホスト上で実行されるソフトウェアデバイスであり得る。
【００３７】
本明細書では、ソフトウェアフォワード処理要素を、物理的世界に縛られない論理構成体である論理フォワード処理要素から区別するために、物理フォワード処理要素（ＰＦＥ）と称する。つまり、ソフトウェアフォワード処理要素は、物理的世界に存在し動作しているのでＰＦＥと称し、論理フォワード処理要素は、単にユーザに提示されるフォワード処理要素の論理表現であるか、いくつかの実施形態ではプログラムである。
【００３８】
いくつかの実施形態では、異なるホストデバイス（例えば、異なるコンピュータ）上で実行されるソフトウェアフォワード処理要素は、同一の共有されたコンピュート及びネットワーキングリソースを用いる異なるテナント、ユーザ、部門等の異なる論理ネットワークのための、異なる論理フォワード処理要素（ＬＦＥ）を実現するべく構成される。例えば、２つのホストデバイス上で実行される２つのソフトウェアフォワード処理要素は、Ｌ２スイッチング機能を果たすことができる。これらのソフトウェアスイッチのそれぞれは、それぞれ１つのエンティティのＶＭに接続する２つの異なる論理Ｌ２スイッチを部分的に実現できる。いくつかの実施形態では、ソフトウェアフォワード処理要素がＬ３ルーティング機能を提供し、他のホスト上で実行されるソフトウェアＬ３ルータとともに異なる論理ルータを実現するべく構成されたものであり得る。図２は、論理フォワード処理要素の一例として論理スイッチ２２０を示す。論理フォワード処理要素は、米国特許出願１４／０７０，３６０号明細書に更に記載されており、この特許出願は参照により本明細書の一部とする。
【００３９】
論理ネットワークは、１つ又は複数の論理フォワード処理要素によって形成されるネットワークである。図２は、１つの論理ルータ２５５と３つの論理スイッチ２６０によって形成される論理ネットワーク２２５の一例を示す。論理フォワード処理要素と同様に、論理ネットワークは、ユーザに提示されるネットワークの論理表現か、いくつかの実施形態ではプログラムである。図２に示す例では示されていないが、適用先タプルは、（１つ又は複数のＰＦＥによって形成された）物理ネットワークも、ファイアウォール規則のための実施ポイントとして指定することができる。
【００４０】
１つ又は複数のコントローラによって管理される（例えば、１つ又は複数のＬＦＥを実現するコントローラによって管理される）複数の物理フォワード処理要素を備えるネットワークにおいては、サードパーティの機器は、そのコントローラによって管理されないか、又は最小限しか管理されないフォワード処理要素である。例えば、いくつかの実施形態のマルチテナントでホストされた環境では、複数のコントローラが、ネットワークのエッジにおいて動作する複数の物理フォワード処理要素を管理する（即ち、ホスト上で実行されるか、ホストに直接接続するＰＦＥを管理する）。しかし、エッジ上のＰＦＥ間の接続は、サードパーティの機器（例えば、サードパーティのトップオブラックスイッチ等）を備える内部ネットワーク構造を横断している。いくつかの実施形態の管理されたネットワークでは、管理されたフォワード処理要素が、管理されたエッジフォワード処理要素と、管理された非エッジフォワード処理要素の両方を備える。これらの実施形態のいくつかでは、管理された非エッジフォワード処理要素が、それらの実施形態の管理されたエッジフォワード処理要素では容易にハンドリングされない機能を果たしている。いくつかの実施形態では、これらの非エッジフォワード処理要素を、サービスノードと称する。
【００４１】
いくつかの実施形態では、適用先タプルが、１つ又は複数のＶＮＩＣ、ＶＭ、ホスト、コンピュート構成体、及び／又はネットワーク構成体によって形成されたセキュリティグループによって実施ポイントを指定することができる。例えば、適用先ファイアウォール規則を、特定のコンピュートクラスタ、及びそのクラスタのホスト上で実行される特定のテナントのＶＭに接続する特定の論理ネットワークによって指定されるセキュリティグループに、（適用先タプルによって）限定することが可能である。いくつかの実施形態では、セキュリティグループを、ユーザ（例えばネットワーク管理者）が指定することができる。それと同時に、あるいはその代わりに、いくつかの実施形態では、セキュリティグループを自動化したプロセスで指定することができる。エントリ２４０に示すように、ワイルドカード値で、適用先タプルを指定することもできる。いくつかの実施形態では、そのワイルドカード値が、適用先タプルの全ての可能な値（例えば全てのＶＮＩＣ）を表す。
【００４２】
いくつかの実施形態では、適用先識別子が、動的に改変可能な構成体を参照することができ、これにより、コントローラが、その動的に改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置のファイアウォールを動的に調節することが可能となる。いくつかの実施形態では、１つ又は複数のコンピュート構成体、ネットワーク構成体、及びセキュリティグループを、動的に追加及び／又は除去されるメンバー（例えばフォワード処理要素、ホスト、ＶＮＩＣ等）を有し得る動的コンテナとして指定することができる。１つ又は複数のファイアウォール規則の適用先タプルを定めるために用いられる動的コンテナが改変されるとき、いくつかの実施形態のコントローラは、影響を受けるネットワークノードに対してファイアウォール規則を再送せず、代わりに、その動的コンテナによって定められるグループへの更新されたメンバー構成の変化の送信のみを行う。
【００４３】
いくつかの実施形態のコントローラにより、適用先ファイアウォール規則を、（１）より高レベルの実施ポイント識別子によって（例えば、ネットワーク管理者により、又は自動化されたファイアウォール構成器により）指定することができるが、次に（２）ファイアウォール実施デバイスにより解読可能又は解読が容易な低レベルの実施ポイント識別子による分配が可能となる。図３は、１つのそのようなコントローラ３００とともに、コントローラ３００によって分配されたファイアウォール規則を受け取る１つのホスト３５０を示す図である。この図に示すように、コントローラ３００は、ファイアウォール規則構成器３０５、変換エンジン３１０、発行エンジン３１５，高レベル規則データストレージ３２０、及び低レベル規則データストレージ３２５を備える。図３に示す例について図４を参照して説明する。図４は、本発明のいくつかの実施形態ではコントローラ３００及びホスト３５０によって作成されるいくつかのファイアウォール規則テーブルを示す。
【００４４】
ファイアウォール規則構成器１０５と同様に、ファイアウォール規則構成器３０５は、（１つ又は複数のユーザインタフェース（ＵＩ）モジュールを介して）ユーザと、及び／又は自動化されたプロセスとやり取りすることにより、適用先ファイアウォール規則を構成する。ファイアウォール規則構成器３０５により、ユーザ又は自動化されたプロセスが、高レベル実施ポイント識別子によって適用先ファイアウォール規則を指定することが可能となる。そのような高レベル実施ポイント識別子の例としては、例えば論理スイッチ、論理ルータ、論理ネットワーク、物理ネットワーク、コンピュートクラスタ、データセンター等の、高レベルネットワーク、コンピュート及びセキュリティ構成体が挙げられる。
【００４５】
構成体３０５は、それが構成する適用先ファイアウォール規則を規則データストレージ３２０に格納する。図４は、コントローラが構成し、いくつかの実施形態の高レベルデータストレージ３２０に格納する高レベルファイアウォール規則テーブル４０５の一例を示す。図に示すように、高レベルファイアウォール規則テーブル４０５は、例えばコンピュートクラスタ、データセンター、及び論理スイッチ等の高レベル識別子によって定められる適用先識別子を有する、複数の適用先ファイアウォール規則を格納する。
【００４６】
規則データストレージ３２０から、変換エンジン３１０が適用先ファイアウォール規則を取り出し、取り出した規則の適用先タプルにおける高レベル実施ポイント識別子を低レベル実施ポイント識別子に変換する。例えば、いくつかの実施形態では、変換エンジンが、コンピュート構成体（例えば、データセンター識別子、コンピュートクラスタ識別子、ホスト識別子等）及びネットワーク構成体（例えば、ＬＦＥ識別子、論理ネットワーク識別子等）を、ＶＮＩＣ及びワイルドカード値に変換する。図４は、低レベルファイアウォール規則テーブル４１０の一例を示す。図に示すように、このテーブル４１０は、高レベルファイアウォール規則テーブル４０５と同じファイアウォール規則を含むが、各規則の適用先識別子はここではワイルドカード値４１２か、その高レベル識別子に関連するＶＮＩＣの組のいずれかを指定する。
【００４７】
実施ポイント識別子をそのように変換する際、変換エンジン３１０は、適用先ファイアウォール規則が、その適用先ファイアウォール規則を受け取った全てのファイアウォール実施デバイスによって解読可能な低レベル実施ポイント識別子によって定められたものであることを確実にする。変換エンジンは、それが取り出し、必要なときは変換する適用先ファイアウォール規則を、規則データストレージ３２５に格納する。
【００４８】
いくつかの実施形態では、変換エンジン３１０が、データストレージ３２０からのファイアウォール規則の他のパラメータを変換し、その後、変換された規則をデータストレージ３２５に格納する。例えば、いくつかの実施形態では、ファイアウォール規則の発信元識別子及び宛先識別子が、ファイアウォール規則をファイアウォール実施デバイスに分配する前に、より低レベルの識別子（例えば、特定のＩＰアドレス）に変換されなければならない高レベルの構成体（例えば、ウェブサーバ、アプリケーションサーバ、データベースサーバ等のコンテナ）によって指定されてもよい。
【００４９】
当業者は、他の実施形態では、変換エンジンが異なる形で動作をすることも理解されよう。例えば、いくつかの実施形態では、変換エンジンは高レベルの発信元識別子及び宛先識別子を低レベルの発信元識別子及び宛先識別子に変換しないか、常には変換しない。これらの実施形態のいくつかでは、変換エンジンが、この変換をファイアウォール実施デバイスのいくつか又は全てにゆだねる。同様に、いくつかの実施形態では、変換エンジンは、ファイアウォール実施デバイスのための高レベル適用先識別子から低レベル適用先識別子への変換を行わないか、常には行わない。変換エンジンは、この変換を行うことをファイアウォール実施デバイスのいくつか又は全てにゆだねるからである。上述の高レベルファイアウォール識別子（例えば適用先識別子、発信元識別子、宛先識別子等）の変換のいくつか又は全ては、コントローラが実施デバイスに分配するファイアウォール規則のサイズ及び／又は数について簡略化するが、実施デバイスにこの変換を行う能力（例えばネットワーク状態情報）を持たせる必要という負担が生ずる。
【００５０】
コントローラに、低レベル適用先識別子とともに（例えば、ＶＮＩＣ及びワイルドカード値のみとともに）ファイアウォール規則を分配させるいくつかの実施形態においてでさえ、コントローラは、高レベル適用先識別子（例えば、高レベルネットワーク構成体、コンピュート構成体、及び／又はセキュリティ構成体）を低レベル適用先識別子に解凍（変換）する変換エンジン３１０を使用しなくてもよい。例えば、各高レベル適用先識別子（例えば、各コンピュートクラスタ識別子、ＬＦＥ識別子等）は、ＶＮＩＣ値のリストへの参照を有するオブジェクトとして指定される。これらの実施形態のいくつかでは、変換エンジンの仕事は、ワイルドカード値、又は高レベル適用先識別子のメンバーである（例えば、コンピュートクラスタ、ＬＦＥ等のメンバーである）ＶＮＩＣへの参照又は識別情報を、高レベル識別子オブジェクトのＶＮＩＣリストにポピュレートする（追加する）ことである。いくつかの実施形態では、規則構成器３０５が、そのようにＶＮＩＣリストにポピュレートし、よってこれらの実施形態では、変換エンジンは、高レベル適用先識別子に関連するいずれの処理にも用いられない。
【００５１】
適用先ファイアウォール規則を受け取るべき各データエンドノードに対して、発行エンジン３１５は、（１）低レベルデータストレージ３２５からホストレベル適用先規則３４５を収集し、かつ（２）収集したファイアウォール規則をデータエンドノードに分配する。図３は、ファイアウォール規則をマルチＶＭホストに分配する発行エンジンを示す。しかし、他の実施形態では、発行エンジン３１５がファイアウォール規則を他のファイアウォール実施デバイスに分配するために用いられることは、当業者であれば理解されよう。
【００５２】
各ホストのために、発行エンジン３１５は、より低レベルのデータストレージ３２５からそのホストに関連する適用先規則を特定し、取り出す。いくつかの実施形態では、発行エンジンは、各ホストに対し、そのホストに関連する適用先規則を送信するのみである。これらの適用先規則は、いくつかの実施形態では、ホスト上で実行されるＶＭに関連する適用先規則を含む。図４は、いくつかの実施形態では発行エンジンがホストに分配する、ホストレベルファイアウォール規則テーブル４１５の一例を示す。このテーブルは、受け手ホストに適用可能な適用先ファイアウォール規則のみを含む。そのようなわけで、このテーブルは、高レベル及び低レベル適用先テーブル４０５及び４１０より一般的にはずっと小さくなる。このテーブル４１５は１つのホストに関連する適用先規則しか含んでいないからである。
【００５３】
いくつかの実施形態では、各ホストに関連する規則には、ホスト上でインスタンス化され得るＶＭに関連する適用先規則も含まれている。例えば、特定のホストが、特定の論理ネットワークを実現するコンピュートクラスタに属するとき、いくつかの実施形態の発行エンジン３１５は、その論理ネットワークに属するＶＭがその特定のホスト上でインスタンス化される前であっても、その論理ネットワークのための適用先規則を特定のホストにプッシュする。前もって適用先ファイアウォール規則をそのようなホストにプッシュしておくことは好都合である。それによって、ホストがコントローラとやり取りすることなくそのＶＭのためのファイアウォール規則を構成することが可能となるからである。そのようなファイアウォール規則の構成を、以下、ファイアウォール規則のヘッドレスプロビジョニングと称する。それにはコントローラとのやり取りが必要でないからである。
【００５４】
いくつかの実施形態では、発行エンジン３１５が、より高レベルの適用先データストレージ３２０を調べることによって、各ホストに対する適用先規則３４５を収集する。例えば、いくつかの実施形態では、より低レベルの適用先データストレージ３２５を定義しない。これらの実施形態では、発行エンジン３１５は、より高レベルの適用先データストレージ３２０を取捨選択し、ホストに適用可能な適用先ファイアウォール規則を特定する。
【００５５】
また、図３及び図４は、異なるホストに対するホストレベル適用先規則の組の作成及び分配を示すが、他の実施形態では、発行エンジン３１５が適用先データストレージを調べて、非ホストのファイアウォール実施デバイス（例えばサードパーティのファイアウォールデバイス等）に対してファイアウォール規則の組を特定し発行することは、当業者には理解されよう。この発行エンジンは、（１）いくつかの実施形態では、非ホストのファイアウォール実施デバイスに対して非適用先ファイアウォール規則（即ち、適用先識別子を有していない規則）の発行のみ行い、（２）他の実施形態では、非ホストのファイアウォール実施デバイスに対して適用先ファイアウォール規則（即ち、適用先識別子を有している規則）の発行のみ行い、また（３）ある非ホストのファイアウォール実施デバイスに対しては非適用先ファイアウォール規則を発行するが、他の非ホストのファイアウォール実施デバイスに対しては適用先ファイアウォール規則を発行することもある。
【００５６】
各ホスト３５０は、ホストレベル規則を受け取り、ホストレベル規則テーブル３５４に格納するホストコントローラインタフェース３５２を有する。各ホストは、ＶＭファイウォール構成器も有し、これはホストレベル規則テーブル３５４に格納されたホストレベル規則から、ホスト上で実行される各ＶＭのためのファイアウォール規則のサブセットを特定し、格納する。図３に示す実施形態では、ＶＭファイアウォール構成器は、各ＶＭの各ＶＮＩＣのための１つのＶＮＩＣレベルファイアウォール規則を、（１）ホストレベル規則３５４における適用先データタプルを用いて、そのＶＮＩＣに適用可能なファイアウォール規則を特定し、（２）ホストレベル規則から特定された規則を取り出し、かつ（３）取り出された規則をそのＶＮＩＣのためにＶＮＩＣレベルファイアウォールストレージ３５５に格納することによって生成する、ＶＮＩＣテーブル構成器３５６である。いくつかの実施形態では、各ＶＭは１つのＶＮＩＣである。しかし、他の実施形態では、いくつかの又は全てのＶＭが２つ以上のＶＮＩＣを有するものであり得る。
【００５７】
図４は、ＶＮＩＣレベルファイアウォール規則テーブル４２０の一例を示す。このテーブルに示すように、ＶＮＩＣレベルファイアウォール規則テーブルにおけるファイアウォール規則には、適用先タプルが含まれておらず、それぞれ５個タプル（発信元、発信元ポート、宛先、宛先ポート、及びサービス識別子）とアクション値のみによって指定されている。ＶＮＩＣレベルファイアウォール規則テーブルは、特定のＶＮＩＣに適用可能な規則の組のみしか含んでいないので、この規則の組は、その上で実行される全てのＶＭのためにホストが格納する規則の総数より少なくなる。このようにサイズがより小さいことで、ホストのファイアウォール規則エンジン（図示せず）によるファイアウォール規則の処理がより速くなる。
【００５８】
上述のファイアウォール規則分配の方法は、いくつかの利点を有する。適用先を用いてファイアウォール規則に対する実施ポイントの組を指定し、管理プレーンプロビジョニング及びデータプレーンの配置の間に複数のレベルで規則フィルタリングを適用することによって、これらの方法で、簡潔で膨大化していないファイアウォール規則テーブルをデータエンドノード（例えばＶＭ，ＶＮＩＣ等）に対して容易に指定することができるようになる。また、膨大化していないファイアウォール規則テーブルにより、ファイアウォール規則エンジンによる処理がより速くなり、したがって処理能力が更に向上する。
【００５９】
後述のセクションＩでは、いくつかの実施形態のコントローラのより詳細ないくつかの例について述べる。次のセクションＩＩでは、いくつかの実施形態のマルチＶＭホストのより詳細ないくつかの例について述べる。その次のセクションＩＩＩでは、本発明のいくつかの実施形態のネットワーク制御システムについて述べる。最後のセクションＩＶでは、本発明のいくつかの実施形態のコントローラ及び／又はホストを実現するために用いられる電子デバイスについて述べる。
【００６０】
Ｉ．コントローラのアーキテクチャ及び動作
【００６１】
図５は、本発明のいくつかの実施形態のコントローラ５００を示す。図３のコントローラ３００と同様に、コントローラ５００は、より高レベルの実施ポイント識別子によって適用先ファイアウォール規則を構成するが、より低レベルの実施ポイント識別子によって適用先ファイアウォール規則を分配する。また、コントローラ３００と同様に、コントローラ５００は、規則構成器５０５、変換エンジン５１０、発行エンジン５１５、高レベル規則データストレージ３２０、及び低レベル規則データストレージ３２５を備える。これらの構成要素に加えて、図５は、コントローラ５００が、ユーザインタフェース（ＵＩ）モジュール５３０、自動化プロビジョニングモジュール５３５、グループ定義データストレージ５４０、及びいくつかの実施デバイスデータストレージ５５５、５６０、及び５６５を備えることを示す。
【００６２】
ファイアウォール規則構成器５０５は、ＵＩモジュール５３０を介してユーザ（例えば、ネットワーク管理者）とやり取りすることにより、適用先ファイアウォール規則を構成する。構成器はまた、物理又は論理ネットワークのプロビジョニングの一部としてこれらの規則を指定するように構成器に指示する自動化プロビジョニングモジュール５３５の指示で適用先ファイアウォール規則を構成する。例えば、コントローラ５００が、マルチユーザ（例えばマルチテナント）がホストされる環境において論理ネットワークを管理するネットワーク制御システムの一部であるとき、プロビジョニングモジュール５３５は、いくつかの実施形態では、論理ネットワークが１ユーザ（例えば、１つのテナント）のために指定されているとき、少なくともいくつかの適用先ファイアウォール規則を指定するように構成器５０５に指示する。
【００６３】
構成器５０５により、（ＵＩモジュール５３０を介して）ユーザが、又はプロビジョニングモジュール５３５が、高レベル実施ポイント識別子によって適用先ファイアウォール規則を指定することが可能となる。そのような高レベル実施ポイント識別子の例としては、高レベルネットワーク、コンピュート及びセキュリティ構成体が挙げられ、例えば論理スイッチ、論理ルータ、論理ネットワーク、物理ネットワーク、コンピュートクラスタ、データセンター等がある。構成器５０５は、それが構成した適用先ファイアウォール規則を規則データストレージ３２０に格納する。
【００６４】
変換エンジン５１０は、規則データストレージ３２０から、適用先ファイアウォール規則を取り出し、取り出した規則の適用先タプルにおける高レベルの実施ポイント識別子をより低レベルの実施ポイント識別子に変換する。例えば、いくつかの実施形態では、変換エンジンは、コンピュート構成体（例えば、データセンター識別子、コンピュートクラスタ識別子、ホスト識別子等）、ネットワーク構成体（例えば、ＬＦＥ識別子、論理ネットワーク識別子等）、及び（１つ又は複数のネットワーク又はコンピュート構成体によって形成された）セキュリティグループを、ＶＮＩＣ及びワイルドカード値に変換する。実施ポイント識別子をそのように変換する際、変換エンジン５１０が、全ての適用先ファイアウォール規則が、その適用先ファイアウォール規則を受け取る全てのファイアウォール実施デバイスによって解読可能な低レベル実施ポイント識別子によって定められたものとなることを確実にする。変換エンジンは、それが取り出し、必要なときは変換する適用先ファイアウォール規則を、低レベル規則データストレージ３２５に格納する。
【００６５】
高レベル実施ポイント識別子（例えば、高レベルネットワーク構成体、コンピュート構成体、及びセキュリティグループ）を低レベル実施ポイント識別子に（例えば、ＶＮＩＣ及びワイルドカード値に）変換するために、変換エンジンは、グループ定義データストレージ５４０に格納された高レベルグループの定義に依拠している。これらの定義は、（ＵＩモジュール５３０を介して）ユーザにより、又は自動化プロビジョニングモジュール５３５により格納される。
【００６６】
いくつかの実施形態では、これらの定義は統計的に定義される。他の実施形態では、高レベルグループ定義のいくつか又は全てが、ユーザ又はプロビジョニングモジュール５３５により動的に改変可能である。具体的には、いくつかの実施形態では、適用先識別子が動的に改変可能な構成体を参照し、これにより、コントローラ５００が、動的に改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置のためにファイアウォール規則を動的に調節することが可能となる。いくつかの実施形態では、規則構成器３０５は、コンピュート構成体、ネットワーク構成体、及びセキュリティグループの１つ又は複数を、動的に追加及び／又は除去されるメンバー（フォワード処理要素、ホスト、ＶＮＩＣ等）を有し得る動的コンテナとして指定することができる。
【００６７】
静的又は動的グループへの参照により定義される実施ポイントに対して、変換エンジン５１０は、（１）データストレージ５４０におけるグループ定義を用いて高レベル識別子に関連する低レベル識別子（例えば、ＶＮＩＣ及びワイルドカード値）を特定し、（２）高レベル識別子を特定された低レベル識別子で置き換え、かつ（３）得られた規則をデータストレージ３２５に格納する。１つ又は複数のファイアウォール規則の適用先タプルを定めるために用いられる動的コンテナが改変されると、変換エンジンは、影響を受けるファイアウォール規則の低レベル実施ポイント識別子を更新する。後に更に説明するように、次いで発行エンジン５１５が、影響を受けるファイアウォール規則のための更新されたメンバー構成の変化を、このメンバー構成の変化を通知される必要のあるファイアウォール実施デバイスに送信する。この方法は、影響を受けるファイアウォール規則を、これらの規則を以前に受け取ったファイアウォール実施デバイスに再送する必要をなくす。しかし、発行エンジンは、動的コンテナに対するメンバー構成の変化が新たなファイアウォール実施デバイスの追加を必要とするときには、影響を受けるファイアウォール規則を新たなファイアウォール実施デバイスに送信する。
【００６８】
コントローラ３００の変換エンジン３１０と同様に、コントローラ５００の変換エンジン５１０は、データストレージ３２０からのファイアウォール規則の他のパラメータ（例えば、発信元及び宛先識別子）を変換した後、変換された規則をデータストレージ３２５に格納する。また、コントローラ３００の変換エンジン３１０と同様に、コントローラ５００の変換エンジン５１０は、他の実施形態においては異なる動作をする。例えば、いくつかの実施形態では、変換エンジンは、データストレージ３２０のファイアウォール規則の高レベル構成体の変換のいくつか又は全てを行うことを、ファイアウォール実施デバイスのいくつか又は全てにゆだねる。
【００６９】
また、低レベル適用先識別子を有する（例えば、ＶＮＩＣ及びワイルドカード値のみを有する）ファイアウォール規則をコントローラ５００に分配させるいくつかの実施形態においてでさえ、コントローラ５００は、高レベル適用先識別子（例えば、高レベルネットワーク構成体、コンピュート構成体、及び／又はセキュリティ構成体）を低レベル適用先識別子に解凍（変換）する変換エンジン５１０を使用しない。例えば、各高レベル適用先識別子（例えば、各コンピュートクラスタ識別子、ＬＦＥ識別子等）を、ＶＮＩＣ値のリストへの参照を有するオブジェクトとして指定するいくつかの実施形態では、変換エンジンの仕事は、ワイルドカード値、又は高レベル適用先識別子のメンバーである（例えば、コンピュートクラスタ、ＬＦＥ等のメンバーである）ＶＮＩＣへの参照又は識別情報を、高レベル識別子オブジェクトのＶＮＩＣリストにポピュレートすることである。いくつかの実施形態では、規則構成器３０５が、そのように（例えば、データストレージ５４０におけるグループ定義への参照によって）ＶＮＩＣリストにポピュレートし、よってこれらの実施形態では、変換エンジンは、高レベル適用先識別子に関連するいずれの処理にも必要とされない。
【００７０】
発行エンジン５１５は、実施デバイスに対して低レベルデータストレージ３２５から適用先規則を収集し分配する。図５に示すように、発行エンジン５１５は、規則抽出器５５０及び分配エンジン５４５を備える。各ファイアウォール実施デバイスに対して、規則抽出器５５０は、低レベルデータストレージ３２５から、実施デバイスに関連する適用先規則を特定し取り出す。規則抽出器５５０は、各特定のファイアウォール実施デバイスのために取り出したファイアウォール規則を、発行エンジンがその特定のファイアウォール実施デバイスのために維持するデータストレージ（例えば、データストレージ５５５、５６０、及び５６５）に格納する。
【００７１】
いくつかの実施形態では、規則抽出器５５０は、各ファイアウォール実施デバイスのため、そのファイアウォール実施デバイスに関連する適用先規則の取り出し及び格納のみを行う。そのようなわけで、実施デバイスのデータストレージ（例えば、各ファイアウォール実施デバイスのためのファイアウォール規則を格納するデータストレージ５５５、５６０、及び５６５）は、一般的に、高レベル及び低レベルデータストレージ３２０及び３２５よりずっと小さくなる。実施デバイスのデータストレージは実施デバイスのそれぞれに関連する適用先規則しか保存していないからである。
【００７２】
いくつかの実施形態では、ファイアウォール実施デバイスに関連する適用先ファイアウォール規則は、ファイアウォール実施デバイスに接続されたデータエンドノードに関連する適用先規則を含む。いくつかの実施形態では、各ファイアウォール実施デバイスに関連する規則が、ファイアウォール実施デバイスに接続されている可能性のあるデータエンドノードに関連する適用先規則も含む。例えば、特定のホストが、特定の論理ネットワークを実現するコンピュートクラスタに属するとき、いくつかの実施形態の規則抽出器５５０は、その論理ネットワークに属するＶＭが特定のホスト上でインスタンス化される前でも、その論理ネットワークのための指定された適用先規則をその特定のホストのためのデータストレージに格納する。前もって適用先ファイアウォール規則をそのようなホストにプッシュしておくことは好都合である。それによって、ホストがコントローラとやり取りすることなくそのＶＭのためのファイアウォール規則を構成することが可能となるからである。
【００７３】
いくつかの実施形態では、規則抽出器５５０が、より高レベルの適用先データストレージ３２０を調べることによって各実施デバイスのための適用先規則を収集する。例えば、いくつかの実施形態は、より低レベルの適用先データストレージ３２５を定義しない。これらの実施形態では、規則抽出器５５０が、より高いレベルの適用先データストレージ３２０を取捨選択し、ファイアウォール実施デバイスに適用可能な適用先ファイアウォール規則を特定する。
【００７４】
図５は、規則抽出器５５０が維持する３つのデータストレージ５５５、５６０、及び５６５を示す。３つのうちの２つのデータストレージ５５５及び５６０は、そのホスト上で実行されるＶＭのためのファイアウォール実施デバイスとしての機能を果たすファイアウォールエンジンを実行する、ホストのためのものである。第３のデータストレージ５６５は、サードパーティのファイアウォール機器のためのものである。発行エンジンは、（１）いくつかの実施形態では、非ホストのファイアウォール実施デバイスに対して非適用先ファイアウォール規則（即ち、適用先識別子を有していない規則）の発行のみを行い、（２）他の実施形態では、非ホストのファイアウォール実施デバイスに対して適用先ファイアウォール規則の発行のみを行い、また（３）ある非ホストのファイアウォール実施デバイスに対しては非適用先ファイアウォール規則を発行するが、他の非ホストのファイアウォール実施デバイスに対しては適用先ファイアウォール規則を発行することもある。
【００７５】
従って、いくつかの実施形態では、規則抽出器が、非ホストのファイアウォール実施デバイスに対して発行されるべき全てのファイアウォール規則のための適用先識別子を除去し、その後、規則抽出器がそれらのデバイスのために維持するデータストレージ（例えばデータストレージ５６５）にファイアウォール規則を格納する。他の実施形態では、規則抽出器が、それが非ホストのファイアウォール実施デバイスのために維持するデータストレージ（例えば、データストレージ５６５）に、それらの適用先識別子を有するファイアウォール規則を格納する。更に他の実施形態では、規則抽出器が、ある非ホストのファイアウォール実施デバイスのためには適用先識別子を有していないファイアウォール規則を格納するが、他の非ホストのファイアウォール実施デバイスのためには適用先識別子を有するファイアウォール規則を格納する。
【００７６】
いくつかの実施形態では、発行エンジン５１５の分配エンジン５４５が、規則抽出器がファイアウォール実施デバイスのために維持するデータストレージに格納されたファイアウォール規則を、（ネットワークを介して）各ファイアウォール実施デバイスにプッシュする。他の実施形態では、ファイアウォール実施デバイスは、分配エンジンからファイアウォール規則の引き出しをする。更に他の実施形態では、分配エンジンがあるファイアウォール実施デバイスに対してはファイアウォール規則をプッシュするが、他のファイアウォール実施デバイスに対してはファイアウォール規則の引き出しをするためのリソースとしての機能を果たす。
【００７７】
上述のように、発行エンジンは、ファイアウォール実施デバイスに対し、適用先実施ポイントの組の更新を、ユーザ又は自動化プロセスがそのような組を動的に改変したときに分配する。いくつかの実施形態では、そのような改変により、変換エンジンが、より低レベルのデータストレージ３２５におけるファイアウォール規則を更新する。このことによって、次に、ファイアウォール実施デバイスのために規則抽出器が維持する１つ又は複数のデータストレージにおける１つ又は複数の規則における適用先フィールドを、規則抽出器に更新させることができる。より低レベルのデータストレージにおけるファイアウォール規則の更新により、新たに指定された実施ポイント（即ち、データストレージ３２５における以前に指定された適用先ファイアウォール規則のための実施ポイントとして追加されたファイアウォール実施デバイス）のための新たなファイアウォール規則を、規則抽出器に作成させることができる。次に分配エンジンが、影響を受けるファイアウォール実施デバイスに対し、更新された適用先メンバー構成及び／又は新たに追加されたファイアウォール規則を（例えば、プッシュアクション又は引き出しアクションを介して）分配する。
【００７８】
いくつかの実施形態でのコントローラ５００の動作を、図６乃至図９を参照して以下に述べる。図６は、いくつかの実施形態においてコントローラ６００の変換エンジン６１０が行うプロセス６００を示す。いくつかの実施形態においてプロセス６００は、適用先ファイアウォール規則の組が高レベルデータストレージ３２０に格納される毎に行われる。いくつかの実施形態では、プロセス６００は、バッチプロセスとして行われ、他の実施形態では、適用先ファイアウォール規則の組の高レベルデータストレージ３２０への格納の通知を受け取った際にリアルタイムで行われる。
【００７９】
図６に示すように、プロセスは初めに（６０５で）高レベルデータストレージに追加された適用先ファイアウォール規則の組の識別情報を受け取る。これらの規則は、高レベル適用先識別子（例えば、高レベルコンピュート構成体、ネットワーク構成体、及び／又はセキュリティグループ）又は低レベル適用先識別子（例えば、ＶＮＩＣ及びワイルドカード値）によって指定することができる。
【００８０】
プロセスは、次に（６１０で）、受け取った組の適用先ファイアウォール規則の１つを選択する。次に、６１５において、プロセスは、選択された適用先ファイアウォール規則が、少なくとも１つの高レベル構成体によって定められた適用先識別子を有するか否かを判定する。有する場合には、プロセスは、（６１５で）高レベル適用先識別子を低レベル適用先識別子に変換する。高レベル適用先識別子（例えば、高レベルネットワーク構成体、コンピュート構成体、及びセキュリティグループ）を低レベル適用先識別子に（例えば、ＶＮＩＣ及びワイルドカード値に）変換するために、プロセス６００は、グループ定義データストレージ５４０に格納された高レベルグループの定義に依拠している。具体的には、データストレージにおいて定義されたグループへの参照によって定められた適用先識別子について、プロセス６００は、（１）データストレージ５４０におけるグループ定義を用いて、高レベル識別子に関連する低レベル識別子（ＶＮＩＣ及びワイルドカード値）を特定し、（２）適用先ファイアウォール規則における高レベル識別子を、特定された低レベル識別子で置き換え、かつ（３）得られた規則をデータストレージ３２５に格納する。６１５において、いくつかの実施形態では、プロセスが（データストレージ３２０からの）ファイアウォール規則の他のパラメータ（例えば、発信元及び宛先識別子）を変換し、その後変換した規則をデータストレージ３２５に格納する。
【００８１】
６２０において、プロセスは、６０５で受け取った組における適用先ファイアウォール規則の全てを調べたか否かを判定する。そうでない場合、プロセスは６１０に戻り、他の適用先ファイアウォール規則を選択し、次に操作６１５を行ってこの規則を低レベル規則に変換するが、これはそのような変換が必要な場合に行う。プロセスが、（６２０にて）受け取った組における適用先ファイアウォール規則の全てを調べたと判定したときには、プロセスは終了する。
【００８２】
このようにして、プロセス６００は、適用先ファイアウォール規則における高レベルコンピュート構成体（例えばデータセンター識別子、コンピュートクラスタ識別子、ホスト識別子等）、ネットワーク構成体（例えば、ＬＦＥ識別子、論理ネットワーク識別子等）、及び（１つ又は複数のネットワーク又はコンピュート構成体によって形成された）セキュリティグループを、低レベル識別子（例えば、ＶＮＩＣ及びワイルドカード値）に変換する。実施ポイント識別子をそのように変換する際に、変換プロセス６００は、全ての適用先ファイアウォール規則が、適用先ファイアウォール規則を受け取った全てのファイアウォール実施デバイスに解読可能な低レベル実施ポイント識別子によって定められたものであることを確実にする。
【００８３】
図７は、いくつかの実施形態においてコントローラ５００の発行エンジンが行うプロセス７００を示す。いくつかの実施形態では、プロセス７００は、適用先ファイアウォール規則の組が高レベルデータストレージ３２５に格納される毎に行われる。このプロセス７００は、低レベル規則データストレージ３２５からホストレベル適用先規則を収集し分配する。いくつかの実施形態では、プロセス７００は、バッチプロセスとして行われ、他の実施形態では、適用先ファイアウォール規則の組の低レベルデータストレージ３２５への格納の通知を受け取った際にリアルタイムで行われる。
【００８４】
図７に示すように、プロセスは、初めに（７０５で）低レベルデータストレージに追加された適用先ファイアウォール規則の組の識別情報を受け取る。いくつかの実施形態では、これらの規則の適用先データタプルはＶＮＩＣ及びワイルドカード値によって指定される。プロセスは、次に（７１０で）、受け取った組の適用先ファイアウォール規則の１つを選択する。
【００８５】
次に、７１５において、プロセスは、選択された規則が適用される各ファイアウォール実施デバイスを特定する。この規則抽出操作７１５は、選択された規則の適用先識別子によって指定された値に基づく。例えば、いくつかの実施形態では、規則抽出器５５０が、選択された規則の適用先識別子によって指定された各値を調べ、調べた値に関連するファイアウォール実施デバイスを特定する。
【００８６】
いくつかの実施形態では、ただ１つのファイアウォール実施デバイスが、非ワイルドカードの適用先値のいずれかに関連付けられる。しかし、他の実施形態では、２つ以上のファイアウォール実施デバイスが１つの適用先値に関連付けられることが可能である。複数のファイアウォール実施デバイスが、異なる時間に適用先値によって指定されるデータエンドノードに接続し得るからである。このため、発行エンジンは、データエンドノードのためのファイアウォール規則を、そのデータエンドノードに接続し得る各ファイアウォール実施デバイスに分配する。例えば、特定のホストが、特定のＶＭが接続される特定の論理ネットワークを実現するコンピュートクラスタに属するとき、いくつかの実施形態の規則抽出操作７１５は、あるホストを、ある適用先値によって指定される特定のＶＭのＶＮＩＣに関連付けられたものとして特定するが、この操作は、そのＶＭが特定のホスト上でインスタンス化される前であっても行われる。このように行われるのは、これらの実施形態において、コンピュートクラスタにおける全てのホストが論理ネットワークに接続されたＶＭのためのファイアウォール規則を受け取り、あらゆるホストが、ＶＭがホスト上でインスタンス化されたときそのＶＭのためのファイアウォール規則テーブルを、その場で構成することが可能だからである。
【００８７】
次に、プロセス７００が７１５で特定した各ファイアウォール実施デバイスに対して、そのプロセスは、７１０で選択されたファイアウォール規則を、ファイアウォール実施デバイスのためにプロセスが維持するファイアウォール規則データストレージに（７２０で）追加する。これらのファイアウォール規則は、一般的には高レベル及び低レベルデータストレージ３２０及び３２５より非常に小さい。実施デバイスデータストレージは、それぞれの実施デバイスに関連する適用先規則しか含んでいないからである。いくつかのファイアウォール実施デバイスのためのデータストレージにいくつかの適用先ファイアウォール規則を追加するとき、いくつかの実施形態では、プロセス７００は規則から適用先識別子を除去する。いくつかの実施形態が適用先識別子を除去するときの状況は、発行エンジン５１５の動作の説明のなかで上述した。
【００８８】
７２５において、プロセスは、７０５で受け取った組における適用先ファイアウォール規則の全てを調べたか否かを判定する。そうでない場合、プロセスは７１０に戻り、他の適用先ファイアウォール規則を選択し、次にこの新たに選択された適用先ファイアウォール規則のために操作７１５−７２５を行う。プロセスが、受け取った組における適用先ファイアウォール規則の全てを調べたと判定したときには、プロセス７００は、（ネットワークを介して）各ファイアウォール実施デバイスに、そのファイアウォール実施デバイスのデータストレージに（７２０で）それが格納したファイアウォール規則を（７３０で）プッシュする。７３０の後、プロセスは終了する。
【００８９】
規則抽出及び分配プロセス７００を、種々の細部を参照して上記のように説明したが、このプロセスは、他の実施形態においては異なる形で実現できることを当業者は理解されよう。例えば、ファイアウォール規則を実施デバイスにプッシュする代わりに、他の実施形態では、ファイアウォールデバイスが、発行エンジンからファイアウォール規則の引き出しを行う。
【００９０】
また、上述のように、いくつかの実施形態では、プロセス７００が、各ファイアウォール規則の各適用先値を調べて、そのファイアウォール規則を格納すべき実施デバイスデータストレージを特定する。低レベルファイアウォール規則の適用先識別子によって指定された各値を調べる代わりに、いくつかの実施形態では、規則抽出操作７１５が、高レベルデータストレージ３２０における高レベル又は低レベル適用先識別子を１つ又は複数のファイアウォール実施デバイスに関連付けることによって、ファイアウォール規則のいくつか又は全てをファイアウォール実施デバイスに関連付ける。ファイアウォール規則をファイアウォール実施デバイスに関連付けるために高レベルデータストレージ３２０における適用先識別子（例えば、高レベル又は低レベル識別子）を用いるとき、いくつかの実施形態は、ファイアウォール実施デバイスに対して、（１）高レベルデータストレージ３２０に格納された低レベル適用先識別子、及び（２）高レベルデータストレージ３２０において特定された高レベル適用先識別子に対応する、（例えば、グループ定義ストレージ５４０からの）低レベル適用先識別子をプッシュする。
【００９１】
また、全てのファイアウォール実施デバイスのためのデータストレージを個々に定義し維持する代わりに、規則抽出操作７１５は、いくつかの実施形態では、１つのデータストレージにおける関連するファイアウォール実施デバイスの少なくとも１つのためにファイアウォール規則を集約する。例えば、いくつかの実施形態では、データセンターにおける１つのコンピュートクラスタの全てのホストがファイアウォール規則の同じ組を受け取る。コンピュートクラスタにおける各ホストは、そのコンピュートクラスタにおけるいずれかのホストによって実現される各論理スイッチを実現するように準備される必要があるからである。したがって、１つのコンピュートクラスタにおける全てのホストのために、いくつかの実施形態のプロセス７００は、そのクラスタにおける全てのホストのための全てのファイアウォール規則を含むただ１つのコンピュートクラスタデータストレージを作成する。
【００９２】
図８は、いくつかの実施形態のコントローラ５００が、適用先識別子を定めるために用いられる動的構成体のメンバー構成が改変されたとき、ファイアウォール規則の適用先値を更新するために行うプロセス８００を示す。プロセス８００は、影響を受けるファイアウォール規則のための更新されたメンバー構成の変更を、このメンバー構成の変更が通知される必要のある、あらゆるファイアウォール実施デバイスに送信する。プロセス８００は、動的コンテナのメンバー構成の変更によってファイアウォール実施デバイスの追加又は除去が必要となるとき、影響を受けるファイアウォール規則の新たなファイアウォール実施デバイスへの送信、又はファイアウォール実施デバイスからの影響を受けるファイアウォール規則の除去も行う。
【００９３】
プロセス８００は、図９に示す例を参照して説明する。この例は、動的セキュリティグループＳＧＺに基づく、高レベル及び低レベルデータストレージ３２０及び３２５における適用先ファイアウォール規則の作成、及びセキュリティグループＳＧＺのメンバー構成の改変の後の低レベルデータストレージ３２５における適用先ファイアウォール規則の改変を示す。
【００９４】
図８に示すように、プロセス８００は、高レベルデータストレージ３２０における１つ又は複数の適用先規則の適用先識別子を定めるために用いられる動的構成体（例えば、ネットワーク構成体、コンピュート構成体、又はセキュリティグループ）の定義の改変が通知されたときに開始する。上述のように、グループ定義データストレージは、いくつかの実施形態では、動的構成体の定義を格納する。これらの実施形態のいくつかでは、ユーザが（ＵＩモジュール５３０を介して）、又は自動化プロビジョニングモジュール５３５が、８０５で動的構成体の定義を改変することができる。また、いくつかの実施形態では、グループ定義ストレージ５４０は、変換エンジンに対し、動的構成体の定義の改変をこのエンジンに通知するためにコールバックを（８０５で）提供する。
【００９５】
８１０で、プロセスは、動的構成体の変更された定義によって影響を受ける、各高レベルファイアウォール規則を特定する。これは、１つの動的構成体を、高レベルデータストレージ３２０における複数の適用先ファイアウォール規則の複数の適用先識別子において使用することが可能だからである。次にプロセス８００は、８１０で特定された高レベルファイアウォール規則の１つを（８１５で）選択する。選択された高レベルファイアウォール規則のために、次にプロセス８００は、より低レベルのデータストレージ３２５におけるそれに対応するより低レベルのファイアウォール規則を（８２０で）更新し、動的構成体の定義の変更を反映させる。この更新により、対応する低レベルファイアウォール規則からの１つ又は複数の低レベル適用先識別子の追加又は除去が生じ得る。
【００９６】
図９は、ＶＮＩＣ（ＶＮＩＣ  Ｎと称する）の追加を、このＶＮＩＣがセキュリティグループＳＧＺの定義に追加された後に低レベルファイアウォール規則に反映させる例を示す。この図に示すように、ＶＮＩＣ  ＮがセキュリティグループＳＧＺの定義に追加される前に、セキュリティグループが（時刻ｔ１に）定められ、高レベルデータストレージ３２０におけるこのグループＳＧＺを参照することによって、高レベル規則９０５が（時刻ｔ２に）作成され、かつ低レベルデータストレージ３２５における高レベル規則９０５のために低レベル規則９１０が（時刻ｔ３に）作成される。一旦セキュリティグループＳＧＺが、ＶＮＩＣ  Ｎを含むように（時刻ｔ４に）改変されると、変換エンジンには、この変更が（時刻ｔ５に）通知される。次に変換エンジンは、高レベル規則９０５を、改変されたセキュリティグループＳＧＺを参照する規則として特定する。次にこのエンジンは、低レベル規則９１０を、この規則の適用先識別子にＶＮＩＣ  Ｎを含むように（時刻ｔ６に）改変する。
【００９７】
８２０の後、このプロセスは、８１０でそれが特定した全ての高レベルファイアウォール規則（即ち、改変された動的構成体を参照する全ての高レベル規則）を調べたか否かを（８２５で）判定する。全てを調べていない場合には、プロセスは８１５に戻り、他の特定された高レベルファイアウォール規則を選択し、その高レベルファイアウォール規則に対応する低レベルファイアウォール規則を（８２０で）更新する。そうでない場合には、プロセスは８３０に移行する。
【００９８】
８３０で、プロセス８００は、それが８２０で更新した各低レベル規則を見直す。これは、そのファイアウォール実施デバイスのためのファイアウォール規則を含む実施デバイスデータストレージ（例えば、データストレージ５５５、５６０、及び５６５）を更新するためである。この更新を行うために、いくつかの実施形態では、プロセスは各影響を受けた低レベルファイアウォール規則の適用先値の新たな追加又は除去を特定し、そのように更新される必要のある（実施デバイスデータストレージ内の）各実施デバイスファイアウォール規則からこの値を追加又は削除する。例えば、図９に示す例では、低レベルファイアウォール規則９１０にＶＮＩＣ  Ｎを追加するには、影響を受けるホスト又はコンピュートクラスタのためのファイアウォール規則を格納するホストレベル又はコンピュートクラスタレベルのデータストレージへのこのＶＮＩＣの追加が必要となることもある。影響を受けるホストは、ＶＮＩＣ  Ｎを有するＶＭが実行される、又は実行され得るホストであり、影響を受けるコンピュートクラスタは、そのようなホストを含むコンピュートクラスタである。
【００９９】
このようにして、プロセスは、動的構成体における変化によって引き起こされる、より低レベルのファイアウォール規則の更新されたメンバー構成の変化を、１つ又は複数の実施するデバイスデータストレージに対して（８３０で）プッシュする。いくつかの場合、動的構成体における変化及び１つ又は複数の低レベルファイアウォール規則において生じる変化には、ファイアウォール規則が１つ又は複数の実施デバイスデータストレージに追加、又はそこから除去されることが必要である。したがって、いくつかの場合、動的コンテナのメンバー構成の変化によりファイアウォール実施デバイスの追加又は除去が必要であるとき、プロセス８００は、影響を受けるファイアウォール規則を新たなファイアウォール実施デバイスに送信するか、又はファイアウォール実施デバイスから影響を受けるファイアウォール規則を除去する。
【０１００】
８３０で実施デバイスのデータストレージを更新した後、プロセス８００は、８３０でプロセス８００によって更新されたデータストレージを有していた各ファイアウォール実施デバイスに、（ネットワークを介して）更新を（８３５で）プッシュする。プロセスは、実施デバイスのデータストレージにおけるファイアウォール規則の適用先メンバー構成を（８３０で）更新したとき、プロセスは実施デバイスのメンバー構成の変化を（８３５で）送信する。一方、プロセスが実施デバイスのデータストレージに新しいファイアウォール規則を（８３０で）追加するとき、プロセスは、実施デバイスにファイアウォール規則を（８３５で）送信する。受け取った改変に基づいて、ファイアウォール実施デバイスを、そのファイアウォール規則のメンバー構成を改変するか、又はファイアウォール規則の追加又は除去を行う。８３５の後、プロセスは終了する。
【０１０１】
本発明の他の実施形態では、更新プロセス８００は異なる形で実現されることを当業者は理解されよう。例えば、いくつかの実施形態では、コントローラ５００は、より低レベルのデータストレージ３２５により低レベルの規則を維持しない。これらの実施形態では、更新プロセスは、動的構成体のメンバー構成がグループ定義ストアにおいて改変されたとき、グループ定義ストレージ５４０における更新されたグループ定義を用いて、プロセスが実施デバイスデータストレージに格納するファイアウォール規則を直接更新する。
【０１０２】
ＩＩ．ホストのアーキテクチャ及び動作
【０１０３】
図１０は、本発明のいくつかの実施形態のマルチＶＭホスト１００２のファイアウォール実施アーキテクチャ１０００を示す。このホストは、適用先ファイアウォール規則を受け取り、これらの規則に基づいて、複数のＶＮＩＣレベルファイアウォール規則データストレージを指定し、ホストは次にこれを用いて、各ＶＭによって送信され又は各ＶＭのために受け取られるパケットに対してＶＮＩＣレベルファイアウォール操作を行う。
【０１０４】
図１０に示すように、仮想化アーキテクチャ１００は、（１）複数のＶＭ１００５及び１０１０、（２）各ＶＭのためのＶＮＩＣ１０１５又は１０２０、（３）ソフトウェアスイッチ１０３５、（４）各ＶＮＩＣのためのポート１０２５又は１０３０、（５）ファイアウォールエンジン１０４０、（６）ＶＮＩＣレベルファイアウォール規則１０４５、（７）ファイアウォール規則発行器１０５０，（８）ファイアウォールエージェント１０５５、（９）ホストレベルファイアウォール規則テーブル１０６５、及び（１）ホストコントローラインタフェース１０６０を備える。
【０１０５】
いくつかの実施形態では、ＶＭが、ホスト上で実行されているハイパーバイザ（図示せず）の上で実行される。図１０は、ただ２つのＶＭ１００５及び１０１０を示すが、場合によってはより大きい数のＶＭがホスト１００２上で実行される。各ＶＭは、１つのテナントに属していてよく、ホストがマルチテナント環境で動作しているときは複数のテナントに属していてもよい。
【０１０６】
いくつかの実施形態では、各ＶＭはＶＮＩＣを備える。例えば、ＶＭ１００５はＶＮＩＣ１０１５を備え、ＶＭ１０１０はＶＮＩＣ１０２０を備える。ＶＭの各ＶＮＩＣは、ＶＭとソフトウェアスイッチとの間のパケットの交換を担っている。後に更に説明するように、各ＶＮＩＣはソフトウェアスイッチの特定のポートに接続し、そのソフトウェアスイッチはホストの物理ＮＩＣ（図示せず）に接続する。いくつかの実施形態では、ＶＮＩＣは、仮想化ソフトウェアによって実現される物理ＮＩＣのソフトウェア抽象化である。
【０１０７】
いくつかの実施形態では、ソフトウェアスイッチが、各ＶＭの各ＶＮＩＣのための1つのポートを維持している。例えば、ＶＮＩＣ１０１５及び１０２０のために、ソフトウェアスイッチ１０３５は、ポート１０２５及び１０３０を備える。ソフトウェアスイッチ１０３５は、それがそのポートの１つで受け取ったパケットをそのポートの別の１つにフォワード処理するパケット処理操作を行う。例えば、いくつかの実施形態では、ソフトウェアスイッチは、パケットのデータ（例えば、パケットヘッダのデータ）を用いて、パケットをフローベースの規則に照合することを試み、一致したときには、一致した規則によって指定されたアクションを行う。ソフトウェアスイッチ１０３５は、発信パケットの送信と、着信パケットの受信とを行うべく、物理ＮＩＣに（ＮＩＣドライバ（図示せず）を介して）接続する。いくつかの実施形態では、ソフトウェアスイッチ１０３５は、パケットをＮＩＣと送受信するべく、物理ＮＩＣのドライバに接続しているポート（図示せず）を備える。
【０１０８】
また、いくつかの実施形態では、１つのホストのソフトウェアスイッチは、他のホストのソフトスイッチとともに複数の論理スイッチを形成することができ、各論理スイッチは、論理ネットワークをサービスする概念上のスイッチの機能を果たす。つまり、異なるユーザのための異なる論理ネットワークを指定するために異なる論理スイッチを定めることができ、各論理スイッチは、複数のホスト上の複数のソフトウェアスイッチによって定めることができる。ＶＸＬＡＮは、そのような論理スイッチを形成するための１つの方式を提供する。ＶＸＬＡＮ標準は、Ｍａｈａｌｉｎｇａｍ，Ｍａｌｌｉｋ；Ｄｕｔｔ，Ｄｉｎｅｓｈ  Ｇ．ら、（２０１３−０５−０８），ＶＸＬＡＮ：Ａ  Ｆｒａｍｅｗｏｒｋ  ｆｏｒ  Ｏｖｅｒｌａｙｉｎｇ  Ｖｉｒｔｕａｌｉｚｅｄ  Ｌａｙｅｒ  ２  Ｎｅｔｗｏｒｋｓ  ｏｖｅｒ  Ｌａｙｅｒ  ３  Ｎｅｔｗｏｒｋｓ，ＩＥＴＦに記載されている。
【０１０９】
いくつかの実施形態では、ソフトウェアスイッチ１０３５のポートには、ポートで受け取った着信及び発信パケットに対する特別な入力／出力操作を実現する、１つ又は複数のモジュールへの１つ又は複数の関数呼び出しが含まれる。これらの関数呼び出しの１つはファイアウォールエンジン１０４０へのもので、ファイアウォールエンジンは、いくつかの実施形態では、着信及び／又は発信パケットに（即ち、ＶＭの１つのためのホストによって受信されたパケットに、又はＶＭの１つによって送信されたパケットに）ファイアウォール操作を行う。そのようなＩ／Ｏ操作の他の例としては、米国特許出願第１４／０７０，３６０号明細書（特許文献１）に記載のような、ＡＲＰブロードキャスト抑制操作及びＤＨＣＰブロードキャスト抑制操作が挙げられる。本発明のいくつかの実施形態では、他のＩ／Ｏ操作を、そのように実現することができる。そのような関数呼び出しのスタックを実現することによって、いくつかの実施形態では、着信及び／又は発信パケットへの一連のＩ／Ｏ操作を実現する。また、いくつかの実施形態では、データパス（例えば、ＶＮＩＣ等）における他のモジュールが、Ｉ／Ｏ関数呼び出し操作（例えばファイアウォール関数呼び出し）を実現する。
【０１１０】
上述のように、ファイアウォールエンジン１０４０を、着信又は発信パケットのために（例えば、ソフトウェアスイッチ１０３５のポート１０２５又は１０３０によって）呼び出して、そのようなパケットが、ＶＭに送信されるべきか、又はＶＭから送信されるべきかを、ＶＭのＶＮＩＣのためにＶＮＩＣレベルファイアウォールデータストレージ１０４５に格納されるＶＮＩＣレベルファイアウォール規則に基づいてチェックすることができる。いくつかの実施形態では、ファイアウォールエンジン１０４０を、（例えば、着信パケットのための）物理ＮＩＣドライバに接続するポートによって呼び出すことができる。
【０１１１】
ファイアウォールエンジンは、受信されたパケットの識別子（例えば、パケットヘッダから抽出された５個タプル識別子）を、着信パケットの宛先又は発信パケットの発信元であるＶＮＩＣのＶＮＩＣデータストレージ１０４５に格納されたファイアウォール規則の関連する識別子（例えば、５個タプル識別子）に照合することを試みる。つまり、規則をパケットに照合するために、ファイアウォールエンジンは、パケットのためのｎ個データタプルを特定し（例えば、パケットのヘッダからこれらのタプルを抽出し）、特定されたタプルを各規則のｎ個データタプルと比較する。
【０１１２】
ファイアウォール規則発行器１０５０は、ホストレベルのファイアウォール規則データストレージ１０６５に格納されたホストレベル適用先ファイアウォール規則に基づいて、ＶＮＩＣレベルファイアウォール規則データストレージ１０４５にポピュレートし、更新する。いくつかの実施形態では、発行器が、ホストレベルファイアウォールデータストレージ１０６５における新たなファイアウォール規則、又は更新されたファイアウォール規則のそれぞれの適用先識別子を調べ、その規則がホスト上で現在インスタンス化されているＶＭの１つのＶＮＩＣに関連しているか否かを判定する。発行器１０５０が、１つのそのようなＶＮＩＣに関連する新規な又は更新された規則を特定した場合は常に、その発行器が、新規な規則又は更新された規則をＶＮＩＣのファイアウォール規則テーブル１０４５にプッシュする。この規則をＶＮＩＣのファイアウォール規則テーブルにプッシュする際、発行エンジンは、ファイアウォール規則から適用先識別子を除去し、その後そのファイアウォール規則をＶＮＩＣのファイアウォール規則テーブルに格納する。
【０１１３】
ファイアウォールエージェント１０５５は、ホスト−コントローラインタフェース１０６０及びネットワーク（図示せず）を介してコントローラからそれが受け取ったホストレベル適用先ファイアウォール規則に基づいて、ホストレベルファイアウォール規則データストレージ１０６５にポピュレートし、更新する。上述のように、いくつかの実施形態では、コントローラが、ホストが現在実行しているＶＭのためのものだけでなく、後の時点でホストが実行する可能性のあるＶＭのための適用先ファイアウォール規則を各ホストにプッシュする。また、上述のように、ホストはコンピュートクラスタの一部として動作してもよく、かつ、いくつかの実施形態ではコンピュートクラスタの全てのホストがテナント又は論理ネットワークの組をサポートするべく構成され、それによって、テナント又は論理ネットワークの１つのためのＶＭが、１つのそのようなホスト上でインスタンス化されるか又はそこに移動したとき、ホスト上のそのＶＭを構成するために必要となるデータのいくつか又は全てがそのホスト上に既に存在していることになる。そのような実施形態のいくつかでは、コンピュートクラスタにおける各ホストが、適用先ファイアウォール規則の同じ組を受け取り、それによって各ホストが、そのホスト上でインスタンス化されるか又はそこに移動される可能性のあるあらゆるＶＭのためのＶＮＩＣファイアウォール規則テーブルを、それ自身の上で（コントローラへと行くことなく）構成することが可能となる。
【０１１４】
いくつかの実施形態では、ソフトウェアスイッチ１０３５、ファイアウォールエンジン１０４０、及びＶＮＩＣレベルファイアウォール規則テーブル１０４５は、カーネル空間において動作し、発行器１０５０、ファイアウォールエージェント１０５５，ホストレベルファイアウォール規則テーブル１０６５、ホスト−コントローラインタフェース１０６０、及びＶＭ１００５、１０１０はユーザ空間で動作する。カーネル空間で動作することによって、ファイアウォールエンジン１０４０は、それがユーザ空間で動作した場合より高速で動作する。
【０１１５】
いくつかの実施形態のホスト１００２の動作を、以下、図１１乃至図１３を参照して説明する。図１１は、いくつかの実施形態において、ＶＮＩＣレベルファイアウォール規則テーブル１０４５を維持するために発行器１０５０が行うプロセス１１００を示す。発行器は、ホストレベルファイアウォール規則テーブル１０６５が、コントローラからの規則の組の追加及び／又は改変を受け取る毎に、このプロセスを行う。つまり、プロセス１１００は、ファイアウォールエージェント１０５５が規則テーブル１０６５に新たな規則の組を格納し、規則テーブル１０６５から規則の組を除去し、及び／又は規則テーブル１０６５における以前の規則の組を改変する毎に行われる。
【０１１６】
図１１に示すように、プロセス１１００は、初めに（１１０５で）、ホストファイアウォールテーブル１０６５の更新の通知を受け取る。この更新は、テーブル１０６５に１つ又は複数の規則を追加するものか、テーブル１０６５から１つ又は複数の規則を除去するものか、又はテーブル１０６５における１つ又は複数の規則を改変するものであり得る。この更新によって影響を受けるすべての規則を集めたものを、以下、受け取った更新済み規則の組と称する。いくつかの実施形態において、その通知は、データストレージ１０６５からのコールバックの形態である。他の実施形態では、その通知は、ファイアウォールエージェント１０５５によって提供される。更に他の実施形態では、発行器がデータストレージ１０６５を定期的にチェックする。
【０１１７】
次に、１１１０で、プロセス１１００は、更新済み規則の組の中の規則の１つを選択する。次にプロセスは、その選択された規則に関連付けられた実施ポイントを（１１１５で）選択する。選択された規則が新たに受け取った規則であるとき、選択された実施ポイントは、１１１０で選択された規則の適用先識別子によって特定された実施ポイントのいずれか１つであり得る。選択された規則がホストのファイアウォール規則テーブル１０６５から除去済みの規則であるときは、選択された実施ポイントは、除去された規則の適用先識別子によって特定された実施ポイントのいずれかであり得る。選択された規則が以前に格納されたもので、かつその改変された実施ポイントの組を有するときは、１１１５で選択された実施ポイントは、選択された規則の更新によって追加済み又は除去済みの実施ポイントの１つである。
【０１１８】
１１１５の後、プロセスは、いずれかのＶＮＩＣレベル規則が、ＶＮＩＣレベルファイアウォールテーブル１０４５に追加済みであるか、そこから除去済みであるか、又はそこで更新済みであるかを（１１２０で）判定する。つまり、１１２０でプロセスは、選択された実施ポイント（即ち、１１１５で選択された実施ポイント）が、ホスト上で実行されるＶＭのＶＮＩＣに対応するか否かを判定する。対応していない場合には、プロセスは、後述する１１３０に移行する。対応している場合には、プロセスは、更新を、選択された実施ポイントに対応するＶＮＩＣのファイアウォール規則データストレージ１０４５に（１１２５で）プッシュする。この更新は、選択された規則が新たな規則であるとき、又は実施ポイントとしてＶＮＩＣを今や含む更新された規則であるときには、ファイアウォール規則をＶＮＩＣのデータストレージ１０４５に追加する。この更新は、選択された規則が除去されている規則であるとき、又は実施ポイントとしてＶＮＩＣをもはや含んでいない更新された規則であるときには、ＶＮＩＣのデータストレージ１０４５から以前のファイアウォール規則を除去する。ファイアウォール規則をＶＮＩＣのデータストレージ１０４５に追加する際、プロセス１１００はファイアウォール規則から適用先タプルを（１０２５で）除去し、その後このファイアウォール規則をデータストレージ１０４５に追加する。
【０１１９】
１１２５から、プロセスは１１３０に移行する。１１３０において、プロセスは、１１１０で選択された規則についてそれが調べなければならない実施ポイントの全てをそのプロセスが検査したか否かを判定する。選択された規則が、追加するべき新たな規則であるとき、又は除去すべき以前の規則であるときには、プロセスは規則の適用先識別子で指定された実施ポイントの全てを調べなればならない。他方、選択された規則が、以前の規則に対する更新であるときには、プロセスは、規則に追加された新たな実施ポイントの全て及び規則から除去された以前の実施ポイントの全てを調べなければならない。
【０１２０】
プロセスが、選択された規則について必要な実施ポイントの全てをまだ調べていないと（１１３０で）判定したときには、プロセスは１１１５に戻り、それが調べなければならない選択された規則の別の実施ポイントを選択する。次にプロセスは、それ以降の操作を反復して、プロセスがいずれかのＶＮＩＣレベル規則を変更しなければならないか否かを判定し、変更しなければならない場合には、ＶＮＩＣレベル規則を変更する。
【０１２１】
プロセスが、選択された規則について必要な実施ポイントの全てを調べたと（１１３０で）判定したときには、プロセスは、それが更新された規則の組によって指定される規則の全てを調べたか否かを（１１３５で）判定する。必要な実施ポイントの全てを調べていないと判定したときには、プロセスは１１１０に戻り、更新された規則の組によって指定された規則の別の１つを選択し、次にこの選択された規則についてその操作１１１５−１１３０を反復する。プロセスは、更新された規則の組によって指定される規則の全てを調べたと（１１３５で）判定したときには、プロセスは終了する。
【０１２２】
図１２は、いくつかの実施形態において、ホストが、ＶＭがそのホスト上でインスタンス化されたときＶＮＩＣレベルファイアウォールテーブルを構成するために行うヘッドレスプロセス１２００を示す。このプロセスは、テーブルの構成中にコントローラを参照することなくＶＮＩＣレベルファイアウォールテーブルを構成するので、ヘッドレスプロセスと称する。プロセスは、ホスト上で、ＶＭのインスタンス化の一部として行われるか、又はＶＭをインスタンス化するためのプロセスの後に行われる。図に示すように、プロセスは初めに（１２０５で）ＶＭをインスタンス化し、ＶＭのＶＮＩＣのためのＶＮＩＣレベルテーブルを指定する。次に、プロセスは、ホストファイアウォール規則テーブル１０６５における１つのファイアウォール規則を（１２１０で）選択する。
【０１２３】
プロセスは、選択された規則が、インスタンス化されたＶＭのＶＮＩＣに適用可能であるか否かを（１２１５で）判定する。つまり、プロセスは、適用先識別子が、選択されたファイアウォール規則の実施ポイントの１つとしての選択された規則識別子を特定しているか否かを判定する。選択されたファイアウォール規則がインスタンス化されたＶＭのＶＮＩＣに適用可能ではないとき（規則の適用先識別子がこのＶＮＩＣを特定していないとき）、プロセスは、以下に説明する１２２５に移行する。
【０１２４】
選択されたファイアウォール規則の適用先識別子が、インスタンス化されたＶＭのＶＮＩＣを特定するとき、プロセスは選択されたファイアウォール規則をＶＮＩＶのファイアウォールデータストレージ１０４５に（１２２０で）追加する。この選択されたファイアウォール規則をＶＮＩＣレベルファイアウォールデータストレージ１０４５に追加する際、プロセス１２００はファイアウォール規則から適用先タプルを除去する。１２２０から、プロセスは１２２５に移行する。
【０１２５】
１２２５で、プロセスはホストレベルファイアウォール規則データストレージ１０６５における適用先規則の全てを調べたか否かを判定する。全てを調べていない場合には、プロセスは１２１０に戻り，別の規則を選択し、この選択された規則についてそれ以降の操作を反復する。プロセスが、適用先規則の全てを調べたと（１２２５で）判定したときには、プロセスは終了する。
【０１２６】
図１３は、いくつかの実施形態において、ソフトウェアスイッチ１０３５のポートが、それが受け取ったパケットについてファイアウォール規則を実施するために行うプロセス１３００を示す。いくつかの実施形態では、ポートが、着信パケットと発信パケットの両方のためにこの操作を行う。他の実施形態では、ポートが、着信パケットのみか、発信パケットのみのいずれかのためにこの操作を行う。更に他の実施形態では、スイッチのポートの１つ（例えば、ＶＭのＶＮＩＣに接続しているポート）が、発信パケットのためにこの操作を行い、別のポート（例えばＮＩＣドライバを介して、例えばソフトウェアスイッチを物理ＮＩＣに接続するポート）が、着信パケットのためにこの操作を行う。着信パケットと発信パケットの両方をチェックすることによって、プロセス１３００は、パケットの発信元及び宛先の両方において適用先ファイアウォール規則を実施することができる。
【０１２７】
図１３に示すように、プロセスは初めに（１３０５で）パケットを受け取る。次にプロセスは、受け取ったパケットについてファイアウォールチェックを行うべきか否かを（１３１０で）判定する。いくつかの実施形態では、プロセスが、発信パケットの発信元か着信パケットの宛先であるＶＮＩＣに対してファイアウォール機能がイネーブルされたか否かを判定することによってこの判定を行う。ファイアウォール機能がイネーブルされていない場合には、プロセスは終了する。
【０１２８】
イネーブルされている場合には、プロセスは、以前に、受け取ったパケットとして同一のファイアウォール属性タプルを有するパケットのためにファイアウォール規則をチェックしていたか否かを（１３１５で）判定する。ファイアウォールエンジンは、パケットヘッダから取り出されたｎ個タプル（例えば、パケットの５個タプル：発信元、発信元ポート、宛先、宛先ポート、及びサービス）に基づいて、パケットのためのファイアウォール規則を特定する。２つのパケットは、それらのｎ個タプルが一致したとき同一のファイアウォール属性を有する。後述するように、いくつかの実施形態では、プロセス１３００は、特定のパケットに対して、そのパケットのためのファイアウォール規則を特定した後に行うアクションを格納し、したがってプロセスは、その後にも、その特定のパケットと同一のパケットに対してこのアクションを行うことができる。しかし、他の実施形態は、行ったアクションを格納しない。これらの実施形態では、プロセスは１３１５においてそのチェックを行わず、パケットに対してファイアウォールチェックを行わなければならないと（１３１０で）判定したときには、プロセスは１３１０から１３２５に移行する。
【０１２９】
プロセスが、ある同一パケットのためのファイアウォール規則を以前にチェックしたと（１３１５で）判定したときには、プロセスは１３２０に移行し、以前のチェックの結果であった操作（例えば、拒否又は許可）を行い、その後終了する。一方、プロセスが、ある同一パケットのためのファイアウォール規則を以前にチェックしていないと（１３１５で）判定したときには、プロセスは受け取ったパケット（即ち、１３０５で受け取ったパケット）のｎ個タプルをファイアウォールエンジンに渡す。ｎ個タプルでは、ファイアウォールエンジンは、発信パケットの発信元か、着信パケットの宛先であるＶＮＩＣレベルファイアウォールテーブル１０４５をチェックし、何のアクションが受け取ったパケットに対して行われる必要があるかを判定する。いくつかの実施形態では、ＶＮＩＣレベルファイアウォールテーブルはキャッチオール規則を有する。このことで、各パケットが、ファイアウォールテーブルの他のいずれの規則とも一致しないときに、少なくとも１つの規則（即ちキャッチオール規則）と一致することを確実にする。また、いくつかの実施形態では、ファイアウォール規則テーブルにおける規則が階層的に配置され、規則チェックがその階層に従って行われて、パケットが、２以上の規則と一致し得るときに下位の優先度の規則と一致する前に高位の優先度の規則に一致することを確実にする。
【０１３０】
１３２５の後、プロセスは１３３０に移行し、そこでファイアウォールエンジンからのコールバックを受け取るまでプロセスは待機する。いくつかの実施形態では、ファイアウォールエンジンのコールバックは、そのパケットの通過が許可されるべきか、又はそれが拒否されるべきかのいずれかを指定する。プロセスがエンジンのコールバックを受け取ったとき、プロセスは１３３５に移行し、エンジンのコールバックに従ってアクションを行う。つまり、いくつかの実施形態では、プロセスは、コールバックがパケットが拒否されるべきことを指定しているときにはパケットを拒否する。一方、コールバックが、パケットは許可されるべきと指定しているときは、プロセスがパケットの通過を許可する。いくつかの実施形態では、コールバックがパケットが通過を許可されるべきと指定しているときに、パケットを許可しないこともある。他の関数がポートにパケットを拒否することを指示していることがあるからである。
【０１３１】
１３３５では、プロセスは、ファイアウォールエンジンが指定した操作の格納も行い、したがってこの操作は、その後、ポートがその受け取ったパケットと同一のパケットを受け取ったときに、１３２０で用いることができる。１３３５の後、プロセスは終了する。
【０１３２】
ＩＩＩ．ネットワーク制御システム
【０１３３】
図１４は、本発明のいくつかの実施形態のネットワーク制御システム１４００を示す。図に示すように、ネットワーク制御システム１４００は、複数のコントローラ１４０５、複数のホスト１４１０、及び複数の管理されていないサードパーティの機器１４１５、並びにネットワーク１４２０を備える。ネットワークを通して、コントローラ、ホスト、及びサードパーティの機器は、通信するように接続されている。これらの実施形態では、ネットワーク制御システムはデータセンターにおいて実現されており、ネットワーク１４２０は、種々の構成部分を接続するネットワーク構造（例えば、スイッチ、ルータ、配線等）である。
【０１３４】
いくつかの実施形態では、各ホスト１４１０は、その上で実行される１つ又は複数のＶＭを有する。いくつかの実施形態ではホストは、図１０のホスト１００２に類似したものであり、したがってファイアウォール実施アーキテクチャ１０００を有する。サードパーティの機器は、サードパーティのファイアウォールデバイス等の管理されていない機器である。
【０１３５】
いくつかの実施形態では、各コントローラ１４００は、図５のコントローラ５００に類似している。各コントローラは、適用先ファイアウォール規則及び非適用先ファイアウォール規則の構成と、ホスト及びサードパーティの機器へのその分配を担っている。いくつかの実施形態では、ファイアウォール規則構成及び分配作業負荷を分散させるために複数のコントローラを用いる。例えば、いくつかの実施形態では、第１のコントローラが第１の論理ネットワークの組のための第１のファイアウォール規則の組の処理を担っており、第２のコントローラが、第２の論理ネットワークの組のための第２のファイアウォール規則の処理を担っており、第３のコントローラが、第３の論理ネットワークの組のための第３のファイアウォール規則の処理を担っており、以下同様である。しかし、他の実施形態は、ファイアウォール規則を構成し、それを全てのホスト及びサードパーティの機器に分配するためにただ１つのコントローラを用いる。
【０１３６】
図１５は、いくつかの実施形態のネットワーク制御システム１５００の別の図を示す。この図に示すように、コンピュート仮想化とネットワーク仮想化の両方を行うためにホストを仮想化する、ホストされるシステム内のコンピュート仮想化レイヤ１５１５とネットワーク仮想化レイヤ１５２０とをそれぞれ制御するために、ネットワーク制御システム１５００は、第１及び第２のコントローラの組１５０５及び１５１０を用いる。
【０１３７】
この例では、データセンター１５５０が２つのクラスタ１５５５及び１５６０を含み、各クラスタは、２つのホストコンピュータ、及び各ホストコンピュータ上で実行される２つのＶＭを有する。更に、ホストのソフトウェアスイッチ（図示せず）は、それぞれが１つのテナントの５つのＶＭと他のテナントの３つのＶＭとを接続する２つの論理スイッチを実現するべく仮想化される。
【０１３８】
いくつかの実施形態では、ネットワーク仮想化を管理する第２のコントローラの組が、適用先ファイアウォールの構成及び分配も提供する。他の実施形態では、第３のコントローラの組がファイアウォールの構成と分配を提供するために用いられ、第１及び第２のコントローラの組は、コンピュータ及びネットワーク仮想化を管理する。更に他の実施形態では、同一のコントローラの組が、コンピュータ仮想化、ネットワーク仮想化、及びファイアウォールの構成／分配を管理する。
【０１３９】
ＩＶ．電子システム
【０１４０】
上述の特徴及び用途の多くは、コンピュータが読み取り可能なストレージ媒体（コンピュータ読み取り可能媒体とも称する）上に記録された命令セットとして指定されたソフトウェアプロセスとして実現される。これらの命令が、１つ又は複数の処理ユニット（例えば、１つ又は複数のプロセッサ、プロセッサのコア、又は他の処理ユニット）によって実行されるとき、命令は処理ユニットに命令に示されたアクションを行わせる。コンピュータ読み取り可能媒体の例としては、以下に限定されないが、ＣＤ−ＲＯＭ、フラッシュドライブ、ＲＡＭチップ、ハードドライブ、ＥＰＲＯＭ等が挙げられる。コンピュータ読み取り可能媒体には、無線又は有線の接続を通して伝えられる搬送波及び電子信号は含まれない。
【０１４１】
本明細書において、用語「ソフトウェア」は、プロセッサによる処理のためにメモリに読み出すことができる磁気ストレージに格納されたアプリケーション、又は読み取り専用メモリに存在するファームウェアを含む意味である。また、いくつかの実施形態では、複数のソフトウェアの発明を、より大きなプログラムのサブ部分として実現し、残りを独立したソフトウェアの発明として実現することができる。いくつかの実施形態では、複数のソフトウェアの発明を、個別のプログラムとしても実現することができる。最後に、本明細書に記載のソフトウェア発明を全体で実現する個々のプログラムの任意の組み合わせは、本発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムは、インストールされて１つ又は複数の電子システム上で動作するとき、実行されてそのソフトウェアプログラムの動作を行う、１つ又は複数の特定のマシンインプリメンテーションを定める。
【０１４２】
図１６は、本発明のいくつかの実施形態が実現される電子システムを概念的に示す。電子システム１６００は、上述の制御、仮想化、又はオペレーティングシステムのアプリケーションのいずれかを実行するために用いることができる。電子システム１６００は、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ等）、電話機、ＰＤＡ、又は他のあらゆる種類の電子デバイスであってよい。そのような電子システムは、種々のコンピュータ読み取り可能媒体と、他の各種コンピュータ読み取り可能媒体のためのインタフェースとを備える。電子システム１６００は、バス１６０５、処理ユニット１６１０、システムメモリ１６２５、読み取り専用メモリ１６３０、永続的ストレージデバイス１６３５、入力デバイス１６４０、及び出力デバイス１６４５を備える。
【０１４３】
バス１６０５は、電子システム１６００の多数の内部デバイスと通信するように接続するシステムバス、周辺バス、及びチップセットバスの全てを表す。例えば、バス１６０５は、処理ユニット１６１０と、読み取り専用メモリ１６３０、システムメモリ１６２５、及び永続的ストレージデバイス１６３５とを通信するように接続する。
【０１４４】
これらの種々のメモリユニットから、処理ユニット１６０は実行すべき命令と処理すべきデータを取り出して、本発明のプロセスを実行する。異なる実施形態では、処理ユニットは、１つのプロセッサ又は１つのマルチコアのプロセッサでもよい。
【０１４５】
読み取り専用メモリ（ＲＯＭ）１６３０は、処理ユニット１６１０及び電子システムの他のモジュールによって必要とされる静的データと命令を格納する。一方、永続的ストレージデバイス１６３５は、読み取り−書き込みメモリデバイスである。このデバイスは、電子システム１６００がオフのときでも、命令とデータを格納する不揮発性メモリユニットである。本発明のいくつかの実施形態は、大容量ストレージデバイス（例えば、磁気又は光ディスク及びそれに対応するディスクドライブ）を、永続的ストレージデバイス１６３５として用いる。
【０１４６】
他の実施形態は、着脱可能なストレージデバイス（例えば、フロッピー（登録商標）ディスク、フラッシュドライブ等）を永続的ストレージデバイスとして用いる。永続的ストレージデバイス１６３５と同様に、システムメモリ１６２５は、読み取り−書き込みメモリデバイスである。しかし、ストレージデバイス１６３５とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み取り−書き込みメモリである。システムメモリは、実行時にプロセッサが必要とする命令とデータのいくつかを格納する。いくつかの実施形態では、発明のプロセスはシステムメモリ１６２５、永続的ストレージデバイス１６３５、及び／又は読み取り専用メモリ１６３０に格納される。いくつかの実施形態のプロセスを実行するために、処理ユニット１６１０は、これらの種々のメモリユニットから実行するべき命令と処理すべきデータを取り出す。
【０１４７】
バス１６０５は、入力デバイス１６４０と出力デバイス１６４５にも接続している。入力デバイスによって、ユーザが電子システムと情報をやり取りし、電子システムへのコマンドを選択することが可能になる。入力デバイス１６４０は、英数字キーボード及びポインティングデバイス（「カーソル制御デバイス」とも称する）を含む。出力デバイス１６４５は、電子システムによって生成されるイメージを表示する。出力デバイスは、プリンタと、例えば陰極管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）等のディスプレイデバイスとを含む。いくつかの実施形態には、入力デバイスと出力デバイスの両方として機能する、タッチスクリーンのようなデバイスが含まれる。
【０１４８】
最後に、図１６に示すように、バス１６０５はまた、ネットワークアダプタ（図示せず）を介して電子システム１６００をネットワーク１６６５に接続する。このようにして、コンピュータは、コンピュータのネットワーク（ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、又はインターネット、又はインターネットのようなネットワークのネットワーク）の一部となり得る。電子システム１６００の構成要素のいずれか又は全てを、本発明とともに用いることができる。
【０１４９】
いくつかの実施形態は、マイクロプロセッサ、機械に読み取り可能な又はコンピュータに読み取り可能な媒体（コンピュータ読み取り可能ストレージ媒体、機械読み取り可能ストレージ媒体とも称する）にコンピュータプログラム命令を格納するストレージ又はメモリ等の電子部品を含む。そのようなコンピュータ読み取り可能媒体のいくつかの例として、ＲＡＭ、ＲＯＭ、読み取り専用ディスク（ＣＤ−ＲＯＭ）、書き込み可能コンパクトディスク（ＣＤ−Ｒ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）、読み取り専用デジタル多用途ディスク（例えば、ＤＶＤ−ＲＯＭ、二層ＤＶＤ−ＲＯＭ）、種々の書き込み可能／書き換え可能ＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等）、フラッシュメモリ（例えば、ＳＤカード、ミニＳＤカード、マイクロＳＤカード等）、磁気及び／又はソリッドステートハードドライブ、読み取り専用書き込み可能Ｂｌｕ−Ｒａｙ（登録商標）ディスク、超高密度光ディスク、他のあらゆる光又は磁気媒体、及びフロッピー（登録商標）ディスクが挙げられる。コンピュータ読み取り可能媒体は、少なくとも１つの処理ユニットによって実行可能なコンピュータプログラムを格納することができ、種々の操作を行うための命令セットを含む。コンピュータプログラム又はコンピュータコードの例として、例えばコンパイラによって作り出されるマシンコード、及びコンピュータ、電子部品、又はインタプリタを用いるマイクロプロセッサによって実行される高レベルコードを含むファイルが挙げられる。
【０１５０】
上述の議論は主としてソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを参照しているが、いくつかの実施形態は、１つ又は複数の集積回路、例えば特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）等によって行われる。いくつかの実施形態では、そのような集積回路が、回路自体に格納された命令を実行する。
【０１５１】
本明細書で用いられる、用語「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」は全て、電子技術又は他の技術に基づくデバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的では、用語「表示」又は「表示すること」とは、電子デバイス上への表示を意味する。本明細書で用いられる、用語「コンピュータ読み取り可能媒体」、「コンピュータ読み取り可能媒体ら」、及び「機械読み取り可能媒体」は、コンピュータに読み取り可能な形態で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、無線信号、配線上のダウンロード信号、及び他のあらゆる短期的又は一時的な信号を除外する。
【０１５２】
本発明を多数の特定の細部を参照して説明してきたが、本発明の精神から逸脱することなく他の特定の形態で実施することが可能であることを、当業者は認識されよう。加えて、多数の図面（図６乃至８及び図１１乃至１３を含む）は、プロセスを概念的に示している。これらのプロセスの特定の操作は、図示又は説明した正確な順序で行われなくてもよい。特定の操作は、１つの連続的な一連の操作で行われなくてもよく、異なる実施形態では、異なる特定の操作が行われてもよい。更に、前記プロセスは、いくつかのサブプロセスを用いて、又はより大きいマクロプロセスの一部として実現することもできる。
【０１５３】
また、いくつかの実施形態は、コントローラが、ホストレベル又はコンピュートクラスタレベルのデータストレージに分配するためのファイアウォール規則の組を集約し、その後、その規則の組を、異なるクラスタの異なるホスト又は異なるホストの組に分配する。しかし、他の実施形態は、異なる形で規則を抽出する。例えば、いくつかの実施形態では、規則抽出器が、初めに規則を異なる論理ネットワーク構成体（例えば、論理スイッチ、論理ルータ、論理ネットワーク等）のための異なる組にグループ化する。これらの規則の組を分配するために、コントローラ（例えば規則抽出器又は規則分配器）は、次に異なる論理ネットワーク構成体のための規則の組を、論理ネットワーク構成体を実現する異なるホスト又はコンピュータクラスタに分配する。上述の点に鑑みれば、本発明は上記で例示した細部に限定されるのでなく、請求項の記載によって定められるものであることを当業者は理解されよう。
【図１】
2015156624.tif 000003
【図２】
2015156624.tif 000004
【図３】
2015156624.tif 000005
【図４】
2015156624.tif 000006
【図５】
2015156624.tif 000007
【図６】
2015156624.tif 000008
【図７】
2015156624.tif 000009
【図８】
2015156624.tif 000010
【図９】
2015156624.tif 000011
【図１０】
2015156624.tif 000012
【図１１】
2015156624.tif 000013
【図１２】
2015156624.tif 000014
【図１３】
2015156624.tif 000015
【図１４】
2015156624.tif 000016
【図１５】
2015156624.tif 000017
【図１６】
2015156624.tif 000018
【外国語明細書】
2015156624000001.pdf