【新規性喪失の例外の表示】特許法第30条第2項適用 展示会名:VMworld 2013,10▲th▼ Annual DEFY Convention 公開日:平成25年8月27日 公開者:ラジーヴ クリシュナムルティ、マニッシュ ミッタル及びブルース デイビー
(58)【調査した分野】(Int.Cl.,DB名)
前記ARPブロードキャストメッセージは、前記ホストマシンで動作する仮想マシンによって送られることを特徴とする、請求項1に記載のコンピューティングデバイス。
前記論理ネットワークの前記セグメントのうちの少なくとも1つがオーバレイカプセル化ネットワークであることを特徴とする、請求項1に記載のコンピューティングデバイス。
前記物理ホストマシンから前記特定のホストマシン以外の他のホストマシンへのデータパケットが、前記選択されたMPREによりルーティングされることを特徴とする、請求項10に記載のシステム。
前記他のホストマシンから前記物理ホストマシンへのデータパケットは、前記選択されたMPREによりルーティングされないことを特徴とする、請求項11に記載のシステム。
前記物理ホストマシンから前記複数のホストマシンへのデータパケットが、宛先アドレスとして、選択されたルータと関連付けられた一意の物理媒体アクセス制御(PMAC)アドレスを用いることを特徴とする、請求項10に記載のシステム。
それぞれのホストマシンから前記物理ホストマシンへのデータパケットが、送信元アドレスとしてそれぞれのホストマシン自身の一意のPMACアドレスを用いることを特徴とする、請求項14に記載のシステム。
前記選択されたMPREからの前記ARPメッセージへの前記応答が、前記選択されたMPREを実行する前記ホストマシンの一意の物理媒体アクセス制御(PMAC)アドレスを含むことを特徴とする、請求項17に記載のシステム。
前記特定のホストマシンは、前記ARPメッセージに基づく前記物理ホストマシンに関するアドレス解決情報を格納し、他のホストマシンへと前記物理ホストマシンに関する前記アドレス解決情報を提供することを特徴とする、請求項17に記載のシステム。
【発明を実施するための形態】
【0017】
以下の説明では、多くの詳細が、説明の目的のために記載される。しかしながら、当業者は、本発明が、これらの特定の詳細を使用せずに実施され得ることを理解するであろう。他の例では、不必要な詳細で本発明の説明を曖昧にしないために、周知の構造及びデバイスは、ブロック図の形式で示される。
【0018】
仮想化ネットワーク環境内のホストマシン上で動作する論理ネットワークの仮想マシン(VM)間のL3パケット転送を容易にするために、いくつかの実施形態は、論理ネットワークのための論理ルータ又は論理ルーティング要素(LRE)を定義する。いくつかの実施形態では、LREは、仮想分散型ルータ(VDR)として、その論理ネットワークのホストマシン間で分散して動作し、ここで、各ホストマシンは、LREのそれ自体のローカルインスタンスを、そのホスト上で動作するVMのためのL3パケット転送を実行するための管理される物理ルーティング要素(MPRE)として動作する。いくつかの実施形態では、MPREは、同じホストマシン上で動作するVM間のパケットのL3転送が、物理ネットワークを経由する必要なしに、ホストマシンでローカルに実行されることを可能にする。いくつかの実施形態は、異なるテナントのための異なるLREを定義し、ホストマシンは、複数のMPREとして、異なるLREを動作させることができる。いくつかの実施形態では、同じホストマシン上で動作する異なるテナントのための異なるMPREは、管理される物理スイッチング要素(MPSE)上の同じポート及び同じL2MACアドレスを共有する。
【0019】
いくつかの実施形態に関して、
図2は、ホストマシンでローカルにMPREとして動作するLREによって実行されるパケット転送動作を示す。各ホストマシンは、1つ又は複数のVMをホストするために、仮想化機能を実行し、VMがネットワーク仮想化インフラストラクチャ内で互いに通信できるように、スイッチング機能を実行する。2つのVMが、異なるネットワークセグメントに属する場合であっても、同じホストマシン上の2つのVM間のトラフィックが、常にローカルに行われることになるように、各MPREは、そのホストマシン内でローカルにL3ルーティング動作を実行する。
【0020】
図2は、VM221〜229間のネットワーク通信のための論理ネットワーク200の実装を示す。論理ネットワーク200は、物理ネットワーク205によって相互接続されるコンピューティング及びストレージリソースの集合上に仮想化されるネットワークである。相互接続されるコンピューティング及びストレージリソースのこの集合、並びに物理ネットワークは、ネットワーク仮想化インフラストラクチャを形成する。VM221〜229は、ホストマシン231〜233によってホストされ、ホストマシン231〜233は、物理ネットワーク205によって通信可能にリンクされる。ホストマシン231〜233の各々は、いくつかの実施形態では、VMを作成及びホストすることができるオペレーティングシステム(例えば、Linux(登録商標))によって管理されるコンピューティングデバイスである。VM221〜229は、ネットワークアドレス(例えば、L2のためのMACアドレス、L3のためのIPアドレス、など)のセットがそれぞれ割り当てられ、他のVMのような他のネットワーク要素との間でネットワークデータを送受信することができる仮想マシンである。
【0021】
VMは、ホストマシン231〜233上で動作する仮想化ソフトウェア(図示せず)によって管理される。仮想化ソフトウェアは、あるいは、仮想マシン技術の分野で「仮想マシンモニタ」、「ハイパーバイザ」、又は仮想化カーネルとして知られる1つ又は複数のソフトウェア構成要素を含む、1つ又は複数のソフトウェア構成要素及び/又は層を含むことができる。仮想化の専門用語は、時間と共に進化してきており、まだ完全には標準化されていないため、これらの用語は、ソフトウェア層と、それらが参照する構成要素との間の明確な区別を、必ずしも提供しない。本明細書で使用される「仮想化ソフトウェア」という用語は、一般的に、仮想マシンとホストプラットフォームとの間に論理的に介在するソフトウェア層又は構成要素を指す。
【0022】
図2の例では、各VMは、論理ネットワーク200の2つのセグメントのうちの一方で動作する。VM221〜225は、セグメントAで動作し、VM226〜229は、セグメントBで動作する。いくつかの実施形態では、ネットワークセグメントは、ネットワークの一部であり、ネットワーク内では、ネットワーク要素が、IPサブネットのようなリンク層L2プロトコルによって、互いに通信する。いくつかの実施形態では、ネットワークセグメントは、VXLAN又はVLANのようなカプセル化オーバレイネットワークである。
【0023】
いくつかの実施形態では、ネットワークの同じセグメント内のVMは、リンク層(L2)プロトコルで(例えば、各VMのL2MACアドレスにしたがって)互いに通信することができ、ネットワークの異なるセグメント内のVMは、リンク層プロトコルでは互いに通信することができず、ネットワーク層(L3)ルータ又はゲートウェイを介して互いに通信しなければならない。いくつかの実施形態では、VM間のL2レベルトラフィックは、各ホストマシン内でローカルに動作するMPSE(図示せず)によって処理される。したがって、例えば、VM223からVM224へのネットワークトラフィックは、ホスト231内で動作する第1のMPSEを通過することになり、第1のMPSEは、そのポートの1つからデータを受信し、ホストマシン232で動作する第2のMPSEに、物理ネットワーク205を介してデータを送信し、第2のMPSEは、次に、そのポートの1つを介してVM224にデータを送信することになる。同様に、VM228からVM229への同じセグメントのネットワークトラフィックは、ホスト233で動作する単一のMPSEを通過することになり、単一のMPSEは、ある仮想ポートから別の仮想ポートに、ホスト233内でローカルにトラフィックを転送することになる。
【0024】
その実装が、異なるネットワークセグメント間のトラフィックを処理する(標準的な物理ルータ、特にルーティング機能を実行するためのVM、などとして実装することができる)外部L3ルータに依存する
図1の論理ネットワーク100とは異なり、
図2の論理ネットワーク200の実装は、それぞれホストマシン231〜233内でローカルにL3ルーティング機能を実行するために、MPRE241〜243を使用する。異なるホストマシン内のMPREは、論理ネットワーク200内のVMのための論理L3ルータの機能を共同で実行する。いくつかの実施形態では、LREは、それらのMPREとなるように異なるホストマシン間で複製又はインスタンス化されるデータ構造として実装される。
図2の例では、LREは、ホストマシン231〜233内で、MPRE241〜243としてインスタンス化される。
【0025】
図2の例では、VM222から発信され、VM227に宛てられたネットワークトラフィックのL3ルーティングは、MPRE241によって処理され、MPRE241は、VM222をホストするホストマシン231上でローカルに動作するLREインスタンシエイションである。MPRE241は、ルーティングされたデータパケットを、物理ネットワーク205を介してVM227に送信する前に、L3層ルーティング動作(例えば、リンク層アドレス解決)を、ホスト231内でローカルに実行する。これは、外部の共有L3ルータなしで行われる。同様に、VM225から発信される、VM226宛のネットワークトラフィックのL3ルーティングは、MPRE242によって処理され、MPRE242は、VM225をホストするホストマシン232上でローカルに動作するLREインスタンシエイションである。MPRE242は、L3層ルーティング動作を、ホスト232内でローカルに実行し、ルーティングされたデータパケットを、同様にホスト232によってホストされるVM226に直接送信する。したがって、2つのVM225及び226間のトラフィックは、物理ネットワーク205又は外部ルータを介して送信される必要はない。
【0026】
本発明のいくつかのより詳細な実施形態を、以下に説明する。セクションIは、LREベースのMPREを実装するVDR及びホストのアーキテクチャを説明する。セクションIIは、パケット処理のためのVDRの様々な使用を説明する。セクションIIIは、VDRの制御及び構成を説明する。最後に、セクションIVは、本発明のいくつかの実施形態が実装される電子システムを説明する。
【0028】
いくつかの実施形態では、LREは、仮想化ソフトウェア(例えば、ハイパーバイザ、仮想マシンモニタ、など)内で動作し、仮想化ソフトウェアは、(例えば、マルチテナントデータセンタ内の)1つ又は複数のVMをホストするホストマシン上で動作する。仮想化ソフトウェアは、VMの動作、並びに、ホストマシンの物理リソース及びネットワークリソースへのそれらのアクセスを管理し、LREのローカルインスタンシエイションは、ホストマシン内で、そのローカルMPREとして動作する。いくつかの実施形態について、
図3は、LREのMPREを含む仮想化ソフトウェア305を実行するホストマシン300を示す。ホストマシンは、例えば、物理ネットワーク390を介して他の同様のホストマシンに接続する。この物理ネットワーク390は、いくつかの実施形態では、様々な物理スイッチ及びルータを含むことができる。
【0029】
図示のように、ホストマシン300は、物理NIC(PNIC)395を介して物理ネットワーク390へのアクセスを有する。ホストマシン300は、また、仮想化ソフトウェア305を実行し、VM311〜314をホストする。仮想化ソフトウェア305は、ホストされるVMと、物理NIC395(並びに、プロセッサ及びメモリのような他の物理リソース)との間のインタフェースとして機能する。VMの各々は、仮想化ソフトウェア305を介してネットワークにアクセスするための仮想NIC(VNIC)を含む。VM内の各VNICは、VM及び仮想化ソフトウェア305間のパケットの交換に関与する。いくつかの実施形態では、VNICは、仮想NICエミュレータによって実装される物理NICのソフトウェア抽象化である。
【0030】
仮想化ソフトウェア305は、VM311〜314の動作を管理し、(いくつかの実施形態では、VMが接続する論理ネットワークを実装することによって)物理ネットワークへのVMのアクセスを管理するためのいくつかの構成要素を含む。図示のように、仮想化ソフトウェアは、MPSE320、MPRE330、コントローラエージェント340、VTEP350、及び、アップリンクパイプライン370のセットを含む、様々な構成要素を含む。
【0031】
コントローラエージェント340は、コントローラ、又はコントローラのクラスタから、制御プレーンメッセージを受信する。いくつかの実施形態では、これらの制御プレーンメッセージは、(MPSE320及びMPRE330のような)仮想化ソフトウェアの様々な構成要素、並びに/又は仮想マシンを構成するための構成データを含む。
図3に示す例では、コントローラエージェント340は、コントローラクラスタ360から物理ネットワーク390からの制御プレーンメッセージを受信し、受信した構成データを、MPSE320を経由せずに、制御チャネルを介してMPRE330に提供する。しかしながら、いくつかの実施形態では、コントローラエージェント340は、物理ネットワーク390とは独立した直接データコンジット(図示せず)から制御プレーンメッセージを受信する。いくつかの他の実施形態では、コントローラエージェントは、MPSE320から制御プレーンメッセージを受信し、構成データを、MPSE320を介してルータ330に転送する。仮想化ソフトウェアのコントローラエージェント及び構成を、以下のセクションIIIでさらに説明する。
【0032】
VTEP(VXLANトンネルエンドポイント)350は、ホスト300が、論理ネットワークトラフィック(例えば、VXLANトラフィック)のためのトンネルエンドポイントとして機能することを可能にする。VXLANは、オーバレイネットワークカプセル化プロトコルである。VXLANカプセル化によって作成されるオーバレイネットワークは、時には、VXLANネットワーク、又は単にVXLANと呼ばれる。ホスト300上のVMが、同じVXLANネットワーク内だが異なるホスト上の別のVMにデータパケット(例えば、イーサネット(登録商標)フレーム)を送信する場合、VTEPは、パケットを物理ネットワークに送信する前に、VXLANネットワークのVNI及びVTEPのネットワークアドレスを使用して、データパケットをカプセル化することになる。パケットは、物理ネットワークを介して宛先ホストにトンネリングされる(すなわち、カプセル化は、介在するネットワーク要素に対して、基になるパケットを透明にする)。宛先ホストでのVTEPは、パケットのカプセル化を解除し、元の内部のデータパケットのみを宛先VMに転送する。いくつかの実施形態では、VTEPモジュールは、VXLANカプセル化のためのコントローラインタフェースとしてのみ機能し、VXLANパケットのカプセル化及びカプセル化解除は、アップリンクモジュール370で成し遂げられる。
【0033】
MPSE320は、物理ネットワーク390をインタフェースする物理NIC395との間で、ネットワークデータを配信する。MPSEは、また、物理NICをVM311〜314、MPRE330、及びコントローラエージェント340と通信可能に相互接続するいくつかの仮想ポート(vPort)を含む。各仮想ポートは、いくつかの実施形態では、ユニークなL2MACアドレスと関連付けられる。MPSEは、その仮想ポートに接続された任意の2つのネットワーク要素間のL2リンク層パケット転送を実行する。MPSEは、また、その仮想ポートの任意のものに接続された任意のネットワーク要素と、物理ネットワーク390上の到達可能なL2ネットワーク要素(例えば、別のホスト上で動作する別のVM)との間のL2リンク層パケット転送を実行する。いくつかの実施形態では、MPSEは、論理スイッチング要素(LSE)のローカルインスタンシエイションを実装し、LSEは、異なるホストマシン間で動作し、同じホストマシン上又は異なるホストマシン上のVM間のL2パケットスイッチングを実行することができ、又は、MPSEは、いくつかの論理ネットワークのためのいくつかのこのようなLSEを実装する。
【0034】
MPRE330は、MPSE320上の仮想ポートから受信したデータパケットに、(例えば、L3IPアドレスからL2MACアドレスへの解決を実行することによって)L3ルーティングを実行する。それぞれのルーティングされたデータパケットは、次に、解決されたL2MACアドレスにしたがってその宛先に転送されるように、MPSE320に送り返される。この宛先は、MPSE320の仮想ポートに接続された別のVM、又は、物理ネットワーク390上の到達可能なL2ネットワーク要素(例えば、別のホスト上で動作する別のVM、物理的な非仮想化マシン、など)であってよい。
【0035】
上述したように、いくつかの実施形態では、MPREは、論理ルーティング要素(LRE)のローカルインスタンシエイションであり、LREは、異なるホストマシン間で動作し、同じホストマシン上又は異なるホストマシン上のVM間のL3パケット転送を実行することができる。いくつかの実施形態では、ホストマシンは、単一のMPSEに接続された複数のMPREを有することができ、ホストマシン内の各MPREは、異なるLREを実装する。MPRE及びMPSEは、MPRE及びMPSEが、いくつかの実施形態ではソフトウェアで実装されているとしても、「論理」ルーティング/スイッチング要素と区別するために、「物理」ルーティング/スイッチング要素と呼ばれる。いくつかの実施形態では、MPREは、「ソフトウェアルータ」と呼ばれ、MPSEは、「ソフトウェアスイッチ」と呼ばれる。いくつかの実施形態では、LRE及びLSEは、総じて、論理転送要素(LFE)と呼ばれ、MPRE及びMPSEは、総じて、管理される物理転送要素(MPFE)と呼ばれる。
【0036】
いくつかの実施形態では、MPRE330は、1つ又は複数の論理インタフェース(LIF)を含み、各LIFは、ネットワークの特定のセグメントに対するインタフェースとして機能する。いくつかの実施形態では、各LIFは、それ自体のIPアドレスによってアドレス指定可能であり、ネットワークのその特定のセグメントのネットワークノード(例えば、VM)のためのデフォルトゲートウェイ又はARPプロキシとして機能する。以下に詳細に説明するように、いくつかの実施形態では、異なるホストマシン内のMPREのすべては、同じ「仮想」MACアドレスによってアドレス指定可能であり、各MPREには、どのホストマシンでMPRE動作を行うのかを示すために、「物理」MACアドレスも割り当てられる。
【0037】
アップリンクモジュール370は、MPSE320及び物理NIC395間でデータを中継する。アップリンクモジュール370は、それぞれ動作のいくつかを実行する出口チェーン及び入口チェーンを含む。これらの動作のいくつかは、MPRE330のための前処理及び/又は後処理動作である。アップリンクモジュール370の動作を、
図14〜15を参照して以下にさらに説明する。
【0038】
図3によって示すように、仮想化ソフトウェア305は、複数の異なるLREからの複数のMPREを有する。マルチテナント環境では、ホストマシンは、複数の異なるユーザ又はテナントからの(すなわち、異なる論理ネットワークに接続された)仮想マシンを動作させることができる。いくつかの実施形態では、各ユーザ又はテナントは、そのL3ルーティングを処理するための、ホスト内の対応するMPREインスタンシエイションを有する。いくつかの実施形態では、異なるMPREが、異なるテナントに属するにもかかわらず、それらは、すべて、MPSE320上の同じvPort、したがって同じL2MACアドレスを共有する。いくつかの他の実施形態では、異なるテナントに属するそれぞれの異なるMPREは、MPSEに対するそれ自体のポートを有する。
【0039】
MPSE320及びMPRE330は、データパケットが、(異なるテナントのVMとして、同じ論理ネットワークに接続されたVMが、互いに分離される限り)外部の物理ネットワーク390を介して送信されることなく、VM311〜314間で転送されることを可能にする。
【0040】
図4は、MPSE320によるL2転送動作を示す。「1」とラベル付けされた動作は、完全にホストマシン300内で生じる、VM311とVM312の間のネットワークトラフィックを表す。これは、VM313と、別のホストマシン上の別のVMとの間のネットワークトラフィックを表す、「2」とラベル付けされた動作と対比される。他のホストマシンに到達するために、MPSE320は、NIC395を介して物理ネットワーク390上にパケットを送信する。
【0041】
図5a〜bは、MPSE320と協働するMPRE330によるL3ルーティング動作を示す。MPRE330は、関連するMACアドレスを有し、VM311〜314の任意のものからL2レベルトラフィックを受信することができる。
図5aは、その宛先がMPRE330と同じホスト内のパケットのための第1のL3ルーティング動作を示す。「1」とラベル付けされた動作では、VM312は、MPREのMACアドレスを使用することによって、データパケットをMPRE330に送信する。「2」とラベル付けされた動作では、MPRE330は、その宛先L3レベルIPアドレスをL2レベル宛先MACアドレスに解決することによって、受信したデータパケットにL3ルーティング動作を実行する。これは、以下に詳細に説明するように、アドレス解決プロトコル(ARP)要求を送信することをMPRE330に要求する可能性がある。ルーティングされたパケットは、次に、「3」とラベル付けされた動作でMPSE320に送り返される。宛先MACアドレスは、ホストマシン300内のVM(すなわち、VM311)に対するものであるため、動作「3」でのMPSE320は、ルーティングされたパケットを、パケットが決して物理ネットワーク390に到達することなく、宛先VMに直接転送する。
【0042】
図5bは、その宛先が、物理ネットワークによってのみ到達することができるリモートホスト内にあるパケットのための第2のL3ルーティング動作を示す。動作「4」及び「5」は、「1」及び「2」の類似の動作であり、その間、VM312は、データパケットをMPRE330に送信し、MPRE330は、受信したデータパケットにL3ルーティング動作(複数可)を実行し、ルーティングされたパケットをMPSE320(再び、ことによると、宛先IPアドレスをMACアドレスに解決するために、ARP要求を送信する)に送り返す。動作「6」の間、MPSE320は、ルーティングされたパケットを、宛先のL2MACアドレスに基づいて、物理NIC395を介して物理ネットワーク外に送信する。
【0043】
図5a〜bは、MPREと同じホストマシン内のVMのためのL3ルーティング動作を示す。いくつかの実施形態では、MPREは、MPREのホストマシン外のエンティティのためのL3ルーティング動作を実行するためにも使用されてよい。例えば、いくつかの実施形態では、ホストマシンのMPREは、それ自体のMPREを持たない別のホストマシンのためのL3ルーティングを実行するための「指定されたインスタンス」として機能することができる。「指定されたインスタンス」として機能するMPREの例を、以下のセクションII.Cでさらに説明する。
【0044】
図6a〜bは、物理ネットワーク390からホスト300に入るパケットのための、MPRE330によって実行されるL3ルーティング動作を示す。それ自体のMPREも動作させるホスト上のVMから送信されるパケットは、MPREによってルーティングされていることになるが、パケットは、それ自体はVDR MPREを動作させない他のホストからVM311〜314に送信されてもよい。
図6aは、動作「1」〜「3」での、物理ネットワークから受信され、ホスト300内の仮想マシンに送信されるパケットのためのルーティング動作を示す。動作「1」では、外部のエンティティが、MPREのMACアドレスを指定することによって、物理ネットワークを介して、MPRE330へのMPSE320にパケットを送信する。「2」とラベル付けされた動作では、MPRE330は、その宛先L3レベルIPアドレスをL2レベル宛先MACアドレスに解決することによって、受信したデータパケットにL3ルーティング動作を実行する。ルーティングされたパケットは、次に、「3」とラベル付けされた動作で、MPSE320を介して宛先仮想マシンに送信される。
【0045】
図6bは、動作「4」〜「6」での、外部のエンティティから別の外部のエンティティ(例えば、別のホストマシン内の仮想マシン)に送信されるパケットのためのルーティング動作を示す。動作「4」及び「5」は、「1」及び「2」の類似の動作であり、その間、MPRE330は、物理ネットワーク及びMPSE320からパケットを受信し、受信したデータパケットにL3ルーティング動作を実行する。動作「6」では、MPRE330は、MPSE320にデータパケットを送り返し、MPSE320は、解決されたMACアドレスに基づいて、別のホストマシン内の別の仮想マシンにパケットを送信する。以下に説明するように、これは、MPRE330が、LREを動作させない外部のホストとの通信のためのLREの指定されたインスタンシエイションである場合、生じる可能性がある。
【0046】
いくつかの実施形態では、ホストマシン300は、論理ネットワークをサポートすることができるネットワーク仮想化インフラストラクチャを形成するための物理ネットワークによって相互接続された多くのホストマシンのうちの1つである。このようなネットワーク仮想化インフラストラクチャは、1つ又は複数のユーザ指定された論理ネットワークを同時に実装することによって、複数のテナントをサポートすることができる。このような論理ネットワークは、仮想マシン間のL3レベルルーティングを実行するための1つ又は複数の論理ルータを含むことができる。いくつかの実施形態では、論理ルータは、複数のホストマシン間でインスタンス化されたMPREによって、集団的に実装される。
【0047】
図7は、異なるホストマシンにわたってMPREによって実装される論理ルータを有する論理ネットワーク701及び702を概念的に示す。論理ネットワーク701及び702は、物理ネットワークによって相互接続されたいくつかのホストマシンを含むネットワーク仮想化インフラストラクチャ上に同時に実装される。図に示すように、第1の論理ネットワーク701は、テナントXのためのものであり、第2の論理ネットワーク702は、テナントYのためのものである。各テナントの論理ネットワークは、いくつかの仮想マシンを含む。テナントXの仮想マシンは、セグメントA、B、C、及びDに分割される。テナントYの仮想マシンは、セグメントE、F、G、及びHに分割される。いくつかの実施形態では、セグメント内の仮想マシンは、論理スイッチ上のL2リンク層プロトコルを使用して互いに通信することができる。いくつかの実施形態では、少なくともいくつかのセグメントは、VXLANネットワークのようなカプセル化オーバレイネットワークである。いくつかの実施形態では、セグメントの各々は、異なるIPサブネットを形成する。
【0048】
各論理ネットワークは、それ自体の論理ルータを有する。テナントXのための論理ネットワーク701は、セグメントA、B、C、及びD間のルーティングのための論理ルータとして、LRE711を有する。テナントYのための論理ネットワーク702は、セグメントE、F、G、及びH間のルーティングのための論理ルータとして、LRE712を有する。各論理ルータは、異なるホストマシン間でインスタンス化されたMPREによって、ネットワーク仮想化インフラストラクチャ内に実装される。LRE711内のいくつかのMPREインスタンシエイションは、LRE712内のいくつかのMPREインスタンシエイションと同じホストマシンで動作している。
【0049】
各ネットワークセグメントは、論理ルータに対するそれ自体の論理インタフェースを有し、各論理ルータは、論理インタフェースのそれ自体のセットを有する。図示のように、論理ルータ711は、それぞれセグメントA、B、C、及びDのための論理インタフェースLIF A、LIF B、LIF C、及びLIF Dを有し、論理ルータ712は、それぞれセグメントE、F、G、及びHのための論理インタフェースLIF E、LIF F、LIF G、及びLIF Hを有する。各論理インタフェースは、ネットワーク仮想化インフラストラクチャ内でユニークなそれ自体の識別子(例えば、IPアドレス、又はオーバレイネットワーク識別子)である。結果として、テナントXのネットワークトラフィックを、テナントYのネットワークトラフィックから完全に分離することができる。
【0050】
図8は、ネットワーク仮想化インフラストラクチャのホストマシン内の論理ルータの物理的実装を示す。具体的には、図は、ホストマシン801及び802内の論理ネットワーク701及び702の(部分的)実装を示す。図示のように、ホストマシン801は、仮想マシン811〜815をホストしており、ホストマシン802は、仮想マシン821〜826をホストしている。これらの中で、仮想マシン811〜812及び821〜823は、テナントXの仮想マシンであり、仮想マシン813〜816及び824〜826は、テナントYの仮想マシンである。
【0051】
各ホストマシンは、異なる2つのテナントのための2つのMPREを含む。ホストマシン801は、それぞれテナントX及びYのためのMPRE841及び842を有する。ホストマシン802は、それぞれテナントX及びYのためのMPRE843及び844を有する。ホスト801は、仮想マシン811〜816及びMPRE841〜842間のL2層パケット転送を実行するためのMPSE851を動作させ、ホスト801は、仮想マシン821〜826及びMPRE843〜844間のL2層パケット転送を実行するためのMPSE852を動作している。
【0052】
各MPREは、そのホストマシン上で動作する仮想マシンとインタフェースするための論理インタフェースのセットを有する。MPRE841及び843は、テナントXのためのMPREであり、それらは、テナントXのネットワークセグメント(すなわち、セグメントA、B、C、及びD)のための論理インタフェースのみを有することができ、テナントYのMPRE842及び844は、テナントYのネットワークセグメント(すなわち、セグメントE、F、G、及びH)のための論理インタフェースのみを有することができる。各論理インタフェースは、ネットワークIPアドレスと関連付けられる。MPREに取り付けられた論理インタフェースのIPアドレスは、MPREを、そのローカルホスト上で動作するVMによってアクセス可能にすることを可能にする。例えば、VM811は、ホスト801上で動作するセグメントAの仮想マシンであり、1.1.1.253であるLIF AのIPアドレスを使用することによって、そのL3ルータとしてMPRE841を使用する。いくつかの実施形態では、MPREは、非アクティブであるように構成されたLIFを含むことができる。例えば、MPRE841のLIF Dは、ホスト801が、セグメントD内のどのVMも動作させないため、非アクティブである。すなわち、いくつかの実施形態では、特定のLREのための各MPREは、LREの論理インタフェースのすべてを使用して構成されるが、LREの異なるローカルインスタンシエイション(すなわち、MPRE)は、ローカルLREインスタンシエイションを有するホストマシン上で動作するVMに基づいて非アクティブな異なるLIFを有することができる。
【0053】
いくつかの実施形態では、同じセグメントのためのLIFが、これらのLIFが異なるホスト内の異なるMPREに取り付けられている場合でも、同じIPアドレスを有することは、注目に値する。例えば、ホスト801上のMPRE842は、セグメントEのための論理インタフェース(LIF E)を有し、ホスト802上のMPRE844もそうである。MPRE842のLIF Eは、MPRE844のLIF Eと同じIPアドレス4.1.1.253を共有する。すなわち、VM814(ホスト801上で動作するセグメントE内のVM)及びVM824(ホスト802上で動作するセグメントE内のVM)の両方は、それらの個々のMPREにアクセスするために、同じIPアドレス4.1.1.253を使用する。
【0054】
上述したように、いくつかの実施形態では、同じホストマシン上で動作する異なるMPREは、MPSE上の同じポートを共有し、これは、同じホスト上で動作するすべてのMPREが、L2MACアドレスを共有することを意味する。いくつかの実施形態では、データパケットを、異なるテナント及び異なるデータネットワークセグメントから分離するために、論理インタフェースのユニークなIPアドレスが使用される。いくつかの実施形態では、異なるネットワークセグメントからのデータパケットを、異なる論理インタフェースに向けるために、他の識別メカニズムが使用される。いくつかの実施形態は、パケットを異なるセグメントから分離するために、異なるセグメントのためのユニークな識別子を使用する。サブネットであるセグメントについて、いくつかの実施形態は、パケットが正しいサブネットからのものであるかどうかを確認するために、パケット内のIPアドレスを使用する。オーバレイネットワークに対応するセグメントについて、いくつかの実施形態は、データパケットを、その対応する論理インタフェースに向けるために、ネットワークセグメント識別子を使用する。いくつかの実施形態では、ネットワークセグメント識別子は、論理ネットワークのセグメントであるオーバレイネットワークの識別子(例えば、VNI、VXLAN ID、又はVLANタグ若しくはID)である。いくつかの実施形態では、論理ネットワークの各セグメントは、そのタイプに関係なく、セグメントの識別子としてVNIが割り当てられる。
【0055】
図9は、異なるセグメントの仮想マシンからのデータパケットが、どのように、ホスト801内の異なる論理インタフェースの方に向けられるのかを示す。図示のように、VM811〜816は、MPSE851の異なるポートに接続され、テナントXのMPRE841、及び、テナントYのMPRE842は、MACアドレス「01:23:45:67:89:ab」(この説明のために、「VMAC」と呼ぶ)を有するポートに接続される。セグメントAのVM811からのパケット901、及び、セグメントGのVM815からのパケット902は、MPSE851に送信される。MPSE851は、今度は、パケット901及び902を、両方のパケットのための宛先MACアドレス「VMAC」に基づいて、MPRE841及び842の仮想ポートに向ける。パケット901は、セグメントAのためのVNI(「VNI A」)を担持し、パケット902は、セグメントGのためのVNI(「VNI G」)を担持する。MPRE841の論理インタフェース「LIF A」は、パケット901を、そのネットワークセグメント識別子「VNI A」に基づいて受け入れ、MPRE842の論理インタフェース「LIF G」は、パケット902を、そのネットワークセグメント識別子「VNI G」に基づいて受け入れる。テナントは、同じネットワークセグメントを共有せず、したがって、VNIを共有しないため、異なるテナントからのデータパケットは、互いに安全に分離される。
【0056】
この図は、パケットを正しい論理ルータ及び論理ルータインターフェイスに分離するために、パケットのVNI(ネットワーク識別子タグ)を使用することを示しているが、異なる実施形態は、他の識別子を使用することができる。例えば、いくつかの実施形態は、(パケットが、送信元VMと同じネットワークプレフィックスを有するLIFを介して送信されることを保証するために)パケットの送信元IPアドレスを使用し、又は、送信元IP及びネットワーク識別子タグの組み合わせを使用する。
【0057】
いくつかの実施形態について、
図10は、ホストマシン内で動作する例示的なMPREインスタンシエイション1000のブロック図を示す。図示のように、MPRE1000は、仮想ポート1053でMPSE1050に接続される。MPSE1050は、MPRE1000と同じホスト内で動作する仮想マシンに接続され、並びに、アップリンクモジュール1070及び物理NIC1090を介して物理ネットワークに接続される。MPRE1000は、データリンクモジュール1010及びルーティングプロセッサ1005、論理インタフェースデータストレージ1035、ルックアップテーブルストレージ1040、並びに、構成データストレージ1045を含む。ルーティングプロセッサ1005は、入口パイプライン1020、出口パイプライン1025、シーケンサ1030を含む。
【0058】
データリンクモジュール1010は、MPRE1000のためのMPSE1050とのリンク層(L2)インタフェースである。これは、ポート1053に割り当てられたMACアドレス(図示の例では、「01:23:45:67:89:ab」)にアドレスされた入力データパケットを受け入れる。これは、また、出力データパケットをMPSE
1050に送信する。いくつかの実施形態では、データリンクモジュールは、ブロードキャストアドレス(「ff.ff.ff.ff.ff.ff」)及び/又はマルチキャストアドレスを有するデータパケットも受け入れる。
【0059】
入口パイプライン1020は、入力データパケットを、それらがルーティングシーケンサ1030によって順次に処理される前にキューアップするためのものである。いくつかの実施形態では、入口パイプラインは、入力データパケットに異なる処理動作を実行するいくつかのパイプラインステージも含む。いくつかの実施形態では、これらの入口処理動作は、(アクセス制御リストACLにしたがう)入口アクセス制御、及び、送信元ネットワークアドレス変換(NAT)を含む。いくつかの実施形態では、これらの動作の少なくともいくつかは、ルックアップテーブルストレージ1040及び論理インタフェースデータストレージ1035に格納されたデータに基づくルーティング又はブリッジング動作である。いくつかの実施形態では、入口パイプラインは、入力パケットのためのインバウンドLIFとして識別される論理インタフェースのための指定されたデータにしたがってアクションを実行する。
【0060】
出口パイプライン1025は、ルーティングシーケンサ1030によって生成された出力データパケットを、それらがデータリンクモジュール1010によって、MPSE1050を介して送出される前にキューアップするためのものである。いくつかの実施形態では、出口パイプラインは、出力データパケットに異なる処理動作を実行するいくつかのパイプラインステージも含む。いくつかの実施形態では、これらの出口処理動作は、(アクセス制御リストACLにしたがう)出口アクセス制御、及び、宛先ネットワークアドレス変換(NAT)を含む。いくつかの実施形態では、これらの動作の少なくともいくつかは、ルックアップテーブルストレージ1040及び論理インタフェースデータストレージ1035に格納されたデータに基づくルーティング又はブリッジング動作である。いくつかの実施形態では、出口パイプラインは、出力パケットのためのアウトバウンドLIFとして識別される論理インタフェースのための指定されたデータにしたがってアクションを実行する。
【0061】
シーケンサ1030は、入口パイプライン1020及び出口パイプライン1025間の連続した動作を実行する。いくつかの実施形態では、ルーティングシーケンサは、ARP動作及びブリッジング動作のような順次動作を実行する。いくつかの実施形態では、ルーティングシーケンサは、ARPクエリ及び応答を生成するように、必要なときに新しいパケットを作成し、ネットワークに注入する。これは、前処理されたデータパケットを入口パイプライン1020から取得し、後処理のための出口パイクラインに出力パケットを格納する。
【0062】
いくつかの実施形態のルーティングプロセッサ1005は、最初に入力データパケットを様々な論理インタフェースに分類することによって、そのルーティング決定を行う。ルーティングプロセッサ1005は、また、各論理インタフェースの現在の状態を更新し、論理インタフェースデータストレージ1035に格納する。例えば、ルーティングプロセッサ1005は、データパケットが、第2の論理インタフェースに取り付けられた第2のネットワークセグメント内の第2の仮想マシンから、第3の論理インタフェースに取り付けられた第3のネットワークセグメント内の第3の仮想マシンに進む間、論理インタフェースの現在の状態に基づいて、第1の論理インタフェースに取り付けられた第1のネットワークセグメント内の第1の仮想マシンへのARP応答を生成する。第1、第2、及び第3の論理インタフェースの現在の状態は、次に、それに応じて更新され、論理インタフェースデータストレージ1035に格納される。いくつかの実施形態では、ルーティングプロセッサ1005は、また、特定の論理インタフェースの代わりに、再び、その特定の論理インタフェースの現在の状態に基づいて、(例えば、ARP要求のための)新しいデータパケットを生成する。
【0063】
ルーティングプロセッサ1005は、また、ルックアップテーブルストレージ1040の内容に基づいて、そのルーティング決定を行う。いくつかの実施形態では、ルックアップテーブルストレージ1040は、(例えば、ネットワーク層IPアドレスからリンク層MACアドレスへの)L3及びL2アドレス解決のための解決テーブル(又は、ARPテーブル)を格納する。いくつかの実施形態では、ルーティングシーケンサは、(例えば、あるIPサブネットから別のIPサブネットへの)L3レベルルーティングを実行するだけでなく、同じIPサブネット内で動作する(VXLANネットワーク及びVLANネットワーク間のような)異なるオーバレイネットワーク間のブリッジングも実行する。これらの実施形態のいくつかでは、ルックアップテーブルストレージ1040は、ネットワークセグメント識別子(VNI)をMACアドレスと結びつけるために必要なブリッジングテーブルを格納する。ルーティングプロセッサ1005は、また、入力パケットから学習することによって、ブリッジングテーブル及びARPテーブル内のエントリを更新する。
【0064】
MPRE1000は、構成データストレージ1045も含む。ストレージ1045は、MPRE1000の内部の様々なモジュールを構成するためのデータを格納する。例えば、いくつかの実施形態では、ストレージ1045内の構成データは、いくつかの論理インタフェース、並びに、各論理インタフェースの(そのIPアドレス、関連するネットワークセグメント、アクティブ/非アクティブ状態、LIFタイプ、などのような)パラメータを指定する。いくつかの実施形態では、構成データは、MPRE1000をアドレス指定するために同じホストマシン内の仮想マシンによって使用される仮想MACアドレス(VMAC)、及び、MPRE1000をアドレス指定するために他のホストマシンによって使用されるその物理MACアドレス(PMAC)のような、他のパラメータも指定する。いくつかの実施形態では、構成データは、ACL、NAT、及び/又はファイアウォール動作のためのデータも含む。いくつかの実施形態では、構成データストレージ1000内のデータは、(
図3のコントローラエージェント340のような)ホストマシン内のコントローラエージェントを介して、コントローラクラスタから受信される。構成データ及び制御プレーン動作を、以下のセクションIIIでさらに説明する。
【0065】
図11は、MPSEからのデータパケットを処理する際にMPREによって実行されるいくつかの実施形態のプロセス1100を概念的に示す。いくつかの実施形態では、プロセス1100は、ルーティングプロセッサ1005によって実行される。プロセス1100は、MPREが、MPSEからデータパケットを受信すると、開始する。プロセスは、(1110で)例えば、ネットワークセグメント識別子(例えば、VNI)に基づいて、インバウンドデータパケットのための論理インタフェース(インバウンドLIF)を識別する。
【0066】
プロセスは、次に、(1120で)インバウンドLIFが、ブリッジングのための論理インタフェース(ブリッジLIF)、又はL3ルーティングを実行するための論理インタフェース(ルーティングLIFの)のどちらであるかを判定する。いくつかの実施形態では、論理インタフェースは、ルーティングLIF又はブリッジLIFのいずれかとして構成される。識別されたLIFがブリッジLIFである場合、プロセスは、1123に進む。識別されたLIFがルーティングLIFである場合、プロセスは、1135に進む。
【0067】
1123では、プロセスは、送信元MACと、入力パケットのネットワークセグメント識別子(例えば、VNI)との間のペアリングを学習する。送信元MACは、VNIによって識別されるネットワークセグメント内にあることが確実であるため、この情報は、その宛先アドレスとして同じMACアドレスを有するパケットをブリッジングするために有用である。この情報は、いくつかの実施形態では、このMACアドレスとそのVNIとの間のペアリングを提供するために、ブリッジテーブルに格納される。
【0068】
次に、プロセスは、(1125で)入力データパケット内の宛先MACが、ブリッジングを必要とするMACであるかどうかを判定する。ブリッジングを必要とする宛先MACは、送信元ネットワークセグメント内の既知の宛先を持たないMACであり、(例えば、送信元VNIと同じIPサブネット上にあるため)ルーティングされることができない。宛先MACがブリッジングを要求する場合、プロセスは1130に進み、そうでない場合、プロセスは終了する。
【0069】
1130では、プロセスは、ブリッジングテーブルにしたがって、未知の宛先MACをVNIと結びつけることによって、ブリッジング動作を実行する。いくつかの実施形態では、このようなエントリを見つけることができない場合、プロセスは、未知の宛先MACのための一致するVNIを見つけるために、MPREに取り付けられたすべての他のブリッジLIFをフラッディングする。いくつかの実施形態では、プロセスは、ファイアウォールがこのブリッジLIFのために有効になっている場合、ブリッジングを実行しないことになる。ブリッジング動作を、以下のセクションII.Dでさらに説明する。いくつかの実施形態では、動作1130は、シーケンサ1030のようなシーケンシャルモジュールによって実行される一連の動作である。ブリッジングを実行した後、プロセスは、1150に進む。
【0070】
1135では、プロセスは、入力データパケット内の宛先MACが、MPREにアドレスされているかどうかを判定する。いくつかの実施形態では、すべてのMPREは、宛先としての一般的(包括的、generic)な仮想MACアドレス(VMAC)に応答する。いくつかの実施形態では、MPRE内の個々のLIFは、宛先としてのそれら自身のLIF MAC(LMAC)に応答する。宛先MACアドレスが、MPRE(又は、LIF)のためのものである場合、プロセスは、1140に進む。そうでない場合、プロセス1100は終了する。
【0071】
1140では、プロセスは、入力データパケット内の宛先IPアドレスを解決する(1140)。いくつかの実施形態では、MPREは、最初に、ARPテーブル内のIPアドレスをルックアップすることによって、IPアドレスをローカルに解決することを試みる。一致するエントリがARPテーブル内に見つからない場合、プロセスは、ARPクエリを開始し、宛先MACアドレスを取得することになる。ARP動作を、以下のセクションII.Bでさらに説明する。いくつかの実施形態では、動作1140は、シーケンサ1030のようなシーケンシャルモジュールによって実行される一連の動作である。
【0072】
プロセスは、次に、入力パケット(又は、この時点でより適切には、出力パケット)のためのアウトバウンドLIFを識別する(1150)。ブリッジLIFであるインバウンドLIFを通って来るデータパケットに関して、アウトバウンドLIFは、ブリッジ結合によって提供されるVNIによって識別されるブリッジLIFである。ルーティングLIFであるインバウンドLIFを通って来るデータパケットに関して、いくつかの実施形態は、宛先IPアドレスを調べることよって、アウトバウンドLIFを識別する。いくつかの実施形態では、アウトバウンドLIFは、ARP解決テーブルによって提供されるVNIによって識別されるルーティングLIFである。
【0073】
アウトバウンドLIFを識別した後、プロセスは、アウトバウンドLIFを使用することによって、出力パケットを正しい宛先セグメントに送信する(1160)。いくつかの実施形態では、アウトバウンドLIFは、例えば、出力パケットに、宛先セグメントのネットワークセグメント識別子をタグ付けすることによって、宛先セグメントのためのパケットを準備する。次に、プロセス1100は、終了する。
【0075】
A.ローカル及びリモートにMPREにアクセスする
【0076】
前述のように、セクションIで上述したLREは、仮想分散型ルータ(VDR)である。これは、MPREと異なるホスト内のLREの異なるインスタンシエイション間で、ルーティング動作(L3層ルーティングか、ブリッジングかどうかにかかわらす)を分散する。いくつかの実施形態では、VDRを用いる論理ネットワークは、MPREのすべてを仮想マシンのすべてに同じように見えるようにすることによって、ネットワークの仮想化をさらに強化する。これらの実施形態のいくつかでは、各MPREは、システム内のMPREのすべてについて同じであるMACアドレス(VMAC)によって、L2データリンク層でアドレス指定可能である。これは、本明細書では仮想MACアドレス(VMAC)と呼ばれる。VMACは、特定の論理ネットワーク内のMPREのすべてが、仮想マシン及び論理ネットワークのユーザ(例えば、ネットワーク管理者)に1つの連続した論理ルータのように見られることを可能にする。
【0077】
しかしながら、いくつかの実施形態では、MPREは、互いに、他のホストマシンと、又は、他のホストマシン内のネットワーク要素(例えば、他のホストマシン内のMPRE及び/又はVM)と通信することを必要とする。これらの実施形態のいくつかでは、VMACに加えて、各MPREは、物理ネットワーク上の他のホストマシンからの物理MACアドレス(PMAC)によってユニークにアドレス指定可能である。いくつかの実施形態では、MPREをアドレス指定するために使用されるこのユニークなPMACアドレスは、MPREを動作させるホストマシンに割り当てられるプロパティである。いくつかの実施形態は、MPREは、そのホストマシンのPMACによって、それ自体の論理ネットワーク内でユニークにアドレス指定可能であるため、ホストマシンのこのユニークなPMACを、MPREのユニークなPMACと呼ぶ。いくつかの実施形態では、異なるテナントのための異なる論理ネットワークは、ホストマシン内で互いに安全に分離されるため、同じホストマシン上で動作する異なるテナントのための異なるMPREは、すべて、(他のホストマシンからアクセス可能となるために)そのホストマシンの同じPMACアドレスを使用することができる。いくつかの実施形態では、各MPREがそのホストマシンのPMACと関連付けられるだけでなく、各論理インタフェースが、LMACと呼ばれるそれ自体のユニークなMACアドレスと関連付けられる。
【0078】
いくつかの実施形態では、MPREを離れる各パケットは、送信元アドレスとしてMPREのVMACを有するが、ホストマシンは、パケットが、PNICに入り、物理ネットワークのためのホストを離れる前に、送信元アドレスを、ホストマシンのユニークなPMACに変更することになる。いくつかの実施形態では、MPREに入る各パケットは、その宛先アドレスとして、MPREのVMACを持たなければならない。物理ネットワークからホストに到達するパケットについて、ホストは、宛先アドレスがホストマシンのユニークなPMACアドレスである場合、宛先MACアドレスを一般的なVMACに変更することになる。いくつかの実施形態では、ホストマシンのPMACは、そのアップリンクモジュール(例えば、370)のプロパティとして実装され、アップリンクモジュールは、出力パケットの送信元MACアドレスを、一般的なVMACから、そのユニークなPMACに変更し、入力パケットの宛先アドレスを、そのユニークなPMACから、一般的なVMACに変更する。
【0079】
図12は、いくつかの実施形態に関する、共通VMAC及びユニークなPMACによってアドレス指定可能なMPREを有する論理ネットワーク1200を示す。図示のように、論理ネットワーク1200は、2つの異なるホストマシン1201及び1202を含む。ホストマシン1201は、MPRE1211、MPSE1221、及びいくつかの仮想マシン1231を含む。ホストマシン1202は、MPRE1212、MPSE1222、及びいくつかの仮想マシン1232を含む。2つのホストマシンは、物理ネットワーク1290によって相互接続される。MPSE1222は、PNIC1282及びアップリンクモジュール1242を介して、物理ホストからデータを受信する。
【0080】
ホスト1201内のMPRE1211は、VMACアドレス12:34:56:78:90:abを使用することによって、VM1231によってアドレス指定可能である。MPRE1211及びMPRE1212が、異なるホストマシン内の(同じLREのための)異なるMPREであっても、ホスト1202内のMPRE1212も、同じVMACアドレス12:34:56:78:90:abを使用することによって、VM1232によってアドレス指定可能である。図示しないが、いくつかの実施形態では、異なるテナントのための異なる論理ネットワーク内のMPREは、同じVMACアドレスを使用することもできる。
【0081】
MPRE1211及びMPRE1212は、また、他のホストマシン内の他のネットワークエンティティによって、物理ネットワークからのそれ自体のユニークなPMACアドレスによって、それぞれアドレス指定可能である。図示のように、MPRE1211は、それ自体のユニークなPMACアドレス11:11:11:11:11:11(PMAC1)と関連付けられ、MPRE1212は、それ自体のユニークなPMACアドレス22:22:22:22:22:22(PMAC2)と関連付けられる。
【0082】
図12は、別のホストマシン上のリモートMPREに送信されるデータトラフィックの一例も示す。リモートMPREは、MPREとは異なり、物理ネットワークから入ってくるパケットのための一般的なVMACによって直接アドレスされることができない。リモートホスト内のMPREは、リモートMPREのユニークなPMACアドレスによってのみアドレスされることが可能である。リモートホスト内で動作する仮想化ソフトウェアは、いくつかの実施形態では、L2スイッチングを実行する前に、ユニークなPMACアドレスを一般的なVMACに変更し戻す。
【0083】
図12は、「1」、「2」、「3」、及び「4」とラベル付けされた4つの動作での、ホスト1201内のMPRE1211からホスト1202内のMPRE1212へのトラフィックを示す。動作「1」では、VM1231は、一般的なVMACアドレスを使用して、パケットをそのMPRE1211に送信する。このパケットは、トラフィックのための意図された宛先に対応する宛先IPアドレス(図示せず)も有することになる。動作「2」では、ホスト1201のMPRE1211は、宛先アドレスとしてMPRE1212のユニークな物理MAC「PMAC2」を使用することによって、ホスト1202のMPRE1212にパケットを送信する。この変換を実行するために、いくつかの実施形態では、MPRE1211は、宛先IPアドレスに対応する宛先MACアドレス(PMAC2)を識別するために、そのARPテーブル内でルックアップしている(又は、ARPを実行している)ことになる。
【0084】
動作「3」では、データパケットは、その物理NICを介してホスト1202に到達し、アップリンクモジュール1242(ホスト1202上で動作する仮想化ソフトウェアの一部)に到着する。アップリンクモジュール1242は、今度は、MPRE1212のユニークなPMAC(「PMAC2」)を、宛先アドレスとして一般的なVMACに変換する。動作「4」では、データパケットは、MPSE1222に到達し、MPSE1222は、一般的なVMACに基づいて、パケットをMPRE1212に転送する。
【0085】
図13は、1つのVMから、共通VMAC及びネットワーク1200のためのユニークなPMACを使用する別のVMにルーティングされるL3ネットワークトラフィックの一例を示す。ネットワークトラフィックは、ホストマシン1201内のVM1331から発信される、ホストマシン1202内のVM1332宛のデータパケットである。例示的なルーティングされるL3トラフィックは、「1」〜「4」とラベル付けされた4つの動作に示される。動作「1」の間、リンク層L2アドレス「MAC1」を有するVM1331は、宛先アドレスとしてMPREの共通VMACを使用することによって、データパケットをMPRE1211に送信する。動作「2」の間、MPRE1211は、宛先IPアドレスを、リンク層L2アドレス「MAC2」を有する宛先VMのための宛先MACアドレスに解決することによって、L3レベルルーティングを実行する。MPRE1211は、また、VM1331のMACアドレス「MAC1」を、送信元MACアドレスとしてそれ自体のユニークな物理リンク層アドレス「PMAC1」(11:11:11:11:11:11)に置き換える。動作3では、ルーティングされたパケットは、MPSE1222に到達し、MPSE1222は、宛先MACアドレス「MAC2」にしたがって、データパケットを宛先VM1232に転送する。動作「4」では、データパケットは、宛先仮想マシン1232に到達する。いくつかの実施形態では、VM1332は、標準的な(非ARP)データトラフィックのための送信元MACアドレスを無視するため、ユニークなPMACが送信元アドレスである場合、ユニークなPMAC(この場合、「PMAC1」)を一般的なVMACに変更する必要はない。
【0086】
上述したように、アップリンクモジュールは、PNICからMPSEへの入力データに前処理を実行し、MPSEからPNICへの出力データに後処理を実行するモジュールである、
図14は、(1242のような)アップリンクモジュールによって実行される前処理動作のためのプロセス1400を概念的に示す。いくつかの実施形態では、プロセス1400の動作は、PNICからホストマシンに入る入口パイプラインとして実装される。
【0087】
プロセスは、(1410で)PNICから(すなわち、外部の物理ネットワークから)パケットを受信すると開始する。プロセスは、データが、VXLAN又はVLANのようなオーバレイネットワークのためのものである場合、(1420で)オーバレイネットワーク処理を実行する。リモートホスト上のVMが、同じVXLANネットワーク内であるがこのホスト上ではないVMにデータパケットを送信する場合、プロセスは、MPSEを介してVMにパケットを転送させる前に、パケットのカプセル化を解除することになる。この動作を実行することによって、アップリンクモジュールは、ホストが、VXLANのためのトンネルエンドポイント(例えば、VTEP)として機能することを可能にする。
【0088】
次に、プロセスは、(1430で)入力データパケット内の宛先MACが、ユニークな物理MAC(PMAC)であるかどうかを判定する。いくつかの実施形態では、ユニークなPMACアドレスは、特定のホストにデータパケットを導くために使用されるが、(MPSEは、MPREのためのポートを、PMACではなくVMACと関連付けるため)ホストのMPREにパケットを送り込むためには使用され得ない。宛先MACがユニークなPMACである場合、プロセスは1445に進む。そうでない場合、プロセスは1435に進む。
【0089】
1435では、プロセスは、入力データパケット内の宛先MACが、ブロードキャストMAC(例えば、ff.ff.ff.ff.ff.ff)であるかどうかを判定する。いくつかの実施形態では、ホストは、ブロードキャストMACを受け入れることになるが、いくつかのブロードキャストパケットは、MPSEに接続されたすべてのVMに送信されるのではなく、最初にMPREによって処理されなければならない。宛先MACが、ブロードキャストMACである場合、プロセスは、ブロードキャストパケットがMPREに進む必要があるかどうかを確認するために、1440に進む。そうでない場合、プロセスは、パケットが、宛先MACを変更することなく、MPSEに進むことを可能にするために、1450に進む。
【0090】
1440では、プロセスは、ブロードキャストMACを有するパケットが、MPREに転送される必要があるかどうかを判定する。いくつかの実施形態では、特定のタイプのブロードキャストメッセージのみが、MPREが関心を持つものであり、これらのタイプのブロードキャストメッセージのみが、そのブロードキャストMACアドレスを一般的なVMACに変更しておく必要がある。例えば、ブロードキャストARPクエリメッセージは、MPREが関心を持つものであり、その宛先MACアドレスをVMACに変更しておくことによって、MPREに転送されることになる。ブロードキャストパケットが、MPREに対する対象である場合、プロセスは1445に進む。そうでない場合、プロセスは1450に進む。
【0091】
1445では、プロセスは、宛先MAC(PMACか、ブロードキャストかにかかわらず)を一般的なVMACに置き換え、これらの宛先MACを有するパケットがMPREによって処理されることを確実にする。プロセスは、次に、パケットが、変更された宛先MACを有するMPSEに進むことを可能にするために、1450に進む。次に、プロセス1400は終了する。
【0092】
図15は、アップリンクモジュールによって実行される後処理動作のためのプロセス1500を概念的に示す。いくつかの実施形態では、プロセス1500の動作は、PNICを介してホストマシンから離れるパケットのための出口パイプラインとして実装される。プロセスは、(1510で)MPSEからアップリンクモジュールでパケットを受信すると開始する。プロセスは、次に、(1520で)パケットがリモートホストのためのものであるかどうかを判定する。パケットの宛先アドレスが、ローカルホストマシン内(例えば、MPRE、又はVMの1つ)のポートを示す場合、プロセスは、パケットを無視し、終了する。そうでない場合、プロセスは1530に進む。
【0093】
1530では、プロセスは、送信元MACアドレスが、一般的なVMACであるかどうか、すなわち、パケットが、MPREからのものであるかどうかを判定する。そうである場合、プロセスは1540に進む。そうでない場合、プロセスは1550に進む。1540では、プロセスは、送信元MACアドレスとして、VMACを、MPREのユニークなPMACに置き換える。これは、パケットの受信側が、そのユニークなPMACアドレスを使用することによって、送信側MPREを正確に識別できることを保証する。
【0094】
プロセスは、次に、データが、VXLAN又はVLANのようなオーバレイネットワークのためのものである場合、(1550で)オーバレイネットワーク処理を実行する。ホスト上のVMが、同じVXLANネットワーク内だが別のホスト上の別のVMにデータパケットを送信する場合、プロセスは、VXLANネットワークのVNIを使用して物理ネットワークに注入する前に、フエームをカプセル化する。この動作を実行することによって、アップリンクモジュールは、ホストが、VXLANの下のトンネルエンドポイント(VTEP)として機能することを可能にする。次に、プロセスは、(1560で)パケットを物理NICに転送する。次に、プロセス1500は終了する。
【0095】
B.アドレス解決を実行するためにVDRを使用する
【0096】
上述したように、各LREは、ネットワークセグメントのそれぞれの中の仮想マシンとインタフェースするための論理インタフェースのセットを有する。いくつかの実施形態では、仮想マシンからみて、ネットワークセグメントの論理インタフェースは、ネットワークセグメント内の仮想マシンのためのデフォルトゲートウェイとしても機能する。LREは各ホストマシン内のMPREを動作させるため、いくつかの実施形態では、(デフォルトゲートウェイのためのARPのような)その論理インタフェースの1つのためのARPクエリを受信するMPREは、クエリを他のホストマシンに転送することなく、クエリにローカルに応答する。
【0097】
図16は、論理ネットワーク1600内のVDR/LRE MPREの論理インタフェースのためのARPクエリ動作を示す。論理ネットワーク1600は、少なくとも2つのホストマシン1601及び1602間に分散される。ホストマシン1601は、MPRE1611を有し、ホストマシン1602は、MPRE1612を有する。各MPREは、論理ネットワークのセグメントAのための論理インタフェース(LIF A)、及び、セグメントBのための論理インタフェース(LIF B)を有する。(MPRE1611は、LIF A1621及びLIF B1631を有し、MPRE1612は、LIF A1622及びLIF B1632を有する。)ホストマシン1601は、MPRE1611のLIF Aを使用するセグメントA VM1629を有する。ホストマシン1602は、MPRE1612のLIF Bを使用するセグメントB VM1639を有する。
【0098】
各LIFは、IPアドレスと関連付けられる。しかしながら、図示のように、MPRE1611のLIF A1621、及び、MPRE1612のLIF A1622は、両方とも同じIPアドレス(10.1.1.253)を有する。これは、セグメントA(サブネット10.1.1.x)のデフォルトゲートウェイのIPアドレスである。同様に、MPRE1611のLIF B1631、及び、MPRE1612のLIF B1632は、両方とも同じIPアドレス(10.1.2.253)を有する。これは、セグメントB(サブネット10.1.2.x)のデフォルトゲートウェイのIPアドレスである。
【0099】
図は、「1」〜「6」とラベル付けされた動作で、VM1629及び1639によって形成される2つのARPクエリを示す。動作「1」では、セグメントAの仮想マシン1629は、そのセグメントのデフォルトゲートウェイのためのARPクエリを作成する。ARPクエリメッセージは、宛先IPアドレスとしてLIF AのIPアドレス(10.1.1.253)を使用し、宛先MACアドレスとしてブロードキャストMACを使用する。動作「2」の間に、LIF A1621は、IPアドレス「10.1.1.253」をすべてのMPREのためのVMACアドレスに解決することによって、ARPクエリに応答する。さらに、LIF A1621は、ARPクエリメッセージを物理ネットワークに渡さない。これは、他のホストマシン内の他のVDR/LRE MPRE上のLIF A(例えば、ホストマシン1602上のLIF A1622)のような、LIF Aと同じIPアドレス「10.1.1.253」を有するネットワーク内の他のエンティティが応答するのを防ぐ。動作「3」では、VM1629は、ARP応答メッセージを受信し、その解決テーブルを更新し、デフォルトゲートウェイのIPアドレスをMACアドレス「VMAC」に解決する。この応答メッセージの宛先MACアドレスは、元の問い合わせ元のMACアドレス(すなわち、VM1629のための「MAC1」)であり、送信元MACアドレスは、MPREの新たに解決されたMACアドレス「VMAC」である。VM1629は、次に、その後に送信するルーティングする必要があるパケットをアドレス指定するために、MPRE1611にその後にアクセスするために、このエントリを、その解決テーブルに格納する。動作「4」、「5」、及び「6」は、動作「1」、「2」、及び「3」の類似した動作であり、MPRE1612のLIF B1632は、ARPクエリメッセージを物理ネットワークに渡すことなく、セグメントB VM1639によるARP要求に応答する。VM1639によるARP要求は、異なるMPRE上の異なるLIFに送信されるが、同じアドレス「VMAC」が、ARP応答で使用される。
【0100】
仮想マシンが、デフォルトゲートウェイのMACアドレスを一旦知ると、MPREの論理インタフェースをアドレス指定するためにVMACを使用することによって、データパケットを他のネットワークセグメントに送り込むことができる。しかしながら、MPREが、(例えば、宛先仮想マシンのための)宛先IPアドレスが解決される先のリンク層MACアドレスを知らない場合、MPREは、このアドレスを解決する必要がある。いくつかの実施形態では、MPREは、このようなアドレス解決情報を、他のホストマシン内の同じLREの他のMPREから、又は、コントロールクラスタから得ることができる。いくつかの実施形態では、MPREは、そのMACアドレスを決定するために、宛先仮想マシンのネットワークセグメント内で、それ自体のARPクエリを開始することができる。このようなARP要求を行う場合、MPREは、物理ネットワーク上で他のMPREに送信されるパケットのための送信元アドレスとして、一般的なVMACアドレスではなく、それ自体のユニークなPMACアドレスを使用する。
【0101】
図17は、いくつかの実施形態のMPREが開始したARPクエリを示す。具体的には、図は、MPREが、それ自体のARPクエリを開始するためにそれ自体のPMACアドレスを使用する、論理ネットワーク1700の実装を示す。図示のように、論理ネットワーク1700の実装は、少なくとも2つのホストマシン1701及び1702を含む。ホストマシン1701上にあるのは、セグメントA内のVM1731、セグメントAのための論理インタフェース1721を有するMPRE1711、及び、物理ネットワークからデータを受信するためのアップリンクモジュール1741である。ホストマシン1702上には、セグメントB内のVM1732、セグメントBのための論理インタフェース1722を有するMPRE1712、及び、物理ネットワークからデータを受信するためのアップリンクモジュール1742が存在している。一般的なVMACに加えて、MPRE1711は、ユニークな物理MACアドレス「PMAC1」を有し、MPRE1712は、ユニークな物理MACアドレス「PMAC2」を有する。
【0102】
「1」〜「8」とラベル付けされた動作では、図は、セグメントB内のVM1732のための、ホストマシン1701からMPRE1711によって開始されたARPクエリを示す。動作「1」の間に、(セグメントA内の)IPアドレス10.1.1.1を有するVM1731は、パケットを、(セグメントB内の)宛先ネットワーク層アドレス10.1.2.1に送信し、宛先ネットワーク層アドレス10.1.2.1は、そのMPRE1711によるL3ルーティングを要求する。VM1731は、そのデフォルトゲートウェイのL2リンク層アドレスが「VMAC」であることを(例えば、以前のARPクエリから)すでに知っており、したがって、宛先IPアドレスが別のセグメント内であるため、VM1731は、VMACを使用することによって、データパケットを直接MPRE1711に送信する。
【0103】
動作「2」の間に、MPRE1711は、宛先VM1732のためのL2リンク層アドレスを有していないことを(例えば、そのアドレス解決テーブルをチェックすることによって)判定し、したがって、宛先IP「10.1.2.1」のためのARPクエリを開始する。このARPクエリは、送信元MACアドレスとして、MPRE1711のユニークな物理MACアドレス(「PMAC1」)を使用し、宛先MACとしてブロードキャストMACアドレスを使用する。MPRE1711は、宛先IP「10.1.2.1」がセグメントB内であることを判定するために、パケットにL3ルーティングも実行しており、したがって、送信元IPを「10.1.2.253」(すなわち、LIF BのIPアドレス)に変更する。ブロードキャストARPメッセージは、ホスト1702に到達するために、物理ネットワークを横断する。いくつかの実施形態では、論理ネットワークが、追加のホスト(すなわち、MPREのような追加のローカルLREインスタンシエイションを有する追加のホスト)にまたがる場合、ARPメッセージは、同様にこれらの他のホストに送信されることになる。
【0104】
動作「3」の間、ブロードキャストARPクエリは、ホスト1702上で動作するアップリンクモジュール1742に到着し、アップリンクモジュール1742は、ブロードキャストMACアドレス(「ffffffffffff」)を、MPREのすべてに一般的な「VMAC」に置き換え、そのため、ホスト1702内のMPSEは、ARPクエリパケットをMPRE1712に転送することになる。送信元アドレス「PMAC1」は、送信側MACアドレス1711に対してユニークであるが、修正されたARPクエリ内にとどまる。
【0105】
動作「4」の間、ホスト1702のMPRE1712は、VMACが宛先アドレスであることを理解するため、ARPクエリを受信する。MPRE1712は、宛先IPアドレス10.1.2.1を解決することができず、そこで、VM1732を含むセグメントB上にあるホスト1702の任意のローカルVMへのブロードキャスト(宛先「ffffffffffff」)として、LIF B1722を介してARPクエリを転送する。ARPクエリは、VM1732のための(セグメントBのための)アウトバウンドLIF1722を介して、MPRE1712を出て行く。
【0106】
動作「5」の間、送信元MACアドレスとして「VMAC」を有するブロードキャストARPクエリは、VM1732に到達し、VM1732は、ARPクエリに対する応答メッセージを、LIF B1722を介してMPRE1712に送信する。応答メッセージでは、VM1732は、L3ネットワーク層アドレス「10.1.2.1」に対応するL2レベルリンクアドレスが、そのアドレス「MAC2」であることを示し、応答が、一般的なMACアドレス「VMAC」を使用して、要求側のMPRE1712に送信されるべきであることを示す。MPRE1712は、また、それ自体のARP解決テーブル1752を、「10.1.2.1」について更新し、そのため、将来的にARPプロキシとして機能することができる。
【0107】
動作「6」の間、MPRE1712は、応答している(IP10.1.1.253がMAC「PMAC1」に解決することを示している)対象のARPクエリからのMPRE1712によって格納された情報に基づいて、宛先MACアドレスとして「PMAC1」を使用することによって、問い合わせ側MPRE1711に応答パケットを転送する。動作「7」の間、ホスト1702のためのアップリンクモジュール1741は、ホスト1701のMPSEが、パケットをローカルにMPRE1711に転送することになるように、ユニークな「PMAC1」を一般的な「VMAC」に変換する。最終的に、動作「8」では、応答メッセージは、元の問い合わせ側MPRE1711に到達し、MPRE1711は、IPアドレス10.1.2.1のためのアドレス解決(すなわち、「MAC2」)をそれ自体の解決テーブル1751に格納することになり、そのため、VM1731からのパケットをVM1732に転送することができることになる。この時点で、VM1731によって最初に送信されたデータパケットを、VM1732への配信のためにルーティングすることができ、ホスト1702に向けて物理ネットワーク上に送信することができる。
【0108】
MPRE1712は、VM1732のためのアドレスをそれ自体によって解決することができなかったため、ARP問い合わせを伝達しなければならない。しかしながら、一旦MPRE1712が、VM1732からのARP応答を受信すると、アドレス10.1.2.1に関する後続のARPクエリに対して、それ自体によって、ARP問い合わせを伝達する必要なく、応答することができる。
図18は、MPRE1712が解決することができるARP問い合わせに応答するためのプロキシとして機能する、ネットワーク1700内のMPRE1712を示す。
【0109】
図18は、前の図からのホスト1702、並びに別のホストマシン1703を有するネットワーク1700を示す。ホスト1702内のMPRE1712のARP解決テーブル1752は、VM1732のためのIPアドレス10.1.2.1を解決するためのエントリをすでに有する。ホスト1703上には、論理ネットワークのセグメントD上のVM1733、セグメントDのための論理インタフェース1724を有するMPRE1713、及び、物理ネットワークからのデータを受信するためのアップリンクモジュール1743が存在している。一般的なVMACに加えて、MPRE1713は、ユニークな物理MACアドレス「PMAC3」を有する。「1」〜「6」とラベル付けされた動作では、図は、セグメントB内のVM1732のための、ホストマシン1703からMPRE1713によって開始されたARPクエリを示す。
【0110】
動作「1」の間、(セグメントD内の)IPアドレス10.1.5.1を有するVM1733は、パケットを(セグメントB内の)宛先ネットワーク層アドレス10.1.2.1に送信し、これは、そのMPRE1713によるL3ルーティングを必要とする。VM1733は、そのデフォルトゲートウェイのL2リンク層アドレスが「VMAC」であることを(例えば、以前のARPクエリから)すでに知っており、したがって、宛先IPアドレスが別のセグメント内であるため、VM1733は、VMACを使用することによって、データパケットを直接MPRE1713に送信する。
【0111】
動作「2」の間に、MPRE1713は、宛先VM1732のためのL2リンク層アドレスを有していないことを(例えば、そのアドレス解決テーブルをチェックすることによって)認識し、したがって、宛先IP「10.1.2.1」のためのARPクエリを開始する。このARPクエリは、送信元MACアドレスとして、MPRE1713のユニークな物理MACアドレス(「PMAC3」)を使用し、宛先MACとしてブロードキャストMACアドレスを使用する。MPRE1713は、宛先IP「10.1.2.1」がセグメントB内であることを判定するために、パケットにL3ルーティングも実行しており、したがって、送信元IPを「10.1.2.253」(すなわち、LIF BのIPアドレス)に変更する。このブロードキャストARPメッセージは、ホスト1702に到達するために、物理ネットワークを横断する。加えて、図示しないが、ホスト1701は、MPRE1711を有するため、ブロードキャストARPメッセージは、このホスト1701にも到達することになる。
【0112】
動作「3」の間、ブロードキャストARPクエリは、ホスト1702上で動作するアップリンクモジュール1742に到着し、アップリンクモジュール1742は、ブロードキャストMACアドレス(「ffffffffffff」)を、MPREのすべてに一般的な「VMAC」に置き換え、そのため、ホスト1702内のMPSEは、ARPクエリをMPRE1712に転送することになる。送信元アドレス「PMAC3」は、送信側MPRE1713に対してユニークであるが、修正されたARPクエリ内にとどまる。
【0113】
動作「4」の間、MPRE1712は、それ自体の解決テーブル1752を調べ、IPアドレス10.1.2.1をMAC2に解決することができることを認識する。MPREは、したがって、ARPクエリをそのセグメントBのすべてのVMに転送するのではなく、物理ネットワークを介して宛先アドレス「PMAC3」にARP応答を送信する。LIF B1722及びVM1732は、この場合では、ARP応答動作に関与しない。
【0114】
動作「5」の間、ホスト1703のためのアップリンクモジュール1743は、ホスト1703のMPSEが、パケットをローカルにMPRE1713に転送することになるように、ユニークな「PMAC3」を一般的な「VMAC」に変換する。最終的に、動作「6」では、応答メッセージは、元の問い合わせ側MPRE1713に到達し、MPRE1713は、IPアドレス10.1.2.1のためのアドレス解決(すなわち、「MAC2」)をそれ自体の解決テーブル1753に格納することになり、そのため、VM1733からのパケットをVM1732に転送することができることになる。この時点で、VM1733によって最初に送信されたデータパケットを、VM1732への配信のためにルーティングすることができ、ホスト1702に向けて物理ネットワーク上に送信することができる。
【0115】
図17及び18は、送信側MPREと異なるホストマシン内にある仮想マシンのためのARP問い合わせでのユニークなPMACの使用を示す。しかしながら、いくつかの実施形態では、このARPメカニズムは、送信側MPREと同じホストマシン内で動作している仮想マシンのアドレスを解決するのとちょうど同じように動作する。
図19は、送信側MPREと同じホストマシン内にある仮想マシンのためのARP問い合わせでのユニークなPMACの使用を示す。
【0116】
図19は、
図17のネットワーク1700内で行われる別のARP問い合わせを示す。
図19に示すように、ホスト1702内には、MPRE1712に加えて、別のセグメントBのVM1734及びセグメントCのVM1735も存在している。MPRE1712は、VM1735のようなセグメントC内のVMとインタフェースするための論理インタフェース1723を有する。
図19は、MPRE1712によって開始されるARP動作を示す。このARP動作は、MPRE1712が、両方がホスト1702上に存在するセグメントC内のVM1735からセグメントB内のVM1734にパケットをルーティングシなければならないため、開始される。開始側MPRE1711が、別のホストマシン内のVMに関して問い合わせしている、
図17に示すARP動作とは異なり、
図19に示すARP動作は、開始側MPRE1712と同じホストマシン内に位置するVMのためのものである。
【0117】
「1」〜「9」とラベル付けされた動作では、図は、セグメントB内のVM1734のための、MPRE1712によって開始されたARPクエリを示す。動作「1」の間、(セグメントC内の)IPアドレス10.1.3.1を有するVM1731は、パケットを(セグメントB内の)宛先ネットワーク層アドレス10.1.2.2に送信し、これは、そのMPRE1712によるL3ルーティングを必要とする。VM1735は、そのデフォルトゲートウェイのL2リンク層アドレスが「VMAC」であることを(例えば、以前のARPクエリから)すでに知っており、したがって、宛先IPアドレスが別のセグメント内であるため、VM1735は、VMACを使用することによって、データパケットを直接MPRE1712に送信する。
【0118】
動作「2」の間、MPRE1712は、宛先VM1734のためのL2リンク層アドレスを有していないことを(例えば、そのアドレス解決テーブルをチェックすることによって)判定し、したがって、ネットワークセグメントB内の宛先IP10.1.2.1のためのARPクエリを開始する。ARPクエリは、セグメントB上のホスト1702、並びに、(ホスト1701のような)他のホストのすべてのローカルVMにブロードキャストされることになる。
【0119】
動作「3」の間、MPRE1712は、ARPクエリを、VM1734を含むすべてのローカルセグメントBのVMに、LIF B1722を介してブロードキャストする。このブロードキャストは、ホスト1702内のローカルであるため、送信元アドレスは、一般的なVMACのままである。動作「4」の間、ホスト1702内の(セグメントBで)ローカルにブロードキャストされたARPクエリは、VM1734に到達し、VM1734は、ARPクエリに対する応答メッセージを送信する。
【0120】
動作「3」及び「4」と同時に、MPRE1712は、動作「5」の間、ARP要求を他のホストにもブロードキャストする。このブロードキャストメッセージは、その宛先MACとしてブロードキャストMACアドレスを使用し、送信元MACアドレスとして(例えば、物理NICに送信される前にアップリンクによって修正されるような)MPRE1712のユニークなPMAC「PMAC2」を使用する。MPRE1712は、宛先IP「10.1.2.2」がセグメントB内であることを判定するために、パケットにL3ルーティングも実行し、したがって、送信元IPを「10.1.2.253」(すなわち、LIF BのIPアドレス)に変更する。動作「6」で、ブロードキャストARPは、そのアップリンクモジュール1741が宛先MACをそのMPRE1711のための一般的なVMACに変更したホスト1701に到達する。しかしながら、(いくつかの実施形態では、これらのホストが、それらのセグメントBのVMにARPを転送するが)IP10.1.2.2に対応するものがないため、他のホストからのARP応答はない。
【0121】
動作「7」の間、VM1734は、動作「4」の間に受信したARPクエリに対する応答メッセージを生成する。応答メッセージは、L2アドレス「MAC4」が、要求されたL3ネットワーク層アドレス「10.1.2.2」に対応することを示し、応答が、その一般的なMACアドレス「VMAC」を使用して、要求側のMPREに送信されるべきであることを示す。動作「8」の間、VM1734によって生成されたARP応答は、LIF B1722を介してMPRE1712に入る。最終的に、動作「9」では、VM1735からの(最初に送信されたデータパケットを含む)パケットをVM1734に転送することができるように、MPRE1712は、IPアドレス10.1.2.2のためのアドレス解決(すなわち、「MAC4」)を、それ自体の解決テーブル1752に格納する。
【0122】
図20及び21は、MPREが、それらの解決テーブルを更新した後の、異なるセグメントのVM間でデータトラフィックを送信するための動作を示す。具体的には、
図20及び21は、ホスト1701のMPRE1711、及びMPRE1712が、
図17及び19に示すように、以前のARPクエリによってそれらの解決テーブルを更新した後の、VM1731、1732、及び1735間のネットワーク1700に関するデータトラフィックを示す。
【0123】
図20は、セグメントAのVM1731及びセグメントCのVM1735から、セグメントBのVM1732へのデータパケットのルーティングを示す。ルーティングは、MPRE1711及び1712内で行われ、MPRE1711及び1712は、それぞれ、送信側VM1731及び送信側VM1735のためのMPREである。MPRE1711は、ルーティングルックアップのための解決テーブル1751を使用し、MPRE1712は、ルーティングルックアップのための解決テーブル1752を使用する。
【0124】
動作「1」〜「3」は、セグメントAのVM1731からセグメントBのVM1732へのデータパケットのルーティングを示す。動作「1」の間、VM1731は、一般的なVMACを使用して、MPRE1711のLIF A1721にパケットを送信する。パケットは、IPアドレス10.1.2.1を宛先とし、IPアドレス10.1.2.1は、VM1731(IPアドレス10.1.1.1)とは異なるネットワークセグメント内であり、したがって、L3層ルーティングを必要とする。動作「2」の間、MPRE1711は、(
図17に示す動作によって学習されるように)解決テーブル1751内のエントリを使用することによって、IPアドレス10.1.2.1をL2アドレス「MAC2」及びセグメントBに解決する。MPRE1711は、それ自体のユニークなL2アドレス「PMAC1」を、物理ネットワークに送出されたパケットのための送信元アドレスとして使用する。MPRE1711は、また、LIF B1725をアウトバウンドLIFとして識別しており、(セグメントBのネットワーク識別子をタグ付けされた)物理ネットワークを介してホスト1702にパケットを送信するために、このLIFを使用する。動作「3」の間、ルーティングされたパケットは、物理ネットワークを横断し、L2アドレスが「MAC2」の宛先VM1732に到着している。
【0125】
動作「4」〜「6」は、データパケットがホスト1702を離れる必要がない、セグメントCのVM1735からセグメントBのVM1732へのデータパケットのルーティングを示す。動作「4」の間、VM1735は、一般的なVMACをパケットの宛先MACとして使用して、MPRE1712のLIF C1723にパケットを送信する。パケットは、IPアドレス10.1.2.1を宛先とし、IPアドレス10.1.2.1は、VM1735(IPアドレス10.1.3.1)とは異なるネットワークセグメント内であり、したがって、L3ルーティングを必要とする。動作「5」の間、MPRE1712は、解決テーブル1752内のエントリを使用することによって、IPアドレス10.1.2.1をL2アドレス「MAC2」に解決する。MPRE1712は、また、このパケットは、物理ネットワークのためのホスト1702を決して離れないため、送信元L2MACアドレスとしてVMACを使用する。MPRE1712は、また、LIF B1722をアウトバウンドLIFとして識別しており、ローカルセグメントBのVM1732にパケットを送信するためにこのLIFを使用する。動作「6」の間、データパケットは、MACアドレスが「MAC2」の宛先VM1732に到着する。
【0126】
図21は、セグメントBのVM1732からセグメントAのVM1731及びセグメントCのVM1735に送信されたデータパケットのルーティングを示す。ルーティングは、MPRE1712内で行われ、MPRE1712は、送信側VM1732のためのローカルルータインスタンスである。MPRE1712は、上述したように、ルーティングルックアップのために解決テーブル1752に依存する。MPRE1712は、VM1732のようなセグメントB内のVMとインタフェースするための論理インタフェース1722(LIF B)を有する。MPRE1712は、VM1735のようなセグメントC内のVMとインタフェースするための論理インタフェース1723(LIF C)を有する。MPRE1712は、VM1731のようなセグメントA内のVMとインタフェースするための論理インタフェース1725(LIF A)も有する。
【0127】
動作「1」〜「3」は、セグメントBのVM1732からセグメントAのVM1731へのデータパケットのルーティングを示す。動作「1」の間、VM1732は、一般的なVMACを宛先MACとして使用して、MPRE1712のLIF B1722にパケットを送信する。パケットは、IPアドレス10.1.1.1を宛先とし、IPアドレス10.1.1.1は、VM1732(IPアドレス10.1.2.1)とは異なるネットワークセグメント内であり、したがって、L3層ルーティングを必要とする。データパケットは、LIF B1722をインバウンドLIFとして使用して、MPRE1712に入る。動作「2」の間、MPRE1712は、解決テーブル1752内のエントリを使用することによって、IPアドレス10.1.1.1をL2アドレス「MAC1」に解決する。MPRE1711は、また、LIF A1726をアウトバウンドLIFとして識別しており、(セグメントAのVNIをタグ付けされた)物理ネットワークを介してホスト1701にパケットを送信するために、LIF Aを使用する。いくつかの実施形態では、MPRE1711は、また、送信元MACアドレスとして、一般的な「VMAC」をそれ自体のユニークなL2アドレス「PMAC2」に置き換える。動作「3」の間、ルーティングされたパケットは、MACアドレスが「MAC1」の宛先VM1731に到着する。
【0128】
動作「4」〜「6」は、セグメントBのVM1732からセグメントCのVM1735へのデータパケットのルーティングを示す。動作「4」の間、VM1732は、一般的なVMACをパケットの宛先MACアドレスとして使用して、MPRE1712のLIF B1722にパケットを送信する。パケットは、IPアドレス10.1.3.1を宛先とし、IPアドレス10.1.3.1は、VM1732(IPアドレス10.1.2.1)とは異なるネットワークセグメント内であり、したがって、L3ルーティングを必要とする。動作「5」の間、MPRE1712は、解決テーブル1752内のエントリを使用することによって、IPアドレス10.1.3.1をL2アドレス「MAC3」に解決する。宛先L2アドレス「MAC3」は、MPRE1712と同じホストマシン(ホスト1702)で動作する仮想マシンを示すため、いくつかの実施形態では、MPREは、物理ネットワークにデータパケットを送信しないことになる。MPRE1712は、また、このパケットは、物理ネットワークのためのホスト1702を決して離れないため、送信元L2MACアドレスとしてVMACを使用する。MPRE1712は、また、LIF C1723をアウトバウンドLIFとして識別しており、ローカルセグメントCのVM1735にパケットを送信するためにこのLIFを使用する。動作「6」の間、パケットは、MACアドレスが「MAC3」の宛先VM1735に到着する。
【0129】
いくつかの実施形態に関して、
図22は、入力データパケットのためのアドレス解決を処理するための、いくつかの実施形態のMPREインスタンシエイションによって実行されるプロセス2200を概念的に示す。プロセス2200は、(2210で)データパケットを(例えば、MPSEから)受信すると開始する。このデータパケットは、転送若しくはルーティングする必要がある通常のデータパケットであってよく、又は、応答を必要とするARPクエリであってよい。次に、プロセスは、(2220で)受信したパケットがARPクエリであるかどうかを判定する。データパケットがARPクエリである場合、プロセスは2225に進む。そうでない場合、プロセスは2235に進む。
【0130】
2225では、プロセスは、ARPクエリのための宛先アドレスを解決することができるかどうかを判定する。いくつかの実施形態では、プロセスは、パケットのネットワーク層IPアドレスを解決するための対応するエントリが存在するかどうかを判定するために、それ自体のARP解決テーブルを調べる。プロセスがアドレスを解決することができる場合、2260に進む。プロセスがアドレスを解決することができない場合、2230に進む。
【0131】
2230では、プロセスは、ARPクエリを転送する。ARP要求が、物理ネットワークから来る場合、プロセスは、ARPクエリを、ローカルホストマシン内のVMに転送する。ARP要求が、ローカルホストマシン内のVMから来る場合、プロセスは、要求を、ローカルホストマシン内の他のVMに転送すると共に、他のホストマシン内のMPREによって処理するために、物理ネットワークに転送する。プロセスは、次に、待機し、(2250で)ARP応答を受信し、応答メッセージに基づいて、そのARP解決テーブルを更新する。プロセス2200は、次に、(2260で)ARPクエリメッセージに応答し、終了する。
【0132】
2235では、プロセスは、入力データパケットのための宛先アドレスを解決することができるかどうかを判定する。プロセスが、(例えば、一致するARP解決テーブルエントリを有する)宛先アドレスを解決することができる場合、プロセスは2245に進む。そうでない場合、プロセスは2240に進む。
【0133】
2240では、プロセスは、ARPクエリを生成し、リモートホストマシン並びにローカル仮想マシンに、それ自体のアウトバウンドLIFを介してブロードキャストする。プロセスは、次に、(2242で)そのARPクエリのための応答を受信し、そのARPテーブルを更新する。プロセス2200は、次に、(2245で)解決したMACアドレスにしたがってデータパケットを転送し、終了する。
【0134】
C.非VDRホストマシンのためのルーティングエージェントとしてのVDR
【0135】
いくつかの実施形態では、基礎的な物理ネットワーク上のネットワークトラフィックを生成し、受け入れるホストマシンのすべてが、仮想化ソフトウェアを実行し、VDRを動作させるというわけではない。いくつかの実施形態では、これらのホストのうちの少なくともいくつかは、仮想化ソフトウェアをまったく実行せず、どのような仮想マシンもホストしない物理ホストマシンである。これらの非VDR物理ホストマシンのいくつかは、基礎的な物理ネットワークに組み込まれた(ファイラ又は別の非ハイパーバイザ/非VMネットワークスタックのような)レガシネットワーク要素であり、L3層ルーティングのための独立型のルータに依存するように使用される。これらの非VDR物理ホストマシンのためのL3層ルーティングを実行するために、いくつかの実施形態は、これらの非VDRホストマシンのための専用ルーティングエージェント(指定されたインスタンス又は指定されたMPRE)として機能するためにホストマシン上で動作するローカルLREインスタンシエイション(すなわち、MPRE)を指定する。いくつかの実施形態では、このような非VDR物理ホストとの間のL2トラフィックは、指定されたMPREを経由する必要なく、ホストマシン内のMPSE(例えば、320)のローカルインスタンスによって処理される。
【0136】
図23は、物理ホストとの間のパケットのL3ルーティングを処理するためのMPREを指定する論理ネットワーク2300の実装を示す。図示のように、ネットワーク2300は、ホストマシン2301〜2309を含む。ホストマシン2301及び2302は、それぞれ、MPRE2311及び2312を動作させる仮想化ソフトウェアを実行している(MPRE2313〜2318を実行する他のホストマシン2303〜2308は、図示されない)。両方のホストマシン2301及び2302は、いくつかの仮想マシンをホストしており、各ホストマシンは、MPREを動作させている。これらのMPREの各々は、論理ネットワーク2300のセグメントA、B、及びCのための論理インタフェース(LIF A、LIF B、及びLIF C)を有する。すべてのMPREは、それ自体のホスト内の仮想マシンによってアドレスされる場合、一般的な「VMAC」を共有する。両方のMPRE2311及び2312は、それら自体のユニークなPMAC(「PMAC1」及び「PMAC2」)も有する。
【0137】
ホストマシン2309は、仮想化ソフトウェアを実行せず、L3層ルーティングのためのそれ自体のMPREを持たない物理ホストである。物理ホスト2309は、IPアドレス10.1.2.7と関連付けられ、MACアドレス「MAC7」を有する(すなわち、物理ホスト2309は、ネットワークセグメントB内にある)。物理ホスト2309からのデータを、別のネットワークセグメント上の仮想マシンに送信するために、物理ホストは、データを(物理ネットワーク及びL2スイッチを介して)、物理ホスト2309のための指定されたMPREであるMPRE2312に送信しなければならない。
【0138】
図24は、論理ネットワーク2300内の非VDR物理ホスト2309によって開始されるARP動作を示す。図示のように、論理ネットワーク2300内のホストマシン2301〜2304の各々は、MPRE(それぞれ、2311〜2314)を有し、各MPREは、ユニークなPMACアドレス(MPRE2313のための「PMAC3」、MPRE2314のための「PMAC4」)を有する。各MPREは、IPアドレス10.1.2.253を有するセグメントBのための論理インタフェース(LIF B)を有する。しかしながら、ホストマシン2302内のMPRE2312のみが、「指定されたインスタンス」であり、それのみが、物理ホスト2309からのARPクエリブロードキャストメッセージに応答することになる。
【0139】
ARP動作は、動作「1」、「2」、「3」、及び「4」で示される。動作「1」の間、物理ホスト2309は、そのデフォルトゲートウェイ「10.1.2.253」のためのARPクエリメッセージを物理ネットワーク上にブロードキャストする。上述したように、IPアドレス「10.1.2.253」は、MPRE2311〜2314のすべてに存在するLIF Bに関連付けられている。しかしながら、ホスト2302のMPRE2312のみが、物理ホスト2309のための指定されたインスタンスであり、MPRE2312のみが、ARPクエリに応答することになる。いくつかの実施形態では、セクションIIIで後述するように、コントローラ(又は、コントローラのクラスタ)が、特定のセグメントのための指定されたインスタンスとして、MPREの1つを指定する。
【0140】
動作「2」の間、MPRE2312は、物理ホスト2309からARPクエリメッセージを受信し、将来のルーティングのために物理ホストのMACアドレスを解決テーブル2342に記録する。物理ホスト2309のための指定されたインスタンスではないすべての他のMPRE(2301、2302、及び2303)は、ARPを無視する。いくつかの実施形態では、これらの他のMPREは、それにもかかわらず、物理ホストのMACアドレスをそれら自体の解決テーブルに記録することになる。
【0141】
動作「3」の間、MPRE2312は、ARP応答メッセージを物理ホスト2309に送信する。非VDR物理ホストへのこの応答では、送信元MACアドレスは、一般的なVMACではなく、MPRE2312自体のユニークな物理MACアドレス(「PMAC2」)である。これは、物理ホスト2309が、他のMPREインスタンシエイションのいずれかではなく、L3ルーティングのためのMPRE2312のみと通信することを知るようにするためである。最終的に、動作「4」では、物理ホスト2309は、そのデフォルトゲートウェイのユニークな物理MACアドレス(「PMAC2」)を、それ自体の解決テーブル2349に記録する。一旦、指定されたインスタンス及び物理ホスト2309が互いのMACアドレスを有すると、物理ホストと、論理ネットワーク2300の残りの部分との間で、メッセージ交換を開始することができる。
【0142】
図25は、仮想マシン2321及び2322から物理ホスト2309へのパケットのルーティングのための指定されたMPRE2312の使用を示す。図示のように、IPアドレス10.1.1.1(セグメントA)及びMACアドレス「MAC1」を有するVM2321は、ホスト2301上で動作しており、IPアドレス10.1.3.2(セグメントC)及びMACアドレス「MAC4」を有するVM2322は、ホスト2302上で動作している。物理ホスト2309は、IPアドレス10.1.2.7(セグメントB)及びMACアドレス「MAC7」を有する。物理ホスト2309、VM2321、及びVM2322は、すべてネットワークの異なるセグメント内にあるため、VM2321及び2322から物理ホスト2309に横断するデータパケットは、MPREによるL3ルーティングを受けなければならない。VM2322のためのMPREは、物理ホスト2309のための指定されたMPRE(MPRE2312)であり、VM2321のためのMPRE(MPRE2311)ではないことに注意することが重要である。
【0143】
図25は、「1」、「2」、及び「3」とラベル付けされた3つの動作での、VM2322から物理ホスト2309へのパケットのルーティングを示す。動作「1」の間、セグメントCのVM2322は、そのLIF C2334を介してMPRE2312にパケットを送信する。データパケットは、パケットをMPRE2312に転送するために、ホスト2302上のMPSEのための宛先MACアドレスとして、一般的な「VMAC」を使用する。宛先IPアドレスは、物理ホスト2309のIPアドレスである10.1.2.7である。
【0144】
動作「2」の間、MPRE2312は、宛先IPアドレス10.1.2.7を、物理ホスト2309のMACアドレス「MAC7」に解決するために、そのアドレス解決テーブル2342のエントリを使用する。データパケットが、ホストマシンから物理ネットワーク上に送信される時、MPRE2312は、また、送信元MACアドレスとして、一般的な「VMAC」とは対照的に、それ自体のユニークな物理MACアドレス「PMAC2」を使用する。動作「3」では、MPRE2312は、セグメントBのためのその論理インタフェース(LIF B2332)を使用してデータパケットを送信する。ルーティングされたデータパケットは、その解決されたL2MACアドレス(すなわち、「MAC7」)を使用して、(物理ネットワーク及びL2スイッチを介して)物理ホスト2309に転送される。パケットが物理ホスト2309に到着すると、送信元MACアドレスは、「PMAC2」、すなわち、指定されたインスタンスのユニークな物理MACのままであることは、注目に値する。いくつかの実施形態では、物理ホストは、一般的な「VMAC」を知らないことになり、代わりに、指定されたMPREの「PMAC2」のみと通信する。
【0145】
図25は、また、「4」、「5」、及び「6」とラベル付けされた動作での、VM2321から物理ホスト2309へのパケットのルーティングを示す。VM2322とは異なり、VM2321のMPRE(2311)は、指定されたインスタンスではない。それにもかかわらず、いくつかの実施形態では、そのMPREが物理ホストの指定されたインスタンスではない仮想マシンは、ルーティングされたパケットを物理ホストに送信するためのそれ自体のMPREを依然として使用する。
【0146】
動作「4」の間、セグメントAのVM2321は、そのLIF A2333を介して、MPRE2311にパケットを送信する。データパケットは、パケットをMPRE2311にルーティングするために、仮想ルータのためのMACアドレスとして、一般的な「VMAC」を使用する。宛先IPアドレスは、物理ホスト2309のIPアドレスである10.1.2.7である。
【0147】
動作「5」の間、MPRE2311は、宛先IPアドレス10.1.2.7が物理ホストのためのものであること、及び、それが物理ホスト2309のための指定されたMPREではないことを判定する。いくつかの実施形態では、各MPREインスタンシエイションは、その論理インタフェースの構成の一部として、各々の特定のLIFのための指定されたインスタンスであるかどうかを認識している。いくつかの実施形態では、構成は、また、どのMPREインスタンシエイションが、指定されたインスタンスであるのかを識別する。結果として、MPRE2311は、指定されたMPRE2312から解決情報を取得しようとすることになる。いくつかの実施形態では、所与の物理ホストのための指定されたインスタンスではないMPREは、指定されたMPREを有するホストにクエリを(例えば、UDPチャネルを介して)送信し、IPアドレスの解決を要求することになる。指定されたインスタンスが解決情報を有する場合、解決情報を問い合わせ元のMPREに(例えば、同じUDPチャネルを介して)送り返すことになる。指定されたMPREが、それ自体の物理ホストのIPアドレスを解決することができない場合、物理ホストのIPのためのARP要求を開始し、解決を問い合わせ元のMPREに送り返すことになる。この例では、MPRE2311は、問い合わせメッセージをホスト2302に(すなわち、MPRE2312に)送信することになり、ホスト2302は、(その解決テーブル2342からの)物理ホスト2309のための解決されたMACアドレスをMPRE2311に送り返すことになる。
【0148】
動作「6」の間、MPRE2311は、そのLIF B2331を介して物理ホスト2309にデータパケットを送信するために、解決された宛先MACアドレスを使用する。いくつかの実施形態では、MPRE2311は、また、物理ホストのための解決されたアドレスIP10.1.2.7を、そのアドレス解決テーブルに格納する。データパケットのための送信元MACアドレスは、MPRE2311のユニークなPMAC(「PMAC1」)であり、一般的なMACでも、指定されたインスタンスのPMACでもない。これは、ARPパケットではなく、データトラフィックパケットであるため、物理ホストは、セグメントBのVMのためのパケットを送信する先のMACアドレスとして、PMAC1を格納しないことになる。ルーティングされたデータパケットは、その解決されたL2MACアドレス(「MAC7」)を使用して(物理ネットワーク及びL2スイッチを介して)物理ホスト2309に転送される。
【0149】
図26a〜bは、物理ホスト2309から仮想マシン2321及び2322へのパケットのルーティングのための指定されたMPRE2312の使用を示す。上述したように、(セグメントBのIPアドレス10.1.2.7を有する)物理ホスト2309は、仮想マシン2321及び2322とは異なるセグメント上にあり、そのため、物理ホストからこれらの仮想マシンへのデータパケットは、ネットワーク層でルーティングされなければならない。いくつかの実施形態では、特定の物理ホストのための指定されたMPREは、その特定の物理ホストからのパケットへの、又は、特定のセグメント上のすべてのホストのためのL3ルーティングを実行するために、常に使用される。この例では、MPRE2312は、VM2322のみが、指定されたMPRE2312と同じホストマシン2302内で動作しているにもかかわらず、物理ホスト2309を含むセグメントB上の任意の物理ホストからVM2321及び2322の両方へのデータパケットをルーティングするための指定されたMPREである。
【0150】
図26aは、「1」、「2」、及び「3」とラベル付けされた3つの動作での、物理ホスト2309からVM2322へのデータパケットのルーティングを示す。動作「1」では、物理ホスト2309は、パケットをホスト2302に送信する。このパケットは、セグメントC内にあるIPアドレス10.1.3.2を有するVM2322を宛先とする。(
図24のARP動作によって作成された)その解決テーブル2349内のエントリに基づいて、MPREは、デフォルトゲートウェイのIPアドレス10.1.2.253を、MPRE2312のユニークな物理MACアドレスである「PMAC2」として解決する。パケットは、物理ネットワークを介して、ホスト2302のアップリンクモジュール2352に到着する。
【0151】
動作「2」では、アップリンクモジュール2352は、ユニークな「PMAC2」を一般的なVMACに変更し、そのため、パケットは、ホスト2302内で一度適切に転送されることが可能である。パケットは、次に、MPRE2312に到着し、MPRE2312のLIF B2332によって処理される。
【0152】
動作「3」では、MPRE2312は、そのアドレス解決テーブル内の情報を使用して、IPアドレス10.1.3.2をVM2322のための「MAC4」として解決し、データパケットをVM2322に送信する。MPRE2312は、また、物理ホスト2309の送信元MACアドレス「MAC7」を一般的なVMACに置き換える。
【0153】
図26bは、「4」、「5」、及び「6」とラベル付けされた3つの動作での、物理ホスト2309からVM2321へのデータパケットのルーティングを示す。動作「4」では、物理ホスト2309は、物理ネットワークを介して、パケットを、指定されたMPRE2312を動作させるホスト2302に送信する。このパケットは、セグメントA内にあるIPアドレス10.1.1.1を有するVM2321を宛先とする。パケットは、解決テーブル2349内のエントリに基づいて、指定されたMPRE2312のユニークな物理MACアドレスであるL2MACアドレス「PMAC2」にアドレスされる。宛先VM2321が、それ自体のMPRE2311を有するホストマシン2301上にあることは、注目に値する。しかしながら、MPRE2311ではなくMPRE2312が、物理ホストのための指定されたインスタンスであるため、物理ホスト2309は、依然として最初にMPRE2312にパケットを送信する。パケットは、物理ネットワークを介して、ホスト2302のアップリンクモジュール2352に到着する。
【0154】
動作「5」では、アップリンクモジュール2352は、ユニークな「PMAC2」を一般的なVMACに変更し、そのため、パケットは、ホスト2302内で一度適切に転送されることが可能である。パケットは、次に、MPRE2312に到着し、MPRE2312のLIF B2332によって処理される。
【0155】
動作「6」では、MPRE2312は、IPアドレス10.1.1.1を、VM2321のための「MAC1」として解決し、そのLIF A2335を使用して、データパケットをVM2321に送信する。ルーティングされたパケットは、送信元MACアドレスが、指定されたMPRE2312の「PMAC2」であることを示す。MPRE2312及び宛先VM2321は、異なるホストマシン上にあるため、パケットは、実際には、VM2321に到着する前に、ホスト2302上のMPSEを、次に、物理ネットワークを、次に、ホスト2301上のMPSEを介して送信される。
【0156】
図25及び26を参照して上述したように、仮想マシンから物理ホストへのデータトラフィックのためのルーティングは、個々のMPREによって実行され、物理ホストから仮想マシンへのデータトラフィックは、指定されたMPREを通過しなければならない。すなわち、物理ホストへのネットワークトラフィックは、ポイントツーポイントであり、物理ホストからのネットワークトラフィックは、分散される。
図23〜30の論理ネットワーク2300には示されていないが、いくつかの実施形態での論理ネットワークの実装は、複数の非VDR物理ホストを有することができる。いくつかの実施形態では、これらの非VDR物理ホストの各々は、ホストマシンのうちの1つの中の対応する指定されたMPREを有する。いくつかの実施形態では、特定のMPREが、非VDR物理ホストの一部又はすべてのための指定されたインスタンスとして機能することになる。例えば、いくつかの実施形態は、特定のセグメント上のすべての物理ホストのための特定のMPREを指定した。
【0157】
いくつかの実施形態に関して、
図27は、非VDR物理ホストからのL3層トラフィックを処理するためのプロセス2700を概念的に示す。いくつかの実施形態では、プロセス2700は、ホストマシン上で動作する仮想化ソフトウェア内のMPREモジュールによって実行される。いくつかの実施形態では、このプロセスは、
図26a〜bに示す動作の間に、MPRE2311及び2312によって実行される。
【0158】
プロセス2700は、ホストが、L3ルーティングを必要とするデータパケット(すなわち、ネットワークのあるセグメントから来るが、ネットワークの別のセグメントを宛先とするパケット)を受信すると開始する。プロセス2700は、(2710で)パケットが、非MPRE物理ホストからのものであるかどうかを判定する。いくつかの実施形態では、MPREは、この判定を、物理ホスト及びそれらのIPアドレスのリストに対してデータパケット内のIPアドレスを調べることによって行う。いくつかの実施形態では、このようなリストは、ネットワークのコントローラからの構成データのセットの一部である。パケットが既知の物理ホストからのものではない場合、プロセスは2740に進む。
【0159】
2720では、プロセスは、MPREが、データパケットを送信する物理ホストのための指定されたインスタンスであるかどうかを判定する。いくつかの実施形態では、各MPREは、ネットワークコントローラによって構成され、MPREのいくつかは、物理ホストのための指定されたインスタンスとして構成される。これらの実施形態のいくつかでのMPREは、データパケット内で示されるように、物理ホストのための指定されたインスタンスであるかどうかを確認するために、それ自体の構成データを調べることになる。いくつかの他の実施形態では、各MPREは、物理ホストの又はそれ自体のユニークな識別子(例えば、IPアドレス)をハッシュすることによって、示された物理ホストのための指定されたインスタンスであるかどうかを、ローカルに判定する。MPREが、特定の物理ホストのための指定されたインスタンスではない場合、プロセスは、(2725で)物理ホストからのデータパケットを無視し、終了する。そうでない場合、プロセスは2730に進む。
【0160】
2730では、プロセスは、入力データパケットがARPクエリであるかどうかを判定する。そうである場合、プロセスは、(例えば、
図24内のMPRE2312によって実行されるように)(2735で)MPREのユニークな物理MACを有するARPクエリに応答し、終了する。そうでない場合、プロセスは2740に進む。
【0161】
2740では、プロセスは、例えば、(ARPクエリを発行することによって、又は、その解決テーブルからの格納されたARP結果を使用することによって)宛先のL3IPアドレスをそのL2MACアドレスに解決することによって、データパケットにL3ルーティングを実行する。プロセスは、次に、(2750で)解決された宛先MACアドレスに基づいて、ルーティングされたデータパケットを宛先仮想マシンに転送する。宛先VMが、MPREと同じホストマシン上にある場合、データパケットは、ホスト上のMPSEを介してVMに転送されることになる。宛先VMが、異なるホスト上にある場合、データパケットは、物理ネットワークを介して他のホストに転送されることになる。パケットを転送した後、プロセス2700は終了する。
【0162】
いくつかの実施形態に関して、
図28は、非VDR物理ホストへの(例えば、プロセスを実行するMPREと同じホスト上のVMから受信した)L3トラフィックを処理するためのプロセス2800を概念的に示す。いくつかの実施形態では、このプロセスは、
図25に示す動作の間にMPRE2311及び2312によって実行される。
【0163】
プロセス2800は、ホストが、L3ルーティングを必要とするデータパケットを受信すると開始する。プロセス2800は、(2810で)パケットが、非VDR物理ホストを宛先とするかどうかを判定する。パケットが、このような物理ホストを宛先としない場合、プロセスは2840に進む。パケットが、このような物理ホストを宛先とする場合、プロセスは2820に進む。
【0164】
2820では、プロセスは、MPREが、(例えば、物理ホストが属するセグメントに基づいて)データパケットが送信される先の物理ホストのための指定されたインスタンスであるかどうかを判定する。そうである場合、プロセスは2825に進む。MPREが指定されたインスタンスではない場合、プロセスは2830に進む。
【0165】
2830では、プロセスは、指定されたインスタンスからのアドレス解決情報を要求し、取得する。いくつかの実施形態では、これは、UDPチャネルを介して、指定されたインスタンスに要求メッセージを送信し、応答メッセージ内のアドレス解決情報を受信することによって達成される。いくつかの実施形態では、指定されたインスタンスではないMPREは、物理ホストのためのアドレス解決情報を格納せず、物理ホストに送信される各パケットのために、UDPチャネルを介して要求を送信する。他の実施形態では、アドレス解決情報を受信した後、MPREは、将来のパケットをルーティングする際に使用するためにこの情報を格納する。
【0166】
2825では、プロセスは、指定されたインスタンスとして、物理ホストのためのアドレスを解決することができるかどうかを判定する。いくつかの実施形態では、プロセスは、物理ホストのための一致するエントリが存在するかどうかを確認するために、それ自体のARPテーブルを調べる。プロセスがアドレスを解決することができる場合、プロセスは2840に進む。そうでない場合、プロセスは、(2735で)物理ホストのアドレスのためのARP要求を実行し、ARP応答に応じてそのARPテーブルを更新する。いくつかの実施形態では、指定されたインスタンスのみが、物理ホストのためのルーティング情報を保持する。プロセスは、次に2840に進む。
【0167】
2840では、プロセスは、例えば、物理ホストのIPアドレスをそのMACアドレスに解決することによって、データパケットにL3ルーティングを実行する。プロセスは、また、MPREが、データパケット内で示される物理ホストのための指定されたインスタンスであろうとなかろうと、送信元MACアドレスを、MPREのユニークなPMACに設定する。プロセスは、次に、(2850で)解決された宛先MACアドレスに基づいて、ルーティングされたデータパケットを物理ホストに転送する。パケットを転送した後、プロセス2800は終了する。
【0168】
D.異なるオーバレイネットワーク間のブリッジとしてVDRを使用する
【0169】
いくつかの実施形態では、ホストマシンでのLRE動作は、(例えば、あるIPサブネットから別のIPサブネットへの)L3ルーティングだけでなく、同じサブネット内の(VXLANネットワーク及びVLANネットワーク間のような)異なるオーバレイネットワーク間のブリッジングも実行する。いくつかの実施形態では、2つの異なるオーバレイネットワークは、同じIPサブネット内にあるVMを有することが可能である。これらの状況では、あるオーバレイネットワークから別のオーバレイネットワークにデータパケットを送信するために、L3ルーティングは使用されない。代わりに、転送は、ブリッジングに依存し、ブリッジングは、ネットワークセグメント識別子(例えば、VNI、又はその関連する論理インタフェース)、及び、リンク層アドレス(例えば、MACアドレス)間の結びつけ又はペアリングに基づく。
【0170】
いくつかの実施形態では、ホストマシン内の少なくとも1つのローカルLREインスタンシエイションは、ルーティングMPREではなく、ブリッジングMPREとして構成される。ブリッジングMPREは、ルーティング用ではなくブリッジング用に構成された論理インタフェースを含むMPREである。ルーティング用に構成された論理インタフェース(ルーティングLIF)は、IPをMACアドレスに解決することによって、論理ネットワークの異なるセグメント間のL3ルーティングを実行する。ブリッジング用に構成された論理インタフェース(ブリッジングLIF)は、MACアドレスをネットワークセグメント識別子(例えば、VNI)又は論理インタフェースと結びつけ、あるネットワークセグメントから別のネットワークセグメントにパケットを送信する際、パケットのネットワークセグメント識別子を変更することによって、ブリッジングを実行する。
【0171】
図29は、異なるオーバレイネットワーク間のブリッジとして機能するためのブリッジLIFを含むLRE2900を示す。LRE2900の論理インタフェース2901〜2904は、ブリッジLIFとして構成される。具体的には、ブリッジLIF2901は、オーバレイネットワーク「VLAN10」内のMACアドレスを学習し、ブリッジングするためのものであり、ブリッジLIF2902は、オーバレイネットワーク「VLAN20」内のMACアドレスを学習し、ブリッジングするためのものであり、ブリッジLIF2901は、オーバレイネットワーク「VXLAN100」内のMACアドレスを学習し、ブリッジングするためのものであり、ブリッジLIF2901は、オーバレイネットワーク「VXLAN200」内のMACアドレスを学習し、ブリッジングするためのものである。図示のように、異なるオーバレイネットワーク内のVMのうちの少なくともいくつかは、同じIPサブネット「192.168.1.x」内にある。
【0172】
図30は、ブリッジLIF及びルーティングLIFの両方を含む論理ネットワーク3000の実装を示す。図示のように、論理ネットワーク3000は、複数のホストマシン3001〜3009を含み、各ホストマシンは、LREの分散されたインスタンスを動作させる。LREは、VLAN10、VLAN20、VXLAN100、VXLAN200とインタフェースするための論理インタフェースを有する。これらのホストマシン内のローカルLREインスタンスは、ルーティングLIFのみを有するため、LREは、ホスト3001及び3003内で、ルーティングMPRE3011及び3013として動作している。対照的に、その論理インタフェースのすべてが、ブリッジLIFとして構成されるため、LREは、ホスト3002内で、ブリッジングMPRE3012として動作している。図示しないが、いくつかの実施形態では、ホストマシン内で動作するローカルLREインスタンス(すなわち、MPRE)は、B−LIF及びR−LIFの両方を有することができ、したがって、ブリッジングMPRE及びルーティングMPREの両方として機能することができる。したがって、このようなホストマシン上のVMは、依然として、そのローカルMPREを介して他のIPサブネット内の宛先にパケットを送信することができる。
【0173】
いくつかの実施形態では、ローカルLREインスタンスは、1つのホストマシンのみでブリッジングMPREとして機能する(すなわち、ブリッジングLIFのみを有する)ように構成される。いくつかの実施形態では、複数のホストマシンが、ブリッジングMPREとして構成されたそれらのローカルLREインスタンスを有する。いくつかの実施形態では、ブリッジングLIFのセットを有するブリッジングMPREは、また、ブリッジLIFとの間でデータパケットをルーティングするための少なくとも1つのルーティングLIFを有する。いくつかの実施形態では、ブリッジLIFを有するLREインスタンスは、また、ルーティング用の沈降(sedimented)LIF(S−LIF)を有し、S−LIFは、他のLIFとは異なり、分散されず、論理ネットワーク内の1つのホスト内のみでアクティブである。S−LIFによってルーティングされるべきすべてのパケットは、アクティブなS−LIFを有するホストマシンに送信されることになる。
【0174】
いくつかの実施形態では、ブリッジングMPREは、それらが特定のMACアドレスを最初に知る論理インタフェース(又は、関連するネットワークセグメント識別子)を学習し、ブリッジングテーブル(又は、学習テーブル)内でその論理インタフェースをそのMACアドレスと関連付ける。ブリッジが、その後、そのブリッジングテーブル内のエントリと一致する宛先MACアドレスを有するデータフレーム又はパケットを受信すると、ブリッジは、ブリッジングテーブル内の一致するエントリによって示される論理インタフェースにフレームを送出する。いくつかの実施形態では、ブリッジが、パケットの宛先MACアドレスをまだ知らない場合、ブリッジは、データパケットを受信した論理インタフェース以外のすべてのアクティブな論理インタフェースにパケットをフラッドする。パケットを特定のブリッジングインタフェース上に送出する場合、いくつかの実施形態のブリッジングMPREは、関連するネットワークセグメントに関する適切なネットワークセグメント識別子(例えば、8ビットVLANタグ、24ビットVXLAN ID、MPLSラベル、など)を有するようにパケットを修正する。いくつかの実施形態では、ブリッジングMPREを有するホストに障害が発生した場合、ネットワークのコントローラが、ブリッジングMPREとして機能するように別のホストマシン内で動作するMPREを迅速に選択することができるように、ブリッジングテーブルの内容は、あるホストから別のホストに転送されてよい。
【0175】
図31は、ブリッジングMPREによるMACアドレスの学習を示す。図示のように、ホスト3100は、VM3111〜3114及びブリッジングMPRE3130とインタフェースするポートを有するMPSE3120を有する。MPSE3120は、物理NIC3190及び物理ネットワークに接続されたアップリンク(図示せず)を有する。ブリッジングMPRE3130は、それぞれ、オーバレイネットワーク「VLAN10」、「VLAN20」、「VXLAN100」、及び「VXLAN200」のためのブリッジLIF3141〜3144を有する。
【0176】
一般的なVMACにアドレスされたパケットのみを受け入れるルーティングLIFと異なり、ブリッジLIFは、MPSEとのポートを介して知るどのようなMACアドレスも学習することになる。いくつかの実施形態では、MPSEは、送信元MACアドレスのネットワークセグメント又はオーバレイネットワーク内で知ることができない宛先MACアドレスを有するデータパケットのような、スイッチがどのように転送するのかを知らないどのようなデータパケットも、ソフトウェアブリッジに送信することになる。このようなデータパケットは、ブリッジングのためのブリッジングMPREに送信され、ブリッジングMPREは、送信元MACアドレスに関連付けられたネットワークセグメント識別子又は論理インタフェースを学習することになる。
【0177】
図31は、3つの動作「1」、「2」、及び「3」でのこの学習プロセスを示す。動作「1」の間、「VXLAN200」の送信元アドレス「MAC200」及び送信元VNI(本明細書では、任意のネットワークセグメント識別子を表すために使用されるVNI)を有するパケット3170が、物理NIC3190からVM3112に送信されている。このパケットは、VXLAN200とは異なるネットワークセグメント上にある宛先アドレスも有し、したがって、スイッチ3120は、パケットを、ブリッジングのためのブリッジングMPRE3130に転送する。
【0178】
動作「2」では、ブリッジングMPRE3130は、パケットを知り、その送信元MACアドレス(「MAC200」)及びそのネットワーク識別子(「VXLAN200」)を学習する。いくつかの実施形態では、ネットワーク「VXLAN200」をインタフェースするための論理インタフェース3144が、パケットのMACアドレス及びVNIを学習するために使用される。動作「3」では、学習されたMACアドレス及びVNIのペアリングが、ブリッジングテーブル3150のエントリ内に格納される。ブリッジングテーブル3150は、「MAC20」とVNI「VLAN20」のペアリングをすでに学習している。図示していないが、ブリッジングMPRE3130は、また、このパケットを、MACアドレスのための適切なネットワークセグメント識別子を有する正しいブリッジLIFに送出することになる。その後の3つの図で示すように、ブリッジングMPRE3130のブリッジングテーブルが、この宛先MACとブリッジLIFのうちの1つとの間の結びつきを知っている場合、ブリッジLIFは、正しいVNIを含むようにパケットを修正し、次に、識別されたLIFを介してパケットを送出することになる。そうでない場合、
図34を参照して以下に説明するように、ブリッジは、L2学習を実行するために、LIFをフラッドすることになる。
【0179】
図32は、ホスト3100及びブリッジングMPRE3120による、以前に学習したMAC−VNIペアリングを使用する、2つの異なるオーバレイネットワーク上の2つのVM間のブリッジングを示す。図は、3つの動作「1」、「2」、及び「3」でのこのブリッジングプロセスを示す。動作「1」の間、VM3113は、宛先アドレス「MAC20」を有するオーバレイネットワーク「VLAN10」からパケットを送信するが、「MAC20」は、オーバレイネットワーク「VLAN10」内で見つかるアドレスではなく、したがって、パケットは、ブリッジBDR3130に送信される。動作「2」の間、VLAN10のためのブリッジLIF3141は、パケットを受信し、「MAC20」がVNI「VLAN20」と関連付けられていることを以前に学習しているブリッジングテーブル3150内のMACアドレス「MAC20」のためのエントリをルックアップする。したがって、動作「3」の間、(VNI「VLAN20」と関連付けられた)ブリッジLIF3142は、データパケットを、VLAN20内にあり、MACアドレス「MAC20」を有するVM3111に送出する。これらの2つのLIF間のブリッジングを実行するために、いくつかの実施形態のブリッジングMPRE3130は、最初に、VLAN10のためのVNI(すなわち、このVLANのためのVLANタグ)を取り除き、次に、VLAN20のためのVNI(すなわち、このVLANのためのVLANタグ)を追加する。いくつかの実施形態では、ブリッジングMPRE3130は、コントローラクラスタからの構成データの一部として、異なるオーバレイネットワークのためのVNIをどのように除去し、追加するのかについての命令を受信する。
【0180】
図33は、ブリッジングMPRE3130を動作させているホスト3100内で動作していない2つのVM間のブリッジングを示す。上述したように、いくつかの実施形態では、必ずしもすべてのホストマシンが、ブリッジとして構成されたそのLIFインスタンスを有しているわけではない。これらの実施形態のいくつかでは、ブリッジングMPREは、他のホストマシン内の2つのリモートVM間、又は、ローカルVM(すなわち、VM3111〜3114のうちの1つ)及び別のホストマシン内のリモートVM間のブリッジング機能を提供する。
【0181】
図は、3つの動作「1」、「2」、及び「3」でのこのブリッジングプロセスを示す。動作「1」の間、ホスト3100は、物理NIC3190を介してリモートVMからパケットを受信する。パケットは、宛先アドレス「MAC200」を有するオーバレイネットワーク「VXLAN100」からのものであるが、「MAC200」は、オーバレイネットワーク「VXLAN100」内で見つかるアドレスではない。動作「2」の間、VXLAN100のためのブリッジLIF3143は、パケットを受信し、「MAC200」がVNI「VXLAN200」と関連付けられていることを以前に学習しているブリッジングテーブル3150内のMACアドレス「MAC200」のためのエントリをルックアップする。動作「3」の間、(VNI「VXLAN200」と関連付けられた)ブリッジLIF3144は、データパケットを、オーバレイネットワーク「VXLAN200」内のMACアドレス「MAC200」を有するリモートVMのための物理ネットワークに送出する。これらの2つのLIF間のブリッジングを実行するために、いくつかの実施形態のブリッジングMPRE3130は、最初に、VXLAN100のためのVNI(すなわち、24ビットVXLAN ID)を取り除き、次に、VXLAN200のためのVNI(すなわち、24ビットVXLAN ID)を追加する。
【0182】
これらの場合(
図32及び33)の両方で、図示していないが、入力パケットは、送信元MACアドレスを有することになる。
図31でのように、いくつかの実施形態のブリッジングMPRE3130は、これらの送信元アドレスの入力LIFとの結びつきを格納することになる。すなわち、
図32のパケットの送信元アドレスは、VLAN10のLIFと結び付けられるようにブリッジングテーブル内に格納されることになり、
図33のパケットの送信元アドレスは、VXLAN100のLIFと結び付けられるようにブリッジングテーブル内に格納されることになる。
【0183】
図32及び33は、ブリッジングのペアを以前に学習しており、ブリッジングテーブル内で見つけることができる例を示す。
図34aは、宛先MACアドレスが、ブリッジングテーブル内に一致するエントリを持たず、ブリッジングMPRE3130が、ペアリングを探すためにネットワークをフラッドすることになるブリッジング動作を示す。図は、5つの動作「1」、「2」、「3」、「4」、及び「5」でのこのブリッジングプロセスを示す。
【0184】
動作「1」では、ホスト3100は、物理NIC3190を介してリモートVMからパケットを受信する。パケットは、宛先アドレス「MAC300」を有するオーバレイネットワーク「VLAN10」からのものであるが、「MAC300」は、オーバレイネットワーク「VLAN100」内で見つかるアドレスではなく、したがって、パケットは、正しいオーバレイネットワークへのブリッジングを必要とする。パケットは、また、VLAN10上のVMの「MAC400」の送信元アドレスを有する。
【0185】
動作「2」の間、VLAN10のためのブリッジLIF3141は、パケットを受信し、ブリッジングテーブル3150内でMACアドレス「MAC300」に関するエントリをルックアップするが、一致するペアリングを見つけることができない(すなわち、ブリッジングMPRE3130は、MAC300が結び付けられるVNIをまだ学習していない)。加えて、図示していないが、「MAC400」のVLAN10への結びつきが格納される。したがって、動作「3」では、ブリッジングMPRE3130は、(依然として宛先アドレス「MAC300」を有する)データパケットを、VLAN10以外のすべてのVNIに送信することによって、すべての他のブリッジLIF(3142〜3144)をフラッドする。MPSE3120は、このとき、パケットをその正しい宛先にもたらすために、オーバレイネットワーク内の標準的なL2動作を担当している。
【0186】
動作「4」では、異なるVNIにフラッドされたデータパケットは、ホストマシン3100上で動作するVMに到達し、動作「5」では、異なるVNIにフラッドされたデータパケットは、他のホストマシンのための物理NICを介して送出される。いくつかの実施形態では、MPSE3120は、正しいオーバレイネットワークネットワーク上のすべてのVMにパケットをフラッドする。MPSE3120が、MAC300の宛先を知っている場合、パケットをこの知っている宛先に送信することができる。加えて、3つのオーバレイネットワークのすべてに関するパケットが、物理ネットワーク上に送信されるように示されているが、いくつかの実施形態では、MPSEは、宛先アドレスが配置されていない2つのオーバレイネットワークに関するパケットを破棄することになる。
【0187】
図34bは、フラッディングに対する応答からのMACアドレスペアリングの学習を示す。図は、4つの動作「1」、「2」、及び「3」でのこの応答及び学習プロセスを示す。動作「1」では、「VXLAN100」のためのVNIを有する「MAC300」からの応答が、ホストマシン3100に到着する。いくつかの実施形態では、このような応答は、VMが、VLAN10上のオリジナルのパケットの送信元、「MAC400」にパケットを送り返すと、MACアドレス「MAC300」を有するVM又は他のマシンから来る。
【0188】
動作「2」では、データパケットは、ブリッジングMPRE3130に入り、「VXLAN100」のためのブリッジLIF3143によって受信される。動作「4」では、ブリッジングMPRE3130は、「MAC300」を「VXLAN100」と結び付けるエントリでブリッジテーブル3150を更新し、パケットをVLAN10にブリッジングする。この時点から、ブリッジングMPRE3130は、フラッディングに頼ることなく、「MAC300」宛のデータパケットをブリッジングすることができる。
【0189】
いくつかの実施形態に関して、
図35は、VDRを用いる論理ネットワークでブリッジングを実行するためのプロセス3500を概念的に示す。いくつかの実施形態では、プロセスは、ブリッジLIFを有するMPRE(すなわち、ブリッジングMPRE)によって実行される。プロセス3500は、ブリッジングMPREが、MPSEに対するそのポートを介してパケットを受信すると開始する。このパケットは、その現在のVNIと一致しない宛先MACアドレスを有することになり、したがって、ブリッジに送信された。プロセスは、(3505で)パケットが、ブリッジングMPREが以前に知ることがなかった送信元MACアドレスを有するかどうか(すなわち、送信元MACアドレスが、特定のインタフェースと結び付けられるようにそれ自体のブリッジテーブルに格納されているかどうか)を判定する。そうである場合、プロセスは3510に進む。ブリッジングMPREが、以前に送信元MACアドレスを知っていた場合、プロセスは3520に進む。
【0190】
3510では、プロセスは、送信元MACアドレスと、ブリッジングMPREがデータパケットを受信した元のオーバレイネットワーク(又は、ネットワークセグメント)のVNI(すなわち、ブリッジングMPREによる受信時にパケットにタグ付けされたVNI)とをペアリングする新しいエントリで、そのブリッジテーブルを更新する。送信元MACは、VNIによって識別されるネットワークセグメント内にあることが確実であるため、この情報は、その宛先アドレスとして同じMACアドレスを有する将来のパケットをブリッジングするために有用である。この情報は、このMACアドレスとそのVNIとの間のペアリングを提供するために、ブリッジテーブルに格納される。
【0191】
プロセスは、次に、(3520で)宛先MACアドレスのためのエントリを、そのブリッジングテーブル内に見つけることができるかどうかを判定する。ブリッジングMPREが、このMACアドレスからのパケットを以前にブリッジングしている場合、アドレスは、(ブリッジングMPREがタイムアウトしない限り)MAC:VNIペアリングとしてそのテーブル内に格納されているべきである。
【0192】
宛先アドレスが、ブリッジングテーブル内にない場合、プロセスは、(3530で)データパケットが受信された元のオーバレイネットワークのブリッジLIF以外のすべてのブリッジLIFにフラッドする。いくつかの実施形態では、プロセスは、異なるVNIを有するが、同じ宛先MACアドレスを有する異なるオーバレイネットワークに同じデータパケットを送信することによって、すべてのブリッジLIFをフラッドする。パケットがその宛先に到達したと仮定すると、ブリッジMPREは、おそらく宛先から応答パケットを受信することになり、その時点で、プロセス3500の別のインスタンシエイションが、(3505で)ブリッジングMPREにMAC:VNIペアリングを学習させることになる。
【0193】
宛先アドレスが、ブリッジングテーブル内にある場合、プロセスは、(3550で)宛先MACのためのVNIを使用することによって、パケットをその宛先にブリッジする。このVNI−MACペアリングは、ブリッジングテーブル内に見つかり、いくつかの実施形態では、LIF構成は、ブリッジングを実行する方法(すなわち、VNIをパケットに追加する方法)についての命令を含む。パケットをその宛先インタフェースに(又は、フラッディングの場合では、LIFのすべてに)ブリッジングした後、プロセス3500は終了する。
【0195】
いくつかの実施形態では、上述したように(ルーティング及び/又はブリッジングのための)MPREとしてホストマシン内でローカルに動作するLREインスタンシエイションは、コントローラのクラスタによって生成される構成データセットによって構成される。いくつかの実施形態でのコントローラは、異なるテナント又はユーザによって作成及び指定された論理ネットワークに基づいて、これらの構成データセットを生成する。いくつかの実施形態では、ネットワーク仮想化インフラストラクチャのネットワークマネージャは、ユーザが、ネットワーク仮想化インフラストラクチャ上で実装することができる異なる論理ネットワークを生成することを可能にし、次に、これらの論理ネットワークのパラメータをコントローラにプッシュし、そのため、コントローラは、LREのための構成データを含むホストマシンの特定の構成データセットを生成することができる。いくつかの実施形態では、ネットワークマネージャは、コントローラからLREに関する構成データを取得するための命令を、ホストマシンに提供する。
【0196】
いくつかの実施形態に関して、
図36は、ネットワーク仮想化インフラストラクチャ3600を示し、ネットワーク仮想化インフラストラクチャ3600では、論理ネットワークの仕様は、ホストマシン内のLREのための構成に(MPRE/ブリッジとなるように)変換される。図示のように、ネットワーク仮想化インフラストラクチャ3600は、ネットワークマネージャ3610、1つ又は複数のコントローラのクラスタ3620、及び、物理ネットワークによって相互接続されたホストマシン3630を含む。ホストマシン3635〜3639は、この図には示されていないが、ホストマシン3630は、ホストマシン3631〜3639を含む。
【0197】
ネットワークマネージャ3610は、1つ又は複数のユーザ作成論理ネットワークのための仕様を提供する。いくつかの実施形態では、ネットワークマネージャは、ユーザに、ネットワーク仮想化インフラストラクチャ3600上で仮想化することができるユーザ自体の論理ネットワークを指定させるアプリケーションのスイートを含む。いくつかの実施形態では、ネットワークマネージャは、ユーザがプログラミング環境で論理ネットワークを指定するための、アプリケーションプログラミングインタフェース(API)を提供する。ネットワークマネージャは、次に、これらの作成された論理ネットワークを、ホストマシンでの実装のために、コントローラのクラスタ3620にプッシュする。
【0198】
コントローラクラスタ3620は、ネットワーク仮想化インフラストラクチャ3600内のホストマシン3630の動作を制御するための複数のコントローラを含む。コントローラは、ネットワークマネージャによって作成された論理ネットワークに基づいて、ホストマシンのための構成データセットを作成する。コントローラは、また、構成更新及びルーティング情報を、ホストマシン3631〜3634に動的に提供する。いくつかの実施形態では、コントローラは、特定の制御プレーンノードに障害が発生した場合でも、各ホストマシンが、更新及びルートを依然として受信することができることを保証するために、分散型又は弾力性のある制御プレーンアーキテクチャを提供するために編成される。いくつかの実施形態では、コントローラの少なくともいくつかは、ホストマシン内で動作する仮想マシンである。
【0199】
ホストマシン3630は、LREを動作させ、LREをMPRE/ブリッジとして構成するための構成データを、コントローラクラスタ3620から受信する。ホストマシンの各々は、コントローラのクラスタ3620から構成データを回収するためのコントローラエージェントを含む。いくつかの実施形態では、各ホストマシンは、VDR制御プレーンにしたがって、そのMPRE転送テーブルを更新する。いくつかの実施形態では、VDR制御プレーンは、最適なルートをアドバタイズ/決定するために、OSPF(開放型最短経路優先)又はBGP(境界ゲートウェイプロトコル)のような標準的なルート交換プロトコルをルーティングピアに使用することによって通信する。
【0200】
図36は、また、ホストマシン3630内のLREを構成するために、ネットワーク仮想化インフラストラクチャ3600内で行われる動作を示す。動作「1」では、ネットワークマネージャ3610は、LREのための構成を取得するための命令を、ホストマシンに伝達する。いくつかの実施形態では、この命令は、コントローラ3620のクラスタ内の特定の場所を指し示すアドレスを含む。動作「2」では、ネットワークマネージャ3610は、論理ネットワークの仕様を、クラスタ3620内のコントローラに送信し、コントローラは、個々のホストマシン及びLREのための構成データを生成する。
【0201】
動作「3」では、ホストマシン3630内で動作するコントローラエージェントは、動作「2」で受信した命令に基づいて、コントローラのクラスタ3620からのLRE構成のための要求を送信する。すなわち、コントローラエージェントは、それらがネットワークマネージャ3610によって示されるコントローラと接触する。動作「4」では、コントローラのクラスタ3620は、要求に応じて、ホストマシンにLRE構成を提供する。
【0202】
図37は、ネットワークマネージャ3610から、個々のホストマシン3631〜3634内で動作するLREへの構成データの配信を概念的に示す。図示のように、ネットワークマネージャ3610は、ユーザの仕様に応じて異なるテナントのための論理ネットワークを作成する。ネットワークマネージャは、作成した論理ネットワーク3710及び3720の記述を、コントローラ3620に配信する。コントローラ3620は、論理ネットワーク記述3710及び3720を、それぞれ、個々のホストマシン3631〜3634に配信するための構成データセット3731〜3734に処理する。他の実施形態では、しかしながら、ネットワークマネージャは、これらの構成データセットを生成し、コントローラは、ホストマシンへの配信を担当するだけである。これらの構成データセットは、次に、個々のホストマシン内でMPREとして動作するように、異なる論理ネットワークのLREを構成するために使用される。
【0203】
図38は、個々のホストマシンに配信される構成データセットの構造を示す。図は、ホストマシン3631〜3639のための構成データセット3731〜3737を示す。ホストマシンは、2つの異なるテナントX及びYのための2つのLRE3810及び3820を動作させている。ホストマシン3631、3632、3634、及び3637は、それぞれ、(テナントXの)LRE3810のMPREを動作させるように構成され、ホストマシン3632、3633、3634、及び3635は、それぞれ、(テナントYの)LRE3820のMPREを動作させるように構成される。
図7を参照して上述したように、異なるテナントの異なる論理ネットワークのための異なるLREが、同じホストマシン内に存在することができることは注目に値する。
図38の例では、ホストマシン3632は、テナントXのためのLRE3810及びテナントYのためのLRE3820の両方のためのMPREを動作させている。
【0204】
テナントXのためのLRE3810は、ネットワークセグメントA、B、及びCのためのLIFを含む。テナントYのためのLRE3820は、ネットワークセグメントD、E、及びFのためのLIFを含む。いくつかの実施形態では、各論理インタフェースは、論理ネットワークに固有のものであり、論理インタフェースは、異なるテナントのための異なるLREに現れることができない。
【0205】
いくつかの実施形態でのホストのための構成データは、そのVMAC(すべてのホストに関して一般的である)、そのユニークなPMAC、及び、そのホスト上で動作するLREのリストを含む。例えば、ホスト3633のための構成データは、ホスト3633が、LRE3820のためのMPREを動作させていることを示すことになり、ホスト3634のための構成データは、ホスト3634が、LRE3810及びLRE3820のためのMPREを動作させていることを示すことになる。いくつかの実施形態では、所与のホストマシンのテナントXのためのMPRE及びテナントYのためのMPREは、両方とも、ホストマシンに割り当てられた同じユニークなPMACによってアドレス指定可能である。
【0206】
いくつかの実施形態でのLREのための構成データは、LIFのリスト、ルーティング/転送テーブル、及び、コントローラクラスタ情報を含む。コントローラクラスタ情報は、いくつかの実施形態では、更新された制御及び構成情報をどこで取得するのかをホストに通知する。いくつかの実施形態では、LREのための構成データは、異なるホストマシン間でLREのインスタンシエイション(すなわち、MPRE)のすべてのために複製される。
【0207】
いくつかの実施形態でのLIFのための構成データは、論理インタフェースの名前(例えば、UUID)、そのIPアドレス、そのMACアドレス(すなわち、LMAC又はVMAC)、そのMTU(最大転送単位)、その宛先情報(例えば、インタフェースするネットワークセグメントのVNI)、特定のホスト上でアクティブであるか非アクティブであるか、及び、ブリッジLIFであるかルーティングLIFであるかを含む。いくつかの実施形態では、論理インタフェースのための構成データセットは、また、ホスト上でそのMPREとして動作するLREが、指定されたインスタンスであり、物理(すなわち、非仮想、非VDR)ホストのためのアドレス解決を実行する必要があるかどうかを示す、外部対面パラメータを含む。
【0208】
いくつかの実施形態では、LREは、ネットワークマネージャ内で動作するAPIによって構成又は制御される。例えば、いくつかの実施形態は、LREを作成するためのAPI、LREを削除するためのAPI、LIFを追加するためのAPI、及びLIFを削除するためのAPIを提供する。いくつかの実施形態では、コントローラは、ホストマシン内で(MPRE/ブリッジとして)動作するLREを構成するための静的な構成データを提供するだけでなく、静的及び/又は動的なルーティング情報も、MPREとして動作するローカルLREインスタンシエイションに提供する。いくつかの実施形態は、(例えば、LIFのMTU/MAC/IP情報を更新するために)LIFを更新するためのAPIを提供し、所与のLREのためのルートエントリを追加又は修正する。いくつかの実施形態でのルーティングエントリは、宛先IP又はサブネットマスク、ネクストホップ情報、論理インタフェース、メトリック、ルートタイプ(隣接するエントリ、又はネクストホップ、又はインタフェース、など)、ルート制御フラグ、及び(転送、ブラックホール、などのような)アクションのような情報を含む。
【0209】
いくつかの実施形態は、MPREとして動作するLREのためのルーティング情報を動的に収集し、配信する。
図39は、LREのための動的ルーティング情報の収集及び配信を示す。図示のように、ネットワーク仮想化インフラストラクチャ3600は、コントローラのクラスタ3620及びホストマシン3630を含むだけでなく、動的ルーティング情報を収集及び配信するための仮想マシン(「エッジVM」)を動作させるホストマシン3640も含む。いくつかの実施形態では、エッジVM3640は、OSPF又はBGPプロトコルを実行し、別のLAN又は他のネットワークのための外部ルータとして現れる。いくつかの実施形態では、エッジVM3640は、他のルータからのネットワークルートを学習する。それ自体のネットワークセグメント内の学習したルートを検証した後、エッジVM3640は、学習したルートをコントローラクラスタ3620に送信する。コントローラクラスタ3620は、次に、学習したルートを、ホストマシン3630内のMPREに伝播する。
【0211】
上述した特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体(コンピュータ可読媒体とも呼ばれる)に記録された命令のセットとして指定されるソフトウェアプロセスとして実装される。これらの命令が、1つ又は複数の処理ユニット(複数可)(例えば、1つ又は複数のプロセッサ、プロセッサのコア、又は他の処理ユニット)によって実行されると、それらは、処理ユニット(複数可)に、命令で指定されるアクションを実行させる。コンピュータ可読媒体の例は、CD−ROM、フラッシュドライブ、RAMチップ、ハードドライブ、EPROM、などを含むが、これらに限定されない。コンピュータ可読メディアは、無線で又は有線接続を通過する搬送波及び電子信号を含まない。
【0212】
本明細書では、「ソフトウェア」という用語は、プロセッサによって処理するためにメモリ内に読み込むことができる、読み取り専用メモリ内に存在するファームウェア、又は、磁気ストレージに記憶されたアプリケーションを含むことを意味する。また、いくつかの実施形態では、複数のソフトウェア発明が、別個のソフトウェア発明を維持しながら、より大きいプログラムのサブパーツとして実装されてよい。いくつかの実施形態では、複数のソフトウェア発明が、別々のプログラムとして実装されてもよい。最後に、本明細書に記載のソフトウェア発明を一緒に実装する別々のプログラムのどのような組み合わせも、本発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムは、1つ又は複数の電子システム上で動作するようにインストールされると、ソフトウェアプログラムの動作を実行する1つ又は複数の特定の機械実装を定義する。
【0213】
図40は、本発明のいくつかの実施形態を実装する電子システム4000を概念的に示す。電子システム4000は、上述した制御、仮想化、又はオペレーティングシステムアプリケーションのいずれかを実行するために使用されてよい。電子システム4000は、コンピュータ(例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ、など)、電話、PDA、又は、任意の他の種類の電子デバイスであってよい。このような電子システムは、様々なタイプのコンピュータ可読メディア、及び、様々な他のタイプのコンピュータ可読記憶メディアのためのインタフェースを含む。電子システム4000は、バス4005、処理ユニット(複数可)4010、システムメモリ4025、読み取り専用メモリ4030、永久記憶デバイス4035、入力デバイス4040、及び出力デバイス4045を含む。
【0214】
バス4005は、電子システム4000の多数の内部デバイスを通信可能に接続するすべてのシステムバス、周辺機器バス、及びチップセットバスを集合的に表す。例えば、バス4005は、処理ユニット(複数可)4010を、読み取り専用メモリ4030、システムメモリ4025、及び永久記憶デバイス4035に通信可能に接続する。
【0215】
これらの様々なメモリユニットから、処理ユニット(複数可)4010は、本発明のプロセスを実行するために、実行する命令及び処理するデータを取り出す。処理ユニット(複数可)は、異なる実施形態では、単一のプロセッサ又はマルチコアプロセッサであってよい。
【0216】
読み取り専用メモリ(ROM)4030は、処理ユニット(複数可)4010、及び電子システムの他のモジュールによって必要とされる、静的なデータ及び命令を格納する。永久記憶デバイス4035は、他方では、読み書きメモリデバイスである。このデバイスは、電子システム4000がオフの場合でも、命令及びデータを格納する、不揮発性メモリユニットである。本発明のいくつかの実施形態は、(磁気又は光ディスク、及びその対応ディスクドライブのような)大容量記憶デバイスを、永久記憶デバイス4035として使用する。
【0217】
他の実施形態は、(フロッピー(登録商標)ディスク、フラッシュドライブ、などのような)リムーバブル記憶デバイスを、永久記憶デバイスとして使用する。永久記憶デバイス4035と同様に、システムメモリ4025は、読み書きメモリデバイスである。しかしながら、永久記憶デバイス4035とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み書きメモリである。システムメモリは、プロセッサが実行時に必要とする命令及びデータの一部を格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ4025、永久記憶デバイス4035、及び/又は読み取り専用メモリ4030に格納される。これらの様々なメモリユニットから、処理ユニット(複数可)4010は、いくつかの実施形態のプロセスを実行するために、実行する命令及び処理するデータを取り出す。
【0218】
バス4005は、入力及び出力デバイス4040及び4045にも接続する。入力デバイスは、ユーザが、電子システムに情報を通信し、コマンドを選択することを可能にする。入力デバイス4040は、英数字キーボード及びポインティングデバイス(「カーソル制御デバイス」とも呼ばれる)を含む。出力デバイス4045は、電子システムによって生成された画像を表示する。出力デバイスは、プリンタ、及び、陰極線管(CRT)又は液晶ディスプレイ(LCD)のような表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【0219】
最後に、
図40に示すように、バス4005は、また、電子システム4000を、ネットワークアダプタ(図示せず)を介してネットワーク4065に結合する。このように、コンピュータは、(ローカルエリアネットワーク(「LAN」)のような)コンピュータのネットワーク、ワイドエリアネットワーク(「WAN」)、若しくはインターネット、又は、インターネットのようなネットワークのネットワークの一部であってよい。電子システム4000のいずれか又はすべての構成要素は、本発明と共に使用されてよい。
【0220】
いくつかの実施形態は、コンピュータプログラム命令を、機械可読又はコンピュータ可読媒体(代わりに、コンピュータ可読記憶メディア、機械可読メディア、又は機械可読記憶メディアとも呼ばれる)に格納する、マイクロプロセッサ、ストレージ、及びメモリのような電子構成要素を含む。このようなコンピュータ可読メディアのいくつかの例は、RAM、ROM、読み取り専用コンパクトディスク(CD−ROM)、追記型コンパクトディスク(CD−R)、書き換え可能コンパクトディスク(CD−RW)、読み取り専用デジタル多用途ディスク(例えば、DVD−ROM、二層DVD−ROM)、様々な追記型/書き換え可能DVD(例えば、DVD−RAM、DVD−RW、DVD+RW、など)、フラッシュメモリ(例えば、SDカード、ミニ−SDカード、マイクロ−SDカード、など)、磁気及び/又は固体ハードドライブ、読み取り専用及び記録可能ブルーレイディスク(登録商標)、超高密度光ディスク、任意の他の光又は磁気メディア、並びにフロッピーディスクを含む。コンピュータ可読メディアは、少なくとも1つの処理ユニットによって実行可能で、様々な動作を実行する命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及び、インタプリタを使用するコンピュータ、電子構成要素、又はマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
【0221】
上記の説明は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)のような、1つ又は複数の集積回路によって実行される。いくつかの実施形態では、このような集積回路は、回路自体に格納された命令を実行する。
【0222】
本明細書で使用される「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語は、すべて、電子的又は他の技術的デバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的のために、表示又は表示するという用語は、電子デバイス上での表示を意味する。本明細書で使用される「コンピュータ可読メディア」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって読み取り可能な形式で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、いかなる無線信号、有線のダウンロード信号、及びいかなる他の一時的な信号も除外する。
【0223】
本発明を、多数の特定の詳細を参照して説明してきたが、当業者は、本発明が、本発明の要旨から逸脱することなく、他の特定な形態で具体化されてよいことを認識するであろう。加えて、(
図11、14、15、22、及び35を含む)多数の図面は、プロセスを概念的に示す。これらのプロセスの特定の動作は、図示及び説明された正確な順序で実行されなくてよい。特定の動作は、ひと続きの動作で実行されなくてよく、異なる特定の動作が、異なる実施形態で実施されてよい。さらに、プロセスは、いくつかのサブプロセスを使用して、又は、より大きいマクロプロセスの一部として実施されてよい。したがって、当業者は、本発明が、上記の例示的な詳細によって限定されず、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。