(57)【特許請求の範囲】
【請求項１】
複数のホストマシーンを備えるホスティングシステムで動作するホストマシーンであって、
ホストマシーンのそれぞれは、１つ以上の論理ネットワークを実現するための管理転送要素を備え、
前記ホストマシーンは、
管理転送要素（ＭＦＥ）によって実現される複数の論理ネットワークに対するデータパケットを転送するための前記ＭＦＥを備え、
前記ＭＦＥは、
前記ホストマシーンのカーネルで動作するカーネルモジュールであって、当該カーネルモジュールによって記憶される複数の転送ルールに従って、前記複数の論理ネットワークに対するパケットを転送するためのものであり、前記複数の転送ルールのサブセットが、少なくとも前記論理ネットワークのサブセットに対するパケットを、前記ホストマシーン上で実現される、異なる前記論理ネットワークに対する異なる論理ミドルボックスへ転送することを特定している、カーネルモジュールと、
前記ホストマシーンのユーザ空間で動作するユーザ空間モジュールであって、前記カーネルモジュールによってマッチングルールが記憶されていない場合にパケットを処理し、前記パケットの前記処理に基づいて、前記カーネルモジュールに対する新規ルールを生成するためのユーザ空間モジュールとを備え、
前記ホストマシーンは、更に、
前記論理ネットワークのサブセットに対する論理ミドルボックスを実現するためのミドルボックス要素であって、（ｉ）異なるパケットに対して複数の論理ミドルボックス設定のどれを使用するかを、パケットの属す前記論理ネットワークに基づいて特定し、（ｉｉ）ソフトウェア抽象化ポートを通じて前記ＭＦＥから受信される前記パケットについて前記特定した論理ミドルボックス設定に従ってミドルボックス処理を実行し、前記ミドルボックス処理の実行後に、前記ソフトウェア抽象化ポートを通じて前記パケットを前記ＭＦＥへ送信するためのミドルボックス要素を備える
ことを特徴とするホストマシーン。
【請求項２】
前記複数の転送ルールは、第１の複数の転送ルールであり、
パケットに対し、前記カーネルモジュールによってマッチングルールが記憶されていない場合に、前記ユーザ空間モジュールは、前記新規ルールを生成するために、第２の複数の転送ルールとの前記パケットとの照合を行う
ことを特徴とする請求項１に記載のホストマシーン。
【請求項３】
前記ユーザ空間モジュールは、更に、次のパケットを転送するための前記新規ルールを記憶するために、前記新規ルールを前記カーネルモジュールへ送信するためのものである
ことを特徴とする請求項２に記載のホストマシーン。
【請求項４】
前記ユーザ空間モジュールは、更に、前記ホストマシーンとは別のコントローラコンピュータから前記第２の複数の転送ルールを受信するためのものである
ことを特徴とする請求項２に記載のホストマシーン。
【請求項５】
前記ユーザ空間モジュールは、オープンフロープロトコルを通じて前記コントローラコンピュータと通信する
ことを特徴とする請求項４に記載のホストマシーン。
【請求項６】
前記複数の転送ルールは、前記カーネルモジュールが、パケットを転送するために現在使用している、あるいは直近で使用していた、ルールである
ことを特徴とする請求項１に記載のホストマシーン。
【請求項７】
前記ユーザ空間モジュールは、更に、（ｉ）前記カーネルモジュールによって記憶されている前記複数の転送ルールを監視し、及び（ｉｉ）所定の時間量の間、アクセスしていない任意の記憶されている転送ルールを削除するためのものである
ことを特徴とする請求項６に記載のホストマシーン。
【請求項８】
前記カーネルモジュールは、更に、前記ホストマシーンに常駐している前記論理ネットワークのエンドマシーンと、前記ホスティングシステムの他のホストマシーンに常駐している前記論理ネットワークの他のエンドマシーンの間で、前記複数の論理ネットワークのパケットを転送するためのものである
ことを特徴とする請求項１に記載のホストマシーン。
【請求項９】
前記論理ネットワークのそれぞれは、前記論理ネットワークの前記エンドマシーンと接続する論理転送要素のセットを含み、
前記カーネルモジュールは、前記パケットを転送する統合ブリッジのセットを含み、
前記統合ブリッジのそれぞれは、論理ネットワークの論理転送要素に対応する
ことを特徴とする請求項８に記載のホストマシーン。
【請求項１０】
前記ミドルボックス要素は、前記論理ネットワークの１つに対して複数の論理ミドルボックスを実現する
ことを特徴とする請求項１に記載のホストマシーン。
【請求項１１】
前記要素によって実現される前記論理ミドルボックスは、全てミドルボックスの第１の種別である
ことを特徴とする請求項１に記載のホストマシーン。
【請求項１２】
前記ミドルボックス要素は、第１のミドルボックス要素であって、前記ホストマシーンは、ミドルボックスの第２の種別の論理ミドルボックスを実現するための第２のミドルボックス要素を更に含む
ことを特徴とする請求項１１に記載のホストマシーン。
【請求項１３】
前記論理ネットワークの少なくとも１つは、前記第１のミドルボックス要素によって実現される前記第１の種別の第１の論理ミドルボックスと、前記第２のミドルボックス要素によって実現される前記第２の種別の第２の論理ミドルボックスとを含む
ことを特徴とする請求項１２に記載のホストマシーン。
【請求項１４】
特定の論理ネットワークに対する特定のパケットは、（ｉ）前記ＭＦＥによって前記第１のミドルボックス要素へ送信され、（ｉｉ）前記ＭＦＥによって、前記第１のミドルボックス要素による処理後に受信され、（ｉｉｉ）前記ＭＦＥによって、前記第２のミドルボックス要素へ送信され、（ｉｖ）前記ＭＦＥによって、前記第２のミドルボックス要素による処理後に受信される
ことを特徴とする請求項１３に記載のホストマシーン。
【請求項１５】
前記カーネルモジュールは、（ｉ）特定の論理ミドルボックスに対応するパケットに識別子を追加し、（ｉｉ）追加された前記識別子を有する前記パケットを、前記ミドルボックス要素へ前記ソフトウェア抽象化ポートを通じて送信する、ことによって前記ホストマシーン上で実現される前記論理ミドルボックスへパケットを転送する
ことを特徴とする請求項１に記載のホストマシーン。
【請求項１６】
前記ミドルボックス要素によって実現される論理ミドルボックスのそれぞれは異なる識別子に対応する
ことを特徴とする請求項１５に記載のホストマシーン。
【請求項１７】
前記ミドルボックス要素は、前記パケットに追加された前記識別子に基づいて、特定のパケットに対してどの論理ミドルボックス設定を使用するかを特定する
ことを特徴とする請求項１５に記載のホストマシーン。
【請求項１８】
前記識別子は、前記ミドルボックス要素に前記論理ミドルボックス設定を提供するネットワークコントローラによって、論理ミドルボックス設定のそれぞれに割り当てられる
ことを特徴とする請求項１５に記載のホストマシーン。
【発明の詳細な説明】
【技術分野】
【０００１】
【背景技術】
【０００２】
現在の多くの企業は、大規模でかつ高度なネットワークを有していて、このネットワークは、スイッチ、ハブ、ルータ、ミドルボックス（例えば、ファイヤウォール、ロードバランサ（負荷分散装置）、ソースネットワークアドレストランスレータ（変換器）、等）、サーバ、ワークステーション及び他のネットワークデバイスを備え、これらは、様々な接続、アプリケーション及びシステムをサポートしている。より高度なコンピュータネットワーキングは、ネットワーク制御用のパラダイムを要求している。このコンピュータネットワーキングには、仮想マシーンマイグレーション、ダイナミックワークロード（動的作業負荷）、マルチテナント化、及び顧客専用サービス品質及びセキュリティコンフィグレーション（構成設定）が含まれる。ネットワークは、伝統的に、個々のネットワークコンポーネントの低レベルなコンフィグレーションを通じて管理されている。ネットワークコンフィグレーションは、たいていは、配下のネットワークに依存していて、例えば、アクセス制御リスト（「ＡＣＬ」）エントリによるユーザのアクセスのブロックは、ユーザの現在のＩＰアドレスを把握していることを要求する。より複雑なタスクは、より広範囲のネットワークの知識を要求していて、ゲストユーザのポート８０のトラフィックをＨＴＴＰプロキシを通過させることは、現在のネットワークトポロジーを把握し、かつ各ゲストのロケーション（位置）を把握することを要求する。このプロセスは、ネットワークスイッチング要素が複数のユーザに渡って共有されるというより困難を伴うプロセスとなっている。
【０００３】
これを受けて、ソフトウェア定義ネットワーキング（ＳＤＮ）と呼ばれる新規のネットワーク制御パラダイムに向けて拡大している動きが存在する。このＳＤＮパラダイムでは、ネットワーク内の１つ以上のサーバで動作するネットワークコントローラが、制御ロジックを制御し、維持し、かつ実現する。この制御ロジックは、ユーザ単位で、共有ネットワークスイッチング要素の転送行動を管理する。ネットワーク管理決定を行うことは、しばしば、ネットワーク状態の知識を要求する。管理決定を行うことを容易にするために、ネットワークコントローラは、ネットワーク状態の表示を作成して維持し、そして、管理アプリケーションがネットアーク状態の表示へアクセスすることができるアプリケーションプログラミングインタフェースを提供する。
【０００４】
大規模ネットワーク（データセンタ及び企業ネットワークの両方を含む）の維持の主要な目的のいくつかには、スケーラビリティ、モビリティ、及びマルチテナント性がある。これらの目的の１つに取り組まれている多くの方法は、それ以外の目的の少なくとも１つを阻害するものとなっている。例えば、１つには、Ｌ２ドメイン内の仮想マシーンに対してネットワークモビリティを容易に提供することができるが、Ｌ２ドメインは大きいサイズに変更することができない。また、ユーザの分離を大きく維持することはモビリティを複雑にする。このように、スケーラビリティ、モビリティ、及びマルチテナント性の目的を満足することができる改良されたソリューションが必要とされている。
【発明の概要】
【０００５】
いくつかの実施形態は、ユーザに、１つ以上のミドルボックス（例えば、ファイヤウォール、ロードバランサ（負荷分散装置）、ソースネットワークアドレストランスレータ、侵入検出システム（ＩＤＳ）、ワイドエリアネットワークオプティマイザ等）を含む論理ネットワークを特定することを可能にするシステムを提供する。このシステムは、論理ネットワークの仮想マシーンも管理するいくつかの物理マシーン上で動作するいくつかの管理スイッチング要素に渡って、論理転送要素（例えば、論理スイッチ、論理ルータ等）を配信することによって論理ネットワークを実現する。このような論理ネットワークを実現する際には、いくつかの実施形態のシステムは、異なる方法で異なるミドルボックスを実現する。例えば、このシステムは、分散方法で（例えば、管理スイッチング要素と平行して物理マシーン上で動作するいくつかの管理ミドルボックス要素に渡って実現されるミドルボックスを用いる）第１のミドルボックスを実現することができ、また、集中方法で（例えば、単一の電子機器あるいは仮想マシーンとして、クラスタとして）第２のミドルボックスを実現することができる。いくつかの実施形態では、分散方法であるいは集中方法で特定のミドルボックスを実現するかどうかについての判定は、ミドルボックスが分散されている場合の異なるミドルボックス要素間の状態共有要件に基づいている。
【０００６】
いくつかの実施形態では、論理ミドルボックスの物理ネットワークへの取り得る実装に対するスペクトルは、完全分散されているミドルボックスから完全集中されているミドルボックスの範囲に渡る。加えて、単一のタイプのミドルボックスは、同一の管理論理ネットワーク内を含む、集中形式あるいは分散形式の両方で実現することができる。例えば、ユーザは、外部ネットワークからの到来するすべてのトラフィックをフィルタ処理するための第１のファイヤウォールと、論理ネットワークの異なるサブネット間のトラフィックをフィルタ処理するための第２のファイヤウォールとを要望する場合がある。いくつかの場合、最適なソリューションは、すべての外部の到来トラフィックが転送される単一の電子機器としてファイヤウォールを実現することができる一方で、論理ネットワークの仮想マシーン群が管理される物理マシーン群のすべてに渡る分散形式の第２のファイヤウォールを実現することができる。
【０００７】
このスペクトラムの一旦は、完全分散ミドルボックスアーキテクチャである。この場合、ミドルボックスは、いくつかのノード（物理ホストマシーン）に渡って実現される。物理ホストマシーンのそれぞれは、いくつかの実施形態では、論理ミドルボックスを含む論理ネットワーク内の少なくとも１つの仮想マシーンを管理する。加えて、管理スイッチング要素は、ホストマシーン群のそれぞれにおいて、論理ネットワークの論理転送要素を実現するために動作する。特定の物理ホストマシーンは、（例えば、異なるテナントに属する）複数の論理ネットワーク内で仮想マシーン群を管理することができるので、ホスト上で動作する、分散ミドルボックスと管理スイッチング要素は、異なる論理ネットワークからミドルボックス群と論理転送要素群とを実現するために仮想化することができる。
【０００８】
いくつかの実施形態では、ミドルボックスは、最小の共有の状態（あるいは完全に共有されていない状態）がミドルボックスインスタンス間で要求される場合に分散形式で実現することができる。少なくともいくつかのタイプのミドルボックスはステートフルであり、この場合、これらのミドルボックスは、マシーン間（例えば、ネットワーク内の２つの仮想マシーン間、ネットワーク内の仮想マシーンと外部マシーンとの間、等）での接続に対する状態を確立する。いくつかの実施形態では、ミドルボックスは、各トランスポートレイヤ接続（例えば、ＴＣＰ接続、ＵＤＰ接続）に対する状態を確立する。いくつかの実施形態の分散の場合、特定のホストマシーンで動作するミドルボックス要素は、これを介して通過するトランスポート接続に対する状態を作成するが、他のホストマシーン上で動作する他のミドルボックス要素との状態を共有する必要はない。特定のホストマシーン上で管理される仮想マシーンだけに状態を適用し、そのミドルボックスが他の仮想マシーンに対して確立されている状態情報を使用して任意の解析を実行する必要がない場合、ミドルボックスは分散され得る。このようなミドルボックスの例には、ソースネットワークアドレス変換（Ｓ−ＮＡＴ）、宛先ネットワークアドレス変換（Ｄ−ＮＡＴ）、及びファイヤウォールが含まれる。
【０００９】
加えて、いくつかの実施形態は、最小レベルの状態共有を有する、ミドルボックスの分散を可能にする。例えば、ロードバランサは、マシーン群にクエリを発行して、トラフィックの均衡を図って、そのマシーン群のそれぞれに送信される現在のレベルのトラフィックを判定し、それを他のロードバランサに分散する。しかしながら、各ロードバランス処理（balancing）要素は、ロードバランス処理アルゴリズムを実行して、定期的な間隔でクエリを実行することができる。これは、仮想マシーンの１つにパケットが転送される毎に、あるいはトランスポート（例えば、ＴＣＰ、ＵＤＰ等）接続が仮想マシーンの１つと確立される毎に、各他のロードバランス要素と状態情報を共有するものではない。
【００１０】
スペクトルの他方の側は、完全集中ミドルボックス実装である。このような集中実装では、ホスト内の管理スイッチング要素は、処理するためのミドルボックスに対するすべてのトラフィックを同一のミドルボックス電子機器へ送信する。この単一のミドルボックスは、自身が所有するホストマシーン内（あるいはネットワーク内の複数の仮想マシーンの１つとする同一のホスト内）の物理ネットワーク内で動作する、個別の物理マシーンあるいは個別の仮想マシーンとすることができる。管理スイッチング要素はパケットがミドルボックスへ送信されるべきであることを識別する場合、スイッチング要素は、パケットを物理ネットワークを介して（例えば、トンネルを介して）ミドルボックスへ送信する。ミドルボックスはパケットを処理して、そのパケット（実際には、新規のパケット）を処理用の別の管理スイッチング要素（例えば、プールノード）へ送信する。
【００１１】
いくつかの実施形態は、分散ミドルボックスがデータプレーン速度でパケット共有を要求する場合、そのような集中ミドルボックスを使用する。つまり、ミドルボックス要素によって処理される各トラフィックパケットに対して、このミドルボックス要素は、パケット処理から得られる状態変更ですべての他のミドルボックスインスタンスを更新しなければならないであろう。つまり、ミドルボックスを介して通過する各トラフィックパケットは、他のミドルボックスインスタンスのすべてを更新するために、追加のトラフィックが急増することになる。このようなミドルボックスの例は、ＩＤＳ、及びＷＡＮオプティマイザが含まれる。例えば、侵入を適切に監視するために、ＩＤＳによる処理は、ネットワーク内の接続のほぼすべてを把握する必要がある。このように、ＩＤＳが分散されている場合、新規の状態の更新は、分散されているＩＤＳ要素によって処理されるパケット毎に送信される必要があろう。
【００１２】
第３のオプションとして、いくつかの実施形態は、完全集中アーキテクチャに類似するいくつかのミドルボックスに対するクラスタアーキテクチャを使用して、このクラスタは、単一の物理マシーンではなく集中リソースプールとして動作する。ミドルボックスクラスタ（例えば、ＩＤＳボックスのクラスタ）は、ミドルボックスを使用するネットワーク（あるいはネットワーク群）がより大きい場合に有益であり、単一の電子機器は、より大きな配備を取り扱うための十分なリソース（例えば、メモリ、処理電力等）を有していない場合がある。しかしながら、クラスタが状態情報のすべての知識を要求するミドルボックスである場合、この状態情報は、クラスタ内の様々なマシーン間で共有されることになる。いくつかの実施形態では、ミドルボックスクラスタは、解析が、トランスポート接続（あるいは、パケット毎の頻度よりも低い、接続毎のいくつかの更新）単位ではなく、パケット単位で状態更新を要求しない場合は、単一の電子機器よりも良好なオプションとなる。要求される高速な状態共有を実行するために、いくつかの実施形態は、状態情報を共有するための個別の専用高速接続を介してクラスタ内のミドルボックスマシーンとリンクする。
【００１３】
上述の要約は、本発明のいくつかの実施形態への簡潔な導入として供する。本明細書で開示される発明特定事項のすべてが導入あるいは概要であることを意味するものではない。以下に続く詳細説明と、その詳細説明で参照される図面は、要約で記載される実施形態と、他の実施形態を更に説明するものである。従って、本明細書によって記載されるすべての実施形態を理解するためには、要約、詳細説明及び図面の完全なる参照が必要とされる。また、請求する特定事項は、要約、詳細説明及び図面における例示の詳細によって制限されるものではなく、むしろ、添付の請求項によって定義されるものである。これは、請求する特定事項は、その特定事項の精神から逸脱することなく他の特定の形態で実施することができるからである。
【図面の簡単な説明】
【００１４】
本発明の新規な特徴は、添付の請求項で説明される。しかしながら、説明の目的のために、本発明のいくつかの実施形態が以下の図で説明される。
【図１】完全分散されているミドルボックスから完全集中されているミドルボックスの範囲に渡る、論理ミドルボックスの物理ネットワークへの実装に対するスペクトルを概念的に示す図である。
【図２】いくつかの実施形態の論理ネットワークトポロジーを概念的に示す図である。
【図３】いくつかの実施形態の分散ミドルボックスの実装を概念的に示す図である。
【図４】いくつかの実施形態のミドルボックスの完全集中実装を概念的に示す図である。
【図５】いくつかの実施形態のリソースのクラスタとしてのミドルボックスの実装を概念的に示す図である。
【図６】いくつかの実施形態の侵入検出システムを含む論理ネットワークを実現するネットワークを概念的に示す図である。
【図７】分散ソフトウェアミドルボックス要素及びソフトウェアスイッチング要素の両方を含むいくつかの実施形態のホストマシーンのアーキテクチャを概念的に示す図である。
【図８】論理ネットワークを実装するために、管理スイッチング要素及び分散ミドルボックス要素を構成設定するためのいくつかの実施形態のネットワーク制御システムを示す図である。
【図９】いくつかの実施形態のネットワーク制御システムを介するデータの伝搬を概念的に示す図である。
【図１０】いくつかの実施形態のネットワークコントローラの例示のアーキテクチャを示す図である。
【図１１】いくつかのミドルボックスを介在する複雑な論理ネットワークトポロジーを概念的に示す図である。
【図１２】ホスト仮想化環境における図１１のネットワークの１つの特定の物理実装を概念的に示す図である。
【図１３】本発明のいくつかの実施形態が実現される電子システムを概念的に示す図である。
【発明を実施するための形態】
【００１５】
以下の本発明の詳細説明では、本発明のいくつかの詳細、例示及び実施形態を説明し、かつ記載する。しかしながら、本発明が説明される実施形態に限定されるものではなく、また、本発明が、議論されるいくつかの特定の詳細及び例示を伴わずに実現されても良いことを当業者には明らかでかつ明白であろう。
【００１６】
いくつかの実施形態は、ユーザに論理ネットワークを特定することを可能にするシステムを提供する。この論理ネットワークは、１つ以上のミドルボックス（例えば、ファイヤウォール、ロードバランサ、ネットワークアドレス変換器、侵入検出システム（ＩＤＳ）、ワイドエリアネットワーク（ＷＡＮ）オプティマイザ等）を含んでいる。このシステムは、いくつかの管理スイッチング要素に渡って論理転送要素（例えば、論理スイッチ、論理ルータ等）を分散させることによって論理ネットワークを実現する。この管理スイッチング要素は、その論理ネットワークのホスト仮想マシーンでもあるいくつかの物理マシーン上で動作する。
【００１７】
このような論理ネットワークの実現においては、いくつかの実施形態のシステムは、様々な方法で様々なミドルボックスを実現する。例えば、システムは、分散形式（例えば、管理スイッチング要素と並行して物理マシーン上で動作するいくつかの管理ミドルボックスに渡って実現されるミドルボックスを用いる）で第１のミドルボックスを実現し、集中形式（例えば、単一の電子機器あるいは仮想マシーンとして、クラスタとして）で第２のミドルボックスを実現することができる。いくつかの実施形態では、分散形式あるいは集中形式で特定のミドルボックスを実現するかどうかについての判定は、ミドルボックスが分散されている場合での異なるミドルボックスとの間での状態共有要件に基づいている。
【００１８】
図１は、完全分散されているミドルボックスから完全集中されているミドルボックスの範囲に渡る、論理ミドルボックスの物理ネットワークへの実装に対するスペクトル１００を概念的に示す図である。上述のように、異なるミドルボックスを、このスペクトルに沿う異なる地点で実現することができる。加えて、シングルタイプ（単一型）のミドルボックスを、同一の管理論理ネットワーク内を含む、集中形式あるいは分散形式の両方で実現することができる。例えば、ユーザは、外部ネットワークから到来するすべてのトラフィックをフィルタリングするための第１のファイヤウォールと、論理ネットワークの異なるサブネットワーク間のトラフィックをフィルタリングするための第２のファイヤウォールを要望する場合がある。いくつかの場合、最適なソリューションは、外部から到来するすべてのトラフィックが転送される単一の電子機器として第１のファイヤウォールを実現し、一方で、論理ネットワークの仮想マシーンが実現されている物理マシーン群のすべてに渡る分散形式で第２のファイヤウォールを実現することである。
【００１９】
スペクトル１００の左端では、いくつかの実施形態の完全分散されているミドルボックスアーキテクチャ１０５が示されている。図に示されるように、ミドルボックスは、いくつかのノード（物理ホストマシーン）に渡って実現されている。いくつかの実施形態では、物理ホストマシーンのそれぞれは、論理ミドルボックスを含む論理ネットワーク内で少なくとも１つの仮想マシーンを管理する。加えて、管理スイッチング要素は、ホストマシーンのそれぞれで動作して、論理ネットワークの論理転送要素（例えば、論理ルータ、論理スイッチ）を実現する。特定の物理ホストマシーンは、２つ以上の論理ネットワーク（例えば、異なるテナントに属している）内で仮想マシーンを管理することができるので、分散ミドルボックス及びホスト上で動作する管理スイッチング要素の両方を、異なる論理ネットワークからのミドルボックス及び論理転送要素を実現するために仮想化することができる。いくつかの実施形態では、ミドルボックスは、ホストマシーンのハイパーバイザとして動作するモジュールあるいはモジュールのセットとして実現される。
【００２０】
図で示されるように、ミドルボックスは、最小の共有の状態（あるいは完全に共有されていない状態）がミドルボックスインスタンス間で要求される場合に分散形式で実現することができる。少なくともいくつかのタイプのミドルボックスはステートフルであり、この場合、これらのミドルボックスは、マシーン間（例えば、ネットワーク内の２つの仮想マシーン間、ネットワーク内の仮想マシーンと外部マシーンとの間、等）での接続に対する状態を確立する。いくつかの実施形態では、ミドルボックスは、各トランスポートレイヤ接続（例えば、ＴＣＰ接続、ＵＤＰ接続）に対する状態を確立する。いくつかの実施形態の分散の場合、特定のホストマシーンで動作するミドルボックス要素は、これを介して通過するトランスポート接続に対する状態を作成するが、他のホストマシーン上で動作する他のミドルボックス要素との状態を共有する必要はない。特定のホストマシーン上で管理される仮想マシーンだけに状態を適用し、そのミドルボックスが他の仮想マシーンに対して確立されている状態情報を使用して任意の解析を実行する必要がない場合、ミドルボックスは分散され得る。このようなミドルボックスの例には、ソースネットワークアドレス変換（Ｓ−ＮＡＴ）、宛先ネットワークアドレス変換（Ｄ−ＮＡＴ）、及びファイヤウォールが含まれる。
【００２１】
加えて、いくつかの実施形態は、最小レベルの状態共有を有する、ミドルボックスの分散を可能にする。例えば、ロードバランサは、マシーン群にクエリを発行して、トラフィックの均衡を図って、そのマシーン群のそれぞれに送信される現在のレベルのトラフィックを判定し、それを他のロードバランサに分散する。しかしながら、各ロードバランス処理（balancing）要素は、ロードバランス処理アルゴリズムを実行して、定期的な間隔でクエリを実行することができる。これは、仮想マシーンの１つにパケットが転送される毎に、あるいはトランスポート（例えば、ＴＣＰ、ＵＤＰ等）接続が仮想マシーンの１つと確立される毎に、各他のロードバランス要素と状態情報を共有するものではない。
【００２２】
スペクトル１００の他方の側は、完全集中ミドルボックス実装１１０である。この実装では、ホスト内の管理スイッチング要素は、処理するためのミドルボックスに対するすべてのトラフィックを同一のミドルボックス電子機器へ送信する。この単一のミドルボックスは、自身が所有するホストマシーン内（あるいはネットワーク内の複数の仮想マシーンの１つとする同一のホスト内）の物理ネットワーク内で動作する、個別の物理マシーンあるいは個別の仮想マシーンとすることができる。管理スイッチング要素はパケットがミドルボックスへ送信されるべきであることを識別する場合、スイッチング要素は、パケットを物理ネットワークを介して（例えば、トンネルを介して）ミドルボックスへ送信する。ミドルボックスはパケットを処理して、そのパケット（実際には、新規のパケット）を処理用の別の管理スイッチング要素へ送信する。
【００２３】
いくつかの実施形態では、新規のパケットが送信される管理スイッチング要素は、プールノードとなる。プールノードは、いくつかの実施形態では、エッジスイッチング要素（即ち、これらは、ホストマシーン上に配置されていて、仮想マシーンに直接接続されている）が処理することができないトラフィックを処理するための、ネットワーク内部に配置される（即ち、ネットワークエッジにある任意の仮想マシーンに直接節属されていない）特定のタイプの管理スイッチング要素である。他の実施形態では、パケットをプールノードへ送信するのではなく、ミドルボックスは、トラフィックを、ミドルボックス電子機器に直接構築されている管理スイッチング要素へ送信する。
【００２４】
いくつかの実施形態は、分散ミドルボックスがデータプレーン速度でパケット共有を要求する場合、そのような集中ミドルボックスを使用する。つまり、ミドルボックス要素によって処理される各トラフィックパケットに対して、このミドルボックス要素は、パケット処理から得られる状態変更ですべての他のミドルボックスインスタンスを更新しなければならないであろう。つまり、ミドルボックスを介して通過する各トラフィックパケットは、他のミドルボックスインスタンスのすべてを更新するために、追加のトラフィックが急増することになる。このようなミドルボックスの例は、ＩＤＳ、及びＷＡＮオプティマイザが含まれる。例えば、侵入を適切に監視するために、ＩＤＳによる処理は、ネットワークの接続のほぼすべてを把握する必要がある。このように、ＩＤＳが分散されている場合、新規の状態の更新は、分散されているＩＤＳ要素によって処理されるパケット毎に送信される必要があろう。
【００２５】
ミドルボックスクラスタアーキテクチャ１１５は、単一の物理マシーンではなく集中リソースプールとして動作すること以外は、完全集中アーキテクチャ１１０と同様である。図に示されるように、ミドルボックスクラスタ（例えば、ＩＤＳボックスのクラスタ）は、ミドルボックスを使用するネットワーク（あるいはネットワーク群）がより大きい場合に有益であり、単一の電子機器は、より大きな配備を取り扱うための十分なリソース（例えば、メモリ、処理電力等）を有していない場合がある。しかしながら、クラスタが状態情報のすべての知識を要求するミドルボックスである場合、この状態情報は、クラスタ内の様々なマシーン間で共有されることになる。いくつかの実施形態では、ミドルボックスクラスタは、解析が、トランスポート接続（あるいは、パケット毎の頻度よりも低い、接続毎のいくつかの更新）単位ではなく、パケット単位で状態更新を要求しない場合は、単一の電子機器よりも良好なオプションとなる。要求される高速な状態共有を実行するために、いくつかの実施形態は、状態情報を共有するための個別の専用高速接続を介してクラスタ内のミドルボックスマシーンとリンクする。
【００２６】
上述の説明は、いくつかの実施形態のネットワーク内の様々な実装の論理ミドルボックスの例を示している。より詳細な実施形態のいくつかは以下で説明する。セクションＩは、いくつかの実施形態の異なるミドルボックスアーキテクチャを記載している。セクションＩＩは、いくつかの実施形態の分散ミドルボックス実装を記載している。次に、セクションＩＩＩは、１つ以上のミドルボックスを含む論理ネットワークを実現するために、ネットワークを構成設定するためのいくつかの実施形態のネットワーク制御システムを記載している。セクションＩＶは、いくつかの異なるミドルボックスを備えるネットワークの例を記載している。そして、セクションＶは、本発明のいくつかの実施形態が実現される電子システムを記載している。
【００２７】
Ｉ．様々なミドルボックスアーキテクチャ
上述のように、いくつかの実施形態は、管理ネットワーク内の様々なアーキテクチャを使用して様々なミドルボックスを実現する。同一の論理ネットワークトポロジーに対してでさえも、いくつかのミドルボックスが分散形式（ネットワークの仮想マシーンが動作する各ホストで動作するミドルボックス要素を用いる）で実現され、一方で、他のミドルボックスは、（単一の電子機器を用いる、あるいは、ホスト上の管理スイッチング要素が接続するクラスタを用いる）集中形式で実現される。
【００２８】
図２は、いくつかの実施形態の論理ネットワークトポロジー２００を概念的に示す図である。ネットワークトポロジー２００は、説明のための簡略化ネットワークである。このネットワークは、２つの論理Ｌ２スイッチ２０５及び２１０を含み、これらは論理Ｌ３ルータ２１５に接続されている。論理スイッチ２０５は仮想マシーン２２０及び２２５と接続していて、一方で、論理スイッチ２１０は仮想マシーン２３０及び２３５と接続している。論理ルータ２１５は、また、外部ネットワーク２５０と接続している。
【００２９】
加えて、ミドルボックス２４０は、論理ルータ２１５に接続している。ネットワークトポロジー２００は、ミドルボックスを組み込むことができる１つの特定の論理ネットワークトポロジーを単に示していることを、当業者は認識するであろう。様々な実施形態では、ミドルボックスは、２つの他のコンポーネント間に直接配置されていても良いし、あるいはゲートウェイと論理ルータ（例えば、論理ネットワークへ進入するあるいは退出するすべてのトラフィックを監視し処理するために）との間に直接配置されていても良いし、あるいはより複雑なネットワーク内の他のロケーション内に配置されていても良い。
【００３０】
図２に示されるアーキテクチャでは、ミドルボックス２４０は、１つのドメインから他のドメインへの、あるいは、外界とドメインとの間の、ダイレクトトラフィックフロー内には配置されていない。従って、どのパケットが処理用のミドルボックスへ送信されるべきかを判定する論理ルータ２１５に対して、ルーティングポリシーが（ネットワークアドミニストレータのようなユーザによって）特定されるまで、パケットはミドルボックスへ送信されることはない。いくつかの実施形態は、宛先アドレス（例えば、宛先ＩＰあるいはＭＡＣアドレス）を越えるデータに基づいてデータを転送するポリシールーティングルールを使用することができる。例えば、ユーザは、例えば、ネットワークコントローラアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて、論理スイッチ２０５によってスイッチされる（切り替えられる）論理サブネットにおけるソースＩＰアドレスを含むすべてのパケットが、あるいは、論理スイッチ２１０によってスイッチされる（切り替えられる）論理サブネットに向けられている外部ネットワーク２５０からネットワークへ進入するすべてのパケットが、処理用のミドルボックス２４０へ向けられるべきであることを特定することができる。
【００３１】
異なるミドルボックスは、ネットワーク内で異なる機能を実行することができる。例えば、ファイヤウォールは、データパケットを解析して、そのデータパケットの通過（即ち、ＡＣＬフローエントリと同様に）を許可するべきであるか否かを判定する。ファイヤウォールはルールのセット（例えば、ユーザによって入力される）を記憶している。このルールのセットは、ファイヤウォールがパケットを破棄する（即ち、廃棄する）か、あるいはパケットの通過を許可するかを（あるいは、いくつかの場合、パケットを破棄して、送信元にエラー応答を返信することによってパケットを拒否する）判定する。いくつかの実施形態では、ファイヤウォールは、トランスポート（例えば、ＴＣＰ及びＵＤＰの少なくとも一方）接続の追跡を維持するステートフルファイヤウォールであり、そして、より高速なパケット処理決定を行うための記憶された状態情報を使用する。
【００３２】
ソースネットワークアドレス変換（Ｓ−ＮＡＴ）は、パケットヘッダ内のパケットのソースＩＰアドレスを変更する。例えば、Ｓ−ＮＡＴを使用することで、様々なマシーンからのパケットのソースを１つのＩＰアドレスへ変更することによって、異なるＩＰアドレスを有するいくつかの異なるマシーンのＩＰアドレスを宛先マシーンから隠蔽することができる。宛先ネットワークアドレス変換（Ｄ−ＮＡＴ）は、同様に、実際のＩＰアドレスをソースマシーンから隠蔽するために、パケットの宛先ＩＰアドレスを変更する。ロードバランス（負荷分散）処理は、様々なアルゴリズム（例えば、ラウンドロビン、ランダム割当等）を使用するＤ−ＮＡＴの形式をとり、いくつかの宛先マシーンに渡るトラフィックの均衡を図る。ロードバランサは、ソースマシーンに晒される特定のＩＰアドレスに対するパケットを受信し、そのパケットの宛先ＩＰアドレスを修正して、ロードバランス処理アルゴリズムによって選択される宛先マシーンの特定の１つと照合する。
【００３３】
侵入検出システム（ＩＤＳ）は、いくつかの実施形態では、パッシブ（受動型）ミドルボックスであり、これは、悪意のある行動あるいはポリシー違反について、論理ネットワークを監視する。ＩＤＳは、トランスポート接続（例えば、ＴＣＰ接続、ＵＤＰ接続等）を検証して、ネットワーク上の攻撃が発生しているかどうかを判定することができる。
【００３４】
ＷＡＮオプティマイザは、ＷＡＮに渡るデータ転送の効率性を向上させる（例えば、ＷＡＮに渡るデータのフローを促進させる）ためのミドルボックスデバイスである。ＷＡＮオプティマイゼーション（最適化）技術の例は、データデデュプリケーション（重複除外）、データ圧縮、レイテンシーオプティマイゼーション（待ち時間最適化）、キャッシュ処理及びプロキシ処理、前方誤り訂正、プロトコルスプーフィング、トラフィックシェーピング、イコライジング、接続制限、単純レート制限等を含んでいる。上述の内容は、いくつかの異なるミドルボックスのいくつかのリストである一方で、いくつかの実施形態が、分散形式あるいは集中形式で実現することができる様々な異なるミドルボックスを含むことができることを、当業者は認識するであろう。
【００３５】
ミドルボックスのタイプに依存して、いくつかの場合、ユーザによって要求される実装のタイプに依存して、図２に示されるようなミドルボックスは、集中形式あるいは分散形式のどちらかで実現されることになる。図３は、いくつかの実施形態の分散実装３００を概念的に示している。特に、図３は、いくつかのノードを示していて、これには、第１のホストマシーン３０５、第２のホストマシーン３１０、第３のホストマシーン３１５、及び第Ｎのホストマシーン３２０を含んでいる。最初の３つのノードのそれぞれはネットワーク２００のいくつかの仮想マシーンを管理し、仮想マシーン２２０は第１のホストマシーン３０５上で管理され、仮想マシーン２２５及び２３５は第２のホストマシーン３１０上で管理され、仮想マシーン２３０は第３のホストマシーン３１５上で管理される。
【００３６】
加えて、ホストマシーンのそれぞれは、管理スイッチング要素（「ＭＳＥ」）を含んでいる。いくつかの実施形態の管理スイッチング要素は、１つ以上の論理ネットワークに対する論理転送要素を実現するソフトウェア転送要素である。例えば、ホスト３０５−３２０内のＭＳＥは、ネットワーク２００の論理転送要素を実現する転送テーブル内のフローエントリを含んでいる。具体的には、ホストマシーン上のＭＳＥは、論理スイッチ２０５及び２１０に加えて、論理ルータ２１５を実現する。一方、いくつかの実施形態だけが、論理スイッチに接続されている少なくとも１つの仮想マシーンが特定のノードに配置されている場合に、その特定ノードにおいて論理スイッチを実現する（即ち、ホスト３０５におけるＭＳＥ内で論理スイッチ２０５と論理ルータ２１５とだけを実現する）。第Ｎのホスト３２０は、ネットワーク２００からの任意の仮想マシーンを含んでいないので、ホスト上に常駐するＭＳＥは、ネットワーク２００からの任意の論理転送要素を実現しない。
【００３７】
いくつかの実施形態の実装３００は、また、ホストマシーンと接続するプールノード３４０を含んでいる。いくつかの実施形態では、ホストに常駐するＭＳＥは、第１のホップ処理を実行する。つまり、これらのＭＳＥは、仮想マシーンから送信された後にパケットが到達する第１の転送要素であり、また、この第１のホップで論理スイッチングと論理ルーティングのすべてを実行することを試行する。しかしながら、いくつかの場合、特定のＭＳＥは、ネットワークに対する論理転送情報のすべてを含むフローエントリを記憶しない場合があるので、特定のパケットを用いて何をするかを知ることができない場合がある。このようないくつかの実施形態では、ＭＳＥは、パケットを、更に処理するためのプールノード３４０へ送信する。このプールノードは、内部の管理スイッチング要素であり、いくつかの実施形態では、エッジソフトウェアスイッチング要素よりも論理ネットワークのより大きな部分を網羅するフローエントリを記憶する。
【００３８】
ネットワーク２００の仮想マシーンが常駐するホストに渡って論理スイッチング要素の分散と同様に、ミドルボックス２４０は、これらのホスト３０５−３１５上のミドルボックス要素に渡って分散される。いくつかの実施形態では、ミドルボックスモジュール（あるいはモジュールのセット）は、ホストマシーン上に常駐する（例えば、ホストのハイパーバイザ内で動作する）。ユーザが論理ネットワーク（例えば、ネットワーク２００）をセットアップする場合、その入力には、ミドルボックスからのコンフィグレーション（構成設定）が含まれる。例えば、ファイヤウォールに対しては、ユーザは、パケットフィルタリングに対するルールのセットを（例えば、ＩＰアドレス、ＴＣＰ接続等に基づいて）入力することになるであろう。いくつかの実施形態では、論理転送要素を実現するために管理スイッチング要素を提供するために使用されるネットワーク制御システムは、ホストマシーン上で動作する様々なミドルボックス要素を提供するためにも使用することができる。ユーザがミドルボックスのコンフィグレーションをネットワーク制御システムのコントローラへ入力する場合、このコントローラは、ミドルボックスのコンフィグレーションが実現されるべき特定のノード群を識別し、そのコンフィグレーションをこれらのノード群へ配信する（例えば、コントローラ群のセットを通じて）。
【００３９】
仮想マシーン群の１つがパケットを（例えば、仮想マシーン群の別の１つへ、外部アドレスへ等）送信する場合、パケットは、最初に、処理用のローカル管理スイッチ要素へ進む。ＭＳＥは、自身に記憶されているフローエントリを使用して、パケットをミドルボックスへ送信するための転送決定を行うことができ、いくつかの実施形態では、パケットを同一のホスト上のローカルミドルボックス要素へ送信する。いくつかの実施形態では、ミドルボックス要素とＭＳＥは、最小遅延でパケットを送信するためのソフトウェアポートをネゴシエートする。ミドルボックスがパケットを処理した後、いくつかの実施形態は、パケットを、この同一ポートを通じてＭＳＥへ返信する。いくつかの実施形態では、このパケットは、新規のパケットとして、ミドルボックスからＭＳＥへと送信される。そのため、ＭＳＥによって新規の処理を要求する。しかしながら、いくつかの状況では、パケットは返信されない。例えば、ミドルボックスがファイヤウォールである場合、ミドルボックスはパケットをブロックするあるいは破棄する。加えて、ミドルボックスのいくつかの実施形態はパッシブであり、また、パケットのデュプリケートが統計の追跡を維持するためにミドルボックスに順番に送信されるが、スイッチング要素へは返信されない。
【００４０】
図３は、ホスト３０５−３２０に渡って実現される１つだけの論理ネットワークを示している一方で、いくつかの実施形態は、ホスト群のセットに渡るいくつかの論理ネットワーク（例えば、異なるテナントに対する）を実現する。このように、特定のホスト上のミドルボックス要素は、いくつかの異なる論理ネットワークに属するいくつかの異なるミドルボックスに対するコンフィグレーションを実際に記憶することができる。例えば、ファイヤウォール要素は、２つ（以上の）異なるファイヤウォールを実現するために仮想化されていても良い。これらは、２つの個別のミドルボックスインスタンスとして効果的に動作することになり、そうすることで、ミドルボックス要素はいくつかの（同一タイプの）「仮想」ミドルボックスにスライス（分割）される。加えて、ホスト上のＭＳＥがミドルボックスへパケットを送信する場合、いくつかの実施形態は、スライス識別子（あるいはタグ）をパケット上に付加する（プリペンドする）ことで、いくつかの仮想ミドルボックスの内、どの仮想ミドルボックスからパケットが送信されているかを識別する。複数のミドルボックスが単一の論理ネットワークに対して同一のミドルボックス要素上で実現される場合（例えば、２つの異なるロードバランサ）、スライス識別子は、パケットが属している論理ネットワークではなく特定のミドルボックスのスライスを識別することが必要となる。異なる実施形態は、ミドルボックスに対して異なるスライス識別子を使用することができる。
【００４１】
いくつかの実施形態で分散することができるミドルボックスの例は、ファイヤウォール、Ｓ−ＮＡＴ、及びロードバランサを含んでいる。これらの場合のそれぞれは、ミドルボックスは、パケット処理における積極的な役割（アクティブロール）を果たす（即ち、Ｓ−ＮＡＴとロードバランサは、パケットのソースアドレスと宛先アドレスとをそれぞれ修正する一方で、ファイヤウォールは、パケットを許可するかあるいは破棄するかについての決定を行う）。しかしながら、特定のノード上のこれらのミドルボックス要素のそれぞれは、他のノード上の対応するミドルボックス要素から情報を要求することなくそれ自身で所有するもので機能することができる。他のロードバランサ要素が同一のアルゴリズムを使用しない限り、どの仮想マシーンも過負荷状態になることはなさそうであるという仮定の下、分散されたロードバランサ要素でさえも、異なる仮想マシーン群に渡って到来するトラフィックを個別にロードバランス（負荷分散）を行うことができる。それでもなお、いくつかの実施形態では、ロードバランサ要素は、いくつかのレベルで状態を共有することになる（例えば、使用及び保健統計について宛先仮想マシーンへクエリを行った後）。
【００４２】
上述のように、図３は、論理ネットワーク２００のミドルボックス２４０に対するいくつかの実施形態の分散実装を概念的に示している。一方、図４は、ミドルボックス２４０の完全集中実装４００を概念的に示している。この実装は、図３の分散の例のように、仮想マシーン２２０−２３５を管理するいくつかのノード４０５−４２０を含んでいる。これらの仮想マシーンは、ここでは、ノード４０５で管理される第１の仮想マシーン２２０と、ノード４１０で管理される第２の仮想マシーン２２５と第４の仮想マシーン２３５と、ノード４１５で管理される第３の仮想マシーン２３０とで配置されている。同様に、ノード４０５−４１５に位置している管理スイッチング要素は、論理転送要素２０５−２１５を実現している。分散ミドルボックスの例のように、管理スイッチング要素は、仮想マシーンから発生するパケットについて第１のホップ処理を実行する。
【００４３】
しかしながら、この例では、ミドルボックス２４０は、ホスト４０５−４１５に渡って分散されていない。その代わり、ミドルボックスは、ホストの外部にある単一のマシーンとして実現される。異なる実施形態では、異なるタイプのミドルボックスに対して、この単一のミドルボックスは、物理的に単一の電子機器（例えば、個別の物理デバイス）、あるいは単一の仮想マシーン（実際には、ホストマシーン群の１つのホストマシーン上で動作する、あるいは別のホストマシーン上で動作する）とすることができる。例えば、いくつかの実施形態は、仮想マシーンとして第１のタイプのミドルボックス（例えば、ＷＡＮオプティマイザ）を提供することができる一方で、単一の電子機器として第２のタイプのミドルボックス（例えば、ＩＤＳ）を提供することができる。加えて、いくつかの実施形態は、単一のタイプのミドルボックスに対するオプション群も提供することができる。
【００４４】
分散ミドルボックスと同様に、いくつかの実施形態では、ネットワーク制御システムは、集中ミドルボックス電子機器あるいは仮想マシーンを提供するために使用される。コンフィグレーション情報を受信して、そのコンフィグレーション情報が分散されるべきいくつかのノードを識別するコントローラではなく、いくつかの実施形態のコントローラは、ミドルボックスが実現される電子機器を識別して、そのコンフィグレーションをその電子機器へ配信する（例えば、その電子機器を管理する中間コントローラを通じて）。いくつかの実施形態では、いくつかの物理的な電子機器は、物理ネットワーク内に存在し、そして、コントローラは、これらの電子機器の内の１つを選択して、ミドルボックスを実現する。ミドルボックスが仮想マシーンとして実現される場合、いくつかの実施形態は、仮想マシーンに対するホストノードを選択し、そして、コンフィグレーションをそのホストノードへ配信する。どちらの場合でも、ネットワーク制御システムは、ミドルボックスと、ホスト上の様々な管理スイッチング要素との間の接続あるいは連結を特定する。いくつかの実施形態では、ミドルボックス電子機器は、１つ以上のタイプのトンネリングをサポートし、管理スイッチング要素へ配信されるフローエントリは、パケットをミドルボックスへ送信するために使用するトンネルカプセル化を特定するエントリ群を含んでいる。
【００４５】
管理スイッチング要素におけるフローエントリがトラフィックをミドルボックスへ送信することを特定している場合、管理スイッチング要素は、また、このトンネル情報を使用してパケットをカプセル化して、自身のホスト以外のパケットを、トンネルを通じてミドルボックスへ送信する。分散ミドルボックスと同様に、いくつかの集中ミドルボックスは、アクティブなミドルボックスである。つまり、ミドルボックスは、自身のミドルボックスの処理を実行した後に、パケットをネットワークへ返信する。いくつかの実施形態では、このようなミドルボックスは、パケット（新規のパケットとして）をプールノード（例えば、いくつかのプールノードの内の、常に、同一のプールノード）へ常に送信するように構成設定されている。図４では、集中ミドルボックス４２５は、自身の発信トラフィックのすべてをプールノード４３０へ送信する。そして、論理転送要素２０５−２１５をも実現するプールノードは、パケットを適切な宛先マシーンへ転送する。
【００４６】
分散ミドルボックス要素が、いくつかの異なる論理ネットワークに対するミドルボックスインスタンスを実行するために仮想化されていても良いと同時に、集中ミドルボックス４２５もそうであっても良い。物理的に同一の電子機器（あるいは仮想マシーン）は、いくつかの異なる論理ネットワークによって使用することができる。いくつかの実施形態では、分散アーキテクチャで使用される技術と同様のスライス処理技術が使用される。つまり、管理スイッチング要素は、パケットが送信される論理ネットワーク（あるいは論理ネットワーク内の特定の論理ミドルボックス）を示すためのタグを追加して、ミドルボックス４２５は、このタグを使用して、パケットを処理するためにどのミドルボックスインスタンスが使用されるべきかを識別する。いくつかの実施形態では、集中ミドルボックス電子機器は、いくつかのポートを含み、それらのそれぞれは、異なる仮想ミドルボックスインスタンスを割り当てている。このような実施形態では、スライス処理技術は使用されず、代わりに、到来ポートが、正しい仮想ミドルボックスを識別するために使用される。
【００４７】
ミドルボックス４２５が単一のリソースであるのに対して、いくつかの実施形態では、図５の実装５００で示されるように、ミドルボックスをリソース群の集中クラスタとして実現する。この例は、単一のミドルボックスデバイス以外は、図４に示されるものと同一であり、ネットワークは、３つのミドルボックスリソース５１０−５２０を備えるミドルボックスクラスタ５０５を含んでいる。いくつかの実施形態では、ミドルボックスリソース５１０−５２０のそれぞれは、個別のデバイスあるいは仮想マシーン（即ち、ミドルボックス４２５の等価物）である。
【００４８】
異なる実施形態では、ミドルボックスクラスタ内で異なるアーキテクチャを使用することができる。いくつかの実施形態は、リソースプールに渡ってパケットのロードバランス処理を行うクラスタへのエントリポイント（例えば、単一の物理デバイス）を含んでいる。他の実施形態は、クラスタ内の異なるリソースに直接接続される異なるホストマシーンを有している。例えば、ネットワーク５００は、リソース５１０に接続される第１のホストマシーン４０５と、リソース５１５に接続される第２のホストマシーン４１０、及びリソース５２０に接続される第３のホストマシーン４１５でセットアップすることができる。他の実施形態は、クラスタが２つのデバイスを有しているマスタバックアップセットアップを使用する。ホストマシーン群はすべてマスタに接続していて、これは、ミドルボックス処理を実行しながら、バックアップリソースを伴う状態データを共有する。
【００４９】
図２を参照して説明されるように、いくつかの実施形態は、状態共有がパケット単位で要求される場合に集中ミドルボックス実装を使用する。つまり、一定のミドルボックスに対しては、ミドルボックス処理は、ミドルボックスによって処理されるパケット群のすべての知識を要求する。分散ミドルボックスに対しては、これは、ミドルボックス要素と接続しているネットワークを介して送信される状態更新の急増を招くことになる。しかしながら、ミドルボックスが単一の電子機器である場合、この単一の電子機器は、常に状態のすべてを記憶することになる。
【００５０】
クラスタ５０５のようなミドルボックスクラスタに対して、この要件は、状態が、高速でクラスタ内のミドルボックスリソース間で共有されなければならないことを意味する。いくつかの実施形態は、ミドルボックスリソース間の専用接続を使用して、この状態情報を共有する。つまり、各ミドルボックスデバイスにおける特定のポートは、クラスタ内のいくつかのデバイス間の状態共有だけに専用となっている。時には、ミドルボックスクラスタは２つのマシーンだけとなり、あるいは数個のマシーンだけとなり、これらは、専用接続をより実現可能になるように接近して動作する。３つ以上のミドルボックスを備える状況に対しては、いくつかの実施形態は、メッシュ型ネットワークを使用する。このネットワークでは、ミドルボックスリソースのそれぞれが、ネットワークを介して、すべての他のミドルボックスリソースへ状態更新をブロードキャストする。他の実施形態は、スター型ネットワークを使用する。このネットワークでは、ミドルボックスリソースが自身の状態更新を中央リソースへ送信し、この中央リソースは、その更新を併合して、それらを他のリソースへ送信する。ミドルボックスクラスタが、集中型と比べてこの追加のインフラストラクチャを要求する一方で、このクラスタは、より多くの数のパケットが処理される場合のより大規模配備を取り扱うことができるという利点を有している。
【００５１】
上述のように、ＷＡＮオプティマイザと侵入検出システムは、ミドルボックスの例であり、いくつかの実施形態は、集中ミドルボックスとして実現する。これは、状態共有要件からの理由からである。ＷＡＮオプティマイザは、例えば、様々なオプティマイゼーション（最適化）技術を使用してＷＡＮに渡るデータ転送の効率性を向上する。これらのオプティマイゼーション技術を実行することは、ＷＡＮに渡って送信されるトラフィックのすべてのアクセスを要求する、つまり、集中実装はより最適なものとなる。また、ＷＡＮオプティマイザは、ＷＡＮに渡って送信されるコンテンツをキャッシュするために使用することができ、このキャッシュすることは、キャッシュがいくつかのホストに渡って分散されるのではなくまとまって記憶されている場合に、その目的を達成するためだけに機能する。
【００５２】
侵入検出システムは、パッシブシステム（即ち、パケットを破棄しないあるいは修正しない）であり、接続の総数、これらの接続におけるアドレス、各接続に対するパケットの数等を監視する。侵入を検出するために、ＩＤＳは、接続、経験則等でパターンを探索し、これらに対して、ＩＤＳ処理は、監視されるトラフィックのすべてを関知しなければならない。１つの分散要素が第１の接続についての情報を有し、第２の分散要素が第２の接続についての情報を有している場合、どの要素も、侵入に対してネットワークを適切に評価するための十分な情報を有していない。
【００５３】
図６は、いくつかの実施形態の侵入検出システム６２５を含む論理ネットワークを実現するネットワーク６００を概念的に示している。論理ネットワークは、３つのノード６０５、６１０及び６２０に渡って管理される４つの仮想マシーンを含んでいる。この場合の論理ネットワークの論理トポロジーは、（ミドルボックスとしてのＩＤＳを備える）図２に示されるものと同一である。但し、本明細書に記載されるＩＤＳ実装の態様は、他のネットワークトポロジーにも等しく適用する。ネットワーク６００は第５のノード６１５を含んでいるが、これは、特定の論理ネットワークの任意の仮想マシーンを管理しない（但し、別のネットワークからの少なくとも１つの仮想マシーンは管理する）。
【００５４】
上述の図とは異なり、図６は、システム内のマシーン間のパケット転送の方向を示す矢印を伴う接続を示している。こうして、例えば、ホスト６０５−６２０のすべては、両方に互いにパケットを送信することができる。つまり、ホスト６０５の仮想マシーンは、パケットを（ホスト６０５の管理スイッチング要素と、そして、ホスト６２０の管理スイッチング要素を介して）ホスト６２０の仮想マシンに送信し、ホスト６２０の管理マシーンは、パケットをホスト６０５の仮想マシーンへ送信する。加えて、ホストのＭＳＥのすべては、プールノードを使用して、エッジＭＳＥが転送決定を行うことができないパケットを処理する。
【００５５】
ホストマシーン６０５、６１０及び６２０のそれぞれは、特定の論理ネットワークからの仮想マシーンを管理し、パケットをＩＤＳへ送信する。いくつかの実施形態では、論理ネットワーク上のすべてのトラフィックはＩＤＳへ送信される。しかしながら、これらの矢印は、片方向である。これは、いくつかの実施形態の侵入検出システムはパッシブミドルボックスであるからである。いくつかの実施形態は、ミドルボックスを介してトラフィックを転送するのではなく、デュプリケートパケットをＩＤＳボックス６２５へ送信する。ＩＤＳは、これらのデュプリケートパケット（即ち、ホスト間のネットワーク、及び外部ネットワークの少なくとも一方を通じて送信されるそれぞれのものに対するパケット）を受信して、自身の侵入検出解析を実行する。侵入検出システム６２５は任意のトラフィックパケットを出力しないので、この図においては、ＩＤＳ６２５とプールノード６３０との間に必要とされる接続は存在しない。
【００５６】
ＩＩ．分散ミドルボックス実装
上述のように、いくつかの実施形態は、分散形式で１つ以上の異なるミドルボックスを、ホストマシーン群のいくつかあるいはすべてで動作するミドルボックス要素とともに実現する。いくつかの実施形態の集中ミドルボックスの実装に対して、ホストマシーン群上では、論理ネットワークの仮想マシーンと管理スイッチング要素とが配置される。このセクションでは、ホストマシーン内のいくつかの実施形態の分散ミドルボックス実装を記載する。
【００５７】
図７は、分散ソフトウェアミドルボックス要素とソフトウェアスイッチング要素との両方を含む、いくつかの実施形態のホストマシーン７００のアーキテクチャ図を概念的に示している。分散ソフトウェアミドルボックス要素は、ネットワークアドレス変換要素、ファイヤウォール要素、ロードバランス処理要素、あるいは分散形式で実現される任意の他のミドルボックスであっても良い。
【００５８】
この例では、ミドルボックス要素は、ホストマシーン上に３つのコンポーネントを含んでいて、これには、ホストマシーン７００のユーザ空間で動作するミドルボックスデーモン７９０と、ホストマシーン７００のカーネルで動作するミドルボックスカーネルモジュール７９５がある。この図は、説明の目的のために２つのコンポーネントとして分散ミドルボックス要素を示しているが、ミドルボックスデーモン７９０とミドルボックスカーネルモジュール７９５は、ホストマシーン７００上で動作するミドルボックス要素を集約して形成している。ソフトウェアスイッチング要素（本例では、オープン仮想スイッチ（「ＯＶＳ」））は３つのコンポーネントを含み、これには、ホストマシーン７００のカーネルで動作するＯＶＳカーネルモジュール７４５と、ＯＶＳデーモン７６５と、ＯＶＳデータベース（ＤＢ）デーモン７６７があり、後者の２つはホストマシーンのユーザ空間で動作する。
【００５９】
図７に示されるように、ホスト７００は、ハードウェア７０５、カーネル７２０、ユーザ空間７２１、及びＶＭ７８５−７９５を含んでいる。ハードウェア７０５は、典型的なコンピュータハードウェアを含んでいて、これには、処理ユニット、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ））、不揮発性メモリ（例えば、ハードディスクドライブ、フラッシュメモリ、光学ディスク等）、ネットワークアダプタ、ビデオアダプタ、あるいは、任意の他のタイプのコンピュータハードウェアがある。図示されるように、ハードウェア７０５は、ＮＩＣ７１０と７１５を含み、これらは、いくつかの実施形態では、コンピュータデバイスをネットワークに接続するための典型的なネットワークインタフェースコントローラである。
【００６０】
図７に示されるように、ホストマシーン７００は、カーネル７２０とユーザ空間７２１を含んでいる。いくつかの実施形態では、カーネルは、オペレーティングシステムの最も基本的なコンポーネントであり、これは、個別のメモリ空間上で動作し、また、システムリソースを管理する（例えば、ハードウェアリソースとソフトウェアリソース間の通信）役割を果たしている。これに対して、ユーザ空間は、すべてのユーザモードアプリケーションが動作することができるメモリ空間である。
【００６１】
いくつかの実施形態のカーネル７２０はソフトウェア抽象化レイヤであり、これは、ハードウェア７０５の上位で動作し、かつ任意のオペレーティングシステムの配下で動作する。いくつかの実施形態では、カーネル７２０は、仮想化機能を実行する（例えば、ホストマシーン上で動作するいくつかの仮想マシーンに対するハードウェア７０５を仮想化するために）。そして、カーネル７２０は、いくつかの実施形態では、ハイパーバイザの一部である。カーネル７２０は、様々な管理タスクを取り扱う。これには、メモリ管理、プロセッサスケジューリング、あるいはホストマシーン上で動作するＶＭ７３５及び７３８の実行を制御するための任意の他の動作がある。
【００６２】
図示されるように、カーネル７２０は、ＮＩＣ７１０及び７１５それぞれに対するデバイスドライバ７２５及び７３０を含んでいる。デバイスドライバ７２５及び７３０は、オペレーティングシステム（例えば、仮想マシーンの）に、ホスト７００のハードウェアと対話することを可能にする。この例では、デバイスドライバ７２５は、ＮＩＣ７１との対話を可能にし、一方、ドライバ７３０は、ＮＩＣ７１５との対話を可能にする。カーネル７２０は、ホスト７００内の他のハードウェア（不図示）と対話することを仮想マシーンに可能にするための他のデバイスドライバ（不図示）を含んでいても良い。
【００６３】
仮想マシーン７３５と７３８は、カーネル７２０によって仮想化されるリソースを使用して、ホストマシーン７００上で動作する独立した仮想マシーン（例えば、図３−図６で示されるようなユーザ仮想マシーン）である。このように、ＶＭは、任意の数の異なるオペレーティングシステムで動作する。このようなオペレーティングシステムの例には、ソラリス、ＦｒｅｅＢＳＤ、あるいは任意のタイプのユニックスベースのオペレーティングシステムが含まれる。他の例には、ウィンドウズ（登録商標）ベースのオペレーティングシステムも含まれる。
【００６４】
図示されるように、ホストマシーン７００のユーザ空間７２１は、デーモン７９０、ＯＶＳデーモン７６５、及びＯＶＳ  ＤＢデーモン７６７を含んでいる。他のアプリケーション（不図示）もユーザ空間７２１に含まれていても良く、これには、追加の分散ミドルボックス（例えば、ファイヤウォール、ロードバランサ、ネットワークアドレス変換器等）用のデーモンが含まれる。ＯＶＳデーモン７６５は、ユーザ空間７２１で動作するアプリケーションである。いくつかの実施形態のＯＶＳデーモン７６５は、以下で更に後述するように、仮想マシーン７３５及び７３８へ及びから送信されるパケットを処理し転送するための命令を受信するためにネットワークコントローラ７８０と通信する。いくつかの実施形態のＯＶＳデーモン７６５は、オープンフロープロトコルを通じてネットワークコントローラ７８０と通信し、一方、他の実施形態では、物理制御プレーンデータを転送するための異なる通信プロトコルを使用する。加えて、いくつかの実施形態では、ＯＶＳデーモン７６５は、ネットワークコントローラ７８０がコンフィグレーション情報をＯＶＳ  ＤＢデーモンを送信した後に、ＯＶＳ  ＤＢデーモン７６７からコンフィグレーション情報を取得する。
【００６５】
いくつかの実施形態では、ＯＶＳ  ＤＢデーモン７６７も、ユーザ空間７２１で動作する。いくつかの実施形態のＯＶＳ  ＤＢデーモン７６７は、ネットワークコントローラ７８０と通信して、ＯＶＳスイッチング要素（例えば、ＯＶＳデーモン７６５及びＯＶＳカーネルモジュール７４５の少なくとも一方）を構成設定する。例えば、ＯＶＳ  ＤＢデーモン７６７は、ネットワークコントローラ７８０からコンフィグレーション情報を受信し、そのコンフィグレーション情報をデータベースのセットに記憶する。いくつかの実施形態では、ＯＶＳ  ＤＢデーモン７６７は、データベース通信プロトコルを介してネットワークコントローラ７８０と通信する。いくつかの場合、ＯＶＳ  ＤＢデーモン７６７は、ＯＶＳデーモン７６５からのコンフィグレーション情報に対するリクエストを受信する。ＯＶＳ  ＤＢデーモン７６７は、これらの場合、リクエストされたコンフィグレーション情報（例えば、データベースのセットから）を取得し、そのコンフィグレーション情報をＯＶＳデーモン７６５へ送信する。
【００６６】
ＯＶＳデーモン７６５は、オープンフロープロトコルモジュール７７０及びフロープロセッサ７７５を含んでいる。オープンフロープロトコルモジュール７７０は、ネットワークコントローラ７８０と通信して、ソフトウェアスイッチング要素を構成設定するためのコンフィグレーション情報（例えば、フローエントリ）をネットワークコントローラ７８０から受信する。モジュール７７０がネットワークコントローラ７８０からコンフィグレーション情報を受信する場合、これは、そのコンフィグレーション情報をフロープロセッサ７７５によって解釈可能な情報へ変換する。
【００６７】
フロープロセッサ７７５は、パケットを処理し、ルーティングするためのルールを管理する。例えば、フロープロセッサ７７５は、オープンフロープロトコルモジュール７７０から受信されるルール群を（例えば、ディスクドライブのような記憶媒体に）記憶する。いくつかの実施形態では、ルールは、それぞれがフローエントリのセットを含むフローテーブルのセットとして記憶される。フロープロセッサ７７５は、マッチングルールを有さない統合ブリッジ７５０（後述する）に対するパケットを取り扱う。このような場合、フロープロセッサ７７５は、自身に記憶されているルールとパケットとの照合を行う。パケットがルールに合致する場合、フロープロセッサ７７５は、合致したルールとそのパケットを、統合ブリッジ７５０で処理するために、その統合ブリッジ７５０へ送信する。このようにして、統合ブリッジ７５０が生成されたルールと合致する同様のパケットを受信すると、パケットは、統合ブリッジ７５０内の生成された的確なマッチングルールと照合されることになるので、フロープロセッサ７７５はパケットを処理する必要がなくなる。
【００６８】
いくつかの実施形態では、フロープロセッサ７７５は、パケットと合致するルールを有していない場合がある。このような場合、いくつかの実施形態のフロープロセッサ７７５は、エッジスイッチング要素で処理することができないパケットを取り扱うための別の管理スイッチング要素（例えば、プールノード）へ、そのパケットを送信する。しかしながら、他の場合、フロープロセッサ７７５は、ネットワークコントローラ７８０から、パケットと合致しないルールがフロープロセッサ７７５内に存在しない場合に、そのパケットを破棄するキャッチオール（catchall）ルールを受信することができる。
【００６９】
図７に示されるように、カーネル７２０は、ハイバーバイザネットワークスタック７４０とＯＶＳカーネルモジュール７４５とを含んでいる。ハイパーバイザネットワークスタック７４０は、いくつかの実施形態では、インターネットプロトコル（ＩＰ）ネットワークスタック７４０である。ハイパーバイザネットワークスタック７４０は、ＩＰパケットを処理し、ルーティングする。このＩＰパケットは、ＯＶＳカーネルモジュール７４５と、ＰＩＦブリッジ７５５及び７６０から受信される。ホスト７００に対して外部にあるネットワークホストに向けられているパケットを処理する場合、ハイパーバイザネットワークスタック７４０は、どの物理インタフェース（ＰＩＦ）ブリッジ７５５及び７６０に、パケットが送信されるべきであるかを判定する。
【００７０】
ＯＶＳカーネルモジュール７４５は、ホスト７００上で動作するＶＭとホスト７００の外部にあるネットワークホスト間のネットワークデータ（例えば、パケット）を処理し、ルーティングする（例えば、ＮＩＣ７１０と７１５を介して受信されるネットワークデータ）。いくつかの実施形態では、ＯＶＳカーネルモジュール７４５は、１つ以上の論理ネットワークに対する物理制御プレーンの転送テーブルを実現する。ネットワークデータを処理しルーティングすることを容易にするために、ＯＶＳカーネルモジュール７４５はＯＶＳデーモン７６５と通信する（例えば、ＯＶＳデーモン７６５からフローエントリを受信するために）。いくつかの実施形態では、ＯＶＳカーネルモジュール７４５は、ブリッジインタフェース（不図示）を含んでいて、このブリッジインタフェースは、ハイパーバイザネットワークスタック７４０にパケットをＯＶＳカーネルモジュール７４５へ送信し、また、パケットをＯＶＳカーネルモジュール７４５から受信することを可能にする。
【００７１】
図７は、統合ブリッジ７５０と、ＰＩＦブリッジ７５５及び７６０を含むＯＶＳカーネルモジュール７４５を示している。いくつかの実施形態では、ＯＶＳカーネルモジュール７４５は、ハードウェア７０５における各ＮＩＣに対するＰＩＦブリッジを含んでいる。他の実施形態では、ＯＶＳカーネルモジュール７４５内のＰＩＦブリッジは、ハードウェア７０５における複数のＮＩＣと対話することができる。ＰＩＦブリッジ７５５及び７６０は、ハイパーバイザネットワークスタック７４０とホスト７００の外部にあるネットワークホストとの間のネットワークデータ（即ち、ＮＩＣ７１０と７１５を介して受信されるネットワークデータ）をルーティングする。
【００７２】
統合ブリッジ７５０は、ネットワークスタック７４０と、ＶＭ７３５及び７３８（例えば、ＶＩＦを介して）と、ＰＩＦブリッジ７５５及び７６０から受信するパケットを処理し、ルーティングする。いくつかの実施形態では、統合ブリッジ７５０は、フロープロセッサ７７５に記憶されるルールのサブセット（及び／あるいは、フロープロセッサ７７５に記憶されるルールから導出されるルール群）を記憶し、これは、統合ブリッジ７５０が、パケットを処理し転送するために現在使用しているもの、あるいは直近で使用したものである。
【００７３】
いくつかの実施形態では、いくつかの実施形態のフロープロセッサ７７５は、統合ブリッジ７５０でルール群を管理する役割を担う。いくつかの実施形態では、統合ブリッジ７５０はアクティブなルールだけを記憶する。フロープロセッサ７７５は、統合ブリッジ７５０に記憶されているルール群を監視し、所定の時間量（例えば、１秒、３秒、５秒、１０秒等）の間、アクセスしていないアクティブなルールを削除する。この方法では、フロープロセッサ７７５は、統合ブリッジ７５０を管理することで、統合ブリッジ７５０が使用中のあるいは最近使用されているルール群を記憶するようにしている。
【００７４】
図７は１つの統合ブリッジを示しているが、ＯＶＳカーネルモジュール７４５は、複数の統合ブリッジを含むことができる。例えば、いくつかの実施形態では、ＯＶＳカーネルモジュール７４５は、各論理スイッチング要素に対して個別の統合ブリッジを含んでいて、その論理スイッチング要素は、ソフトウェアスイッチング要素が属している管理ネットワークに渡って実現される。つまり、ＯＶＳカーネルモジュール７４５は、管理ネットワークに渡って実現される各論理スイッチング要素に対して、対応する統合ブリッジを有している。
【００７５】
上述の記載は、いくつかの実施形態の管理ソフトウェアスイッチング要素の転送機能に関するものである。ソフトウェアスイッチング要素が、制御プレーンを実現するユーザ空間コンポーネント（ＯＶＳデーモン７６５）とデータプレーンを実現するカーネルコンポーネント（ＯＶＳカーネルモジュール７４５）を含んでいると同時に、いくつかの実施形態の分散ミドルボックス要素は、ユーザ空間で動作する制御プレーンコンポーネント（ミドルボックスデーモン７９０）とカーネルで動作するデータプレーンコンポーネント（ミドルボックスカーネルモジュール７９５）とを含んでいる。
【００７６】
図示されるように、ミドルボックスデーモン７９０は、ミドルボックスコンフィグレーションレシーバ７９１とミドルボックスコンフィグレーションコンパイラ７９２を含んでいる。ミドルボックスコンフィグレーションレシーバ７９１はネットワークコントローラ７８０と通信して、ミドルボックス用のコンフィグレーションに加えて、スライス処理情報を受信する。いくつかの実施形態では、ミドルボックスコンフィグレーションは、ミドルボックスのパケット処理ルールを記述するレコードのセットである（例えば、ＯＶＳデーモンによって受信されるフローエントリレコードと同一の形式で）。例えば、ファイヤウォールコンフィグレーションは、パケットを破棄する場合、許可する場合等を記述するパケット処理ルールのセットを含んでいる（ＡＣＬエントリと同様のものであるが、決定を行うためのファクタとしてＴＣＰ接続状態を含んでいる）。ソースネットワークアドレス変換コンフィグレーションは、変換器によって晒されるＩＰアドレスへマッピングすべき仮想マシーンの隠蔽されているＩＰアドレスのセットを含んでいる。いくつかの実施形態では、ロードバランサコンフィグレーションは、晒されたＩＰアドレスをいくつかの異なる隠蔽された仮想マシーンアドレスへネットワークマッピングするアドレス変換と、いくつかのマシーンの内、どのマシーンに新規のＴＣＰ接続が送信されるべきかを判定するためのロードバランス処理（スケジューリング）アルゴリズムを含んでいる。
【００７７】
上述のように、スライス処理情報は、識別子を、分散ミドルボックス要素によって実行されるべき特定のミドルボックスインスタンスへ割り当てる。いくつかの実施形態では、この識別子は、特定のテナントの論理ネットワークにおける特定の論理ミドルボックスにバインドされる。つまり、特定の論理ネットワークが異なる処理ルールを有するいくつかの異なるミドルボックスを含んでいる場合、ミドルボックスデーモン７９０は、いくつかの異なるミドルボックスインスタンスを作成することになる。これらのインスタンスのそれぞれは、ミドルボックスに送信されるパケット上の異なるスライス識別子で識別される。加えて、いくつかの実施形態では、ミドルボックスデーモン７９０は、これらのインスタンスそれぞれに対して特定の内部識別子を割り当て、これは、ミドルボックスが自身の内部処理で使用する（例えば、アクティブなＴＣＰ接続の追跡を維持するために）。
【００７８】
ミドルボックスデーモン７９０は、また、ミドルボックスコンフィグレーションコンパイラ７９２を含んでいる。いくつかの実施形態では、ミドルボックスコンフィグレーションコンパイラ７９２は、第１の言語の特定のミドルボックスに対するミドルボックスコンフィグレーション（例えば、パケット処理、変更あるいは解析ルール群）を受信し、これらを、ミドルボックスの内部処理により最適となる第２の言語のルール群のセットにコンパイルする。ミドルボックスコンパイラ７９２は、コンパイルされたパケット処理ルールをミドルボックスカーネルモジュール７９５のミドルボックスプロセッサ７９６へ送信する。
【００７９】
ミドルボックスカーネルモジュール７９５は、ホスト７００上で動作するＶＭへ送信する及び／あるいはＶＭから送信されるパケットを処理して、パケットの通過を許可する、パケットを破棄する等を判定する。図示されるように、ミドルボックスカーネル７９５は、これらの機能を実行するためのミドルボックスプロセッサ７９５を含んでいる。ミドルボックスプロセッサ７９５は、ミドルボックスコンフィグレーションコンパイラ７９２から、特定のミドルボックスインスタンスに対して変換されたミドルボックスルールを受信する。いくつかの実施形態では、これらの変換されたミドルボックスルールは、ミドルボックス内のパケット処理パイプラインを特定する。
【００８０】
管理スイッチング要素からパケットを受信するために、いくつかの実施形態のミドルボックスプロセッサ７９６は、ＯＶＳカーネルモジュールの統合ブリッジ７５０上に抽象ソフトウェアポートと接続する。統合ブリッジ上のこのポートを通じて、管理スイッチング要素は、（ミドルボックスがパケットを破棄しない限り）ミドルボックスによって処理された後に、ミドルボックスへパケットを送信し、また、ミドルボックスからパケットを受信する。上述のように、これらのパケットは、パケットに適用するコンパイル済のパケット処理ルールのセットを判定するための、ミドルボックスプロセッサ７９６によって使用されるスライス識別子タグを含んでいる。
【００８１】
図７に示される、分散ミドルボックスとソフトウェアスイッチング要素のアーキテクチャ図は、コンフィグレーションの一例である。当業者は、他のコンフィグレーションが可能であることを認識するであろう。例えば、いくつかの実施形態では、コンパイル済のパケット処理ルールを適用するミドルボックスプロセッサは、カーネル７２０でなくユーザ空間７２１に配置される。このような実施形態では、カーネルは、ユーザ空間によってフルコントロールするためにネットワークインタフェース７１０及び７１５に晒すことで、ミドルボックスプロセッサは、カーネルと比べて、速度を損なうことなく、ユーザ空間で自身の機能を実行することができる。
【００８２】
ＩＩＩ．ネットワーク制御システム
上述のセクションＩは、完全分散から完全集中までの異なるミドルボックス実装アーキテクチャを記載している。上述のように、いくつかの実施形態では、これらのミドルボックスは、ネットワーク制御システムを介して提供され、これは、ネットワークの論理転送要素を実現する管理スイッチング要素を提供するために使用される。いくつかの実施形態では、ネットワーク制御システムは、階層構造のネットワークコントローラのセットである。
【００８３】
図８は、論理ネットワークを実現するための、管理スイッチング要素と分散ミドルボックス要素とを構成設定するためのいくつかの実施形態のネットワーク制御システム８００を示している。図示されるように、ネットワーク制御システム８００は、入力変換コントローラ８０５、論理コントローラ８１０、物理コントローラ８１５及び８２０、ホスト８２５−８４０、集中ミドルボックス８４５を含んでいる。図示されるように、ホスト８３０−８６５は、管理スイッチング要素及びミドルボックス要素の両方を含んでいて、これらは、図７で示されるように実現されても良い。当業者は、様々なコントローラとホストの多くの他の異なる組み合わせをネットワーク制御システムに対して実現可能であることを理解するであろう。
【００８４】
いくつかの実施形態では、ネットワーク制御システムにおけるコントローラのそれぞれは、入力変換コントローラ、論理コントローラ及び物理コントローラの少なくとも１つとして機能する能力を有している。選択的には、いくつかの実施形態では、所与のコントローラが、様々なタイプのコントローラの内の特定の１つ（例えば、物理コントローラ）として動作する機能だけを有することができる。加えて、様々な組み合わせのコントローラを、同一の物理マシーン内で動作させることができる。例えば、入力変換コントローラ８０５と論理コントローラ８１０とを、ユーザと対話する同一のコンピュータデバイスで実行させることができる。
【００８５】
また、図８（及び後続の図９）に示されるコントローラのそれぞれは、単一のコントローラとして示されている。しかしながら、これらのコントローラのそれぞれは、実際には、論理コントローラ、物理コントローラあるいは入力変換コントローラの処理を実行する分散形式で動作するコントローラクラスタであっても良い。
【００８６】
いくつかの実施形態の入力変換コントローラ８０５は、ユーザから受信されるネットワークコンフィグレーション情報を変換する入力変換アプリケーションを含んでいる。例えば、ユーザは、図２に示されるようなネットワークトポロジーを特定することができ、これは、どのマシーンが論理ドメインに属性しているかについての特定情報を含んでいる。これは、論理データ経路のセット、あるいは論理転送要素のセットを効率的に特定する。論理スイッチのそれぞれに対して、ユーザは、論理スイッチに接続するマシーン（即ち、論理スイッチに対する論理ポートが割り当てられている）を特定する。いくつかの実施形態では、ユーザは、また、マシーンに対するＩＰアドレスを特定する。入力変換コントローラ８０５は、入力されるネットワークトポロジーを、ネットワークトポロジーを記述する論理制御プレーンデータへ変換する。例えば、エントリは、特定のＭＡＣアドレスＡが特定の論理スイッチの特定の論理ポートＸに配置されていることを記述する。
【００８７】
いくつかの実施形態では、各論理ネットワークは、特定の論理コントローラ（例えば、論理コントローラ８１０）によって管理される。いくつかの実施形態の論理コントローラ８１０は、論理制御プレーンデータを論理転送プレーンデータへ変換し、その論理転送プレーンデータをユニバーサル制御プレーンデータへ変換する。論理転送プレーンデータは、いくつかの実施形態では、論理レベルで記述されるフローエントリから構成される。論理ポートＸでのＭＡＣアドレスＡに対しては、論理転送プレーンデータは、パケットの宛先がＭＡＣ  Ａと合致する場合に、そのパケットをポートＸへ転送することを特定するフローエントリを含むことができる。
【００８８】
いくつかの実施形態のユニバーサル物理制御プレーンデータは、いくつかの実施形態の制御システムが論理データ経路のセットを実現するための大量数（例えば、数千）の管理スイッチング要素を含んでいる場合でさえも、その制御システムに拡縮することを可能にするデータプレーンである。ユニバーサル物理制御プレーンは、管理スイッチング要素の違い及びその管理スイッチング要素のロケーション詳細を考慮することなく、物理制御プレーンデータを表現するために、異なる管理スイッチング要素の共通の特徴をまとめる。
【００８９】
上述のように、いくつかの実施形態の論理コントローラ５１０は、論理制御プレーンデータを論理転送プレーンデータ（例えば、論理フローエントリ）へ変換し、そして、その論理転送プレーンデータをユニバーサル制御プレーンデータへ変換する。いくつかの実施形態では、論理コントローラアプリケーションスタックは、第１の変換を実行するための制御アプリケーションと第２の変換を実行するための仮想化アプリケーションを含んでいる。これらのアプリケーションの両方は、いくつかの実施形態では、第１のテーブルのセットを第２のテーブルのセットへマッピングするためのルールエンジンを使用する。つまり、異なるデータプレーンはテーブル（例えば、ｎＬｏｇテーブル）として表現され、また、コントローラアプリケーションはテーブルマッピングエンジンを使用して、データプレーン間を変換する。
【００９０】
物理コントローラ８１５及び８２０のそれぞれは、１つ以上の管理スイッチング要素のマスタである（例えば、ホストマシーン内に配置される）。この例では、２つの物理コントローラのそれぞれは、２つの管理スイッチング要素のマスタである。また、物理コントローラ８１５は、集中ミドルボックス８４５のマスタである。いくつかの実施形態では、物理コントローラは、論理ネットワークに対するユニバーサル物理制御プレーン情報を受信して、そのデータを、物理コントローラが管理する特定の物理管理スイッチに対するカスタマイズ物理制御プレーン情報へ変換する。他の実施形態では、物理コントローラは、適切なユニバーサル物理制御プレーンデータを管理スイッチへ渡し、これは、変換自身を実行するための機能（例えば、ホストマシーンで動作するシャーシコントローラの形式で）を含んでいる。
【００９１】
ユニバーサル物理制御プレーンからカスタマイズ物理制御プレーンへの変換は、フローエントリ内の様々なデータのカスタマイズ処理を含んでいる。上述の例に対しては、ユニバーサル物理制御プレーンは、いくつかのフローエントリを含むことになる。第１のエントリは、パケットが特定の論理データ経路のセットと合致し（例えば、特定の論理進入ポートで受信されるパケットに基づいて）、かつ宛先アドレスがＭＡＣ  Ａと合致する場合、そのパケットを論理ポートＸへ転送することを記述している。このフローエントリは、いくつかの実施形態では、ユニバーサル物理制御プレーンとカスタマイズ物理制御プレーン内で同一となる。追加のフローは、物理進入ポート（例えば、ホストマシーンの仮想インタフェース）と論理進入ポートＸ（ＭＡＣ  Ａから受信されるパケットに対する）とを照合し、加えて、論理ポートＸと物理管理スイッチの特定の退出ポートとを照合するために生成される。しかしながら、これらの物理進入ポート及び物理退出ポートは、管理スイッチング要素を含むホストマシーンに対して特定されている。このように、ユニバーサル制御プレーンエントリは、抽象化物理ポートを含む一方で、カスタマイズ物理制御プレーンエントリは、介在する実際の物理ポートを含んでいる。
【００９２】
いくつかの実施形態では、ネットワーク制御システムは、論理ネットワークのミドルボックスに関連するデータを流布する。ネットワーク制御システムは、ミドルボックスコンフィグレーションデータに加えて、管理スイッチにおけるミドルボックスに対するパケットの送受信、及びミドルボックスにおける管理スイッチに対するパケットの送受信の少なくとも一方に関連するデータを流布する。
【００９３】
図８に示されるように、同一のネットワーク制御システムが、いくつかの実施形態は、分散ミドルボックスと集中ミドルボックスの両方へデータを配信する。いくつかの物理コントローラは、分散ミドルボックスのコンフィグレーションを流布するために使用され、一方で、いくつかの実施形態は、特定の物理コントローラを集中ミドルボックス電子機器へ割り当てる。この例では、物理コントローラ８１５は集中ミドルボックス８４５のコンフィグレーションを流布するために割り当てられ、一方で、分散ミドルボックスに対するコンフィグレーションは、物理コントローラ８１５及び８２０の両方を介して流布される。
【００９４】
ミドルボックスを組み込むために、ネットワーク制御システムを介して管理スイッチに伝搬されるフローエントリは、適切なパケットを適切なミドルボックスへ送信するためのエントリ群を含むことになる（例えば、特定のミドルボックスへ転送される、特定のサブネット内のソースＩＰアドレスを有するパケットを特定するフローエントリ群）。加えて、管理スイッチに対するフローエントリ群は、どのようにしてそのようなパケットをミドルボックスへ送信するかを特定することを必要とすることになる。つまり、第１のエントリが、特定のミドルボックスにバインドされる論理ルータの論理退出ポートを一旦特定すると、その論理退出ポートをミドルボックスに接続するために追加のエントリが要求される。
【００９５】
集中ミドルボックス８４５に対しては、これらの追加のエントリは、論理ルータの論理退出ポートと、ホストマシーンの特定の物理ポート（例えば、物理ネットワークインタフェース）とを照合することになる。この特定の物理ポートを通じて、ホストマシーンはミドルボックスに接続する。加えて、エントリ群は、ホストマシーンとミドルボックスとの間のトンネルを介して、パケットを集中ミドルボックス電子機器へ送信するためのカプセル化情報を含んでいる。
【００９６】
分散ミドルボックスに対しては、ミドルボックスへ到達するために、パケットは、ホストマシーンから実際に退出する必要はない。しかしながら、管理スイッチ要素は、それにもかかわらず、ホストマシーン上のミドルボックスへパケットを送信するためのフローエントリ群を含んでいる必要がある。これらのフローエントリ群は、再度、管理スイッチ要素がミドルボックスと接続するポートに、論理ルータの論理退出ポートへマッピングするためのエントリを含んでいる。しかしながら、この場合、ミドルボックスは、ホストマシーンの物理（あるいは仮想）インタフェースではなく、管理スイッチ要素内のソフトウェア抽象ポートに接続する。つまり、ポートは、ミドルボックス要素が接続している「管理スイッチング要素内で作成される。管理スイッチング要素内のフローエントリ群は、ホストマシーン内でミドルボックスへ転送するためのパケットをこのポートへ送信する。
【００９７】
分散ミドルボックスと集中ミドルボックスの両方に対して、いくつかの実施形態では、管理スイッチング要素は、スライス処理情報をパケットへ追加する。基本的には、このスライス処理情報は、ミドルボックスによって動作する（潜在的な）いくつかのインスタンスのどれに、パケットが送信されるべきかを示すためのタグである。このようにして、ミドルボックスがパケットを受信する場合、タグは、ミドルボックスに、パケットの処理、解析、変更等の適切なルールのセットを使用して、パケットにおける動作を実行することを可能にする。いくつかの実施形態は、パケットへスライス処理情報を追加するのではなく、各ミドルボックスインスタンスに対して管理スイッチング要素の異なるポート群を定義して、実際にそのポート群を使用して、ファイヤウォールに向けられるトラフィックをスライスする（分散構成の場合）、あるいは、インスタンス間を区別するために、集中電子機器の異なるポート群へ接続する（集中構成の場合）。
【００９８】
上記の内容は、管理スイッチング要素への転送データの伝搬を記載している。加えて、いくつかの実施形態は、ネットワーク制御システムを使用して、コンフィグレーションデータをミドルボックスへ伝搬する。図９は、いくつかの実施形態のネットワーク制御システムを介するデータの伝搬を概念的に示している。図の左側は、論理ネットワークを実現する管理スイッチング要素へのデータフローであり、一方、図の右側は、ミドルボックスコンフィグレーションデータの伝搬と、ミドルボックスへのネットワーク接続及びスライス処理データの伝搬を示している。
【００９９】
左側において、入力変換コントローラ８０５は、ＡＰＩを介してネットワークコンフィグレーションを受信し、これは、論理制御プレーンデータに変換される。このネットワークコンフィグレーションデータは、図２に示されるような論理トポロジーを含んでいる。加えて、いくつかの実施形態のネットワークコンフィグレーションデータは、ミドルボックスへ送信されるパケットを特定するルーティングポリシー群を含んでいる。ミドルボックスが２つの論理転送要素の間（例えば、論理ルータと論理スイッチの間）の論理回線上に配置されている場合、その論理回線を介して送信されるすべてのパケットは、自動的にミドルボックスへ転送されることになる。しかしながら、ネットワークアーキテクチャ２００のような帯域外のミドルボックスに対しては、特定のポリシー群がユーザによって特定されている場合には、論理ルータはパケットをミドルボックスへ送信することだけを行うことになる。
【０１００】
ルータとスイッチが、パケットの宛先アドレス（例えば、ＭＡＣアドレスあるいはＩＰアドレス）に従ってパケットを通常に転送することになる一方で、ポリシールーティングは、パケットによって記憶される他の情報（例えば、ソースアドレス、ソースアドレスと宛先アドレスの組み合わせ等）に基づいて行われる転送決定を可能にする。例えば、ユーザは、特定のサブネット内のソースＩＰアドレスを有する、あるいは特定のサブネットのセットと合致しない宛先ＩＰアドレスを有する、パケットのすべてがミドルボックスへ転送されるべきであることを特定することができる。
【０１０１】
図示されるように、論理制御プレーンデータは、論理コントローラ８１０によって（具体的には、論理コントローラの制御アプリケーションによって）論理転送プレーンデータへ変換され、続いて（論理コントローラの仮想アプリケーションによって）ユニバーサル物理制御プレーンデータへ変換される。いくつかの実施形態では、これらの変換は、フローエントリ（論理転送プレーンにおける）を生成し、論理データ経路のセットを介してマッチング情報を追加する（ユニバーサル物理制御プレーンにおける）。ユニバーサル物理制御プレーンは、また、汎用物理進入ポートを論理進入ポート（即ち、任意の特定の物理ホストマシーンに対して専用とはなっていない汎用抽象ポート）へマッピングするための追加のフローエントリ群を含んでいて、また、論理退出ポートを汎用物理退出ポートへマッピングするための追加のフローエントリ群を含んでいる。例えば、集中ミドルボックスへのマッピングに対しては、ユニバーサル物理制御プレーンにおけるフローエントリ群は、ルーティングポリシーに合致する場合にミドルボックスと接続する論理ポートへパケットを送信するための転送決定と、ミドルボックスへ接続するホストマシーンの汎用物理ポートへの論理ポートへのマッピングを含んでいる。
【０１０２】
図示されるように、物理コントローラ８１５（いくつかの物理コントローラの１つ）は、ユニバーサル物理制御プレーンデータを、それが管理する特定の管理スイッチング要素８３０−８４０に対するカスタマイズ物理制御プレーンデータへ変換する。この変換は、ユニバーサル物理制御プレーンデータにおける汎用抽象に対する代替特定データ（例えば、特定の物理ポート）を含んでいる。例えば、上述の例では、ポート統合エントリは、特定のミドルボックスコンフィグレーションに対して適切な物理層ポートを特定するように構成設定されている。このポートは、ファイヤウォールがホストマシーン上の仮想マシーンとして動作する場合の仮想ＮＩＣであり得り、あるいは、ファイヤウォールが仮想マシーン上のハイパーバイザ内のプロセス（例えば、デーモン）として動作する場合の管理スイッチング要素内の上述のソフトウェア抽象ポートであり得る。いくつかの実施形態では、後者の状況では、このポートはＩＰＣチャネルあるいはＴＵＮ／ＴＡＰデバイスインタフェースである。いくつかの実施形態では、管理スイッチング要素は、ファイヤモジュールに対する１つの特定抽象ポートを含み、物理制御プレーンフローをカスタマイズするための物理コントローラに対するこの情報を、その物理コントローラへ送信する。一方で、集中ミドルボックス８４５へパケットを送信するためのフローエントリ群に対しては、挿入ポートが、管理スイッチング要素が動作する特定のホストマシーンの実際の物理ポートとなる。
【０１０３】
加えて、いくつかの実施形態では、物理コントローラは、ミドルボックスに特定のスライス処理情報を特定するフローエントリ群を追加する。例えば、特定の管理スイッチング要素に対しては、フローエントリは、パケットを特定のファイヤウォールへ送信する前に、そのパケットに特定のタグ（例えば、ＶＬＡＮタグあるいは同様のタグ）を追加することを特定することができる。このスライス処理情報は、ミドルボックスに、パケットを受信して、自身のいくつかの独立しているインスタンスの内のどのインスタンスがパケットを処理するべきかを識別することを可能にする。
【０１０４】
管理スイッチング要素８２５（物理コントローラ８１５によって管理されるいくつかのＭＳＥ群の１つ）は、カスタマイズ制御プレーンデータの物理転送プレーンデータへの変換を実行する。この物理転送プレーンデータは、いくつかの実施形態では、スイッチング要素が実際に合致する受信パケットに対する、スイッチング要素（物理ルータあるいはスイッチあるいはソフトウェアスイッチング要素）内に記憶されるフローエントリ群である。
【０１０５】
図９の右側は、管理スイッチング要素ではなく、ミドルボックス（集中ミドルボックスあるいは分散ミドルボックス）へ伝搬される２つのデータのセットを示している。これらの第１のデータのセットは、特定の論理ミドルボックスの動作を特定する様々なルールを含む実際のミドルボックスコンフィグレーションデータである。このデータは、ミドルボックス実装に特定のＡＰＩを介して、入力変換コントローラ８０５あるいは異なる入力インタフェースで受信される。いくつかの実施形態では、異なるミドルボックス実装は、ユーザに対して提示される異なるインタフェースを有することになる（即ち、ユーザは、異なる特定のミドルボックスに対する異なるフォーマットの情報を入力しなければならないことになる）。図示されるように、ユーザは、ミドルボックスコンフィグレーションを入力し、これは、ミドルボックスＡＰＩによってミドルボックスコンフィグレーションデータへ変換される。
【０１０６】
いくつかの実施形態では、ミドルボックスコンフィグレーションデータは、レコードのセットであり、各レコードは、特定のルールを特定している。これらのレコードは、いくつかの実施形態では、管理スイッチング要素に伝搬されるフローエントリと同様のフォーマットである。実際には、いくつかの実施形態は、コントローラ上の同一のアプリケーションを使用して、フローエントリに対するファイヤウォールコンフィグレーションレコードを伝搬し、また、そのレコードに対する同一のテーブルマッピング言語（例えば、ｎＬｏｇ）を伝搬する。
【０１０７】
ミドルボックスコンフィグレーションデータは、いくつかの実施形態では、論理コントローラあるいは物理コントローラによっては変換されず、一方、他の実施形態では、論理コントローラ及び物理コントローラの少なくとも一方は、ミドルボックスコンフィグレーションデータレコードの最小限の変換を少なくとも実行する。多くのミドルボックスのパケット処理、変更及び解析ルールは、パケットのＩＰアドレス（あるいはＴＣＰ接続状態）で動作し、また、ミドルボックスへ送信されるパケットは、この晒されている（即ち、論理ポート情報内でカプセル化されていない）情報を有することになるので、ミドルボックスコンフィグレーションは、論理データプレーンから物理データプレーンへの変換を要求しない。このように、同一のミドルボックスコンフィグレーションデータは、入力変換コントローラ８０５（あるいは他のインタフェース）から、論理コントローラ８１０及び物理コントローラ８１５への少なくとも一方へ渡される。
【０１０８】
いくつかの実施形態では、論理コントローラ８１０は、論理ネットワークの記述と、物理ネットワークの物理実装の記述を記憶している。論理コントローラは、分散ミドルボックスに対する１つ以上のミドルボックスコンフィグレーションレコードを受信し、また、様々なノード（即ち、ホストマシーン）の内、どれが、コンフィグレーション情報を受信することが必要となるかを識別する。いくつかの実施形態では、ミドルボックスコンフィグレーション全体がホストマシーン群の全てにおけるミドルボックス要素に配信され、そうすることで、論理コントローラはパケットがミドルボックスの使用を要求している少なくとも１つの仮想マシーンが常駐しているホストマシーンのすべてを識別する。これは、ネットワーク内のすべての仮想マシーン（例えば、図２に示されるミドルボックスに対する）であっても良く、あるいは、ネットワーク内の仮想マシーン群のサブセットであっても良い（例えば、ネットワーク内の特定のドメインのトラフィックだけにファイヤウォールが適用される場合）。いくつかの実施形態は、どのホストマシーンがレコード単位でコンフィグレーションデータを送信するかについての決定を行う。つまり、各特定のルールは、仮想マシーンのサブセットだけに適用し、また、レコードを受信することを必要とするこれらの仮想マシーンを実行するホストだけに適用することができる。
【０１０９】
論理コントローラがレコードを受信する特定のノードを一旦識別すると、論理コントローラは、これらの特定のノードを管理する特定の物理コントローラを識別する。上述のように、各ホストマシーンは、割当済のマスタ物理コントローラを有している。こうして、論理コントローラがコンフィグレーションデータに対する宛先として第１のホストと第２のホストとだけを識別する場合、これらのホストに対する物理コントローラは、論理コントローラからのデータを受信するために識別されることになる（及び、他の物理コントローラは、このデータを受信することはない）。集中ミドルボックスに対しては、論理コントローラは、ミドルボックスを実現する電子機器を管理する（単一の）物理コントローラを識別することだけを必要とする。
【０１１０】
ミドルボックスコンフィグレーションデータをホストに供給するために、いくつかの実施形態の論理コントローラは、データを（論理コントローラ内のテーブルマッピングエンジンの出力へアクセスするエクススポートモジュールを使用して）物理コントローラへプッシュする。他の実施形態では、物理コントローラは、論理コントローラのエクスポートモジュールからコンフィグレーションデータ（例えば、コンフィグレーションデータが利用可能であることを示す信号に応じて）をリクエストする。
【０１１１】
物理コントローラ群は、物理制御プレーンデータを渡す量と同じ量のデータを、それらが管理するホストマシーン上のミドルボックス要素へ渡す。いくつかの実施形態では、ミドルボックスコンフィグレーションデータと物理制御プレーンデータは、ホストマシーン上で動作する同一のデータベースへ送信され、管理スイッチング要素とミドルボックスモジュールはデータベースから適切な情報を取得する。同様に、集中ミドルボックス８４５に対して、物理コントローラ８１５は、ミドルボックスコンフィグレーションデータをミドルボックス電子機器（例えば、コンフィグレーションデータを記憶するデータベースへ）渡す。
【０１１２】
いくつかの実施形態では、ミドルボックスは、コンフィグレーションデータを変換する。ミドルボックスコンフィグレーションデータは、パケット処理、解析、変更等のルールを表現するための特定の言語で受信されることになる。いくつかの実施形態のミドルボックス（分散型及び集中型の少なくとも一方）は、これらのルールを、より最適なパケット分類ルールへコンパイルする。いくつかの実施形態では、この変換は、物理制御プレーンデータの物理転送プレーンデータへの変換と同様である。パケットがミドルボックスによって受信される場合、これは、そのパケットにおける自身の動作を効率的にかつ高速に実行するために、コンパイルされた最適なルールを適用する。
【０１１３】
ミドルボックスコンフィグレーションルールを追加するために、ミドルボックスモジュールは、スライス処理情報及び接続情報の少なくとも一方を受信して、管理スイッチング要素との間でパケットを送受信する。この情報は、管理スイッチング要素に送信される情報に対応する。図示されるように、いくつかの実施形態では、物理コントローラ８１５は、ミドルボックスに対するスライス処理情報及び接続情報の少なくとも一方を生成する（即ち、この情報は、ネットワーク制御システムの入力あるいは論理コントローラレベルでは生成されない）。
【０１１４】
分散ミドルボックスに対しては、物理コントローラは、いくつかの実施形態では、管理スイッチング要素のソフトウェアポートについての情報を受信する。ここで、ミドルボックスは、管理スイッチング要素自身からその管理スイッチング要素へ接続し、そして、この情報をミドルボックスへ渡す。他の実施形態では、しかしながら、このポートの使用は、ホストマシーン内のミドルボックスモジュールと管理スイッチング要素との間で直接同意されていて、そうすることで、ミドルボックスは、物理コントローラから接続情報を受信することを必要としない。いくつかのこのような実施形態では、管理スイッチング要素は、それにもかかわらず、この情報を物理コントローラへ送信し、この物理コントローラは、ミドルボックスとの間でパケットを送受信するためにユニバーサル物理制御プレーンフローエントリをカスタマイズする。
【０１１５】
集中ミドルボックスに対しては、いくつかの実施形態は、トンネリング接続データをミドルボックスへ提供する。このミドルボックスは、いくつかの実施形態では、様々なホストマシーンがパケットをミドルボックスへ送信するために使用することになる、トンネルカプセル化のタイプを知る必要がある。いくつかの実施形態では、ミドルボックスは、許容トンネリングプロトコル（例えば、ＳＴＴ、ＧＲＥ等）のリストを有していて、選択されたプロトコルは、管理スイッチング要素（群）とミドルボックスとの間で調整される。トンネリングプロトコルは、ミドルボックスのコンフィグレーションの一部としてユーザによって入力することができる、あるいは、異なる実施形態ではネットワーク制御システムによって自動的に判定することができる。ホストマシーンへの接続に加えて、図４を参照して説明されるように、トンネルは、集中ミドルボックスとプールノードとの間でセットアップされることになり、このトンネルは処理後のパケットをそのプールノードへ送信する。
【０１１６】
物理コントローラによって生成されるスライス処理情報は、いくつかの実施形態では、論理ネットワークに対して使用されるミドルボックスインスタンスに対する識別子から構成される。いくつかの実施形態では、上述のように、ホストマシーン上で動作する、あるいは集中電子機器として動作するミドルボックスは、複数の論理ネットワークによって使用するために仮想化される。ミドルボックスが管理スイッチング要素からパケットを受信すると、いくつかの実施形態では、パケットは、パケットを処理する際に使用するためのミドルボックスインスタンス（即ち、特定の構成設定されたルールのセット）の特定の１つを識別するプリペンドされたタグ（例えば、ＶＬＡＮタグと同様な）を含んでいる。
【０１１７】
図９に示されるように、ミドルボックスは、このスライス処理情報を内部スライスバインディング情報へ変換する。いくつかの実施形態では、ミドルボックスは、自身が所有する内部識別子（パケットにプリペンドされているタグとは異なる）を使用して、ミドルボックス内の状態（例えば、アクティブなＴＣＰ接続、様々なＩＰアドレスについての統計情報等）を識別する。新規のインスタンスに対する新規のミドルボックスインスタンスと外部識別子（パケット上で使用される）を作成するための命令を受信すると、いくつかの実施形態は、自動的に新規のミドルボックスインスタンスを作成し、そのミドルボックスインスタンスを内部識別子に割り当てる。加えて、ミドルボックスは、外部スライス識別子を内部スライス識別子へマッピングする、そのミドルボックスインスタンスに対するバインディングを記憶する。
【０１１８】
上述の図は、様々な物理ネットワークコントローラと論理ネットワークコントローラを示している。図１０は、ネットワークコントローラ１０００（例えば、論理コントローラあるいは物理コントローラ）のアーキテクチャの例を示している。いくつかの実施形態のネットワークコントローラは、テーブルマッピングエンジンを使用して、テーブルの入力のセットからのデータを、テーブルの出力のセットにおけるデータへマッピングする。このコントローラにおけるこのテーブルの入力のセットは、論理転送プレーン（ＬＦＰ）データへマッピングされる論理制御プレーン（ＬＣＰ）データ、ユニバーサル物理制御プレーン（ＵＰＣＰ）データへマッピングされるＬＦＰデータ、及びカスタマイズ物理制御プレーン（ＣＰＣＰ）データへマッピングされるＵＰＣＰデータの少なくとも１つを含んでいる。このテーブルの入力のセットは、また、別のコントローラ及び分散ミドルボックスインスタンスの少なくとも一方に送信されるミドルボックスコンフィグレーションデータを含むことができる。ネットワークコントローラ１０００は、図示されるように、入力テーブル１０１５、ルールエンジン１０１０、出力テーブル１０２０、インポータ１０３０、エクスポータ１０３５、トランスレータ１０３５及び永久データ記憶装置（ＰＴＤ）１０４０を含んでいる。
【０１１９】
いくつかの実施形態では、入力テーブル１０１５は、ネットワーク制御システム内のコントローラ１０００の役割に依存する、様々なタイプのデータを有するテーブルを含んでいる。例えば、コントローラ１０００がユーザの論理転送要素に対する論理コントローラとして機能する場合、入力テーブル１０１５は、ＬＣＰデータと、論理転送要素用のＬＦＰデータを含んでいる。コントローラ１０００が物理コントローラとして機能する場合、入力テーブル１０１５は、ＬＦＰデータを含んでいる。入力テーブル１０１５は、ユーザあるいは別のコントローラから受信されるミドルボックスコンフィグレーションデータを含んでいる。ミドルボックスコンフィグレーションデータは、ミドルボックスに統合される論理スイッチング要素を識別する論理データ経路設定パラメータに関連付けられる。
【０１２０】
入力テーブル１０１５に加えて、制御アプリケーション１０００は、自身のテーブルマッピング動作に対する入力を収集するために、ルールエンジン１０１０が使用する他の雑テーブル（不図示）を含んでいる。これらの雑テーブルは定数テーブルを含み、これは、自身のテーブルマッピング動作を実行するためにルールエンジン１０１０が必要とする定数に対する所定値を記憶している（例えば、値０、再実行用のディスパッチポート番号等）。定数テーブルは、更に、関数テーブルを含んでいて、これは、出力テーブル１０２５を投入するための値を計算するためにルールエンジン１０１０が使用する関数を記憶している。
【０１２１】
ルールエンジン１０１０は、入力データを出力データへ変換するための１つの方法を特定するテーブルマッピング動作を実行する。入力テーブル群の１つが変更される（入力テーブルイベントとして参照される）ときはいつでも、ルールエンジンは、テーブルマッピング動作のセットを実行し、これにより、１つ以上の出力テーブルにおける１つ以上のデータタプルの変更をもらすことになる。
【０１２２】
いくつかの実施形態では、ルールエンジン１０１０は、イベントプロセッサ（不図示）、いくつかのクエリプラン（不図示）、及びテーブルプロセッサ（不図示）を含んでいる。各クエリプランは、入力テーブルイベントの発生時に実行される結合演算のセットを特定するルールのセットである。ルールエンジン１０１０のイベントプロセッサは、このようなイベントのそれぞれの発生を検出する。いくつかの実施形態では、イベントプロセッサは、入力テーブル１０１５内のレコードに対する変更の通知のためのコールバックを入力テーブルに登録し、自身のレコードの１つが変更されている場合に入力テーブルから通知を受信することによって入力テーブルイベントを検出する。
【０１２３】
検出された入力テーブルイベントに応じて、イベントプロセッサは、（１）その検出されたテーブルイベントに対する適切なクエリプランを選択し、（２）テーブルプロセッサにそのクエリプランを実行することを指示する。クエリプランを実行するために、テーブルプロセッサは、いくつかの実施形態では、クエリプランによって特定される結合動作を実行して、１つ以上の入力と雑テーブルからの１つ以上のデータ値のセットを示す１つ以上のレコードを生成する。いくつかの実施形態のテーブルプロセッサは、（１）選択動作を実行して、結合動作によって生成されたレコード（群）からデータ値のサブセットを選択し、（２）その選択されたデータ値のサブセットを１つ以上の出力テーブル１０２０に書き込む。
【０１２４】
いくつかの実施形態は、データログデータベース言語の変形を使用して、アプリケーションデベロッパに、コントローラ用のルールエンジンを作成することを許容し、それによって、コントローラが論理データ経路のセットを、制御されている物理スイッチングインフラストラクチャにマッピングする方法を特定する。このデータログデータベース言語の変形は、本明細書では、ｎＬｏｇと読んでいる。同様のデータログ、ｎＬｏｇは、いくつかの宣言ルールと演算子を提供し、これは、デベロッパに、異なるイベントの発生に応じて実行されるべき異なる動作を特定することを可能にする。いくつかの実施形態では、ｎＬｏｇは、ｎＬｏｇの演算速度を向上するためにデータログによって提供される限定の演算子のサブセットを提供する。例えば、いくつかの実施形態では、ｎＬｏｇは、任意の宣言ルールの内、ＡＮＤ演算子だけを使用することを許可する。
【０１２５】
ｎＬｏｇを通じて特定される宣言ルールと演算子は、ｎＬｏｇコンパイラによってより大規模なルールのセットにコンパイルされる。いくつかの実施形態では、このコンパイラは、イベントを扱うことを意味している各ルールを、いくつかのデータベースの結合動作のセットに変換する。こうして、大規模のルールのセットは、ｎＬｏｇエンジンと呼ばれるテーブルマッピングルールエンジンを形成する。
【０１２６】
いくつかの実施形態は、論理データ経路設定パラメータに基づいている入力イベントに対するルールエンジンによって実行される第１の結合動作を指定する。この指定は、ルールエンジンが、コントローラによって管理されない論理データ経路セット（即ち、論理ネットワーク）に関連する結合動作のセットを開始している場合に、ルールエンジンの結合動作が直ちに中止して終了することを補償する。
【０１２７】
同様に、入力テーブル１０１５、出力テーブル１０２０は、コントローラ１０００の役割に依存する異なるタイプのデータを有するテーブルを含んでいる。コントローラ１０００は論理コントローラとして機能し、出力テーブル１０１５は論理スイッチング要素に対するＬＦＰデータとＵＰＣＰデータを含んでいる。コントローラ１０００が物理コントローラとして機能する場合、出力テーブル１０２０はＣＰＣＰデータを含んでいる。入力テーブルと同様に、出力テーブル１０１５は、ミドルボックスコンフィグレーションデータを含んでいていても良い。また、出力テーブル１０１５は、コントローラ１０００が物理コントローラとして機能する場合に、スライス識別子を含んでいても良い。
【０１２８】
いくつかの実施形態では、出力テーブル１０２０は、いくつかの異なるカテゴリにグループ化することができる。例えば、いくつかの実施形態では、出力テーブル１０２０は、ルールエンジン（ＲＥ）入力テーブル及びＲＥ出力テーブルの少なくとも一方とすることができる。出力テーブルは、出力テーブル内の変更がルールエンジンにクエリプランの実行を要求する入力イベントを検出させる場合のＲＥ入力テーブルである。出力テーブルはＲＥ入力テーブルでもあり、これは、ルールエンジンに別のクエリプランを実行させるイベントを生成する。出力テーブルは、出力テーブル内の変更がエクスポータ１０２５にその変更を別のコントローラあるいはＭＳＥへエクスポートさせる場合のＲＥ入力テーブルである。出力テーブルは、ＲＥ入力テーブル、ＲＥ出力テーブル、あるいはＲＥ入力テーブル及びＲＥ出力テーブルでもある。
【０１２９】
エクスポータ１０２５は、出力テーブル１０２０のＲＥ出力テーブルに対する変更を検出する。いくつかの実施形態では、エクスポータは、ＲＥ出力テーブルのレコードに対する変更の通知に対するコールバックをＲＥ出力テーブルに登録する。いくつかの実施形態では、エクスポータ１０２５は、自身のレコードの１つが変更されていることを示す通知をＲＥ出力テーブルから受信する場合の出力テーブルイベントを検出する。
【０１３０】
検出された出力テーブルイベントに応じて、エクスポータ１０２５は、変更されたＲＥ出力テーブル内の各変更されたデータタプルを取得して、この変更されたデータタプルを１つ以上の他のコントローラあるいは１つ以上のＭＳＥへ伝搬する。出力テーブルレコードを別のコントローラへ送信する場合、エクスポータは、いくつかの実施形態では、通信の信号チャネル（例えば、ＲＰＣチャネル）を使用して、レコードに含まれるデータを送信する。ＲＥ出力テーブルレコードをＭＳＥへ送信する場合、エクスポータは、いくつかの実施形態では、２つのチャネルを使用する。一方のチャネルは、ＭＳＥの制御プレーンにフローエントリを書き込むためのスイッチ制御プロトコル（例えば、オープンフロー）を使用して確立される。もう一方のチャネルは、コンフィグレーションデータ（例えば、ポートコンフィグレーション、トンネル情報）を送信するためのデータベース通信プロトコル（例えば、ＪＳＯＮ）を使用して確立される。
【０１３１】
いくつかの実施形態では、コントローラ１０００は、コントローラが管理することを担当しない論理データ経路セット（即ち、他の論理コントローラによって管理される論理ネットワーク）に対するデータを出力テーブル１０２０に保持しない。しかしながら、このようなデータは、トランスレータ１０３５によって、ＰＴＤ１０４０に記憶することができるフォーマットに変換され、そして、ＰＴＤに記憶される。ＰＴＤ１０４０は、このデータを、１つ以上の他のコントローラのＰＴＤへ伝搬し、そうすることで、論理データ経路セットを管理することを担当するこれらの他のコントローラは、このデータを処理することができる。
【０１３２】
いくつかの実施形態では、コントローラは、また、出力テーブル１０２０に記憶されているデータを、データの弾力性をＰＴＤにもたらす。それゆえ、これらの実施形態では、コントローラのＰＴＤは、ネットワーク制御システムによって管理されるすべての論理データ経路セットに対するコンフィグレーションデータのすべてを有している。つまり、各ＰＴＤは、すべてのユーザの論理ネットワークのコンフィグレーションのグローバルビューを含んでいる。
【０１３３】
インポータ１０３０は、いくつかの異なるソースの入力データのインタフェースであり、その入力データを使用して、入力テーブル１０１０を変更するあるいは作成する。いくつかの実施形態のインポータ１０２０は、別のコントローラから入力データを受信する。インポータ１０２０は、また、ＰＴＤ１０４０のインタフェースであり、そうすることで、他のコントローラインスタンスからのＰＴＤを通じて受信されるデータを、入力テーブル１０１０を変更するあるいは作成するための入力データとして、変換し、使用することができる。また、インポータ１０２０は、出力テーブル１０３０内のＲＥ入力テーブルに伴う変更を検出する。
【０１３４】
ＩＶ．いくつかのミドルボックスの例示の実装
上記では、分散ミドルボックスと集中ミドルボックスとを実装し、構成設定するための様々な原理を記載している。図２に示される例示のネットワークは、単一のミドルボックスだけを備える簡略化例である。一方、図１１は、多数のミドルボックスを介在するより複雑な論理ネットワークトポロジー１１００を概念的に示している。
【０１３５】
論理ネットワーク１１００は、３つの論理Ｌ２ドメインを含んでいて、これには、第１の論理Ｌ２スイッチ１１４０に接続されているウェブサーバ１１０５−１１１５、第２の論理Ｌ２スイッチ１１４５に接続されているアプリケーションサーバ１１２０及び１１２５、第３の論理スイッチ１１５０に接続されているデータサーバ１１３０及び１１３５がある。これらの論理スイッチ１１４０−１１５０のそれぞれは、論理ルータ１１５５（様々なミドルボックスを介して）に接続している。
【０１３６】
各論理スイッチと論理ルータ１１５５との間にロードバランサがあり、このロードバランサは、特定の論理Ｌ２ドメインへの到来トラフィックをスケジュールする。つまり、第１のロードバランサ１１６０は、宛先ネットワークアドレス変換（Ｄ−ＮＡＴ）を実行することで、これらの３つのウェブサーバ１１０５−１１１５との間のトラフィック（例えば、トランスポート接続単位で）の均衡を図り、第２のロードバランサ１１６５は、２つのアプリケーションサーバ１１２０と１１２５との間のトラフィックの均衡を図り、第３のロードバランサ１１７０は、Ｄ−ＮＡＴを実行して、２つのデータサーバ１１３０と１１３５との間のトラフィックの均衡を図る。加えて、論理ルータ１１５５と第２の論理スイッチ１１４５はファイヤウォール１１７５である。
【０１３７】
論理ルータ１１５５は、また、３つの論理Ｌ２ドメインを外部ネットワーク１１９５に接続し、これから、クライアントリクエストがそのネットワークに入ってくることができる。加えて、３つのミドルボックスは、管理ネットワークと外部ネットワークとの間のトラフィックを処理するためのＬ３ルータ１１５５を介在している。これらのミドルボックスは、到来トラフィックを処理するためのファイヤウォール１１８０と、発信トラフィックのＩＰアドレスを１つ以上の仮想ＩＰアドレスへ変換するためのソースＮＡＴ１１８５を含んでいる。これらのミドルボックスは、管理ネットワークと外部ネットワークのとの間に効率的に配置されている。但し、物理実装が、ミドルボックスへパケットを送信すること、また、ミドルボックス（外部ネットワーク１１９５あるいは適切なホストマシーンへ送信するため）からのパケットを受信することを含んでいるので、論理トポロジーは、これらのミドルボックスを、ルータを介在する、帯域外ミドルボックスとして示している。そして、ＩＤＳ１１９も、論理ルータ１１５５を介在している。ネットワーク１１００では、論理ルータは、処理済パケットのすべての複製（デュプリケート）を解析用のＩＤＳ１１９０へ転送する。
【０１３８】
図１２は、ホスト化仮想環境内のネットワーク１１００の１つの特定の物理実装１２００を概念的に示している。図示されるように、７つの仮想マシーン１１０５−１１３５が、５つの異なるホストマシーン１２０５−１２２５に渡って分散されている。いくつかのホストマシーンが１つの仮想マシーンだけを管理している一方で、一方では、残りのホストマシーンは２つのＶＭを管理している。ホストマシーン１２０５−１２２５は互いに接続し、かつプールノード１２３０と接続していて、これは、ゲートウェイ１２３５（エクテンダ（拡張装置）とも呼ばれる）と接続している。ゲートウェイ１２３５は、管理ネットワーク１２００を外部ネットワーク１２４０（例えば、インターネット、異なる管理ネットワーク、外部プライベートネットワーク等）に接続する。この例は、ゲートウェイ１２３５がプールノード１２３０を介してホストマシーン１２０５−１２２５にだけ接続されているように示しているが、いくつかの実施形態は、ゲートウェイとホストマシーン群との間の直接接続を実現する。
【０１３９】
図示されるように、各ホストマシーン１２０５ー１２２５、更には、プールノード１２３０とゲートウェイ１２３５は、管理スイッチング要素を含んでいる。ホストマシーン１２０５−１２２５のすべては、論理ルータ１１５５だけはなく、論理スイッチ１１４０−１１５０に対するフローエントリ群を含むように構成されている。こうして、アプリケーションサーバ１１２５とアプリケーションサーバ１１１０を含む第２のホストマシーン１２１０と、データサーバ１１３０だけを含む第５のホストマシーン１２２５は、同一の管理スイッチング要素を実現する。ゲートウェイ１２３５内の管理スイッチング要素は、論理ルータ１１５５だけではなく、論理ネットワーク１１００の３つの論理スイッチ１１４０−１１５０のすべてを実現する。プールノードは、いくつかの実施形態では、Ｌ３ルータ１１５５と３つの論理スイッチ１１４０ー１１５０を実現する管理スイッチング要素でもある。
【０１４０】
実装１２００では、いくつかの論理ミドルボックスが分散されていて、一方で、残りの論理ボックスは集中されている。例えば、侵入検出サービス１１９０は集中ＩＤＳ電子機器１２４５として実現される。ホストマシーン１２０５−１２２５のそれぞれは、ゲートウェイ１２３５として、ＩＤＳ電子機器１２４５に直接接続している。図示されるように、これらのマシーンは、ＩＤＳ電子機器にパケットを送信するだけであり、パケットを受信しない。これは、ＩＤＳが複製パケット（ゲートウェイ１２３５からの到来パケットと、ホストマシーン１２０５−１２２５からの発信パケット）を受信して、脅威を検出するための解析を実行しているだけであり、それらの解析後にはそのパケットをどこにも送信しないからである。
【０１４１】
Ｓ−ＮＡＴミドルボックス１１８５は、ホストマシーン群（例えば、ハイパーバイザ内で動作するデーモンとして）のそれぞれに渡って分散される。これは、仮想マシーンのすべてがパケットを、仮想ＩＰアドレスの配下に実際のＩＰアドレスを隠蔽するためのＩＰアドレス変換を要求する外部ネットワークへ送信することができる。ファイヤウォール１１７５も同様に分散されるが、ホストマシーン１２１０及び１２２０上のみで実現される。これは、これらが、このファイヤウォールの配下にあるアプリケーションサーバ仮想マシーン１１２０及び１１２５を管理するノードであるからである。
【０１４２】
３つのロードバランサ１１６０−１１７０は、様々なホストマシーン１２０５−１２２５、ゲートウェイ１２３５に渡って実現される。図示されるように、ロードバランサは、ホストマシーンのそれぞれにおけるロードバランサ要素内で実現され、そうすることで、ロードバランサ要素は仮想化されて（即ち、スライス化されて）、いくつかの異なるロードバランサを実現する。ファイヤウォール１１７５がアプリケーションサーバがそれぞれ実現されているホストマシーン群において配置されているのに対して、各特定の論理ロードバランサは、特定のロードバランサを担当しないマシーンを管理する各ノードにおいて配置される。これは、例えば、ロードバランサ１１７０がデータサーバ１１３０及び１１３５を表す仮想ＩＰアドレスに向けられている任意のパケットを受信して、２つのデータサーバのどちらにそのパケットを転送するかを判定し、そして、選択されたデータサーバへ反映するために宛先ＩＰアドレスを修正するからである。可能ならいつでも第１のホップ（パケットソース）において処理が実行されるので、この機能はデータサーバ群を管理するノード群においては必要とされないが（他の仮想マシーンも管理されている限り）、むしろ、データサーバ１１３０及び１１３５へパケットを送信することができる他の仮想マシーンを管理するノードにおいて必要とされる。従って、ゲートウェイ１２３５内のロードバランサ要素は３つのロードバランサのすべてを実現するためにスライスされる。これは、外部ネットワーク１２４０からの到来パケットが、３つの論理Ｌ２ドメインの任意のものに向けられている場合があるからである。
【０１４３】
加えて、図示されるように、いくつかの実施形態は、プールノード１２３０とゲートウェイ１２３５内の論理ネットワークに対する任意の分散ミドルボックスを実現する。これは、ミドルボックスが必要とされる時点でどのロケーションであるか（かつユーザが、続いてルーティングポリシー、ミドルボックスコンフィグレーションあるいはネットワークアーキテクチャを修正する場合がある）を判定することが難しい場合があるので、いくつかの実施形態は、一定の物理マシーン群が特定のミドルボックスを要求しないことになることを推定しない。これと同じに従って、いくつかの実施形態は、異なるミドルボックス群をホストの異なるサブセット群へ分散しない。代わりに、論理ネットワークに対するすべてのミドルボックスは、論理ネットワークに存在しているホストのそれぞれで実現される。
【０１４４】
外部ネットワーク１１８０と管理ネットワークとの間での到来パケットを処理するためのファイヤウォール１１８０は、ゲートウェイ内の仮想マシーン（ハイパーバイザ内で動作するモジュールではなく）内で集中形式で実現される。ゲートウェイが到来パケットを受信する場合に、ゲートウェイは、いくつかの実施形態ではファイヤウォールＶＭへパケットをルーティングする。この例では、ファイヤウォールＶＭはゲートウェイ内に配置されている一方で、いくつかの実施形態は、ホストマシーン（例えば、ユーザＶＭ群を管理するホストマシーンとは異なるホストマシーン）内の仮想マシーンとして、あるいはファイヤウォール電子機器を使用して、ファイヤウォールを実現する。
【０１４５】
ネットワーク１１００を構成設定するために、いくつかの実施形態では、図８及び図９を参照して示されるように、ユーザは、ネットワークトポロジーを（例えば、入力変換コントローラを介して）論理コントローラへ入力する。いくつかの実施形態では、ユーザは、スイッチ群、ルータ群、ミドルボックス群及び仮想マシーン群の間の接続を入力する。様々なネットワークコンポーネントの位置（ロケーション）に基づいて、入力変換コントローラあるいは論理コントローラは、論理制御プレーンデータを生成して、これを、論理転送プレーン内のフローエントリ群に変換する。しかしながら、ファイヤウォール１１８０、Ｓ−ＮＡＴ１１８５及びＩＤＳ１１９０のようなミドルボックスに対しては、ユーザは、パケットをこれらのコンポーネントを送信する場合を示すポリシールーティングルールを入力しなければならない。例えば、ファイヤウォール１１８０に対するルーティングポリシーは、論理ネットワーク外のソースＩＰを伴うパケット群をすべて送信することになり、一方で、Ｓ−ＮＡＴ１１８５に対するルーティングポリシーは、論理ネットワーク内のソースＩＰを伴うパケット群をすべて送信することになる。論理コントローラは、フローエントリ群をユニバーサル物理制御プレーンへ変換した後、どの物理コントローラがどのフローエントリを受信するべきかを識別し、これらのフローエントリを配信する。物理コントローラ群は、（ホストマシーン群がユニバーサル物理制御プレーンからカスタマイズ物理制御プレーンへの変換を実行するシャーシ（chassis）コントローラ群を含んでいる限り）特定のポート情報と他のカスタマイズ情報をフローエントリ群に追加し、そして、それらを管理スイッチング要素へ配信する。
【０１４６】
加えて、ユーザは、様々なロードバランサ、ファイヤウォール等に対するミドルボックスコンフィグレーションを入力する。例えば、この情報は、異なるロードバランサ、Ｓ−ＮＡＴ用の仮想ＩＰから実ＩＰへのマッピング、ファイヤウォール用のパケット処理ルール等のそれぞれについて使用するためのスケジューリングアルゴリズムを含むことになる。ユーザは、この情報を様々なミドルボックス用のＡＰＩを通じて入力し、いくつかの実施形態は、この情報を、フローエントリ群として同一のフォーマットを有するレコード（例えば、ｎＬｏｇ）へ変換する。この論理コントローラは、どのミドルボックスコンフィグレーションがホストマシーンあるいは集中ミドルボックス電子機器へ送信されることを必要としているかを識別する（例えば、ファイヤウォール１１７５に対するレコード群は、ホストマシーン１２１０と１２２０へ進むことだけを必要とする一方で、Ｓ−ＮＡＴレコード群は、５つのホストマシーン１２０５−１２２５のすべてへ進む）。論理コントローラ群は、そのレコード群を適切な物理コントローラ群へ配信し、そこで、スライス処理情報（及び、いくつかの場合、トンネリング情報）を追加して、その情報を上述のミドルボックス群へ配信する。
【０１４７】
ネットワークの動作は、外部ネットワークから到来するパケット群、外部ネットワークへ発信するパケット群、及び１つの論理Ｌ２ドメインから他の論理Ｌ２ドメインへ送信されるパケット群を参照することによって説明される。パケットがホストマシーン（例えば、ウェブサーバ）から送信される場合、それは、まず、ホスト上で動作するＭＳＥに到達する。パケットは、まず、論理スイッチによって論理Ｌ２処理に投入され、この論理スイッチは、そのパケットを論理ルータ（これは、パケットが発信されるので、それは、ローカルロードバランサへ送信される必要がないからである）へ送信する。論理ルータ（ホストマシーンにおけるＭＳＥによっても取り扱われる）は、パケットの複製をＩＤＳ電子機器１２４５へ送信するとともに、そのパケットをホスト上のＳ−ＮＡＴ処理へ送信する。Ｓ−ＮＡＴ処理は、ソースＩＰアドレスを修正して、新規のパケットをＭＳＥへ返信する。いくつかの実施形態では、パケットがアクティブなＴＣＰセッションの一部である場合、Ｓ−ＮＡＴは、Ｓ−ＮＡＴ処理を介在させることなく、ＭＳＥへその修正を実現可能にするフローエントリ群をＭＳＥへ送信している場合がある。ＭＳＥによって実現される論理ルータは、論理出口ポートを外部ネットワークに面しているポートとして識別し、これは、パケットを送信するための物理ポートをプールノード１２３０へマッピングする。プールノードは、パケットをゲートウェイ１２３５へ転送し、これは、そのパケットを外部ネットワーク１２４０へ送信する。
【０１４８】
パケットが外部ネットワーク１２４０からゲートウェイ１２４０で受信される場合、そのゲートウェイ内のスイッチング要素処理は、まず、パケットをファイヤウォール仮想マシーンへ送信する。ファイヤウォールがパケットを破棄しない場合、次に、そのパケットはスイッチング要素処理へ返信され、これは、ロードバランサの正しいスライスを識別し、そのパケットにスライス情報をタグ付けし、そして、そのパケットをロードバランサ（負荷分散）処理へ送信する。ロードバランサは、実際の宛先ＩＰを選択し、選択された宛先マシーンへ反映するために修正されたＩＰアドレスを有する新規のパケットを送信する。この時点で、ゲートウェイ内のＭＳＥは、パケットを正しいホストへ送信する。宛先ＶＭがアプリケーションサーバ１１２０あるいは１１２５の内の１つである場合、ゲートウェイのＭＳＥ内の論理ルータは、まず、処理用のファイヤウォール１１７５へパケットを送信し、そして、ファイヤウォール要素からの返信を受信した後に、そのパケットを正しいホストへ送信する。次に、ＭＳＥは、パケットを宛先マシーンへ配信する。
【０１４９】
１つの論理ドメインから別の論理ドメインへ進むパケット群は、ゲートウェイ１２３５を通じて進む必要はない。パケットは、まず、ＭＳＥにおいて受信され、そこで、Ｌ２スイッチングを実行し、更に、Ｌ３ルーティングを実行する。論理ルータは、宛先ドメインを識別し、パケットに正しいロードバランサスライス処理情報をタグ付けし、更に、そのタグ付けされたパケットをロードバランサへ送信する。ロードバランサは、宛先ＩＰアドレスを修正して、そのパケットをＭＳＥへ返信し、そして、ＭＳＥは、そのパケットを、ＶＭへ配信するための正しいホストマシーンへ転送する。
【０１５０】
Ｖ．電子システム
上述の特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体（コンピュータ可読媒体としても呼ばれる）に記録されている命令のセットとして特定されるソフトウェアプロセスとして実現される。これらの命令群は、１つ以上のコンピュータあるいは処理ユニット（群）（例えば、１つ以上のプロセッサ、プロセッサのコア群、あるいは他の処理ユニット群）によって実行される場合、これらは、処理ユニット（群）に命令群で示される動作を実行させる。コンピュータ可読メディアの例には、限定するものではないが、ＣＤ−ＲＯＭ、フラッシュドライブ、ランダムアクセスメモリ（ＲＡＭ）チップ、ハードドライブ、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログマブルリードオンリメモリ（ＥＥＰＲＯＭ）等が含まれる。コンピュータ可読メディアには、搬送波、及び無線接続あるいは有線接続を通過する電子信号は含まれない。
【０１５１】
この明細書では、用語「ソフトウェア」は、リードオンリメモリに常駐するファームウェア、あるいは磁気記憶装置に記憶されるアプリケーションを含むことを意味していて、これは、プロセッサによって処理するためにメモリに記憶することができる。また、いくつかの実施形態では、複数のソフトウェア発明は、大規模プログラムの一部分として実現することができ、一方で、別のソフトウェア発明を維持する。いくつかの実施形態では、複数のソフトウェア発明は別のプログラムとして実現することもできる。そして、本明細書で記載されるソフトウェア発明を共に実現する別々のプログラムの任意の組み合わせは、本発明の範囲内である。いくつかの実施形態では、１つ以上の電子システム上で動作するためにインストールされる場合、ソフトウェアプログラムは、そのソフトウェアプログラムの動作を実行し機能する１つ以上の特定マシーン実装を定義する。
【０１５２】
図１３は、本発明のいくつかの実施形態が実現される電子システム１３００を概念的に示す図である。電子システム１３００は、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ等）、サーバ、専用スイッチ、電話、ＰＤＡ、あるいは任意の他の種類の電子あるいはコンピュータデバイスとすることができる。このような電子システムは、様々なタイプのコンピュータ可読メディアと、様々な他のタイプのコンピュータ可読メディア用のインタフェースを含んでいる。電子システム１３００は、バス１３０５、処理ユニット（群）１３１０、システムメモリ１３２５、リードオンリメモリ１３３０、永久記憶装置１３３５、入力デバイス１３４０、及び出力デバイス１３４５を含んでいる。
【０１５３】
バス１３０５は、あらゆるシステムバス、周辺バス及びチップセットバスを集約的に示していて、これらは、電子システム１３００のいくつかの内部デバイスを通信接続する。例えば、バス１３０５は、処理ユニット（群）１３１０と、リードオンリメモリ１３３０、システムメモリ１３２５及び永久記憶装置１３３５とを通信接続する。
【０１５４】
これらの様々なメモリユニットから、処理ユニット（群）１３１０は、本発明のプロセスを実行するために、実行用の命令と、プロセス用のデータを取得する。この処理ユニット（群）は、様々な実施形態において単一のプロセッサあるいはマルチコアプロセッサとすることができる。
【０１５５】
リードオンリメモリ（ＲＯＭ）１３３０は、処理ユニット（群）１３１０及び電子システムの他のモジュールによって必要とされる静的データ及び命令を記憶している。永久記憶装置１３３５は、一方で、読出及び書込メモリデバイスである。このデバイスは、電子システム１３３０がオフである場合でも命令及びデータを記憶する不揮発性メモリユニットである。本発明のいくつかの実施形態は、永久記憶装置１３３５として、大容量記憶デバイス（例えば、磁気ディスクあるいは光学ディスク及びそれに対応するディスクドライブ）を使用する。
【０１５６】
他の実施形態は、永久記憶装置としてリムーバル記憶デバイス（例えば、フロッピー（登録商標）ディスク、フラッシュメモリデバイス等、及びそれに対応するドライブ）を使用する。永久記憶装置１３３５と同様に、システムメモリ１３２５は、読出及び書込メモリデバイスである。しかしながら、記憶装置１３３５とは異なり、システムメモリ１３２５は不揮発性読出及び書込メモリ、例えば、ランダムアクセスメモリである。システムメモリ１３２５は、プロセッサがランタイムで必要とするいくつかの命令及びデータを記憶する。いくつかの実施形態では、本発明のプロセスは、システムメモリ１３２５、永久記憶装置１３３５及びリードオンリメモリ１３３０の少なくとも１つに記憶されている。これらの様々なメモリユニットから、処理ユニット（群）１３１０は、命令を取得して、プロセス用のデータを実行することで、いくつかの実施形態のプロセスを実行する。
【０１５７】
バス１３０５は、入力デバイス１３４０及び出力デバイス１３４５にも接続している。この入力デバイス１３４０は、ユーザに、情報を通信して、電子システムに対するコマンドを選択することを可能にする。入力デバイス１３４０は、アルファベットキーボード及びポインティングデバイス（「カーソル制御デバイス」とも呼ばれる）、カメラ（例えば、ウェブカム）、マイクロフォンあるいは音声コマンドを受信するための同様のデバイス等を含んでいる。出力デバイス１３４５は、電子システムによって生成される画像を表示する、あるいは、そうでなければ、データを出力する。出力デバイス１３４５は、プリンタ、及び表示デバイス、例えば、陰極線管（ＣＲＴ）あるいは液晶ディスプレイ（ＬＣＤ）を含み、加えて、スピーカあるいは同様のオーディオ出力デバイスを含んでいる。いくつかの実施形態は、入力デバイス及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含んでいる。
【０１５８】
そして、図１３に示されるように、バス１３０５は、電子システム１３００を、ネットワークアダプタ（不図示）を介してネットワーク１３６５に接続している。この方法では、コンピュータは、コンピュータのネットワーク（例えば、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、あるいはイントラネットの一部とすることができる、あるいはネットワーク群のネットワーク、例えば、インターネットの一部とすることができる。電システム１３００の任意のあるいはすべてのコンポーネントは、本発明とともに使用することができる。
【０１５９】
いくつかの実施形態は、電子コンポーネント、例えば、マイクロプロセッサ、マシーン可読あるいはコンピュータ可読媒体（選択的には、コンピュータ可読記憶メディア、マシーン可読メディア、あるいはマシーン可読記憶メディアと呼ばれる）にコンピュータプログラム命令を記憶する記憶装置及びメモリを含んでいる。このようなコンピュータ可読メディアのいくつかの例には、ＲＡＭ、ＲＯＭ、リードオンリコンパクトディスク（ＣＤ−ＲＯＭ）、記録可能コンパクトディスク（ＣＤ−Ｒ）、書換可能コンパクトディスク（ＣＤ−ＲＷ）、リードオンリデジタル多用途ディスク（例えば、ＤＶＤ−ＲＯＭ、デュアル層ＤＶＤ−ＲＯＭ）、様々な記録可能／書換可能ＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ等）、フラッシュメモリ（例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード等）、磁気ハードドライブ及びソリッドステートハードドライブ、リードオンリ及び記録可能ブルーレイ（登録商標）ディスク、高密度光学ディスク、任意の他の光メディアあるいは磁気メディア、及びフロッピーディスクが含まれる。コンピュータ可読メディアは、少なくとも１つの処理ユニットによって実行可能であり、かつ、様々な動作を実行するための命令群のセットを含むコンピュータプログラムを記憶することができる。コンピュータプログラムあるいはコンピュータコードの例は、例えば、コンパイラによって生成されるマシーンコードを含み、また、コンピュータ、電子コンポーネントあるいはインタプリタを使用するマイクロプロセッサによって実行される高レベルコードを含むファイルを含んでいる。
【０１６０】
上述の議論は、主に、ソフトウェアを実行するマイクロプロセッサあるいはマルチコアプロセッサに向けている一方で、いくつかの実施形態は、１つ以上の集積回路、例えば、特定用途集積回路（ＡＳＩＣ）あるいはフィールドプログマブルゲートアレイ（ＦＰＧＡ）によって実行される。いくつかの実施形態は、このような集積回路は、回路自身に記憶されている命令を実行する。加えて、いくつかの実施形態は、プログマブル論理デバイス（ＰＬＤ）、ＲＯＭデバイス、ＲＡＭデバイスに記憶されるソフトウェアを実行する。
【０１６１】
本願の明細書及び任意の請求項で使用されるように、用語「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」はすべて、電子デバイスあるいは他の技術的なデバイスを意味する。これらの用語は、人あるいは人のグループは除外している。明細書の目的のために、用語である表示あるいは表示することは、電子デバイス上で表示することを意味する。本願の明細書及び任意の請求項で使用されるように、用語「コンピュータ可読媒体」、「コンピュータ可読メディア」及び「マシーン可読媒体」は、コンピュータによって読出可能である形式で情報を記憶する、有形の物理的なオブジェクトに完全に制限される。これらの用語は、任意の無線信号、有線ダウンロード信号、及び任意の他の一時的な信号は除外する。
【０１６２】
本発明はいくつかの特定の詳細を参照して説明しているが、当業者は、本発明が、本発明の範囲から逸脱することなく他の特定の形態で実現することができることを認識するであろう。つまり、当業者は、本発明が上述の図示の詳細に制限されるものではなく、添付の請求項によって定義されるものであることを理解するであろう。
【図１】
0005961718.tif 000002
【図２】
0005961718.tif 000003
【図３】
0005961718.tif 000004
【図４】
0005961718.tif 000005
【図５】
0005961718.tif 000006
【図６】
0005961718.tif 000007
【図７】
0005961718.tif 000008
【図８】
0005961718.tif 000009
【図９】
0005961718.tif 000010
【図１０】
0005961718.tif 000011
【図１１】
0005961718.tif 000012
【図１２】
0005961718.tif 000013
【図１３】
0005961718.tif 000014