本発明の以下の詳細な説明では、本発明の多くの詳細、例、および実施例が説明され、記載される。しかしながら、本発明は、説明された実施形態に限定されず、本発明は、いくつかの説明された特定の詳細および例なしに実施されてよいことが理解されるべきである。
いくつかの実施形態は、論理ネットワークの論理エンティティ(例えば、論理フォワーディング要素、論理ミドルボックス等)のセットの所望の状態が、特定の時点で、ネットワークにおいて実現されるかどうかを決定するための方法およびツールを提供する。いくつかの実施形態では、本方法は、特定の時点における論理エンティティの実現状態を識別するために、論理ネットワークの制御プレーンに問い合わせる。いくつかの実施形態の方法はまた、論理エンティティの所望の状態が実現されていない物理ノード(例えば、コントローラおよび管理フォワーディング要素)を識別することができる。いくつかの実施形態では、論理ネットワークの論理エンティティの所望の状態は、論理ネットワークの管理プレーン(MP)が、(例えば、ユーザから受信した)論理ネットワークの定義に基づいて生成し、MP構成データベースに格納するデータを含む。いくつかの実施形態では、生成されたデータ(所望の状態)は、非同期に(例えば、MPチャネルを介して)中央制御プレーン(CCP)クラスタ(例えば、CCPクラスタの1つ以上の中央コントローラ)にプッシュされる。
CCPクラスタは、受信したデータを、CCPクラスタが論理エンティティを実装する1つ以上の管理フォワーディング要素(MFE)から受信した論理エンティティのための対応するランタイムデータと共に処理する。いくつかの実施形態は、MFE上の論理エンティティを構成するために、CCPクラスタが処理された構成データを(例えば、其々が対応するMFEを制御するローカルコントローラのセットを通して)MFEへプッシュダウンする場合に、(すなわち、1つ以上の論理ネットワークが実装される物理ネットワーク基盤において)論理エンティティがシステム上で実現されると判定する。いくつかの実施形態は、論理エンティティがMFE上で実際に構成される(いくつかの実施形態ではトランスポートノードとしても参照される)場合に、論理エンティティがシステム内で実現されると判定する。
論理エンティティの実現状態は、論理エンティティの所望の状態とは異なり、一時的なシステム状態を扱う。すなわち、論理エンティティの実現状態は、システムが所望の状態に収束しようとする際に連続的に変化している。換言すれば、システムの環境(例えば、データセンタ)が変化する(例えば、仮想マシンが移行する、ハイパーバイザが失敗する等)につれて、実現状態はいつも実現しない状態になるかもしれない。いくつかの実施形態では、論理エンティティの実現状態はまた、論理ネットワークの制御プレーンで受信されたランタイムデータ(例えば、仮想ネットワークインタフェースのL2およびL3アドレス)によって変更(更新)することができる。
論理エンティティが実現されることを確実にするために、論理エンティティを作成した後に、論理エンティティ(例えば、論理スイッチ、論理スイッチポート、論理ルータ等)の状態を問い合わせる代わりに、いくつかの実施形態は、時間の異なるインスタンスにおいて1つ以上の論理エンティティの実現状態をユーザが一緒に問い合わせることができるようにする実現判定ツールを提供する。すなわち、複数の論理エンティティが論理ネットワークに追加された場合、エンティティがシステム内で実現されることを確実にするために各論理エンティティの状態を問い合わせる代わりに、ユーザは、特定の時点までCCPクラスタに公開されている全ての論理エンティティ(または論理エンティティの特定のセット)の実現状態を決定するために制御プレーンに(例えば、管理プレーンを介して)問い合わせる。
いくつかの実施形態では、論理ネットワークは、ネットワークの異なる論理パス上に配置される論理エンティティのセットを含む。論理ネットワークにおける論理エンティティの例は、論理L2スイッチおよび論理L3ルータなどの論理フォワーディング要素(LFE)、論理ファイアウォールおよび論理ロードバランサなどの論理ミドルボックスなどを含む。論理ネットワークエンティティはまた、いくつかの実施形態では、送信元または宛先のデータ計算ノード(DCN)およびトンネルエンドポイント(例えば、MFEによって実装される)を含む他のネットワーク要素を含む。DCNまたはトンネルエンドポイントが、典型的に単一のホストマシン(またはゲートウェイ)上で動作する一方で、論理フォワーディング要素または論理ミドルボックスは、異なるマシン上で動作するいくつかの異なるMFE(例えば、ソフトウェアおよび/またはハードウェア管理フォワーディング要素)にまたがる。
論理ネットワークの論理フォワーディング要素は、異なるホストマシン上で動作するいくつかの異なるDCN(例えば、仮想マシン(VM)、コンテナ、物理マシン等)を、相互に、および他の論理および/または物理ネットワークに論理的に接続する。いくつかの実施形態では、DCNを論理的に接続する論理フォワーディング要素は、ホスティングシステム(例えば、データセンタ)のユーザ(例えば、テナント)のための論理ネットワークトポロジを定義する。いくつかの実施形態では、DCNの異なるサブセットは、ソフトウェア管理フォワーディング要素(MFE)を実行する異なるホストマシン上に存在する。各MFEは、ホストマシン上で動作し、ホストマシン上で実行されるDCNのサブセットが論理的に接続されている論理ネットワークのLFEを実装する。
ソフトウェアMFEは、いくつかの実施形態では、ホストマシンの仮想化ソフトウェア(例えば、ハイパーバイザ)においてインスタンス化されるソフトウェアインスタンスである。いくつかの実施形態では、ホストマシン上でLFEを実装することは、MFEが動作するホストマシン上に存在するDCNのセットから送信された、および/またはこれを宛先とするパケットに対するネットワークトラフィックフォワーディング処理を実行することを含む。ハードウェアMFEに接続されている物理マシン(サーバ、ホストマシン等)を論理ネットワークの他のDCNに論理的に接続するために、LFEはまた、1つ以上のハードウェアMFE(たとえばトップオブランク(Top of Rack)(TOR)スイッチ)によって実装される。さらに、特定の物理ホストマシンが複数の論理ネットワークの(例えば、異なるテナントに属する)DCNをホストしてもよいため、ホストマシン(またはハードウェアMFE)上で実行されるソフトウェアMFEは、異なる論理ネットワークに属すLFEの異なるセットを実装するために、仮想化されてよい。
いくつかの実施形態では、中央管理プレーン(CMP)クラスタ(例えば、CMPクラスタ内のマスタマネージャ)は、論理ネットワークトポロジのための論理オブジェクトデータを生成する。いくつかの実施形態では、ユーザ(例えば、ネットワーク管理者)は、アプリケーションプログラミングインターフェイス(API)コールを介して、論理ネットワーク定義(例えば論理ネットワークトポロジ)をCMPクラスタに提供する。CMPクラスタは、受信した論理ネットワーク定義に基づいて、(論理スイッチ、論理ルータ、論理ミドルボックスなどを定義することによって)論理エンティティデータを生成し、生成したデータ(すなわち、論理エンティティの所望の状態)を管理プレーンデータベースに格納する。
いくつかの実施形態のCMPクラスタはまた、中央制御プレーン(CCP)クラスタ内の1つ以上のコントローラに所望の状態をプッシュする。MFE(例えば、ホストマシンおよびゲートウェイマシンで動作するMFE)はまた、MFEが実装する論理エンティティ(すなわち、論理エンティティの発見された状態)に関するランタイムデータを、CCPクラスタにプッシュする。典型的なランタイムデータは、いくつかの実施形態では、仮想トンネルエンドポイント(VTEP)テーブル、メディアアクセス制御(MAC)テーブル、アドレス解決プロトコル(ARP)テーブルなどのレイヤ2制御プレーンテーブルと、ルーティング情報ベース(RIB)テーブル、フォワーディング情報ベース(FIB)テーブルなどのレイヤ3ルーティングテーブルと、MFEから集められた統計データとを含む。
CCPクラスタは、MFE上の論理エンティティを構成するため(すなわち、システム内の論理エンティティを実現するため)に、MFEから受信したランタイムデータ(すなわち、発見された状態)とともに、管理プレーンから受信した論理エンティティの定義データ(すなわち、所望の状態)を処理する。換言すれば、論理ネットワークの1つ以上の論理エンティティに対する処理済みの構成データと、CCPクラスタに格納された対応するランタイムデータとが、論理エンティティの実現状態を構成する。そして、CCPクラスタは、論理エンティティの実現状態をホストマシン(およびゲートウェイ)にプッシュダウンする。いくつかの実施形態は、CCPクラスタ(例えば、CCPクラスタ内のコントローラ)が処理済みの構成データをMFEにプッシュダウンする場合に、論理エンティティの所望の状態が実現されると判定する。いくつかの実施形態は、構成データがコントローラによって処理されて配信されるだけでなく、論理エンティティを実装するMFE上に実際に構成された論理エンティティでもあるとき、論理エンティティの状態が実現されると判定する。
ホストマシンに配信される構成データは、論理エンティティを実装するためにホストマシン上で動作するMFEの共通のフォワーディング動作を定義する。いくつかの実施形態では、(例えば、ホストマシンのハイパーバイザ内の)各ホストマシン上で動作するローカルコントローラは、まずCCPクラスタから構成データを受信する。次に、ローカルコントローラは、ローカルコントローラが動作するのと同一のホストマシン上で動作する各MFEの特定のフォワーディング動作を定義する、カスタマイズされた構成データを生成する。CCPクラスタは、異なるMFE間の論理ネットワークトラフィックの通信を容易にするために、各MFEに実装された論理エンティティの実現状態を、論理エンティティを実装する他のMFEと共有する。
要約すると、論理ネットワークのMFE(すなわち管理フォワーディング要素)は、論理エンティティのランタイム状態または発見された状態の送信元であり、MPは、論理エンティティの所望の状態の送信元である。CCPクラスタは、論理エンティティを実現するためにこれら2つの状態を処理(結合)します。ローカルコントローラは、それらの対応するMFE上の論理ネットワークの論理エンティティを構成するために、CCPクラスタから実現状態を受信する。
現在、(ユーザが生成した)論理エンティティのセットの所望の状態がネットワーク基盤(例えば、CCPクラスタおよびMFE)において実現されたかどうかを、ユーザが判定することは困難または時には不可能である。図1は、論理ネットワークのための論理エンティティのセットの生成および公開を示す。より具体的には、この図は、1つ以上の論理エンティティを生成し、これらの論理エンティティを制御プレーンに公開するために、ユーザがどのように管理プレーンに(API呼び出しなどを介して)要求することができるか示す。図1は、マネージャ110(例えば、中央管理プレーンクラスタ内のマネージャコンピュータまたはアプリケーション)、所望状態トランザクションキュー120、コントローラ130(例えば、CCPクラスタ内のコントローラコンピュータまたはアプリケーション)、および所望状態のトランザクションが制御プレーンにおいて処理(実現)されるか否かを示す実現状態キュー140を含む。
この図は、マネージャ110が、(例えば、ユーザAPI要求を介して)論理スイッチLS1、論理スイッチLS1の論理ポートLP1、論理スイッチLS2、および論理スイッチLS2の論理ポートLP2を生成したことを示す。しかしながら、マネージャがLP2を作成する前に、論理ポートLP1を変更する変更要求150が所望状態トランザクションキュー120で受信される。この変更要求は、ユーザから受信されてもよいし、論理ネットワークまたは論理ネットワークを実装する物理基盤における(例えば、ランタイムデータ内の)変更を介して受信されてもよい。
この図はまた、マネージャ110が(例えば、CCPハンドラモジュールを介して)CCPクラスタに所望の状態を公開する場合、生成された論理エンティティの全てが、論理ポートLP1の変更を除いてコントローラ130において実現されることを示す。換言すれば、論理ポートLP1は、生成されて、ある時点で制御プレーン内に実現されるが、LP1の変更は制御プレーンでは実現されていない。CCPクラスタが、異なる段階で論理エンティティの状態を維持する機構を有していない限り、これらの異なる段階での論理エンティティの実現状態を判定することは、ほぼ不可能である。
論理エンティティの状態を維持するために、いくつかの実施形態は、実際にCCPクラスタにおける論理エンティティの所望の状態の実現を追跡する状態同期バリアである、クラスタ領域単調増加値を提供する。このグローバル実現番号(GRN)は、いくつかの実施形態では、異なる時点で(例えば、ある時間間隔で自動的に、ユーザ要求ごとに手動で、またはあらゆる所望の状態更新ごとに)インクリメントされる。管理プレーンは、所望の状態をCCPクラスタに公開することに加えて、GRNがインクリメントされるたびに新しいGRN値をCCPクラスタに公開する。CCPクラスタは、そして、GRN値が受信される時点まで、受信したGRN値を、CCPクラスタに公開される異なる論理エンティティの実現状態に関連付ける。いくつかの実施形態では、CCPクラスタはまた、GRNを、制御プレーンがMFEから受信した論理エンティティの対応するランタイム状態に関連付ける。
いくつかの実施形態の管理プレーンは、その後、最新のGRNまたは(例えばユーザによって与えられる)任意の特定のGRN(例えば、ユーザによって特定された)までCCPクラスタに公開される、論理エンティティの特定のセットの実現状態を要求することができる。いくつかの実施形態はまた、最新のGRNまたは任意の特定のGRNまでCCPクラスタに公開されるすべての論理エンティティの実現状態を提供する。例えば、ユーザが論理経路に沿った複数の論理要素(例えば、論理スイッチおよびルータ)を有する論理経路を定義する場合、論理経路の実現状態は、その経路に沿った各論理要素の実現に依存する。このように、論理経路の実現状況を識別するために、ユーザは、経路が定義された後に公開されるGRN値において経路の実現状態を問い合わせることができる。
そうするために、ユーザ(例えば、ネットワーク管理者)は、論理ルートが定義された後にGRNのインクリメントを(例えば、GRNのインクリメント関数を呼び出すことによって)要求することができる。このような要求は、GRNをインクリメントし、そして要求がなされた時点でインクリメントされたGRN値を論理エンティティの実現状態に関連付けるだけでなく、インクリメントされたGRN値をユーザに返す。そしてユーザは、受信したGRN値まで論理経路の実現状態についてCCPクラスタに問い合わせることができる。
図2は、グローバル実現番号(GRN)を使用して論理ネットワークの論理エンティティの実現状態を追跡するユーザを示す。具体的には、この図は、ユーザが異なるGRN値を使用して、論理ネットワークの論理スイッチ用に生成した論理ポートの実現を追跡することを示している。マネージャ110は、図1のマネージャ110と同様に、論理スイッチLS1、論理スイッチLS1の論理ポートLP1、論理スイッチLS2、および論理スイッチLS2の論理ポートLP2を保持する所望状態トランザクションキュー120を含む。所望状態トランザクションキュー120はまた、論理ポートLP2を受信する前に、論理ポートLP1への変更150を受信している。
しかしながら、図1とは異なり、この図は、所望状態トランザクションキュー120における各所望の状態の更新後にGRNの値をインクリメントし、インクリメントした値をコントローラ130に公開するGRNジェネレータモジュール210を、マネージャ110が含むことを示す。図4を参照して以下に更に説明するように、各所望の状態の更新後にGRN値をインクリメントし、インクリメントされたGRNを公開することは、いくつかの実施形態の管理プレーンが実行する制御プレーンへのGRNの公開の1つの方法に過ぎない。
いくつかの実施形態では、管理プレーンがユーザ要求を受信する場合にGRN値をインクリメントするが、他のいくつかの実施形態では、GRN値は、(例えば、ユーザによって調整することができる)ある時間間隔で自動的にインクリメントされる。さらにいくつかの他の実施形態では、GRN値は、前述の3つの方法のうちの2つまたは全てを使用してインクリメントされ、制御プレーンに公開され得る。すなわち、GRN値が予め設定された時間間隔でインクリメントされて公開される一方、所望の状態への更新が発生した場合、管理プレーンはGRN値をインクリメントし、それを制御プレーンに公開する。さらに、ユーザは、GRN値のインクリメントおよび公開を手動で強制することができる。
図2では、各所望の状態の更新後に、GRNジェネレータ210はGRNの値をインクリメントし、コントローラ130に新しい値を公開する。図が示すように、論理スイッチLS1を実現状態キュー140に公開した後、GRNジェネレータ210はGRNの値をGからG1にインクリメントし、この新しい値をコントローラ130に公開した。同様に、論理ポートLP1、論理スイッチLS2、および論理ポートLP1への変更のそれぞれの公開の後に、新らたな値G2、G3、およびG4が生成され、コントローラ130に公開される。この図はまた、(実現状態キュー140のLP1上のバツ印が示すように)論理ポートLP1への変更がシステム内で実現されていないことを示す。
最後に、図は、ユーザ30がGRN値G4における論理ポートLP1の実現状態について、管理プレーンに問い合わせを発行したことを示している。このクエリに応答して、管理プレーンは制御プレーンに同じことを問い合わせ、ユーザに「実現されていない」応答を返す。したがって、ユーザは、論理ポートLP1への変更が失敗し、システム内で実現されていないことを識別する。次に、ユーザは、GRN値G3における(これは、ポートの変更前のある時点におけるこのポートの実現状態を示す)LP1の実現状態をもう一度管理プレーンに問い合わせる。今度は、管理プレーンは、GRNがG3におけるものを示すクエリに応答して、(制御プレーンに問い合わせた後に)「実現」を返す。上記2つのクエリから、ユーザは、論理ポートLP1が生成された後にシステム内で実現されるが、論理ポートが変更された後は実現されなかったと結論付けることができる。図示するように、ユーザは、異なるGRN値を用いることによって、異なる時点で論理ポートLP1を追跡することができる。
上述したように、CCPノード(例えば、コントローラ)が最後に処理した各GRNについて、CCPノードは、CCPノードが管理する各MFE(例えば、CCPノードがマスタであるMFE)上の論理エンティティの実現状態を把握している。すなわち、CCPノードが論理エンティティの所望の状態とランタイム状態を受信した場合、CCPノードは、ネットワークの特定のMFEのセットに対してのみ論理エンティティを構成する責任を負う。この特定のMFEのセット(すなわち、MFEが動作するハイパーバイザ)は、いくつかの実施形態では、ネットワーク管理者によって割り当てられる。代替的に、または結合的に、いくつかの実施形態では、CCPノードが管理するハイパーバイザのセットは、マネージャコンピュータまたはシャーディングコントローラによって自動的に割り当てられ、CCPノードのワークロードに基づく。
従って、ユーザが特定のGRNにおける所望の論理オブジェクトの実現状態を求める(すなわち、ユーザが特定のGRNまで実現状態についてMPに問い合わせる)場合、いくつかの実施形態のCCPクラスタは、特定のGRNまで全ての論理エンティティの状態を返すことによって応答する。応答において、CCPクラスタは、論理エンティティをまだ実現していない任意のMFE(例えば、MFEを実行するハイパーバイザ)を含める。例えば、ハイパーバイザのサブセットに配布された分散ファイアウォール(DFW)のルール(すなわち、ファイアウォールのルールが依存する論理スイッチおよびルータが及ぶハイパーバイザのサブセット)に対して、CCPノードは、問い合わせに対する返信において、論理フォワーディング要素を実装するハイパーバイザのサブセットの状態を含める。いくつかの実施形態では、CCPノードは、返信において、論理エンティティが実現されていないハイパーバイザのみを含める。
図3は、分散ファイアウォールルールを生成し、ファイアウォールルールの実現状態を(例えば、管理プレーンを介して)制御プレーンに問い合わせる例を示す。図は、ユーザ310が(例えば、API呼び出しを介して)2つの論理スイッチを作成し、その後に論理スイッチに依存する論理ファイアウォール320を作成することを示す。より具体的には、ユーザは、第1の論理スイッチLS1、第1の論理スイッチ用の第1の論理ポートLP1、第2の論理スイッチLS2、第2の論理スイッチ用の第2の論理ポートLP2、および論理ファイアウォールFWを作成した。次に、ユーザは、論理スイッチLS1から論理スイッチLS2への任意のネットワークトラフィックをブロックすべきことを指定するファイアウォールルール320をファイアウォールFWに追加した。図示されるように、ファイアウォールルール320は、論理スイッチLS1の送信元アドレス(例えば、IPアドレス)とLS2の宛先アドレスとを有する任意のパケットがシステム内でブロックされるべきであることを指定する。
ユーザは、この時点で(すなわち、ファイアウォールルールが追加された後)、論理ファイアウォールがシステム内で実現されているかどうかを判定できるようになることを望む。図示された例が示すように、単一の分散ファイアウォール(DFW)ルールの実現は、多くの論理スイッチ、それらのポート、および図示されていない他のネットワーク要素(例えば、論理ルータへの接続、論理ルーターポートに構成されるIPプレフィックス、スプーフィングガード構成、コンテナ構成等)に依存してもよい。このように、DFWルールの実現の状況を識別するために、ユーザは、ルールが依存する全ての論理エンティティの実現状態を判定するために、DFWルールの作成後にGRNについて問い合わせることができる。
この例では、管理プレーンは、それぞれの状態更新の後にGRN値をインクリメントする。したがって、各所望の状態の公開後に、GRNの新しいインクリメントされた値も制御プレーンに公開される。すなわち、インクリメントされた値G1、G2、G3、およびG4は、それぞれ論理エンティティLS1、LP1、LS2およびLP2に関連付けられる。しかし、論理ポート330上のバツ印が示すように、ファイアウォールルールが依存するすべての論理エンティティは、論理ポートLP2を除いてシステム内で実現される。このように、ユーザ310がGRNがG4におけるファイアウォールFWの実現状態をシステムに問い合わせる場合、いくつかの実施形態では、管理プレーンは、論理ポートLP2が実現されていない唯一の論理エンティティであることを示すことによって応答する。
いくつかの他の実施形態は、それらが実現状態のレポートを提供する場合に、そのような粒度のレベルを提供しない。代わりに、そのような実施形態のいくつかは、1つ以上の論理エンティティが適切に実現されていない物理ノード(例えば、ホストマシン、ゲートウェイマシン等)に関する情報を提供する。図示した例では、DFWルールの実現状態が問い合わせられた場合、いくつかの実施形態は、実現されていない論理ポートLP2を実装する1つ以上の物理ノード(すなわち、1つ以上のMFE)を識別するレポートを提供する。以下においてより詳細に説明するように、論理要素は制御プレーンに公開され得るが、論理エンティティを実装する物理ノードのセット内の1つ以上の物理ノードでは実現されない。すなわち、上述したように、論理エンティティは、いくつかの異なる物理ノード(すなわち、物理ノード上で実行するいくつかの異なるMFE)に及ぶ。したがって、論理エンティティは異なる物理ノードにプッシュされてもよいが、物理ノードのサブセットでは実現されない。いくつかの実施形態は、論理エンティティが適切に実現されていない物理ノードのサブセット(および/またはノードのサブセットで実行されるMFE)のみをレポートする。
いくつかの実施形態では、管理プレーンが特定の論理エンティティが実現されていないとレポートした場合、そのようなレポートは必ずしも論理エンティティが失敗した(そして例えば再生成されるべきである)ことを意味しない。いくつかの実施形態は、論理エンティティの実現処理が特定の時点で制御プレーンによって完了されていないため、その時点で単に論理エンティティが実現されないことを報告する。したがって、後にユーザーが新らたなGRNを用いてシステムに問い合わせた場合、以前には実現されていないとレポートされた同一の論理エンティティは、新らたな問い合せへの応答において実現されたとして示され得る。
上述の例では、各API呼び出しの後に(すなわち、各論理エンティティが生成されて制御プレーンに公開された後に)GRNがインクリメントされるが、いくつかの実施形態では、論理エンティティが生成された後に、ユーザが手動でGRNをインクリメントすることができる。例えば、論理的な変更を実装するために100のAPI呼び出しを必要とする論理的変更(例えば、データセンタへのアプリケーションのプロビジョニング)をユーザが行う場合、ユーザは20番目或いは37番目の呼び出しの実現状態に関心はないであろう。ユーザは、おそらく、アプリケーションの実現状態(すなわち、100回のAPI呼び出しのすべてが行われた後の実現状態)に関心を持つであろう。この種の状況では、個々のAPI呼び出しの後にGRNをインクリメントするシステムの代わりに、またはこれに関連して、ユーザが最後のAPI呼び出しの後にGRNをインクリメントする。換言すれば、GRNを手動でインクリメントする行為は、論理的な変更の実現状態を追跡するために使用することができるGRN値をユーザが受け取ることを可能にする。
上述したように、いくつかの実施形態では、GRN値を異なる方法でインクリメントすることができる。いくつかの実施形態では、GRNは、周波数(例えば、ミリ秒で定義される)を使用して周期的に自動的にインクリメントされる。そのようないくつかの実施形態では、各インクリメントの後に、CCPクラスタが管理プレーンによって管理される最新のバリア番号(すなわち、GRN)を追跡することができるように、要求がすべてのCCPノードに送信される。代替的に、または結合的に、いくつかの実施形態は、GRNの強制インクリメント(すなわち、手動インクリメント)を可能にする。すなわち、ユーザは、(例えば、REST API呼び出しなどのAPI呼び出しを用いて)GRNを手動でインクリメントすることもできる。いくつかの実施形態では、GRNを手作業でインクリメントし、同時に最新のGRN値を識別するために、特定のGRNのインクリメント関数がユーザによって呼び出され、この関数はGRN値をインクリメントして、同時にインクリメントした値をユーザに返す。
いくつかの実施形態は、それぞれの所望の状態更新の後にGRNをインクリメントする。すなわち、いくつかの実施形態は、論理エンティティの生成、修正、または削除のための新たなAPI呼び出しが受信されるたび、および、生成された論理エンティティが実現のためにCCPクラスタに送信された後に、GRNをインクリメントする。例えば、論理スイッチのAPI呼び出し(例えば、REST API呼び出しのPOST/PUT/DELETE)が受信されると、GRNがインクリメントされ、論理スイッチメッセージがCCPクラスタに公開された後に制御クラスタに送信される。このGRN生成の方法では、CCPクラスタは、所与のGRNに基づいて論理スイッチの実現状態を返す良好な位置にある。
いくつかの実施形態は、各所望の状態更新の後に、上記で説明した方法とは異なる方法でGRNをインクリメントする。すなわち、いくつかの実施形態は、論理エンティティの生成、修正、または削除のための新たなAPI呼び出しが受信される直後、および生成された論理エンティティが実現のためにCCPクラスタに送信される前に、GRNをインクリメントする。しかしながら、GRN生成のこのような方法では、CCPクラスタは問い合わせた論理エンティティの実現状態を判定することができず、それ自体、論理エンティティの実現状態が進行中であるか、代替的に論理エンティティがまだ実現していないとレポートする。いくつかの実施形態は、上記の方法のうちの2つ以上の組み合わせを同時に用いるが、他の実施形態では、ユーザは、(例えば、異なるクラスタごとに)1つ以上のGRN生成方法を選択することができる。
いくつかの実施形態では、GRNは、API呼び出しごとに正確に1回だけインクリメントされる必要はない。例えば、2人のユーザ(例えば、データセンタの2つのテナント、同じテナントの2人のネットワーク管理者など)がDFW構成を変更し、その後、GRNをインクリメントするために(例えば、閾値期間内に)API呼び出しを発行する場合、いくつかの実施形態は、GRN値を1回だけインクリメントし、両方のユーザに同じ数を返す。この種の緩和は、そのようないくつかの実施形態において、GRNに課される同時修正の例外を制限することを可能にする。
更に、いくつかの実施形態では、GRNは、一度に1つの値を含む変数である必要はない。GRNの変数は、いくつかの実施形態において、数字のベクタ(配列)である。例えば、いくつかの実施形態のGRNは、すべての論理スイッチに1つの要素(数)、すべての論理スイッチポートに1つの要素、すべての論理ルータに1つの要素などを有する配列である。これらの実施形態では、GRNに対する1つの単一の値の代わりには値の配列を有することで、より高い伝送コストおよびわずかに高い複雑さを犠牲にして、より高い同時実行性をもたらす。
図4は、いくつかの実施形態におけるGRNを更新(インクリメント)する1方法を示す。図示される方法は、所定の時間間隔(例えば、10秒毎)でGRN値を自動的に更新する。いくつかの実施形態では、各更新の間の期間は(例えば、ネットワーク管理者、オペレータなどによって)調整可能である。この図は、1つ以上の論理エンティティがこれらの時点の間に更新される(または時間間隔の間に論理エンティティが作成または更新されない)が、異なる時点で管理プレーン(例えば、中央管理プレーン(CMP)クラスタ)がGRNをインクリメントし、インクリメントされた値を制御プレーン(例えば、CCPクラスタ)に公開することを示す。
この図に示すように、時間インスタンスT1において、管理プレーン410は、論理スイッチLS1を制御プレーン420に公開する。時間インスタンスT2(例えば、T1の5秒後)に、管理プレーンは、GRN値1を有するGRNを制御プレーンに公開する。次に、管理プレーンは、時間インスタンスT3(例えば、T2の5秒後)に第2の論理スイッチLS2を公開する。しかしながら、第2の論理スイッチを公開した後、管理プレーンはGRNをインクリメントせず、代わりに、図示のように、(時間インスタンスT4において)論理ルータLRを制御プレーンに公開する。これは、時間T3から5秒後である時間T4におけるGRN更新時間にはまだ達していない(この例の時間間隔は15秒ごとに設定されている)ためである。
T4の5秒後である時間インスタンスT5において、管理プレーンは、T2(最後のGRNが更新される)と最初にGRNの公開時間として設定されたT5の間の時間間隔が15秒であるため、制御プレーンにGRNの新たな値G2を発行する。その後、時間T6において、管理プレーン410は、以前に生成された論理エンティティ(すなわち、論理ルータLR)に対する変更を制御プレーン420に発行する。時間T7では、制御プレーンと管理プレーンとの間にトランザクションは存在しない。これは、この時点では、ユーザまたは管理プレーンが何らの論理エンティティも変更または生成しておらず、同時に、T7が最後のGRN更新のわずか10秒後であるため、それゆえこの時点でGRNも公開されるべきでない。最後に、管理プレーン410は、GRN値をG3にインクリメントし、T5(すなわちGRNがインクリメントされて公開された最後の時間)の15秒後である時点T8において、この新しい値を制御プレーン420に公開する。
上述したように、いくつかの実施形態のCCPクラスタは、ホスティングシステム(例えば、データセンタ)の1つ以上のテナントのための1つ以上の論理ネットワークを構成する1つ以上のコントローラを含む。いくつかの実施形態では、CCPクラスタ(1)は、(例えば、CMPクラスタからの)論理ネットワークを定義するデータを受信し、(2)(例えば、対応するローカルコントローラのセットを介して)MFEのセットからランタイムデータを受信し、(3)受信した定義及びランタイムデータに基づいて、論理ネットワークのための論理フォワーディング要素のセットのフォワーディング動作を定義する構成およびフォワーディングデータを計算し、(4)計算されたデータをホストマシンのセット上で動作するローカルコントローラのセットに配信する。
いくつかの実施形態では、各ローカルコントローラは、管理されたフォワーディング要素と共に、論理ネットワークの1つ以上のDCNを実行するホストマシン上(たとえば、ホストマシンの仮想化ソフトウェア内)に存在する。異なるホストマシン上で動作する論理ネットワークのDCNは、論理フォワーディング要素のセット(例えば、論理スイッチ、論理ルータなど)を介して、互いに論理的に(および他の物理または論理ネットワークに)接続する。
いくつかの実施形態では、各ローカルコントローラは、CCPクラスタから論理ネットワークデータを受信した後に、ローカルコントローラと同じホストマシン上に存在するMFEのフォワーディング動作を定義する構成およびフォワーディングデータを生成する。次に、ローカルコントローラは、生成されたデータを同一のホストマシン上で動作するMFEに配信する。MFEは、ローカルコントローラから受信した設定およびフォワーディングデータに基づいて、論理フォワーディング要素のセットを実装する。各MFEはいくつかの異なるDCNに接続され、その異なるサブセットは異なるテナントの異なる論理ネットワークに属してよい。したがって、MFEは、異なる論理ネットワークに対して論理フォワーディング要素の異なるセットを実装することができる。
図5は、中央管理プレーンクラスタと、中央制御プレーンクラスタと、ホスティングシステム(例えばデータセンタ等)内のホストマシンのセットとの間の関係を概念的に示す。この図は、中央制御プレーン(CCP)クラスタが、どのように、中央管理プレーン(CMP)クラスタから論理ネットワーク定義(例えば、論理トポロジ)およびGRNを受信し、要求されたフォワーディングおよび構成データをホストマシンのセットに公開するかを示す。公開された構成およびフォワーディングデータは、論理ネットワークの論理エンティティ(例えば、論理フォワーディング要素)を構成および実装するために、管理フォワーディング要素のセットがホストマシン上で動作することを可能にする。
図5は、CMPクラスタ515、CCPクラスタ520、および2つのホストマシン535および540を含む。図に示すホストマシンは、管理フォワーディング要素545(すなわちMFE1−2)およびデータ計算ノード550(すなわちMV1−4)を含む。いくつかの実施形態では、MFE545は、ホストマシン535および540の仮想化ソフトウェア(たとえば、ハイパーバイザ)に実装される(ハイパーバイザは、説明を簡単にするために図示されていない)。CMPクラスタ515は、中央マネージャ525のセットを含む一方で、CCPクラスタ520は中央コントローラ530のセットを含む。各ホストマシンはまた、(例えば、ホストマシンのハイパーバイザ内の)MFE545とともに動作し、論理ネットワークの論理エンティティを実装するために関連付けられたMFEを構成しおよび管理するローカルコントローラ560を含む。
マネージャ525およびコントローラ530の各々は、物理コンピューティングデバイス(例えば、サーバ、コンピュータ等)、仮想マシン(VM)、コンテナなどのデータ計算ノード(DCN)、または物理的コンピューティングデバイスまたはDCN上で動作するソフトウェアインスタンス(またはプロセス)を含む。いくつかの実施形態では、マネージャは、ホスティングシステム内の1つ以上の論理ネットワークの管理、構成、監視、およびトラブルシューティングのための異なるユーザインタフェースアプリケーションを含む。いくつかの実施形態の1つ以上のコントローラのサブセットは、論理ネットワークの論理要素を実装する異なる管理フォワーディング要素(MFE)の間のデータ通信を制御する。
上述したように、中央制御プレーン(CCP)クラスタ520は、MFE545間のデータ通信を制御することによって、論理ネットワークの異なるDCN間(例えば図示の例ではVM550のいくつかの間)のネットワークデータ通信を制御する。CCPクラスタ520は、MFEが最終的にDCN間で論理ネットワークデータを交換する仮想トンネルエンドポイント(VTEP)を実装するので、MFE間のデータ交換を制御するためにMFE545と通信する。データ交換を制御するために、いくつかの実施形態のCCPクラスタは、各MFEから論理ネットワークエンティティ(例えば、VM550、論理ネットワークのLFEなど)のランタイムデータを受信する。CCPクラスタ520はまた、論理ネットワークのデータ通信を制御するために、CMPクラスタ515から論理トポロジデータを受信し、ランタイムデータとともに定義データを使用する。
すなわち、CCPクラスタは、MFE(例えば、ローカルコントローラ560を介して)から受信したランタイムデータと、CMPクラスタから受信したネットワーク定義データ(すなわち、所望の状態)とに基づいて、 MFEにプッシュされて、(例えば、ローカルコントローラ560を介して)MFEと共有されるデータのセット(すなわち変換された/共有された状態)を生成する。いくつかの実施形態では、CCPクラスタは、変換された状態を生成するために、CCPクラスタ(例えば、シャーディングテーブル)によって生成され格納される他のデータを使用する。変換された状態は、MFEが実装する1つ以上のLFEによって論理的にフォワードされる、データを物理的に交換するために、MFEによって使用される。
典型的な論理ネットワーク定義データは、いくつかの実施形態では、DCNの位置(例えば、ホストマシン上のVMの位置)を定義するデータ、トポロジ内のDCNとLFEの位置との間の接続トポロジを定義するデータ、 LFE(例えば、分散型ファイアウォールポリシ)に適用されるミドルボックスサービスを定義するデータ等を含む。典型的なランタイムデータは、いくつかの実施形態では、仮想トンネルエンドポイント(VTEP)テーブル、メディアアクセス制御(MAC)テーブル、アドレス解決プロトコル(ARP)テーブルなどのレイヤ2制御プレーンテーブルや、ルーティング情報ベース(RIB)テーブル、フォワーディング情報ベース(FIB)テーブルなどのレイヤ3ルーティングテーブルや、MFEから収集された統計データ等を含む。
いくつかの実施形態では、ホストマシンの各ハイパーバイザのローカルコントローラ560は、CCPクラスタ520の中央コントローラ530から論理ネットワークデータを受信する。次に、ローカルコントローラは、ローカルコントローラーが動作するのと同一のホストマシン上で動作するローカルMFE545のために受信した論理ネットワークデータを変換し、カスタマイズする。次に、ローカルコントローラは、変換され、カスタマイズされたデータを各ホストマシン上のローカルMFE545に配信する。いくつかの実施形態では、エンド・マシンのLFE(例えば、論理スイッチ)への接続は、MFEの物理ポートにマップされる論理ポートを使用して定義される。
上述したように、いくつかの実施形態では、論理ネットワークのLFE(論理ルータおよびスイッチ)は、論理ネットワークに接続された各MFEによって実装される。すなわち、いくつかの実施形態では、MFEがDCNからパケットを受信すると、MFEは、DCNが論理的に結合する論理スイッチのためのネットワークフォワーディング処理と、任意の追加的なLFEに対する処理(例えば、パケットが外部ネットワークに送信される場合の論理ルータ処理、論理ルータ処理、およびパケットが他の論理スイッチに結合されたエンドマシン(DCN)に送信される場合のネットワーク内の他の論理スイッチに対する処理)とを実行する。CMPクラスタ515が生成し、CCPクラスタ520に公開するGRNは、システムが、MFEが実装する論理フォワーディング要素(および他の論理エンティティ)がMFE内で適切に構成されているかどうかを判定できるようにする。すなわち、GRNは、システム(またはユーザ)が、1つ以上の論理ネットワークに対して定義された論理エンティティがシステム内で実現されているかどうかを判定できるようにする。
当業者であれば、図に示すホストマシン、中央マネージャおよび中央コントローラ、および仮想マシンの数は例示的であり、ホスティングシステムのテナントのための論理ネットワークは、多数のホストマシン(およびサードパーティのスイッチ)に広がり、多数のDCNを論理的に相互に(および他のいくつかの物理デバイス)接続してもよいことを理解するであろう。更に、この図および以下の他の図においてVMとして示すが、いくつかの実施形態において、他の種別のデータ計算ノード(例えばネームスペース、コンテナ等)が論理フォワーディング要素と接続することが理解されるべきである。
いくつかの実施形態は、クラスタリングイベント、スライス再割り当てを識別するため、またはMPデータベースがインストールおよび/または復元されたときに、(例えば、GRN変数内の)世代番号を提供する。クラスタリングイベントは、いくつかの実施形態において、クラスタの現在のワーキングセットを変更する、CCPクラスタ内の変化または修正を含む。たとえば、クラスタリングイベントは、CCPクラスタ内の1つのコントローラがクラッシュする、またはクラスタへの接続が失われるときに発生する。また、クラスタリングイベントは、ネットワーク管理者が既存のコントローラを削除する、または新しいコントローラをCCPクラスタに追加するときに発生する。
スライスの移動は、クラスタの特定のコントローラに割り当てられたワークスライスが別のコントローラに再割り当てされたとき、または、一般に、コントローラに割り当てられたワークスライスに変更があるときに発生する。いくつかの実施形態では、各コントローラに割り当てられたワークロードは、異なる目的のために実行される異なるワークスライスを含む。たとえば、コントローラは、2つの異なる論理ネットワークに属する2つの異なる論理エンティティのセットに対する構成およびフォワーディングデータを計算するために割り当てられてよい。このような状況では、コントローラは、第1のワークスライス内の第1の論理ネットワークのためのデータと、第2の異なるワークスライス内の第2の論理ネットワークのためのデータとを計算する。コントローラ上のワークロードが重くなった場合、いくつかの実施形態では、ワーク分散プロシージャがアクティブになり、1つ以上のワークスライスを別のコントローラに移動する。したがって、クラスタリングイベントがない場合(すなわち、コントローラ自体に変更がない)であっても、クラスタ上のワーク割り当てが変更され、新しい世代番号が必要となる。
MPは、すべての論理ネットワークについて所望の状態のすべてを格納するので、いくつかの実施形態は、事故の場合に、ある時間間隔でMPをバックアップする。事故が発生した場合、ネットワークのオペレータは最新のバックアップのスナップショットをMPにコピーする。この種のイベントは、MPデータベースの復元と呼ばれ、新しい世代番号も必要とする。したがって、いくつかの実施形態では、世代番号は、クラスタリングイベントまたはスライス再割り当てが起こるたびに、または管理プレーンデータベースがインストールされまたは復元されるたびにインクリメントされる。いくつかの実施形態では、このようなインクリメントは、(例えば、新たなクラスタリングイベントのそれぞれにより)自動的に生じる。いくつかの実施形態では、ユーザは(例えば、MPデータベースのバックアップバージョンが復元されたときなど)世代番号を(手動で)インクリメントすることができる。
いくつかの実施形態では、MPは、世代番号が全てのCCPノード間で同期されることを確実にするために、(例えば、リモートプロシージャ―コールを介して)CCPクラスタに問い合わせる。このようないくつかの実施形態では、各CCPノードは、最新の世代番号を有するクエリに応答する。世代番号が全ての応答にわたって同一でない場合、MPは、最近起こったクラスタリングの変更がまだCCPノードのいくつかで処理されていないと結論付けることができる。いくつかの実施形態では、世代番号は、GRNとは別個の変数である。しかしながら、いくつかのこのような実施形態では、各世代番号はGRNに関連付けられる。いくつかの実施形態では、ユニバーサル固有識別子(UUID)は、世代番号とGRNの両方を含む(例えば、GRNと世代番号の両方が単一の64ビットUUIDに符号化されてよく、ここでトップ16ビットは世代番号を保持し、下位48ビットはGRNを保持する)。
いくつかの実施形態では、管理プレーンは、所望の状態バージョン番号(すなわち、GRN)のコンテキスト内で所与のエンティティ(またはエンティティのセット)の実現状態をユーザが問い合わせることができるようにするGRNインタフェースをユーザに提供する。そのようないくつかの実施形態の各CCPノードは、次に、実現状態メッセージ(またはタイムアウトに達するメッセージ)とともにこのクエリに応答する。1つ以上のCCPノードが応答しない場合、いくつかの実施形態の管理プレーンは、予め設定された回数だけ再試行し、CCPノードから依然として応答がない場合、エラーメッセージまたは(CCPノードが応答しないことを示す)利用不可メッセージのいずれかを返す。いくつかの他の実施形態の管理プレーンは、CCPノードのいくつかがユーザから提出されたクエリに応答しない場合、ユーザのクエリに対してエラーメッセージまたは利用不可メッセージを返す。
一方、すべてのCCPノードが応答するが、世代番号がすべての応答にわたって同じでない場合、いくつかの実施形態の管理プレーンは、最近起こったいくつかのクラスタリングの変化(例えば、クラスタリングイベント、スライス移動等)がいくつかのCCPノードによってまだ処理されていないと結論づける。いくつかの実施形態では、MPが、ユーザAPI呼び出しの実現の失敗を示すメッセージと共に応答する一方で、いくつかの他の実施形態では、MPは、失敗の実現メッセージを返す前にCCPクラスタに再度1回以上問い合わせる。世代番号がCCPクラスタ全体で同一である場合、MPはCCPノードから受信したすべての応答の実現状態を評価し続けることができる。
実現メッセージの少なくとも1つが成功を示さない場合、いくつかの実施形態のMPは、対応するCCPノードが指定された所望の状態バージョンまたは対応するランタイム状態バージョンを処理していないことを認識する。この場合、MPは応答におけるMFE状態を調べずに、実現が進行中である(または対応するコントローラがまだ論理エンティティを処理していない)ことをユーザに返信する。後述されるように、いくつかの実施形態のCCPクラスタノードは、実現状態に対する問い合わせされたときに、まだ論理エンティティを実現していないMFEをMPに返す。
いくつかの実施形態では、CCPクラスタからのすべての応答における実現状態が成功を示す場合、いくつかの実施形態のMPは、CCPクラスタが失敗した実現状態を返したMFE状態を調べる。すなわち、いくつかの実施形態では、CCPクラスタから受信した実現状態応答は、所望の状態に対して適切に実現されていないMFEを識別する1つ以上の特定のフィールドを含む。いくつかのそのような実施形態では、CCPクラスタからの応答が任意のMFEに対する不成功の実現メッセージを搬送しない場合、MPは、クエリで指定されたGRN値までのすべての論理エンティティが実現され、適切に動作していることを意味する、成功の実現メッセージを返す。
図6は、特定のGRNについてCCPクラスタに問い合わせ、処理がCCPクラスタから受信する応答に基づいて論理エンティティの実現状態をレポートする、いくつかの実施形態の処理600を概念的に示す。いくつかの実施形態では、処理は、マネージャコンピュータまたはマネージャコンピュータ上で動作するマネージャアプリケーションによって実行される。いくつかのそのような実施形態のマネージャコンピュータ(またはアプリケーション)は、1人以上のユーザ(例えば、データセンタの異なるテナント)のための物理ネットワーク基盤(例えば、データセンターネットワーク)上に1つ以上の論理ネットワークを生成し管理する。
処理600は、特定のGRN値に関連付けられた1つ以上の論理エンティティ(例えば、論理スイッチ、論理ルータ、論理ファイアウォール、論理ロードバランサ等)の実現状態について、CCPクラスタのコントローラ(コンピュータおよび/またはアプリケーション)に問い合わせる(610において)ことによって開始する。いくつかの実施形態では、処理は、ユーザがCCPクラスタから問い合わせるべき論理エンティティおよびGRN値を指定する、ユーザ(例えば、データセンターのネットワーク管理者)からのクエリを受信する。いくつかの実施形態では、ユーザは、管理プレーンに提出されるクエリ内のGRN値のみを指定し、そして、処理は、生成されてCCPクラスタに公開された論理エンティティの全ての実現状態について問い合わせる。
次に、処理は、問い合わせに対する応答がCPPクラスタにわたって同じ世代番号を含むかどうかを(620において)判定する。上述したように、CCPクラスタの最近の変化(例えば、クラスタリングイベント、ワークスライスの移動等)のために、1つ以上のクラスタノードは、他のノードとは異なる世代番号を有してもよい。したがって、応答における実現状況は信頼されるべきではない。処理がコントローラの世代番号に相違があると判定した場合、いくつかの実施形態の処理は、応答の更なる検査を先送りして(625において)失敗メッセージをユーザに返す。いくつかの実施形態では、メッセージは実現の失敗を示さず、単純にクラスタリングイベントのために問い合わせを後で送信すべきであることを示す。さらにいくつかの他の実施形態では、処理は、障害および/または進行中のメッセージを返す前に、数回にわたって(例えば、ユーザによって設定および調整可能な回数)CCPクラスタに問い合わせを自動的に再試行する。メッセージを返信した後、処理は終了する。
処理は、問い合わせへの応答がCCPクラスタにわたって同じ世代番号を含むと(620において)判定した場合、処理は、すべての応答における実現状態が、論理エンティティの所望の状態およびそれらの対応するランタイム状態に基づいてコントローラが適切に構成およびフォワーディングデータを計算した、ことを示すかどうかを(630において)判定する。換言すれば、処理は、すべてのコントローラが、(1)管理プレーンから受信した1つ以上の論理エンティティの所望の状態とMFEから受信した同じ論理エンティティの対応するランタイム状態とを処理したかどうかを判定し、(2)処理されたデータをMFEに(例えば、MFEの対応するローカルコントローラを介して)プッシュダウンして、論理エンティティを実装したかを判定する。
処理が、1つ以上のCCPノードが構成データを処理し、その構成データを成功裏に配信しなかったと(630において)判定した場合、処理は、まだデータを処理していないコントローラのレポートを(635において)返す。いくつかの実施形態の処理は、レポートにおいて、これらのコントローラが依然として論理エンティティを実現する処理中にあることを示す。いくつかの実施形態では、処理は、コントローラのいくつかが依然としてデータを処理中であるというメッセージを返す前に、すべてのコントローラが論理エンティティを実現したかどうかを判定するための更なるいくつかの試みを行う。レポートを返信した後、処理は終了する。
処理が、コントローラから受信したすべての応答の実現状態が、コントローラが構成およびフォワーディングデータを適切に計算したことを示すと判定した場合、処理は、すべての応答の実現状態が、論理エンティティを実装するために、CCPクラスタから受信した構成およびフォワーディングデータに基づいてローカルコントローラがMFEを適切に構成したことを示すかどうかを(640において)判定する。いくつかの実施形態では、各コントローラは、コントローラが論理エンティティの構成データを生成し、対応するMFEにデータをプッシュしたことを(例えば、コントローラが生成する応答の1つ以上のフィールドを通じて)示すだけでなく、(応答内に生成された別のフィールドのセットを通じて)MFEがまだ論理エンティティ(存在する場合)を実装するように構成されていないことも示す。
すなわち、CCPクラスタのコントローラが、(MPから)論理エンティティの実現状態に対する要求を受信すると、コントローラは、まずコントローラが保持する最新の世代番号を識別し、識別された世代番号を要求に対する実現応答に挿入する。次に、コントローラは、管理プレーンから受信した論理エンティティ定義データを、MFEから受信した論理エンティティのランタイムデータと共に、コントローラが処理したかどうかを判定する。コントローラがこれらのデータ(すなわち、生成された論理エンティティの構成データおよびフォワーディングデータ)を正常に処理し、処理されたデータをホストマシンのセット上で実行されている対応するローカルコントローラのセットに配信した場合、コントローラはまた、実現応答に成功メッセージを挿入する。
最後に、いくつかの実施形態のコントローラはまた、論理エンティティがコントローラが管理する対応するMFE上で(ローカルコントローラによって)正常に構成されているかも判定する。コントローラは、論理エンティティがまだ構成されていない1つ以上のMFEを識別した場合、まだ論理エンティティが構成されていないMFE(MFEの識別子)を実現応答に挿入する。
処理は、1つ以上のコントローラから受信した1つ以上の応答の送信実現状態が、ローカルコントローラのいくつかが依然として対応するMFEを構成中であることを示すと判定した場合、処理は、いくつかのMFEが論理エンティティをまだ実現していないことを(645において)レポートする。いくつかの実施形態の処理は、レポートにおいて、MFEが依然として論理エンティティを実現する処理中(構成中)にあることを示す。前の動作と同様に、いくつかの実施形態では、処理は、ローカルコントローラのいくつかが依然としてMFEを構成中であるというメッセージを返す前に、ローカルコントローラの全てがMFE上に論理エンティティを構成したかどうかを判定するための更なるいくつかの試みを行う。レポートを返信した後、処理は終了する。
一方、処理が、すべての応答の実現状態が、論理エンティティを実装するためにローカルコントローラがすべてのMFEを適切に構成したと(640において)判定した場合、処理は、問い合わせたGRNにおいてすべての論理エンティティがネットワーク内で正常に実現されていることのメッセージを(650において)返す。その後処理は終了する。
上記の動作の多くは、ユーザがシステムに問い合わせる論理エンティティのセット内の最後の論理エンティティの作成および/または変更の後にユーザが受け取るGRN値を用いて、ユーザが管理プレーンに問い合わせるという前提に基づいて記載されていることに注意することが重要である。したがって、いくつかの動作は、進行中(データを処理している)メッセージを返すものとして記載される。ユーザが論理エンティティの最後の変更の前に生成された以前のGRN値を用いてシステムに問い合わせる場合、いくつかの実施形態の処理は、論理エンティティが以前のGRN値で実現されなかったことを最初の応答が示す場合に、CCPクラスタに再度問い合わせる努力を行わないことを理解されたい。
更に、処理600の特定の動作は、図示及び説明された正確な順序で実行されないかもしれない。特定の動作は、1つの連続する動作の流れで実行されないかもしれず、異なる特定の動作が異なる実施形態において実行され得る。例えば、いくつかの実施形態では、CCPノードから受信した応答の世代番号を検査する前に、まずすべてのコントローラが問い合わせに応答したことを確認する。いくつかのこのような実施形態は、1つ以上のCCPノードが問い合わせに応答しないときにエラーメッセージを返す。いくつかの他の実施形態は、すべての単一クラスタノードからの応答を取得しようとする間に、短時間でCCPクラスタに再び問い合わせる。すべてのクラスタノードが返信を送信した後でのみ、これらの実施形態は、論理エンティティの世代番号および実現状態に関する応答を検査することを開始する。最後に、当業者は、処理600がいくつかのサブプロセスを使用して、またはより大きなマクロプロセスの一部として実施され得ることを認識するであろう。
図7は、特定のGRNまでの1つ以上の論理エンティティの実現状態に関するクエリを受信した後に、いくつかの実施形態の制御プレーンが返す応答の例を示す。この図は、2つの別個の段階705および710において、制御プレーンが、生成されたおよび/またはGRNの特定の値まで変更された、すべての論理要素の実現状態をCCPクラスタに問い合わせることを示す。この図は、(例えば、CMPクラスタ内の)マネージャ720、(例えば、CCPクラスタ内の)2つのコントローラ730、および(例えば、4つの異なるホストマシン(図示せず)内)の4つのローカルコントローラ740を含む。
第1段階705では、マネージャ710は、生成された、および/またはGRN=10まで変更されたすべての論理要素の実現状態に対する要求を送信した。マネージャは、4つのローカルコントローラ740が動作する4つのホストマシン(すなわち、ホストマシン上のハイパーバイザ)上の論理エンティティの構成に責務を負う、2つのコントローラ730に問い合わせる。図示するように、CCPクラスタのコントローラ1は、ローカルコントローラLC1およびLC2の構成およびフォワーディングデータの生成に責務を負う一方、コントローラ2は、ローカルコントローラLC3およびLC4の構成およびフォワーディングデータの生成に責務を負う。各ローカルコントローラ640は、ローカルコントローラと同一のハイパーバイザ上で動作するMFEの共通フォワーディング動作を定義するデータを、CCPクラスタ内のその対応するコントローラから受信する。各ローカルコントローラは、次に、論理エンティティを実装するためにその対応するMFEに固有の構成およびフォワーディングデータを生成し、生成したカスタマイズされたデータをMFEに配信する。
第2段階は、2つのコントローラ730が、2つの異なる世代番号(すなわち、Gen#2およびGen#3)をマネージャ720に返すことを示す。上述したように、マネージャがCCPクラスタから受信した応答において異なる世代番号を持つ異なる理由が存在し得る。例えば、CCPクラスタの最近の変化(例えば、クラスタリングイベント、ワークスライスの移動等)のために、1つ以上のクラスタノードは、他のノードとは異なる世代番号を有してもよい。このように、マネージャ720は、CCPクラスタから受信した世代番号に不一致があることを認識すると、CCPクラスタから受信した、実現状態を識別するための応答をさらに調べることを停止する。いくつかのそのような実施形態のマネージャは、失敗メッセージを返すか、代替的に、最新のクラスタリングイベントが発生し、ユーザが後に論理エンティティの実現状態を問い合わせる必要があることをユーザにレポートする。
上述したように、いくつかの実施形態のCCPクラスタ(例えば、CCPクラスタ内の1つ以上のCCPノード)は、(論理エンティティの実現状態クエリに応答して)論理エンティティの実現状態についてのメッセージを返す。いくつかの実施形態では、返されるメッセージは、成功メッセージ、不成功メッセージ、または進行中メッセージであり得る。成功状態は、いくつかの実施形態では、CCPクラスタが受信した所望の状態を処理したこと、および、処理したデータをローカル制御プレーン(例えば、同じホストマシン内のMFEと並んで動作する1つ以上のローカルコントローラ)にプッシュしたことを示す。いくつかの実施形態では、MPがGRNをインクリメントするたびに、MPはインクリメントされたGRNをCCPクラスタと同期させる。いくつかの実施形態では、コントローラノードの1つ(例えば、シャーディングマスタコントローラ)が、同じGRNを、CCPクラスタのコントローラに保持されている現在のランタイム状態に割り当てる。いくつかの実施形態では、CCPクラスタが、特定のGRN値に対する論理エンティティの所望の状態と対応するランタイム状態の両方を処理した場合、GRNの特定の値に対する実現状態は成功したと考慮される。
いくつかの実施形態では、成功メッセージは、論理エンティティの所望の状態(および対応するランタイム状態)がCCPクラスタによって処理されそして公開されたことだけでなく、論理エンティティが論理エンティティを実装する1つ以上のMFE(ホストマシンまたはゲートウェイ上で動作する)上で成功裏に構成されたことを示す。例えば、いくつかのこのような実施形態では、論理スイッチの実現状態に対する成功応答は、論理スイッチを実装する1つ以上のMFE(例えば、1つ以上のホストマシンのハイパーバイザで)が、論理スイッチと論理的に接続される1つ以上の仮想マシンと成功裏に接続されることを意味する。さらにこのことは、MFEが、論理スイッチについて、制御プレーン(例えば、論理スイッチのマスタコントローラ)および管理プレーン(例えば、論理スイッチのマスタマネージャ)とアクティブな通信を有することを意味する。
いくつかの実施形態では、MPがGRNをインクリメントするたびに、MPはインクリメントされたGRNをCCPクラスタと同期させる。いくつかの実施形態では、コントローラノードの1つ(例えば、クラスタ内のシャーディングコントローラ)は、同じGRNを、MFEから論理エンティティのために受信され、かつCCPクラスタのコントローラに保持されていた、現在のランタイム状態に割り当てる。いくつかの実施形態では、CCPクラスタが、特定のGRN値における論理エンティティの所望の状態と対応する論理エンティティのランタイム状態との両方を処理した場合、GRNの特定の値に対する論理エンティティのCCP実現状態は成功したと考慮される。
いくつかの実施形態では、論理エンティティの状態に対する不成功の実現応答は、異なる理由を有してよい。例えば、1つ以上のCCPノードが所望の状態更新の処理において遅れた場合、CCPノードは、所望の状態の実現不成功を返し得る。論理エンティティの所望の状態の実現不成功に対する他の理由は、1つ以上のMFEが、GRNの特定の値に対する何らかの変更の実装に失敗したことを明示的に示す場合、1つ以上のMFEが所望の状態更新頻度の維持から遅れた場合、いくつかのMFEが長時間にわたって未接続となった場合、を含む。
いくつかの実施形態は、所望の状態の実現における様々な問題の原因を識別するのに役立つトラブルシューティングのデータを提供する。いくつかの実施形態は、識別された問題の性質および場所に基づいて、問題の論理エンティティに対して異なるレベルの詳細を提供する。いくつかの実施形態は、実現された状態にならない特定の論理要素に関するトラブルシューティングのデータを提供する。
図8は、特定のGRNにおける1つ以上の論理エンティティの実現状態に関するクエリを受信した後に、いくつかの実施形態の制御プレーンが返す応答の他の例を示す。この図は、ツリーの別々の段階805、810および815において、制御プレーンが、GRNの特定の値まで制御プレーンに公開された、特定の論理要素の実現状態をCCPクラスタに問い合わせることを示す。図は、(例えば、CMPクラスタ内の)マネージャ720、(例えば、CCPクラスタ内の)2つのコントローラ730、4つのローカルコントローラ740、および4つのMFE820を含み、それぞれが、ローカルコントローラの1つ(すなわちローカルコントローラとその関連付けられたMFEの両方が、別々のホストマシンのハイパーバイザで動作する)と関連付けられる。
第1段階805では、マネージャ710は、GRN=20において論理スイッチLS1の実現状態に対する要求を送信した。マネージャは、論理スイッチLS1を実装するMFE820上の論理スイッチLS1の構成に責務を負う、2つのコントローラ730に問い合わせる。図示するように、MFE2‐4のみが論理スイッチLS1を実装する。すなわち、各ホストマシン上のエンドマシンのセットが接続するLS1の論理ポートは、MFE2、MFE3、およびMFE4でのみ実装される。換言すれば、LS1のこれらの論理ポートは、MFE2が動作するホストマシン上にあるエンドマシンのセットを、MFE3とMFE4が動作するホストマシン上にある他のエンドマシンに、論理的に接続する。反対に、MFE1は論理スイッチLS2と論理ルータLR1とを実装する。
第1段階はまた、この時点(すなわち、GRN=20)で、コントローラ730の両方の世代番号が同一であることを示している。これは、(最新のクラスタリングイベントに関して)CCPノードが同期されていることを意味し、実現判定処理は継続できる。さらに、図は、CCPクラスタのコントローラ1が、ローカルコントローラLC1及びLC2に対する、LS1、LS2およびLR1の構成およびフォワーディングデータの生成に責務を負い、一方、CCPクラスタのコントローラ2は、ローカルコントローラLC3およびLC4に対するLS1の構成およびフォワーディングデータの生成に責務を負う。図示の例では、コントローラ730の両方が、論理スイッチLS1の論理構成およびフォワーディングデータを生成と配信を行うが、いくつかの実施形態では、CCPクラスタの各コントローラが、論理エンティティの特定のセット(すなわち、いくつかの実施形態では、2つのCCPノードは同じ論理エンティティを同時に管理しない)の構成に責務を負う。
第2段階では、MFE1は論理スイッチLS1を実装しないため、CCPクラスタはこのMFE(すなわちLS1)に関連付けられているローカルコントローラに問い合わせをせず、このため、このローカルコントローラは、管理プレーンへのフォワーダになるための応答をCCPクラスタに送信しない。換言すれば、各特定のGRNにおいて、各コントローラ730は、コントローラが処理し、異なるMFEにプッシュダウンした論理要素を把握している。すなわち、各コントローラは、コントローラが管理するMFEと、コントローラが管理するMFEにどの論理要素が実装されているかを把握している。したがって、ユーザが特定のGRN(すなわち、GRN=20)で所望の論理エンティティ(すなわちこの例ではLS1)の実現状態を要求する場合、コントローラ730は、LS1の構成データがG=20までプッシュされたMFEの実現状態を要求するだけである。
第2段階はまた、論理スイッチLS1の実現状態を送信するように要求された3つのローカルコントローラのうち、ローカルコントローラLC2およびLC4が、GRN=20までの論理スイッチの状態を実現されたものとして返すことによって応答し、ローカルコントローラLC3は、LS1の状態を(まだ)実現していない状態として返すことによって応答する。MFE3上の論理スイッチLS1の実現の不成功の理由は、MFE3上でLS1を構成するためのカスタマイズされたデータを生成する際に、コントローラLC3が遅れたことであり得る。他の理由は、コントローラ2が、LS1の構成データの生成およびローカルコントローラLC3への配信において遅れたことであり得る。しかしながら、以下の第3段階で説明するように、このコントローラは、コントローラ上の論理スイッチの実現において成功メッセージを送信する。これはコントローラ2がこの例では遅れていないことを示す。
第3段階では、各コントローラ730は、論理スイッチLS1の実現において、(クエリに対する応答において)成功メッセージを送信するが、コントローラ2の成功メッセージは、(例えば、メッセージの1つ以上のフィールドに)GRN=20においてLS1の構成データをまだ処理しているローカルコントローラを含む。一方、コントローラ1は、マネージャ720に返す成功メッセージにあらゆるローカルコントローラを有しない。マネージャ720は、マネージャがCCPクラスタから受信したメッセージに基づいて、どのレベルで論理エンティティの実現が成功しなかったかを判定することができる。すなわち、CCPクラスタの両方のコントローラが成功メッセージを返す場合、マネージャは、論理スイッチLS1がCCPクラスタ内で実現されている(すなわち、スイッチの構成データが処理され、ローカルコントローラにプッシュされた)と結論付ける。しかし、1つ以上のCCPノードが、そのメッセージにおいて、いくつかのMFEが論理要素を実現していないことを示す場合、マネージャは、問い合わせられた論理エンティティの(GRN=20までの)データをまだ処理しているMFEおよびホストマシンを識別することができる。
上述の多くの特徴及び適用例は、コンピュータで読み出し可能な記録媒体(コンピュータ可読媒体としても参照される)上に記録された命令の組として特定されるソフトウェア処理として実施され得る。これらのプログラムの命令が1つ以上の計算または処理ユニットによって実行される場合(例えば、1つ以上のプロセッサ、プロセッサのコア、又は他の処理ユニット)、これらのプログラムの命令は、命令に示されているアクションを(複数の)処理ユニットに実行させる。コンピュータで読み出し可能なメディアの例は、これに限定されないが、CD−ROM、フラッシュドライブ、ランダムアクセスメモリ(RAM)チップ、ハードドライブ、消去可能なプログラム可能読出し専用メモリ(EPROM)等を含む。コンピュータで読出し可能なメディアは、キャリア波及び、無線又は有線接続を通過する電子信号を含まない。
本明細書では、「ソフトウェア」の語は、読出専用メモリにあるファームウェア、又は磁気記録に格納されたアプリケーションを含み、プロセッサによる処理のためにメモリに読み込むことができる。また、いくつかの実施形態では、複数のソフトウェア発明は、個別のソフトウェア発明を維持する一方で、より大きなプログラムのサブ部分として実施されてもよい。いくつかの実施形態では、複数のソフトウェア発明はまた、個別のプログラムとして実施されてもよい。最後に、ここで説明されるソフトウェア発明をともに実施する個別のプログラムの任意の組み合わせは、発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムが、1以上の電子システムを動作させるためにインストールされる場合、1以上の特定の機械的実施を定義し、ソフトウェアプログラムの動作を実行する。
図9は、本発明のいくつかの実施形態が実施される電子システム900を概念的に示す。電子システム900は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ等)、サーバ、分散スイッチ、電話、PDA、又は任意の他の種類の電子デバイスであり得る。そのような電子システムは、様々な種別のコンピュータで読み出し可能なメディア、及び様々な他の種別のコンピュータで読み出し可能なメディアに対するインタフェースを含む。電子システム900は、バス905、処理ユニット910、システムメモリ925、読出専用メモリ930、永続的ストレージデバイス935、入力デバイス940、及び出力デバイス945を含む。
バス905は、電子システム900の多くの内部デバイスを通信可能に接続する、全てのシステムバス、周辺バス、及びチップセットバスを集約的に表す。例えば、バス905は、処理ユニット910を、読出専用メモリ930、システムメモリ925、及び永続的ストレージデバイス935に通信可能に接続する。
処理ユニット910は、本発明の処理を実行するために、これらの様々なメモリユニットから実行する命令及び処理するデータを検索する。処理ユニットは、異なる実施形態において単一のプロセッサ又はマルチコアプロセッサであり得る。
読出専用メモリ(ROM)930は、処理ユニット910及び電子システムの他のモジュールによって必要とされる静的データ及び命令を記録する。永続的ストレージデバイス935は、一方で、読出・書込メモリデバイスである。このデバイスは、電子システム900がオフの場合であっても命令及びデータを記録する不揮発性メモリユニットである。本発明のいくつかの実施形態は、(磁気又は光学ディスク、及び対応するディスクドライブなどの)マスストレージデバイスを永続的ストレージデバイス935として用いる。
他の実施形態は、(フロッピーディスク、フラッシュメモリデバイス等およびその対応するドライブのような)取り外し可能なストレージデバイスを永続的ストレージデバイスとして用いる。永続的ストレージデバイス935のように、システムメモリ925は、読出・書込メモリデバイスである。しかしながら、ストレージデバイス935とは異なり、システムメモリ925は、ランダムアクセスメモリのような揮発性の読出・書込メモリである。システムメモリ925は、プロセッサがランタイムにおいて必要とする、いくつかの命令及びデータを格納し得る。いくつかの実施形態では、本発明の処理は、システムメモリ925、永続的ストレージデバイス935、及び/又は読出専用メモリ930に記録される。処理ユニット910は、いくつかの実施形態の処理を実行するために、これらの様々なメモリユニットから実行する命令及び処理するデータを検索する。
バス905はまた、入力デバイス940と出力デバイス945に接続する。入力デバイス940は、ユーザが情報を通信し、電子システムへのコマンドを選択できるようにする。入力デバイス940は、英数字キーボードおよびポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)、カメラ(例えば、ウェブカメラ)、マイクロフォンまたは音声コマンドを受信するための類似デバイス等を含む。出力デバイス945は、電子システムによって生成された画像を表示し、そうでなければデータを出力する。出力デバイス945は、プリンタ、真空管(CRT)又は液晶ディスプレイ(LCD)などの表示デバイス、およびスピーカや類似の音声出力デバイスをを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
最後に、図9に示すように、バス905はまた、電子システム900をネットワークアダプタ(不図示)を介してネットワーク965に接続する。このようにして、コンピュータは、(ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、イントラネット、インターネットなどのネットワークのネットワーク、などのコンピュータのネットワークの一部になることができる。電子システム900の任意又は全ての構成要素は、本発明に関連して用いられ得る。
いくつかの実施形態は、マイクロプロセッサ、コンピュータプログラムの命令を機械で読み出し可能な又はコンピュータで読み出し可能な媒体(或いはコンピュータで読み出し可能なストレージメディア、機械で読み出し可能な媒体、又は機械で読み出し可能なストレージメディアとして参照される)に格納した、ストレージ及びメモリのような電子構成要素を含む。コンピュータで読み出し可能な媒体のいくつかの例は、RAM、ROM、読出専用コンパクトディスク(CD−ROM)、記録可能コンパクトディスク(CD−R)、再書込可能コンパクトディスク(CD−RW)、読出専用デジタル多用途ディスク(例えばDVD−ROM、デュアルレイヤDVD−ROM)、様々な記録可能/再書込可能DVD(DVD−RAM、DVD−RW、DVD+RW等)、フラッシュメモリ(例えばSDカード、ミニSDカード、マイクロSDカード等)、磁気及び/又はソリッドステートハードドライブ、読出専用及び記録可能Blu−Ray(登録商標)ディスク、超高密度光ディスク、任意の他の光又は磁気メディア、及びフロッピーディスクを含む。コンピュータで読み出し可能な媒体は、少なくとも1つの処理ユニットによって実行可能であり、様々な動作を実行するための命令の組を含む、コンピュータプログラムを記録する。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されたような機械コードと、コンピュータ、電子構成要素、又はインタプリタを用いるマイクロプロセッサによって実行される、より高レベルなコードを含んだファイルとを含む。
上述の説明は、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサを主に参照したが、いくつかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)のような、1つ以上の集積回路によって実行される。ある実施形態では、そのような集積回路は回路自体に格納された命令を実行する。更に、いくつかの実施形態は、プログラマブルロジックデバイス(PLD)、ROM、またはRAMデバイスに格納されるソフトウェアを実行する。
本明細書および本出願の任意のクレームにおいて使用されるように、「コンピュータ」、「サーバ」、「プロセッサ」及び「メモリ」の語は、全て電子的又は他の技術的デバイスを参照する。これらの語は、人及び人のグループを含まない。本明細書の目的のため、表示及び表示するの語は電子デバイス上に表示することを意味する。本明細書および本出願の任意のクレームにおいて使用されるように、「コンピュータで読み出し可能な媒体」、「コンピュータで読み出し可能なメディア」及び「機械で読み出し可能な媒体」の語は、全体として、コンピュータによって読み出し可能な形式の情報を記録する、有体物、物理的なオブジェクトに制限される。これらの語は、任意の無線信号、有線でダウンロードされた信号、及び任意の他のその場限りの信号を含まない。
本明細書は、終始、仮想マシン(VM)を含む、計算環境及びネットワーク環境を参照している。しかしながら、仮想マシンは単なるデータ計算ノード(DCN)又はデータ計算エンドノードの一例であり、アドレス可能なノードとしても参照される。DCNは、非仮想化物理ホスト、仮想マシン、ハイパーバイザや別のオペレーティングシステムを必要とすること無くホストオペレーティングシステム上で動作するコンテナ、及びハイパーバイザカーネルネットワークインタフェースモジュールを含み得る。
いくつかの実施形態では、VMは、仮想化ソフトウェア(例えばハイパーバイザ、仮想マシンモニタ等)によって仮想化されたホストのリソースを用いて、ホスト上の自身のゲストオペレーティングシステムとともに動作する。テナント(すなわちVMのオーナー)は、どのアプリケーションをゲストオペレーティングシステム上で動作させるか選択することができる。一方、いくつかのコンテナは、ハイパーバイザ又は別のゲストオペレーティングシステムを必要とせずに、ホストオペレーティングシステム上で動作する構成物である。いくつかの実施形態では、ホストオペレーティングシステムはネームスペースを使用して、コンテナを互いに個別化し、従って、異なるコンテナ内で動作するアプリケーションの異なるグループの、オペレーティングシステムレベルのセグメンテーションを提供する。このセグメンテーションは、システムハードウェアを仮想化するハイパーバイザ-仮想化環境で提供されるVMセグメンテーションと類似し、従って、異なるコンテナ内で動作するアプリケーションの異なるグループを個別化する、仮想化の形式としてみることができる。このようなコンテナはVMより軽量である。
いくつかの実施形態では、ハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールは、ハイパーバイザ・カーネル・ネットワーク・インタフェースを有するネットワークスタックと受信/送信スレッドを含む、非VM・DCNである。ハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールの一例は、VMware社のESXi(登録商標)ハイパーバイザの一部であるvmknicモジュールである。
本明細書はVMを参照したが、所与の例は、物理ホスト、VM、非VMコンテナ、及びハイパーバイザ・カーネル・ネットワーク・インタフェース・モジュールを含む、任意の種別のDCNであってよい。事実、ネットワークの例は、いくつかの実施形態では異なる種別のDCNの組み合わせを含んでよい。
さらに、用語「パケット」は、本出願を通じて、ネットワークを介して送信される特定のフォーマットにおけるビットの集合を指すために使用される。用語「パケット」は、本明細書では、ネットワークを介して送信され得る、様々なフォーマットされたビットの集合を指すために使用され得る、ことが理解されるべきである。そのようなフォーマットされたビットの集合のいくつかの例は、イーサネット(登録商標)フレーム、TCPセグメント、UDPデータグラム、IPパケット等である。
本発明は多数の特定の詳細を参照して説明されたが、当業者は、本発明が発明の思想から離れることのない他の特定の形式で実施可能であることを認識する。加えて、多数の図(図6を含む)は処理を概念的に示すものである。これらの処理の特定の動作は、図示及び説明された正確な順序で実行されないかもしれない。特定の動作は、1つの連続する動作の流れで実行されないかもしれず、異なる特定の動作が異なる実施形態において実行され得る。更に、処理はいくつかの副処理(sub-process)を用いて、又は大きなマクロ処理の部分として実施され得る。従って、当業者は、発明が上述の詳細に限定されず、むしろ添付の請求項の範囲によって定義されることを理解する。