以下の発明の詳細な説明では、本発明の多くの細部、例示、及び実施形態について記載し、詳述する。しかし、本発明は、ここに記載された実施形態に限定されず、本発明はここに詳述する特定の細部及び例示を含めずに実施可能であることは当業者には明白、自明であろう。
本発明のいくつかの実施形態は、ファイアウォール規則を指定するための新規な方法を提供する。いくつかの実施形態では、前記方法は、特定のファイアウォール規則のために、その特定のファイアウォールが実施されるべきネットワークノードの位置の組(以下、実施ポイントの組と称する)を指定する能力を提供する。この能力を提供するため、いくつかの実施形態の前記方法は、ファイアウォール規則に追加のタプル(以下、適用先タプルと称する)を追加する。この追加された適用先タプルは、そのファイアウォール規則が適用(即ち実施)されなければならない実施ポイントの組をリストにしている。
図1は、そのような方法を実現するコントローラ100を示す。コントローラ100により、適用先ファイアウォールを、ユーザ及び/又は自動化プロセスによって構成することが可能となる。このコントローラはまた、そのコントローラによって管理される複数のネットワークノードを含むネットワーク(図示せず)における複数のファイアウォール実施デバイス120に対し、構成された適用先ファイアウォール規則を分配する。図1に示すように、コントローラは、ファイアウォール規則構成器105、ファイアウォールデータストレージ110、及びファイアウォール規則分配器115を備える。ファイアウォール規則構成器105は、ユーザと(1つ又は複数のユーザインタフェース(UI)モジュールを介して)、又はファイアウォールプロビジョニング及び/又はネットワーク構成の一部である自動化処理とやり取りすることにより、適用先ファイアウォール規則を構成する。この構成器105は、構成された適用先規則をファイアウォール規則データストレージ110に格納する。
図1に示すように、規則構成器105は、パケットを、ファイアウォール規則及びパケットがその規則に一致したとき行うべきアクションに照合するために、n個データタプルによってデータストレージ110に各ファイアウォール規則125を指定する。本明細書では、用語「パケット」は、ネットワークにおいて送信される特定のフォーマットのビットの集合を指すものである。当業者であれば、用語パケットが、ネットワークにおいて送信される種々のフォーマットのビットの集合、例えばEthernet(登録商標)フレーム、TCPセグメント、UDPデータグラム、IPパケット等を表すために本明細書において用いられることがある、ということを理解するであろう。
図1に示す例では、n個データタプルが、発信元、発信元ポート、宛先、宛先ポート、サービス、及び適用先識別子の、6個データタプルである。これらの識別子の1つ又は複数が、全ての可能な値が適用可能であることを表すワイルドカード値によって指定されてもよい。いくつかの実施形態では、L3レベルファイアウォール規則のためには発信元及び宛先識別子がIPアドレスによって指定されるとともに、L2レベルファイアウォール規則のためには、それらはMACアドレスによって指定される。後で更に説明するように、適用先識別子は、ファイアウォール規則が適用(即ち実施)されなければならない実施ポイントの組を指定する。
パケットが少なくとも1つのファイアウォール規則に一致することを確実にするため、規則構成器105は、各パケットがファイアウォールテーブル内の他のいずれの規則にも一致しない場合にも少なくとも1つの規則に一致することを確実にするキャッチオールファイアウォール規則を、少なくとも1つ、データストレージ110において指定する。また、パケットが複数の規則と一致し得る状況に対処するため、いくつかの実施形態では、規則構成器が、ストレージ中でより高い優先度の規則がより低い優先度の規則より先に現れるのを確実にする優先度階層に従って、規則をデータストレージ110に配置する。しかし、適用先識別子を用いて、異なる規則について異なる実施ノードを指定することが可能であるならば、規則構成器(又は規則構成器を介して操作するユーザ)は、異なる実施ノードに送信されるべきファイアウォール規則の優先度の順番を処理する必要はない。
図1とともに、以下に説明する他の図に示す例では、ファイアウォール規則のための発信元及び宛先ポート値が、ワイルドカード値として指定される。当業者であれば、全てのファイアウォール規則についてこのようにする必要はないことを理解されよう。適用先ファイアウォール規則は、従来のポート値、例えばポート20、80、143等によって指定することが可能である。また、図面に示す例では、頭字語WS、AS、及びDBSは、ウェブサーバ、アプリケーションサーバ、及びデータベースサーバを表す。これらのサーバは、関連するネットワークアドレス(例えば、IPアドレス)によって指定することができる。また、これらの図における例示されたファイアウォール規則は、システムの実際のファイアウォール規則を表すのでなく、ファイアウォール規則のイメージを単に概念的に伝えることを意図したものである。
ファイアウォールエンジン(図示せず)がパケットに一致するファイアウォール規則を特定したとき、エンジンは、規則のアクション識別子によって指定された操作をパケットに対して行う。いくつかの実施形態では、アクション識別子が、パケットを拒否すべきか、通過を許可するかを指定する。他の実施形態では、拒否及び許可処理の代わりに、又は拒否及び許可処理とともに、他の処理が指定されてもよい。
上述のように、適用先識別子は、ファイアウォール規則が適用されなければならない実施ポイントの組を指定する。いくつかの実施形態では、実施ポイントは、(1)VNIC、VM,ホスト、又は他のコンピュート構成体(コンピュートクラスタ、データセンター等)、(2)ネットワーク要素、例えば物理フォワード処理要素(例えば、物理スイッチ、物理ルータ等)、論理フォワード処理要素(例えば、論理スイッチ、論理ルータ等)、他の管理された機器、管理されていないサードパーティの機器(例えば、サードパーティのファイアウォール)、及び/又はそれらの要素の組み合わせ、及び/又は(3)1つ又は複数のVNIC、VM,ホスト、コンピュート構成体、及び/又はネットワーク構成体の組によって形成されるセキュリティグループによって定めることができる。管理されたネットワークデバイス及び管理されていないネットワークデバイスの両方によって適用先識別子を指定できるようにすることにより、ファイアウォール構成器105は、管理されたネットワークデバイス及び管理されていないネットワークデバイスの両方を含むネットワークのためのファイアウォール規則定義の全体を管理する1つの統合されたインタフェースを提供する。
いくつかの実施形態では、適用先タプルを、その適用先タプルについての全ての可能な値(例えば全てのVNIC)を表すワイルドカード値に設定することができる。後に更に説明するように、いくつかの実施形態において適用先識別子は、動的に改変可能な構成体を参照可能であり、このことにより、コントローラが更に、動的に改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置についてファイアウォール規則を動的に調節することが可能になる。
図1に示すように、コントローラは、適用先ファイアウォール規則を、ネットワークにおける種々のファイアウォール実施デバイス120に分配する。いくつかの実施形態では、ファイアウォール実施デバイスは、その上で複数のVMを実行するホストを含む。そのようなホストに加えて、又はそのようなホストの代わりに、いくつかの実施形態のファイアウォール実施デバイスは、他のタイプのファイアウォール実施デバイス、例えば物理フォワード処理要素、サービスノード(例えば、管理された専用マシン又は管理されたVM)、エッジ機器(例えば、トップオブラック・スイッチ)、及びサードパーティの機器等を含む。
いくつかの実施形態では、コントローラは、適用先ファイアウォール規則を、(ファイアウォール規則に関連する実施ポイントの組を指定する)適用先タプルを有するいくつかノードに分配するとともに、他のファイアウォール規則を、適用先タプルを有していない他のノードに分配する。例えば、いくつかの実施形態では、前記方法は、適用先ファイアウォール規則を、1つ又は複数の実行されているVMを有するホストに分配するとともに、非適用先ファイアウォール規則を、適用先ファイアウォール規則を処理できない1つ又は複数のサードパーティの機器に分配する。しかし、他の実施形態では、前記方法は、いくつか又は全てのサードパーティの機器に、これらの機器が適用先ファイアウォール規則を処理可能なので、適用先ファイアウォール規則を分配する。
ファイアウォール実施デバイス120は、異なる実施形態では異なるタイプのエンドノードを含み得る1つ又は複数のデータエンドノード135に接続する。そのようなデータエンドノードの例として、VM及び非VMのアドレス指定可能なノード(例えば、ボリュームマウンタ(iSCSIマウンタ、NFSマウンタ等)、VMマイグレータ(例えば、VMware Inc.のESXハイパーバイザで用いられるvMotionモジュール)、及びハイパーバイザカーネルネットワークインタフェース(例えば、VMware Inc.のvmknic)等が挙げられる。いくつかの実施形態では、各データエンドノード、又はデータエンドノードの組に対して、ファイアウォール実施デバイス120は、受け取った適用先ファイアウォール規則に基づき、カスタムファイアウォールデータストレージ(例えば、ファイアウォール規則テーブル)を生成する。カスタムファイアウォールデータストレージを生成するために、ファイアウォール実施デバイスは、受け取った適用先ファイアウォール規則の適用先識別子を用いて、異なるカスタムファイアウォールデータストレージに格納すべきファイアウォール規則を特定する。
例えば、いくつかの実施形態では、適用先ファイアウォール規則を受け取ったマルチVMホストが、ファイアウォール規則の適用先識別子に基づいて、VMの複数のVNICに対して複数のファイアウォール規則テーブルを指定する。いくつかの実施形態では、指定されたファイアウォール規則テーブルは、もはや適用先タプルを有していない。いくつかの実施形態では、VNIC−レベルファイアウォール規則テーブルが、VNICのVMに適用可能な規則の組のみを含み、この規則の組は、ホスト上で実行される全てのVMのためにホストが格納している規則の総数より少ない。また、VNIC−レベルファイアウォール規則テーブルにおける各規則は、発信元、発信元ポート、宛先、宛先ポート、サービス、及びアクション識別子の、6個タプルによって指定される。
いくつかの実施形態では、ファイアウォール実施デバイス120は、データエンドノード135に対し、直接接続するか、又は1つ又は複数のフォワード処理要素を介して間接的に接続する。それらのデータエンドノードへの接続を介して、ファイアウォール実施デバイス120は、データエンドノードとのパケットの授受を行う。いくつかの実施形態の実施デバイス120は、受け取ったパケットの属性と、パケットの発信元又は宛先ノードのために実施デバイスが作成したカスタムファイアウォールデータストレージにおけるファイアウォール規則(例えば、ファイアウォール規則の発信元、発信元ポート、宛先、宛先ポート、及びサービス識別子からなる5個データタプルを有するもの)とを比較する。この比較に基づいて、実施デバイスはパケットに対応するファイアウォール規則を特定し、次に特定されたファイアウォール規則によって指定されたアクションを行う。
図2は、いくつかの実施形態において適用先タプルを指定するために用いられる実施ポイントのいくつかの例を示す。具体的には、この図は、いくつかの実施形態のコントローラ100によって構成され、格納された適用先ファイアウォール規則125のいくつかの例を示す。従来のように、これらの規則のそれぞれは、従来の5個タプル、即ち発信元、発信元ポート、宛先、宛先ポート、及びサービスを含み、それに加えて適用先タプル及びアクション値を含む。
図2に示す適用先タプルの例には、(1)データクラスタ205及びコンピュートクラスタ210等のコンピュート構成体、(2)物理ルータ215、論理スイッチ220、及び論理ネットワーク225等のネットワーク構成体、(3)サードパーティのネットワーク機器230、(4)セキュリティグループ235、及び(5)ワイルドカードエントリ240が含まれる。
いくつかの実施形態では、データセンターは、それぞれが1つのテナント又は複数のテナント専用であり得る複数のホストを包含する場所である。各ホストは専用の非仮想化マシンでもよく、あるいはその上で複数のVMが実行される仮想化マシンでもよい。コンピュートクラスタは、データセンターにおけるホストのグループである。図2は、それぞれ2つのVM250を実行する2つのホスト245によって形成されるコンピュートクラスタの一例である。いくつかの実施形態では、コンピュートクラスタにおける各ホストが、テナントの組をサポートするように構成され、それにより、VMがインスタンス化されるか、そのようなホストの1つに移動したとき、そのVMを構成し、ホスト上のVNIC−レベルファイアウォールデータストレージを構成するために必要なデータのいくつか又は全てがそのホスト上に既に存在するようにする。
いくつかの実施形態では、各物理フォワード処理要素(PFE)が、物理的世界に存在するフォワード処理要素である。図2は、PFEの一例として物理ルータ215を示す。そのようなPFEの例として、スイッチ、ルータ、ファイアウォール機器、ロードバランサ等が挙げられる。いくつかの実施形態では、そのような物理デバイス(スイッチ、ルータ、ファイアウォール機器、ロードバランサ等)の全てがスタンドアロンのハードウェアデバイスであるか、ホストの物理NICによって実現されるハードウェアデバイスであるか、又は共有されたホスト又は専用のホスト上で実行されるソフトウェアデバイスであり得る。
本明細書では、ソフトウェアフォワード処理要素を、物理的世界に縛られない論理構成体である論理フォワード処理要素から区別するために、物理フォワード処理要素(PFE)と称する。つまり、ソフトウェアフォワード処理要素は、物理的世界に存在し動作しているのでPFEと称し、論理フォワード処理要素は、単にユーザに提示されるフォワード処理要素の論理表現であるか、いくつかの実施形態ではプログラムである。
いくつかの実施形態では、異なるホストデバイス(例えば、異なるコンピュータ)上で実行されるソフトウェアフォワード処理要素は、同一の共有されたコンピュート及びネットワーキングリソースを用いる異なるテナント、ユーザ、部門等の異なる論理ネットワークのための、異なる論理フォワード処理要素(LFE)を実現するべく構成される。例えば、2つのホストデバイス上で実行される2つのソフトウェアフォワード処理要素は、L2スイッチング機能を果たすことができる。これらのソフトウェアスイッチのそれぞれは、それぞれ1つのエンティティのVMに接続する2つの異なる論理L2スイッチを部分的に実現できる。いくつかの実施形態では、ソフトウェアフォワード処理要素がL3ルーティング機能を提供し、他のホスト上で実行されるソフトウェアL3ルータとともに異なる論理ルータを実現するべく構成されたものであり得る。図2は、論理フォワード処理要素の一例として論理スイッチ220を示す。論理フォワード処理要素は、米国特許出願14/070,360号明細書に更に記載されており、この特許出願は参照により本明細書の一部とする。
論理ネットワークは、1つ又は複数の論理フォワード処理要素によって形成されるネットワークである。図2は、1つの論理ルータ255と3つの論理スイッチ260によって形成される論理ネットワーク225の一例を示す。論理フォワード処理要素と同様に、論理ネットワークは、ユーザに提示されるネットワークの論理表現か、いくつかの実施形態ではプログラムである。図2に示す例では示されていないが、適用先タプルは、(1つ又は複数のPFEによって形成された)物理ネットワークも、ファイアウォール規則のための実施ポイントとして指定することができる。
1つ又は複数のコントローラによって管理される(例えば、1つ又は複数のLFEを実現するコントローラによって管理される)複数の物理フォワード処理要素を備えるネットワークにおいては、サードパーティの機器は、そのコントローラによって管理されないか、又は最小限しか管理されないフォワード処理要素である。例えば、いくつかの実施形態のマルチテナントでホストされた環境では、複数のコントローラが、ネットワークのエッジにおいて動作する複数の物理フォワード処理要素を管理する(即ち、ホスト上で実行されるか、ホストに直接接続するPFEを管理する)。しかし、エッジ上のPFE間の接続は、サードパーティの機器(例えば、サードパーティのトップオブラックスイッチ等)を備える内部ネットワーク構造を横断している。いくつかの実施形態の管理されたネットワークでは、管理されたフォワード処理要素が、管理されたエッジフォワード処理要素と、管理された非エッジフォワード処理要素の両方を備える。これらの実施形態のいくつかでは、管理された非エッジフォワード処理要素が、それらの実施形態の管理されたエッジフォワード処理要素では容易にハンドリングされない機能を果たしている。いくつかの実施形態では、これらの非エッジフォワード処理要素を、サービスノードと称する。
いくつかの実施形態では、適用先タプルが、1つ又は複数のVNIC、VM、ホスト、コンピュート構成体、及び/又はネットワーク構成体によって形成されたセキュリティグループによって実施ポイントを指定することができる。例えば、適用先ファイアウォール規則を、特定のコンピュートクラスタ、及びそのクラスタのホスト上で実行される特定のテナントのVMに接続する特定の論理ネットワークによって指定されるセキュリティグループに、(適用先タプルによって)限定することが可能である。いくつかの実施形態では、セキュリティグループを、ユーザ(例えばネットワーク管理者)が指定することができる。それと同時に、あるいはその代わりに、いくつかの実施形態では、セキュリティグループを自動化したプロセスで指定することができる。エントリ240に示すように、ワイルドカード値で、適用先タプルを指定することもできる。いくつかの実施形態では、そのワイルドカード値が、適用先タプルの全ての可能な値(例えば全てのVNIC)を表す。
いくつかの実施形態では、適用先識別子が、動的に改変可能な構成体を参照することができ、これにより、コントローラが、その動的に改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置のファイアウォールを動的に調節することが可能となる。いくつかの実施形態では、1つ又は複数のコンピュート構成体、ネットワーク構成体、及びセキュリティグループを、動的に追加及び/又は除去されるメンバー(例えばフォワード処理要素、ホスト、VNIC等)を有し得る動的コンテナとして指定することができる。1つ又は複数のファイアウォール規則の適用先タプルを定めるために用いられる動的コンテナが改変されるとき、いくつかの実施形態のコントローラは、影響を受けるネットワークノードに対してファイアウォール規則を再送せず、代わりに、その動的コンテナによって定められるグループへの更新されたメンバー構成の変化の送信のみを行う。
いくつかの実施形態のコントローラにより、適用先ファイアウォール規則を、(1)より高レベルの実施ポイント識別子によって(例えば、ネットワーク管理者により、又は自動化されたファイアウォール構成器により)指定することができるが、次に(2)ファイアウォール実施デバイスにより解読可能又は解読が容易な低レベルの実施ポイント識別子による分配が可能となる。図3は、1つのそのようなコントローラ300とともに、コントローラ300によって分配されたファイアウォール規則を受け取る1つのホスト350を示す図である。この図に示すように、コントローラ300は、ファイアウォール規則構成器305、変換エンジン310、発行エンジン315,高レベル規則データストレージ320、及び低レベル規則データストレージ325を備える。図3に示す例について図4を参照して説明する。図4は、本発明のいくつかの実施形態ではコントローラ300及びホスト350によって作成されるいくつかのファイアウォール規則テーブルを示す。
ファイアウォール規則構成器105と同様に、ファイアウォール規則構成器305は、(1つ又は複数のユーザインタフェース(UI)モジュールを介して)ユーザと、及び/又は自動化されたプロセスとやり取りすることにより、適用先ファイアウォール規則を構成する。ファイアウォール規則構成器305により、ユーザ又は自動化されたプロセスが、高レベル実施ポイント識別子によって適用先ファイアウォール規則を指定することが可能となる。そのような高レベル実施ポイント識別子の例としては、例えば論理スイッチ、論理ルータ、論理ネットワーク、物理ネットワーク、コンピュートクラスタ、データセンター等の、高レベルネットワーク、コンピュート及びセキュリティ構成体が挙げられる。
構成体305は、それが構成する適用先ファイアウォール規則を規則データストレージ320に格納する。図4は、コントローラが構成し、いくつかの実施形態の高レベルデータストレージ320に格納する高レベルファイアウォール規則テーブル405の一例を示す。図に示すように、高レベルファイアウォール規則テーブル405は、例えばコンピュートクラスタ、データセンター、及び論理スイッチ等の高レベル識別子によって定められる適用先識別子を有する、複数の適用先ファイアウォール規則を格納する。
規則データストレージ320から、変換エンジン310が適用先ファイアウォール規則を取り出し、取り出した規則の適用先タプルにおける高レベル実施ポイント識別子を低レベル実施ポイント識別子に変換する。例えば、いくつかの実施形態では、変換エンジンが、コンピュート構成体(例えば、データセンター識別子、コンピュートクラスタ識別子、ホスト識別子等)及びネットワーク構成体(例えば、LFE識別子、論理ネットワーク識別子等)を、VNIC及びワイルドカード値に変換する。図4は、低レベルファイアウォール規則テーブル410の一例を示す。図に示すように、このテーブル410は、高レベルファイアウォール規則テーブル405と同じファイアウォール規則を含むが、各規則の適用先識別子はここではワイルドカード値412か、その高レベル識別子に関連するVNICの組のいずれかを指定する。
実施ポイント識別子をそのように変換する際、変換エンジン310は、適用先ファイアウォール規則が、その適用先ファイアウォール規則を受け取った全てのファイアウォール実施デバイスによって解読可能な低レベル実施ポイント識別子によって定められたものであることを確実にする。変換エンジンは、それが取り出し、必要なときは変換する適用先ファイアウォール規則を、規則データストレージ325に格納する。
いくつかの実施形態では、変換エンジン310が、データストレージ320からのファイアウォール規則の他のパラメータを変換し、その後、変換された規則をデータストレージ325に格納する。例えば、いくつかの実施形態では、ファイアウォール規則の発信元識別子及び宛先識別子が、ファイアウォール規則をファイアウォール実施デバイスに分配する前に、より低レベルの識別子(例えば、特定のIPアドレス)に変換されなければならない高レベルの構成体(例えば、ウェブサーバ、アプリケーションサーバ、データベースサーバ等のコンテナ)によって指定されてもよい。
当業者は、他の実施形態では、変換エンジンが異なる形で動作をすることも理解されよう。例えば、いくつかの実施形態では、変換エンジンは高レベルの発信元識別子及び宛先識別子を低レベルの発信元識別子及び宛先識別子に変換しないか、常には変換しない。これらの実施形態のいくつかでは、変換エンジンが、この変換をファイアウォール実施デバイスのいくつか又は全てにゆだねる。同様に、いくつかの実施形態では、変換エンジンは、ファイアウォール実施デバイスのための高レベル適用先識別子から低レベル適用先識別子への変換を行わないか、常には行わない。変換エンジンは、この変換を行うことをファイアウォール実施デバイスのいくつか又は全てにゆだねるからである。上述の高レベルファイアウォール識別子(例えば適用先識別子、発信元識別子、宛先識別子等)の変換のいくつか又は全ては、コントローラが実施デバイスに分配するファイアウォール規則のサイズ及び/又は数について簡略化するが、実施デバイスにこの変換を行う能力(例えばネットワーク状態情報)を持たせる必要という負担が生ずる。
コントローラに、低レベル適用先識別子とともに(例えば、VNIC及びワイルドカード値のみとともに)ファイアウォール規則を分配させるいくつかの実施形態においてでさえ、コントローラは、高レベル適用先識別子(例えば、高レベルネットワーク構成体、コンピュート構成体、及び/又はセキュリティ構成体)を低レベル適用先識別子に解凍(変換)する変換エンジン310を使用しなくてもよい。例えば、各高レベル適用先識別子(例えば、各コンピュートクラスタ識別子、LFE識別子等)は、VNIC値のリストへの参照を有するオブジェクトとして指定される。これらの実施形態のいくつかでは、変換エンジンの仕事は、ワイルドカード値、又は高レベル適用先識別子のメンバーである(例えば、コンピュートクラスタ、LFE等のメンバーである)VNICへの参照又は識別情報を、高レベル識別子オブジェクトのVNICリストにポピュレートする(追加する)ことである。いくつかの実施形態では、規則構成器305が、そのようにVNICリストにポピュレートし、よってこれらの実施形態では、変換エンジンは、高レベル適用先識別子に関連するいずれの処理にも用いられない。
適用先ファイアウォール規則を受け取るべき各データエンドノードに対して、発行エンジン315は、(1)低レベルデータストレージ325からホストレベル適用先規則345を収集し、かつ(2)収集したファイアウォール規則をデータエンドノードに分配する。図3は、ファイアウォール規則をマルチVMホストに分配する発行エンジンを示す。しかし、他の実施形態では、発行エンジン315がファイアウォール規則を他のファイアウォール実施デバイスに分配するために用いられることは、当業者であれば理解されよう。
各ホストのために、発行エンジン315は、より低レベルのデータストレージ325からそのホストに関連する適用先規則を特定し、取り出す。いくつかの実施形態では、発行エンジンは、各ホストに対し、そのホストに関連する適用先規則を送信するのみである。これらの適用先規則は、いくつかの実施形態では、ホスト上で実行されるVMに関連する適用先規則を含む。図4は、いくつかの実施形態では発行エンジンがホストに分配する、ホストレベルファイアウォール規則テーブル415の一例を示す。このテーブルは、受け手ホストに適用可能な適用先ファイアウォール規則のみを含む。そのようなわけで、このテーブルは、高レベル及び低レベル適用先テーブル405及び410より一般的にはずっと小さくなる。このテーブル415は1つのホストに関連する適用先規則しか含んでいないからである。
いくつかの実施形態では、各ホストに関連する規則には、ホスト上でインスタンス化され得るVMに関連する適用先規則も含まれている。例えば、特定のホストが、特定の論理ネットワークを実現するコンピュートクラスタに属するとき、いくつかの実施形態の発行エンジン315は、その論理ネットワークに属するVMがその特定のホスト上でインスタンス化される前であっても、その論理ネットワークのための適用先規則を特定のホストにプッシュする。前もって適用先ファイアウォール規則をそのようなホストにプッシュしておくことは好都合である。それによって、ホストがコントローラとやり取りすることなくそのVMのためのファイアウォール規則を構成することが可能となるからである。そのようなファイアウォール規則の構成を、以下、ファイアウォール規則のヘッドレスプロビジョニングと称する。それにはコントローラとのやり取りが必要でないからである。
いくつかの実施形態では、発行エンジン315が、より高レベルの適用先データストレージ320を調べることによって、各ホストに対する適用先規則345を収集する。例えば、いくつかの実施形態では、より低レベルの適用先データストレージ325を定義しない。これらの実施形態では、発行エンジン315は、より高レベルの適用先データストレージ320を取捨選択し、ホストに適用可能な適用先ファイアウォール規則を特定する。
また、図3及び図4は、異なるホストに対するホストレベル適用先規則の組の作成及び分配を示すが、他の実施形態では、発行エンジン315が適用先データストレージを調べて、非ホストのファイアウォール実施デバイス(例えばサードパーティのファイアウォールデバイス等)に対してファイアウォール規則の組を特定し発行することは、当業者には理解されよう。この発行エンジンは、(1)いくつかの実施形態では、非ホストのファイアウォール実施デバイスに対して非適用先ファイアウォール規則(即ち、適用先識別子を有していない規則)の発行のみ行い、(2)他の実施形態では、非ホストのファイアウォール実施デバイスに対して適用先ファイアウォール規則(即ち、適用先識別子を有している規則)の発行のみ行い、また(3)ある非ホストのファイアウォール実施デバイスに対しては非適用先ファイアウォール規則を発行するが、他の非ホストのファイアウォール実施デバイスに対しては適用先ファイアウォール規則を発行することもある。
各ホスト350は、ホストレベル規則を受け取り、ホストレベル規則テーブル354に格納するホストコントローラインタフェース352を有する。各ホストは、VMファイウォール構成器も有し、これはホストレベル規則テーブル354に格納されたホストレベル規則から、ホスト上で実行される各VMのためのファイアウォール規則のサブセットを特定し、格納する。図3に示す実施形態では、VMファイアウォール構成器は、各VMの各VNICのための1つのVNICレベルファイアウォール規則を、(1)ホストレベル規則354における適用先データタプルを用いて、そのVNICに適用可能なファイアウォール規則を特定し、(2)ホストレベル規則から特定された規則を取り出し、かつ(3)取り出された規則をそのVNICのためにVNICレベルファイアウォールストレージ355に格納することによって生成する、VNICテーブル構成器356である。いくつかの実施形態では、各VMは1つのVNICである。しかし、他の実施形態では、いくつかの又は全てのVMが2つ以上のVNICを有するものであり得る。
図4は、VNICレベルファイアウォール規則テーブル420の一例を示す。このテーブルに示すように、VNICレベルファイアウォール規則テーブルにおけるファイアウォール規則には、適用先タプルが含まれておらず、それぞれ5個タプル(発信元、発信元ポート、宛先、宛先ポート、及びサービス識別子)とアクション値のみによって指定されている。VNICレベルファイアウォール規則テーブルは、特定のVNICに適用可能な規則の組のみしか含んでいないので、この規則の組は、その上で実行される全てのVMのためにホストが格納する規則の総数より少なくなる。このようにサイズがより小さいことで、ホストのファイアウォール規則エンジン(図示せず)によるファイアウォール規則の処理がより速くなる。
上述のファイアウォール規則分配の方法は、いくつかの利点を有する。適用先を用いてファイアウォール規則に対する実施ポイントの組を指定し、管理プレーンプロビジョニング及びデータプレーンの配置の間に複数のレベルで規則フィルタリングを適用することによって、これらの方法で、簡潔で膨大化していないファイアウォール規則テーブルをデータエンドノード(例えばVM,VNIC等)に対して容易に指定することができるようになる。また、膨大化していないファイアウォール規則テーブルにより、ファイアウォール規則エンジンによる処理がより速くなり、したがって処理能力が更に向上する。
後述のセクションIでは、いくつかの実施形態のコントローラのより詳細ないくつかの例について述べる。次のセクションIIでは、いくつかの実施形態のマルチVMホストのより詳細ないくつかの例について述べる。その次のセクションIIIでは、本発明のいくつかの実施形態のネットワーク制御システムについて述べる。最後のセクションIVでは、本発明のいくつかの実施形態のコントローラ及び/又はホストを実現するために用いられる電子デバイスについて述べる。
I.コントローラのアーキテクチャ及び動作
図5は、本発明のいくつかの実施形態のコントローラ500を示す。図3のコントローラ300と同様に、コントローラ500は、より高レベルの実施ポイント識別子によって適用先ファイアウォール規則を構成するが、より低レベルの実施ポイント識別子によって適用先ファイアウォール規則を分配する。また、コントローラ300と同様に、コントローラ500は、規則構成器505、変換エンジン510、発行エンジン515、高レベル規則データストレージ320、及び低レベル規則データストレージ325を備える。これらの構成要素に加えて、図5は、コントローラ500が、ユーザインタフェース(UI)モジュール530、自動化プロビジョニングモジュール535、グループ定義データストレージ540、及びいくつかの実施デバイスデータストレージ555、560、及び565を備えることを示す。
ファイアウォール規則構成器505は、UIモジュール530を介してユーザ(例えば、ネットワーク管理者)とやり取りすることにより、適用先ファイアウォール規則を構成する。構成器はまた、物理又は論理ネットワークのプロビジョニングの一部としてこれらの規則を指定するように構成器に指示する自動化プロビジョニングモジュール535の指示で適用先ファイアウォール規則を構成する。例えば、コントローラ500が、マルチユーザ(例えばマルチテナント)がホストされる環境において論理ネットワークを管理するネットワーク制御システムの一部であるとき、プロビジョニングモジュール535は、いくつかの実施形態では、論理ネットワークが1ユーザ(例えば、1つのテナント)のために指定されているとき、少なくともいくつかの適用先ファイアウォール規則を指定するように構成器505に指示する。
構成器505により、(UIモジュール530を介して)ユーザが、又はプロビジョニングモジュール535が、高レベル実施ポイント識別子によって適用先ファイアウォール規則を指定することが可能となる。そのような高レベル実施ポイント識別子の例としては、高レベルネットワーク、コンピュート及びセキュリティ構成体が挙げられ、例えば論理スイッチ、論理ルータ、論理ネットワーク、物理ネットワーク、コンピュートクラスタ、データセンター等がある。構成器505は、それが構成した適用先ファイアウォール規則を規則データストレージ320に格納する。
変換エンジン510は、規則データストレージ320から、適用先ファイアウォール規則を取り出し、取り出した規則の適用先タプルにおける高レベルの実施ポイント識別子をより低レベルの実施ポイント識別子に変換する。例えば、いくつかの実施形態では、変換エンジンは、コンピュート構成体(例えば、データセンター識別子、コンピュートクラスタ識別子、ホスト識別子等)、ネットワーク構成体(例えば、LFE識別子、論理ネットワーク識別子等)、及び(1つ又は複数のネットワーク又はコンピュート構成体によって形成された)セキュリティグループを、VNIC及びワイルドカード値に変換する。実施ポイント識別子をそのように変換する際、変換エンジン510が、全ての適用先ファイアウォール規則が、その適用先ファイアウォール規則を受け取る全てのファイアウォール実施デバイスによって解読可能な低レベル実施ポイント識別子によって定められたものとなることを確実にする。変換エンジンは、それが取り出し、必要なときは変換する適用先ファイアウォール規則を、低レベル規則データストレージ325に格納する。
高レベル実施ポイント識別子(例えば、高レベルネットワーク構成体、コンピュート構成体、及びセキュリティグループ)を低レベル実施ポイント識別子に(例えば、VNIC及びワイルドカード値に)変換するために、変換エンジンは、グループ定義データストレージ540に格納された高レベルグループの定義に依拠している。これらの定義は、(UIモジュール530を介して)ユーザにより、又は自動化プロビジョニングモジュール535により格納される。
いくつかの実施形態では、これらの定義は統計的に定義される。他の実施形態では、高レベルグループ定義のいくつか又は全てが、ユーザ又はプロビジョニングモジュール535により動的に改変可能である。具体的には、いくつかの実施形態では、適用先識別子が動的に改変可能な構成体を参照し、これにより、コントローラ500が、動的に改変可能な構成体のメンバー構成を動的に調節することによってネットワーク内の異なる位置のためにファイアウォール規則を動的に調節することが可能となる。いくつかの実施形態では、規則構成器305は、コンピュート構成体、ネットワーク構成体、及びセキュリティグループの1つ又は複数を、動的に追加及び/又は除去されるメンバー(フォワード処理要素、ホスト、VNIC等)を有し得る動的コンテナとして指定することができる。
静的又は動的グループへの参照により定義される実施ポイントに対して、変換エンジン510は、(1)データストレージ540におけるグループ定義を用いて高レベル識別子に関連する低レベル識別子(例えば、VNIC及びワイルドカード値)を特定し、(2)高レベル識別子を特定された低レベル識別子で置き換え、かつ(3)得られた規則をデータストレージ325に格納する。1つ又は複数のファイアウォール規則の適用先タプルを定めるために用いられる動的コンテナが改変されると、変換エンジンは、影響を受けるファイアウォール規則の低レベル実施ポイント識別子を更新する。後に更に説明するように、次いで発行エンジン515が、影響を受けるファイアウォール規則のための更新されたメンバー構成の変化を、このメンバー構成の変化を通知される必要のあるファイアウォール実施デバイスに送信する。この方法は、影響を受けるファイアウォール規則を、これらの規則を以前に受け取ったファイアウォール実施デバイスに再送する必要をなくす。しかし、発行エンジンは、動的コンテナに対するメンバー構成の変化が新たなファイアウォール実施デバイスの追加を必要とするときには、影響を受けるファイアウォール規則を新たなファイアウォール実施デバイスに送信する。
コントローラ300の変換エンジン310と同様に、コントローラ500の変換エンジン510は、データストレージ320からのファイアウォール規則の他のパラメータ(例えば、発信元及び宛先識別子)を変換した後、変換された規則をデータストレージ325に格納する。また、コントローラ300の変換エンジン310と同様に、コントローラ500の変換エンジン510は、他の実施形態においては異なる動作をする。例えば、いくつかの実施形態では、変換エンジンは、データストレージ320のファイアウォール規則の高レベル構成体の変換のいくつか又は全てを行うことを、ファイアウォール実施デバイスのいくつか又は全てにゆだねる。
また、低レベル適用先識別子を有する(例えば、VNIC及びワイルドカード値のみを有する)ファイアウォール規則をコントローラ500に分配させるいくつかの実施形態においてでさえ、コントローラ500は、高レベル適用先識別子(例えば、高レベルネットワーク構成体、コンピュート構成体、及び/又はセキュリティ構成体)を低レベル適用先識別子に解凍(変換)する変換エンジン510を使用しない。例えば、各高レベル適用先識別子(例えば、各コンピュートクラスタ識別子、LFE識別子等)を、VNIC値のリストへの参照を有するオブジェクトとして指定するいくつかの実施形態では、変換エンジンの仕事は、ワイルドカード値、又は高レベル適用先識別子のメンバーである(例えば、コンピュートクラスタ、LFE等のメンバーである)VNICへの参照又は識別情報を、高レベル識別子オブジェクトのVNICリストにポピュレートすることである。いくつかの実施形態では、規則構成器305が、そのように(例えば、データストレージ540におけるグループ定義への参照によって)VNICリストにポピュレートし、よってこれらの実施形態では、変換エンジンは、高レベル適用先識別子に関連するいずれの処理にも必要とされない。
発行エンジン515は、実施デバイスに対して低レベルデータストレージ325から適用先規則を収集し分配する。図5に示すように、発行エンジン515は、規則抽出器550及び分配エンジン545を備える。各ファイアウォール実施デバイスに対して、規則抽出器550は、低レベルデータストレージ325から、実施デバイスに関連する適用先規則を特定し取り出す。規則抽出器550は、各特定のファイアウォール実施デバイスのために取り出したファイアウォール規則を、発行エンジンがその特定のファイアウォール実施デバイスのために維持するデータストレージ(例えば、データストレージ555、560、及び565)に格納する。
いくつかの実施形態では、規則抽出器550は、各ファイアウォール実施デバイスのため、そのファイアウォール実施デバイスに関連する適用先規則の取り出し及び格納のみを行う。そのようなわけで、実施デバイスのデータストレージ(例えば、各ファイアウォール実施デバイスのためのファイアウォール規則を格納するデータストレージ555、560、及び565)は、一般的に、高レベル及び低レベルデータストレージ320及び325よりずっと小さくなる。実施デバイスのデータストレージは実施デバイスのそれぞれに関連する適用先規則しか保存していないからである。
いくつかの実施形態では、ファイアウォール実施デバイスに関連する適用先ファイアウォール規則は、ファイアウォール実施デバイスに接続されたデータエンドノードに関連する適用先規則を含む。いくつかの実施形態では、各ファイアウォール実施デバイスに関連する規則が、ファイアウォール実施デバイスに接続されている可能性のあるデータエンドノードに関連する適用先規則も含む。例えば、特定のホストが、特定の論理ネットワークを実現するコンピュートクラスタに属するとき、いくつかの実施形態の規則抽出器550は、その論理ネットワークに属するVMが特定のホスト上でインスタンス化される前でも、その論理ネットワークのための指定された適用先規則をその特定のホストのためのデータストレージに格納する。前もって適用先ファイアウォール規則をそのようなホストにプッシュしておくことは好都合である。それによって、ホストがコントローラとやり取りすることなくそのVMのためのファイアウォール規則を構成することが可能となるからである。
いくつかの実施形態では、規則抽出器550が、より高レベルの適用先データストレージ320を調べることによって各実施デバイスのための適用先規則を収集する。例えば、いくつかの実施形態は、より低レベルの適用先データストレージ325を定義しない。これらの実施形態では、規則抽出器550が、より高いレベルの適用先データストレージ320を取捨選択し、ファイアウォール実施デバイスに適用可能な適用先ファイアウォール規則を特定する。
図5は、規則抽出器550が維持する3つのデータストレージ555、560、及び565を示す。3つのうちの2つのデータストレージ555及び560は、そのホスト上で実行されるVMのためのファイアウォール実施デバイスとしての機能を果たすファイアウォールエンジンを実行する、ホストのためのものである。第3のデータストレージ565は、サードパーティのファイアウォール機器のためのものである。発行エンジンは、(1)いくつかの実施形態では、非ホストのファイアウォール実施デバイスに対して非適用先ファイアウォール規則(即ち、適用先識別子を有していない規則)の発行のみを行い、(2)他の実施形態では、非ホストのファイアウォール実施デバイスに対して適用先ファイアウォール規則の発行のみを行い、また(3)ある非ホストのファイアウォール実施デバイスに対しては非適用先ファイアウォール規則を発行するが、他の非ホストのファイアウォール実施デバイスに対しては適用先ファイアウォール規則を発行することもある。
従って、いくつかの実施形態では、規則抽出器が、非ホストのファイアウォール実施デバイスに対して発行されるべき全てのファイアウォール規則のための適用先識別子を除去し、その後、規則抽出器がそれらのデバイスのために維持するデータストレージ(例えばデータストレージ565)にファイアウォール規則を格納する。他の実施形態では、規則抽出器が、それが非ホストのファイアウォール実施デバイスのために維持するデータストレージ(例えば、データストレージ565)に、それらの適用先識別子を有するファイアウォール規則を格納する。更に他の実施形態では、規則抽出器が、ある非ホストのファイアウォール実施デバイスのためには適用先識別子を有していないファイアウォール規則を格納するが、他の非ホストのファイアウォール実施デバイスのためには適用先識別子を有するファイアウォール規則を格納する。
いくつかの実施形態では、発行エンジン515の分配エンジン545が、規則抽出器がファイアウォール実施デバイスのために維持するデータストレージに格納されたファイアウォール規則を、(ネットワークを介して)各ファイアウォール実施デバイスにプッシュする。他の実施形態では、ファイアウォール実施デバイスは、分配エンジンからファイアウォール規則の引き出しをする。更に他の実施形態では、分配エンジンがあるファイアウォール実施デバイスに対してはファイアウォール規則をプッシュするが、他のファイアウォール実施デバイスに対してはファイアウォール規則の引き出しをするためのリソースとしての機能を果たす。
上述のように、発行エンジンは、ファイアウォール実施デバイスに対し、適用先実施ポイントの組の更新を、ユーザ又は自動化プロセスがそのような組を動的に改変したときに分配する。いくつかの実施形態では、そのような改変により、変換エンジンが、より低レベルのデータストレージ325におけるファイアウォール規則を更新する。このことによって、次に、ファイアウォール実施デバイスのために規則抽出器が維持する1つ又は複数のデータストレージにおける1つ又は複数の規則における適用先フィールドを、規則抽出器に更新させることができる。より低レベルのデータストレージにおけるファイアウォール規則の更新により、新たに指定された実施ポイント(即ち、データストレージ325における以前に指定された適用先ファイアウォール規則のための実施ポイントとして追加されたファイアウォール実施デバイス)のための新たなファイアウォール規則を、規則抽出器に作成させることができる。次に分配エンジンが、影響を受けるファイアウォール実施デバイスに対し、更新された適用先メンバー構成及び/又は新たに追加されたファイアウォール規則を(例えば、プッシュアクション又は引き出しアクションを介して)分配する。
いくつかの実施形態でのコントローラ500の動作を、図6乃至図9を参照して以下に述べる。図6は、いくつかの実施形態においてコントローラ600の変換エンジン610が行うプロセス600を示す。いくつかの実施形態においてプロセス600は、適用先ファイアウォール規則の組が高レベルデータストレージ320に格納される毎に行われる。いくつかの実施形態では、プロセス600は、バッチプロセスとして行われ、他の実施形態では、適用先ファイアウォール規則の組の高レベルデータストレージ320への格納の通知を受け取った際にリアルタイムで行われる。
図6に示すように、プロセスは初めに(605で)高レベルデータストレージに追加された適用先ファイアウォール規則の組の識別情報を受け取る。これらの規則は、高レベル適用先識別子(例えば、高レベルコンピュート構成体、ネットワーク構成体、及び/又はセキュリティグループ)又は低レベル適用先識別子(例えば、VNIC及びワイルドカード値)によって指定することができる。
プロセスは、次に(610で)、受け取った組の適用先ファイアウォール規則の1つを選択する。次に、615において、プロセスは、選択された適用先ファイアウォール規則が、少なくとも1つの高レベル構成体によって定められた適用先識別子を有するか否かを判定する。有する場合には、プロセスは、(615で)高レベル適用先識別子を低レベル適用先識別子に変換する。高レベル適用先識別子(例えば、高レベルネットワーク構成体、コンピュート構成体、及びセキュリティグループ)を低レベル適用先識別子に(例えば、VNIC及びワイルドカード値に)変換するために、プロセス600は、グループ定義データストレージ540に格納された高レベルグループの定義に依拠している。具体的には、データストレージにおいて定義されたグループへの参照によって定められた適用先識別子について、プロセス600は、(1)データストレージ540におけるグループ定義を用いて、高レベル識別子に関連する低レベル識別子(VNIC及びワイルドカード値)を特定し、(2)適用先ファイアウォール規則における高レベル識別子を、特定された低レベル識別子で置き換え、かつ(3)得られた規則をデータストレージ325に格納する。615において、いくつかの実施形態では、プロセスが(データストレージ320からの)ファイアウォール規則の他のパラメータ(例えば、発信元及び宛先識別子)を変換し、その後変換した規則をデータストレージ325に格納する。
620において、プロセスは、605で受け取った組における適用先ファイアウォール規則の全てを調べたか否かを判定する。そうでない場合、プロセスは610に戻り、他の適用先ファイアウォール規則を選択し、次に操作615を行ってこの規則を低レベル規則に変換するが、これはそのような変換が必要な場合に行う。プロセスが、(620にて)受け取った組における適用先ファイアウォール規則の全てを調べたと判定したときには、プロセスは終了する。
このようにして、プロセス600は、適用先ファイアウォール規則における高レベルコンピュート構成体(例えばデータセンター識別子、コンピュートクラスタ識別子、ホスト識別子等)、ネットワーク構成体(例えば、LFE識別子、論理ネットワーク識別子等)、及び(1つ又は複数のネットワーク又はコンピュート構成体によって形成された)セキュリティグループを、低レベル識別子(例えば、VNIC及びワイルドカード値)に変換する。実施ポイント識別子をそのように変換する際に、変換プロセス600は、全ての適用先ファイアウォール規則が、適用先ファイアウォール規則を受け取った全てのファイアウォール実施デバイスに解読可能な低レベル実施ポイント識別子によって定められたものであることを確実にする。
図7は、いくつかの実施形態においてコントローラ500の発行エンジンが行うプロセス700を示す。いくつかの実施形態では、プロセス700は、適用先ファイアウォール規則の組が高レベルデータストレージ325に格納される毎に行われる。このプロセス700は、低レベル規則データストレージ325からホストレベル適用先規則を収集し分配する。いくつかの実施形態では、プロセス700は、バッチプロセスとして行われ、他の実施形態では、適用先ファイアウォール規則の組の低レベルデータストレージ325への格納の通知を受け取った際にリアルタイムで行われる。
図7に示すように、プロセスは、初めに(705で)低レベルデータストレージに追加された適用先ファイアウォール規則の組の識別情報を受け取る。いくつかの実施形態では、これらの規則の適用先データタプルはVNIC及びワイルドカード値によって指定される。プロセスは、次に(710で)、受け取った組の適用先ファイアウォール規則の1つを選択する。
次に、715において、プロセスは、選択された規則が適用される各ファイアウォール実施デバイスを特定する。この規則抽出操作715は、選択された規則の適用先識別子によって指定された値に基づく。例えば、いくつかの実施形態では、規則抽出器550が、選択された規則の適用先識別子によって指定された各値を調べ、調べた値に関連するファイアウォール実施デバイスを特定する。
いくつかの実施形態では、ただ1つのファイアウォール実施デバイスが、非ワイルドカードの適用先値のいずれかに関連付けられる。しかし、他の実施形態では、2つ以上のファイアウォール実施デバイスが1つの適用先値に関連付けられることが可能である。複数のファイアウォール実施デバイスが、異なる時間に適用先値によって指定されるデータエンドノードに接続し得るからである。このため、発行エンジンは、データエンドノードのためのファイアウォール規則を、そのデータエンドノードに接続し得る各ファイアウォール実施デバイスに分配する。例えば、特定のホストが、特定のVMが接続される特定の論理ネットワークを実現するコンピュートクラスタに属するとき、いくつかの実施形態の規則抽出操作715は、あるホストを、ある適用先値によって指定される特定のVMのVNICに関連付けられたものとして特定するが、この操作は、そのVMが特定のホスト上でインスタンス化される前であっても行われる。このように行われるのは、これらの実施形態において、コンピュートクラスタにおける全てのホストが論理ネットワークに接続されたVMのためのファイアウォール規則を受け取り、あらゆるホストが、VMがホスト上でインスタンス化されたときそのVMのためのファイアウォール規則テーブルを、その場で構成することが可能だからである。
次に、プロセス700が715で特定した各ファイアウォール実施デバイスに対して、そのプロセスは、710で選択されたファイアウォール規則を、ファイアウォール実施デバイスのためにプロセスが維持するファイアウォール規則データストレージに(720で)追加する。これらのファイアウォール規則は、一般的には高レベル及び低レベルデータストレージ320及び325より非常に小さい。実施デバイスデータストレージは、それぞれの実施デバイスに関連する適用先規則しか含んでいないからである。いくつかのファイアウォール実施デバイスのためのデータストレージにいくつかの適用先ファイアウォール規則を追加するとき、いくつかの実施形態では、プロセス700は規則から適用先識別子を除去する。いくつかの実施形態が適用先識別子を除去するときの状況は、発行エンジン515の動作の説明のなかで上述した。
725において、プロセスは、705で受け取った組における適用先ファイアウォール規則の全てを調べたか否かを判定する。そうでない場合、プロセスは710に戻り、他の適用先ファイアウォール規則を選択し、次にこの新たに選択された適用先ファイアウォール規則のために操作715−725を行う。プロセスが、受け取った組における適用先ファイアウォール規則の全てを調べたと判定したときには、プロセス700は、(ネットワークを介して)各ファイアウォール実施デバイスに、そのファイアウォール実施デバイスのデータストレージに(720で)それが格納したファイアウォール規則を(730で)プッシュする。730の後、プロセスは終了する。
規則抽出及び分配プロセス700を、種々の細部を参照して上記のように説明したが、このプロセスは、他の実施形態においては異なる形で実現できることを当業者は理解されよう。例えば、ファイアウォール規則を実施デバイスにプッシュする代わりに、他の実施形態では、ファイアウォールデバイスが、発行エンジンからファイアウォール規則の引き出しを行う。
また、上述のように、いくつかの実施形態では、プロセス700が、各ファイアウォール規則の各適用先値を調べて、そのファイアウォール規則を格納すべき実施デバイスデータストレージを特定する。低レベルファイアウォール規則の適用先識別子によって指定された各値を調べる代わりに、いくつかの実施形態では、規則抽出操作715が、高レベルデータストレージ320における高レベル又は低レベル適用先識別子を1つ又は複数のファイアウォール実施デバイスに関連付けることによって、ファイアウォール規則のいくつか又は全てをファイアウォール実施デバイスに関連付ける。ファイアウォール規則をファイアウォール実施デバイスに関連付けるために高レベルデータストレージ320における適用先識別子(例えば、高レベル又は低レベル識別子)を用いるとき、いくつかの実施形態は、ファイアウォール実施デバイスに対して、(1)高レベルデータストレージ320に格納された低レベル適用先識別子、及び(2)高レベルデータストレージ320において特定された高レベル適用先識別子に対応する、(例えば、グループ定義ストレージ540からの)低レベル適用先識別子をプッシュする。
また、全てのファイアウォール実施デバイスのためのデータストレージを個々に定義し維持する代わりに、規則抽出操作715は、いくつかの実施形態では、1つのデータストレージにおける関連するファイアウォール実施デバイスの少なくとも1つのためにファイアウォール規則を集約する。例えば、いくつかの実施形態では、データセンターにおける1つのコンピュートクラスタの全てのホストがファイアウォール規則の同じ組を受け取る。コンピュートクラスタにおける各ホストは、そのコンピュートクラスタにおけるいずれかのホストによって実現される各論理スイッチを実現するように準備される必要があるからである。したがって、1つのコンピュートクラスタにおける全てのホストのために、いくつかの実施形態のプロセス700は、そのクラスタにおける全てのホストのための全てのファイアウォール規則を含むただ1つのコンピュートクラスタデータストレージを作成する。
図8は、いくつかの実施形態のコントローラ500が、適用先識別子を定めるために用いられる動的構成体のメンバー構成が改変されたとき、ファイアウォール規則の適用先値を更新するために行うプロセス800を示す。プロセス800は、影響を受けるファイアウォール規則のための更新されたメンバー構成の変更を、このメンバー構成の変更が通知される必要のある、あらゆるファイアウォール実施デバイスに送信する。プロセス800は、動的コンテナのメンバー構成の変更によってファイアウォール実施デバイスの追加又は除去が必要となるとき、影響を受けるファイアウォール規則の新たなファイアウォール実施デバイスへの送信、又はファイアウォール実施デバイスからの影響を受けるファイアウォール規則の除去も行う。
プロセス800は、図9に示す例を参照して説明する。この例は、動的セキュリティグループSGZに基づく、高レベル及び低レベルデータストレージ320及び325における適用先ファイアウォール規則の作成、及びセキュリティグループSGZのメンバー構成の改変の後の低レベルデータストレージ325における適用先ファイアウォール規則の改変を示す。
図8に示すように、プロセス800は、高レベルデータストレージ320における1つ又は複数の適用先規則の適用先識別子を定めるために用いられる動的構成体(例えば、ネットワーク構成体、コンピュート構成体、又はセキュリティグループ)の定義の改変が通知されたときに開始する。上述のように、グループ定義データストレージは、いくつかの実施形態では、動的構成体の定義を格納する。これらの実施形態のいくつかでは、ユーザが(UIモジュール530を介して)、又は自動化プロビジョニングモジュール535が、805で動的構成体の定義を改変することができる。また、いくつかの実施形態では、グループ定義ストレージ540は、変換エンジンに対し、動的構成体の定義の改変をこのエンジンに通知するためにコールバックを(805で)提供する。
810で、プロセスは、動的構成体の変更された定義によって影響を受ける、各高レベルファイアウォール規則を特定する。これは、1つの動的構成体を、高レベルデータストレージ320における複数の適用先ファイアウォール規則の複数の適用先識別子において使用することが可能だからである。次にプロセス800は、810で特定された高レベルファイアウォール規則の1つを(815で)選択する。選択された高レベルファイアウォール規則のために、次にプロセス800は、より低レベルのデータストレージ325におけるそれに対応するより低レベルのファイアウォール規則を(820で)更新し、動的構成体の定義の変更を反映させる。この更新により、対応する低レベルファイアウォール規則からの1つ又は複数の低レベル適用先識別子の追加又は除去が生じ得る。
図9は、VNIC(VNIC Nと称する)の追加を、このVNICがセキュリティグループSGZの定義に追加された後に低レベルファイアウォール規則に反映させる例を示す。この図に示すように、VNIC NがセキュリティグループSGZの定義に追加される前に、セキュリティグループが(時刻t1に)定められ、高レベルデータストレージ320におけるこのグループSGZを参照することによって、高レベル規則905が(時刻t2に)作成され、かつ低レベルデータストレージ325における高レベル規則905のために低レベル規則910が(時刻t3に)作成される。一旦セキュリティグループSGZが、VNIC Nを含むように(時刻t4に)改変されると、変換エンジンには、この変更が(時刻t5に)通知される。次に変換エンジンは、高レベル規則905を、改変されたセキュリティグループSGZを参照する規則として特定する。次にこのエンジンは、低レベル規則910を、この規則の適用先識別子にVNIC Nを含むように(時刻t6に)改変する。
820の後、このプロセスは、810でそれが特定した全ての高レベルファイアウォール規則(即ち、改変された動的構成体を参照する全ての高レベル規則)を調べたか否かを(825で)判定する。全てを調べていない場合には、プロセスは815に戻り、他の特定された高レベルファイアウォール規則を選択し、その高レベルファイアウォール規則に対応する低レベルファイアウォール規則を(820で)更新する。そうでない場合には、プロセスは830に移行する。
830で、プロセス800は、それが820で更新した各低レベル規則を見直す。これは、そのファイアウォール実施デバイスのためのファイアウォール規則を含む実施デバイスデータストレージ(例えば、データストレージ555、560、及び565)を更新するためである。この更新を行うために、いくつかの実施形態では、プロセスは各影響を受けた低レベルファイアウォール規則の適用先値の新たな追加又は除去を特定し、そのように更新される必要のある(実施デバイスデータストレージ内の)各実施デバイスファイアウォール規則からこの値を追加又は削除する。例えば、図9に示す例では、低レベルファイアウォール規則910にVNIC Nを追加するには、影響を受けるホスト又はコンピュートクラスタのためのファイアウォール規則を格納するホストレベル又はコンピュートクラスタレベルのデータストレージへのこのVNICの追加が必要となることもある。影響を受けるホストは、VNIC Nを有するVMが実行される、又は実行され得るホストであり、影響を受けるコンピュートクラスタは、そのようなホストを含むコンピュートクラスタである。
このようにして、プロセスは、動的構成体における変化によって引き起こされる、より低レベルのファイアウォール規則の更新されたメンバー構成の変化を、1つ又は複数の実施するデバイスデータストレージに対して(830で)プッシュする。いくつかの場合、動的構成体における変化及び1つ又は複数の低レベルファイアウォール規則において生じる変化には、ファイアウォール規則が1つ又は複数の実施デバイスデータストレージに追加、又はそこから除去されることが必要である。したがって、いくつかの場合、動的コンテナのメンバー構成の変化によりファイアウォール実施デバイスの追加又は除去が必要であるとき、プロセス800は、影響を受けるファイアウォール規則を新たなファイアウォール実施デバイスに送信するか、又はファイアウォール実施デバイスから影響を受けるファイアウォール規則を除去する。
830で実施デバイスのデータストレージを更新した後、プロセス800は、830でプロセス800によって更新されたデータストレージを有していた各ファイアウォール実施デバイスに、(ネットワークを介して)更新を(835で)プッシュする。プロセスは、実施デバイスのデータストレージにおけるファイアウォール規則の適用先メンバー構成を(830で)更新したとき、プロセスは実施デバイスのメンバー構成の変化を(835で)送信する。一方、プロセスが実施デバイスのデータストレージに新しいファイアウォール規則を(830で)追加するとき、プロセスは、実施デバイスにファイアウォール規則を(835で)送信する。受け取った改変に基づいて、ファイアウォール実施デバイスを、そのファイアウォール規則のメンバー構成を改変するか、又はファイアウォール規則の追加又は除去を行う。835の後、プロセスは終了する。
本発明の他の実施形態では、更新プロセス800は異なる形で実現されることを当業者は理解されよう。例えば、いくつかの実施形態では、コントローラ500は、より低レベルのデータストレージ325により低レベルの規則を維持しない。これらの実施形態では、更新プロセスは、動的構成体のメンバー構成がグループ定義ストアにおいて改変されたとき、グループ定義ストレージ540における更新されたグループ定義を用いて、プロセスが実施デバイスデータストレージに格納するファイアウォール規則を直接更新する。
II.ホストのアーキテクチャ及び動作
図10は、本発明のいくつかの実施形態のマルチVMホスト1002のファイアウォール実施アーキテクチャ1000を示す。このホストは、適用先ファイアウォール規則を受け取り、これらの規則に基づいて、複数のVNICレベルファイアウォール規則データストレージを指定し、ホストは次にこれを用いて、各VMによって送信され又は各VMのために受け取られるパケットに対してVNICレベルファイアウォール操作を行う。
図10に示すように、仮想化アーキテクチャ100は、(1)複数のVM1005及び1010、(2)各VMのためのVNIC1015又は1020、(3)ソフトウェアスイッチ1035、(4)各VNICのためのポート1025又は1030、(5)ファイアウォールエンジン1040、(6)VNICレベルファイアウォール規則1045、(7)ファイアウォール規則発行器1050,(8)ファイアウォールエージェント1055、(9)ホストレベルファイアウォール規則テーブル1065、及び(1)ホストコントローラインタフェース1060を備える。
いくつかの実施形態では、VMが、ホスト上で実行されているハイパーバイザ(図示せず)の上で実行される。図10は、ただ2つのVM1005及び1010を示すが、場合によってはより大きい数のVMがホスト1002上で実行される。各VMは、1つのテナントに属していてよく、ホストがマルチテナント環境で動作しているときは複数のテナントに属していてもよい。
いくつかの実施形態では、各VMはVNICを備える。例えば、VM1005はVNIC1015を備え、VM1010はVNIC1020を備える。VMの各VNICは、VMとソフトウェアスイッチとの間のパケットの交換を担っている。後に更に説明するように、各VNICはソフトウェアスイッチの特定のポートに接続し、そのソフトウェアスイッチはホストの物理NIC(図示せず)に接続する。いくつかの実施形態では、VNICは、仮想化ソフトウェアによって実現される物理NICのソフトウェア抽象化である。
いくつかの実施形態では、ソフトウェアスイッチが、各VMの各VNICのための1つのポートを維持している。例えば、VNIC1015及び1020のために、ソフトウェアスイッチ1035は、ポート1025及び1030を備える。ソフトウェアスイッチ1035は、それがそのポートの1つで受け取ったパケットをそのポートの別の1つにフォワード処理するパケット処理操作を行う。例えば、いくつかの実施形態では、ソフトウェアスイッチは、パケットのデータ(例えば、パケットヘッダのデータ)を用いて、パケットをフローベースの規則に照合することを試み、一致したときには、一致した規則によって指定されたアクションを行う。ソフトウェアスイッチ1035は、発信パケットの送信と、着信パケットの受信とを行うべく、物理NICに(NICドライバ(図示せず)を介して)接続する。いくつかの実施形態では、ソフトウェアスイッチ1035は、パケットをNICと送受信するべく、物理NICのドライバに接続しているポート(図示せず)を備える。
また、いくつかの実施形態では、1つのホストのソフトウェアスイッチは、他のホストのソフトスイッチとともに複数の論理スイッチを形成することができ、各論理スイッチは、論理ネットワークをサービスする概念上のスイッチの機能を果たす。つまり、異なるユーザのための異なる論理ネットワークを指定するために異なる論理スイッチを定めることができ、各論理スイッチは、複数のホスト上の複数のソフトウェアスイッチによって定めることができる。VXLANは、そのような論理スイッチを形成するための1つの方式を提供する。VXLAN標準は、Mahalingam,Mallik;Dutt,Dinesh G.ら、(2013−05−08),VXLAN:A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks,IETFに記載されている。
いくつかの実施形態では、ソフトウェアスイッチ1035のポートには、ポートで受け取った着信及び発信パケットに対する特別な入力/出力操作を実現する、1つ又は複数のモジュールへの1つ又は複数の関数呼び出しが含まれる。これらの関数呼び出しの1つはファイアウォールエンジン1040へのもので、ファイアウォールエンジンは、いくつかの実施形態では、着信及び/又は発信パケットに(即ち、VMの1つのためのホストによって受信されたパケットに、又はVMの1つによって送信されたパケットに)ファイアウォール操作を行う。そのようなI/O操作の他の例としては、米国特許出願第14/070,360号明細書(特許文献1)に記載のような、ARPブロードキャスト抑制操作及びDHCPブロードキャスト抑制操作が挙げられる。本発明のいくつかの実施形態では、他のI/O操作を、そのように実現することができる。そのような関数呼び出しのスタックを実現することによって、いくつかの実施形態では、着信及び/又は発信パケットへの一連のI/O操作を実現する。また、いくつかの実施形態では、データパス(例えば、VNIC等)における他のモジュールが、I/O関数呼び出し操作(例えばファイアウォール関数呼び出し)を実現する。
上述のように、ファイアウォールエンジン1040を、着信又は発信パケットのために(例えば、ソフトウェアスイッチ1035のポート1025又は1030によって)呼び出して、そのようなパケットが、VMに送信されるべきか、又はVMから送信されるべきかを、VMのVNICのためにVNICレベルファイアウォールデータストレージ1045に格納されるVNICレベルファイアウォール規則に基づいてチェックすることができる。いくつかの実施形態では、ファイアウォールエンジン1040を、(例えば、着信パケットのための)物理NICドライバに接続するポートによって呼び出すことができる。
ファイアウォールエンジンは、受信されたパケットの識別子(例えば、パケットヘッダから抽出された5個タプル識別子)を、着信パケットの宛先又は発信パケットの発信元であるVNICのVNICデータストレージ1045に格納されたファイアウォール規則の関連する識別子(例えば、5個タプル識別子)に照合することを試みる。つまり、規則をパケットに照合するために、ファイアウォールエンジンは、パケットのためのn個データタプルを特定し(例えば、パケットのヘッダからこれらのタプルを抽出し)、特定されたタプルを各規則のn個データタプルと比較する。
ファイアウォール規則発行器1050は、ホストレベルのファイアウォール規則データストレージ1065に格納されたホストレベル適用先ファイアウォール規則に基づいて、VNICレベルファイアウォール規則データストレージ1045にポピュレートし、更新する。いくつかの実施形態では、発行器が、ホストレベルファイアウォールデータストレージ1065における新たなファイアウォール規則、又は更新されたファイアウォール規則のそれぞれの適用先識別子を調べ、その規則がホスト上で現在インスタンス化されているVMの1つのVNICに関連しているか否かを判定する。発行器1050が、1つのそのようなVNICに関連する新規な又は更新された規則を特定した場合は常に、その発行器が、新規な規則又は更新された規則をVNICのファイアウォール規則テーブル1045にプッシュする。この規則をVNICのファイアウォール規則テーブルにプッシュする際、発行エンジンは、ファイアウォール規則から適用先識別子を除去し、その後そのファイアウォール規則をVNICのファイアウォール規則テーブルに格納する。
ファイアウォールエージェント1055は、ホスト−コントローラインタフェース1060及びネットワーク(図示せず)を介してコントローラからそれが受け取ったホストレベル適用先ファイアウォール規則に基づいて、ホストレベルファイアウォール規則データストレージ1065にポピュレートし、更新する。上述のように、いくつかの実施形態では、コントローラが、ホストが現在実行しているVMのためのものだけでなく、後の時点でホストが実行する可能性のあるVMのための適用先ファイアウォール規則を各ホストにプッシュする。また、上述のように、ホストはコンピュートクラスタの一部として動作してもよく、かつ、いくつかの実施形態ではコンピュートクラスタの全てのホストがテナント又は論理ネットワークの組をサポートするべく構成され、それによって、テナント又は論理ネットワークの1つのためのVMが、1つのそのようなホスト上でインスタンス化されるか又はそこに移動したとき、ホスト上のそのVMを構成するために必要となるデータのいくつか又は全てがそのホスト上に既に存在していることになる。そのような実施形態のいくつかでは、コンピュートクラスタにおける各ホストが、適用先ファイアウォール規則の同じ組を受け取り、それによって各ホストが、そのホスト上でインスタンス化されるか又はそこに移動される可能性のあるあらゆるVMのためのVNICファイアウォール規則テーブルを、それ自身の上で(コントローラへと行くことなく)構成することが可能となる。
いくつかの実施形態では、ソフトウェアスイッチ1035、ファイアウォールエンジン1040、及びVNICレベルファイアウォール規則テーブル1045は、カーネル空間において動作し、発行器1050、ファイアウォールエージェント1055,ホストレベルファイアウォール規則テーブル1065、ホスト−コントローラインタフェース1060、及びVM1005、1010はユーザ空間で動作する。カーネル空間で動作することによって、ファイアウォールエンジン1040は、それがユーザ空間で動作した場合より高速で動作する。
いくつかの実施形態のホスト1002の動作を、以下、図11乃至図13を参照して説明する。図11は、いくつかの実施形態において、VNICレベルファイアウォール規則テーブル1045を維持するために発行器1050が行うプロセス1100を示す。発行器は、ホストレベルファイアウォール規則テーブル1065が、コントローラからの規則の組の追加及び/又は改変を受け取る毎に、このプロセスを行う。つまり、プロセス1100は、ファイアウォールエージェント1055が規則テーブル1065に新たな規則の組を格納し、規則テーブル1065から規則の組を除去し、及び/又は規則テーブル1065における以前の規則の組を改変する毎に行われる。
図11に示すように、プロセス1100は、初めに(1105で)、ホストファイアウォールテーブル1065の更新の通知を受け取る。この更新は、テーブル1065に1つ又は複数の規則を追加するものか、テーブル1065から1つ又は複数の規則を除去するものか、又はテーブル1065における1つ又は複数の規則を改変するものであり得る。この更新によって影響を受けるすべての規則を集めたものを、以下、受け取った更新済み規則の組と称する。いくつかの実施形態において、その通知は、データストレージ1065からのコールバックの形態である。他の実施形態では、その通知は、ファイアウォールエージェント1055によって提供される。更に他の実施形態では、発行器がデータストレージ1065を定期的にチェックする。
次に、1110で、プロセス1100は、更新済み規則の組の中の規則の1つを選択する。次にプロセスは、その選択された規則に関連付けられた実施ポイントを(1115で)選択する。選択された規則が新たに受け取った規則であるとき、選択された実施ポイントは、1110で選択された規則の適用先識別子によって特定された実施ポイントのいずれか1つであり得る。選択された規則がホストのファイアウォール規則テーブル1065から除去済みの規則であるときは、選択された実施ポイントは、除去された規則の適用先識別子によって特定された実施ポイントのいずれかであり得る。選択された規則が以前に格納されたもので、かつその改変された実施ポイントの組を有するときは、1115で選択された実施ポイントは、選択された規則の更新によって追加済み又は除去済みの実施ポイントの1つである。
1115の後、プロセスは、いずれかのVNICレベル規則が、VNICレベルファイアウォールテーブル1045に追加済みであるか、そこから除去済みであるか、又はそこで更新済みであるかを(1120で)判定する。つまり、1120でプロセスは、選択された実施ポイント(即ち、1115で選択された実施ポイント)が、ホスト上で実行されるVMのVNICに対応するか否かを判定する。対応していない場合には、プロセスは、後述する1130に移行する。対応している場合には、プロセスは、更新を、選択された実施ポイントに対応するVNICのファイアウォール規則データストレージ1045に(1125で)プッシュする。この更新は、選択された規則が新たな規則であるとき、又は実施ポイントとしてVNICを今や含む更新された規則であるときには、ファイアウォール規則をVNICのデータストレージ1045に追加する。この更新は、選択された規則が除去されている規則であるとき、又は実施ポイントとしてVNICをもはや含んでいない更新された規則であるときには、VNICのデータストレージ1045から以前のファイアウォール規則を除去する。ファイアウォール規則をVNICのデータストレージ1045に追加する際、プロセス1100はファイアウォール規則から適用先タプルを(1025で)除去し、その後このファイアウォール規則をデータストレージ1045に追加する。
1125から、プロセスは1130に移行する。1130において、プロセスは、1110で選択された規則についてそれが調べなければならない実施ポイントの全てをそのプロセスが検査したか否かを判定する。選択された規則が、追加するべき新たな規則であるとき、又は除去すべき以前の規則であるときには、プロセスは規則の適用先識別子で指定された実施ポイントの全てを調べなればならない。他方、選択された規則が、以前の規則に対する更新であるときには、プロセスは、規則に追加された新たな実施ポイントの全て及び規則から除去された以前の実施ポイントの全てを調べなければならない。
プロセスが、選択された規則について必要な実施ポイントの全てをまだ調べていないと(1130で)判定したときには、プロセスは1115に戻り、それが調べなければならない選択された規則の別の実施ポイントを選択する。次にプロセスは、それ以降の操作を反復して、プロセスがいずれかのVNICレベル規則を変更しなければならないか否かを判定し、変更しなければならない場合には、VNICレベル規則を変更する。
プロセスが、選択された規則について必要な実施ポイントの全てを調べたと(1130で)判定したときには、プロセスは、それが更新された規則の組によって指定される規則の全てを調べたか否かを(1135で)判定する。必要な実施ポイントの全てを調べていないと判定したときには、プロセスは1110に戻り、更新された規則の組によって指定された規則の別の1つを選択し、次にこの選択された規則についてその操作1115−1130を反復する。プロセスは、更新された規則の組によって指定される規則の全てを調べたと(1135で)判定したときには、プロセスは終了する。
図12は、いくつかの実施形態において、ホストが、VMがそのホスト上でインスタンス化されたときVNICレベルファイアウォールテーブルを構成するために行うヘッドレスプロセス1200を示す。このプロセスは、テーブルの構成中にコントローラを参照することなくVNICレベルファイアウォールテーブルを構成するので、ヘッドレスプロセスと称する。プロセスは、ホスト上で、VMのインスタンス化の一部として行われるか、又はVMをインスタンス化するためのプロセスの後に行われる。図に示すように、プロセスは初めに(1205で)VMをインスタンス化し、VMのVNICのためのVNICレベルテーブルを指定する。次に、プロセスは、ホストファイアウォール規則テーブル1065における1つのファイアウォール規則を(1210で)選択する。
プロセスは、選択された規則が、インスタンス化されたVMのVNICに適用可能であるか否かを(1215で)判定する。つまり、プロセスは、適用先識別子が、選択されたファイアウォール規則の実施ポイントの1つとしての選択された規則識別子を特定しているか否かを判定する。選択されたファイアウォール規則がインスタンス化されたVMのVNICに適用可能ではないとき(規則の適用先識別子がこのVNICを特定していないとき)、プロセスは、以下に説明する1225に移行する。
選択されたファイアウォール規則の適用先識別子が、インスタンス化されたVMのVNICを特定するとき、プロセスは選択されたファイアウォール規則をVNIVのファイアウォールデータストレージ1045に(1220で)追加する。この選択されたファイアウォール規則をVNICレベルファイアウォールデータストレージ1045に追加する際、プロセス1200はファイアウォール規則から適用先タプルを除去する。1220から、プロセスは1225に移行する。
1225で、プロセスはホストレベルファイアウォール規則データストレージ1065における適用先規則の全てを調べたか否かを判定する。全てを調べていない場合には、プロセスは1210に戻り,別の規則を選択し、この選択された規則についてそれ以降の操作を反復する。プロセスが、適用先規則の全てを調べたと(1225で)判定したときには、プロセスは終了する。
図13は、いくつかの実施形態において、ソフトウェアスイッチ1035のポートが、それが受け取ったパケットについてファイアウォール規則を実施するために行うプロセス1300を示す。いくつかの実施形態では、ポートが、着信パケットと発信パケットの両方のためにこの操作を行う。他の実施形態では、ポートが、着信パケットのみか、発信パケットのみのいずれかのためにこの操作を行う。更に他の実施形態では、スイッチのポートの1つ(例えば、VMのVNICに接続しているポート)が、発信パケットのためにこの操作を行い、別のポート(例えばNICドライバを介して、例えばソフトウェアスイッチを物理NICに接続するポート)が、着信パケットのためにこの操作を行う。着信パケットと発信パケットの両方をチェックすることによって、プロセス1300は、パケットの発信元及び宛先の両方において適用先ファイアウォール規則を実施することができる。
図13に示すように、プロセスは初めに(1305で)パケットを受け取る。次にプロセスは、受け取ったパケットについてファイアウォールチェックを行うべきか否かを(1310で)判定する。いくつかの実施形態では、プロセスが、発信パケットの発信元か着信パケットの宛先であるVNICに対してファイアウォール機能がイネーブルされたか否かを判定することによってこの判定を行う。ファイアウォール機能がイネーブルされていない場合には、プロセスは終了する。
イネーブルされている場合には、プロセスは、以前に、受け取ったパケットとして同一のファイアウォール属性タプルを有するパケットのためにファイアウォール規則をチェックしていたか否かを(1315で)判定する。ファイアウォールエンジンは、パケットヘッダから取り出されたn個タプル(例えば、パケットの5個タプル:発信元、発信元ポート、宛先、宛先ポート、及びサービス)に基づいて、パケットのためのファイアウォール規則を特定する。2つのパケットは、それらのn個タプルが一致したとき同一のファイアウォール属性を有する。後述するように、いくつかの実施形態では、プロセス1300は、特定のパケットに対して、そのパケットのためのファイアウォール規則を特定した後に行うアクションを格納し、したがってプロセスは、その後にも、その特定のパケットと同一のパケットに対してこのアクションを行うことができる。しかし、他の実施形態は、行ったアクションを格納しない。これらの実施形態では、プロセスは1315においてそのチェックを行わず、パケットに対してファイアウォールチェックを行わなければならないと(1310で)判定したときには、プロセスは1310から1325に移行する。
プロセスが、ある同一パケットのためのファイアウォール規則を以前にチェックしたと(1315で)判定したときには、プロセスは1320に移行し、以前のチェックの結果であった操作(例えば、拒否又は許可)を行い、その後終了する。一方、プロセスが、ある同一パケットのためのファイアウォール規則を以前にチェックしていないと(1315で)判定したときには、プロセスは受け取ったパケット(即ち、1305で受け取ったパケット)のn個タプルをファイアウォールエンジンに渡す。n個タプルでは、ファイアウォールエンジンは、発信パケットの発信元か、着信パケットの宛先であるVNICレベルファイアウォールテーブル1045をチェックし、何のアクションが受け取ったパケットに対して行われる必要があるかを判定する。いくつかの実施形態では、VNICレベルファイアウォールテーブルはキャッチオール規則を有する。このことで、各パケットが、ファイアウォールテーブルの他のいずれの規則とも一致しないときに、少なくとも1つの規則(即ちキャッチオール規則)と一致することを確実にする。また、いくつかの実施形態では、ファイアウォール規則テーブルにおける規則が階層的に配置され、規則チェックがその階層に従って行われて、パケットが、2以上の規則と一致し得るときに下位の優先度の規則と一致する前に高位の優先度の規則に一致することを確実にする。
1325の後、プロセスは1330に移行し、そこでファイアウォールエンジンからのコールバックを受け取るまでプロセスは待機する。いくつかの実施形態では、ファイアウォールエンジンのコールバックは、そのパケットの通過が許可されるべきか、又はそれが拒否されるべきかのいずれかを指定する。プロセスがエンジンのコールバックを受け取ったとき、プロセスは1335に移行し、エンジンのコールバックに従ってアクションを行う。つまり、いくつかの実施形態では、プロセスは、コールバックがパケットが拒否されるべきことを指定しているときにはパケットを拒否する。一方、コールバックが、パケットは許可されるべきと指定しているときは、プロセスがパケットの通過を許可する。いくつかの実施形態では、コールバックがパケットが通過を許可されるべきと指定しているときに、パケットを許可しないこともある。他の関数がポートにパケットを拒否することを指示していることがあるからである。
1335では、プロセスは、ファイアウォールエンジンが指定した操作の格納も行い、したがってこの操作は、その後、ポートがその受け取ったパケットと同一のパケットを受け取ったときに、1320で用いることができる。1335の後、プロセスは終了する。
III.ネットワーク制御システム
図14は、本発明のいくつかの実施形態のネットワーク制御システム1400を示す。図に示すように、ネットワーク制御システム1400は、複数のコントローラ1405、複数のホスト1410、及び複数の管理されていないサードパーティの機器1415、並びにネットワーク1420を備える。ネットワークを通して、コントローラ、ホスト、及びサードパーティの機器は、通信するように接続されている。これらの実施形態では、ネットワーク制御システムはデータセンターにおいて実現されており、ネットワーク1420は、種々の構成部分を接続するネットワーク構造(例えば、スイッチ、ルータ、配線等)である。
いくつかの実施形態では、各ホスト1410は、その上で実行される1つ又は複数のVMを有する。いくつかの実施形態ではホストは、図10のホスト1002に類似したものであり、したがってファイアウォール実施アーキテクチャ1000を有する。サードパーティの機器は、サードパーティのファイアウォールデバイス等の管理されていない機器である。
いくつかの実施形態では、各コントローラ1400は、図5のコントローラ500に類似している。各コントローラは、適用先ファイアウォール規則及び非適用先ファイアウォール規則の構成と、ホスト及びサードパーティの機器へのその分配を担っている。いくつかの実施形態では、ファイアウォール規則構成及び分配作業負荷を分散させるために複数のコントローラを用いる。例えば、いくつかの実施形態では、第1のコントローラが第1の論理ネットワークの組のための第1のファイアウォール規則の組の処理を担っており、第2のコントローラが、第2の論理ネットワークの組のための第2のファイアウォール規則の処理を担っており、第3のコントローラが、第3の論理ネットワークの組のための第3のファイアウォール規則の処理を担っており、以下同様である。しかし、他の実施形態は、ファイアウォール規則を構成し、それを全てのホスト及びサードパーティの機器に分配するためにただ1つのコントローラを用いる。
図15は、いくつかの実施形態のネットワーク制御システム1500の別の図を示す。この図に示すように、コンピュート仮想化とネットワーク仮想化の両方を行うためにホストを仮想化する、ホストされるシステム内のコンピュート仮想化レイヤ1515とネットワーク仮想化レイヤ1520とをそれぞれ制御するために、ネットワーク制御システム1500は、第1及び第2のコントローラの組1505及び1510を用いる。
この例では、データセンター1550が2つのクラスタ1555及び1560を含み、各クラスタは、2つのホストコンピュータ、及び各ホストコンピュータ上で実行される2つのVMを有する。更に、ホストのソフトウェアスイッチ(図示せず)は、それぞれが1つのテナントの5つのVMと他のテナントの3つのVMとを接続する2つの論理スイッチを実現するべく仮想化される。
いくつかの実施形態では、ネットワーク仮想化を管理する第2のコントローラの組が、適用先ファイアウォールの構成及び分配も提供する。他の実施形態では、第3のコントローラの組がファイアウォールの構成と分配を提供するために用いられ、第1及び第2のコントローラの組は、コンピュータ及びネットワーク仮想化を管理する。更に他の実施形態では、同一のコントローラの組が、コンピュータ仮想化、ネットワーク仮想化、及びファイアウォールの構成/分配を管理する。
IV.電子システム
上述の特徴及び用途の多くは、コンピュータが読み取り可能なストレージ媒体(コンピュータ読み取り可能媒体とも称する)上に記録された命令セットとして指定されたソフトウェアプロセスとして実現される。これらの命令が、1つ又は複数の処理ユニット(例えば、1つ又は複数のプロセッサ、プロセッサのコア、又は他の処理ユニット)によって実行されるとき、命令は処理ユニットに命令に示されたアクションを行わせる。コンピュータ読み取り可能媒体の例としては、以下に限定されないが、CD−ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM等が挙げられる。コンピュータ読み取り可能媒体には、無線又は有線の接続を通して伝えられる搬送波及び電子信号は含まれない。
本明細書において、用語「ソフトウェア」は、プロセッサによる処理のためにメモリに読み出すことができる磁気ストレージに格納されたアプリケーション、又は読み取り専用メモリに存在するファームウェアを含む意味である。また、いくつかの実施形態では、複数のソフトウェアの発明を、より大きなプログラムのサブ部分として実現し、残りを独立したソフトウェアの発明として実現することができる。いくつかの実施形態では、複数のソフトウェアの発明を、個別のプログラムとしても実現することができる。最後に、本明細書に記載のソフトウェア発明を全体で実現する個々のプログラムの任意の組み合わせは、本発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムは、インストールされて1つ又は複数の電子システム上で動作するとき、実行されてそのソフトウェアプログラムの動作を行う、1つ又は複数の特定のマシンインプリメンテーションを定める。
図16は、本発明のいくつかの実施形態が実現される電子システムを概念的に示す。電子システム1600は、上述の制御、仮想化、又はオペレーティングシステムのアプリケーションのいずれかを実行するために用いることができる。電子システム1600は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ等)、電話機、PDA、又は他のあらゆる種類の電子デバイスであってよい。そのような電子システムは、種々のコンピュータ読み取り可能媒体と、他の各種コンピュータ読み取り可能媒体のためのインタフェースとを備える。電子システム1600は、バス1605、処理ユニット1610、システムメモリ1625、読み取り専用メモリ1630、永続的ストレージデバイス1635、入力デバイス1640、及び出力デバイス1645を備える。
バス1605は、電子システム1600の多数の内部デバイスと通信するように接続するシステムバス、周辺バス、及びチップセットバスの全てを表す。例えば、バス1605は、処理ユニット1610と、読み取り専用メモリ1630、システムメモリ1625、及び永続的ストレージデバイス1635とを通信するように接続する。
これらの種々のメモリユニットから、処理ユニット160は実行すべき命令と処理すべきデータを取り出して、本発明のプロセスを実行する。異なる実施形態では、処理ユニットは、1つのプロセッサ又は1つのマルチコアのプロセッサでもよい。
読み取り専用メモリ(ROM)1630は、処理ユニット1610及び電子システムの他のモジュールによって必要とされる静的データと命令を格納する。一方、永続的ストレージデバイス1635は、読み取り−書き込みメモリデバイスである。このデバイスは、電子システム1600がオフのときでも、命令とデータを格納する不揮発性メモリユニットである。本発明のいくつかの実施形態は、大容量ストレージデバイス(例えば、磁気又は光ディスク及びそれに対応するディスクドライブ)を、永続的ストレージデバイス1635として用いる。
他の実施形態は、着脱可能なストレージデバイス(例えば、フロッピー(登録商標)ディスク、フラッシュドライブ等)を永続的ストレージデバイスとして用いる。永続的ストレージデバイス1635と同様に、システムメモリ1625は、読み取り−書き込みメモリデバイスである。しかし、ストレージデバイス1635とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み取り−書き込みメモリである。システムメモリは、実行時にプロセッサが必要とする命令とデータのいくつかを格納する。いくつかの実施形態では、発明のプロセスはシステムメモリ1625、永続的ストレージデバイス1635、及び/又は読み取り専用メモリ1630に格納される。いくつかの実施形態のプロセスを実行するために、処理ユニット1610は、これらの種々のメモリユニットから実行するべき命令と処理すべきデータを取り出す。
バス1605は、入力デバイス1640と出力デバイス1645にも接続している。入力デバイスによって、ユーザが電子システムと情報をやり取りし、電子システムへのコマンドを選択することが可能になる。入力デバイス1640は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも称する)を含む。出力デバイス1645は、電子システムによって生成されるイメージを表示する。出力デバイスは、プリンタと、例えば陰極管(CRT)又は液晶ディスプレイ(LCD)等のディスプレイデバイスとを含む。いくつかの実施形態には、入力デバイスと出力デバイスの両方として機能する、タッチスクリーンのようなデバイスが含まれる。
最後に、図16に示すように、バス1605はまた、ネットワークアダプタ(図示せず)を介して電子システム1600をネットワーク1665に接続する。このようにして、コンピュータは、コンピュータのネットワーク(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、又はインターネット、又はインターネットのようなネットワークのネットワーク)の一部となり得る。電子システム1600の構成要素のいずれか又は全てを、本発明とともに用いることができる。
いくつかの実施形態は、マイクロプロセッサ、機械に読み取り可能な又はコンピュータに読み取り可能な媒体(コンピュータ読み取り可能ストレージ媒体、機械読み取り可能ストレージ媒体とも称する)にコンピュータプログラム命令を格納するストレージ又はメモリ等の電子部品を含む。そのようなコンピュータ読み取り可能媒体のいくつかの例として、RAM、ROM、読み取り専用ディスク(CD−ROM)、書き込み可能コンパクトディスク(CD−R)、書き換え可能コンパクトディスク(CD−RW)、読み取り専用デジタル多用途ディスク(例えば、DVD−ROM、二層DVD−ROM)、種々の書き込み可能/書き換え可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RW等)、フラッシュメモリ(例えば、SDカード、ミニSDカード、マイクロSDカード等)、磁気及び/又はソリッドステートハードドライブ、読み取り専用書き込み可能Blu−Ray(登録商標)ディスク、超高密度光ディスク、他のあらゆる光又は磁気媒体、及びフロッピー(登録商標)ディスクが挙げられる。コンピュータ読み取り可能媒体は、少なくとも1つの処理ユニットによって実行可能なコンピュータプログラムを格納することができ、種々の操作を行うための命令セットを含む。コンピュータプログラム又はコンピュータコードの例として、例えばコンパイラによって作り出されるマシンコード、及びコンピュータ、電子部品、又はインタプリタを用いるマイクロプロセッサによって実行される高レベルコードを含むファイルが挙げられる。
上述の議論は主としてソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを参照しているが、いくつかの実施形態は、1つ又は複数の集積回路、例えば特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)等によって行われる。いくつかの実施形態では、そのような集積回路が、回路自体に格納された命令を実行する。
本明細書で用いられる、用語「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」は全て、電子技術又は他の技術に基づくデバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的では、用語「表示」又は「表示すること」とは、電子デバイス上への表示を意味する。本明細書で用いられる、用語「コンピュータ読み取り可能媒体」、「コンピュータ読み取り可能媒体ら」、及び「機械読み取り可能媒体」は、コンピュータに読み取り可能な形態で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、無線信号、配線上のダウンロード信号、及び他のあらゆる短期的又は一時的な信号を除外する。
本発明を多数の特定の細部を参照して説明してきたが、本発明の精神から逸脱することなく他の特定の形態で実施することが可能であることを、当業者は認識されよう。加えて、多数の図面(図6乃至8及び図11乃至13を含む)は、プロセスを概念的に示している。これらのプロセスの特定の操作は、図示又は説明した正確な順序で行われなくてもよい。特定の操作は、1つの連続的な一連の操作で行われなくてもよく、異なる実施形態では、異なる特定の操作が行われてもよい。更に、前記プロセスは、いくつかのサブプロセスを用いて、又はより大きいマクロプロセスの一部として実現することもできる。
また、いくつかの実施形態は、コントローラが、ホストレベル又はコンピュートクラスタレベルのデータストレージに分配するためのファイアウォール規則の組を集約し、その後、その規則の組を、異なるクラスタの異なるホスト又は異なるホストの組に分配する。しかし、他の実施形態は、異なる形で規則を抽出する。例えば、いくつかの実施形態では、規則抽出器が、初めに規則を異なる論理ネットワーク構成体(例えば、論理スイッチ、論理ルータ、論理ネットワーク等)のための異なる組にグループ化する。これらの規則の組を分配するために、コントローラ(例えば規則抽出器又は規則分配器)は、次に異なる論理ネットワーク構成体のための規則の組を、論理ネットワーク構成体を実現する異なるホスト又はコンピュータクラスタに分配する。上述の点に鑑みれば、本発明は上記で例示した細部に限定されるのでなく、請求項の記載によって定められるものであることを当業者は理解されよう。