(58)【調査した分野】(Int.Cl.,DB名)
前記ユーザ空間モジュールは、更に、(i)前記カーネルモジュールによって記憶されている前記複数の転送ルールを監視し、及び(ii)所定の時間量の間、アクセスしていない任意の記憶されている転送ルールを削除するためのものである
ことを特徴とする請求項6に記載のホストマシーン。
【発明を実施するための形態】
【0015】
以下の本発明の詳細説明では、本発明のいくつかの詳細、例示及び実施形態を説明し、かつ記載する。しかしながら、本発明が説明される実施形態に限定されるものではなく、また、本発明が、議論されるいくつかの特定の詳細及び例示を伴わずに実現されても良いことを当業者には明らかでかつ明白であろう。
【0016】
いくつかの実施形態は、ユーザに論理ネットワークを特定することを可能にするシステムを提供する。この論理ネットワークは、1つ以上のミドルボックス(例えば、ファイヤウォール、ロードバランサ、ネットワークアドレス変換器、侵入検出システム(IDS)、ワイドエリアネットワーク(WAN)オプティマイザ等)を含んでいる。このシステムは、いくつかの管理スイッチング要素に渡って論理転送要素(例えば、論理スイッチ、論理ルータ等)を分散させることによって論理ネットワークを実現する。この管理スイッチング要素は、その論理ネットワークのホスト仮想マシーンでもあるいくつかの物理マシーン上で動作する。
【0017】
このような論理ネットワークの実現においては、いくつかの実施形態のシステムは、様々な方法で様々なミドルボックスを実現する。例えば、システムは、分散形式(例えば、管理スイッチング要素と並行して物理マシーン上で動作するいくつかの管理ミドルボックスに渡って実現されるミドルボックスを用いる)で第1のミドルボックスを実現し、集中形式(例えば、単一の電子機器あるいは仮想マシーンとして、クラスタとして)で第2のミドルボックスを実現することができる。いくつかの実施形態では、分散形式あるいは集中形式で特定のミドルボックスを実現するかどうかについての判定は、ミドルボックスが分散されている場合での異なるミドルボックスとの間での状態共有要件に基づいている。
【0018】
図1は、完全分散されているミドルボックスから完全集中されているミドルボックスの範囲に渡る、論理ミドルボックスの物理ネットワークへの実装に対するスペクトル100を概念的に示す図である。上述のように、異なるミドルボックスを、このスペクトルに沿う異なる地点で実現することができる。加えて、シングルタイプ(単一型)のミドルボックスを、同一の管理論理ネットワーク内を含む、集中形式あるいは分散形式の両方で実現することができる。例えば、ユーザは、外部ネットワークから到来するすべてのトラフィックをフィルタリングするための第1のファイヤウォールと、論理ネットワークの異なるサブネットワーク間のトラフィックをフィルタリングするための第2のファイヤウォールを要望する場合がある。いくつかの場合、最適なソリューションは、外部から到来するすべてのトラフィックが転送される単一の電子機器として第1のファイヤウォールを実現し、一方で、論理ネットワークの仮想マシーンが実現されている物理マシーン群のすべてに渡る分散形式で第2のファイヤウォールを実現することである。
【0019】
スペクトル100の左端では、いくつかの実施形態の完全分散されているミドルボックスアーキテクチャ105が示されている。図に示されるように、ミドルボックスは、いくつかのノード(物理ホストマシーン)に渡って実現されている。いくつかの実施形態では、物理ホストマシーンのそれぞれは、論理ミドルボックスを含む論理ネットワーク内で少なくとも1つの仮想マシーンを管理する。加えて、管理スイッチング要素は、ホストマシーンのそれぞれで動作して、論理ネットワークの論理転送要素(例えば、論理ルータ、論理スイッチ)を実現する。特定の物理ホストマシーンは、2つ以上の論理ネットワーク(例えば、異なるテナントに属している)内で仮想マシーンを管理することができるので、分散ミドルボックス及びホスト上で動作する管理スイッチング要素の両方を、異なる論理ネットワークからのミドルボックス及び論理転送要素を実現するために仮想化することができる。いくつかの実施形態では、ミドルボックスは、ホストマシーンのハイパーバイザとして動作するモジュールあるいはモジュールのセットとして実現される。
【0020】
図で示されるように、ミドルボックスは、最小の共有の状態(あるいは完全に共有されていない状態)がミドルボックスインスタンス間で要求される場合に分散形式で実現することができる。少なくともいくつかのタイプのミドルボックスはステートフルであり、この場合、これらのミドルボックスは、マシーン間(例えば、ネットワーク内の2つの仮想マシーン間、ネットワーク内の仮想マシーンと外部マシーンとの間、等)での接続に対する状態を確立する。いくつかの実施形態では、ミドルボックスは、各トランスポートレイヤ接続(例えば、TCP接続、UDP接続)に対する状態を確立する。いくつかの実施形態の分散の場合、特定のホストマシーンで動作するミドルボックス要素は、これを介して通過するトランスポート接続に対する状態を作成するが、他のホストマシーン上で動作する他のミドルボックス要素との状態を共有する必要はない。特定のホストマシーン上で管理される仮想マシーンだけに状態を適用し、そのミドルボックスが他の仮想マシーンに対して確立されている状態情報を使用して任意の解析を実行する必要がない場合、ミドルボックスは分散され得る。このようなミドルボックスの例には、ソースネットワークアドレス変換(S−NAT)、宛先ネットワークアドレス変換(D−NAT)、及びファイヤウォールが含まれる。
【0021】
加えて、いくつかの実施形態は、最小レベルの状態共有を有する、ミドルボックスの分散を可能にする。例えば、ロードバランサは、マシーン群にクエリを発行して、トラフィックの均衡を図って、そのマシーン群のそれぞれに送信される現在のレベルのトラフィックを判定し、それを他のロードバランサに分散する。しかしながら、各ロードバランス処理(balancing)要素は、ロードバランス処理アルゴリズムを実行して、定期的な間隔でクエリを実行することができる。これは、仮想マシーンの1つにパケットが転送される毎に、あるいはトランスポート(例えば、TCP、UDP等)接続が仮想マシーンの1つと確立される毎に、各他のロードバランス要素と状態情報を共有するものではない。
【0022】
スペクトル100の他方の側は、完全集中ミドルボックス実装110である。この実装では、ホスト内の管理スイッチング要素は、処理するためのミドルボックスに対するすべてのトラフィックを同一のミドルボックス電子機器へ送信する。この単一のミドルボックスは、自身が所有するホストマシーン内(あるいはネットワーク内の複数の仮想マシーンの1つとする同一のホスト内)の物理ネットワーク内で動作する、個別の物理マシーンあるいは個別の仮想マシーンとすることができる。管理スイッチング要素はパケットがミドルボックスへ送信されるべきであることを識別する場合、スイッチング要素は、パケットを物理ネットワークを介して(例えば、トンネルを介して)ミドルボックスへ送信する。ミドルボックスはパケットを処理して、そのパケット(実際には、新規のパケット)を処理用の別の管理スイッチング要素へ送信する。
【0023】
いくつかの実施形態では、新規のパケットが送信される管理スイッチング要素は、プールノードとなる。プールノードは、いくつかの実施形態では、エッジスイッチング要素(即ち、これらは、ホストマシーン上に配置されていて、仮想マシーンに直接接続されている)が処理することができないトラフィックを処理するための、ネットワーク内部に配置される(即ち、ネットワークエッジにある任意の仮想マシーンに直接節属されていない)特定のタイプの管理スイッチング要素である。他の実施形態では、パケットをプールノードへ送信するのではなく、ミドルボックスは、トラフィックを、ミドルボックス電子機器に直接構築されている管理スイッチング要素へ送信する。
【0024】
いくつかの実施形態は、分散ミドルボックスがデータプレーン速度でパケット共有を要求する場合、そのような集中ミドルボックスを使用する。つまり、ミドルボックス要素によって処理される各トラフィックパケットに対して、このミドルボックス要素は、パケット処理から得られる状態変更ですべての他のミドルボックスインスタンスを更新しなければならないであろう。つまり、ミドルボックスを介して通過する各トラフィックパケットは、他のミドルボックスインスタンスのすべてを更新するために、追加のトラフィックが急増することになる。このようなミドルボックスの例は、IDS、及びWANオプティマイザが含まれる。例えば、侵入を適切に監視するために、IDSによる処理は、ネットワークの接続のほぼすべてを把握する必要がある。このように、IDSが分散されている場合、新規の状態の更新は、分散されているIDS要素によって処理されるパケット毎に送信される必要があろう。
【0025】
ミドルボックスクラスタアーキテクチャ115は、単一の物理マシーンではなく集中リソースプールとして動作すること以外は、完全集中アーキテクチャ110と同様である。図に示されるように、ミドルボックスクラスタ(例えば、IDSボックスのクラスタ)は、ミドルボックスを使用するネットワーク(あるいはネットワーク群)がより大きい場合に有益であり、単一の電子機器は、より大きな配備を取り扱うための十分なリソース(例えば、メモリ、処理電力等)を有していない場合がある。しかしながら、クラスタが状態情報のすべての知識を要求するミドルボックスである場合、この状態情報は、クラスタ内の様々なマシーン間で共有されることになる。いくつかの実施形態では、ミドルボックスクラスタは、解析が、トランスポート接続(あるいは、パケット毎の頻度よりも低い、接続毎のいくつかの更新)単位ではなく、パケット単位で状態更新を要求しない場合は、単一の電子機器よりも良好なオプションとなる。要求される高速な状態共有を実行するために、いくつかの実施形態は、状態情報を共有するための個別の専用高速接続を介してクラスタ内のミドルボックスマシーンとリンクする。
【0026】
上述の説明は、いくつかの実施形態のネットワーク内の様々な実装の論理ミドルボックスの例を示している。より詳細な実施形態のいくつかは以下で説明する。セクションIは、いくつかの実施形態の異なるミドルボックスアーキテクチャを記載している。セクションIIは、いくつかの実施形態の分散ミドルボックス実装を記載している。次に、セクションIIIは、1つ以上のミドルボックスを含む論理ネットワークを実現するために、ネットワークを構成設定するためのいくつかの実施形態のネットワーク制御システムを記載している。セクションIVは、いくつかの異なるミドルボックスを備えるネットワークの例を記載している。そして、セクションVは、本発明のいくつかの実施形態が実現される電子システムを記載している。
【0027】
I.様々なミドルボックスアーキテクチャ
上述のように、いくつかの実施形態は、管理ネットワーク内の様々なアーキテクチャを使用して様々なミドルボックスを実現する。同一の論理ネットワークトポロジーに対してでさえも、いくつかのミドルボックスが分散形式(ネットワークの仮想マシーンが動作する各ホストで動作するミドルボックス要素を用いる)で実現され、一方で、他のミドルボックスは、(単一の電子機器を用いる、あるいは、ホスト上の管理スイッチング要素が接続するクラスタを用いる)集中形式で実現される。
【0028】
図2は、いくつかの実施形態の論理ネットワークトポロジー200を概念的に示す図である。ネットワークトポロジー200は、説明のための簡略化ネットワークである。このネットワークは、2つの論理L2スイッチ205及び210を含み、これらは論理L3ルータ215に接続されている。論理スイッチ205は仮想マシーン220及び225と接続していて、一方で、論理スイッチ210は仮想マシーン230及び235と接続している。論理ルータ215は、また、外部ネットワーク250と接続している。
【0029】
加えて、ミドルボックス240は、論理ルータ215に接続している。ネットワークトポロジー200は、ミドルボックスを組み込むことができる1つの特定の論理ネットワークトポロジーを単に示していることを、当業者は認識するであろう。様々な実施形態では、ミドルボックスは、2つの他のコンポーネント間に直接配置されていても良いし、あるいはゲートウェイと論理ルータ(例えば、論理ネットワークへ進入するあるいは退出するすべてのトラフィックを監視し処理するために)との間に直接配置されていても良いし、あるいはより複雑なネットワーク内の他のロケーション内に配置されていても良い。
【0030】
図2に示されるアーキテクチャでは、ミドルボックス240は、1つのドメインから他のドメインへの、あるいは、外界とドメインとの間の、ダイレクトトラフィックフロー内には配置されていない。従って、どのパケットが処理用のミドルボックスへ送信されるべきかを判定する論理ルータ215に対して、ルーティングポリシーが(ネットワークアドミニストレータのようなユーザによって)特定されるまで、パケットはミドルボックスへ送信されることはない。いくつかの実施形態は、宛先アドレス(例えば、宛先IPあるいはMACアドレス)を越えるデータに基づいてデータを転送するポリシールーティングルールを使用することができる。例えば、ユーザは、例えば、ネットワークコントローラアプリケーションプログラミングインタフェース(API)を通じて、論理スイッチ205によってスイッチされる(切り替えられる)論理サブネットにおけるソースIPアドレスを含むすべてのパケットが、あるいは、論理スイッチ210によってスイッチされる(切り替えられる)論理サブネットに向けられている外部ネットワーク250からネットワークへ進入するすべてのパケットが、処理用のミドルボックス240へ向けられるべきであることを特定することができる。
【0031】
異なるミドルボックスは、ネットワーク内で異なる機能を実行することができる。例えば、ファイヤウォールは、データパケットを解析して、そのデータパケットの通過(即ち、ACLフローエントリと同様に)を許可するべきであるか否かを判定する。ファイヤウォールはルールのセット(例えば、ユーザによって入力される)を記憶している。このルールのセットは、ファイヤウォールがパケットを破棄する(即ち、廃棄する)か、あるいはパケットの通過を許可するかを(あるいは、いくつかの場合、パケットを破棄して、送信元にエラー応答を返信することによってパケットを拒否する)判定する。いくつかの実施形態では、ファイヤウォールは、トランスポート(例えば、TCP及びUDPの少なくとも一方)接続の追跡を維持するステートフルファイヤウォールであり、そして、より高速なパケット処理決定を行うための記憶された状態情報を使用する。
【0032】
ソースネットワークアドレス変換(S−NAT)は、パケットヘッダ内のパケットのソースIPアドレスを変更する。例えば、S−NATを使用することで、様々なマシーンからのパケットのソースを1つのIPアドレスへ変更することによって、異なるIPアドレスを有するいくつかの異なるマシーンのIPアドレスを宛先マシーンから隠蔽することができる。宛先ネットワークアドレス変換(D−NAT)は、同様に、実際のIPアドレスをソースマシーンから隠蔽するために、パケットの宛先IPアドレスを変更する。ロードバランス(負荷分散)処理は、様々なアルゴリズム(例えば、ラウンドロビン、ランダム割当等)を使用するD−NATの形式をとり、いくつかの宛先マシーンに渡るトラフィックの均衡を図る。ロードバランサは、ソースマシーンに晒される特定のIPアドレスに対するパケットを受信し、そのパケットの宛先IPアドレスを修正して、ロードバランス処理アルゴリズムによって選択される宛先マシーンの特定の1つと照合する。
【0033】
侵入検出システム(IDS)は、いくつかの実施形態では、パッシブ(受動型)ミドルボックスであり、これは、悪意のある行動あるいはポリシー違反について、論理ネットワークを監視する。IDSは、トランスポート接続(例えば、TCP接続、UDP接続等)を検証して、ネットワーク上の攻撃が発生しているかどうかを判定することができる。
【0034】
WANオプティマイザは、WANに渡るデータ転送の効率性を向上させる(例えば、WANに渡るデータのフローを促進させる)ためのミドルボックスデバイスである。WANオプティマイゼーション(最適化)技術の例は、データデデュプリケーション(重複除外)、データ圧縮、レイテンシーオプティマイゼーション(待ち時間最適化)、キャッシュ処理及びプロキシ処理、前方誤り訂正、プロトコルスプーフィング、トラフィックシェーピング、イコライジング、接続制限、単純レート制限等を含んでいる。上述の内容は、いくつかの異なるミドルボックスのいくつかのリストである一方で、いくつかの実施形態が、分散形式あるいは集中形式で実現することができる様々な異なるミドルボックスを含むことができることを、当業者は認識するであろう。
【0035】
ミドルボックスのタイプに依存して、いくつかの場合、ユーザによって要求される実装のタイプに依存して、
図2に示されるようなミドルボックスは、集中形式あるいは分散形式のどちらかで実現されることになる。
図3は、いくつかの実施形態の分散実装300を概念的に示している。特に、
図3は、いくつかのノードを示していて、これには、第1のホストマシーン305、第2のホストマシーン310、第3のホストマシーン315、及び第Nのホストマシーン320を含んでいる。最初の3つのノードのそれぞれはネットワーク200のいくつかの仮想マシーンを管理し、仮想マシーン220は第1のホストマシーン305上で管理され、仮想マシーン225及び235は第2のホストマシーン310上で管理され、仮想マシーン230は第3のホストマシーン315上で管理される。
【0036】
加えて、ホストマシーンのそれぞれは、管理スイッチング要素(「MSE」)を含んでいる。いくつかの実施形態の管理スイッチング要素は、1つ以上の論理ネットワークに対する論理転送要素を実現するソフトウェア転送要素である。例えば、ホスト305−320内のMSEは、ネットワーク200の論理転送要素を実現する転送テーブル内のフローエントリを含んでいる。具体的には、ホストマシーン上のMSEは、論理スイッチ205及び210に加えて、論理ルータ215を実現する。一方、いくつかの実施形態だけが、論理スイッチに接続されている少なくとも1つの仮想マシーンが特定のノードに配置されている場合に、その特定ノードにおいて論理スイッチを実現する(即ち、ホスト305におけるMSE内で論理スイッチ205と論理ルータ215とだけを実現する)。第Nのホスト320は、ネットワーク200からの任意の仮想マシーンを含んでいないので、ホスト上に常駐するMSEは、ネットワーク200からの任意の論理転送要素を実現しない。
【0037】
いくつかの実施形態の実装300は、また、ホストマシーンと接続するプールノード340を含んでいる。いくつかの実施形態では、ホストに常駐するMSEは、第1のホップ処理を実行する。つまり、これらのMSEは、仮想マシーンから送信された後にパケットが到達する第1の転送要素であり、また、この第1のホップで論理スイッチングと論理ルーティングのすべてを実行することを試行する。しかしながら、いくつかの場合、特定のMSEは、ネットワークに対する論理転送情報のすべてを含むフローエントリを記憶しない場合があるので、特定のパケットを用いて何をするかを知ることができない場合がある。このようないくつかの実施形態では、MSEは、パケットを、更に処理するためのプールノード340へ送信する。このプールノードは、内部の管理スイッチング要素であり、いくつかの実施形態では、エッジソフトウェアスイッチング要素よりも論理ネットワークのより大きな部分を網羅するフローエントリを記憶する。
【0038】
ネットワーク200の仮想マシーンが常駐するホストに渡って論理スイッチング要素の分散と同様に、ミドルボックス240は、これらのホスト305−315上のミドルボックス要素に渡って分散される。いくつかの実施形態では、ミドルボックスモジュール(あるいはモジュールのセット)は、ホストマシーン上に常駐する(例えば、ホストのハイパーバイザ内で動作する)。ユーザが論理ネットワーク(例えば、ネットワーク200)をセットアップする場合、その入力には、ミドルボックスからのコンフィグレーション(構成設定)が含まれる。例えば、ファイヤウォールに対しては、ユーザは、パケットフィルタリングに対するルールのセットを(例えば、IPアドレス、TCP接続等に基づいて)入力することになるであろう。いくつかの実施形態では、論理転送要素を実現するために管理スイッチング要素を提供するために使用されるネットワーク制御システムは、ホストマシーン上で動作する様々なミドルボックス要素を提供するためにも使用することができる。ユーザがミドルボックスのコンフィグレーションをネットワーク制御システムのコントローラへ入力する場合、このコントローラは、ミドルボックスのコンフィグレーションが実現されるべき特定のノード群を識別し、そのコンフィグレーションをこれらのノード群へ配信する(例えば、コントローラ群のセットを通じて)。
【0039】
仮想マシーン群の1つがパケットを(例えば、仮想マシーン群の別の1つへ、外部アドレスへ等)送信する場合、パケットは、最初に、処理用のローカル管理スイッチ要素へ進む。MSEは、自身に記憶されているフローエントリを使用して、パケットをミドルボックスへ送信するための転送決定を行うことができ、いくつかの実施形態では、パケットを同一のホスト上のローカルミドルボックス要素へ送信する。いくつかの実施形態では、ミドルボックス要素とMSEは、最小遅延でパケットを送信するためのソフトウェアポートをネゴシエートする。ミドルボックスがパケットを処理した後、いくつかの実施形態は、パケットを、この同一ポートを通じてMSEへ返信する。いくつかの実施形態では、このパケットは、新規のパケットとして、ミドルボックスからMSEへと送信される。そのため、MSEによって新規の処理を要求する。しかしながら、いくつかの状況では、パケットは返信されない。例えば、ミドルボックスがファイヤウォールである場合、ミドルボックスはパケットをブロックするあるいは破棄する。加えて、ミドルボックスのいくつかの実施形態はパッシブであり、また、パケットのデュプリケートが統計の追跡を維持するためにミドルボックスに順番に送信されるが、スイッチング要素へは返信されない。
【0040】
図3は、ホスト305−320に渡って実現される1つだけの論理ネットワークを示している一方で、いくつかの実施形態は、ホスト群のセットに渡るいくつかの論理ネットワーク(例えば、異なるテナントに対する)を実現する。このように、特定のホスト上のミドルボックス要素は、いくつかの異なる論理ネットワークに属するいくつかの異なるミドルボックスに対するコンフィグレーションを実際に記憶することができる。例えば、ファイヤウォール要素は、2つ(以上の)異なるファイヤウォールを実現するために仮想化されていても良い。これらは、2つの個別のミドルボックスインスタンスとして効果的に動作することになり、そうすることで、ミドルボックス要素はいくつかの(同一タイプの)「仮想」ミドルボックスにスライス(分割)される。加えて、ホスト上のMSEがミドルボックスへパケットを送信する場合、いくつかの実施形態は、スライス識別子(あるいはタグ)をパケット上に付加する(プリペンドする)ことで、いくつかの仮想ミドルボックスの内、どの仮想ミドルボックスからパケットが送信されているかを識別する。複数のミドルボックスが単一の論理ネットワークに対して同一のミドルボックス要素上で実現される場合(例えば、2つの異なるロードバランサ)、スライス識別子は、パケットが属している論理ネットワークではなく特定のミドルボックスのスライスを識別することが必要となる。異なる実施形態は、ミドルボックスに対して異なるスライス識別子を使用することができる。
【0041】
いくつかの実施形態で分散することができるミドルボックスの例は、ファイヤウォール、S−NAT、及びロードバランサを含んでいる。これらの場合のそれぞれは、ミドルボックスは、パケット処理における積極的な役割(アクティブロール)を果たす(即ち、S−NATとロードバランサは、パケットのソースアドレスと宛先アドレスとをそれぞれ修正する一方で、ファイヤウォールは、パケットを許可するかあるいは破棄するかについての決定を行う)。しかしながら、特定のノード上のこれらのミドルボックス要素のそれぞれは、他のノード上の対応するミドルボックス要素から情報を要求することなくそれ自身で所有するもので機能することができる。他のロードバランサ要素が同一のアルゴリズムを使用しない限り、どの仮想マシーンも過負荷状態になることはなさそうであるという仮定の下、分散されたロードバランサ要素でさえも、異なる仮想マシーン群に渡って到来するトラフィックを個別にロードバランス(負荷分散)を行うことができる。それでもなお、いくつかの実施形態では、ロードバランサ要素は、いくつかのレベルで状態を共有することになる(例えば、使用及び保健統計について宛先仮想マシーンへクエリを行った後)。
【0042】
上述のように、
図3は、論理ネットワーク200のミドルボックス240に対するいくつかの実施形態の分散実装を概念的に示している。一方、
図4は、ミドルボックス240の完全集中実装400を概念的に示している。この実装は、
図3の分散の例のように、仮想マシーン220−235を管理するいくつかのノード405−420を含んでいる。これらの仮想マシーンは、ここでは、ノード405で管理される第1の仮想マシーン220と、ノード410で管理される第2の仮想マシーン225と第4の仮想マシーン235と、ノード415で管理される第3の仮想マシーン230とで配置されている。同様に、ノード405−415に位置している管理スイッチング要素は、論理転送要素205−215を実現している。分散ミドルボックスの例のように、管理スイッチング要素は、仮想マシーンから発生するパケットについて第1のホップ処理を実行する。
【0043】
しかしながら、この例では、ミドルボックス240は、ホスト405−415に渡って分散されていない。その代わり、ミドルボックスは、ホストの外部にある単一のマシーンとして実現される。異なる実施形態では、異なるタイプのミドルボックスに対して、この単一のミドルボックスは、物理的に単一の電子機器(例えば、個別の物理デバイス)、あるいは単一の仮想マシーン(実際には、ホストマシーン群の1つのホストマシーン上で動作する、あるいは別のホストマシーン上で動作する)とすることができる。例えば、いくつかの実施形態は、仮想マシーンとして第1のタイプのミドルボックス(例えば、WANオプティマイザ)を提供することができる一方で、単一の電子機器として第2のタイプのミドルボックス(例えば、IDS)を提供することができる。加えて、いくつかの実施形態は、単一のタイプのミドルボックスに対するオプション群も提供することができる。
【0044】
分散ミドルボックスと同様に、いくつかの実施形態では、ネットワーク制御システムは、集中ミドルボックス電子機器あるいは仮想マシーンを提供するために使用される。コンフィグレーション情報を受信して、そのコンフィグレーション情報が分散されるべきいくつかのノードを識別するコントローラではなく、いくつかの実施形態のコントローラは、ミドルボックスが実現される電子機器を識別して、そのコンフィグレーションをその電子機器へ配信する(例えば、その電子機器を管理する中間コントローラを通じて)。いくつかの実施形態では、いくつかの物理的な電子機器は、物理ネットワーク内に存在し、そして、コントローラは、これらの電子機器の内の1つを選択して、ミドルボックスを実現する。ミドルボックスが仮想マシーンとして実現される場合、いくつかの実施形態は、仮想マシーンに対するホストノードを選択し、そして、コンフィグレーションをそのホストノードへ配信する。どちらの場合でも、ネットワーク制御システムは、ミドルボックスと、ホスト上の様々な管理スイッチング要素との間の接続あるいは連結を特定する。いくつかの実施形態では、ミドルボックス電子機器は、1つ以上のタイプのトンネリングをサポートし、管理スイッチング要素へ配信されるフローエントリは、パケットをミドルボックスへ送信するために使用するトンネルカプセル化を特定するエントリ群を含んでいる。
【0045】
管理スイッチング要素におけるフローエントリがトラフィックをミドルボックスへ送信することを特定している場合、管理スイッチング要素は、また、このトンネル情報を使用してパケットをカプセル化して、自身のホスト以外のパケットを、トンネルを通じてミドルボックスへ送信する。分散ミドルボックスと同様に、いくつかの集中ミドルボックスは、アクティブなミドルボックスである。つまり、ミドルボックスは、自身のミドルボックスの処理を実行した後に、パケットをネットワークへ返信する。いくつかの実施形態では、このようなミドルボックスは、パケット(新規のパケットとして)をプールノード(例えば、いくつかのプールノードの内の、常に、同一のプールノード)へ常に送信するように構成設定されている。
図4では、集中ミドルボックス425は、自身の発信トラフィックのすべてをプールノード430へ送信する。そして、論理転送要素205−215をも実現するプールノードは、パケットを適切な宛先マシーンへ転送する。
【0046】
分散ミドルボックス要素が、いくつかの異なる論理ネットワークに対するミドルボックスインスタンスを実行するために仮想化されていても良いと同時に、集中ミドルボックス425もそうであっても良い。物理的に同一の電子機器(あるいは仮想マシーン)は、いくつかの異なる論理ネットワークによって使用することができる。いくつかの実施形態では、分散アーキテクチャで使用される技術と同様のスライス処理技術が使用される。つまり、管理スイッチング要素は、パケットが送信される論理ネットワーク(あるいは論理ネットワーク内の特定の論理ミドルボックス)を示すためのタグを追加して、ミドルボックス425は、このタグを使用して、パケットを処理するためにどのミドルボックスインスタンスが使用されるべきかを識別する。いくつかの実施形態では、集中ミドルボックス電子機器は、いくつかのポートを含み、それらのそれぞれは、異なる仮想ミドルボックスインスタンスを割り当てている。このような実施形態では、スライス処理技術は使用されず、代わりに、到来ポートが、正しい仮想ミドルボックスを識別するために使用される。
【0047】
ミドルボックス425が単一のリソースであるのに対して、いくつかの実施形態では、
図5の実装500で示されるように、ミドルボックスをリソース群の集中クラスタとして実現する。この例は、単一のミドルボックスデバイス以外は、
図4に示されるものと同一であり、ネットワークは、3つのミドルボックスリソース510−520を備えるミドルボックスクラスタ505を含んでいる。いくつかの実施形態では、ミドルボックスリソース510−520のそれぞれは、個別のデバイスあるいは仮想マシーン(即ち、ミドルボックス425の等価物)である。
【0048】
異なる実施形態では、ミドルボックスクラスタ内で異なるアーキテクチャを使用することができる。いくつかの実施形態は、リソースプールに渡ってパケットのロードバランス処理を行うクラスタへのエントリポイント(例えば、単一の物理デバイス)を含んでいる。他の実施形態は、クラスタ内の異なるリソースに直接接続される異なるホストマシーンを有している。例えば、ネットワーク500は、リソース510に接続される第1のホストマシーン405と、リソース515に接続される第2のホストマシーン410、及びリソース520に接続される第3のホストマシーン415でセットアップすることができる。他の実施形態は、クラスタが2つのデバイスを有しているマスタバックアップセットアップを使用する。ホストマシーン群はすべてマスタに接続していて、これは、ミドルボックス処理を実行しながら、バックアップリソースを伴う状態データを共有する。
【0049】
図2を参照して説明されるように、いくつかの実施形態は、状態共有がパケット単位で要求される場合に集中ミドルボックス実装を使用する。つまり、一定のミドルボックスに対しては、ミドルボックス処理は、ミドルボックスによって処理されるパケット群のすべての知識を要求する。分散ミドルボックスに対しては、これは、ミドルボックス要素と接続しているネットワークを介して送信される状態更新の急増を招くことになる。しかしながら、ミドルボックスが単一の電子機器である場合、この単一の電子機器は、常に状態のすべてを記憶することになる。
【0050】
クラスタ505のようなミドルボックスクラスタに対して、この要件は、状態が、高速でクラスタ内のミドルボックスリソース間で共有されなければならないことを意味する。いくつかの実施形態は、ミドルボックスリソース間の専用接続を使用して、この状態情報を共有する。つまり、各ミドルボックスデバイスにおける特定のポートは、クラスタ内のいくつかのデバイス間の状態共有だけに専用となっている。時には、ミドルボックスクラスタは2つのマシーンだけとなり、あるいは数個のマシーンだけとなり、これらは、専用接続をより実現可能になるように接近して動作する。3つ以上のミドルボックスを備える状況に対しては、いくつかの実施形態は、メッシュ型ネットワークを使用する。このネットワークでは、ミドルボックスリソースのそれぞれが、ネットワークを介して、すべての他のミドルボックスリソースへ状態更新をブロードキャストする。他の実施形態は、スター型ネットワークを使用する。このネットワークでは、ミドルボックスリソースが自身の状態更新を中央リソースへ送信し、この中央リソースは、その更新を併合して、それらを他のリソースへ送信する。ミドルボックスクラスタが、集中型と比べてこの追加のインフラストラクチャを要求する一方で、このクラスタは、より多くの数のパケットが処理される場合のより大規模配備を取り扱うことができるという利点を有している。
【0051】
上述のように、WANオプティマイザと侵入検出システムは、ミドルボックスの例であり、いくつかの実施形態は、集中ミドルボックスとして実現する。これは、状態共有要件からの理由からである。WANオプティマイザは、例えば、様々なオプティマイゼーション(最適化)技術を使用してWANに渡るデータ転送の効率性を向上する。これらのオプティマイゼーション技術を実行することは、WANに渡って送信されるトラフィックのすべてのアクセスを要求する、つまり、集中実装はより最適なものとなる。また、WANオプティマイザは、WANに渡って送信されるコンテンツをキャッシュするために使用することができ、このキャッシュすることは、キャッシュがいくつかのホストに渡って分散されるのではなくまとまって記憶されている場合に、その目的を達成するためだけに機能する。
【0052】
侵入検出システムは、パッシブシステム(即ち、パケットを破棄しないあるいは修正しない)であり、接続の総数、これらの接続におけるアドレス、各接続に対するパケットの数等を監視する。侵入を検出するために、IDSは、接続、経験則等でパターンを探索し、これらに対して、IDS処理は、監視されるトラフィックのすべてを関知しなければならない。1つの分散要素が第1の接続についての情報を有し、第2の分散要素が第2の接続についての情報を有している場合、どの要素も、侵入に対してネットワークを適切に評価するための十分な情報を有していない。
【0053】
図6は、いくつかの実施形態の侵入検出システム625を含む論理ネットワークを実現するネットワーク600を概念的に示している。論理ネットワークは、3つのノード605、610及び620に渡って管理される4つの仮想マシーンを含んでいる。この場合の論理ネットワークの論理トポロジーは、(ミドルボックスとしてのIDSを備える)
図2に示されるものと同一である。但し、本明細書に記載されるIDS実装の態様は、他のネットワークトポロジーにも等しく適用する。ネットワーク600は第5のノード615を含んでいるが、これは、特定の論理ネットワークの任意の仮想マシーンを管理しない(但し、別のネットワークからの少なくとも1つの仮想マシーンは管理する)。
【0054】
上述の図とは異なり、
図6は、システム内のマシーン間のパケット転送の方向を示す矢印を伴う接続を示している。こうして、例えば、ホスト605−620のすべては、両方に互いにパケットを送信することができる。つまり、ホスト605の仮想マシーンは、パケットを(ホスト605の管理スイッチング要素と、そして、ホスト620の管理スイッチング要素を介して)ホスト620の仮想マシンに送信し、ホスト620の管理マシーンは、パケットをホスト605の仮想マシーンへ送信する。加えて、ホストのMSEのすべては、プールノードを使用して、エッジMSEが転送決定を行うことができないパケットを処理する。
【0055】
ホストマシーン605、610及び620のそれぞれは、特定の論理ネットワークからの仮想マシーンを管理し、パケットをIDSへ送信する。いくつかの実施形態では、論理ネットワーク上のすべてのトラフィックはIDSへ送信される。しかしながら、これらの矢印は、片方向である。これは、いくつかの実施形態の侵入検出システムはパッシブミドルボックスであるからである。いくつかの実施形態は、ミドルボックスを介してトラフィックを転送するのではなく、デュプリケートパケットをIDSボックス625へ送信する。IDSは、これらのデュプリケートパケット(即ち、ホスト間のネットワーク、及び外部ネットワークの少なくとも一方を通じて送信されるそれぞれのものに対するパケット)を受信して、自身の侵入検出解析を実行する。侵入検出システム625は任意のトラフィックパケットを出力しないので、この図においては、IDS625とプールノード630との間に必要とされる接続は存在しない。
【0056】
II.分散ミドルボックス実装
上述のように、いくつかの実施形態は、分散形式で1つ以上の異なるミドルボックスを、ホストマシーン群のいくつかあるいはすべてで動作するミドルボックス要素とともに実現する。いくつかの実施形態の集中ミドルボックスの実装に対して、ホストマシーン群上では、論理ネットワークの仮想マシーンと管理スイッチング要素とが配置される。このセクションでは、ホストマシーン内のいくつかの実施形態の分散ミドルボックス実装を記載する。
【0057】
図7は、分散ソフトウェアミドルボックス要素とソフトウェアスイッチング要素との両方を含む、いくつかの実施形態のホストマシーン700のアーキテクチャ図を概念的に示している。分散ソフトウェアミドルボックス要素は、ネットワークアドレス変換要素、ファイヤウォール要素、ロードバランス処理要素、あるいは分散形式で実現される任意の他のミドルボックスであっても良い。
【0058】
この例では、ミドルボックス要素は、ホストマシーン上に3つのコンポーネントを含んでいて、これには、ホストマシーン700のユーザ空間で動作するミドルボックスデーモン790と、ホストマシーン700のカーネルで動作するミドルボックスカーネルモジュール795がある。この図は、説明の目的のために2つのコンポーネントとして分散ミドルボックス要素を示しているが、ミドルボックスデーモン790とミドルボックスカーネルモジュール795は、ホストマシーン700上で動作するミドルボックス要素を集約して形成している。ソフトウェアスイッチング要素(本例では、オープン仮想スイッチ(「OVS」))は3つのコンポーネントを含み、これには、ホストマシーン700のカーネルで動作するOVSカーネルモジュール745と、OVSデーモン765と、OVSデータベース(DB)デーモン767があり、後者の2つはホストマシーンのユーザ空間で動作する。
【0059】
図7に示されるように、ホスト700は、ハードウェア705、カーネル720、ユーザ空間721、及びVM785−795を含んでいる。ハードウェア705は、典型的なコンピュータハードウェアを含んでいて、これには、処理ユニット、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM))、不揮発性メモリ(例えば、ハードディスクドライブ、フラッシュメモリ、光学ディスク等)、ネットワークアダプタ、ビデオアダプタ、あるいは、任意の他のタイプのコンピュータハードウェアがある。図示されるように、ハードウェア705は、NIC710と715を含み、これらは、いくつかの実施形態では、コンピュータデバイスをネットワークに接続するための典型的なネットワークインタフェースコントローラである。
【0060】
図7に示されるように、ホストマシーン700は、カーネル720とユーザ空間721を含んでいる。いくつかの実施形態では、カーネルは、オペレーティングシステムの最も基本的なコンポーネントであり、これは、個別のメモリ空間上で動作し、また、システムリソースを管理する(例えば、ハードウェアリソースとソフトウェアリソース間の通信)役割を果たしている。これに対して、ユーザ空間は、すべてのユーザモードアプリケーションが動作することができるメモリ空間である。
【0061】
いくつかの実施形態のカーネル720はソフトウェア抽象化レイヤであり、これは、ハードウェア705の上位で動作し、かつ任意のオペレーティングシステムの配下で動作する。いくつかの実施形態では、カーネル720は、仮想化機能を実行する(例えば、ホストマシーン上で動作するいくつかの仮想マシーンに対するハードウェア705を仮想化するために)。そして、カーネル720は、いくつかの実施形態では、ハイパーバイザの一部である。カーネル720は、様々な管理タスクを取り扱う。これには、メモリ管理、プロセッサスケジューリング、あるいはホストマシーン上で動作するVM735及び738の実行を制御するための任意の他の動作がある。
【0062】
図示されるように、カーネル720は、NIC710及び715それぞれに対するデバイスドライバ725及び730を含んでいる。デバイスドライバ725及び730は、オペレーティングシステム(例えば、仮想マシーンの)に、ホスト700のハードウェアと対話することを可能にする。この例では、デバイスドライバ725は、NIC71との対話を可能にし、一方、ドライバ730は、NIC715との対話を可能にする。カーネル720は、ホスト700内の他のハードウェア(不図示)と対話することを仮想マシーンに可能にするための他のデバイスドライバ(不図示)を含んでいても良い。
【0063】
仮想マシーン735と738は、カーネル720によって仮想化されるリソースを使用して、ホストマシーン700上で動作する独立した仮想マシーン(例えば、
図3−
図6で示されるようなユーザ仮想マシーン)である。このように、VMは、任意の数の異なるオペレーティングシステムで動作する。このようなオペレーティングシステムの例には、ソラリス、FreeBSD、あるいは任意のタイプのユニックスベースのオペレーティングシステムが含まれる。他の例には、ウィンドウズ(登録商標)ベースのオペレーティングシステムも含まれる。
【0064】
図示されるように、ホストマシーン700のユーザ空間721は、デーモン790、OVSデーモン765、及びOVS DBデーモン767を含んでいる。他のアプリケーション(不図示)もユーザ空間721に含まれていても良く、これには、追加の分散ミドルボックス(例えば、ファイヤウォール、ロードバランサ、ネットワークアドレス変換器等)用のデーモンが含まれる。OVSデーモン765は、ユーザ空間721で動作するアプリケーションである。いくつかの実施形態のOVSデーモン765は、以下で更に後述するように、仮想マシーン735及び738へ及びから送信されるパケットを処理し転送するための命令を受信するためにネットワークコントローラ780と通信する。いくつかの実施形態のOVSデーモン765は、オープンフロープロトコルを通じてネットワークコントローラ780と通信し、一方、他の実施形態では、物理制御プレーンデータを転送するための異なる通信プロトコルを使用する。加えて、いくつかの実施形態では、OVSデーモン765は、ネットワークコントローラ780がコンフィグレーション情報をOVS DBデーモンを送信した後に、OVS DBデーモン767からコンフィグレーション情報を取得する。
【0065】
いくつかの実施形態では、OVS DBデーモン767も、ユーザ空間721で動作する。いくつかの実施形態のOVS DBデーモン767は、ネットワークコントローラ780と通信して、OVSスイッチング要素(例えば、OVSデーモン765及びOVSカーネルモジュール745の少なくとも一方)を構成設定する。例えば、OVS DBデーモン767は、ネットワークコントローラ780からコンフィグレーション情報を受信し、そのコンフィグレーション情報をデータベースのセットに記憶する。いくつかの実施形態では、OVS DBデーモン767は、データベース通信プロトコルを介してネットワークコントローラ780と通信する。いくつかの場合、OVS DBデーモン767は、OVSデーモン765からのコンフィグレーション情報に対するリクエストを受信する。OVS DBデーモン767は、これらの場合、リクエストされたコンフィグレーション情報(例えば、データベースのセットから)を取得し、そのコンフィグレーション情報をOVSデーモン765へ送信する。
【0066】
OVSデーモン765は、オープンフロープロトコルモジュール770及びフロープロセッサ775を含んでいる。オープンフロープロトコルモジュール770は、ネットワークコントローラ780と通信して、ソフトウェアスイッチング要素を構成設定するためのコンフィグレーション情報(例えば、フローエントリ)をネットワークコントローラ780から受信する。モジュール770がネットワークコントローラ780からコンフィグレーション情報を受信する場合、これは、そのコンフィグレーション情報をフロープロセッサ775によって解釈可能な情報へ変換する。
【0067】
フロープロセッサ775は、パケットを処理し、ルーティングするためのルールを管理する。例えば、フロープロセッサ775は、オープンフロープロトコルモジュール770から受信されるルール群を(例えば、ディスクドライブのような記憶媒体に)記憶する。いくつかの実施形態では、ルールは、それぞれがフローエントリのセットを含むフローテーブルのセットとして記憶される。フロープロセッサ775は、マッチングルールを有さない統合ブリッジ750(後述する)に対するパケットを取り扱う。このような場合、フロープロセッサ775は、自身に記憶されているルールとパケットとの照合を行う。パケットがルールに合致する場合、フロープロセッサ775は、合致したルールとそのパケットを、統合ブリッジ750で処理するために、その統合ブリッジ750へ送信する。このようにして、統合ブリッジ750が生成されたルールと合致する同様のパケットを受信すると、パケットは、統合ブリッジ750内の生成された的確なマッチングルールと照合されることになるので、フロープロセッサ775はパケットを処理する必要がなくなる。
【0068】
いくつかの実施形態では、フロープロセッサ775は、パケットと合致するルールを有していない場合がある。このような場合、いくつかの実施形態のフロープロセッサ775は、エッジスイッチング要素で処理することができないパケットを取り扱うための別の管理スイッチング要素(例えば、プールノード)へ、そのパケットを送信する。しかしながら、他の場合、フロープロセッサ775は、ネットワークコントローラ780から、パケットと合致しないルールがフロープロセッサ775内に存在しない場合に、そのパケットを破棄するキャッチオール(catchall)ルールを受信することができる。
【0069】
図7に示されるように、カーネル720は、ハイバーバイザネットワークスタック740とOVSカーネルモジュール745とを含んでいる。ハイパーバイザネットワークスタック740は、いくつかの実施形態では、インターネットプロトコル(IP)ネットワークスタック740である。ハイパーバイザネットワークスタック740は、IPパケットを処理し、ルーティングする。このIPパケットは、OVSカーネルモジュール745と、PIFブリッジ755及び760から受信される。ホスト700に対して外部にあるネットワークホストに向けられているパケットを処理する場合、ハイパーバイザネットワークスタック740は、どの物理インタフェース(PIF)ブリッジ755及び760に、パケットが送信されるべきであるかを判定する。
【0070】
OVSカーネルモジュール745は、ホスト700上で動作するVMとホスト700の外部にあるネットワークホスト間のネットワークデータ(例えば、パケット)を処理し、ルーティングする(例えば、NIC710と715を介して受信されるネットワークデータ)。いくつかの実施形態では、OVSカーネルモジュール745は、1つ以上の論理ネットワークに対する物理制御プレーンの転送テーブルを実現する。ネットワークデータを処理しルーティングすることを容易にするために、OVSカーネルモジュール745はOVSデーモン765と通信する(例えば、OVSデーモン765からフローエントリを受信するために)。いくつかの実施形態では、OVSカーネルモジュール745は、ブリッジインタフェース(不図示)を含んでいて、このブリッジインタフェースは、ハイパーバイザネットワークスタック740にパケットをOVSカーネルモジュール745へ送信し、また、パケットをOVSカーネルモジュール745から受信することを可能にする。
【0071】
図7は、統合ブリッジ750と、PIFブリッジ755及び760を含むOVSカーネルモジュール745を示している。いくつかの実施形態では、OVSカーネルモジュール745は、ハードウェア705における各NICに対するPIFブリッジを含んでいる。他の実施形態では、OVSカーネルモジュール745内のPIFブリッジは、ハードウェア705における複数のNICと対話することができる。PIFブリッジ755及び760は、ハイパーバイザネットワークスタック740とホスト700の外部にあるネットワークホストとの間のネットワークデータ(即ち、NIC710と715を介して受信されるネットワークデータ)をルーティングする。
【0072】
統合ブリッジ750は、ネットワークスタック740と、VM735及び738(例えば、VIFを介して)と、PIFブリッジ755及び760から受信するパケットを処理し、ルーティングする。いくつかの実施形態では、統合ブリッジ750は、フロープロセッサ775に記憶されるルールのサブセット(及び/あるいは、フロープロセッサ775に記憶されるルールから導出されるルール群)を記憶し、これは、統合ブリッジ750が、パケットを処理し転送するために現在使用しているもの、あるいは直近で使用したものである。
【0073】
いくつかの実施形態では、いくつかの実施形態のフロープロセッサ775は、統合ブリッジ750でルール群を管理する役割を担う。いくつかの実施形態では、統合ブリッジ750はアクティブなルールだけを記憶する。フロープロセッサ775は、統合ブリッジ750に記憶されているルール群を監視し、所定の時間量(例えば、1秒、3秒、5秒、10秒等)の間、アクセスしていないアクティブなルールを削除する。この方法では、フロープロセッサ775は、統合ブリッジ750を管理することで、統合ブリッジ750が使用中のあるいは最近使用されているルール群を記憶するようにしている。
【0074】
図7は1つの統合ブリッジを示しているが、OVSカーネルモジュール745は、複数の統合ブリッジを含むことができる。例えば、いくつかの実施形態では、OVSカーネルモジュール745は、各論理スイッチング要素に対して個別の統合ブリッジを含んでいて、その論理スイッチング要素は、ソフトウェアスイッチング要素が属している管理ネットワークに渡って実現される。つまり、OVSカーネルモジュール745は、管理ネットワークに渡って実現される各論理スイッチング要素に対して、対応する統合ブリッジを有している。
【0075】
上述の記載は、いくつかの実施形態の管理ソフトウェアスイッチング要素の転送機能に関するものである。ソフトウェアスイッチング要素が、制御プレーンを実現するユーザ空間コンポーネント(OVSデーモン765)とデータプレーンを実現するカーネルコンポーネント(OVSカーネルモジュール745)を含んでいると同時に、いくつかの実施形態の分散ミドルボックス要素は、ユーザ空間で動作する制御プレーンコンポーネント(ミドルボックスデーモン790)とカーネルで動作するデータプレーンコンポーネント(ミドルボックスカーネルモジュール795)とを含んでいる。
【0076】
図示されるように、ミドルボックスデーモン790は、ミドルボックスコンフィグレーションレシーバ791とミドルボックスコンフィグレーションコンパイラ792を含んでいる。ミドルボックスコンフィグレーションレシーバ791はネットワークコントローラ780と通信して、ミドルボックス用のコンフィグレーションに加えて、スライス処理情報を受信する。いくつかの実施形態では、ミドルボックスコンフィグレーションは、ミドルボックスのパケット処理ルールを記述するレコードのセットである(例えば、OVSデーモンによって受信されるフローエントリレコードと同一の形式で)。例えば、ファイヤウォールコンフィグレーションは、パケットを破棄する場合、許可する場合等を記述するパケット処理ルールのセットを含んでいる(ACLエントリと同様のものであるが、決定を行うためのファクタとしてTCP接続状態を含んでいる)。ソースネットワークアドレス変換コンフィグレーションは、変換器によって晒されるIPアドレスへマッピングすべき仮想マシーンの隠蔽されているIPアドレスのセットを含んでいる。いくつかの実施形態では、ロードバランサコンフィグレーションは、晒されたIPアドレスをいくつかの異なる隠蔽された仮想マシーンアドレスへネットワークマッピングするアドレス変換と、いくつかのマシーンの内、どのマシーンに新規のTCP接続が送信されるべきかを判定するためのロードバランス処理(スケジューリング)アルゴリズムを含んでいる。
【0077】
上述のように、スライス処理情報は、識別子を、分散ミドルボックス要素によって実行されるべき特定のミドルボックスインスタンスへ割り当てる。いくつかの実施形態では、この識別子は、特定のテナントの論理ネットワークにおける特定の論理ミドルボックスにバインドされる。つまり、特定の論理ネットワークが異なる処理ルールを有するいくつかの異なるミドルボックスを含んでいる場合、ミドルボックスデーモン790は、いくつかの異なるミドルボックスインスタンスを作成することになる。これらのインスタンスのそれぞれは、ミドルボックスに送信されるパケット上の異なるスライス識別子で識別される。加えて、いくつかの実施形態では、ミドルボックスデーモン790は、これらのインスタンスそれぞれに対して特定の内部識別子を割り当て、これは、ミドルボックスが自身の内部処理で使用する(例えば、アクティブなTCP接続の追跡を維持するために)。
【0078】
ミドルボックスデーモン790は、また、ミドルボックスコンフィグレーションコンパイラ792を含んでいる。いくつかの実施形態では、ミドルボックスコンフィグレーションコンパイラ792は、第1の言語の特定のミドルボックスに対するミドルボックスコンフィグレーション(例えば、パケット処理、変更あるいは解析ルール群)を受信し、これらを、ミドルボックスの内部処理により最適となる第2の言語のルール群のセットにコンパイルする。ミドルボックスコンパイラ792は、コンパイルされたパケット処理ルールをミドルボックスカーネルモジュール795のミドルボックスプロセッサ796へ送信する。
【0079】
ミドルボックスカーネルモジュール795は、ホスト700上で動作するVMへ送信する及び/あるいはVMから送信されるパケットを処理して、パケットの通過を許可する、パケットを破棄する等を判定する。図示されるように、ミドルボックスカーネル795は、これらの機能を実行するためのミドルボックスプロセッサ795を含んでいる。ミドルボックスプロセッサ795は、ミドルボックスコンフィグレーションコンパイラ792から、特定のミドルボックスインスタンスに対して変換されたミドルボックスルールを受信する。いくつかの実施形態では、これらの変換されたミドルボックスルールは、ミドルボックス内のパケット処理パイプラインを特定する。
【0080】
管理スイッチング要素からパケットを受信するために、いくつかの実施形態のミドルボックスプロセッサ796は、OVSカーネルモジュールの統合ブリッジ750上に抽象ソフトウェアポートと接続する。統合ブリッジ上のこのポートを通じて、管理スイッチング要素は、(ミドルボックスがパケットを破棄しない限り)ミドルボックスによって処理された後に、ミドルボックスへパケットを送信し、また、ミドルボックスからパケットを受信する。上述のように、これらのパケットは、パケットに適用するコンパイル済のパケット処理ルールのセットを判定するための、ミドルボックスプロセッサ796によって使用されるスライス識別子タグを含んでいる。
【0081】
図7に示される、分散ミドルボックスとソフトウェアスイッチング要素のアーキテクチャ図は、コンフィグレーションの一例である。当業者は、他のコンフィグレーションが可能であることを認識するであろう。例えば、いくつかの実施形態では、コンパイル済のパケット処理ルールを適用するミドルボックスプロセッサは、カーネル720でなくユーザ空間721に配置される。このような実施形態では、カーネルは、ユーザ空間によってフルコントロールするためにネットワークインタフェース710及び715に晒すことで、ミドルボックスプロセッサは、カーネルと比べて、速度を損なうことなく、ユーザ空間で自身の機能を実行することができる。
【0082】
III.ネットワーク制御システム
上述のセクションIは、完全分散から完全集中までの異なるミドルボックス実装アーキテクチャを記載している。上述のように、いくつかの実施形態では、これらのミドルボックスは、ネットワーク制御システムを介して提供され、これは、ネットワークの論理転送要素を実現する管理スイッチング要素を提供するために使用される。いくつかの実施形態では、ネットワーク制御システムは、階層構造のネットワークコントローラのセットである。
【0083】
図8は、論理ネットワークを実現するための、管理スイッチング要素と分散ミドルボックス要素とを構成設定するためのいくつかの実施形態のネットワーク制御システム800を示している。図示されるように、ネットワーク制御システム800は、入力変換コントローラ805、論理コントローラ810、物理コントローラ815及び820、ホスト825−840、集中ミドルボックス845を含んでいる。図示されるように、ホスト830−865は、管理スイッチング要素及びミドルボックス要素の両方を含んでいて、これらは、
図7で示されるように実現されても良い。当業者は、様々なコントローラとホストの多くの他の異なる組み合わせをネットワーク制御システムに対して実現可能であることを理解するであろう。
【0084】
いくつかの実施形態では、ネットワーク制御システムにおけるコントローラのそれぞれは、入力変換コントローラ、論理コントローラ及び物理コントローラの少なくとも1つとして機能する能力を有している。選択的には、いくつかの実施形態では、所与のコントローラが、様々なタイプのコントローラの内の特定の1つ(例えば、物理コントローラ)として動作する機能だけを有することができる。加えて、様々な組み合わせのコントローラを、同一の物理マシーン内で動作させることができる。例えば、入力変換コントローラ805と論理コントローラ810とを、ユーザと対話する同一のコンピュータデバイスで実行させることができる。
【0085】
また、
図8(及び後続の
図9)に示されるコントローラのそれぞれは、単一のコントローラとして示されている。しかしながら、これらのコントローラのそれぞれは、実際には、論理コントローラ、物理コントローラあるいは入力変換コントローラの処理を実行する分散形式で動作するコントローラクラスタであっても良い。
【0086】
いくつかの実施形態の入力変換コントローラ805は、ユーザから受信されるネットワークコンフィグレーション情報を変換する入力変換アプリケーションを含んでいる。例えば、ユーザは、
図2に示されるようなネットワークトポロジーを特定することができ、これは、どのマシーンが論理ドメインに属性しているかについての特定情報を含んでいる。これは、論理データ経路のセット、あるいは論理転送要素のセットを効率的に特定する。論理スイッチのそれぞれに対して、ユーザは、論理スイッチに接続するマシーン(即ち、論理スイッチに対する論理ポートが割り当てられている)を特定する。いくつかの実施形態では、ユーザは、また、マシーンに対するIPアドレスを特定する。入力変換コントローラ805は、入力されるネットワークトポロジーを、ネットワークトポロジーを記述する論理制御プレーンデータへ変換する。例えば、エントリは、特定のMACアドレスAが特定の論理スイッチの特定の論理ポートXに配置されていることを記述する。
【0087】
いくつかの実施形態では、各論理ネットワークは、特定の論理コントローラ(例えば、論理コントローラ810)によって管理される。いくつかの実施形態の論理コントローラ810は、論理制御プレーンデータを論理転送プレーンデータへ変換し、その論理転送プレーンデータをユニバーサル制御プレーンデータへ変換する。論理転送プレーンデータは、いくつかの実施形態では、論理レベルで記述されるフローエントリから構成される。論理ポートXでのMACアドレスAに対しては、論理転送プレーンデータは、パケットの宛先がMAC Aと合致する場合に、そのパケットをポートXへ転送することを特定するフローエントリを含むことができる。
【0088】
いくつかの実施形態のユニバーサル物理制御プレーンデータは、いくつかの実施形態の制御システムが論理データ経路のセットを実現するための大量数(例えば、数千)の管理スイッチング要素を含んでいる場合でさえも、その制御システムに拡縮することを可能にするデータプレーンである。ユニバーサル物理制御プレーンは、管理スイッチング要素の違い及びその管理スイッチング要素のロケーション詳細を考慮することなく、物理制御プレーンデータを表現するために、異なる管理スイッチング要素の共通の特徴をまとめる。
【0089】
上述のように、いくつかの実施形態の論理コントローラ510は、論理制御プレーンデータを論理転送プレーンデータ(例えば、論理フローエントリ)へ変換し、そして、その論理転送プレーンデータをユニバーサル制御プレーンデータへ変換する。いくつかの実施形態では、論理コントローラアプリケーションスタックは、第1の変換を実行するための制御アプリケーションと第2の変換を実行するための仮想化アプリケーションを含んでいる。これらのアプリケーションの両方は、いくつかの実施形態では、第1のテーブルのセットを第2のテーブルのセットへマッピングするためのルールエンジンを使用する。つまり、異なるデータプレーンはテーブル(例えば、nLogテーブル)として表現され、また、コントローラアプリケーションはテーブルマッピングエンジンを使用して、データプレーン間を変換する。
【0090】
物理コントローラ815及び820のそれぞれは、1つ以上の管理スイッチング要素のマスタである(例えば、ホストマシーン内に配置される)。この例では、2つの物理コントローラのそれぞれは、2つの管理スイッチング要素のマスタである。また、物理コントローラ815は、集中ミドルボックス845のマスタである。いくつかの実施形態では、物理コントローラは、論理ネットワークに対するユニバーサル物理制御プレーン情報を受信して、そのデータを、物理コントローラが管理する特定の物理管理スイッチに対するカスタマイズ物理制御プレーン情報へ変換する。他の実施形態では、物理コントローラは、適切なユニバーサル物理制御プレーンデータを管理スイッチへ渡し、これは、変換自身を実行するための機能(例えば、ホストマシーンで動作するシャーシコントローラの形式で)を含んでいる。
【0091】
ユニバーサル物理制御プレーンからカスタマイズ物理制御プレーンへの変換は、フローエントリ内の様々なデータのカスタマイズ処理を含んでいる。上述の例に対しては、ユニバーサル物理制御プレーンは、いくつかのフローエントリを含むことになる。第1のエントリは、パケットが特定の論理データ経路のセットと合致し(例えば、特定の論理進入ポートで受信されるパケットに基づいて)、かつ宛先アドレスがMAC Aと合致する場合、そのパケットを論理ポートXへ転送することを記述している。このフローエントリは、いくつかの実施形態では、ユニバーサル物理制御プレーンとカスタマイズ物理制御プレーン内で同一となる。追加のフローは、物理進入ポート(例えば、ホストマシーンの仮想インタフェース)と論理進入ポートX(MAC Aから受信されるパケットに対する)とを照合し、加えて、論理ポートXと物理管理スイッチの特定の退出ポートとを照合するために生成される。しかしながら、これらの物理進入ポート及び物理退出ポートは、管理スイッチング要素を含むホストマシーンに対して特定されている。このように、ユニバーサル制御プレーンエントリは、抽象化物理ポートを含む一方で、カスタマイズ物理制御プレーンエントリは、介在する実際の物理ポートを含んでいる。
【0092】
いくつかの実施形態では、ネットワーク制御システムは、論理ネットワークのミドルボックスに関連するデータを流布する。ネットワーク制御システムは、ミドルボックスコンフィグレーションデータに加えて、管理スイッチにおけるミドルボックスに対するパケットの送受信、及びミドルボックスにおける管理スイッチに対するパケットの送受信の少なくとも一方に関連するデータを流布する。
【0093】
図8に示されるように、同一のネットワーク制御システムが、いくつかの実施形態は、分散ミドルボックスと集中ミドルボックスの両方へデータを配信する。いくつかの物理コントローラは、分散ミドルボックスのコンフィグレーションを流布するために使用され、一方で、いくつかの実施形態は、特定の物理コントローラを集中ミドルボックス電子機器へ割り当てる。この例では、物理コントローラ815は集中ミドルボックス845のコンフィグレーションを流布するために割り当てられ、一方で、分散ミドルボックスに対するコンフィグレーションは、物理コントローラ815及び820の両方を介して流布される。
【0094】
ミドルボックスを組み込むために、ネットワーク制御システムを介して管理スイッチに伝搬されるフローエントリは、適切なパケットを適切なミドルボックスへ送信するためのエントリ群を含むことになる(例えば、特定のミドルボックスへ転送される、特定のサブネット内のソースIPアドレスを有するパケットを特定するフローエントリ群)。加えて、管理スイッチに対するフローエントリ群は、どのようにしてそのようなパケットをミドルボックスへ送信するかを特定することを必要とすることになる。つまり、第1のエントリが、特定のミドルボックスにバインドされる論理ルータの論理退出ポートを一旦特定すると、その論理退出ポートをミドルボックスに接続するために追加のエントリが要求される。
【0095】
集中ミドルボックス845に対しては、これらの追加のエントリは、論理ルータの論理退出ポートと、ホストマシーンの特定の物理ポート(例えば、物理ネットワークインタフェース)とを照合することになる。この特定の物理ポートを通じて、ホストマシーンはミドルボックスに接続する。加えて、エントリ群は、ホストマシーンとミドルボックスとの間のトンネルを介して、パケットを集中ミドルボックス電子機器へ送信するためのカプセル化情報を含んでいる。
【0096】
分散ミドルボックスに対しては、ミドルボックスへ到達するために、パケットは、ホストマシーンから実際に退出する必要はない。しかしながら、管理スイッチ要素は、それにもかかわらず、ホストマシーン上のミドルボックスへパケットを送信するためのフローエントリ群を含んでいる必要がある。これらのフローエントリ群は、再度、管理スイッチ要素がミドルボックスと接続するポートに、論理ルータの論理退出ポートへマッピングするためのエントリを含んでいる。しかしながら、この場合、ミドルボックスは、ホストマシーンの物理(あるいは仮想)インタフェースではなく、管理スイッチ要素内のソフトウェア抽象ポートに接続する。つまり、ポートは、ミドルボックス要素が接続している「管理スイッチング要素内で作成される。管理スイッチング要素内のフローエントリ群は、ホストマシーン内でミドルボックスへ転送するためのパケットをこのポートへ送信する。
【0097】
分散ミドルボックスと集中ミドルボックスの両方に対して、いくつかの実施形態では、管理スイッチング要素は、スライス処理情報をパケットへ追加する。基本的には、このスライス処理情報は、ミドルボックスによって動作する(潜在的な)いくつかのインスタンスのどれに、パケットが送信されるべきかを示すためのタグである。このようにして、ミドルボックスがパケットを受信する場合、タグは、ミドルボックスに、パケットの処理、解析、変更等の適切なルールのセットを使用して、パケットにおける動作を実行することを可能にする。いくつかの実施形態は、パケットへスライス処理情報を追加するのではなく、各ミドルボックスインスタンスに対して管理スイッチング要素の異なるポート群を定義して、実際にそのポート群を使用して、ファイヤウォールに向けられるトラフィックをスライスする(分散構成の場合)、あるいは、インスタンス間を区別するために、集中電子機器の異なるポート群へ接続する(集中構成の場合)。
【0098】
上記の内容は、管理スイッチング要素への転送データの伝搬を記載している。加えて、いくつかの実施形態は、ネットワーク制御システムを使用して、コンフィグレーションデータをミドルボックスへ伝搬する。
図9は、いくつかの実施形態のネットワーク制御システムを介するデータの伝搬を概念的に示している。図の左側は、論理ネットワークを実現する管理スイッチング要素へのデータフローであり、一方、図の右側は、ミドルボックスコンフィグレーションデータの伝搬と、ミドルボックスへのネットワーク接続及びスライス処理データの伝搬を示している。
【0099】
左側において、入力変換コントローラ805は、APIを介してネットワークコンフィグレーションを受信し、これは、論理制御プレーンデータに変換される。このネットワークコンフィグレーションデータは、
図2に示されるような論理トポロジーを含んでいる。加えて、いくつかの実施形態のネットワークコンフィグレーションデータは、ミドルボックスへ送信されるパケットを特定するルーティングポリシー群を含んでいる。ミドルボックスが2つの論理転送要素の間(例えば、論理ルータと論理スイッチの間)の論理回線上に配置されている場合、その論理回線を介して送信されるすべてのパケットは、自動的にミドルボックスへ転送されることになる。しかしながら、ネットワークアーキテクチャ200のような帯域外のミドルボックスに対しては、特定のポリシー群がユーザによって特定されている場合には、論理ルータはパケットをミドルボックスへ送信することだけを行うことになる。
【0100】
ルータとスイッチが、パケットの宛先アドレス(例えば、MACアドレスあるいはIPアドレス)に従ってパケットを通常に転送することになる一方で、ポリシールーティングは、パケットによって記憶される他の情報(例えば、ソースアドレス、ソースアドレスと宛先アドレスの組み合わせ等)に基づいて行われる転送決定を可能にする。例えば、ユーザは、特定のサブネット内のソースIPアドレスを有する、あるいは特定のサブネットのセットと合致しない宛先IPアドレスを有する、パケットのすべてがミドルボックスへ転送されるべきであることを特定することができる。
【0101】
図示されるように、論理制御プレーンデータは、論理コントローラ810によって(具体的には、論理コントローラの制御アプリケーションによって)論理転送プレーンデータへ変換され、続いて(論理コントローラの仮想アプリケーションによって)ユニバーサル物理制御プレーンデータへ変換される。いくつかの実施形態では、これらの変換は、フローエントリ(論理転送プレーンにおける)を生成し、論理データ経路のセットを介してマッチング情報を追加する(ユニバーサル物理制御プレーンにおける)。ユニバーサル物理制御プレーンは、また、汎用物理進入ポートを論理進入ポート(即ち、任意の特定の物理ホストマシーンに対して専用とはなっていない汎用抽象ポート)へマッピングするための追加のフローエントリ群を含んでいて、また、論理退出ポートを汎用物理退出ポートへマッピングするための追加のフローエントリ群を含んでいる。例えば、集中ミドルボックスへのマッピングに対しては、ユニバーサル物理制御プレーンにおけるフローエントリ群は、ルーティングポリシーに合致する場合にミドルボックスと接続する論理ポートへパケットを送信するための転送決定と、ミドルボックスへ接続するホストマシーンの汎用物理ポートへの論理ポートへのマッピングを含んでいる。
【0102】
図示されるように、物理コントローラ815(いくつかの物理コントローラの1つ)は、ユニバーサル物理制御プレーンデータを、それが管理する特定の管理スイッチング要素830−840に対するカスタマイズ物理制御プレーンデータへ変換する。この変換は、ユニバーサル物理制御プレーンデータにおける汎用抽象に対する代替特定データ(例えば、特定の物理ポート)を含んでいる。例えば、上述の例では、ポート統合エントリは、特定のミドルボックスコンフィグレーションに対して適切な物理層ポートを特定するように構成設定されている。このポートは、ファイヤウォールがホストマシーン上の仮想マシーンとして動作する場合の仮想NICであり得り、あるいは、ファイヤウォールが仮想マシーン上のハイパーバイザ内のプロセス(例えば、デーモン)として動作する場合の管理スイッチング要素内の上述のソフトウェア抽象ポートであり得る。いくつかの実施形態では、後者の状況では、このポートはIPCチャネルあるいはTUN/TAPデバイスインタフェースである。いくつかの実施形態では、管理スイッチング要素は、ファイヤモジュールに対する1つの特定抽象ポートを含み、物理制御プレーンフローをカスタマイズするための物理コントローラに対するこの情報を、その物理コントローラへ送信する。一方で、集中ミドルボックス845へパケットを送信するためのフローエントリ群に対しては、挿入ポートが、管理スイッチング要素が動作する特定のホストマシーンの実際の物理ポートとなる。
【0103】
加えて、いくつかの実施形態では、物理コントローラは、ミドルボックスに特定のスライス処理情報を特定するフローエントリ群を追加する。例えば、特定の管理スイッチング要素に対しては、フローエントリは、パケットを特定のファイヤウォールへ送信する前に、そのパケットに特定のタグ(例えば、VLANタグあるいは同様のタグ)を追加することを特定することができる。このスライス処理情報は、ミドルボックスに、パケットを受信して、自身のいくつかの独立しているインスタンスの内のどのインスタンスがパケットを処理するべきかを識別することを可能にする。
【0104】
管理スイッチング要素825(物理コントローラ815によって管理されるいくつかのMSE群の1つ)は、カスタマイズ制御プレーンデータの物理転送プレーンデータへの変換を実行する。この物理転送プレーンデータは、いくつかの実施形態では、スイッチング要素が実際に合致する受信パケットに対する、スイッチング要素(物理ルータあるいはスイッチあるいはソフトウェアスイッチング要素)内に記憶されるフローエントリ群である。
【0105】
図9の右側は、管理スイッチング要素ではなく、ミドルボックス(集中ミドルボックスあるいは分散ミドルボックス)へ伝搬される2つのデータのセットを示している。これらの第1のデータのセットは、特定の論理ミドルボックスの動作を特定する様々なルールを含む実際のミドルボックスコンフィグレーションデータである。このデータは、ミドルボックス実装に特定のAPIを介して、入力変換コントローラ805あるいは異なる入力インタフェースで受信される。いくつかの実施形態では、異なるミドルボックス実装は、ユーザに対して提示される異なるインタフェースを有することになる(即ち、ユーザは、異なる特定のミドルボックスに対する異なるフォーマットの情報を入力しなければならないことになる)。図示されるように、ユーザは、ミドルボックスコンフィグレーションを入力し、これは、ミドルボックスAPIによってミドルボックスコンフィグレーションデータへ変換される。
【0106】
いくつかの実施形態では、ミドルボックスコンフィグレーションデータは、レコードのセットであり、各レコードは、特定のルールを特定している。これらのレコードは、いくつかの実施形態では、管理スイッチング要素に伝搬されるフローエントリと同様のフォーマットである。実際には、いくつかの実施形態は、コントローラ上の同一のアプリケーションを使用して、フローエントリに対するファイヤウォールコンフィグレーションレコードを伝搬し、また、そのレコードに対する同一のテーブルマッピング言語(例えば、nLog)を伝搬する。
【0107】
ミドルボックスコンフィグレーションデータは、いくつかの実施形態では、論理コントローラあるいは物理コントローラによっては変換されず、一方、他の実施形態では、論理コントローラ及び物理コントローラの少なくとも一方は、ミドルボックスコンフィグレーションデータレコードの最小限の変換を少なくとも実行する。多くのミドルボックスのパケット処理、変更及び解析ルールは、パケットのIPアドレス(あるいはTCP接続状態)で動作し、また、ミドルボックスへ送信されるパケットは、この晒されている(即ち、論理ポート情報内でカプセル化されていない)情報を有することになるので、ミドルボックスコンフィグレーションは、論理データプレーンから物理データプレーンへの変換を要求しない。このように、同一のミドルボックスコンフィグレーションデータは、入力変換コントローラ805(あるいは他のインタフェース)から、論理コントローラ810及び物理コントローラ815への少なくとも一方へ渡される。
【0108】
いくつかの実施形態では、論理コントローラ810は、論理ネットワークの記述と、物理ネットワークの物理実装の記述を記憶している。論理コントローラは、分散ミドルボックスに対する1つ以上のミドルボックスコンフィグレーションレコードを受信し、また、様々なノード(即ち、ホストマシーン)の内、どれが、コンフィグレーション情報を受信することが必要となるかを識別する。いくつかの実施形態では、ミドルボックスコンフィグレーション全体がホストマシーン群の全てにおけるミドルボックス要素に配信され、そうすることで、論理コントローラはパケットがミドルボックスの使用を要求している少なくとも1つの仮想マシーンが常駐しているホストマシーンのすべてを識別する。これは、ネットワーク内のすべての仮想マシーン(例えば、
図2に示されるミドルボックスに対する)であっても良く、あるいは、ネットワーク内の仮想マシーン群のサブセットであっても良い(例えば、ネットワーク内の特定のドメインのトラフィックだけにファイヤウォールが適用される場合)。いくつかの実施形態は、どのホストマシーンがレコード単位でコンフィグレーションデータを送信するかについての決定を行う。つまり、各特定のルールは、仮想マシーンのサブセットだけに適用し、また、レコードを受信することを必要とするこれらの仮想マシーンを実行するホストだけに適用することができる。
【0109】
論理コントローラがレコードを受信する特定のノードを一旦識別すると、論理コントローラは、これらの特定のノードを管理する特定の物理コントローラを識別する。上述のように、各ホストマシーンは、割当済のマスタ物理コントローラを有している。こうして、論理コントローラがコンフィグレーションデータに対する宛先として第1のホストと第2のホストとだけを識別する場合、これらのホストに対する物理コントローラは、論理コントローラからのデータを受信するために識別されることになる(及び、他の物理コントローラは、このデータを受信することはない)。集中ミドルボックスに対しては、論理コントローラは、ミドルボックスを実現する電子機器を管理する(単一の)物理コントローラを識別することだけを必要とする。
【0110】
ミドルボックスコンフィグレーションデータをホストに供給するために、いくつかの実施形態の論理コントローラは、データを(論理コントローラ内のテーブルマッピングエンジンの出力へアクセスするエクススポートモジュールを使用して)物理コントローラへプッシュする。他の実施形態では、物理コントローラは、論理コントローラのエクスポートモジュールからコンフィグレーションデータ(例えば、コンフィグレーションデータが利用可能であることを示す信号に応じて)をリクエストする。
【0111】
物理コントローラ群は、物理制御プレーンデータを渡す量と同じ量のデータを、それらが管理するホストマシーン上のミドルボックス要素へ渡す。いくつかの実施形態では、ミドルボックスコンフィグレーションデータと物理制御プレーンデータは、ホストマシーン上で動作する同一のデータベースへ送信され、管理スイッチング要素とミドルボックスモジュールはデータベースから適切な情報を取得する。同様に、集中ミドルボックス845に対して、物理コントローラ815は、ミドルボックスコンフィグレーションデータをミドルボックス電子機器(例えば、コンフィグレーションデータを記憶するデータベースへ)渡す。
【0112】
いくつかの実施形態では、ミドルボックスは、コンフィグレーションデータを変換する。ミドルボックスコンフィグレーションデータは、パケット処理、解析、変更等のルールを表現するための特定の言語で受信されることになる。いくつかの実施形態のミドルボックス(分散型及び集中型の少なくとも一方)は、これらのルールを、より最適なパケット分類ルールへコンパイルする。いくつかの実施形態では、この変換は、物理制御プレーンデータの物理転送プレーンデータへの変換と同様である。パケットがミドルボックスによって受信される場合、これは、そのパケットにおける自身の動作を効率的にかつ高速に実行するために、コンパイルされた最適なルールを適用する。
【0113】
ミドルボックスコンフィグレーションルールを追加するために、ミドルボックスモジュールは、スライス処理情報及び接続情報の少なくとも一方を受信して、管理スイッチング要素との間でパケットを送受信する。この情報は、管理スイッチング要素に送信される情報に対応する。図示されるように、いくつかの実施形態では、物理コントローラ815は、ミドルボックスに対するスライス処理情報及び接続情報の少なくとも一方を生成する(即ち、この情報は、ネットワーク制御システムの入力あるいは論理コントローラレベルでは生成されない)。
【0114】
分散ミドルボックスに対しては、物理コントローラは、いくつかの実施形態では、管理スイッチング要素のソフトウェアポートについての情報を受信する。ここで、ミドルボックスは、管理スイッチング要素自身からその管理スイッチング要素へ接続し、そして、この情報をミドルボックスへ渡す。他の実施形態では、しかしながら、このポートの使用は、ホストマシーン内のミドルボックスモジュールと管理スイッチング要素との間で直接同意されていて、そうすることで、ミドルボックスは、物理コントローラから接続情報を受信することを必要としない。いくつかのこのような実施形態では、管理スイッチング要素は、それにもかかわらず、この情報を物理コントローラへ送信し、この物理コントローラは、ミドルボックスとの間でパケットを送受信するためにユニバーサル物理制御プレーンフローエントリをカスタマイズする。
【0115】
集中ミドルボックスに対しては、いくつかの実施形態は、トンネリング接続データをミドルボックスへ提供する。このミドルボックスは、いくつかの実施形態では、様々なホストマシーンがパケットをミドルボックスへ送信するために使用することになる、トンネルカプセル化のタイプを知る必要がある。いくつかの実施形態では、ミドルボックスは、許容トンネリングプロトコル(例えば、STT、GRE等)のリストを有していて、選択されたプロトコルは、管理スイッチング要素(群)とミドルボックスとの間で調整される。トンネリングプロトコルは、ミドルボックスのコンフィグレーションの一部としてユーザによって入力することができる、あるいは、異なる実施形態ではネットワーク制御システムによって自動的に判定することができる。ホストマシーンへの接続に加えて、
図4を参照して説明されるように、トンネルは、集中ミドルボックスとプールノードとの間でセットアップされることになり、このトンネルは処理後のパケットをそのプールノードへ送信する。
【0116】
物理コントローラによって生成されるスライス処理情報は、いくつかの実施形態では、論理ネットワークに対して使用されるミドルボックスインスタンスに対する識別子から構成される。いくつかの実施形態では、上述のように、ホストマシーン上で動作する、あるいは集中電子機器として動作するミドルボックスは、複数の論理ネットワークによって使用するために仮想化される。ミドルボックスが管理スイッチング要素からパケットを受信すると、いくつかの実施形態では、パケットは、パケットを処理する際に使用するためのミドルボックスインスタンス(即ち、特定の構成設定されたルールのセット)の特定の1つを識別するプリペンドされたタグ(例えば、VLANタグと同様な)を含んでいる。
【0117】
図9に示されるように、ミドルボックスは、このスライス処理情報を内部スライスバインディング情報へ変換する。いくつかの実施形態では、ミドルボックスは、自身が所有する内部識別子(パケットにプリペンドされているタグとは異なる)を使用して、ミドルボックス内の状態(例えば、アクティブなTCP接続、様々なIPアドレスについての統計情報等)を識別する。新規のインスタンスに対する新規のミドルボックスインスタンスと外部識別子(パケット上で使用される)を作成するための命令を受信すると、いくつかの実施形態は、自動的に新規のミドルボックスインスタンスを作成し、そのミドルボックスインスタンスを内部識別子に割り当てる。加えて、ミドルボックスは、外部スライス識別子を内部スライス識別子へマッピングする、そのミドルボックスインスタンスに対するバインディングを記憶する。
【0118】
上述の図は、様々な物理ネットワークコントローラと論理ネットワークコントローラを示している。
図10は、ネットワークコントローラ1000(例えば、論理コントローラあるいは物理コントローラ)のアーキテクチャの例を示している。いくつかの実施形態のネットワークコントローラは、テーブルマッピングエンジンを使用して、テーブルの入力のセットからのデータを、テーブルの出力のセットにおけるデータへマッピングする。このコントローラにおけるこのテーブルの入力のセットは、論理転送プレーン(LFP)データへマッピングされる論理制御プレーン(LCP)データ、ユニバーサル物理制御プレーン(UPCP)データへマッピングされるLFPデータ、及びカスタマイズ物理制御プレーン(CPCP)データへマッピングされるUPCPデータの少なくとも1つを含んでいる。このテーブルの入力のセットは、また、別のコントローラ及び分散ミドルボックスインスタンスの少なくとも一方に送信されるミドルボックスコンフィグレーションデータを含むことができる。ネットワークコントローラ1000は、図示されるように、入力テーブル1015、ルールエンジン1010、出力テーブル1020、インポータ1030、エクスポータ1035、トランスレータ1035及び永久データ記憶装置(PTD)1040を含んでいる。
【0119】
いくつかの実施形態では、入力テーブル1015は、ネットワーク制御システム内のコントローラ1000の役割に依存する、様々なタイプのデータを有するテーブルを含んでいる。例えば、コントローラ1000がユーザの論理転送要素に対する論理コントローラとして機能する場合、入力テーブル1015は、LCPデータと、論理転送要素用のLFPデータを含んでいる。コントローラ1000が物理コントローラとして機能する場合、入力テーブル1015は、LFPデータを含んでいる。入力テーブル1015は、ユーザあるいは別のコントローラから受信されるミドルボックスコンフィグレーションデータを含んでいる。ミドルボックスコンフィグレーションデータは、ミドルボックスに統合される論理スイッチング要素を識別する論理データ経路設定パラメータに関連付けられる。
【0120】
入力テーブル1015に加えて、制御アプリケーション1000は、自身のテーブルマッピング動作に対する入力を収集するために、ルールエンジン1010が使用する他の雑テーブル(不図示)を含んでいる。これらの雑テーブルは定数テーブルを含み、これは、自身のテーブルマッピング動作を実行するためにルールエンジン1010が必要とする定数に対する所定値を記憶している(例えば、値0、再実行用のディスパッチポート番号等)。定数テーブルは、更に、関数テーブルを含んでいて、これは、出力テーブル1025を投入するための値を計算するためにルールエンジン1010が使用する関数を記憶している。
【0121】
ルールエンジン1010は、入力データを出力データへ変換するための1つの方法を特定するテーブルマッピング動作を実行する。入力テーブル群の1つが変更される(入力テーブルイベントとして参照される)ときはいつでも、ルールエンジンは、テーブルマッピング動作のセットを実行し、これにより、1つ以上の出力テーブルにおける1つ以上のデータタプルの変更をもらすことになる。
【0122】
いくつかの実施形態では、ルールエンジン1010は、イベントプロセッサ(不図示)、いくつかのクエリプラン(不図示)、及びテーブルプロセッサ(不図示)を含んでいる。各クエリプランは、入力テーブルイベントの発生時に実行される結合演算のセットを特定するルールのセットである。ルールエンジン1010のイベントプロセッサは、このようなイベントのそれぞれの発生を検出する。いくつかの実施形態では、イベントプロセッサは、入力テーブル1015内のレコードに対する変更の通知のためのコールバックを入力テーブルに登録し、自身のレコードの1つが変更されている場合に入力テーブルから通知を受信することによって入力テーブルイベントを検出する。
【0123】
検出された入力テーブルイベントに応じて、イベントプロセッサは、(1)その検出されたテーブルイベントに対する適切なクエリプランを選択し、(2)テーブルプロセッサにそのクエリプランを実行することを指示する。クエリプランを実行するために、テーブルプロセッサは、いくつかの実施形態では、クエリプランによって特定される結合動作を実行して、1つ以上の入力と雑テーブルからの1つ以上のデータ値のセットを示す1つ以上のレコードを生成する。いくつかの実施形態のテーブルプロセッサは、(1)選択動作を実行して、結合動作によって生成されたレコード(群)からデータ値のサブセットを選択し、(2)その選択されたデータ値のサブセットを1つ以上の出力テーブル1020に書き込む。
【0124】
いくつかの実施形態は、データログデータベース言語の変形を使用して、アプリケーションデベロッパに、コントローラ用のルールエンジンを作成することを許容し、それによって、コントローラが論理データ経路のセットを、制御されている物理スイッチングインフラストラクチャにマッピングする方法を特定する。このデータログデータベース言語の変形は、本明細書では、nLogと読んでいる。同様のデータログ、nLogは、いくつかの宣言ルールと演算子を提供し、これは、デベロッパに、異なるイベントの発生に応じて実行されるべき異なる動作を特定することを可能にする。いくつかの実施形態では、nLogは、nLogの演算速度を向上するためにデータログによって提供される限定の演算子のサブセットを提供する。例えば、いくつかの実施形態では、nLogは、任意の宣言ルールの内、AND演算子だけを使用することを許可する。
【0125】
nLogを通じて特定される宣言ルールと演算子は、nLogコンパイラによってより大規模なルールのセットにコンパイルされる。いくつかの実施形態では、このコンパイラは、イベントを扱うことを意味している各ルールを、いくつかのデータベースの結合動作のセットに変換する。こうして、大規模のルールのセットは、nLogエンジンと呼ばれるテーブルマッピングルールエンジンを形成する。
【0126】
いくつかの実施形態は、論理データ経路設定パラメータに基づいている入力イベントに対するルールエンジンによって実行される第1の結合動作を指定する。この指定は、ルールエンジンが、コントローラによって管理されない論理データ経路セット(即ち、論理ネットワーク)に関連する結合動作のセットを開始している場合に、ルールエンジンの結合動作が直ちに中止して終了することを補償する。
【0127】
同様に、入力テーブル1015、出力テーブル1020は、コントローラ1000の役割に依存する異なるタイプのデータを有するテーブルを含んでいる。コントローラ1000は論理コントローラとして機能し、出力テーブル1015は論理スイッチング要素に対するLFPデータとUPCPデータを含んでいる。コントローラ1000が物理コントローラとして機能する場合、出力テーブル1020はCPCPデータを含んでいる。入力テーブルと同様に、出力テーブル1015は、ミドルボックスコンフィグレーションデータを含んでいていても良い。また、出力テーブル1015は、コントローラ1000が物理コントローラとして機能する場合に、スライス識別子を含んでいても良い。
【0128】
いくつかの実施形態では、出力テーブル1020は、いくつかの異なるカテゴリにグループ化することができる。例えば、いくつかの実施形態では、出力テーブル1020は、ルールエンジン(RE)入力テーブル及びRE出力テーブルの少なくとも一方とすることができる。出力テーブルは、出力テーブル内の変更がルールエンジンにクエリプランの実行を要求する入力イベントを検出させる場合のRE入力テーブルである。出力テーブルはRE入力テーブルでもあり、これは、ルールエンジンに別のクエリプランを実行させるイベントを生成する。出力テーブルは、出力テーブル内の変更がエクスポータ1025にその変更を別のコントローラあるいはMSEへエクスポートさせる場合のRE入力テーブルである。出力テーブルは、RE入力テーブル、RE出力テーブル、あるいはRE入力テーブル及びRE出力テーブルでもある。
【0129】
エクスポータ1025は、出力テーブル1020のRE出力テーブルに対する変更を検出する。いくつかの実施形態では、エクスポータは、RE出力テーブルのレコードに対する変更の通知に対するコールバックをRE出力テーブルに登録する。いくつかの実施形態では、エクスポータ1025は、自身のレコードの1つが変更されていることを示す通知をRE出力テーブルから受信する場合の出力テーブルイベントを検出する。
【0130】
検出された出力テーブルイベントに応じて、エクスポータ1025は、変更されたRE出力テーブル内の各変更されたデータタプルを取得して、この変更されたデータタプルを1つ以上の他のコントローラあるいは1つ以上のMSEへ伝搬する。出力テーブルレコードを別のコントローラへ送信する場合、エクスポータは、いくつかの実施形態では、通信の信号チャネル(例えば、RPCチャネル)を使用して、レコードに含まれるデータを送信する。RE出力テーブルレコードをMSEへ送信する場合、エクスポータは、いくつかの実施形態では、2つのチャネルを使用する。一方のチャネルは、MSEの制御プレーンにフローエントリを書き込むためのスイッチ制御プロトコル(例えば、オープンフロー)を使用して確立される。もう一方のチャネルは、コンフィグレーションデータ(例えば、ポートコンフィグレーション、トンネル情報)を送信するためのデータベース通信プロトコル(例えば、JSON)を使用して確立される。
【0131】
いくつかの実施形態では、コントローラ1000は、コントローラが管理することを担当しない論理データ経路セット(即ち、他の論理コントローラによって管理される論理ネットワーク)に対するデータを出力テーブル1020に保持しない。しかしながら、このようなデータは、トランスレータ1035によって、PTD1040に記憶することができるフォーマットに変換され、そして、PTDに記憶される。PTD1040は、このデータを、1つ以上の他のコントローラのPTDへ伝搬し、そうすることで、論理データ経路セットを管理することを担当するこれらの他のコントローラは、このデータを処理することができる。
【0132】
いくつかの実施形態では、コントローラは、また、出力テーブル1020に記憶されているデータを、データの弾力性をPTDにもたらす。それゆえ、これらの実施形態では、コントローラのPTDは、ネットワーク制御システムによって管理されるすべての論理データ経路セットに対するコンフィグレーションデータのすべてを有している。つまり、各PTDは、すべてのユーザの論理ネットワークのコンフィグレーションのグローバルビューを含んでいる。
【0133】
インポータ1030は、いくつかの異なるソースの入力データのインタフェースであり、その入力データを使用して、入力テーブル1010を変更するあるいは作成する。いくつかの実施形態のインポータ1020は、別のコントローラから入力データを受信する。インポータ1020は、また、PTD1040のインタフェースであり、そうすることで、他のコントローラインスタンスからのPTDを通じて受信されるデータを、入力テーブル1010を変更するあるいは作成するための入力データとして、変換し、使用することができる。また、インポータ1020は、出力テーブル1030内のRE入力テーブルに伴う変更を検出する。
【0134】
IV.いくつかのミドルボックスの例示の実装
上記では、分散ミドルボックスと集中ミドルボックスとを実装し、構成設定するための様々な原理を記載している。
図2に示される例示のネットワークは、単一のミドルボックスだけを備える簡略化例である。一方、
図11は、多数のミドルボックスを介在するより複雑な論理ネットワークトポロジー1100を概念的に示している。
【0135】
論理ネットワーク1100は、3つの論理L2ドメインを含んでいて、これには、第1の論理L2スイッチ1140に接続されているウェブサーバ1105−1115、第2の論理L2スイッチ1145に接続されているアプリケーションサーバ1120及び1125、第3の論理スイッチ1150に接続されているデータサーバ1130及び1135がある。これらの論理スイッチ1140−1150のそれぞれは、論理ルータ1155(様々なミドルボックスを介して)に接続している。
【0136】
各論理スイッチと論理ルータ1155との間にロードバランサがあり、このロードバランサは、特定の論理L2ドメインへの到来トラフィックをスケジュールする。つまり、第1のロードバランサ1160は、宛先ネットワークアドレス変換(D−NAT)を実行することで、これらの3つのウェブサーバ1105−1115との間のトラフィック(例えば、トランスポート接続単位で)の均衡を図り、第2のロードバランサ1165は、2つのアプリケーションサーバ1120と1125との間のトラフィックの均衡を図り、第3のロードバランサ1170は、D−NATを実行して、2つのデータサーバ1130と1135との間のトラフィックの均衡を図る。加えて、論理ルータ1155と第2の論理スイッチ1145はファイヤウォール1175である。
【0137】
論理ルータ1155は、また、3つの論理L2ドメインを外部ネットワーク1195に接続し、これから、クライアントリクエストがそのネットワークに入ってくることができる。加えて、3つのミドルボックスは、管理ネットワークと外部ネットワークとの間のトラフィックを処理するためのL3ルータ1155を介在している。これらのミドルボックスは、到来トラフィックを処理するためのファイヤウォール1180と、発信トラフィックのIPアドレスを1つ以上の仮想IPアドレスへ変換するためのソースNAT1185を含んでいる。これらのミドルボックスは、管理ネットワークと外部ネットワークのとの間に効率的に配置されている。但し、物理実装が、ミドルボックスへパケットを送信すること、また、ミドルボックス(外部ネットワーク1195あるいは適切なホストマシーンへ送信するため)からのパケットを受信することを含んでいるので、論理トポロジーは、これらのミドルボックスを、ルータを介在する、帯域外ミドルボックスとして示している。そして、IDS119も、論理ルータ1155を介在している。ネットワーク1100では、論理ルータは、処理済パケットのすべての複製(デュプリケート)を解析用のIDS1190へ転送する。
【0138】
図12は、ホスト化仮想環境内のネットワーク1100の1つの特定の物理実装1200を概念的に示している。図示されるように、7つの仮想マシーン1105−1135が、5つの異なるホストマシーン1205−1225に渡って分散されている。いくつかのホストマシーンが1つの仮想マシーンだけを管理している一方で、一方では、残りのホストマシーンは2つのVMを管理している。ホストマシーン1205−1225は互いに接続し、かつプールノード1230と接続していて、これは、ゲートウェイ1235(エクテンダ(拡張装置)とも呼ばれる)と接続している。ゲートウェイ1235は、管理ネットワーク1200を外部ネットワーク1240(例えば、インターネット、異なる管理ネットワーク、外部プライベートネットワーク等)に接続する。この例は、ゲートウェイ1235がプールノード1230を介してホストマシーン1205−1225にだけ接続されているように示しているが、いくつかの実施形態は、ゲートウェイとホストマシーン群との間の直接接続を実現する。
【0139】
図示されるように、各ホストマシーン1205ー1225、更には、プールノード1230とゲートウェイ1235は、管理スイッチング要素を含んでいる。ホストマシーン1205−1225のすべては、論理ルータ1155だけはなく、論理スイッチ1140−1150に対するフローエントリ群を含むように構成されている。こうして、アプリケーションサーバ1125とアプリケーションサーバ1110を含む第2のホストマシーン1210と、データサーバ1130だけを含む第5のホストマシーン1225は、同一の管理スイッチング要素を実現する。ゲートウェイ1235内の管理スイッチング要素は、論理ルータ1155だけではなく、論理ネットワーク1100の3つの論理スイッチ1140−1150のすべてを実現する。プールノードは、いくつかの実施形態では、L3ルータ1155と3つの論理スイッチ1140ー1150を実現する管理スイッチング要素でもある。
【0140】
実装1200では、いくつかの論理ミドルボックスが分散されていて、一方で、残りの論理ボックスは集中されている。例えば、侵入検出サービス1190は集中IDS電子機器1245として実現される。ホストマシーン1205−1225のそれぞれは、ゲートウェイ1235として、IDS電子機器1245に直接接続している。図示されるように、これらのマシーンは、IDS電子機器にパケットを送信するだけであり、パケットを受信しない。これは、IDSが複製パケット(ゲートウェイ1235からの到来パケットと、ホストマシーン1205−1225からの発信パケット)を受信して、脅威を検出するための解析を実行しているだけであり、それらの解析後にはそのパケットをどこにも送信しないからである。
【0141】
S−NATミドルボックス1185は、ホストマシーン群(例えば、ハイパーバイザ内で動作するデーモンとして)のそれぞれに渡って分散される。これは、仮想マシーンのすべてがパケットを、仮想IPアドレスの配下に実際のIPアドレスを隠蔽するためのIPアドレス変換を要求する外部ネットワークへ送信することができる。ファイヤウォール1175も同様に分散されるが、ホストマシーン1210及び1220上のみで実現される。これは、これらが、このファイヤウォールの配下にあるアプリケーションサーバ仮想マシーン1120及び1125を管理するノードであるからである。
【0142】
3つのロードバランサ1160−1170は、様々なホストマシーン1205−1225、ゲートウェイ1235に渡って実現される。図示されるように、ロードバランサは、ホストマシーンのそれぞれにおけるロードバランサ要素内で実現され、そうすることで、ロードバランサ要素は仮想化されて(即ち、スライス化されて)、いくつかの異なるロードバランサを実現する。ファイヤウォール1175がアプリケーションサーバがそれぞれ実現されているホストマシーン群において配置されているのに対して、各特定の論理ロードバランサは、特定のロードバランサを担当しないマシーンを管理する各ノードにおいて配置される。これは、例えば、ロードバランサ1170がデータサーバ1130及び1135を表す仮想IPアドレスに向けられている任意のパケットを受信して、2つのデータサーバのどちらにそのパケットを転送するかを判定し、そして、選択されたデータサーバへ反映するために宛先IPアドレスを修正するからである。可能ならいつでも第1のホップ(パケットソース)において処理が実行されるので、この機能はデータサーバ群を管理するノード群においては必要とされないが(他の仮想マシーンも管理されている限り)、むしろ、データサーバ1130及び1135へパケットを送信することができる他の仮想マシーンを管理するノードにおいて必要とされる。従って、ゲートウェイ1235内のロードバランサ要素は3つのロードバランサのすべてを実現するためにスライスされる。これは、外部ネットワーク1240からの到来パケットが、3つの論理L2ドメインの任意のものに向けられている場合があるからである。
【0143】
加えて、図示されるように、いくつかの実施形態は、プールノード1230とゲートウェイ1235内の論理ネットワークに対する任意の分散ミドルボックスを実現する。これは、ミドルボックスが必要とされる時点でどのロケーションであるか(かつユーザが、続いてルーティングポリシー、ミドルボックスコンフィグレーションあるいはネットワークアーキテクチャを修正する場合がある)を判定することが難しい場合があるので、いくつかの実施形態は、一定の物理マシーン群が特定のミドルボックスを要求しないことになることを推定しない。これと同じに従って、いくつかの実施形態は、異なるミドルボックス群をホストの異なるサブセット群へ分散しない。代わりに、論理ネットワークに対するすべてのミドルボックスは、論理ネットワークに存在しているホストのそれぞれで実現される。
【0144】
外部ネットワーク1180と管理ネットワークとの間での到来パケットを処理するためのファイヤウォール1180は、ゲートウェイ内の仮想マシーン(ハイパーバイザ内で動作するモジュールではなく)内で集中形式で実現される。ゲートウェイが到来パケットを受信する場合に、ゲートウェイは、いくつかの実施形態ではファイヤウォールVMへパケットをルーティングする。この例では、ファイヤウォールVMはゲートウェイ内に配置されている一方で、いくつかの実施形態は、ホストマシーン(例えば、ユーザVM群を管理するホストマシーンとは異なるホストマシーン)内の仮想マシーンとして、あるいはファイヤウォール電子機器を使用して、ファイヤウォールを実現する。
【0145】
ネットワーク1100を構成設定するために、いくつかの実施形態では、
図8及び
図9を参照して示されるように、ユーザは、ネットワークトポロジーを(例えば、入力変換コントローラを介して)論理コントローラへ入力する。いくつかの実施形態では、ユーザは、スイッチ群、ルータ群、ミドルボックス群及び仮想マシーン群の間の接続を入力する。様々なネットワークコンポーネントの位置(ロケーション)に基づいて、入力変換コントローラあるいは論理コントローラは、論理制御プレーンデータを生成して、これを、論理転送プレーン内のフローエントリ群に変換する。しかしながら、ファイヤウォール1180、S−NAT1185及びIDS1190のようなミドルボックスに対しては、ユーザは、パケットをこれらのコンポーネントを送信する場合を示すポリシールーティングルールを入力しなければならない。例えば、ファイヤウォール1180に対するルーティングポリシーは、論理ネットワーク外のソースIPを伴うパケット群をすべて送信することになり、一方で、S−NAT1185に対するルーティングポリシーは、論理ネットワーク内のソースIPを伴うパケット群をすべて送信することになる。論理コントローラは、フローエントリ群をユニバーサル物理制御プレーンへ変換した後、どの物理コントローラがどのフローエントリを受信するべきかを識別し、これらのフローエントリを配信する。物理コントローラ群は、(ホストマシーン群がユニバーサル物理制御プレーンからカスタマイズ物理制御プレーンへの変換を実行するシャーシ(chassis)コントローラ群を含んでいる限り)特定のポート情報と他のカスタマイズ情報をフローエントリ群に追加し、そして、それらを管理スイッチング要素へ配信する。
【0146】
加えて、ユーザは、様々なロードバランサ、ファイヤウォール等に対するミドルボックスコンフィグレーションを入力する。例えば、この情報は、異なるロードバランサ、S−NAT用の仮想IPから実IPへのマッピング、ファイヤウォール用のパケット処理ルール等のそれぞれについて使用するためのスケジューリングアルゴリズムを含むことになる。ユーザは、この情報を様々なミドルボックス用のAPIを通じて入力し、いくつかの実施形態は、この情報を、フローエントリ群として同一のフォーマットを有するレコード(例えば、nLog)へ変換する。この論理コントローラは、どのミドルボックスコンフィグレーションがホストマシーンあるいは集中ミドルボックス電子機器へ送信されることを必要としているかを識別する(例えば、ファイヤウォール1175に対するレコード群は、ホストマシーン1210と1220へ進むことだけを必要とする一方で、S−NATレコード群は、5つのホストマシーン1205−1225のすべてへ進む)。論理コントローラ群は、そのレコード群を適切な物理コントローラ群へ配信し、そこで、スライス処理情報(及び、いくつかの場合、トンネリング情報)を追加して、その情報を上述のミドルボックス群へ配信する。
【0147】
ネットワークの動作は、外部ネットワークから到来するパケット群、外部ネットワークへ発信するパケット群、及び1つの論理L2ドメインから他の論理L2ドメインへ送信されるパケット群を参照することによって説明される。パケットがホストマシーン(例えば、ウェブサーバ)から送信される場合、それは、まず、ホスト上で動作するMSEに到達する。パケットは、まず、論理スイッチによって論理L2処理に投入され、この論理スイッチは、そのパケットを論理ルータ(これは、パケットが発信されるので、それは、ローカルロードバランサへ送信される必要がないからである)へ送信する。論理ルータ(ホストマシーンにおけるMSEによっても取り扱われる)は、パケットの複製をIDS電子機器1245へ送信するとともに、そのパケットをホスト上のS−NAT処理へ送信する。S−NAT処理は、ソースIPアドレスを修正して、新規のパケットをMSEへ返信する。いくつかの実施形態では、パケットがアクティブなTCPセッションの一部である場合、S−NATは、S−NAT処理を介在させることなく、MSEへその修正を実現可能にするフローエントリ群をMSEへ送信している場合がある。MSEによって実現される論理ルータは、論理出口ポートを外部ネットワークに面しているポートとして識別し、これは、パケットを送信するための物理ポートをプールノード1230へマッピングする。プールノードは、パケットをゲートウェイ1235へ転送し、これは、そのパケットを外部ネットワーク1240へ送信する。
【0148】
パケットが外部ネットワーク1240からゲートウェイ1240で受信される場合、そのゲートウェイ内のスイッチング要素処理は、まず、パケットをファイヤウォール仮想マシーンへ送信する。ファイヤウォールがパケットを破棄しない場合、次に、そのパケットはスイッチング要素処理へ返信され、これは、ロードバランサの正しいスライスを識別し、そのパケットにスライス情報をタグ付けし、そして、そのパケットをロードバランサ(負荷分散)処理へ送信する。ロードバランサは、実際の宛先IPを選択し、選択された宛先マシーンへ反映するために修正されたIPアドレスを有する新規のパケットを送信する。この時点で、ゲートウェイ内のMSEは、パケットを正しいホストへ送信する。宛先VMがアプリケーションサーバ1120あるいは1125の内の1つである場合、ゲートウェイのMSE内の論理ルータは、まず、処理用のファイヤウォール1175へパケットを送信し、そして、ファイヤウォール要素からの返信を受信した後に、そのパケットを正しいホストへ送信する。次に、MSEは、パケットを宛先マシーンへ配信する。
【0149】
1つの論理ドメインから別の論理ドメインへ進むパケット群は、ゲートウェイ1235を通じて進む必要はない。パケットは、まず、MSEにおいて受信され、そこで、L2スイッチングを実行し、更に、L3ルーティングを実行する。論理ルータは、宛先ドメインを識別し、パケットに正しいロードバランサスライス処理情報をタグ付けし、更に、そのタグ付けされたパケットをロードバランサへ送信する。ロードバランサは、宛先IPアドレスを修正して、そのパケットをMSEへ返信し、そして、MSEは、そのパケットを、VMへ配信するための正しいホストマシーンへ転送する。
【0150】
V.電子システム
上述の特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体としても呼ばれる)に記録されている命令のセットとして特定されるソフトウェアプロセスとして実現される。これらの命令群は、1つ以上のコンピュータあるいは処理ユニット(群)(例えば、1つ以上のプロセッサ、プロセッサのコア群、あるいは他の処理ユニット群)によって実行される場合、これらは、処理ユニット(群)に命令群で示される動作を実行させる。コンピュータ可読メディアの例には、限定するものではないが、CD−ROM、フラッシュドライブ、ランダムアクセスメモリ(RAM)チップ、ハードドライブ、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログマブルリードオンリメモリ(EEPROM)等が含まれる。コンピュータ可読メディアには、搬送波、及び無線接続あるいは有線接続を通過する電子信号は含まれない。
【0151】
この明細書では、用語「ソフトウェア」は、リードオンリメモリに常駐するファームウェア、あるいは磁気記憶装置に記憶されるアプリケーションを含むことを意味していて、これは、プロセッサによって処理するためにメモリに記憶することができる。また、いくつかの実施形態では、複数のソフトウェア発明は、大規模プログラムの一部分として実現することができ、一方で、別のソフトウェア発明を維持する。いくつかの実施形態では、複数のソフトウェア発明は別のプログラムとして実現することもできる。そして、本明細書で記載されるソフトウェア発明を共に実現する別々のプログラムの任意の組み合わせは、本発明の範囲内である。いくつかの実施形態では、1つ以上の電子システム上で動作するためにインストールされる場合、ソフトウェアプログラムは、そのソフトウェアプログラムの動作を実行し機能する1つ以上の特定マシーン実装を定義する。
【0152】
図13は、本発明のいくつかの実施形態が実現される電子システム1300を概念的に示す図である。電子システム1300は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ等)、サーバ、専用スイッチ、電話、PDA、あるいは任意の他の種類の電子あるいはコンピュータデバイスとすることができる。このような電子システムは、様々なタイプのコンピュータ可読メディアと、様々な他のタイプのコンピュータ可読メディア用のインタフェースを含んでいる。電子システム1300は、バス1305、処理ユニット(群)1310、システムメモリ1325、リードオンリメモリ1330、永久記憶装置1335、入力デバイス1340、及び出力デバイス1345を含んでいる。
【0153】
バス1305は、あらゆるシステムバス、周辺バス及びチップセットバスを集約的に示していて、これらは、電子システム1300のいくつかの内部デバイスを通信接続する。例えば、バス1305は、処理ユニット(群)1310と、リードオンリメモリ1330、システムメモリ1325及び永久記憶装置1335とを通信接続する。
【0154】
これらの様々なメモリユニットから、処理ユニット(群)1310は、本発明のプロセスを実行するために、実行用の命令と、プロセス用のデータを取得する。この処理ユニット(群)は、様々な実施形態において単一のプロセッサあるいはマルチコアプロセッサとすることができる。
【0155】
リードオンリメモリ(ROM)1330は、処理ユニット(群)1310及び電子システムの他のモジュールによって必要とされる静的データ及び命令を記憶している。永久記憶装置1335は、一方で、読出及び書込メモリデバイスである。このデバイスは、電子システム1330がオフである場合でも命令及びデータを記憶する不揮発性メモリユニットである。本発明のいくつかの実施形態は、永久記憶装置1335として、大容量記憶デバイス(例えば、磁気ディスクあるいは光学ディスク及びそれに対応するディスクドライブ)を使用する。
【0156】
他の実施形態は、永久記憶装置としてリムーバル記憶デバイス(例えば、フロッピー(登録商標)ディスク、フラッシュメモリデバイス等、及びそれに対応するドライブ)を使用する。永久記憶装置1335と同様に、システムメモリ1325は、読出及び書込メモリデバイスである。しかしながら、記憶装置1335とは異なり、システムメモリ1325は不揮発性読出及び書込メモリ、例えば、ランダムアクセスメモリである。システムメモリ1325は、プロセッサがランタイムで必要とするいくつかの命令及びデータを記憶する。いくつかの実施形態では、本発明のプロセスは、システムメモリ1325、永久記憶装置1335及びリードオンリメモリ1330の少なくとも1つに記憶されている。これらの様々なメモリユニットから、処理ユニット(群)1310は、命令を取得して、プロセス用のデータを実行することで、いくつかの実施形態のプロセスを実行する。
【0157】
バス1305は、入力デバイス1340及び出力デバイス1345にも接続している。この入力デバイス1340は、ユーザに、情報を通信して、電子システムに対するコマンドを選択することを可能にする。入力デバイス1340は、アルファベットキーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)、カメラ(例えば、ウェブカム)、マイクロフォンあるいは音声コマンドを受信するための同様のデバイス等を含んでいる。出力デバイス1345は、電子システムによって生成される画像を表示する、あるいは、そうでなければ、データを出力する。出力デバイス1345は、プリンタ、及び表示デバイス、例えば、陰極線管(CRT)あるいは液晶ディスプレイ(LCD)を含み、加えて、スピーカあるいは同様のオーディオ出力デバイスを含んでいる。いくつかの実施形態は、入力デバイス及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含んでいる。
【0158】
そして、
図13に示されるように、バス1305は、電子システム1300を、ネットワークアダプタ(不図示)を介してネットワーク1365に接続している。この方法では、コンピュータは、コンピュータのネットワーク(例えば、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、あるいはイントラネットの一部とすることができる、あるいはネットワーク群のネットワーク、例えば、インターネットの一部とすることができる。電システム1300の任意のあるいはすべてのコンポーネントは、本発明とともに使用することができる。
【0159】
いくつかの実施形態は、電子コンポーネント、例えば、マイクロプロセッサ、マシーン可読あるいはコンピュータ可読媒体(選択的には、コンピュータ可読記憶メディア、マシーン可読メディア、あるいはマシーン可読記憶メディアと呼ばれる)にコンピュータプログラム命令を記憶する記憶装置及びメモリを含んでいる。このようなコンピュータ可読メディアのいくつかの例には、RAM、ROM、リードオンリコンパクトディスク(CD−ROM)、記録可能コンパクトディスク(CD−R)、書換可能コンパクトディスク(CD−RW)、リードオンリデジタル多用途ディスク(例えば、DVD−ROM、デュアル層DVD−ROM)、様々な記録可能/書換可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RW等)、フラッシュメモリ(例えば、SDカード、miniSDカード、microSDカード等)、磁気ハードドライブ及びソリッドステートハードドライブ、リードオンリ及び記録可能ブルーレイ(登録商標)ディスク、高密度光学ディスク、任意の他の光メディアあるいは磁気メディア、及びフロッピーディスクが含まれる。コンピュータ可読メディアは、少なくとも1つの処理ユニットによって実行可能であり、かつ、様々な動作を実行するための命令群のセットを含むコンピュータプログラムを記憶することができる。コンピュータプログラムあるいはコンピュータコードの例は、例えば、コンパイラによって生成されるマシーンコードを含み、また、コンピュータ、電子コンポーネントあるいはインタプリタを使用するマイクロプロセッサによって実行される高レベルコードを含むファイルを含んでいる。
【0160】
上述の議論は、主に、ソフトウェアを実行するマイクロプロセッサあるいはマルチコアプロセッサに向けている一方で、いくつかの実施形態は、1つ以上の集積回路、例えば、特定用途集積回路(ASIC)あるいはフィールドプログマブルゲートアレイ(FPGA)によって実行される。いくつかの実施形態は、このような集積回路は、回路自身に記憶されている命令を実行する。加えて、いくつかの実施形態は、プログマブル論理デバイス(PLD)、ROMデバイス、RAMデバイスに記憶されるソフトウェアを実行する。
【0161】
本願の明細書及び任意の請求項で使用されるように、用語「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」はすべて、電子デバイスあるいは他の技術的なデバイスを意味する。これらの用語は、人あるいは人のグループは除外している。明細書の目的のために、用語である表示あるいは表示することは、電子デバイス上で表示することを意味する。本願の明細書及び任意の請求項で使用されるように、用語「コンピュータ可読媒体」、「コンピュータ可読メディア」及び「マシーン可読媒体」は、コンピュータによって読出可能である形式で情報を記憶する、有形の物理的なオブジェクトに完全に制限される。これらの用語は、任意の無線信号、有線ダウンロード信号、及び任意の他の一時的な信号は除外する。
【0162】
本発明はいくつかの特定の詳細を参照して説明しているが、当業者は、本発明が、本発明の範囲から逸脱することなく他の特定の形態で実現することができることを認識するであろう。つまり、当業者は、本発明が上述の図示の詳細に制限されるものではなく、添付の請求項によって定義されるものであることを理解するであろう。