(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンをホストする複数のホストマシンと、前記複数のホストマシンを相互接続する物理ネットワークと、を備えるシステムであって、
前記ホストマシンのそれぞれは、
前記ホストマシン上で動作する仮想マシンのセットへの及び前記仮想マシンのセットからのパケットのリンク層での転送を実行するための複数のポートを備え、それぞれのポートは一意の媒体アクセス制御（ＭＡＣ）アドレスに関連づけられている、仮想スイッチと、
前記仮想スイッチのポートからのデータパケットを受け取り、第１のネットワークセグメントの第１の仮想マシンから受け取った前記データパケットを第２のネットワークセグメントの第２の仮想マシンへと転送するためにネットワーク層でのルーティングを実行する、仮想ルータと、
を備えることを特徴とするシステム。
【請求項２】
ネットワークセグメントがＩＰ（インターネットプロトコル）サブネットとカプセル化オーバレイネットワークとのうちの１つであることを特徴とする、請求項１に記載のシステム。
【請求項３】
前記ネットワークセグメントの少なくとも１つがカプセル化オーバレイネットワークであることを特徴とする、請求項１に記載のシステム。
【請求項４】
前記第１及び第２のネットワークセグメントが、異なるネットワーク識別子を有する異なるカプセル化オーバレイネットワークであることを特徴とする、請求項１に記載のシステム。
【請求項５】
前記仮想ルータが前記データパケットを受け取る前記ポートが、前記複数のホストマシンのうちの全てのホストマシンに共通な仮想ＭＡＣ（ＶＭＡＣ）アドレスと関連づけられていることを特徴とする、請求項１に記載のシステム。
【請求項６】
それぞれのホストマシンには、当該ホストマシンの仮想ルータを他のホストマシンからアドレス指定するための一意の物理ＭＡＣ（ＰＭＡＣ）アドレスが割り当てられており、異なるホストマシンには異なるＰＭＡＣが割り当てられることを特徴とする、請求項５に記載のシステム。
【請求項７】
それぞれのホストマシンは、入ってくるデータパケットが前記仮想スイッチに到達する前に、前記物理ネットワークから入ってくる前記データパケットの前記ＰＭＡＣアドレスを前記ＶＭＡＣアドレスに変換することを特徴とする、請求項６に記載のシステム。
【請求項８】
それぞれのホストマシンは、出て行くデータパケットが前記仮想スイッチから出た後に、前記物理ネットワークへと出て行く前記データパケットの前記ＶＭＡＣアドレスを前記ＰＭＡＣアドレスに変換することを特徴とする、請求項６に記載のシステム。
【請求項９】
論理ネットワークにおけるホストマシンとして働くコンピューティングデバイスであって、前記コンピューティングデバイスは、
前記論理ネットワークの複数の異なるセグメントにある複数の仮想マシンを実行する命令セットと、
前記ホストマシン上で動作している仮想マシンのセットへの及び前記仮想マシンのセットからのパケットのリンク層での転送を実行するための複数のポートであって、それぞれが一意の媒体アクセス制御（ＭＡＣ）アドレスに関連づけられている複数のポートを備える、管理される物理スイッチング要素（ＭＰＳＥ）を動作させる命令セットと、
前記ＭＰＳＥのポートからデータパケットを受け取り、第１のネットワークセグメントの第１の仮想マシンから受け取った前記データパケットを第２のネットワークセグメントの第２の仮想マシンへと転送するためにネットワーク層でのルーティングを実行する、管理される物理ルーティング要素（ＭＰＲＥ）を動作させる命令セットと、
を含むコンピュータプログラムを実行することを特徴とする、コンピューティングデバイス。
【請求項１０】
ネットワークセグメントがＩＰ（インターネットプロトコル）サブネットとカプセル化オーバレイネットワークとのうちの１つであることを特徴とする、請求項９に記載のコンピューティングデバイス。
【請求項１１】
前記ネットワークセグメントの少なくとも１つがカプセル化オーバレイネットワークであることを特徴とする、請求項９に記載のコンピューティングデバイス。
【請求項１２】
前記第１及び第２のネットワークセグメントが、異なるネットワーク識別子を有する異なるカプセル化オーバレイネットワークであることを特徴とする、請求項９に記載のコンピューティングデバイス。
【請求項１３】
前記ＭＰＲＥが前記データパケットを受け取る前記ポートが、前記論理ネットワーク内の全てのホストマシンに共通な仮想ＭＡＣ（ＶＭＡＣ）アドレスと関連づけられていることを特徴とする、請求項９に記載のコンピューティングデバイス。
【請求項１４】
前記ホストマシンが、前記論理ネットワーク内の他のホストマシンとは異なる一意の物理ＭＡＣ（ＰＭＡＣ）アドレスと関連づけられていることを特徴とする、請求項１３に記載のコンピューティングデバイス。
【請求項１５】
前記コンピュータプログラムが、入ってくるデータパケットが前記ＭＰＲＥに到達する前に、物理ネットワークから入ってくる前記データパケットの前記ＰＭＡＣアドレスを前記ＶＭＡＣアドレスに変換する命令セットをさらに含むことを特徴とする、請求項１４に記載のコンピューティングデバイス。
【請求項１６】
前記コンピュータプログラムが、出て行くデータパケットが前記ＭＰＲＥを出た後に、物理ネットワークへと出て行くデータパケットの前記ＶＭＡＣアドレスを前記ＰＭＡＣアドレスに変換する命令セットをさらに含むことを特徴とする、請求項１４に記載のコンピューティングデバイス。
【請求項１７】
複数のホストマシンによって実装される論理ネットワークを動作させる方法であって、
ホストマシンにおいて、論理ネットワークの複数の異なるセグメントにある複数の仮想マシンを実行することと、
前記ホストマシンにおいて、前記ホストマシン上で動作している仮想マシンのセットへの及び前記仮想マシンのセットからのパケットのリンク層での転送を実行するための複数のポートであって、それぞれが一意の媒体アクセス制御（ＭＡＣ）アドレスに関連づけられている複数のポートを備える、管理される物理スイッチング要素（ＭＰＳＥ）を動作させることと、
前記ホストマシンにおいて、前記ＭＰＳＥのポートからデータパケットを受け取り、第１のネットワークセグメントの第１の仮想マシンから受け取った前記データパケットを第２のネットワークセグメントの第２の仮想マシンへと転送するためにネットワーク層でのルーティングを実行する、管理される物理ルーティング要素（ＭＰＲＥ）を動作させることと
を含むことを特徴とする方法。
【請求項１８】
ネットワークセグメントがＩＰ（インターネットプロトコル）サブネットとカプセル化オーバレイネットワークとのうちの１つであることを特徴とする、請求項１７に記載の方法。
【請求項１９】
前記ネットワークセグメントの少なくとも１つがカプセル化オーバレイネットワークであることを特徴とする、請求項１７に記載の方法。
【請求項２０】
前記第１及び第２のネットワークセグメントが、異なるネットワーク識別子を有する異なるカプセル化オーバレイネットワークであることを特徴とする、請求項１７に記載の方法。
【請求項２１】
前記ＭＰＲＥが前記データパケットを受け取る前記ポートが、前記論理ネットワーク内の全てのホストマシンに共通な仮想ＭＡＣ（ＶＭＡＣ）アドレスと関連づけられていることを特徴とする、請求項１７に記載の方法。
【請求項２２】
前記ホストマシンが、前記論理ネットワーク内の他のホストマシンとは異なる一意の物理ＭＡＣ（ＰＭＡＣ）アドレスと関連づけられていることを特徴とする、請求項２１に記載の方法。
【請求項２３】
入ってくるデータパケットが前記ＭＰＲＥに到達する前に、物理ネットワークから入ってくる前記データパケットの前記ＰＭＡＣアドレスを前記ＶＭＡＣアドレスに変換することをさらに含むことを特徴とする、請求項２２に記載の方法。
【請求項２４】
出て行くデータパケットが前記ＭＰＲＥを出た後に、物理ネットワークへと出て行く前記データパケットの前記ＶＭＡＣアドレスを前記ＰＭＡＣアドレスに変換することをさらに含むことを特徴とする、請求項２２に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
先願の利益の主張
本出願は、２０１３年１０月１３日に出願された米国仮特許出願第６１／８９０，３０９号の利益を主張する。米国仮特許出願第６１／８９０，３０９号は、参照により本明細書に組み込まれる。
【０００２】
ネットワーク仮想化環境では、ハイパーバイザ上で展開されるより一般的なアプリケーションの１つは、３階層アプリケーションであり、３階層アプリケーションでは、ウェブ層、データベース層、及びアプリケーション層が、異なるＬ３サブネット上にある。これは、最初にＬ３ルータに到着し、次に宛先仮想マシン（ＶＭ）に転送されるように、１つのサブネット内の１つのＶＭから、別のサブネット内の別のＶＭに横断するＩＰパケットを必要とする。これは、宛先ＶＭが、発信ＶＭと同じホストマシン上でホストされる場合でも、同様である。これは、不要なネットワークトラフィックを発生し、より高いレイテンシとより低いスループットとを引き起こし、ハイパーバイザ上で動作するアプリケーションの性能を著しく低下させる。一般的に言えば、任意の２つのＶＭが、互いに通信する２つの異なるＩＰサブネットであるときはいつも、この性能低下が発生する。
【０００３】
図１は、ネットワーク仮想化インフラストラクチャ上に実装された論理ネットワーク１００を示し、論理ネットワーク１００では、異なるセグメント又はサブネット上の仮想マシン（ＶＭ）が、共有ルータ１１０を介して通信する。図に示すように、ＶＭ１２１〜１２９は、ホストマシン１３１〜１３３上で動作しており、ホストマシン１３１〜１３３は、物理ネットワーク１０５によって通信可能にリンクされた物理マシンである。
【０００４】
ＶＭは、ネットワークの異なるセグメント内にある。具体的にはＶＭ１２１〜１２５は、ネットワークのセグメントＡ内にあり、ＶＭ１２６〜１２９は、ネットワークのセグメントＢ内にある。ネットワークの同じセグメント内のＶＭは、リンク層（Ｌ２）プロトコルを用いて互いに通信することができ、ネットワークの異なるセグメント内のＶＭは、リンク層プロトコルを用いて互いに通信することができず、ネットワーク層（Ｌ３）ルータ又はゲートウェイを用いて互いに通信しなければならない。異なるホストマシン内で動作するＶＭは、それらが、同じネットワークセグメント内にあるか否かにかかわらず、物理ネットワーク１０５内のネットワークトラフィックを介して互いに通信する。
【０００５】
ホストマシン１３１〜１３３は、ソフトウェアスイッチを実装するハイパーバイザを実行しており、同じホストマシン内の同じセグメント内のＶＭが、物理ネットワーク１０５を経由せずに、ローカルに互いに通信することを可能にする。しかしながら、異なるセグメントに属するＶＭは、共有ルータ１１０のようなＬ３ルータを経由しなければならず、これは物理ネットワークの後ろでしか到達することができない。これは、同じホストマシン内で動作しているＶＭ間でも同様である。例えば、ＶＭ１２５及びＶＭ１２６間のトラフィックは、両方ともホストマシン１３２上で動作しているにもかかわらず、物理ネットワーク１０５及び共有ルータ１１０を経由しなければならない。
【０００６】
必要なのは、ＶＭを実行することができるすべてのホストでＬ３パケットを転送するための分散型ルータである。分散型ルータは、送信元ＶＭ及び宛先ＶＭ間に正確に１つのホップが存在するように、データパケットをローカルに（すなわち、送信元ハイパーバイザで）転送することができるようにすべきである。
【発明の概要】
【０００７】
仮想化ネットワーク環境内のホストマシン上で動作する論理ネットワークの仮想マシン（ＶＭ）間のＬ３パケット転送を容易にするために、いくつかの実施形態は、論理ネットワークのための論理ルータ又は論理ルーティング要素（ＬＲＥ）を定義する。いくつかの実施形態では、ＬＲＥは、仮想分散型ルータ（ＶＤＲ）として、その論理ネットワークのホストマシン間で分散して動作し、ここで、各ホストマシンは、ＬＲＥのそれ自体のローカルインスタンスを、そのホスト上で動作するＶＭのためのＬ３パケット転送を実行するための管理される物理ルーティング要素（ＭＰＲＥ）として動作する。いくつかの実施形態では、ＭＰＲＥは、同じホストマシン上で動作するＶＭ間のパケットのＬ３転送が、物理ネットワークを経由する必要なしに、ホストマシンでローカルに実行されることを可能にする。いくつかの実施形態は、異なるテナントのための異なるＬＲＥを定義し、ホストマシンは、複数のＭＰＲＥとして、異なるＬＲＥを動作させることができる。いくつかの実施形態では、同じホストマシン上で動作する異なるテナントのための異なるＭＰＲＥは、管理される物理スイッチング要素（ＭＰＳＥ）上の同じポート及び同じＬ２ＭＡＣアドレスを共有する。
【０００８】
いくつかの実施形態では、ＬＲＥは、１つ又は複数の論理インタフェース（ＬＩＦ）を含み、ＬＩＦの各々は、ネットワークの特定のセグメントへのインタフェースとして機能する。いくつかの実施形態では、各ＬＩＦは、自身のＩＰアドレスによってアドレス指定可能であり、ネットワークのその特定のセグメントのネットワークノード（例えば、ＶＭ）のためのデフォルトゲートウェイ又はＡＲＰプロキシとして機能する。各ネットワークセグメントは、ＬＲＥに対する自身の論理インタフェースを有し、各ＬＲＥは、自身の論理インタフェースのセットを有する。各論理インタフェースは、ネットワーク仮想化インフラストラクチャ内でユニークな自身の識別子（例えば、ＩＰアドレス又はオーバレイネットワーク識別子）を有する。
【０００９】
いくつかの実施形態では、このような論理ルータを用いる論理ネットワークは、異なるホストマシンで動作するＭＰＲＥを、すべてのＶＭに同じように見えるようにすることによって、ネットワーク仮想化をさらに強化する。これらの実施形態のいくつかでは、各ＬＲＥは、システム内のすべてのＬＲＥについて同じである仮想ＭＡＣアドレス（ＶＭＡＣ）によって、Ｌ２データリンク層でアドレス指定可能である。各ホストマシンは、ユニークな物理ＭＡＣアドレス（ＰＭＡＣ）に関連付けられる。特定のＬＲＥを実装する各ＭＰＲＥは、物理ネットワーク上の他のホストマシンによって、そのホストマシンのユニークなＰＭＡＣによってユニークにアドレス指定可能である。いくつかの実施形態では、ＭＰＲＥを離れる各パケットは、ＶＭＡＣを送信元アドレスとして有し、ホストマシンは、パケットがＰＮＩＣに入り、物理ネットワークのホストを離れる前に、送信元アドレスをユニークなＰＭＡＣに変更することになる。いくつかの実施形態では、ＭＰＲＥに入る各パケットは、ＶＭＡＣを宛先アドレスとして有し、ホストは、宛先アドレスが、ホストに関連付けられたユニークなＰＭＡＣアドレスである場合、宛先ＭＡＣアドレスを一般的なＶＭＡＣに変更することになる。いくつかの実施形態では、ネットワークセグメントのＬＩＦは、そのネットワークセグメント内のＶＭのためのデフォルトゲートウェイとして機能する。そのＬＩＦの１つのためのＡＲＰクエリを受信するＭＰＲＥは、クエリを他のホストマシンに転送することなく、ローカルにクエリに応答する。
【００１０】
仮想化ソフトウェアを実行しない、又はＭＰＲＥを動作させない物理ホストマシンのＬ３層ルーティングを実行するために、いくつかの実施形態は、これらの非ＶＤＲホストマシンのそれぞれのための専用ルーティングエージェント（指定されたインスタンス又は指定されたＭＰＲＥ）として機能するように、ホストマシン上で動作するＭＰＲＥを指定する。いくつかの実施形態では、仮想マシンから物理ホストへのデータトラフィックは、個々のＭＰＲＥによって行われ、物理ホストから仮想マシンへのデータトラフィックは、指定されたＭＰＲＥを経由しなければならない。
【００１１】
いくつかの実施形態では、ホストマシン内の少なくとも１つのＭＰＲＥは、ブリッジングＭＰＲＥとして構成され、このようなブリッジは、ルーティングではなくブリッジングのために構成された論理インタフェースを含む。ルーティングのために構成された論理インタフェース（ルーティングＬＩＦ）は、Ｌ３層ネットワークアドレスをＬ２ＭＡＣアドレスに解決することによって、論理ネットワークの異なるセグメント間のＬ３レベルルーティングを実行する。ブリッジングのために構成された論理インタフェース（ブリッジングＬＩＦ）は、ＭＡＣアドレスをネットワークセグメント識別子（例えば、ＶＮＩ）又は論理インタフェースと結合することによって、ブリッジングを実行する。
【００１２】
いくつかの実施形態では、上述したようにホストマシン内で動作するＬＲＥは、コントローラのクラスタによって生成される構成データセットによって構成される。いくつかの実施形態でのコントローラは、異なるテナント又はユーザによって作成及び指定される論理ネットワークに基づいて、これらの構成データセットを生成する。いくつかの実施形態では、ネットワーク仮想化インフラストラクチャのネットワークマネージャは、ユーザが、ネットワーク仮想化インフラストラクチャ上に実装することができる異なる論理ネットワークを生成することを可能にし、次に、コントローラが、ＬＲＥのための構成データを含むホストマシンの特定の構成データセットを生成することができるように、これらの論理ネットワークのパラメータをコントローラにプッシュする。いくつかの実施形態では、ネットワークマネージャは、ＬＲＥのための構成データを取得するために、ホストマシンに命令を与える。
【００１３】
いくつかの実施形態は、ＬＲＥのルーティング情報を動的に収集し、配信する。いくつかの実施形態では、エッジＶＭは、他のルータからのネットワークルートを学習し、学習したルートを、コントローラのクラスタに送信し、コントローラのクラスタは、学習したルートを、ホストマシンで動作するＬＲＥに伝播する。
【００１４】
前述の概要は、本発明のいくつかの実施形態への簡単な導入として役立つことを意図している。それは、この文書に開示されたすべての発明の主題の導入又は概観であることを意味しない。以下の詳細な説明、及び、詳細な説明で参照される図面は、概要に記載された実施形態、並びに他の実施形態をさらに説明することになる。したがって、この文書によって説明されるすべての実施形態を理解するために、概要、詳細な説明、及び図面の完全なレビューが必要とされる。さらに、特許請求された主題は、主題の要旨から逸脱することなく、他の特定の形態で具体化されてよいため、特許請求された主題は、概要、詳細な説明、及び図面の例示的な詳細に限定されるべきではなく、添付の特許請求の範囲によって定義されるべきである。
【００１５】
本発明の新規な特徴は、添付の特許請求の範囲に記載される。しかしながら、説明の目的のため、本発明のいくつかの実施形態は、以下の図面に記載される。
【図面の簡単な説明】
【００１６】
【図１】異なるセグメント又はサブネット上の仮想マシン（ＶＭ）が、共有ルータを介して通信する、ネットワーク仮想化インフラストラクチャ上に実装された論理ネットワークを示す。
【図２】ホストマシン内でＭＰＲＥとしてローカルに動作するＬＲＥによって実行されるパケット転送動作を示す。
【図３】ＬＲＥのためのＭＰＲＥを動作させる仮想化ソフトウェアを実行するホストマシンを示す。
【図４】ＭＰＳＥによるＬ２転送動作を示す。
【図５ａ】ＭＰＳＥと協働するＭＰＲＥによるＬ３ルーティング動作を示す。
【図５ｂ】ＭＰＳＥと協働するＭＰＲＥによるＬ３ルーティング動作を示す。
【図６ａ】ホストの外部からのパケットに対してＭＰＲＥによって実行されるＬ３ルーティング動作を示す。
【図６ｂ】ホストの外部からのパケットに対してＭＰＲＥによって実行されるＬ３ルーティング動作を示す。
【図７】異なるホストマシンにまたがってＭＰＲＥによって実装されるＬＲＥを有する論理ネットワークを概念的に示す。
【図８】ネットワーク仮想化インフラストラクチャのホストマシン内のＭＰＲＥの物理的実装を示す。
【図９】異なるセグメントの仮想マシンからのデータパケットが、どのようにホスト内の異なる論理インタフェースに向けられるかを示す。
【図１０】ホストマシンで動作する例示的なＭＰＲＥのブロック図を示す。
【図１１】ＭＰＳＥからのデータパケットを処理する際にＭＰＲＥによって実行されるプロセスを概念的に示す。
【図１２】いくつかの実施形態に関する共通ＶＭＡＣ及びユニークなＰＭＡＣによってアドレス指定可能なＭＰＲＥを有する論理ネットワークを示す。
【図１３】共通ＶＭＡＣ及びユニークなＰＭＡＣを使用する例示的なルーティングされたＬ３ネットワークトラフィックを示す。
【図１４】アップリンクモジュールによって実行される前処理動作のプロセスを概念的に示す。
【図１５】アップリンクモジュールによって実行される後処理動作のプロセスを概念的に示す。
【図１６】論理ネットワーク内のＬＲＥの論理インタフェースのＡＲＰクエリ動作を示す。
【図１７】いくつかの実施形態に関するＭＰＲＥが開始するＡＲＰクエリを示す。
【図１８】ＭＰＲＥが解決することができるＡＲＰ問い合わせに対して応答するためのプロキシとして機能するＭＰＲＥを示す。
【図１９】送信者ＭＰＲＥと同じホストマシン内にある仮想マシンに対するＡＲＰ問い合わせ内のユニークなＰＭＡＣの使用を示す。
【図２０】ＭＰＲＥがそれらの解決テーブルを更新した後の、異なるセグメントのＶＭ間のメッセージ受渡し動作を示す。
【図２１】ＭＰＲＥがそれらの解決テーブルを更新した後の、異なるセグメントのＶＭ間のメッセージ受渡し動作を示す。
【図２２】ＭＰＲＥを使用することによって着信データパケットのためのアドレス解決を処理するためのプロセスを概念的に示す。
【図２３】物理ホストとの間のパケットのＬ３ルーティングを処理するためのＭＰＲＥを指定する論理ネットワークを示す。
【図２４】論理ネットワーク内の非ＶＤＲ物理ホストによって開始されるＡＲＰ動作を示す。
【図２５】異なるホスト上の仮想マシンから物理ホストへのパケットのルーティングのための指定されたＭＰＲＥの使用を示す。
【図２６ａ】物理ホストから異なるホスト上の仮想マシンへのパケットのルーティングのための指定されたＭＰＲＥの使用を示す。
【図２６ｂ】物理ホストから異なるホスト上の仮想マシンへのパケットのルーティングのための指定されたＭＰＲＥの使用を示す。
【図２７】非ＶＤＲ物理ホストからのＬ３層トラフィックを処理するためのプロセスを概念的に示す。
【図２８】非ＶＤＲ物理ホストへのＬ３層トラフィックを処理するためのプロセス２８００を概念的に示す。
【図２９】異なるオーバレイネットワーク間のブリッジとして機能するブリッジＬＩＦを含むＬＲＥを示す。
【図３０】その少なくとも１つが、ブリッジＬＩＦとして構成された論理インタフェースを有するＭＰＲＥを有するホストマシンである、複数のホストマシンを含む論理ネットワークを示す。
【図３１】ＭＰＲＥによるＭＡＣアドレスの学習を示す。
【図３２】ＭＰＲＥによって以前に学習されたＭＡＣ−ＶＮＩペアリングを使用する、２つの異なるオーバレイネットワーク上の２つのＶＭ間のブリッジングを示す。
【図３３】ブリッジングＭＰＲＥと同じホストで動作していない２つのＶＭ間のブリッジングを示す。
【図３４ａ】宛先ＭＡＣアドレスが、ブリッジングテーブル内に一致するエントリを持たず、ＭＰＲＥが、ペアリングを探すためにネットワークをフラッディングしなければならないブリッジング動作を示す。
【図３４ｂ】フラッディングに対する応答からのＭＡＣアドレスペアリングの学習を示す。
【図３５】ＭＰＲＥでブリッジングを実行するためのプロセスを概念的に示す。
【図３６】論理ネットワークの仕様が、ホストマシン内のＬＲＥの構成に変換される、ネットワーク仮想化インフラストラクチャを示す。
【図３７】ネットワークマネージャから、個々のホストマシン内で動作するＬＲＥへの、構成データの配信を概念的に示す。
【図３８】個々のホストマシンに配信される構成データセットの構造を示す。
【図３９】ＬＲＥのＭＰＲＥへの動的ルーティング情報の収集及び配信を示す。
【図４０】本発明のいくつかの実施形態を実装する電子システムを概念的に示す。
【発明を実施するための形態】
【００１７】
以下の説明では、多くの詳細が、説明の目的のために記載される。しかしながら、当業者は、本発明が、これらの特定の詳細を使用せずに実施され得ることを理解するであろう。他の例では、不必要な詳細で本発明の説明を曖昧にしないために、周知の構造及びデバイスは、ブロック図の形式で示される。
【００１８】
仮想化ネットワーク環境内のホストマシン上で動作する論理ネットワークの仮想マシン（ＶＭ）間のＬ３パケット転送を容易にするために、いくつかの実施形態は、論理ネットワークのための論理ルータ又は論理ルーティング要素（ＬＲＥ）を定義する。いくつかの実施形態では、ＬＲＥは、仮想分散型ルータ（ＶＤＲ）として、その論理ネットワークのホストマシン間で分散して動作し、ここで、各ホストマシンは、ＬＲＥのそれ自体のローカルインスタンスを、そのホスト上で動作するＶＭのためのＬ３パケット転送を実行するための管理される物理ルーティング要素（ＭＰＲＥ）として動作する。いくつかの実施形態では、ＭＰＲＥは、同じホストマシン上で動作するＶＭ間のパケットのＬ３転送が、物理ネットワークを経由する必要なしに、ホストマシンでローカルに実行されることを可能にする。いくつかの実施形態は、異なるテナントのための異なるＬＲＥを定義し、ホストマシンは、複数のＭＰＲＥとして、異なるＬＲＥを動作させることができる。いくつかの実施形態では、同じホストマシン上で動作する異なるテナントのための異なるＭＰＲＥは、管理される物理スイッチング要素（ＭＰＳＥ）上の同じポート及び同じＬ２ＭＡＣアドレスを共有する。
【００１９】
いくつかの実施形態に関して、図２は、ホストマシンでローカルにＭＰＲＥとして動作するＬＲＥによって実行されるパケット転送動作を示す。各ホストマシンは、１つ又は複数のＶＭをホストするために、仮想化機能を実行し、ＶＭがネットワーク仮想化インフラストラクチャ内で互いに通信できるように、スイッチング機能を実行する。２つのＶＭが、異なるネットワークセグメントに属する場合であっても、同じホストマシン上の２つのＶＭ間のトラフィックが、常にローカルに行われることになるように、各ＭＰＲＥは、そのホストマシン内でローカルにＬ３ルーティング動作を実行する。
【００２０】
図２は、ＶＭ２２１〜２２９間のネットワーク通信のための論理ネットワーク２００の実装を示す。論理ネットワーク２００は、物理ネットワーク２０５によって相互接続されるコンピューティング及びストレージリソースの集合上に仮想化されるネットワークである。相互接続されるコンピューティング及びストレージリソースのこの集合、並びに物理ネットワークは、ネットワーク仮想化インフラストラクチャを形成する。ＶＭ２２１〜２２９は、ホストマシン２３１〜２３３によってホストされ、ホストマシン２３１〜２３３は、物理ネットワーク２０５によって通信可能にリンクされる。ホストマシン２３１〜２３３の各々は、いくつかの実施形態では、ＶＭを作成及びホストすることができるオペレーティングシステム（例えば、Ｌｉｎｕｘ（登録商標））によって管理されるコンピューティングデバイスである。ＶＭ２２１〜２２９は、ネットワークアドレス（例えば、Ｌ２のためのＭＡＣアドレス、Ｌ３のためのＩＰアドレス、など）のセットがそれぞれ割り当てられ、他のＶＭのような他のネットワーク要素との間でネットワークデータを送受信することができる仮想マシンである。
【００２１】
ＶＭは、ホストマシン２３１〜２３３上で動作する仮想化ソフトウェア（図示せず）によって管理される。仮想化ソフトウェアは、あるいは、仮想マシン技術の分野で「仮想マシンモニタ」、「ハイパーバイザ」、又は仮想化カーネルとして知られる１つ又は複数のソフトウェア構成要素を含む、１つ又は複数のソフトウェア構成要素及び／又は層を含むことができる。仮想化の専門用語は、時間と共に進化してきており、まだ完全には標準化されていないため、これらの用語は、ソフトウェア層と、それらが参照する構成要素との間の明確な区別を、必ずしも提供しない。本明細書で使用される「仮想化ソフトウェア」という用語は、一般的に、仮想マシンとホストプラットフォームとの間に論理的に介在するソフトウェア層又は構成要素を指す。
【００２２】
図２の例では、各ＶＭは、論理ネットワーク２００の２つのセグメントのうちの一方で動作する。ＶＭ２２１〜２２５は、セグメントＡで動作し、ＶＭ２２６〜２２９は、セグメントＢで動作する。いくつかの実施形態では、ネットワークセグメントは、ネットワークの一部であり、ネットワーク内では、ネットワーク要素が、ＩＰサブネットのようなリンク層Ｌ２プロトコルによって、互いに通信する。いくつかの実施形態では、ネットワークセグメントは、ＶＸＬＡＮ又はＶＬＡＮのようなカプセル化オーバレイネットワークである。
【００２３】
いくつかの実施形態では、ネットワークの同じセグメント内のＶＭは、リンク層（Ｌ２）プロトコルで（例えば、各ＶＭのＬ２ＭＡＣアドレスにしたがって）互いに通信することができ、ネットワークの異なるセグメント内のＶＭは、リンク層プロトコルでは互いに通信することができず、ネットワーク層（Ｌ３）ルータ又はゲートウェイを介して互いに通信しなければならない。いくつかの実施形態では、ＶＭ間のＬ２レベルトラフィックは、各ホストマシン内でローカルに動作するＭＰＳＥ（図示せず）によって処理される。したがって、例えば、ＶＭ２２３からＶＭ２２４へのネットワークトラフィックは、ホスト２３１内で動作する第１のＭＰＳＥを通過することになり、第１のＭＰＳＥは、そのポートの１つからデータを受信し、ホストマシン２３２で動作する第２のＭＰＳＥに、物理ネットワーク２０５を介してデータを送信し、第２のＭＰＳＥは、次に、そのポートの１つを介してＶＭ２２４にデータを送信することになる。同様に、ＶＭ２２８からＶＭ２２９への同じセグメントのネットワークトラフィックは、ホスト２３３で動作する単一のＭＰＳＥを通過することになり、単一のＭＰＳＥは、ある仮想ポートから別の仮想ポートに、ホスト２３３内でローカルにトラフィックを転送することになる。
【００２４】
その実装が、異なるネットワークセグメント間のトラフィックを処理する（標準的な物理ルータ、特にルーティング機能を実行するためのＶＭ、などとして実装することができる）外部Ｌ３ルータに依存する図１の論理ネットワーク１００とは異なり、図２の論理ネットワーク２００の実装は、それぞれホストマシン２３１〜２３３内でローカルにＬ３ルーティング機能を実行するために、ＭＰＲＥ２４１〜２４３を使用する。異なるホストマシン内のＭＰＲＥは、論理ネットワーク２００内のＶＭのための論理Ｌ３ルータの機能を共同で実行する。いくつかの実施形態では、ＬＲＥは、それらのＭＰＲＥとなるように異なるホストマシン間で複製又はインスタンス化されるデータ構造として実装される。図２の例では、ＬＲＥは、ホストマシン２３１〜２３３内で、ＭＰＲＥ２４１〜２４３としてインスタンス化される。
【００２５】
図２の例では、ＶＭ２２２から発信され、ＶＭ２２７に宛てられたネットワークトラフィックのＬ３ルーティングは、ＭＰＲＥ２４１によって処理され、ＭＰＲＥ２４１は、ＶＭ２２２をホストするホストマシン２３１上でローカルに動作するＬＲＥインスタンシエイションである。ＭＰＲＥ２４１は、ルーティングされたデータパケットを、物理ネットワーク２０５を介してＶＭ２２７に送信する前に、Ｌ３層ルーティング動作（例えば、リンク層アドレス解決）を、ホスト２３１内でローカルに実行する。これは、外部の共有Ｌ３ルータなしで行われる。同様に、ＶＭ２２５から発信される、ＶＭ２２６宛のネットワークトラフィックのＬ３ルーティングは、ＭＰＲＥ２４２によって処理され、ＭＰＲＥ２４２は、ＶＭ２２５をホストするホストマシン２３２上でローカルに動作するＬＲＥインスタンシエイションである。ＭＰＲＥ２４２は、Ｌ３層ルーティング動作を、ホスト２３２内でローカルに実行し、ルーティングされたデータパケットを、同様にホスト２３２によってホストされるＶＭ２２６に直接送信する。したがって、２つのＶＭ２２５及び２２６間のトラフィックは、物理ネットワーク２０５又は外部ルータを介して送信される必要はない。
【００２６】
本発明のいくつかのより詳細な実施形態を、以下に説明する。セクションＩは、ＬＲＥベースのＭＰＲＥを実装するＶＤＲ及びホストのアーキテクチャを説明する。セクションＩＩは、パケット処理のためのＶＤＲの様々な使用を説明する。セクションＩＩＩは、ＶＤＲの制御及び構成を説明する。最後に、セクションＩＶは、本発明のいくつかの実施形態が実装される電子システムを説明する。
【００２７】
Ｉ．ＶＤＲのアーキテクチャ
【００２８】
いくつかの実施形態では、ＬＲＥは、仮想化ソフトウェア（例えば、ハイパーバイザ、仮想マシンモニタ、など）内で動作し、仮想化ソフトウェアは、（例えば、マルチテナントデータセンタ内の）１つ又は複数のＶＭをホストするホストマシン上で動作する。仮想化ソフトウェアは、ＶＭの動作、並びに、ホストマシンの物理リソース及びネットワークリソースへのそれらのアクセスを管理し、ＬＲＥのローカルインスタンシエイションは、ホストマシン内で、そのローカルＭＰＲＥとして動作する。いくつかの実施形態について、図３は、ＬＲＥのＭＰＲＥを含む仮想化ソフトウェア３０５を実行するホストマシン３００を示す。ホストマシンは、例えば、物理ネットワーク３９０を介して他の同様のホストマシンに接続する。この物理ネットワーク３９０は、いくつかの実施形態では、様々な物理スイッチ及びルータを含むことができる。
【００２９】
図示のように、ホストマシン３００は、物理ＮＩＣ（ＰＮＩＣ）３９５を介して物理ネットワーク３９０へのアクセスを有する。ホストマシン３００は、また、仮想化ソフトウェア３０５を実行し、ＶＭ３１１〜３１４をホストする。仮想化ソフトウェア３０５は、ホストされるＶＭと、物理ＮＩＣ３９５（並びに、プロセッサ及びメモリのような他の物理リソース）との間のインタフェースとして機能する。ＶＭの各々は、仮想化ソフトウェア３０５を介してネットワークにアクセスするための仮想ＮＩＣ（ＶＮＩＣ）を含む。ＶＭ内の各ＶＮＩＣは、ＶＭ及び仮想化ソフトウェア３０５間のパケットの交換に関与する。いくつかの実施形態では、ＶＮＩＣは、仮想ＮＩＣエミュレータによって実装される物理ＮＩＣのソフトウェア抽象化である。
【００３０】
仮想化ソフトウェア３０５は、ＶＭ３１１〜３１４の動作を管理し、（いくつかの実施形態では、ＶＭが接続する論理ネットワークを実装することによって）物理ネットワークへのＶＭのアクセスを管理するためのいくつかの構成要素を含む。図示のように、仮想化ソフトウェアは、ＭＰＳＥ３２０、ＭＰＲＥ３３０、コントローラエージェント３４０、ＶＴＥＰ３５０、及び、アップリンクパイプライン３７０のセットを含む、様々な構成要素を含む。
【００３１】
コントローラエージェント３４０は、コントローラ、又はコントローラのクラスタから、制御プレーンメッセージを受信する。いくつかの実施形態では、これらの制御プレーンメッセージは、（ＭＰＳＥ３２０及びＭＰＲＥ３３０のような）仮想化ソフトウェアの様々な構成要素、並びに／又は仮想マシンを構成するための構成データを含む。図３に示す例では、コントローラエージェント３４０は、コントローラクラスタ３６０から物理ネットワーク３９０からの制御プレーンメッセージを受信し、受信した構成データを、ＭＰＳＥ３２０を経由せずに、制御チャネルを介してＭＰＲＥ３３０に提供する。しかしながら、いくつかの実施形態では、コントローラエージェント３４０は、物理ネットワーク３９０とは独立した直接データコンジット（図示せず）から制御プレーンメッセージを受信する。いくつかの他の実施形態では、コントローラエージェントは、ＭＰＳＥ３２０から制御プレーンメッセージを受信し、構成データを、ＭＰＳＥ３２０を介してルータ３３０に転送する。仮想化ソフトウェアのコントローラエージェント及び構成を、以下のセクションＩＩＩでさらに説明する。
【００３２】
ＶＴＥＰ（ＶＸＬＡＮトンネルエンドポイント）３５０は、ホスト３００が、論理ネットワークトラフィック（例えば、ＶＸＬＡＮトラフィック）のためのトンネルエンドポイントとして機能することを可能にする。ＶＸＬＡＮは、オーバレイネットワークカプセル化プロトコルである。ＶＸＬＡＮカプセル化によって作成されるオーバレイネットワークは、時には、ＶＸＬＡＮネットワーク、又は単にＶＸＬＡＮと呼ばれる。ホスト３００上のＶＭが、同じＶＸＬＡＮネットワーク内だが異なるホスト上の別のＶＭにデータパケット（例えば、イーサネット（登録商標）フレーム）を送信する場合、ＶＴＥＰは、パケットを物理ネットワークに送信する前に、ＶＸＬＡＮネットワークのＶＮＩ及びＶＴＥＰのネットワークアドレスを使用して、データパケットをカプセル化することになる。パケットは、物理ネットワークを介して宛先ホストにトンネリングされる（すなわち、カプセル化は、介在するネットワーク要素に対して、基になるパケットを透明にする）。宛先ホストでのＶＴＥＰは、パケットのカプセル化を解除し、元の内部のデータパケットのみを宛先ＶＭに転送する。いくつかの実施形態では、ＶＴＥＰモジュールは、ＶＸＬＡＮカプセル化のためのコントローラインタフェースとしてのみ機能し、ＶＸＬＡＮパケットのカプセル化及びカプセル化解除は、アップリンクモジュール３７０で成し遂げられる。
【００３３】
ＭＰＳＥ３２０は、物理ネットワーク３９０をインタフェースする物理ＮＩＣ３９５との間で、ネットワークデータを配信する。ＭＰＳＥは、また、物理ＮＩＣをＶＭ３１１〜３１４、ＭＰＲＥ３３０、及びコントローラエージェント３４０と通信可能に相互接続するいくつかの仮想ポート（ｖＰｏｒｔ）を含む。各仮想ポートは、いくつかの実施形態では、ユニークなＬ２ＭＡＣアドレスと関連付けられる。ＭＰＳＥは、その仮想ポートに接続された任意の２つのネットワーク要素間のＬ２リンク層パケット転送を実行する。ＭＰＳＥは、また、その仮想ポートの任意のものに接続された任意のネットワーク要素と、物理ネットワーク３９０上の到達可能なＬ２ネットワーク要素（例えば、別のホスト上で動作する別のＶＭ）との間のＬ２リンク層パケット転送を実行する。いくつかの実施形態では、ＭＰＳＥは、論理スイッチング要素（ＬＳＥ）のローカルインスタンシエイションを実装し、ＬＳＥは、異なるホストマシン間で動作し、同じホストマシン上又は異なるホストマシン上のＶＭ間のＬ２パケットスイッチングを実行することができ、又は、ＭＰＳＥは、いくつかの論理ネットワークのためのいくつかのこのようなＬＳＥを実装する。
【００３４】
ＭＰＲＥ３３０は、ＭＰＳＥ３２０上の仮想ポートから受信したデータパケットに、（例えば、Ｌ３ＩＰアドレスからＬ２ＭＡＣアドレスへの解決を実行することによって）Ｌ３ルーティングを実行する。それぞれのルーティングされたデータパケットは、次に、解決されたＬ２ＭＡＣアドレスにしたがってその宛先に転送されるように、ＭＰＳＥ３２０に送り返される。この宛先は、ＭＰＳＥ３２０の仮想ポートに接続された別のＶＭ、又は、物理ネットワーク３９０上の到達可能なＬ２ネットワーク要素（例えば、別のホスト上で動作する別のＶＭ、物理的な非仮想化マシン、など）であってよい。
【００３５】
上述したように、いくつかの実施形態では、ＭＰＲＥは、論理ルーティング要素（ＬＲＥ）のローカルインスタンシエイションであり、ＬＲＥは、異なるホストマシン間で動作し、同じホストマシン上又は異なるホストマシン上のＶＭ間のＬ３パケット転送を実行することができる。いくつかの実施形態では、ホストマシンは、単一のＭＰＳＥに接続された複数のＭＰＲＥを有することができ、ホストマシン内の各ＭＰＲＥは、異なるＬＲＥを実装する。ＭＰＲＥ及びＭＰＳＥは、ＭＰＲＥ及びＭＰＳＥが、いくつかの実施形態ではソフトウェアで実装されているとしても、「論理」ルーティング／スイッチング要素と区別するために、「物理」ルーティング／スイッチング要素と呼ばれる。いくつかの実施形態では、ＭＰＲＥは、「ソフトウェアルータ」と呼ばれ、ＭＰＳＥは、「ソフトウェアスイッチ」と呼ばれる。いくつかの実施形態では、ＬＲＥ及びＬＳＥは、総じて、論理転送要素（ＬＦＥ）と呼ばれ、ＭＰＲＥ及びＭＰＳＥは、総じて、管理される物理転送要素（ＭＰＦＥ）と呼ばれる。
【００３６】
いくつかの実施形態では、ＭＰＲＥ３３０は、１つ又は複数の論理インタフェース（ＬＩＦ）を含み、各ＬＩＦは、ネットワークの特定のセグメントに対するインタフェースとして機能する。いくつかの実施形態では、各ＬＩＦは、それ自体のＩＰアドレスによってアドレス指定可能であり、ネットワークのその特定のセグメントのネットワークノード（例えば、ＶＭ）のためのデフォルトゲートウェイ又はＡＲＰプロキシとして機能する。以下に詳細に説明するように、いくつかの実施形態では、異なるホストマシン内のＭＰＲＥのすべては、同じ「仮想」ＭＡＣアドレスによってアドレス指定可能であり、各ＭＰＲＥには、どのホストマシンでＭＰＲＥ動作を行うのかを示すために、「物理」ＭＡＣアドレスも割り当てられる。
【００３７】
アップリンクモジュール３７０は、ＭＰＳＥ３２０及び物理ＮＩＣ３９５間でデータを中継する。アップリンクモジュール３７０は、それぞれ動作のいくつかを実行する出口チェーン及び入口チェーンを含む。これらの動作のいくつかは、ＭＰＲＥ３３０のための前処理及び／又は後処理動作である。アップリンクモジュール３７０の動作を、図１４〜１５を参照して以下にさらに説明する。
【００３８】
図３によって示すように、仮想化ソフトウェア３０５は、複数の異なるＬＲＥからの複数のＭＰＲＥを有する。マルチテナント環境では、ホストマシンは、複数の異なるユーザ又はテナントからの（すなわち、異なる論理ネットワークに接続された）仮想マシンを動作させることができる。いくつかの実施形態では、各ユーザ又はテナントは、そのＬ３ルーティングを処理するための、ホスト内の対応するＭＰＲＥインスタンシエイションを有する。いくつかの実施形態では、異なるＭＰＲＥが、異なるテナントに属するにもかかわらず、それらは、すべて、ＭＰＳＥ３２０上の同じｖＰｏｒｔ、したがって同じＬ２ＭＡＣアドレスを共有する。いくつかの他の実施形態では、異なるテナントに属するそれぞれの異なるＭＰＲＥは、ＭＰＳＥに対するそれ自体のポートを有する。
【００３９】
ＭＰＳＥ３２０及びＭＰＲＥ３３０は、データパケットが、（異なるテナントのＶＭとして、同じ論理ネットワークに接続されたＶＭが、互いに分離される限り）外部の物理ネットワーク３９０を介して送信されることなく、ＶＭ３１１〜３１４間で転送されることを可能にする。
【００４０】
図４は、ＭＰＳＥ３２０によるＬ２転送動作を示す。「１」とラベル付けされた動作は、完全にホストマシン３００内で生じる、ＶＭ３１１とＶＭ３１２の間のネットワークトラフィックを表す。これは、ＶＭ３１３と、別のホストマシン上の別のＶＭとの間のネットワークトラフィックを表す、「２」とラベル付けされた動作と対比される。他のホストマシンに到達するために、ＭＰＳＥ３２０は、ＮＩＣ３９５を介して物理ネットワーク３９０上にパケットを送信する。
【００４１】
図５ａ〜ｂは、ＭＰＳＥ３２０と協働するＭＰＲＥ３３０によるＬ３ルーティング動作を示す。ＭＰＲＥ３３０は、関連するＭＡＣアドレスを有し、ＶＭ３１１〜３１４の任意のものからＬ２レベルトラフィックを受信することができる。図５ａは、その宛先がＭＰＲＥ３３０と同じホスト内のパケットのための第１のＬ３ルーティング動作を示す。「１」とラベル付けされた動作では、ＶＭ３１２は、ＭＰＲＥのＭＡＣアドレスを使用することによって、データパケットをＭＰＲＥ３３０に送信する。「２」とラベル付けされた動作では、ＭＰＲＥ３３０は、その宛先Ｌ３レベルＩＰアドレスをＬ２レベル宛先ＭＡＣアドレスに解決することによって、受信したデータパケットにＬ３ルーティング動作を実行する。これは、以下に詳細に説明するように、アドレス解決プロトコル（ＡＲＰ）要求を送信することをＭＰＲＥ３３０に要求する可能性がある。ルーティングされたパケットは、次に、「３」とラベル付けされた動作でＭＰＳＥ３２０に送り返される。宛先ＭＡＣアドレスは、ホストマシン３００内のＶＭ（すなわち、ＶＭ３１１）に対するものであるため、動作「３」でのＭＰＳＥ３２０は、ルーティングされたパケットを、パケットが決して物理ネットワーク３９０に到達することなく、宛先ＶＭに直接転送する。
【００４２】
図５ｂは、その宛先が、物理ネットワークによってのみ到達することができるリモートホスト内にあるパケットのための第２のＬ３ルーティング動作を示す。動作「４」及び「５」は、「１」及び「２」の類似の動作であり、その間、ＶＭ３１２は、データパケットをＭＰＲＥ３３０に送信し、ＭＰＲＥ３３０は、受信したデータパケットにＬ３ルーティング動作（複数可）を実行し、ルーティングされたパケットをＭＰＳＥ３２０（再び、ことによると、宛先ＩＰアドレスをＭＡＣアドレスに解決するために、ＡＲＰ要求を送信する）に送り返す。動作「６」の間、ＭＰＳＥ３２０は、ルーティングされたパケットを、宛先のＬ２ＭＡＣアドレスに基づいて、物理ＮＩＣ３９５を介して物理ネットワーク外に送信する。
【００４３】
図５ａ〜ｂは、ＭＰＲＥと同じホストマシン内のＶＭのためのＬ３ルーティング動作を示す。いくつかの実施形態では、ＭＰＲＥは、ＭＰＲＥのホストマシン外のエンティティのためのＬ３ルーティング動作を実行するためにも使用されてよい。例えば、いくつかの実施形態では、ホストマシンのＭＰＲＥは、それ自体のＭＰＲＥを持たない別のホストマシンのためのＬ３ルーティングを実行するための「指定されたインスタンス」として機能することができる。「指定されたインスタンス」として機能するＭＰＲＥの例を、以下のセクションＩＩ．Ｃでさらに説明する。
【００４４】
図６ａ〜ｂは、物理ネットワーク３９０からホスト３００に入るパケットのための、ＭＰＲＥ３３０によって実行されるＬ３ルーティング動作を示す。それ自体のＭＰＲＥも動作させるホスト上のＶＭから送信されるパケットは、ＭＰＲＥによってルーティングされていることになるが、パケットは、それ自体はＶＤＲ  ＭＰＲＥを動作させない他のホストからＶＭ３１１〜３１４に送信されてもよい。図６ａは、動作「１」〜「３」での、物理ネットワークから受信され、ホスト３００内の仮想マシンに送信されるパケットのためのルーティング動作を示す。動作「１」では、外部のエンティティが、ＭＰＲＥのＭＡＣアドレスを指定することによって、物理ネットワークを介して、ＭＰＲＥ３３０へのＭＰＳＥ３２０にパケットを送信する。「２」とラベル付けされた動作では、ＭＰＲＥ３３０は、その宛先Ｌ３レベルＩＰアドレスをＬ２レベル宛先ＭＡＣアドレスに解決することによって、受信したデータパケットにＬ３ルーティング動作を実行する。ルーティングされたパケットは、次に、「３」とラベル付けされた動作で、ＭＰＳＥ３２０を介して宛先仮想マシンに送信される。
【００４５】
図６ｂは、動作「４」〜「６」での、外部のエンティティから別の外部のエンティティ（例えば、別のホストマシン内の仮想マシン）に送信されるパケットのためのルーティング動作を示す。動作「４」及び「５」は、「１」及び「２」の類似の動作であり、その間、ＭＰＲＥ３３０は、物理ネットワーク及びＭＰＳＥ３２０からパケットを受信し、受信したデータパケットにＬ３ルーティング動作を実行する。動作「６」では、ＭＰＲＥ３３０は、ＭＰＳＥ３２０にデータパケットを送り返し、ＭＰＳＥ３２０は、解決されたＭＡＣアドレスに基づいて、別のホストマシン内の別の仮想マシンにパケットを送信する。以下に説明するように、これは、ＭＰＲＥ３３０が、ＬＲＥを動作させない外部のホストとの通信のためのＬＲＥの指定されたインスタンシエイションである場合、生じる可能性がある。
【００４６】
いくつかの実施形態では、ホストマシン３００は、論理ネットワークをサポートすることができるネットワーク仮想化インフラストラクチャを形成するための物理ネットワークによって相互接続された多くのホストマシンのうちの１つである。このようなネットワーク仮想化インフラストラクチャは、１つ又は複数のユーザ指定された論理ネットワークを同時に実装することによって、複数のテナントをサポートすることができる。このような論理ネットワークは、仮想マシン間のＬ３レベルルーティングを実行するための１つ又は複数の論理ルータを含むことができる。いくつかの実施形態では、論理ルータは、複数のホストマシン間でインスタンス化されたＭＰＲＥによって、集団的に実装される。
【００４７】
図７は、異なるホストマシンにわたってＭＰＲＥによって実装される論理ルータを有する論理ネットワーク７０１及び７０２を概念的に示す。論理ネットワーク７０１及び７０２は、物理ネットワークによって相互接続されたいくつかのホストマシンを含むネットワーク仮想化インフラストラクチャ上に同時に実装される。図に示すように、第１の論理ネットワーク７０１は、テナントＸのためのものであり、第２の論理ネットワーク７０２は、テナントＹのためのものである。各テナントの論理ネットワークは、いくつかの仮想マシンを含む。テナントＸの仮想マシンは、セグメントＡ、Ｂ、Ｃ、及びＤに分割される。テナントＹの仮想マシンは、セグメントＥ、Ｆ、Ｇ、及びＨに分割される。いくつかの実施形態では、セグメント内の仮想マシンは、論理スイッチ上のＬ２リンク層プロトコルを使用して互いに通信することができる。いくつかの実施形態では、少なくともいくつかのセグメントは、ＶＸＬＡＮネットワークのようなカプセル化オーバレイネットワークである。いくつかの実施形態では、セグメントの各々は、異なるＩＰサブネットを形成する。
【００４８】
各論理ネットワークは、それ自体の論理ルータを有する。テナントＸのための論理ネットワーク７０１は、セグメントＡ、Ｂ、Ｃ、及びＤ間のルーティングのための論理ルータとして、ＬＲＥ７１１を有する。テナントＹのための論理ネットワーク７０２は、セグメントＥ、Ｆ、Ｇ、及びＨ間のルーティングのための論理ルータとして、ＬＲＥ７１２を有する。各論理ルータは、異なるホストマシン間でインスタンス化されたＭＰＲＥによって、ネットワーク仮想化インフラストラクチャ内に実装される。ＬＲＥ７１１内のいくつかのＭＰＲＥインスタンシエイションは、ＬＲＥ７１２内のいくつかのＭＰＲＥインスタンシエイションと同じホストマシンで動作している。
【００４９】
各ネットワークセグメントは、論理ルータに対するそれ自体の論理インタフェースを有し、各論理ルータは、論理インタフェースのそれ自体のセットを有する。図示のように、論理ルータ７１１は、それぞれセグメントＡ、Ｂ、Ｃ、及びＤのための論理インタフェースＬＩＦ  Ａ、ＬＩＦ  Ｂ、ＬＩＦ  Ｃ、及びＬＩＦ  Ｄを有し、論理ルータ７１２は、それぞれセグメントＥ、Ｆ、Ｇ、及びＨのための論理インタフェースＬＩＦ  Ｅ、ＬＩＦ  Ｆ、ＬＩＦ  Ｇ、及びＬＩＦ  Ｈを有する。各論理インタフェースは、ネットワーク仮想化インフラストラクチャ内でユニークなそれ自体の識別子（例えば、ＩＰアドレス、又はオーバレイネットワーク識別子）である。結果として、テナントＸのネットワークトラフィックを、テナントＹのネットワークトラフィックから完全に分離することができる。
【００５０】
図８は、ネットワーク仮想化インフラストラクチャのホストマシン内の論理ルータの物理的実装を示す。具体的には、図は、ホストマシン８０１及び８０２内の論理ネットワーク７０１及び７０２の（部分的）実装を示す。図示のように、ホストマシン８０１は、仮想マシン８１１〜８１５をホストしており、ホストマシン８０２は、仮想マシン８２１〜８２６をホストしている。これらの中で、仮想マシン８１１〜８１２及び８２１〜８２３は、テナントＸの仮想マシンであり、仮想マシン８１３〜８１６及び８２４〜８２６は、テナントＹの仮想マシンである。
【００５１】
各ホストマシンは、異なる２つのテナントのための２つのＭＰＲＥを含む。ホストマシン８０１は、それぞれテナントＸ及びＹのためのＭＰＲＥ８４１及び８４２を有する。ホストマシン８０２は、それぞれテナントＸ及びＹのためのＭＰＲＥ８４３及び８４４を有する。ホスト８０１は、仮想マシン８１１〜８１６及びＭＰＲＥ８４１〜８４２間のＬ２層パケット転送を実行するためのＭＰＳＥ８５１を動作させ、ホスト８０１は、仮想マシン８２１〜８２６及びＭＰＲＥ８４３〜８４４間のＬ２層パケット転送を実行するためのＭＰＳＥ８５２を動作している。
【００５２】
各ＭＰＲＥは、そのホストマシン上で動作する仮想マシンとインタフェースするための論理インタフェースのセットを有する。ＭＰＲＥ８４１及び８４３は、テナントＸのためのＭＰＲＥであり、それらは、テナントＸのネットワークセグメント（すなわち、セグメントＡ、Ｂ、Ｃ、及びＤ）のための論理インタフェースのみを有することができ、テナントＹのＭＰＲＥ８４２及び８４４は、テナントＹのネットワークセグメント（すなわち、セグメントＥ、Ｆ、Ｇ、及びＨ）のための論理インタフェースのみを有することができる。各論理インタフェースは、ネットワークＩＰアドレスと関連付けられる。ＭＰＲＥに取り付けられた論理インタフェースのＩＰアドレスは、ＭＰＲＥを、そのローカルホスト上で動作するＶＭによってアクセス可能にすることを可能にする。例えば、ＶＭ８１１は、ホスト８０１上で動作するセグメントＡの仮想マシンであり、１．１．１．２５３であるＬＩＦ  ＡのＩＰアドレスを使用することによって、そのＬ３ルータとしてＭＰＲＥ８４１を使用する。いくつかの実施形態では、ＭＰＲＥは、非アクティブであるように構成されたＬＩＦを含むことができる。例えば、ＭＰＲＥ８４１のＬＩＦ  Ｄは、ホスト８０１が、セグメントＤ内のどのＶＭも動作させないため、非アクティブである。すなわち、いくつかの実施形態では、特定のＬＲＥのための各ＭＰＲＥは、ＬＲＥの論理インタフェースのすべてを使用して構成されるが、ＬＲＥの異なるローカルインスタンシエイション（すなわち、ＭＰＲＥ）は、ローカルＬＲＥインスタンシエイションを有するホストマシン上で動作するＶＭに基づいて非アクティブな異なるＬＩＦを有することができる。
【００５３】
いくつかの実施形態では、同じセグメントのためのＬＩＦが、これらのＬＩＦが異なるホスト内の異なるＭＰＲＥに取り付けられている場合でも、同じＩＰアドレスを有することは、注目に値する。例えば、ホスト８０１上のＭＰＲＥ８４２は、セグメントＥのための論理インタフェース（ＬＩＦ  Ｅ）を有し、ホスト８０２上のＭＰＲＥ８４４もそうである。ＭＰＲＥ８４２のＬＩＦ  Ｅは、ＭＰＲＥ８４４のＬＩＦ  Ｅと同じＩＰアドレス４．１．１．２５３を共有する。すなわち、ＶＭ８１４（ホスト８０１上で動作するセグメントＥ内のＶＭ）及びＶＭ８２４（ホスト８０２上で動作するセグメントＥ内のＶＭ）の両方は、それらの個々のＭＰＲＥにアクセスするために、同じＩＰアドレス４．１．１．２５３を使用する。
【００５４】
上述したように、いくつかの実施形態では、同じホストマシン上で動作する異なるＭＰＲＥは、ＭＰＳＥ上の同じポートを共有し、これは、同じホスト上で動作するすべてのＭＰＲＥが、Ｌ２ＭＡＣアドレスを共有することを意味する。いくつかの実施形態では、データパケットを、異なるテナント及び異なるデータネットワークセグメントから分離するために、論理インタフェースのユニークなＩＰアドレスが使用される。いくつかの実施形態では、異なるネットワークセグメントからのデータパケットを、異なる論理インタフェースに向けるために、他の識別メカニズムが使用される。いくつかの実施形態は、パケットを異なるセグメントから分離するために、異なるセグメントのためのユニークな識別子を使用する。サブネットであるセグメントについて、いくつかの実施形態は、パケットが正しいサブネットからのものであるかどうかを確認するために、パケット内のＩＰアドレスを使用する。オーバレイネットワークに対応するセグメントについて、いくつかの実施形態は、データパケットを、その対応する論理インタフェースに向けるために、ネットワークセグメント識別子を使用する。いくつかの実施形態では、ネットワークセグメント識別子は、論理ネットワークのセグメントであるオーバレイネットワークの識別子（例えば、ＶＮＩ、ＶＸＬＡＮ  ＩＤ、又はＶＬＡＮタグ若しくはＩＤ）である。いくつかの実施形態では、論理ネットワークの各セグメントは、そのタイプに関係なく、セグメントの識別子としてＶＮＩが割り当てられる。
【００５５】
図９は、異なるセグメントの仮想マシンからのデータパケットが、どのように、ホスト８０１内の異なる論理インタフェースの方に向けられるのかを示す。図示のように、ＶＭ８１１〜８１６は、ＭＰＳＥ８５１の異なるポートに接続され、テナントＸのＭＰＲＥ８４１、及び、テナントＹのＭＰＲＥ８４２は、ＭＡＣアドレス「０１：２３：４５：６７：８９：ａｂ」（この説明のために、「ＶＭＡＣ」と呼ぶ）を有するポートに接続される。セグメントＡのＶＭ８１１からのパケット９０１、及び、セグメントＧのＶＭ８１５からのパケット９０２は、ＭＰＳＥ８５１に送信される。ＭＰＳＥ８５１は、今度は、パケット９０１及び９０２を、両方のパケットのための宛先ＭＡＣアドレス「ＶＭＡＣ」に基づいて、ＭＰＲＥ８４１及び８４２の仮想ポートに向ける。パケット９０１は、セグメントＡのためのＶＮＩ（「ＶＮＩ  Ａ」）を担持し、パケット９０２は、セグメントＧのためのＶＮＩ（「ＶＮＩ  Ｇ」）を担持する。ＭＰＲＥ８４１の論理インタフェース「ＬＩＦ  Ａ」は、パケット９０１を、そのネットワークセグメント識別子「ＶＮＩ  Ａ」に基づいて受け入れ、ＭＰＲＥ８４２の論理インタフェース「ＬＩＦ  Ｇ」は、パケット９０２を、そのネットワークセグメント識別子「ＶＮＩ  Ｇ」に基づいて受け入れる。テナントは、同じネットワークセグメントを共有せず、したがって、ＶＮＩを共有しないため、異なるテナントからのデータパケットは、互いに安全に分離される。
【００５６】
この図は、パケットを正しい論理ルータ及び論理ルータインターフェイスに分離するために、パケットのＶＮＩ（ネットワーク識別子タグ）を使用することを示しているが、異なる実施形態は、他の識別子を使用することができる。例えば、いくつかの実施形態は、（パケットが、送信元ＶＭと同じネットワークプレフィックスを有するＬＩＦを介して送信されることを保証するために）パケットの送信元ＩＰアドレスを使用し、又は、送信元ＩＰ及びネットワーク識別子タグの組み合わせを使用する。
【００５７】
いくつかの実施形態について、図１０は、ホストマシン内で動作する例示的なＭＰＲＥインスタンシエイション１０００のブロック図を示す。図示のように、ＭＰＲＥ１０００は、仮想ポート１０５３でＭＰＳＥ１０５０に接続される。ＭＰＳＥ１０５０は、ＭＰＲＥ１０００と同じホスト内で動作する仮想マシンに接続され、並びに、アップリンクモジュール１０７０及び物理ＮＩＣ１０９０を介して物理ネットワークに接続される。ＭＰＲＥ１０００は、データリンクモジュール１０１０及びルーティングプロセッサ１００５、論理インタフェースデータストレージ１０３５、ルックアップテーブルストレージ１０４０、並びに、構成データストレージ１０４５を含む。ルーティングプロセッサ１００５は、入口パイプライン１０２０、出口パイプライン１０２５、シーケンサ１０３０を含む。
【００５８】
データリンクモジュール１０１０は、ＭＰＲＥ１０００のためのＭＰＳＥ１０５０とのリンク層（Ｌ２）インタフェースである。これは、ポート１０５３に割り当てられたＭＡＣアドレス（図示の例では、「０１：２３：４５：６７：８９：ａｂ」）にアドレスされた入力データパケットを受け入れる。これは、また、出力データパケットをＭＰＳＥ
１０５０に送信する。いくつかの実施形態では、データリンクモジュールは、ブロードキャストアドレス（「ｆｆ．ｆｆ．ｆｆ．ｆｆ．ｆｆ．ｆｆ」）及び／又はマルチキャストアドレスを有するデータパケットも受け入れる。
【００５９】
入口パイプライン１０２０は、入力データパケットを、それらがルーティングシーケンサ１０３０によって順次に処理される前にキューアップするためのものである。いくつかの実施形態では、入口パイプラインは、入力データパケットに異なる処理動作を実行するいくつかのパイプラインステージも含む。いくつかの実施形態では、これらの入口処理動作は、（アクセス制御リストＡＣＬにしたがう）入口アクセス制御、及び、送信元ネットワークアドレス変換（ＮＡＴ）を含む。いくつかの実施形態では、これらの動作の少なくともいくつかは、ルックアップテーブルストレージ１０４０及び論理インタフェースデータストレージ１０３５に格納されたデータに基づくルーティング又はブリッジング動作である。いくつかの実施形態では、入口パイプラインは、入力パケットのためのインバウンドＬＩＦとして識別される論理インタフェースのための指定されたデータにしたがってアクションを実行する。
【００６０】
出口パイプライン１０２５は、ルーティングシーケンサ１０３０によって生成された出力データパケットを、それらがデータリンクモジュール１０１０によって、ＭＰＳＥ１０５０を介して送出される前にキューアップするためのものである。いくつかの実施形態では、出口パイプラインは、出力データパケットに異なる処理動作を実行するいくつかのパイプラインステージも含む。いくつかの実施形態では、これらの出口処理動作は、（アクセス制御リストＡＣＬにしたがう）出口アクセス制御、及び、宛先ネットワークアドレス変換（ＮＡＴ）を含む。いくつかの実施形態では、これらの動作の少なくともいくつかは、ルックアップテーブルストレージ１０４０及び論理インタフェースデータストレージ１０３５に格納されたデータに基づくルーティング又はブリッジング動作である。いくつかの実施形態では、出口パイプラインは、出力パケットのためのアウトバウンドＬＩＦとして識別される論理インタフェースのための指定されたデータにしたがってアクションを実行する。
【００６１】
シーケンサ１０３０は、入口パイプライン１０２０及び出口パイプライン１０２５間の連続した動作を実行する。いくつかの実施形態では、ルーティングシーケンサは、ＡＲＰ動作及びブリッジング動作のような順次動作を実行する。いくつかの実施形態では、ルーティングシーケンサは、ＡＲＰクエリ及び応答を生成するように、必要なときに新しいパケットを作成し、ネットワークに注入する。これは、前処理されたデータパケットを入口パイプライン１０２０から取得し、後処理のための出口パイクラインに出力パケットを格納する。
【００６２】
いくつかの実施形態のルーティングプロセッサ１００５は、最初に入力データパケットを様々な論理インタフェースに分類することによって、そのルーティング決定を行う。ルーティングプロセッサ１００５は、また、各論理インタフェースの現在の状態を更新し、論理インタフェースデータストレージ１０３５に格納する。例えば、ルーティングプロセッサ１００５は、データパケットが、第２の論理インタフェースに取り付けられた第２のネットワークセグメント内の第２の仮想マシンから、第３の論理インタフェースに取り付けられた第３のネットワークセグメント内の第３の仮想マシンに進む間、論理インタフェースの現在の状態に基づいて、第１の論理インタフェースに取り付けられた第１のネットワークセグメント内の第１の仮想マシンへのＡＲＰ応答を生成する。第１、第２、及び第３の論理インタフェースの現在の状態は、次に、それに応じて更新され、論理インタフェースデータストレージ１０３５に格納される。いくつかの実施形態では、ルーティングプロセッサ１００５は、また、特定の論理インタフェースの代わりに、再び、その特定の論理インタフェースの現在の状態に基づいて、（例えば、ＡＲＰ要求のための）新しいデータパケットを生成する。
【００６３】
ルーティングプロセッサ１００５は、また、ルックアップテーブルストレージ１０４０の内容に基づいて、そのルーティング決定を行う。いくつかの実施形態では、ルックアップテーブルストレージ１０４０は、（例えば、ネットワーク層ＩＰアドレスからリンク層ＭＡＣアドレスへの）Ｌ３及びＬ２アドレス解決のための解決テーブル（又は、ＡＲＰテーブル）を格納する。いくつかの実施形態では、ルーティングシーケンサは、（例えば、あるＩＰサブネットから別のＩＰサブネットへの）Ｌ３レベルルーティングを実行するだけでなく、同じＩＰサブネット内で動作する（ＶＸＬＡＮネットワーク及びＶＬＡＮネットワーク間のような）異なるオーバレイネットワーク間のブリッジングも実行する。これらの実施形態のいくつかでは、ルックアップテーブルストレージ１０４０は、ネットワークセグメント識別子（ＶＮＩ）をＭＡＣアドレスと結びつけるために必要なブリッジングテーブルを格納する。ルーティングプロセッサ１００５は、また、入力パケットから学習することによって、ブリッジングテーブル及びＡＲＰテーブル内のエントリを更新する。
【００６４】
ＭＰＲＥ１０００は、構成データストレージ１０４５も含む。ストレージ１０４５は、ＭＰＲＥ１０００の内部の様々なモジュールを構成するためのデータを格納する。例えば、いくつかの実施形態では、ストレージ１０４５内の構成データは、いくつかの論理インタフェース、並びに、各論理インタフェースの（そのＩＰアドレス、関連するネットワークセグメント、アクティブ／非アクティブ状態、ＬＩＦタイプ、などのような）パラメータを指定する。いくつかの実施形態では、構成データは、ＭＰＲＥ１０００をアドレス指定するために同じホストマシン内の仮想マシンによって使用される仮想ＭＡＣアドレス（ＶＭＡＣ）、及び、ＭＰＲＥ１０００をアドレス指定するために他のホストマシンによって使用されるその物理ＭＡＣアドレス（ＰＭＡＣ）のような、他のパラメータも指定する。いくつかの実施形態では、構成データは、ＡＣＬ、ＮＡＴ、及び／又はファイアウォール動作のためのデータも含む。いくつかの実施形態では、構成データストレージ１０００内のデータは、（図３のコントローラエージェント３４０のような）ホストマシン内のコントローラエージェントを介して、コントローラクラスタから受信される。構成データ及び制御プレーン動作を、以下のセクションＩＩＩでさらに説明する。
【００６５】
図１１は、ＭＰＳＥからのデータパケットを処理する際にＭＰＲＥによって実行されるいくつかの実施形態のプロセス１１００を概念的に示す。いくつかの実施形態では、プロセス１１００は、ルーティングプロセッサ１００５によって実行される。プロセス１１００は、ＭＰＲＥが、ＭＰＳＥからデータパケットを受信すると、開始する。プロセスは、（１１１０で）例えば、ネットワークセグメント識別子（例えば、ＶＮＩ）に基づいて、インバウンドデータパケットのための論理インタフェース（インバウンドＬＩＦ）を識別する。
【００６６】
プロセスは、次に、（１１２０で）インバウンドＬＩＦが、ブリッジングのための論理インタフェース（ブリッジＬＩＦ）、又はＬ３ルーティングを実行するための論理インタフェース（ルーティングＬＩＦの）のどちらであるかを判定する。いくつかの実施形態では、論理インタフェースは、ルーティングＬＩＦ又はブリッジＬＩＦのいずれかとして構成される。識別されたＬＩＦがブリッジＬＩＦである場合、プロセスは、１１２３に進む。識別されたＬＩＦがルーティングＬＩＦである場合、プロセスは、１１３５に進む。
【００６７】
１１２３では、プロセスは、送信元ＭＡＣと、入力パケットのネットワークセグメント識別子（例えば、ＶＮＩ）との間のペアリングを学習する。送信元ＭＡＣは、ＶＮＩによって識別されるネットワークセグメント内にあることが確実であるため、この情報は、その宛先アドレスとして同じＭＡＣアドレスを有するパケットをブリッジングするために有用である。この情報は、いくつかの実施形態では、このＭＡＣアドレスとそのＶＮＩとの間のペアリングを提供するために、ブリッジテーブルに格納される。
【００６８】
次に、プロセスは、（１１２５で）入力データパケット内の宛先ＭＡＣが、ブリッジングを必要とするＭＡＣであるかどうかを判定する。ブリッジングを必要とする宛先ＭＡＣは、送信元ネットワークセグメント内の既知の宛先を持たないＭＡＣであり、（例えば、送信元ＶＮＩと同じＩＰサブネット上にあるため）ルーティングされることができない。宛先ＭＡＣがブリッジングを要求する場合、プロセスは１１３０に進み、そうでない場合、プロセスは終了する。
【００６９】
１１３０では、プロセスは、ブリッジングテーブルにしたがって、未知の宛先ＭＡＣをＶＮＩと結びつけることによって、ブリッジング動作を実行する。いくつかの実施形態では、このようなエントリを見つけることができない場合、プロセスは、未知の宛先ＭＡＣのための一致するＶＮＩを見つけるために、ＭＰＲＥに取り付けられたすべての他のブリッジＬＩＦをフラッディングする。いくつかの実施形態では、プロセスは、ファイアウォールがこのブリッジＬＩＦのために有効になっている場合、ブリッジングを実行しないことになる。ブリッジング動作を、以下のセクションＩＩ．Ｄでさらに説明する。いくつかの実施形態では、動作１１３０は、シーケンサ１０３０のようなシーケンシャルモジュールによって実行される一連の動作である。ブリッジングを実行した後、プロセスは、１１５０に進む。
【００７０】
１１３５では、プロセスは、入力データパケット内の宛先ＭＡＣが、ＭＰＲＥにアドレスされているかどうかを判定する。いくつかの実施形態では、すべてのＭＰＲＥは、宛先としての一般的（包括的、ｇｅｎｅｒｉｃ）な仮想ＭＡＣアドレス（ＶＭＡＣ）に応答する。いくつかの実施形態では、ＭＰＲＥ内の個々のＬＩＦは、宛先としてのそれら自身のＬＩＦ  ＭＡＣ（ＬＭＡＣ）に応答する。宛先ＭＡＣアドレスが、ＭＰＲＥ（又は、ＬＩＦ）のためのものである場合、プロセスは、１１４０に進む。そうでない場合、プロセス１１００は終了する。
【００７１】
１１４０では、プロセスは、入力データパケット内の宛先ＩＰアドレスを解決する（１１４０）。いくつかの実施形態では、ＭＰＲＥは、最初に、ＡＲＰテーブル内のＩＰアドレスをルックアップすることによって、ＩＰアドレスをローカルに解決することを試みる。一致するエントリがＡＲＰテーブル内に見つからない場合、プロセスは、ＡＲＰクエリを開始し、宛先ＭＡＣアドレスを取得することになる。ＡＲＰ動作を、以下のセクションＩＩ．Ｂでさらに説明する。いくつかの実施形態では、動作１１４０は、シーケンサ１０３０のようなシーケンシャルモジュールによって実行される一連の動作である。
【００７２】
プロセスは、次に、入力パケット（又は、この時点でより適切には、出力パケット）のためのアウトバウンドＬＩＦを識別する（１１５０）。ブリッジＬＩＦであるインバウンドＬＩＦを通って来るデータパケットに関して、アウトバウンドＬＩＦは、ブリッジ結合によって提供されるＶＮＩによって識別されるブリッジＬＩＦである。ルーティングＬＩＦであるインバウンドＬＩＦを通って来るデータパケットに関して、いくつかの実施形態は、宛先ＩＰアドレスを調べることよって、アウトバウンドＬＩＦを識別する。いくつかの実施形態では、アウトバウンドＬＩＦは、ＡＲＰ解決テーブルによって提供されるＶＮＩによって識別されるルーティングＬＩＦである。
【００７３】
アウトバウンドＬＩＦを識別した後、プロセスは、アウトバウンドＬＩＦを使用することによって、出力パケットを正しい宛先セグメントに送信する（１１６０）。いくつかの実施形態では、アウトバウンドＬＩＦは、例えば、出力パケットに、宛先セグメントのネットワークセグメント識別子をタグ付けすることによって、宛先セグメントのためのパケットを準備する。次に、プロセス１１００は、終了する。
【００７４】
ＩＩ．ＶＤＲパケット処理動作
【００７５】
Ａ．ローカル及びリモートにＭＰＲＥにアクセスする
【００７６】
前述のように、セクションＩで上述したＬＲＥは、仮想分散型ルータ（ＶＤＲ）である。これは、ＭＰＲＥと異なるホスト内のＬＲＥの異なるインスタンシエイション間で、ルーティング動作（Ｌ３層ルーティングか、ブリッジングかどうかにかかわらす）を分散する。いくつかの実施形態では、ＶＤＲを用いる論理ネットワークは、ＭＰＲＥのすべてを仮想マシンのすべてに同じように見えるようにすることによって、ネットワークの仮想化をさらに強化する。これらの実施形態のいくつかでは、各ＭＰＲＥは、システム内のＭＰＲＥのすべてについて同じであるＭＡＣアドレス（ＶＭＡＣ）によって、Ｌ２データリンク層でアドレス指定可能である。これは、本明細書では仮想ＭＡＣアドレス（ＶＭＡＣ）と呼ばれる。ＶＭＡＣは、特定の論理ネットワーク内のＭＰＲＥのすべてが、仮想マシン及び論理ネットワークのユーザ（例えば、ネットワーク管理者）に１つの連続した論理ルータのように見られることを可能にする。
【００７７】
しかしながら、いくつかの実施形態では、ＭＰＲＥは、互いに、他のホストマシンと、又は、他のホストマシン内のネットワーク要素（例えば、他のホストマシン内のＭＰＲＥ及び／又はＶＭ）と通信することを必要とする。これらの実施形態のいくつかでは、ＶＭＡＣに加えて、各ＭＰＲＥは、物理ネットワーク上の他のホストマシンからの物理ＭＡＣアドレス（ＰＭＡＣ）によってユニークにアドレス指定可能である。いくつかの実施形態では、ＭＰＲＥをアドレス指定するために使用されるこのユニークなＰＭＡＣアドレスは、ＭＰＲＥを動作させるホストマシンに割り当てられるプロパティである。いくつかの実施形態は、ＭＰＲＥは、そのホストマシンのＰＭＡＣによって、それ自体の論理ネットワーク内でユニークにアドレス指定可能であるため、ホストマシンのこのユニークなＰＭＡＣを、ＭＰＲＥのユニークなＰＭＡＣと呼ぶ。いくつかの実施形態では、異なるテナントのための異なる論理ネットワークは、ホストマシン内で互いに安全に分離されるため、同じホストマシン上で動作する異なるテナントのための異なるＭＰＲＥは、すべて、（他のホストマシンからアクセス可能となるために）そのホストマシンの同じＰＭＡＣアドレスを使用することができる。いくつかの実施形態では、各ＭＰＲＥがそのホストマシンのＰＭＡＣと関連付けられるだけでなく、各論理インタフェースが、ＬＭＡＣと呼ばれるそれ自体のユニークなＭＡＣアドレスと関連付けられる。
【００７８】
いくつかの実施形態では、ＭＰＲＥを離れる各パケットは、送信元アドレスとしてＭＰＲＥのＶＭＡＣを有するが、ホストマシンは、パケットが、ＰＮＩＣに入り、物理ネットワークのためのホストを離れる前に、送信元アドレスを、ホストマシンのユニークなＰＭＡＣに変更することになる。いくつかの実施形態では、ＭＰＲＥに入る各パケットは、その宛先アドレスとして、ＭＰＲＥのＶＭＡＣを持たなければならない。物理ネットワークからホストに到達するパケットについて、ホストは、宛先アドレスがホストマシンのユニークなＰＭＡＣアドレスである場合、宛先ＭＡＣアドレスを一般的なＶＭＡＣに変更することになる。いくつかの実施形態では、ホストマシンのＰＭＡＣは、そのアップリンクモジュール（例えば、３７０）のプロパティとして実装され、アップリンクモジュールは、出力パケットの送信元ＭＡＣアドレスを、一般的なＶＭＡＣから、そのユニークなＰＭＡＣに変更し、入力パケットの宛先アドレスを、そのユニークなＰＭＡＣから、一般的なＶＭＡＣに変更する。
【００７９】
図１２は、いくつかの実施形態に関する、共通ＶＭＡＣ及びユニークなＰＭＡＣによってアドレス指定可能なＭＰＲＥを有する論理ネットワーク１２００を示す。図示のように、論理ネットワーク１２００は、２つの異なるホストマシン１２０１及び１２０２を含む。ホストマシン１２０１は、ＭＰＲＥ１２１１、ＭＰＳＥ１２２１、及びいくつかの仮想マシン１２３１を含む。ホストマシン１２０２は、ＭＰＲＥ１２１２、ＭＰＳＥ１２２２、及びいくつかの仮想マシン１２３２を含む。２つのホストマシンは、物理ネットワーク１２９０によって相互接続される。ＭＰＳＥ１２２２は、ＰＮＩＣ１２８２及びアップリンクモジュール１２４２を介して、物理ホストからデータを受信する。
【００８０】
ホスト１２０１内のＭＰＲＥ１２１１は、ＶＭＡＣアドレス１２：３４：５６：７８：９０：ａｂを使用することによって、ＶＭ１２３１によってアドレス指定可能である。ＭＰＲＥ１２１１及びＭＰＲＥ１２１２が、異なるホストマシン内の（同じＬＲＥのための）異なるＭＰＲＥであっても、ホスト１２０２内のＭＰＲＥ１２１２も、同じＶＭＡＣアドレス１２：３４：５６：７８：９０：ａｂを使用することによって、ＶＭ１２３２によってアドレス指定可能である。図示しないが、いくつかの実施形態では、異なるテナントのための異なる論理ネットワーク内のＭＰＲＥは、同じＶＭＡＣアドレスを使用することもできる。
【００８１】
ＭＰＲＥ１２１１及びＭＰＲＥ１２１２は、また、他のホストマシン内の他のネットワークエンティティによって、物理ネットワークからのそれ自体のユニークなＰＭＡＣアドレスによって、それぞれアドレス指定可能である。図示のように、ＭＰＲＥ１２１１は、それ自体のユニークなＰＭＡＣアドレス１１：１１：１１：１１：１１：１１（ＰＭＡＣ１）と関連付けられ、ＭＰＲＥ１２１２は、それ自体のユニークなＰＭＡＣアドレス２２：２２：２２：２２：２２：２２（ＰＭＡＣ２）と関連付けられる。
【００８２】
図１２は、別のホストマシン上のリモートＭＰＲＥに送信されるデータトラフィックの一例も示す。リモートＭＰＲＥは、ＭＰＲＥとは異なり、物理ネットワークから入ってくるパケットのための一般的なＶＭＡＣによって直接アドレスされることができない。リモートホスト内のＭＰＲＥは、リモートＭＰＲＥのユニークなＰＭＡＣアドレスによってのみアドレスされることが可能である。リモートホスト内で動作する仮想化ソフトウェアは、いくつかの実施形態では、Ｌ２スイッチングを実行する前に、ユニークなＰＭＡＣアドレスを一般的なＶＭＡＣに変更し戻す。
【００８３】
図１２は、「１」、「２」、「３」、及び「４」とラベル付けされた４つの動作での、ホスト１２０１内のＭＰＲＥ１２１１からホスト１２０２内のＭＰＲＥ１２１２へのトラフィックを示す。動作「１」では、ＶＭ１２３１は、一般的なＶＭＡＣアドレスを使用して、パケットをそのＭＰＲＥ１２１１に送信する。このパケットは、トラフィックのための意図された宛先に対応する宛先ＩＰアドレス（図示せず）も有することになる。動作「２」では、ホスト１２０１のＭＰＲＥ１２１１は、宛先アドレスとしてＭＰＲＥ１２１２のユニークな物理ＭＡＣ「ＰＭＡＣ２」を使用することによって、ホスト１２０２のＭＰＲＥ１２１２にパケットを送信する。この変換を実行するために、いくつかの実施形態では、ＭＰＲＥ１２１１は、宛先ＩＰアドレスに対応する宛先ＭＡＣアドレス（ＰＭＡＣ２）を識別するために、そのＡＲＰテーブル内でルックアップしている（又は、ＡＲＰを実行している）ことになる。
【００８４】
動作「３」では、データパケットは、その物理ＮＩＣを介してホスト１２０２に到達し、アップリンクモジュール１２４２（ホスト１２０２上で動作する仮想化ソフトウェアの一部）に到着する。アップリンクモジュール１２４２は、今度は、ＭＰＲＥ１２１２のユニークなＰＭＡＣ（「ＰＭＡＣ２」）を、宛先アドレスとして一般的なＶＭＡＣに変換する。動作「４」では、データパケットは、ＭＰＳＥ１２２２に到達し、ＭＰＳＥ１２２２は、一般的なＶＭＡＣに基づいて、パケットをＭＰＲＥ１２１２に転送する。
【００８５】
図１３は、１つのＶＭから、共通ＶＭＡＣ及びネットワーク１２００のためのユニークなＰＭＡＣを使用する別のＶＭにルーティングされるＬ３ネットワークトラフィックの一例を示す。ネットワークトラフィックは、ホストマシン１２０１内のＶＭ１３３１から発信される、ホストマシン１２０２内のＶＭ１３３２宛のデータパケットである。例示的なルーティングされるＬ３トラフィックは、「１」〜「４」とラベル付けされた４つの動作に示される。動作「１」の間、リンク層Ｌ２アドレス「ＭＡＣ１」を有するＶＭ１３３１は、宛先アドレスとしてＭＰＲＥの共通ＶＭＡＣを使用することによって、データパケットをＭＰＲＥ１２１１に送信する。動作「２」の間、ＭＰＲＥ１２１１は、宛先ＩＰアドレスを、リンク層Ｌ２アドレス「ＭＡＣ２」を有する宛先ＶＭのための宛先ＭＡＣアドレスに解決することによって、Ｌ３レベルルーティングを実行する。ＭＰＲＥ１２１１は、また、ＶＭ１３３１のＭＡＣアドレス「ＭＡＣ１」を、送信元ＭＡＣアドレスとしてそれ自体のユニークな物理リンク層アドレス「ＰＭＡＣ１」（１１：１１：１１：１１：１１：１１）に置き換える。動作３では、ルーティングされたパケットは、ＭＰＳＥ１２２２に到達し、ＭＰＳＥ１２２２は、宛先ＭＡＣアドレス「ＭＡＣ２」にしたがって、データパケットを宛先ＶＭ１２３２に転送する。動作「４」では、データパケットは、宛先仮想マシン１２３２に到達する。いくつかの実施形態では、ＶＭ１３３２は、標準的な（非ＡＲＰ）データトラフィックのための送信元ＭＡＣアドレスを無視するため、ユニークなＰＭＡＣが送信元アドレスである場合、ユニークなＰＭＡＣ（この場合、「ＰＭＡＣ１」）を一般的なＶＭＡＣに変更する必要はない。
【００８６】
上述したように、アップリンクモジュールは、ＰＮＩＣからＭＰＳＥへの入力データに前処理を実行し、ＭＰＳＥからＰＮＩＣへの出力データに後処理を実行するモジュールである、図１４は、（１２４２のような）アップリンクモジュールによって実行される前処理動作のためのプロセス１４００を概念的に示す。いくつかの実施形態では、プロセス１４００の動作は、ＰＮＩＣからホストマシンに入る入口パイプラインとして実装される。
【００８７】
プロセスは、（１４１０で）ＰＮＩＣから（すなわち、外部の物理ネットワークから）パケットを受信すると開始する。プロセスは、データが、ＶＸＬＡＮ又はＶＬＡＮのようなオーバレイネットワークのためのものである場合、（１４２０で）オーバレイネットワーク処理を実行する。リモートホスト上のＶＭが、同じＶＸＬＡＮネットワーク内であるがこのホスト上ではないＶＭにデータパケットを送信する場合、プロセスは、ＭＰＳＥを介してＶＭにパケットを転送させる前に、パケットのカプセル化を解除することになる。この動作を実行することによって、アップリンクモジュールは、ホストが、ＶＸＬＡＮのためのトンネルエンドポイント（例えば、ＶＴＥＰ）として機能することを可能にする。
【００８８】
次に、プロセスは、（１４３０で）入力データパケット内の宛先ＭＡＣが、ユニークな物理ＭＡＣ（ＰＭＡＣ）であるかどうかを判定する。いくつかの実施形態では、ユニークなＰＭＡＣアドレスは、特定のホストにデータパケットを導くために使用されるが、（ＭＰＳＥは、ＭＰＲＥのためのポートを、ＰＭＡＣではなくＶＭＡＣと関連付けるため）ホストのＭＰＲＥにパケットを送り込むためには使用され得ない。宛先ＭＡＣがユニークなＰＭＡＣである場合、プロセスは１４４５に進む。そうでない場合、プロセスは１４３５に進む。
【００８９】
１４３５では、プロセスは、入力データパケット内の宛先ＭＡＣが、ブロードキャストＭＡＣ（例えば、ｆｆ．ｆｆ．ｆｆ．ｆｆ．ｆｆ．ｆｆ）であるかどうかを判定する。いくつかの実施形態では、ホストは、ブロードキャストＭＡＣを受け入れることになるが、いくつかのブロードキャストパケットは、ＭＰＳＥに接続されたすべてのＶＭに送信されるのではなく、最初にＭＰＲＥによって処理されなければならない。宛先ＭＡＣが、ブロードキャストＭＡＣである場合、プロセスは、ブロードキャストパケットがＭＰＲＥに進む必要があるかどうかを確認するために、１４４０に進む。そうでない場合、プロセスは、パケットが、宛先ＭＡＣを変更することなく、ＭＰＳＥに進むことを可能にするために、１４５０に進む。
【００９０】
１４４０では、プロセスは、ブロードキャストＭＡＣを有するパケットが、ＭＰＲＥに転送される必要があるかどうかを判定する。いくつかの実施形態では、特定のタイプのブロードキャストメッセージのみが、ＭＰＲＥが関心を持つものであり、これらのタイプのブロードキャストメッセージのみが、そのブロードキャストＭＡＣアドレスを一般的なＶＭＡＣに変更しておく必要がある。例えば、ブロードキャストＡＲＰクエリメッセージは、ＭＰＲＥが関心を持つものであり、その宛先ＭＡＣアドレスをＶＭＡＣに変更しておくことによって、ＭＰＲＥに転送されることになる。ブロードキャストパケットが、ＭＰＲＥに対する対象である場合、プロセスは１４４５に進む。そうでない場合、プロセスは１４５０に進む。
【００９１】
１４４５では、プロセスは、宛先ＭＡＣ（ＰＭＡＣか、ブロードキャストかにかかわらず）を一般的なＶＭＡＣに置き換え、これらの宛先ＭＡＣを有するパケットがＭＰＲＥによって処理されることを確実にする。プロセスは、次に、パケットが、変更された宛先ＭＡＣを有するＭＰＳＥに進むことを可能にするために、１４５０に進む。次に、プロセス１４００は終了する。
【００９２】
図１５は、アップリンクモジュールによって実行される後処理動作のためのプロセス１５００を概念的に示す。いくつかの実施形態では、プロセス１５００の動作は、ＰＮＩＣを介してホストマシンから離れるパケットのための出口パイプラインとして実装される。プロセスは、（１５１０で）ＭＰＳＥからアップリンクモジュールでパケットを受信すると開始する。プロセスは、次に、（１５２０で）パケットがリモートホストのためのものであるかどうかを判定する。パケットの宛先アドレスが、ローカルホストマシン内（例えば、ＭＰＲＥ、又はＶＭの１つ）のポートを示す場合、プロセスは、パケットを無視し、終了する。そうでない場合、プロセスは１５３０に進む。
【００９３】
１５３０では、プロセスは、送信元ＭＡＣアドレスが、一般的なＶＭＡＣであるかどうか、すなわち、パケットが、ＭＰＲＥからのものであるかどうかを判定する。そうである場合、プロセスは１５４０に進む。そうでない場合、プロセスは１５５０に進む。１５４０では、プロセスは、送信元ＭＡＣアドレスとして、ＶＭＡＣを、ＭＰＲＥのユニークなＰＭＡＣに置き換える。これは、パケットの受信側が、そのユニークなＰＭＡＣアドレスを使用することによって、送信側ＭＰＲＥを正確に識別できることを保証する。
【００９４】
プロセスは、次に、データが、ＶＸＬＡＮ又はＶＬＡＮのようなオーバレイネットワークのためのものである場合、（１５５０で）オーバレイネットワーク処理を実行する。ホスト上のＶＭが、同じＶＸＬＡＮネットワーク内だが別のホスト上の別のＶＭにデータパケットを送信する場合、プロセスは、ＶＸＬＡＮネットワークのＶＮＩを使用して物理ネットワークに注入する前に、フエームをカプセル化する。この動作を実行することによって、アップリンクモジュールは、ホストが、ＶＸＬＡＮの下のトンネルエンドポイント（ＶＴＥＰ）として機能することを可能にする。次に、プロセスは、（１５６０で）パケットを物理ＮＩＣに転送する。次に、プロセス１５００は終了する。
【００９５】
Ｂ．アドレス解決を実行するためにＶＤＲを使用する
【００９６】
上述したように、各ＬＲＥは、ネットワークセグメントのそれぞれの中の仮想マシンとインタフェースするための論理インタフェースのセットを有する。いくつかの実施形態では、仮想マシンからみて、ネットワークセグメントの論理インタフェースは、ネットワークセグメント内の仮想マシンのためのデフォルトゲートウェイとしても機能する。ＬＲＥは各ホストマシン内のＭＰＲＥを動作させるため、いくつかの実施形態では、（デフォルトゲートウェイのためのＡＲＰのような）その論理インタフェースの１つのためのＡＲＰクエリを受信するＭＰＲＥは、クエリを他のホストマシンに転送することなく、クエリにローカルに応答する。
【００９７】
図１６は、論理ネットワーク１６００内のＶＤＲ／ＬＲＥ  ＭＰＲＥの論理インタフェースのためのＡＲＰクエリ動作を示す。論理ネットワーク１６００は、少なくとも２つのホストマシン１６０１及び１６０２間に分散される。ホストマシン１６０１は、ＭＰＲＥ１６１１を有し、ホストマシン１６０２は、ＭＰＲＥ１６１２を有する。各ＭＰＲＥは、論理ネットワークのセグメントＡのための論理インタフェース（ＬＩＦ  Ａ）、及び、セグメントＢのための論理インタフェース（ＬＩＦ  Ｂ）を有する。（ＭＰＲＥ１６１１は、ＬＩＦ  Ａ１６２１及びＬＩＦ  Ｂ１６３１を有し、ＭＰＲＥ１６１２は、ＬＩＦ  Ａ１６２２及びＬＩＦ  Ｂ１６３２を有する。）ホストマシン１６０１は、ＭＰＲＥ１６１１のＬＩＦ  Ａを使用するセグメントＡ  ＶＭ１６２９を有する。ホストマシン１６０２は、ＭＰＲＥ１６１２のＬＩＦ  Ｂを使用するセグメントＢ  ＶＭ１６３９を有する。
【００９８】
各ＬＩＦは、ＩＰアドレスと関連付けられる。しかしながら、図示のように、ＭＰＲＥ１６１１のＬＩＦ  Ａ１６２１、及び、ＭＰＲＥ１６１２のＬＩＦ  Ａ１６２２は、両方とも同じＩＰアドレス（１０．１．１．２５３）を有する。これは、セグメントＡ（サブネット１０．１．１．ｘ）のデフォルトゲートウェイのＩＰアドレスである。同様に、ＭＰＲＥ１６１１のＬＩＦ  Ｂ１６３１、及び、ＭＰＲＥ１６１２のＬＩＦ  Ｂ１６３２は、両方とも同じＩＰアドレス（１０．１．２．２５３）を有する。これは、セグメントＢ（サブネット１０．１．２．ｘ）のデフォルトゲートウェイのＩＰアドレスである。
【００９９】
図は、「１」〜「６」とラベル付けされた動作で、ＶＭ１６２９及び１６３９によって形成される２つのＡＲＰクエリを示す。動作「１」では、セグメントＡの仮想マシン１６２９は、そのセグメントのデフォルトゲートウェイのためのＡＲＰクエリを作成する。ＡＲＰクエリメッセージは、宛先ＩＰアドレスとしてＬＩＦ  ＡのＩＰアドレス（１０．１．１．２５３）を使用し、宛先ＭＡＣアドレスとしてブロードキャストＭＡＣを使用する。動作「２」の間に、ＬＩＦ  Ａ１６２１は、ＩＰアドレス「１０．１．１．２５３」をすべてのＭＰＲＥのためのＶＭＡＣアドレスに解決することによって、ＡＲＰクエリに応答する。さらに、ＬＩＦ  Ａ１６２１は、ＡＲＰクエリメッセージを物理ネットワークに渡さない。これは、他のホストマシン内の他のＶＤＲ／ＬＲＥ  ＭＰＲＥ上のＬＩＦ  Ａ（例えば、ホストマシン１６０２上のＬＩＦ  Ａ１６２２）のような、ＬＩＦ  Ａと同じＩＰアドレス「１０．１．１．２５３」を有するネットワーク内の他のエンティティが応答するのを防ぐ。動作「３」では、ＶＭ１６２９は、ＡＲＰ応答メッセージを受信し、その解決テーブルを更新し、デフォルトゲートウェイのＩＰアドレスをＭＡＣアドレス「ＶＭＡＣ」に解決する。この応答メッセージの宛先ＭＡＣアドレスは、元の問い合わせ元のＭＡＣアドレス（すなわち、ＶＭ１６２９のための「ＭＡＣ１」）であり、送信元ＭＡＣアドレスは、ＭＰＲＥの新たに解決されたＭＡＣアドレス「ＶＭＡＣ」である。ＶＭ１６２９は、次に、その後に送信するルーティングする必要があるパケットをアドレス指定するために、ＭＰＲＥ１６１１にその後にアクセスするために、このエントリを、その解決テーブルに格納する。動作「４」、「５」、及び「６」は、動作「１」、「２」、及び「３」の類似した動作であり、ＭＰＲＥ１６１２のＬＩＦ  Ｂ１６３２は、ＡＲＰクエリメッセージを物理ネットワークに渡すことなく、セグメントＢ  ＶＭ１６３９によるＡＲＰ要求に応答する。ＶＭ１６３９によるＡＲＰ要求は、異なるＭＰＲＥ上の異なるＬＩＦに送信されるが、同じアドレス「ＶＭＡＣ」が、ＡＲＰ応答で使用される。
【０１００】
仮想マシンが、デフォルトゲートウェイのＭＡＣアドレスを一旦知ると、ＭＰＲＥの論理インタフェースをアドレス指定するためにＶＭＡＣを使用することによって、データパケットを他のネットワークセグメントに送り込むことができる。しかしながら、ＭＰＲＥが、（例えば、宛先仮想マシンのための）宛先ＩＰアドレスが解決される先のリンク層ＭＡＣアドレスを知らない場合、ＭＰＲＥは、このアドレスを解決する必要がある。いくつかの実施形態では、ＭＰＲＥは、このようなアドレス解決情報を、他のホストマシン内の同じＬＲＥの他のＭＰＲＥから、又は、コントロールクラスタから得ることができる。いくつかの実施形態では、ＭＰＲＥは、そのＭＡＣアドレスを決定するために、宛先仮想マシンのネットワークセグメント内で、それ自体のＡＲＰクエリを開始することができる。このようなＡＲＰ要求を行う場合、ＭＰＲＥは、物理ネットワーク上で他のＭＰＲＥに送信されるパケットのための送信元アドレスとして、一般的なＶＭＡＣアドレスではなく、それ自体のユニークなＰＭＡＣアドレスを使用する。
【０１０１】
図１７は、いくつかの実施形態のＭＰＲＥが開始したＡＲＰクエリを示す。具体的には、図は、ＭＰＲＥが、それ自体のＡＲＰクエリを開始するためにそれ自体のＰＭＡＣアドレスを使用する、論理ネットワーク１７００の実装を示す。図示のように、論理ネットワーク１７００の実装は、少なくとも２つのホストマシン１７０１及び１７０２を含む。ホストマシン１７０１上にあるのは、セグメントＡ内のＶＭ１７３１、セグメントＡのための論理インタフェース１７２１を有するＭＰＲＥ１７１１、及び、物理ネットワークからデータを受信するためのアップリンクモジュール１７４１である。ホストマシン１７０２上には、セグメントＢ内のＶＭ１７３２、セグメントＢのための論理インタフェース１７２２を有するＭＰＲＥ１７１２、及び、物理ネットワークからデータを受信するためのアップリンクモジュール１７４２が存在している。一般的なＶＭＡＣに加えて、ＭＰＲＥ１７１１は、ユニークな物理ＭＡＣアドレス「ＰＭＡＣ１」を有し、ＭＰＲＥ１７１２は、ユニークな物理ＭＡＣアドレス「ＰＭＡＣ２」を有する。
【０１０２】
「１」〜「８」とラベル付けされた動作では、図は、セグメントＢ内のＶＭ１７３２のための、ホストマシン１７０１からＭＰＲＥ１７１１によって開始されたＡＲＰクエリを示す。動作「１」の間に、（セグメントＡ内の）ＩＰアドレス１０．１．１．１を有するＶＭ１７３１は、パケットを、（セグメントＢ内の）宛先ネットワーク層アドレス１０．１．２．１に送信し、宛先ネットワーク層アドレス１０．１．２．１は、そのＭＰＲＥ１７１１によるＬ３ルーティングを要求する。ＶＭ１７３１は、そのデフォルトゲートウェイのＬ２リンク層アドレスが「ＶＭＡＣ」であることを（例えば、以前のＡＲＰクエリから）すでに知っており、したがって、宛先ＩＰアドレスが別のセグメント内であるため、ＶＭ１７３１は、ＶＭＡＣを使用することによって、データパケットを直接ＭＰＲＥ１７１１に送信する。
【０１０３】
動作「２」の間に、ＭＰＲＥ１７１１は、宛先ＶＭ１７３２のためのＬ２リンク層アドレスを有していないことを（例えば、そのアドレス解決テーブルをチェックすることによって）判定し、したがって、宛先ＩＰ「１０．１．２．１」のためのＡＲＰクエリを開始する。このＡＲＰクエリは、送信元ＭＡＣアドレスとして、ＭＰＲＥ１７１１のユニークな物理ＭＡＣアドレス（「ＰＭＡＣ１」）を使用し、宛先ＭＡＣとしてブロードキャストＭＡＣアドレスを使用する。ＭＰＲＥ１７１１は、宛先ＩＰ「１０．１．２．１」がセグメントＢ内であることを判定するために、パケットにＬ３ルーティングも実行しており、したがって、送信元ＩＰを「１０．１．２．２５３」（すなわち、ＬＩＦ  ＢのＩＰアドレス）に変更する。ブロードキャストＡＲＰメッセージは、ホスト１７０２に到達するために、物理ネットワークを横断する。いくつかの実施形態では、論理ネットワークが、追加のホスト（すなわち、ＭＰＲＥのような追加のローカルＬＲＥインスタンシエイションを有する追加のホスト）にまたがる場合、ＡＲＰメッセージは、同様にこれらの他のホストに送信されることになる。
【０１０４】
動作「３」の間、ブロードキャストＡＲＰクエリは、ホスト１７０２上で動作するアップリンクモジュール１７４２に到着し、アップリンクモジュール１７４２は、ブロードキャストＭＡＣアドレス（「ｆｆｆｆｆｆｆｆｆｆｆｆ」）を、ＭＰＲＥのすべてに一般的な「ＶＭＡＣ」に置き換え、そのため、ホスト１７０２内のＭＰＳＥは、ＡＲＰクエリパケットをＭＰＲＥ１７１２に転送することになる。送信元アドレス「ＰＭＡＣ１」は、送信側ＭＡＣアドレス１７１１に対してユニークであるが、修正されたＡＲＰクエリ内にとどまる。
【０１０５】
動作「４」の間、ホスト１７０２のＭＰＲＥ１７１２は、ＶＭＡＣが宛先アドレスであることを理解するため、ＡＲＰクエリを受信する。ＭＰＲＥ１７１２は、宛先ＩＰアドレス１０．１．２．１を解決することができず、そこで、ＶＭ１７３２を含むセグメントＢ上にあるホスト１７０２の任意のローカルＶＭへのブロードキャスト（宛先「ｆｆｆｆｆｆｆｆｆｆｆｆ」）として、ＬＩＦ  Ｂ１７２２を介してＡＲＰクエリを転送する。ＡＲＰクエリは、ＶＭ１７３２のための（セグメントＢのための）アウトバウンドＬＩＦ１７２２を介して、ＭＰＲＥ１７１２を出て行く。
【０１０６】
動作「５」の間、送信元ＭＡＣアドレスとして「ＶＭＡＣ」を有するブロードキャストＡＲＰクエリは、ＶＭ１７３２に到達し、ＶＭ１７３２は、ＡＲＰクエリに対する応答メッセージを、ＬＩＦ  Ｂ１７２２を介してＭＰＲＥ１７１２に送信する。応答メッセージでは、ＶＭ１７３２は、Ｌ３ネットワーク層アドレス「１０．１．２．１」に対応するＬ２レベルリンクアドレスが、そのアドレス「ＭＡＣ２」であることを示し、応答が、一般的なＭＡＣアドレス「ＶＭＡＣ」を使用して、要求側のＭＰＲＥ１７１２に送信されるべきであることを示す。ＭＰＲＥ１７１２は、また、それ自体のＡＲＰ解決テーブル１７５２を、「１０．１．２．１」について更新し、そのため、将来的にＡＲＰプロキシとして機能することができる。
【０１０７】
動作「６」の間、ＭＰＲＥ１７１２は、応答している（ＩＰ１０．１．１．２５３がＭＡＣ「ＰＭＡＣ１」に解決することを示している）対象のＡＲＰクエリからのＭＰＲＥ１７１２によって格納された情報に基づいて、宛先ＭＡＣアドレスとして「ＰＭＡＣ１」を使用することによって、問い合わせ側ＭＰＲＥ１７１１に応答パケットを転送する。動作「７」の間、ホスト１７０２のためのアップリンクモジュール１７４１は、ホスト１７０１のＭＰＳＥが、パケットをローカルにＭＰＲＥ１７１１に転送することになるように、ユニークな「ＰＭＡＣ１」を一般的な「ＶＭＡＣ」に変換する。最終的に、動作「８」では、応答メッセージは、元の問い合わせ側ＭＰＲＥ１７１１に到達し、ＭＰＲＥ１７１１は、ＩＰアドレス１０．１．２．１のためのアドレス解決（すなわち、「ＭＡＣ２」）をそれ自体の解決テーブル１７５１に格納することになり、そのため、ＶＭ１７３１からのパケットをＶＭ１７３２に転送することができることになる。この時点で、ＶＭ１７３１によって最初に送信されたデータパケットを、ＶＭ１７３２への配信のためにルーティングすることができ、ホスト１７０２に向けて物理ネットワーク上に送信することができる。
【０１０８】
ＭＰＲＥ１７１２は、ＶＭ１７３２のためのアドレスをそれ自体によって解決することができなかったため、ＡＲＰ問い合わせを伝達しなければならない。しかしながら、一旦ＭＰＲＥ１７１２が、ＶＭ１７３２からのＡＲＰ応答を受信すると、アドレス１０．１．２．１に関する後続のＡＲＰクエリに対して、それ自体によって、ＡＲＰ問い合わせを伝達する必要なく、応答することができる。図１８は、ＭＰＲＥ１７１２が解決することができるＡＲＰ問い合わせに応答するためのプロキシとして機能する、ネットワーク１７００内のＭＰＲＥ１７１２を示す。
【０１０９】
図１８は、前の図からのホスト１７０２、並びに別のホストマシン１７０３を有するネットワーク１７００を示す。ホスト１７０２内のＭＰＲＥ１７１２のＡＲＰ解決テーブル１７５２は、ＶＭ１７３２のためのＩＰアドレス１０．１．２．１を解決するためのエントリをすでに有する。ホスト１７０３上には、論理ネットワークのセグメントＤ上のＶＭ１７３３、セグメントＤのための論理インタフェース１７２４を有するＭＰＲＥ１７１３、及び、物理ネットワークからのデータを受信するためのアップリンクモジュール１７４３が存在している。一般的なＶＭＡＣに加えて、ＭＰＲＥ１７１３は、ユニークな物理ＭＡＣアドレス「ＰＭＡＣ３」を有する。「１」〜「６」とラベル付けされた動作では、図は、セグメントＢ内のＶＭ１７３２のための、ホストマシン１７０３からＭＰＲＥ１７１３によって開始されたＡＲＰクエリを示す。
【０１１０】
動作「１」の間、（セグメントＤ内の）ＩＰアドレス１０．１．５．１を有するＶＭ１７３３は、パケットを（セグメントＢ内の）宛先ネットワーク層アドレス１０．１．２．１に送信し、これは、そのＭＰＲＥ１７１３によるＬ３ルーティングを必要とする。ＶＭ１７３３は、そのデフォルトゲートウェイのＬ２リンク層アドレスが「ＶＭＡＣ」であることを（例えば、以前のＡＲＰクエリから）すでに知っており、したがって、宛先ＩＰアドレスが別のセグメント内であるため、ＶＭ１７３３は、ＶＭＡＣを使用することによって、データパケットを直接ＭＰＲＥ１７１３に送信する。
【０１１１】
動作「２」の間に、ＭＰＲＥ１７１３は、宛先ＶＭ１７３２のためのＬ２リンク層アドレスを有していないことを（例えば、そのアドレス解決テーブルをチェックすることによって）認識し、したがって、宛先ＩＰ「１０．１．２．１」のためのＡＲＰクエリを開始する。このＡＲＰクエリは、送信元ＭＡＣアドレスとして、ＭＰＲＥ１７１３のユニークな物理ＭＡＣアドレス（「ＰＭＡＣ３」）を使用し、宛先ＭＡＣとしてブロードキャストＭＡＣアドレスを使用する。ＭＰＲＥ１７１３は、宛先ＩＰ「１０．１．２．１」がセグメントＢ内であることを判定するために、パケットにＬ３ルーティングも実行しており、したがって、送信元ＩＰを「１０．１．２．２５３」（すなわち、ＬＩＦ  ＢのＩＰアドレス）に変更する。このブロードキャストＡＲＰメッセージは、ホスト１７０２に到達するために、物理ネットワークを横断する。加えて、図示しないが、ホスト１７０１は、ＭＰＲＥ１７１１を有するため、ブロードキャストＡＲＰメッセージは、このホスト１７０１にも到達することになる。
【０１１２】
動作「３」の間、ブロードキャストＡＲＰクエリは、ホスト１７０２上で動作するアップリンクモジュール１７４２に到着し、アップリンクモジュール１７４２は、ブロードキャストＭＡＣアドレス（「ｆｆｆｆｆｆｆｆｆｆｆｆ」）を、ＭＰＲＥのすべてに一般的な「ＶＭＡＣ」に置き換え、そのため、ホスト１７０２内のＭＰＳＥは、ＡＲＰクエリをＭＰＲＥ１７１２に転送することになる。送信元アドレス「ＰＭＡＣ３」は、送信側ＭＰＲＥ１７１３に対してユニークであるが、修正されたＡＲＰクエリ内にとどまる。
【０１１３】
動作「４」の間、ＭＰＲＥ１７１２は、それ自体の解決テーブル１７５２を調べ、ＩＰアドレス１０．１．２．１をＭＡＣ２に解決することができることを認識する。ＭＰＲＥは、したがって、ＡＲＰクエリをそのセグメントＢのすべてのＶＭに転送するのではなく、物理ネットワークを介して宛先アドレス「ＰＭＡＣ３」にＡＲＰ応答を送信する。ＬＩＦ  Ｂ１７２２及びＶＭ１７３２は、この場合では、ＡＲＰ応答動作に関与しない。
【０１１４】
動作「５」の間、ホスト１７０３のためのアップリンクモジュール１７４３は、ホスト１７０３のＭＰＳＥが、パケットをローカルにＭＰＲＥ１７１３に転送することになるように、ユニークな「ＰＭＡＣ３」を一般的な「ＶＭＡＣ」に変換する。最終的に、動作「６」では、応答メッセージは、元の問い合わせ側ＭＰＲＥ１７１３に到達し、ＭＰＲＥ１７１３は、ＩＰアドレス１０．１．２．１のためのアドレス解決（すなわち、「ＭＡＣ２」）をそれ自体の解決テーブル１７５３に格納することになり、そのため、ＶＭ１７３３からのパケットをＶＭ１７３２に転送することができることになる。この時点で、ＶＭ１７３３によって最初に送信されたデータパケットを、ＶＭ１７３２への配信のためにルーティングすることができ、ホスト１７０２に向けて物理ネットワーク上に送信することができる。
【０１１５】
図１７及び１８は、送信側ＭＰＲＥと異なるホストマシン内にある仮想マシンのためのＡＲＰ問い合わせでのユニークなＰＭＡＣの使用を示す。しかしながら、いくつかの実施形態では、このＡＲＰメカニズムは、送信側ＭＰＲＥと同じホストマシン内で動作している仮想マシンのアドレスを解決するのとちょうど同じように動作する。図１９は、送信側ＭＰＲＥと同じホストマシン内にある仮想マシンのためのＡＲＰ問い合わせでのユニークなＰＭＡＣの使用を示す。
【０１１６】
図１９は、図１７のネットワーク１７００内で行われる別のＡＲＰ問い合わせを示す。図１９に示すように、ホスト１７０２内には、ＭＰＲＥ１７１２に加えて、別のセグメントＢのＶＭ１７３４及びセグメントＣのＶＭ１７３５も存在している。ＭＰＲＥ１７１２は、ＶＭ１７３５のようなセグメントＣ内のＶＭとインタフェースするための論理インタフェース１７２３を有する。図１９は、ＭＰＲＥ１７１２によって開始されるＡＲＰ動作を示す。このＡＲＰ動作は、ＭＰＲＥ１７１２が、両方がホスト１７０２上に存在するセグメントＣ内のＶＭ１７３５からセグメントＢ内のＶＭ１７３４にパケットをルーティングシなければならないため、開始される。開始側ＭＰＲＥ１７１１が、別のホストマシン内のＶＭに関して問い合わせしている、図１７に示すＡＲＰ動作とは異なり、図１９に示すＡＲＰ動作は、開始側ＭＰＲＥ１７１２と同じホストマシン内に位置するＶＭのためのものである。
【０１１７】
「１」〜「９」とラベル付けされた動作では、図は、セグメントＢ内のＶＭ１７３４のための、ＭＰＲＥ１７１２によって開始されたＡＲＰクエリを示す。動作「１」の間、（セグメントＣ内の）ＩＰアドレス１０．１．３．１を有するＶＭ１７３１は、パケットを（セグメントＢ内の）宛先ネットワーク層アドレス１０．１．２．２に送信し、これは、そのＭＰＲＥ１７１２によるＬ３ルーティングを必要とする。ＶＭ１７３５は、そのデフォルトゲートウェイのＬ２リンク層アドレスが「ＶＭＡＣ」であることを（例えば、以前のＡＲＰクエリから）すでに知っており、したがって、宛先ＩＰアドレスが別のセグメント内であるため、ＶＭ１７３５は、ＶＭＡＣを使用することによって、データパケットを直接ＭＰＲＥ１７１２に送信する。
【０１１８】
動作「２」の間、ＭＰＲＥ１７１２は、宛先ＶＭ１７３４のためのＬ２リンク層アドレスを有していないことを（例えば、そのアドレス解決テーブルをチェックすることによって）判定し、したがって、ネットワークセグメントＢ内の宛先ＩＰ１０．１．２．１のためのＡＲＰクエリを開始する。ＡＲＰクエリは、セグメントＢ上のホスト１７０２、並びに、（ホスト１７０１のような）他のホストのすべてのローカルＶＭにブロードキャストされることになる。
【０１１９】
動作「３」の間、ＭＰＲＥ１７１２は、ＡＲＰクエリを、ＶＭ１７３４を含むすべてのローカルセグメントＢのＶＭに、ＬＩＦ  Ｂ１７２２を介してブロードキャストする。このブロードキャストは、ホスト１７０２内のローカルであるため、送信元アドレスは、一般的なＶＭＡＣのままである。動作「４」の間、ホスト１７０２内の（セグメントＢで）ローカルにブロードキャストされたＡＲＰクエリは、ＶＭ１７３４に到達し、ＶＭ１７３４は、ＡＲＰクエリに対する応答メッセージを送信する。
【０１２０】
動作「３」及び「４」と同時に、ＭＰＲＥ１７１２は、動作「５」の間、ＡＲＰ要求を他のホストにもブロードキャストする。このブロードキャストメッセージは、その宛先ＭＡＣとしてブロードキャストＭＡＣアドレスを使用し、送信元ＭＡＣアドレスとして（例えば、物理ＮＩＣに送信される前にアップリンクによって修正されるような）ＭＰＲＥ１７１２のユニークなＰＭＡＣ「ＰＭＡＣ２」を使用する。ＭＰＲＥ１７１２は、宛先ＩＰ「１０．１．２．２」がセグメントＢ内であることを判定するために、パケットにＬ３ルーティングも実行し、したがって、送信元ＩＰを「１０．１．２．２５３」（すなわち、ＬＩＦ  ＢのＩＰアドレス）に変更する。動作「６」で、ブロードキャストＡＲＰは、そのアップリンクモジュール１７４１が宛先ＭＡＣをそのＭＰＲＥ１７１１のための一般的なＶＭＡＣに変更したホスト１７０１に到達する。しかしながら、（いくつかの実施形態では、これらのホストが、それらのセグメントＢのＶＭにＡＲＰを転送するが）ＩＰ１０．１．２．２に対応するものがないため、他のホストからのＡＲＰ応答はない。
【０１２１】
動作「７」の間、ＶＭ１７３４は、動作「４」の間に受信したＡＲＰクエリに対する応答メッセージを生成する。応答メッセージは、Ｌ２アドレス「ＭＡＣ４」が、要求されたＬ３ネットワーク層アドレス「１０．１．２．２」に対応することを示し、応答が、その一般的なＭＡＣアドレス「ＶＭＡＣ」を使用して、要求側のＭＰＲＥに送信されるべきであることを示す。動作「８」の間、ＶＭ１７３４によって生成されたＡＲＰ応答は、ＬＩＦ  Ｂ１７２２を介してＭＰＲＥ１７１２に入る。最終的に、動作「９」では、ＶＭ１７３５からの（最初に送信されたデータパケットを含む）パケットをＶＭ１７３４に転送することができるように、ＭＰＲＥ１７１２は、ＩＰアドレス１０．１．２．２のためのアドレス解決（すなわち、「ＭＡＣ４」）を、それ自体の解決テーブル１７５２に格納する。
【０１２２】
図２０及び２１は、ＭＰＲＥが、それらの解決テーブルを更新した後の、異なるセグメントのＶＭ間でデータトラフィックを送信するための動作を示す。具体的には、図２０及び２１は、ホスト１７０１のＭＰＲＥ１７１１、及びＭＰＲＥ１７１２が、図１７及び１９に示すように、以前のＡＲＰクエリによってそれらの解決テーブルを更新した後の、ＶＭ１７３１、１７３２、及び１７３５間のネットワーク１７００に関するデータトラフィックを示す。
【０１２３】
図２０は、セグメントＡのＶＭ１７３１及びセグメントＣのＶＭ１７３５から、セグメントＢのＶＭ１７３２へのデータパケットのルーティングを示す。ルーティングは、ＭＰＲＥ１７１１及び１７１２内で行われ、ＭＰＲＥ１７１１及び１７１２は、それぞれ、送信側ＶＭ１７３１及び送信側ＶＭ１７３５のためのＭＰＲＥである。ＭＰＲＥ１７１１は、ルーティングルックアップのための解決テーブル１７５１を使用し、ＭＰＲＥ１７１２は、ルーティングルックアップのための解決テーブル１７５２を使用する。
【０１２４】
動作「１」〜「３」は、セグメントＡのＶＭ１７３１からセグメントＢのＶＭ１７３２へのデータパケットのルーティングを示す。動作「１」の間、ＶＭ１７３１は、一般的なＶＭＡＣを使用して、ＭＰＲＥ１７１１のＬＩＦ  Ａ１７２１にパケットを送信する。パケットは、ＩＰアドレス１０．１．２．１を宛先とし、ＩＰアドレス１０．１．２．１は、ＶＭ１７３１（ＩＰアドレス１０．１．１．１）とは異なるネットワークセグメント内であり、したがって、Ｌ３層ルーティングを必要とする。動作「２」の間、ＭＰＲＥ１７１１は、（図１７に示す動作によって学習されるように）解決テーブル１７５１内のエントリを使用することによって、ＩＰアドレス１０．１．２．１をＬ２アドレス「ＭＡＣ２」及びセグメントＢに解決する。ＭＰＲＥ１７１１は、それ自体のユニークなＬ２アドレス「ＰＭＡＣ１」を、物理ネットワークに送出されたパケットのための送信元アドレスとして使用する。ＭＰＲＥ１７１１は、また、ＬＩＦ  Ｂ１７２５をアウトバウンドＬＩＦとして識別しており、（セグメントＢのネットワーク識別子をタグ付けされた）物理ネットワークを介してホスト１７０２にパケットを送信するために、このＬＩＦを使用する。動作「３」の間、ルーティングされたパケットは、物理ネットワークを横断し、Ｌ２アドレスが「ＭＡＣ２」の宛先ＶＭ１７３２に到着している。
【０１２５】
動作「４」〜「６」は、データパケットがホスト１７０２を離れる必要がない、セグメントＣのＶＭ１７３５からセグメントＢのＶＭ１７３２へのデータパケットのルーティングを示す。動作「４」の間、ＶＭ１７３５は、一般的なＶＭＡＣをパケットの宛先ＭＡＣとして使用して、ＭＰＲＥ１７１２のＬＩＦ  Ｃ１７２３にパケットを送信する。パケットは、ＩＰアドレス１０．１．２．１を宛先とし、ＩＰアドレス１０．１．２．１は、ＶＭ１７３５（ＩＰアドレス１０．１．３．１）とは異なるネットワークセグメント内であり、したがって、Ｌ３ルーティングを必要とする。動作「５」の間、ＭＰＲＥ１７１２は、解決テーブル１７５２内のエントリを使用することによって、ＩＰアドレス１０．１．２．１をＬ２アドレス「ＭＡＣ２」に解決する。ＭＰＲＥ１７１２は、また、このパケットは、物理ネットワークのためのホスト１７０２を決して離れないため、送信元Ｌ２ＭＡＣアドレスとしてＶＭＡＣを使用する。ＭＰＲＥ１７１２は、また、ＬＩＦ  Ｂ１７２２をアウトバウンドＬＩＦとして識別しており、ローカルセグメントＢのＶＭ１７３２にパケットを送信するためにこのＬＩＦを使用する。動作「６」の間、データパケットは、ＭＡＣアドレスが「ＭＡＣ２」の宛先ＶＭ１７３２に到着する。
【０１２６】
図２１は、セグメントＢのＶＭ１７３２からセグメントＡのＶＭ１７３１及びセグメントＣのＶＭ１７３５に送信されたデータパケットのルーティングを示す。ルーティングは、ＭＰＲＥ１７１２内で行われ、ＭＰＲＥ１７１２は、送信側ＶＭ１７３２のためのローカルルータインスタンスである。ＭＰＲＥ１７１２は、上述したように、ルーティングルックアップのために解決テーブル１７５２に依存する。ＭＰＲＥ１７１２は、ＶＭ１７３２のようなセグメントＢ内のＶＭとインタフェースするための論理インタフェース１７２２（ＬＩＦ  Ｂ）を有する。ＭＰＲＥ１７１２は、ＶＭ１７３５のようなセグメントＣ内のＶＭとインタフェースするための論理インタフェース１７２３（ＬＩＦ  Ｃ）を有する。ＭＰＲＥ１７１２は、ＶＭ１７３１のようなセグメントＡ内のＶＭとインタフェースするための論理インタフェース１７２５（ＬＩＦ  Ａ）も有する。
【０１２７】
動作「１」〜「３」は、セグメントＢのＶＭ１７３２からセグメントＡのＶＭ１７３１へのデータパケットのルーティングを示す。動作「１」の間、ＶＭ１７３２は、一般的なＶＭＡＣを宛先ＭＡＣとして使用して、ＭＰＲＥ１７１２のＬＩＦ  Ｂ１７２２にパケットを送信する。パケットは、ＩＰアドレス１０．１．１．１を宛先とし、ＩＰアドレス１０．１．１．１は、ＶＭ１７３２（ＩＰアドレス１０．１．２．１）とは異なるネットワークセグメント内であり、したがって、Ｌ３層ルーティングを必要とする。データパケットは、ＬＩＦ  Ｂ１７２２をインバウンドＬＩＦとして使用して、ＭＰＲＥ１７１２に入る。動作「２」の間、ＭＰＲＥ１７１２は、解決テーブル１７５２内のエントリを使用することによって、ＩＰアドレス１０．１．１．１をＬ２アドレス「ＭＡＣ１」に解決する。ＭＰＲＥ１７１１は、また、ＬＩＦ  Ａ１７２６をアウトバウンドＬＩＦとして識別しており、（セグメントＡのＶＮＩをタグ付けされた）物理ネットワークを介してホスト１７０１にパケットを送信するために、ＬＩＦ  Ａを使用する。いくつかの実施形態では、ＭＰＲＥ１７１１は、また、送信元ＭＡＣアドレスとして、一般的な「ＶＭＡＣ」をそれ自体のユニークなＬ２アドレス「ＰＭＡＣ２」に置き換える。動作「３」の間、ルーティングされたパケットは、ＭＡＣアドレスが「ＭＡＣ１」の宛先ＶＭ１７３１に到着する。
【０１２８】
動作「４」〜「６」は、セグメントＢのＶＭ１７３２からセグメントＣのＶＭ１７３５へのデータパケットのルーティングを示す。動作「４」の間、ＶＭ１７３２は、一般的なＶＭＡＣをパケットの宛先ＭＡＣアドレスとして使用して、ＭＰＲＥ１７１２のＬＩＦ  Ｂ１７２２にパケットを送信する。パケットは、ＩＰアドレス１０．１．３．１を宛先とし、ＩＰアドレス１０．１．３．１は、ＶＭ１７３２（ＩＰアドレス１０．１．２．１）とは異なるネットワークセグメント内であり、したがって、Ｌ３ルーティングを必要とする。動作「５」の間、ＭＰＲＥ１７１２は、解決テーブル１７５２内のエントリを使用することによって、ＩＰアドレス１０．１．３．１をＬ２アドレス「ＭＡＣ３」に解決する。宛先Ｌ２アドレス「ＭＡＣ３」は、ＭＰＲＥ１７１２と同じホストマシン（ホスト１７０２）で動作する仮想マシンを示すため、いくつかの実施形態では、ＭＰＲＥは、物理ネットワークにデータパケットを送信しないことになる。ＭＰＲＥ１７１２は、また、このパケットは、物理ネットワークのためのホスト１７０２を決して離れないため、送信元Ｌ２ＭＡＣアドレスとしてＶＭＡＣを使用する。ＭＰＲＥ１７１２は、また、ＬＩＦ  Ｃ１７２３をアウトバウンドＬＩＦとして識別しており、ローカルセグメントＣのＶＭ１７３５にパケットを送信するためにこのＬＩＦを使用する。動作「６」の間、パケットは、ＭＡＣアドレスが「ＭＡＣ３」の宛先ＶＭ１７３５に到着する。
【０１２９】
いくつかの実施形態に関して、図２２は、入力データパケットのためのアドレス解決を処理するための、いくつかの実施形態のＭＰＲＥインスタンシエイションによって実行されるプロセス２２００を概念的に示す。プロセス２２００は、（２２１０で）データパケットを（例えば、ＭＰＳＥから）受信すると開始する。このデータパケットは、転送若しくはルーティングする必要がある通常のデータパケットであってよく、又は、応答を必要とするＡＲＰクエリであってよい。次に、プロセスは、（２２２０で）受信したパケットがＡＲＰクエリであるかどうかを判定する。データパケットがＡＲＰクエリである場合、プロセスは２２２５に進む。そうでない場合、プロセスは２２３５に進む。
【０１３０】
２２２５では、プロセスは、ＡＲＰクエリのための宛先アドレスを解決することができるかどうかを判定する。いくつかの実施形態では、プロセスは、パケットのネットワーク層ＩＰアドレスを解決するための対応するエントリが存在するかどうかを判定するために、それ自体のＡＲＰ解決テーブルを調べる。プロセスがアドレスを解決することができる場合、２２６０に進む。プロセスがアドレスを解決することができない場合、２２３０に進む。
【０１３１】
２２３０では、プロセスは、ＡＲＰクエリを転送する。ＡＲＰ要求が、物理ネットワークから来る場合、プロセスは、ＡＲＰクエリを、ローカルホストマシン内のＶＭに転送する。ＡＲＰ要求が、ローカルホストマシン内のＶＭから来る場合、プロセスは、要求を、ローカルホストマシン内の他のＶＭに転送すると共に、他のホストマシン内のＭＰＲＥによって処理するために、物理ネットワークに転送する。プロセスは、次に、待機し、（２２５０で）ＡＲＰ応答を受信し、応答メッセージに基づいて、そのＡＲＰ解決テーブルを更新する。プロセス２２００は、次に、（２２６０で）ＡＲＰクエリメッセージに応答し、終了する。
【０１３２】
２２３５では、プロセスは、入力データパケットのための宛先アドレスを解決することができるかどうかを判定する。プロセスが、（例えば、一致するＡＲＰ解決テーブルエントリを有する）宛先アドレスを解決することができる場合、プロセスは２２４５に進む。そうでない場合、プロセスは２２４０に進む。
【０１３３】
２２４０では、プロセスは、ＡＲＰクエリを生成し、リモートホストマシン並びにローカル仮想マシンに、それ自体のアウトバウンドＬＩＦを介してブロードキャストする。プロセスは、次に、（２２４２で）そのＡＲＰクエリのための応答を受信し、そのＡＲＰテーブルを更新する。プロセス２２００は、次に、（２２４５で）解決したＭＡＣアドレスにしたがってデータパケットを転送し、終了する。
【０１３４】
Ｃ．非ＶＤＲホストマシンのためのルーティングエージェントとしてのＶＤＲ
【０１３５】
いくつかの実施形態では、基礎的な物理ネットワーク上のネットワークトラフィックを生成し、受け入れるホストマシンのすべてが、仮想化ソフトウェアを実行し、ＶＤＲを動作させるというわけではない。いくつかの実施形態では、これらのホストのうちの少なくともいくつかは、仮想化ソフトウェアをまったく実行せず、どのような仮想マシンもホストしない物理ホストマシンである。これらの非ＶＤＲ物理ホストマシンのいくつかは、基礎的な物理ネットワークに組み込まれた（ファイラ又は別の非ハイパーバイザ／非ＶＭネットワークスタックのような）レガシネットワーク要素であり、Ｌ３層ルーティングのための独立型のルータに依存するように使用される。これらの非ＶＤＲ物理ホストマシンのためのＬ３層ルーティングを実行するために、いくつかの実施形態は、これらの非ＶＤＲホストマシンのための専用ルーティングエージェント（指定されたインスタンス又は指定されたＭＰＲＥ）として機能するためにホストマシン上で動作するローカルＬＲＥインスタンシエイション（すなわち、ＭＰＲＥ）を指定する。いくつかの実施形態では、このような非ＶＤＲ物理ホストとの間のＬ２トラフィックは、指定されたＭＰＲＥを経由する必要なく、ホストマシン内のＭＰＳＥ（例えば、３２０）のローカルインスタンスによって処理される。
【０１３６】
図２３は、物理ホストとの間のパケットのＬ３ルーティングを処理するためのＭＰＲＥを指定する論理ネットワーク２３００の実装を示す。図示のように、ネットワーク２３００は、ホストマシン２３０１〜２３０９を含む。ホストマシン２３０１及び２３０２は、それぞれ、ＭＰＲＥ２３１１及び２３１２を動作させる仮想化ソフトウェアを実行している（ＭＰＲＥ２３１３〜２３１８を実行する他のホストマシン２３０３〜２３０８は、図示されない）。両方のホストマシン２３０１及び２３０２は、いくつかの仮想マシンをホストしており、各ホストマシンは、ＭＰＲＥを動作させている。これらのＭＰＲＥの各々は、論理ネットワーク２３００のセグメントＡ、Ｂ、及びＣのための論理インタフェース（ＬＩＦ  Ａ、ＬＩＦ  Ｂ、及びＬＩＦ  Ｃ）を有する。すべてのＭＰＲＥは、それ自体のホスト内の仮想マシンによってアドレスされる場合、一般的な「ＶＭＡＣ」を共有する。両方のＭＰＲＥ２３１１及び２３１２は、それら自体のユニークなＰＭＡＣ（「ＰＭＡＣ１」及び「ＰＭＡＣ２」）も有する。
【０１３７】
ホストマシン２３０９は、仮想化ソフトウェアを実行せず、Ｌ３層ルーティングのためのそれ自体のＭＰＲＥを持たない物理ホストである。物理ホスト２３０９は、ＩＰアドレス１０．１．２．７と関連付けられ、ＭＡＣアドレス「ＭＡＣ７」を有する（すなわち、物理ホスト２３０９は、ネットワークセグメントＢ内にある）。物理ホスト２３０９からのデータを、別のネットワークセグメント上の仮想マシンに送信するために、物理ホストは、データを（物理ネットワーク及びＬ２スイッチを介して）、物理ホスト２３０９のための指定されたＭＰＲＥであるＭＰＲＥ２３１２に送信しなければならない。
【０１３８】
図２４は、論理ネットワーク２３００内の非ＶＤＲ物理ホスト２３０９によって開始されるＡＲＰ動作を示す。図示のように、論理ネットワーク２３００内のホストマシン２３０１〜２３０４の各々は、ＭＰＲＥ（それぞれ、２３１１〜２３１４）を有し、各ＭＰＲＥは、ユニークなＰＭＡＣアドレス（ＭＰＲＥ２３１３のための「ＰＭＡＣ３」、ＭＰＲＥ２３１４のための「ＰＭＡＣ４」）を有する。各ＭＰＲＥは、ＩＰアドレス１０．１．２．２５３を有するセグメントＢのための論理インタフェース（ＬＩＦ  Ｂ）を有する。しかしながら、ホストマシン２３０２内のＭＰＲＥ２３１２のみが、「指定されたインスタンス」であり、それのみが、物理ホスト２３０９からのＡＲＰクエリブロードキャストメッセージに応答することになる。
【０１３９】
ＡＲＰ動作は、動作「１」、「２」、「３」、及び「４」で示される。動作「１」の間、物理ホスト２３０９は、そのデフォルトゲートウェイ「１０．１．２．２５３」のためのＡＲＰクエリメッセージを物理ネットワーク上にブロードキャストする。上述したように、ＩＰアドレス「１０．１．２．２５３」は、ＭＰＲＥ２３１１〜２３１４のすべてに存在するＬＩＦ  Ｂに関連付けられている。しかしながら、ホスト２３０２のＭＰＲＥ２３１２のみが、物理ホスト２３０９のための指定されたインスタンスであり、ＭＰＲＥ２３１２のみが、ＡＲＰクエリに応答することになる。いくつかの実施形態では、セクションＩＩＩで後述するように、コントローラ（又は、コントローラのクラスタ）が、特定のセグメントのための指定されたインスタンスとして、ＭＰＲＥの１つを指定する。
【０１４０】
動作「２」の間、ＭＰＲＥ２３１２は、物理ホスト２３０９からＡＲＰクエリメッセージを受信し、将来のルーティングのために物理ホストのＭＡＣアドレスを解決テーブル２３４２に記録する。物理ホスト２３０９のための指定されたインスタンスではないすべての他のＭＰＲＥ（２３０１、２３０２、及び２３０３）は、ＡＲＰを無視する。いくつかの実施形態では、これらの他のＭＰＲＥは、それにもかかわらず、物理ホストのＭＡＣアドレスをそれら自体の解決テーブルに記録することになる。
【０１４１】
動作「３」の間、ＭＰＲＥ２３１２は、ＡＲＰ応答メッセージを物理ホスト２３０９に送信する。非ＶＤＲ物理ホストへのこの応答では、送信元ＭＡＣアドレスは、一般的なＶＭＡＣではなく、ＭＰＲＥ２３１２自体のユニークな物理ＭＡＣアドレス（「ＰＭＡＣ２」）である。これは、物理ホスト２３０９が、他のＭＰＲＥインスタンシエイションのいずれかではなく、Ｌ３ルーティングのためのＭＰＲＥ２３１２のみと通信することを知るようにするためである。最終的に、動作「４」では、物理ホスト２３０９は、そのデフォルトゲートウェイのユニークな物理ＭＡＣアドレス（「ＰＭＡＣ２」）を、それ自体の解決テーブル２３４９に記録する。一旦、指定されたインスタンス及び物理ホスト２３０９が互いのＭＡＣアドレスを有すると、物理ホストと、論理ネットワーク２３００の残りの部分との間で、メッセージ交換を開始することができる。
【０１４２】
図２５は、仮想マシン２３２１及び２３２２から物理ホスト２３０９へのパケットのルーティングのための指定されたＭＰＲＥ２３１２の使用を示す。図示のように、ＩＰアドレス１０．１．１．１（セグメントＡ）及びＭＡＣアドレス「ＭＡＣ１」を有するＶＭ２３２１は、ホスト２３０１上で動作しており、ＩＰアドレス１０．１．３．２（セグメントＣ）及びＭＡＣアドレス「ＭＡＣ４」を有するＶＭ２３２２は、ホスト２３０２上で動作している。物理ホスト２３０９は、ＩＰアドレス１０．１．２．７（セグメントＢ）及びＭＡＣアドレス「ＭＡＣ７」を有する。物理ホスト２３０９、ＶＭ２３２１、及びＶＭ２３２２は、すべてネットワークの異なるセグメント内にあるため、ＶＭ２３２１及び２３２２から物理ホスト２３０９に横断するデータパケットは、ＭＰＲＥによるＬ３ルーティングを受けなければならない。ＶＭ２３２２のためのＭＰＲＥは、物理ホスト２３０９のための指定されたＭＰＲＥ（ＭＰＲＥ２３１２）であり、ＶＭ２３２１のためのＭＰＲＥ（ＭＰＲＥ２３１１）ではないことに注意することが重要である。
【０１４３】
図２５は、「１」、「２」、及び「３」とラベル付けされた３つの動作での、ＶＭ２３２２から物理ホスト２３０９へのパケットのルーティングを示す。動作「１」の間、セグメントＣのＶＭ２３２２は、そのＬＩＦ  Ｃ２３３４を介してＭＰＲＥ２３１２にパケットを送信する。データパケットは、パケットをＭＰＲＥ２３１２に転送するために、ホスト２３０２上のＭＰＳＥのための宛先ＭＡＣアドレスとして、一般的な「ＶＭＡＣ」を使用する。宛先ＩＰアドレスは、物理ホスト２３０９のＩＰアドレスである１０．１．２．７である。
【０１４４】
動作「２」の間、ＭＰＲＥ２３１２は、宛先ＩＰアドレス１０．１．２．７を、物理ホスト２３０９のＭＡＣアドレス「ＭＡＣ７」に解決するために、そのアドレス解決テーブル２３４２のエントリを使用する。データパケットが、ホストマシンから物理ネットワーク上に送信される時、ＭＰＲＥ２３１２は、また、送信元ＭＡＣアドレスとして、一般的な「ＶＭＡＣ」とは対照的に、それ自体のユニークな物理ＭＡＣアドレス「ＰＭＡＣ２」を使用する。動作「３」では、ＭＰＲＥ２３１２は、セグメントＢのためのその論理インタフェース（ＬＩＦ  Ｂ２３３２）を使用してデータパケットを送信する。ルーティングされたデータパケットは、その解決されたＬ２ＭＡＣアドレス（すなわち、「ＭＡＣ７」）を使用して、（物理ネットワーク及びＬ２スイッチを介して）物理ホスト２３０９に転送される。パケットが物理ホスト２３０９に到着すると、送信元ＭＡＣアドレスは、「ＰＭＡＣ２」、すなわち、指定されたインスタンスのユニークな物理ＭＡＣのままであることは、注目に値する。いくつかの実施形態では、物理ホストは、一般的な「ＶＭＡＣ」を知らないことになり、代わりに、指定されたＭＰＲＥの「ＰＭＡＣ２」のみと通信する。
【０１４５】
図２５は、また、「４」、「５」、及び「６」とラベル付けされた動作での、ＶＭ２３２１から物理ホスト２３０９へのパケットのルーティングを示す。ＶＭ２３２２とは異なり、ＶＭ２３２１のＭＰＲＥ（２３１１）は、指定されたインスタンスではない。それにもかかわらず、いくつかの実施形態では、そのＭＰＲＥが物理ホストの指定されたインスタンスではない仮想マシンは、ルーティングされたパケットを物理ホストに送信するためのそれ自体のＭＰＲＥを依然として使用する。
【０１４６】
動作「４」の間、セグメントＡのＶＭ２３２１は、そのＬＩＦ  Ａ２３３３を介して、ＭＰＲＥ２３１１にパケットを送信する。データパケットは、パケットをＭＰＲＥ２３１１にルーティングするために、仮想ルータのためのＭＡＣアドレスとして、一般的な「ＶＭＡＣ」を使用する。宛先ＩＰアドレスは、物理ホスト２３０９のＩＰアドレスである１０．１．２．７である。
【０１４７】
動作「５」の間、ＭＰＲＥ２３１１は、宛先ＩＰアドレス１０．１．２．７が物理ホストのためのものであること、及び、それが物理ホスト２３０９のための指定されたＭＰＲＥではないことを判定する。いくつかの実施形態では、各ＭＰＲＥインスタンシエイションは、その論理インタフェースの構成の一部として、各々の特定のＬＩＦのための指定されたインスタンスであるかどうかを認識している。いくつかの実施形態では、構成は、また、どのＭＰＲＥインスタンシエイションが、指定されたインスタンスであるのかを識別する。結果として、ＭＰＲＥ２３１１は、指定されたＭＰＲＥ２３１２から解決情報を取得しようとすることになる。いくつかの実施形態では、所与の物理ホストのための指定されたインスタンスではないＭＰＲＥは、指定されたＭＰＲＥを有するホストにクエリを（例えば、ＵＤＰチャネルを介して）送信し、ＩＰアドレスの解決を要求することになる。指定されたインスタンスが解決情報を有する場合、解決情報を問い合わせ元のＭＰＲＥに（例えば、同じＵＤＰチャネルを介して）送り返すことになる。指定されたＭＰＲＥが、それ自体の物理ホストのＩＰアドレスを解決することができない場合、物理ホストのＩＰのためのＡＲＰ要求を開始し、解決を問い合わせ元のＭＰＲＥに送り返すことになる。この例では、ＭＰＲＥ２３１１は、問い合わせメッセージをホスト２３０２に（すなわち、ＭＰＲＥ２３１２に）送信することになり、ホスト２３０２は、（その解決テーブル２３４２からの）物理ホスト２３０９のための解決されたＭＡＣアドレスをＭＰＲＥ２３１１に送り返すことになる。
【０１４８】
動作「６」の間、ＭＰＲＥ２３１１は、そのＬＩＦ  Ｂ２３３１を介して物理ホスト２３０９にデータパケットを送信するために、解決された宛先ＭＡＣアドレスを使用する。いくつかの実施形態では、ＭＰＲＥ２３１１は、また、物理ホストのための解決されたアドレスＩＰ１０．１．２．７を、そのアドレス解決テーブルに格納する。データパケットのための送信元ＭＡＣアドレスは、ＭＰＲＥ２３１１のユニークなＰＭＡＣ（「ＰＭＡＣ１」）であり、一般的なＭＡＣでも、指定されたインスタンスのＰＭＡＣでもない。これは、ＡＲＰパケットではなく、データトラフィックパケットであるため、物理ホストは、セグメントＢのＶＭのためのパケットを送信する先のＭＡＣアドレスとして、ＰＭＡＣ１を格納しないことになる。ルーティングされたデータパケットは、その解決されたＬ２ＭＡＣアドレス（「ＭＡＣ７」）を使用して（物理ネットワーク及びＬ２スイッチを介して）物理ホスト２３０９に転送される。
【０１４９】
図２６ａ〜ｂは、物理ホスト２３０９から仮想マシン２３２１及び２３２２へのパケットのルーティングのための指定されたＭＰＲＥ２３１２の使用を示す。上述したように、（セグメントＢのＩＰアドレス１０．１．２．７を有する）物理ホスト２３０９は、仮想マシン２３２１及び２３２２とは異なるセグメント上にあり、そのため、物理ホストからこれらの仮想マシンへのデータパケットは、ネットワーク層でルーティングされなければならない。いくつかの実施形態では、特定の物理ホストのための指定されたＭＰＲＥは、その特定の物理ホストからのパケットへの、又は、特定のセグメント上のすべてのホストのためのＬ３ルーティングを実行するために、常に使用される。この例では、ＭＰＲＥ２３１２は、ＶＭ２３２２のみが、指定されたＭＰＲＥ２３１２と同じホストマシン２３０２内で動作しているにもかかわらず、物理ホスト２３０９を含むセグメントＢ上の任意の物理ホストからＶＭ２３２１及び２３２２の両方へのデータパケットをルーティングするための指定されたＭＰＲＥである。
【０１５０】
図２６ａは、「１」、「２」、及び「３」とラベル付けされた３つの動作での、物理ホスト２３０９からＶＭ２３２２へのデータパケットのルーティングを示す。動作「１」では、物理ホスト２３０９は、パケットをホスト２３０２に送信する。このパケットは、セグメントＣ内にあるＩＰアドレス１０．１．３．２を有するＶＭ２３２２を宛先とする。（図２４のＡＲＰ動作によって作成された）その解決テーブル２３４９内のエントリに基づいて、ＭＰＲＥは、デフォルトゲートウェイのＩＰアドレス１０．１．２．２５３を、ＭＰＲＥ２３１２のユニークな物理ＭＡＣアドレスである「ＰＭＡＣ２」として解決する。パケットは、物理ネットワークを介して、ホスト２３０２のアップリンクモジュール２３５２に到着する。
【０１５１】
動作「２」では、アップリンクモジュール２３５２は、ユニークな「ＰＭＡＣ２」を一般的なＶＭＡＣに変更し、そのため、パケットは、ホスト２３０２内で一度適切に転送されることが可能である。パケットは、次に、ＭＰＲＥ２３１２に到着し、ＭＰＲＥ２３１２のＬＩＦ  Ｂ２３３２によって処理される。
【０１５２】
動作「３」では、ＭＰＲＥ２３１２は、そのアドレス解決テーブル内の情報を使用して、ＩＰアドレス１０．１．３．２をＶＭ２３２２のための「ＭＡＣ４」として解決し、データパケットをＶＭ２３２２に送信する。ＭＰＲＥ２３１２は、また、物理ホスト２３０９の送信元ＭＡＣアドレス「ＭＡＣ７」を一般的なＶＭＡＣに置き換える。
【０１５３】
図２６ｂは、「４」、「５」、及び「６」とラベル付けされた３つの動作での、物理ホスト２３０９からＶＭ２３２１へのデータパケットのルーティングを示す。動作「４」では、物理ホスト２３０９は、物理ネットワークを介して、パケットを、指定されたＭＰＲＥ２３１２を動作させるホスト２３０２に送信する。このパケットは、セグメントＡ内にあるＩＰアドレス１０．１．１．１を有するＶＭ２３２１を宛先とする。パケットは、解決テーブル２３４９内のエントリに基づいて、指定されたＭＰＲＥ２３１２のユニークな物理ＭＡＣアドレスであるＬ２ＭＡＣアドレス「ＰＭＡＣ２」にアドレスされる。宛先ＶＭ２３２１が、それ自体のＭＰＲＥ２３１１を有するホストマシン２３０１上にあることは、注目に値する。しかしながら、ＭＰＲＥ２３１１ではなくＭＰＲＥ２３１２が、物理ホストのための指定されたインスタンスであるため、物理ホスト２３０９は、依然として最初にＭＰＲＥ２３１２にパケットを送信する。パケットは、物理ネットワークを介して、ホスト２３０２のアップリンクモジュール２３５２に到着する。
【０１５４】
動作「５」では、アップリンクモジュール２３５２は、ユニークな「ＰＭＡＣ２」を一般的なＶＭＡＣに変更し、そのため、パケットは、ホスト２３０２内で一度適切に転送されることが可能である。パケットは、次に、ＭＰＲＥ２３１２に到着し、ＭＰＲＥ２３１２のＬＩＦ  Ｂ２３３２によって処理される。
【０１５５】
動作「６」では、ＭＰＲＥ２３１２は、ＩＰアドレス１０．１．１．１を、ＶＭ２３２１のための「ＭＡＣ１」として解決し、そのＬＩＦ  Ａ２３３５を使用して、データパケットをＶＭ２３２１に送信する。ルーティングされたパケットは、送信元ＭＡＣアドレスが、指定されたＭＰＲＥ２３１２の「ＰＭＡＣ２」であることを示す。ＭＰＲＥ２３１２及び宛先ＶＭ２３２１は、異なるホストマシン上にあるため、パケットは、実際には、ＶＭ２３２１に到着する前に、ホスト２３０２上のＭＰＳＥを、次に、物理ネットワークを、次に、ホスト２３０１上のＭＰＳＥを介して送信される。
【０１５６】
図２５及び２６を参照して上述したように、仮想マシンから物理ホストへのデータトラフィックのためのルーティングは、個々のＭＰＲＥによって実行され、物理ホストから仮想マシンへのデータトラフィックは、指定されたＭＰＲＥを通過しなければならない。すなわち、物理ホストへのネットワークトラフィックは、ポイントツーポイントであり、物理ホストからのネットワークトラフィックは、分散される。図２３〜３０の論理ネットワーク２３００には示されていないが、いくつかの実施形態での論理ネットワークの実装は、複数の非ＶＤＲ物理ホストを有することができる。いくつかの実施形態では、これらの非ＶＤＲ物理ホストの各々は、ホストマシンのうちの１つの中の対応する指定されたＭＰＲＥを有する。いくつかの実施形態では、特定のＭＰＲＥが、非ＶＤＲ物理ホストの一部又はすべてのための指定されたインスタンスとして機能することになる。例えば、いくつかの実施形態は、特定のセグメント上のすべての物理ホストのための特定のＭＰＲＥを指定した。
【０１５７】
いくつかの実施形態に関して、図２７は、非ＶＤＲ物理ホストからのＬ３層トラフィックを処理するためのプロセス２７００を概念的に示す。いくつかの実施形態では、プロセス２７００は、ホストマシン上で動作する仮想化ソフトウェア内のＭＰＲＥモジュールによって実行される。いくつかの実施形態では、このプロセスは、図２６ａ〜ｂに示す動作の間に、ＭＰＲＥ２３１１及び２３１２によって実行される。
【０１５８】
プロセス２７００は、ホストが、Ｌ３ルーティングを必要とするデータパケット（すなわち、ネットワークのあるセグメントから来るが、ネットワークの別のセグメントを宛先とするパケット）を受信すると開始する。プロセス２７００は、（２７１０で）パケットが、非ＭＰＲＥ物理ホストからのものであるかどうかを判定する。いくつかの実施形態では、ＭＰＲＥは、この判定を、物理ホスト及びそれらのＩＰアドレスのリストに対してデータパケット内のＩＰアドレスを調べることによって行う。いくつかの実施形態では、このようなリストは、ネットワークのコントローラからの構成データのセットの一部である。パケットが既知の物理ホストからのものではない場合、プロセスは２７４０に進む。
【０１５９】
２７２０では、プロセスは、ＭＰＲＥが、データパケットを送信する物理ホストのための指定されたインスタンスであるかどうかを判定する。いくつかの実施形態では、各ＭＰＲＥは、ネットワークコントローラによって構成され、ＭＰＲＥのいくつかは、物理ホストのための指定されたインスタンスとして構成される。これらの実施形態のいくつかでのＭＰＲＥは、データパケット内で示されるように、物理ホストのための指定されたインスタンスであるかどうかを確認するために、それ自体の構成データを調べることになる。いくつかの他の実施形態では、各ＭＰＲＥは、物理ホストの又はそれ自体のユニークな識別子（例えば、ＩＰアドレス）をハッシュすることによって、示された物理ホストのための指定されたインスタンスであるかどうかを、ローカルに判定する。ＭＰＲＥが、特定の物理ホストのための指定されたインスタンスではない場合、プロセスは、（２７２５で）物理ホストからのデータパケットを無視し、終了する。そうでない場合、プロセスは２７３０に進む。
【０１６０】
２７３０では、プロセスは、入力データパケットがＡＲＰクエリであるかどうかを判定する。そうである場合、プロセスは、（例えば、図２４内のＭＰＲＥ２３１２によって実行されるように）（２７３５で）ＭＰＲＥのユニークな物理ＭＡＣを有するＡＲＰクエリに応答し、終了する。そうでない場合、プロセスは２７４０に進む。
【０１６１】
２７４０では、プロセスは、例えば、（ＡＲＰクエリを発行することによって、又は、その解決テーブルからの格納されたＡＲＰ結果を使用することによって）宛先のＬ３ＩＰアドレスをそのＬ２ＭＡＣアドレスに解決することによって、データパケットにＬ３ルーティングを実行する。プロセスは、次に、（２７５０で）解決された宛先ＭＡＣアドレスに基づいて、ルーティングされたデータパケットを宛先仮想マシンに転送する。宛先ＶＭが、ＭＰＲＥと同じホストマシン上にある場合、データパケットは、ホスト上のＭＰＳＥを介してＶＭに転送されることになる。宛先ＶＭが、異なるホスト上にある場合、データパケットは、物理ネットワークを介して他のホストに転送されることになる。パケットを転送した後、プロセス２７００は終了する。
【０１６２】
いくつかの実施形態に関して、図２８は、非ＶＤＲ物理ホストへの（例えば、プロセスを実行するＭＰＲＥと同じホスト上のＶＭから受信した）Ｌ３トラフィックを処理するためのプロセス２８００を概念的に示す。いくつかの実施形態では、このプロセスは、図２５に示す動作の間にＭＰＲＥ２３１１及び２３１２によって実行される。
【０１６３】
プロセス２８００は、ホストが、Ｌ３ルーティングを必要とするデータパケットを受信すると開始する。プロセス２８００は、（２８１０で）パケットが、非ＶＤＲ物理ホストを宛先とするかどうかを判定する。パケットが、このような物理ホストを宛先としない場合、プロセスは２８４０に進む。パケットが、このような物理ホストを宛先とする場合、プロセスは２８２０に進む。
【０１６４】
２８２０では、プロセスは、ＭＰＲＥが、（例えば、物理ホストが属するセグメントに基づいて）データパケットが送信される先の物理ホストのための指定されたインスタンスであるかどうかを判定する。そうである場合、プロセスは２８２５に進む。ＭＰＲＥが指定されたインスタンスではない場合、プロセスは２８３０に進む。
【０１６５】
２８３０では、プロセスは、指定されたインスタンスからのアドレス解決情報を要求し、取得する。いくつかの実施形態では、これは、ＵＤＰチャネルを介して、指定されたインスタンスに要求メッセージを送信し、応答メッセージ内のアドレス解決情報を受信することによって達成される。いくつかの実施形態では、指定されたインスタンスではないＭＰＲＥは、物理ホストのためのアドレス解決情報を格納せず、物理ホストに送信される各パケットのために、ＵＤＰチャネルを介して要求を送信する。他の実施形態では、アドレス解決情報を受信した後、ＭＰＲＥは、将来のパケットをルーティングする際に使用するためにこの情報を格納する。
【０１６６】
２８２５では、プロセスは、指定されたインスタンスとして、物理ホストのためのアドレスを解決することができるかどうかを判定する。いくつかの実施形態では、プロセスは、物理ホストのための一致するエントリが存在するかどうかを確認するために、それ自体のＡＲＰテーブルを調べる。プロセスがアドレスを解決することができる場合、プロセスは２８４０に進む。そうでない場合、プロセスは、（２７３５で）物理ホストのアドレスのためのＡＲＰ要求を実行し、ＡＲＰ応答に応じてそのＡＲＰテーブルを更新する。いくつかの実施形態では、指定されたインスタンスのみが、物理ホストのためのルーティング情報を保持する。プロセスは、次に２８４０に進む。
【０１６７】
２８４０では、プロセスは、例えば、物理ホストのＩＰアドレスをそのＭＡＣアドレスに解決することによって、データパケットにＬ３ルーティングを実行する。プロセスは、また、ＭＰＲＥが、データパケット内で示される物理ホストのための指定されたインスタンスであろうとなかろうと、送信元ＭＡＣアドレスを、ＭＰＲＥのユニークなＰＭＡＣに設定する。プロセスは、次に、（２８５０で）解決された宛先ＭＡＣアドレスに基づいて、ルーティングされたデータパケットを物理ホストに転送する。パケットを転送した後、プロセス２８００は終了する。
【０１６８】
Ｄ．異なるオーバレイネットワーク間のブリッジとしてＶＤＲを使用する
【０１６９】
いくつかの実施形態では、ホストマシンでのＬＲＥ動作は、（例えば、あるＩＰサブネットから別のＩＰサブネットへの）Ｌ３ルーティングだけでなく、同じサブネット内の（ＶＸＬＡＮネットワーク及びＶＬＡＮネットワーク間のような）異なるオーバレイネットワーク間のブリッジングも実行する。いくつかの実施形態では、２つの異なるオーバレイネットワークは、同じＩＰサブネット内にあるＶＭを有することが可能である。これらの状況では、あるオーバレイネットワークから別のオーバレイネットワークにデータパケットを送信するために、Ｌ３ルーティングは使用されない。代わりに、転送は、ブリッジングに依存し、ブリッジングは、ネットワークセグメント識別子（例えば、ＶＮＩ、又はその関連する論理インタフェース）、及び、リンク層アドレス（例えば、ＭＡＣアドレス）間の結びつけ又はペアリングに基づく。
【０１７０】
いくつかの実施形態では、ホストマシン内の少なくとも１つのローカルＬＲＥインスタンシエイションは、ルーティングＭＰＲＥではなく、ブリッジングＭＰＲＥとして構成される。ブリッジングＭＰＲＥは、ルーティング用ではなくブリッジング用に構成された論理インタフェースを含むＭＰＲＥである。ルーティング用に構成された論理インタフェース（ルーティングＬＩＦ）は、ＩＰをＭＡＣアドレスに解決することによって、論理ネットワークの異なるセグメント間のＬ３ルーティングを実行する。ブリッジング用に構成された論理インタフェース（ブリッジングＬＩＦ）は、ＭＡＣアドレスをネットワークセグメント識別子（例えば、ＶＮＩ）又は論理インタフェースと結びつけ、あるネットワークセグメントから別のネットワークセグメントにパケットを送信する際、パケットのネットワークセグメント識別子を変更することによって、ブリッジングを実行する。
【０１７１】
図２９は、異なるオーバレイネットワーク間のブリッジとして機能するためのブリッジＬＩＦを含むＬＲＥ２９００を示す。ＬＲＥ２９００の論理インタフェース２９０１〜２９０４は、ブリッジＬＩＦとして構成される。具体的には、ブリッジＬＩＦ２９０１は、オーバレイネットワーク「ＶＬＡＮ１０」内のＭＡＣアドレスを学習し、ブリッジングするためのものであり、ブリッジＬＩＦ２９０２は、オーバレイネットワーク「ＶＬＡＮ２０」内のＭＡＣアドレスを学習し、ブリッジングするためのものであり、ブリッジＬＩＦ２９０１は、オーバレイネットワーク「ＶＸＬＡＮ１００」内のＭＡＣアドレスを学習し、ブリッジングするためのものであり、ブリッジＬＩＦ２９０１は、オーバレイネットワーク「ＶＸＬＡＮ２００」内のＭＡＣアドレスを学習し、ブリッジングするためのものである。図示のように、異なるオーバレイネットワーク内のＶＭのうちの少なくともいくつかは、同じＩＰサブネット「１９２．１６８．１．ｘ」内にある。
【０１７２】
図３０は、ブリッジＬＩＦ及びルーティングＬＩＦの両方を含む論理ネットワーク３０００の実装を示す。図示のように、論理ネットワーク３０００は、複数のホストマシン３００１〜３００９を含み、各ホストマシンは、ＬＲＥの分散されたインスタンスを動作させる。ＬＲＥは、ＶＬＡＮ１０、ＶＬＡＮ２０、ＶＸＬＡＮ１００、ＶＸＬＡＮ２００とインタフェースするための論理インタフェースを有する。これらのホストマシン内のローカルＬＲＥインスタンスは、ルーティングＬＩＦのみを有するため、ＬＲＥは、ホスト３００１及び３００３内で、ルーティングＭＰＲＥ３０１１及び３０１３として動作している。対照的に、その論理インタフェースのすべてが、ブリッジＬＩＦとして構成されるため、ＬＲＥは、ホスト３００２内で、ブリッジングＭＰＲＥ３０１２として動作している。図示しないが、いくつかの実施形態では、ホストマシン内で動作するローカルＬＲＥインスタンス（すなわち、ＭＰＲＥ）は、Ｂ−ＬＩＦ及びＲ−ＬＩＦの両方を有することができ、したがって、ブリッジングＭＰＲＥ及びルーティングＭＰＲＥの両方として機能することができる。したがって、このようなホストマシン上のＶＭは、依然として、そのローカルＭＰＲＥを介して他のＩＰサブネット内の宛先にパケットを送信することができる。
【０１７３】
いくつかの実施形態では、ローカルＬＲＥインスタンスは、１つのホストマシンのみでブリッジングＭＰＲＥとして機能する（すなわち、ブリッジングＬＩＦのみを有する）ように構成される。いくつかの実施形態では、複数のホストマシンが、ブリッジングＭＰＲＥとして構成されたそれらのローカルＬＲＥインスタンスを有する。いくつかの実施形態では、ブリッジングＬＩＦのセットを有するブリッジングＭＰＲＥは、また、ブリッジＬＩＦとの間でデータパケットをルーティングするための少なくとも１つのルーティングＬＩＦを有する。いくつかの実施形態では、ブリッジＬＩＦを有するＬＲＥインスタンスは、また、ルーティング用の沈降（ｓｅｄｉｍｅｎｔｅｄ）ＬＩＦ（Ｓ−ＬＩＦ）を有し、Ｓ−ＬＩＦは、他のＬＩＦとは異なり、分散されず、論理ネットワーク内の１つのホスト内のみでアクティブである。Ｓ−ＬＩＦによってルーティングされるべきすべてのパケットは、アクティブなＳ−ＬＩＦを有するホストマシンに送信されることになる。
【０１７４】
いくつかの実施形態では、ブリッジングＭＰＲＥは、それらが特定のＭＡＣアドレスを最初に知る論理インタフェース（又は、関連するネットワークセグメント識別子）を学習し、ブリッジングテーブル（又は、学習テーブル）内でその論理インタフェースをそのＭＡＣアドレスと関連付ける。ブリッジが、その後、そのブリッジングテーブル内のエントリと一致する宛先ＭＡＣアドレスを有するデータフレーム又はパケットを受信すると、ブリッジは、ブリッジングテーブル内の一致するエントリによって示される論理インタフェースにフレームを送出する。いくつかの実施形態では、ブリッジが、パケットの宛先ＭＡＣアドレスをまだ知らない場合、ブリッジは、データパケットを受信した論理インタフェース以外のすべてのアクティブな論理インタフェースにパケットをフラッドする。パケットを特定のブリッジングインタフェース上に送出する場合、いくつかの実施形態のブリッジングＭＰＲＥは、関連するネットワークセグメントに関する適切なネットワークセグメント識別子（例えば、８ビットＶＬＡＮタグ、２４ビットＶＸＬＡＮ  ＩＤ、ＭＰＬＳラベル、など）を有するようにパケットを修正する。いくつかの実施形態では、ブリッジングＭＰＲＥを有するホストに障害が発生した場合、ネットワークのコントローラが、ブリッジングＭＰＲＥとして機能するように別のホストマシン内で動作するＭＰＲＥを迅速に選択することができるように、ブリッジングテーブルの内容は、あるホストから別のホストに転送されてよい。
【０１７５】
図３１は、ブリッジングＭＰＲＥによるＭＡＣアドレスの学習を示す。図示のように、ホスト３１００は、ＶＭ３１１１〜３１１４及びブリッジングＭＰＲＥ３１３０とインタフェースするポートを有するＭＰＳＥ３１２０を有する。ＭＰＳＥ３１２０は、物理ＮＩＣ３１９０及び物理ネットワークに接続されたアップリンク（図示せず）を有する。ブリッジングＭＰＲＥ３１３０は、それぞれ、オーバレイネットワーク「ＶＬＡＮ１０」、「ＶＬＡＮ２０」、「ＶＸＬＡＮ１００」、及び「ＶＸＬＡＮ２００」のためのブリッジＬＩＦ３１４１〜３１４４を有する。
【０１７６】
一般的なＶＭＡＣにアドレスされたパケットのみを受け入れるルーティングＬＩＦと異なり、ブリッジＬＩＦは、ＭＰＳＥとのポートを介して知るどのようなＭＡＣアドレスも学習することになる。いくつかの実施形態では、ＭＰＳＥは、送信元ＭＡＣアドレスのネットワークセグメント又はオーバレイネットワーク内で知ることができない宛先ＭＡＣアドレスを有するデータパケットのような、スイッチがどのように転送するのかを知らないどのようなデータパケットも、ソフトウェアブリッジに送信することになる。このようなデータパケットは、ブリッジングのためのブリッジングＭＰＲＥに送信され、ブリッジングＭＰＲＥは、送信元ＭＡＣアドレスに関連付けられたネットワークセグメント識別子又は論理インタフェースを学習することになる。
【０１７７】
図３１は、３つの動作「１」、「２」、及び「３」でのこの学習プロセスを示す。動作「１」の間、「ＶＸＬＡＮ２００」の送信元アドレス「ＭＡＣ２００」及び送信元ＶＮＩ（本明細書では、任意のネットワークセグメント識別子を表すために使用されるＶＮＩ）を有するパケット３１７０が、物理ＮＩＣ３１９０からＶＭ３１１２に送信されている。このパケットは、ＶＸＬＡＮ２００とは異なるネットワークセグメント上にある宛先アドレスも有し、したがって、スイッチ３１２０は、パケットを、ブリッジングのためのブリッジングＭＰＲＥ３１３０に転送する。
【０１７８】
動作「２」では、ブリッジングＭＰＲＥ３１３０は、パケットを知り、その送信元ＭＡＣアドレス（「ＭＡＣ２００」）及びそのネットワーク識別子（「ＶＸＬＡＮ２００」）を学習する。いくつかの実施形態では、ネットワーク「ＶＸＬＡＮ２００」をインタフェースするための論理インタフェース３１４４が、パケットのＭＡＣアドレス及びＶＮＩを学習するために使用される。動作「３」では、学習されたＭＡＣアドレス及びＶＮＩのペアリングが、ブリッジングテーブル３１５０のエントリ内に格納される。ブリッジングテーブル３１５０は、「ＭＡＣ２０」とＶＮＩ「ＶＬＡＮ２０」のペアリングをすでに学習している。図示していないが、ブリッジングＭＰＲＥ３１３０は、また、このパケットを、ＭＡＣアドレスのための適切なネットワークセグメント識別子を有する正しいブリッジＬＩＦに送出することになる。その後の３つの図で示すように、ブリッジングＭＰＲＥ３１３０のブリッジングテーブルが、この宛先ＭＡＣとブリッジＬＩＦのうちの１つとの間の結びつきを知っている場合、ブリッジＬＩＦは、正しいＶＮＩを含むようにパケットを修正し、次に、識別されたＬＩＦを介してパケットを送出することになる。そうでない場合、図３４を参照して以下に説明するように、ブリッジは、Ｌ２学習を実行するために、ＬＩＦをフラッドすることになる。
【０１７９】
図３２は、ホスト３１００及びブリッジングＭＰＲＥ３１２０による、以前に学習したＭＡＣ−ＶＮＩペアリングを使用する、２つの異なるオーバレイネットワーク上の２つのＶＭ間のブリッジングを示す。図は、３つの動作「１」、「２」、及び「３」でのこのブリッジングプロセスを示す。動作「１」の間、ＶＭ３１１３は、宛先アドレス「ＭＡＣ２０」を有するオーバレイネットワーク「ＶＬＡＮ１０」からパケットを送信するが、「ＭＡＣ２０」は、オーバレイネットワーク「ＶＬＡＮ１０」内で見つかるアドレスではなく、したがって、パケットは、ブリッジＢＤＲ３１３０に送信される。動作「２」の間、ＶＬＡＮ１０のためのブリッジＬＩＦ３１４１は、パケットを受信し、「ＭＡＣ２０」がＶＮＩ「ＶＬＡＮ２０」と関連付けられていることを以前に学習しているブリッジングテーブル３１５０内のＭＡＣアドレス「ＭＡＣ２０」のためのエントリをルックアップする。したがって、動作「３」の間、（ＶＮＩ「ＶＬＡＮ２０」と関連付けられた）ブリッジＬＩＦ３１４２は、データパケットを、ＶＬＡＮ２０内にあり、ＭＡＣアドレス「ＭＡＣ２０」を有するＶＭ３１１１に送出する。これらの２つのＬＩＦ間のブリッジングを実行するために、いくつかの実施形態のブリッジングＭＰＲＥ３１３０は、最初に、ＶＬＡＮ１０のためのＶＮＩ（すなわち、このＶＬＡＮのためのＶＬＡＮタグ）を取り除き、次に、ＶＬＡＮ２０のためのＶＮＩ（すなわち、このＶＬＡＮのためのＶＬＡＮタグ）を追加する。いくつかの実施形態では、ブリッジングＭＰＲＥ３１３０は、コントローラクラスタからの構成データの一部として、異なるオーバレイネットワークのためのＶＮＩをどのように除去し、追加するのかについての命令を受信する。
【０１８０】
図３３は、ブリッジングＭＰＲＥ３１３０を動作させているホスト３１００内で動作していない２つのＶＭ間のブリッジングを示す。上述したように、いくつかの実施形態では、必ずしもすべてのホストマシンが、ブリッジとして構成されたそのＬＩＦインスタンスを有しているわけではない。これらの実施形態のいくつかでは、ブリッジングＭＰＲＥは、他のホストマシン内の２つのリモートＶＭ間、又は、ローカルＶＭ（すなわち、ＶＭ３１１１〜３１１４のうちの１つ）及び別のホストマシン内のリモートＶＭ間のブリッジング機能を提供する。
【０１８１】
図は、３つの動作「１」、「２」、及び「３」でのこのブリッジングプロセスを示す。動作「１」の間、ホスト３１００は、物理ＮＩＣ３１９０を介してリモートＶＭからパケットを受信する。パケットは、宛先アドレス「ＭＡＣ２００」を有するオーバレイネットワーク「ＶＸＬＡＮ１００」からのものであるが、「ＭＡＣ２００」は、オーバレイネットワーク「ＶＸＬＡＮ１００」内で見つかるアドレスではない。動作「２」の間、ＶＸＬＡＮ１００のためのブリッジＬＩＦ３１４３は、パケットを受信し、「ＭＡＣ２００」がＶＮＩ「ＶＸＬＡＮ２００」と関連付けられていることを以前に学習しているブリッジングテーブル３１５０内のＭＡＣアドレス「ＭＡＣ２００」のためのエントリをルックアップする。動作「３」の間、（ＶＮＩ「ＶＸＬＡＮ２００」と関連付けられた）ブリッジＬＩＦ３１４４は、データパケットを、オーバレイネットワーク「ＶＸＬＡＮ２００」内のＭＡＣアドレス「ＭＡＣ２００」を有するリモートＶＭのための物理ネットワークに送出する。これらの２つのＬＩＦ間のブリッジングを実行するために、いくつかの実施形態のブリッジングＭＰＲＥ３１３０は、最初に、ＶＸＬＡＮ１００のためのＶＮＩ（すなわち、２４ビットＶＸＬＡＮ  ＩＤ）を取り除き、次に、ＶＸＬＡＮ２００のためのＶＮＩ（すなわち、２４ビットＶＸＬＡＮ  ＩＤ）を追加する。
【０１８２】
これらの場合（図３２及び３３）の両方で、図示していないが、入力パケットは、送信元ＭＡＣアドレスを有することになる。図３１でのように、いくつかの実施形態のブリッジングＭＰＲＥ３１３０は、これらの送信元アドレスの入力ＬＩＦとの結びつきを格納することになる。すなわち、図３２のパケットの送信元アドレスは、ＶＬＡＮ１０のＬＩＦと結び付けられるようにブリッジングテーブル内に格納されることになり、図３３のパケットの送信元アドレスは、ＶＸＬＡＮ１００のＬＩＦと結び付けられるようにブリッジングテーブル内に格納されることになる。
【０１８３】
図３２及び３３は、ブリッジングのペアを以前に学習しており、ブリッジングテーブル内で見つけることができる例を示す。図３４ａは、宛先ＭＡＣアドレスが、ブリッジングテーブル内に一致するエントリを持たず、ブリッジングＭＰＲＥ３１３０が、ペアリングを探すためにネットワークをフラッドすることになるブリッジング動作を示す。図は、５つの動作「１」、「２」、「３」、「４」、及び「５」でのこのブリッジングプロセスを示す。
【０１８４】
動作「１」では、ホスト３１００は、物理ＮＩＣ３１９０を介してリモートＶＭからパケットを受信する。パケットは、宛先アドレス「ＭＡＣ３００」を有するオーバレイネットワーク「ＶＬＡＮ１０」からのものであるが、「ＭＡＣ３００」は、オーバレイネットワーク「ＶＬＡＮ１００」内で見つかるアドレスではなく、したがって、パケットは、正しいオーバレイネットワークへのブリッジングを必要とする。パケットは、また、ＶＬＡＮ１０上のＶＭの「ＭＡＣ４００」の送信元アドレスを有する。
【０１８５】
動作「２」の間、ＶＬＡＮ１０のためのブリッジＬＩＦ３１４１は、パケットを受信し、ブリッジングテーブル３１５０内でＭＡＣアドレス「ＭＡＣ３００」に関するエントリをルックアップするが、一致するペアリングを見つけることができない（すなわち、ブリッジングＭＰＲＥ３１３０は、ＭＡＣ３００が結び付けられるＶＮＩをまだ学習していない）。加えて、図示していないが、「ＭＡＣ４００」のＶＬＡＮ１０への結びつきが格納される。したがって、動作「３」では、ブリッジングＭＰＲＥ３１３０は、（依然として宛先アドレス「ＭＡＣ３００」を有する）データパケットを、ＶＬＡＮ１０以外のすべてのＶＮＩに送信することによって、すべての他のブリッジＬＩＦ（３１４２〜３１４４）をフラッドする。ＭＰＳＥ３１２０は、このとき、パケットをその正しい宛先にもたらすために、オーバレイネットワーク内の標準的なＬ２動作を担当している。
【０１８６】
動作「４」では、異なるＶＮＩにフラッドされたデータパケットは、ホストマシン３１００上で動作するＶＭに到達し、動作「５」では、異なるＶＮＩにフラッドされたデータパケットは、他のホストマシンのための物理ＮＩＣを介して送出される。いくつかの実施形態では、ＭＰＳＥ３１２０は、正しいオーバレイネットワークネットワーク上のすべてのＶＭにパケットをフラッドする。ＭＰＳＥ３１２０が、ＭＡＣ３００の宛先を知っている場合、パケットをこの知っている宛先に送信することができる。加えて、３つのオーバレイネットワークのすべてに関するパケットが、物理ネットワーク上に送信されるように示されているが、いくつかの実施形態では、ＭＰＳＥは、宛先アドレスが配置されていない２つのオーバレイネットワークに関するパケットを破棄することになる。
【０１８７】
図３４ｂは、フラッディングに対する応答からのＭＡＣアドレスペアリングの学習を示す。図は、４つの動作「１」、「２」、及び「３」でのこの応答及び学習プロセスを示す。動作「１」では、「ＶＸＬＡＮ１００」のためのＶＮＩを有する「ＭＡＣ３００」からの応答が、ホストマシン３１００に到着する。いくつかの実施形態では、このような応答は、ＶＭが、ＶＬＡＮ１０上のオリジナルのパケットの送信元、「ＭＡＣ４００」にパケットを送り返すと、ＭＡＣアドレス「ＭＡＣ３００」を有するＶＭ又は他のマシンから来る。
【０１８８】
動作「２」では、データパケットは、ブリッジングＭＰＲＥ３１３０に入り、「ＶＸＬＡＮ１００」のためのブリッジＬＩＦ３１４３によって受信される。動作「４」では、ブリッジングＭＰＲＥ３１３０は、「ＭＡＣ３００」を「ＶＸＬＡＮ１００」と結び付けるエントリでブリッジテーブル３１５０を更新し、パケットをＶＬＡＮ１０にブリッジングする。この時点から、ブリッジングＭＰＲＥ３１３０は、フラッディングに頼ることなく、「ＭＡＣ３００」宛のデータパケットをブリッジングすることができる。
【０１８９】
いくつかの実施形態に関して、図３５は、ＶＤＲを用いる論理ネットワークでブリッジングを実行するためのプロセス３５００を概念的に示す。いくつかの実施形態では、プロセスは、ブリッジＬＩＦを有するＭＰＲＥ（すなわち、ブリッジングＭＰＲＥ）によって実行される。プロセス３５００は、ブリッジングＭＰＲＥが、ＭＰＳＥに対するそのポートを介してパケットを受信すると開始する。このパケットは、その現在のＶＮＩと一致しない宛先ＭＡＣアドレスを有することになり、したがって、ブリッジに送信された。プロセスは、（３５０５で）パケットが、ブリッジングＭＰＲＥが以前に知ることがなかった送信元ＭＡＣアドレスを有するかどうか（すなわち、送信元ＭＡＣアドレスが、特定のインタフェースと結び付けられるようにそれ自体のブリッジテーブルに格納されているかどうか）を判定する。そうである場合、プロセスは３５１０に進む。ブリッジングＭＰＲＥが、以前に送信元ＭＡＣアドレスを知っていた場合、プロセスは３５２０に進む。
【０１９０】
３５１０では、プロセスは、送信元ＭＡＣアドレスと、ブリッジングＭＰＲＥがデータパケットを受信した元のオーバレイネットワーク（又は、ネットワークセグメント）のＶＮＩ（すなわち、ブリッジングＭＰＲＥによる受信時にパケットにタグ付けされたＶＮＩ）とをペアリングする新しいエントリで、そのブリッジテーブルを更新する。送信元ＭＡＣは、ＶＮＩによって識別されるネットワークセグメント内にあることが確実であるため、この情報は、その宛先アドレスとして同じＭＡＣアドレスを有する将来のパケットをブリッジングするために有用である。この情報は、このＭＡＣアドレスとそのＶＮＩとの間のペアリングを提供するために、ブリッジテーブルに格納される。
【０１９１】
プロセスは、次に、（３５２０で）宛先ＭＡＣアドレスのためのエントリを、そのブリッジングテーブル内に見つけることができるかどうかを判定する。ブリッジングＭＰＲＥが、このＭＡＣアドレスからのパケットを以前にブリッジングしている場合、アドレスは、（ブリッジングＭＰＲＥがタイムアウトしない限り）ＭＡＣ：ＶＮＩペアリングとしてそのテーブル内に格納されているべきである。
【０１９２】
宛先アドレスが、ブリッジングテーブル内にない場合、プロセスは、（３５３０で）データパケットが受信された元のオーバレイネットワークのブリッジＬＩＦ以外のすべてのブリッジＬＩＦにフラッドする。いくつかの実施形態では、プロセスは、異なるＶＮＩを有するが、同じ宛先ＭＡＣアドレスを有する異なるオーバレイネットワークに同じデータパケットを送信することによって、すべてのブリッジＬＩＦをフラッドする。パケットがその宛先に到達したと仮定すると、ブリッジＭＰＲＥは、おそらく宛先から応答パケットを受信することになり、その時点で、プロセス３５００の別のインスタンシエイションが、（３５０５で）ブリッジングＭＰＲＥにＭＡＣ：ＶＮＩペアリングを学習させることになる。
【０１９３】
宛先アドレスが、ブリッジングテーブル内にある場合、プロセスは、（３５５０で）宛先ＭＡＣのためのＶＮＩを使用することによって、パケットをその宛先にブリッジする。このＶＮＩ−ＭＡＣペアリングは、ブリッジングテーブル内に見つかり、いくつかの実施形態では、ＬＩＦ構成は、ブリッジングを実行する方法（すなわち、ＶＮＩをパケットに追加する方法）についての命令を含む。パケットをその宛先インタフェースに（又は、フラッディングの場合では、ＬＩＦのすべてに）ブリッジングした後、プロセス３５００は終了する。
【０１９４】
ＩＩＩ．ＶＤＲの制御及び構成
【０１９５】
いくつかの実施形態では、上述したように（ルーティング及び／又はブリッジングのための）ＭＰＲＥとしてホストマシン内でローカルに動作するＬＲＥインスタンシエイションは、コントローラのクラスタによって生成される構成データセットによって構成される。いくつかの実施形態でのコントローラは、異なるテナント又はユーザによって作成及び指定された論理ネットワークに基づいて、これらの構成データセットを生成する。いくつかの実施形態では、ネットワーク仮想化インフラストラクチャのネットワークマネージャは、ユーザが、ネットワーク仮想化インフラストラクチャ上で実装することができる異なる論理ネットワークを生成することを可能にし、次に、これらの論理ネットワークのパラメータをコントローラにプッシュし、そのため、コントローラは、ＬＲＥのための構成データを含むホストマシンの特定の構成データセットを生成することができる。いくつかの実施形態では、ネットワークマネージャは、コントローラからＬＲＥに関する構成データを取得するための命令を、ホストマシンに提供する。
【０１９６】
いくつかの実施形態に関して、図３６は、ネットワーク仮想化インフラストラクチャ３６００を示し、ネットワーク仮想化インフラストラクチャ３６００では、論理ネットワークの仕様は、ホストマシン内のＬＲＥのための構成に（ＭＰＲＥ／ブリッジとなるように）変換される。図示のように、ネットワーク仮想化インフラストラクチャ３６００は、ネットワークマネージャ３６１０、１つ又は複数のコントローラのクラスタ３６２０、及び、物理ネットワークによって相互接続されたホストマシン３６３０を含む。ホストマシン３６３５〜３６３９は、この図には示されていないが、ホストマシン３６３０は、ホストマシン３６３１〜３６３９を含む。
【０１９７】
ネットワークマネージャ３６１０は、１つ又は複数のユーザ作成論理ネットワークのための仕様を提供する。いくつかの実施形態では、ネットワークマネージャは、ユーザに、ネットワーク仮想化インフラストラクチャ３６００上で仮想化することができるユーザ自体の論理ネットワークを指定させるアプリケーションのスイートを含む。いくつかの実施形態では、ネットワークマネージャは、ユーザがプログラミング環境で論理ネットワークを指定するための、アプリケーションプログラミングインタフェース（ＡＰＩ）を提供する。ネットワークマネージャは、次に、これらの作成された論理ネットワークを、ホストマシンでの実装のために、コントローラのクラスタ３６２０にプッシュする。
【０１９８】
コントローラクラスタ３６２０は、ネットワーク仮想化インフラストラクチャ３６００内のホストマシン３６３０の動作を制御するための複数のコントローラを含む。コントローラは、ネットワークマネージャによって作成された論理ネットワークに基づいて、ホストマシンのための構成データセットを作成する。コントローラは、また、構成更新及びルーティング情報を、ホストマシン３６３１〜３６３４に動的に提供する。いくつかの実施形態では、コントローラは、特定の制御プレーンノードに障害が発生した場合でも、各ホストマシンが、更新及びルートを依然として受信することができることを保証するために、分散型又は弾力性のある制御プレーンアーキテクチャを提供するために編成される。いくつかの実施形態では、コントローラの少なくともいくつかは、ホストマシン内で動作する仮想マシンである。
【０１９９】
ホストマシン３６３０は、ＬＲＥを動作させ、ＬＲＥをＭＰＲＥ／ブリッジとして構成するための構成データを、コントローラクラスタ３６２０から受信する。ホストマシンの各々は、コントローラのクラスタ３６２０から構成データを回収するためのコントローラエージェントを含む。いくつかの実施形態では、各ホストマシンは、ＶＤＲ制御プレーンにしたがって、そのＭＰＲＥ転送テーブルを更新する。いくつかの実施形態では、ＶＤＲ制御プレーンは、最適なルートをアドバタイズ／決定するために、ＯＳＰＦ（開放型最短経路優先）又はＢＧＰ（境界ゲートウェイプロトコル）のような標準的なルート交換プロトコルをルーティングピアに使用することによって通信する。
【０２００】
図３６は、また、ホストマシン３６３０内のＬＲＥを構成するために、ネットワーク仮想化インフラストラクチャ３６００内で行われる動作を示す。動作「１」では、ネットワークマネージャ３６１０は、ＬＲＥのための構成を取得するための命令を、ホストマシンに伝達する。いくつかの実施形態では、この命令は、コントローラ３６２０のクラスタ内の特定の場所を指し示すアドレスを含む。動作「２」では、ネットワークマネージャ３６１０は、論理ネットワークの仕様を、クラスタ３６２０内のコントローラに送信し、コントローラは、個々のホストマシン及びＬＲＥのための構成データを生成する。
【０２０１】
動作「３」では、ホストマシン３６３０内で動作するコントローラエージェントは、動作「２」で受信した命令に基づいて、コントローラのクラスタ３６２０からのＬＲＥ構成のための要求を送信する。すなわち、コントローラエージェントは、それらがネットワークマネージャ３６１０によって示されるコントローラと接触する。動作「４」では、コントローラのクラスタ３６２０は、要求に応じて、ホストマシンにＬＲＥ構成を提供する。
【０２０２】
図３７は、ネットワークマネージャ３６１０から、個々のホストマシン３６３１〜３６３４内で動作するＬＲＥへの構成データの配信を概念的に示す。図示のように、ネットワークマネージャ３６１０は、ユーザの仕様に応じて異なるテナントのための論理ネットワークを作成する。ネットワークマネージャは、作成した論理ネットワーク３７１０及び３７２０の記述を、コントローラ３６２０に配信する。コントローラ３６２０は、論理ネットワーク記述３７１０及び３７２０を、それぞれ、個々のホストマシン３６３１〜３６３４に配信するための構成データセット３７３１〜３７３４に処理する。他の実施形態では、しかしながら、ネットワークマネージャは、これらの構成データセットを生成し、コントローラは、ホストマシンへの配信を担当するだけである。これらの構成データセットは、次に、個々のホストマシン内でＭＰＲＥとして動作するように、異なる論理ネットワークのＬＲＥを構成するために使用される。
【０２０３】
図３８は、個々のホストマシンに配信される構成データセットの構造を示す。図は、ホストマシン３６３１〜３６３９のための構成データセット３７３１〜３７３７を示す。ホストマシンは、２つの異なるテナントＸ及びＹのための２つのＬＲＥ３８１０及び３８２０を動作させている。ホストマシン３６３１、３６３２、３６３４、及び３６３７は、それぞれ、（テナントＸの）ＬＲＥ３８１０のＭＰＲＥを動作させるように構成され、ホストマシン３６３２、３６３３、３６３４、及び３６３５は、それぞれ、（テナントＹの）ＬＲＥ３８２０のＭＰＲＥを動作させるように構成される。図７を参照して上述したように、異なるテナントの異なる論理ネットワークのための異なるＬＲＥが、同じホストマシン内に存在することができることは注目に値する。図３８の例では、ホストマシン３６３２は、テナントＸのためのＬＲＥ３８１０及びテナントＹのためのＬＲＥ３８２０の両方のためのＭＰＲＥを動作させている。
【０２０４】
テナントＸのためのＬＲＥ３８１０は、ネットワークセグメントＡ、Ｂ、及びＣのためのＬＩＦを含む。テナントＹのためのＬＲＥ３８２０は、ネットワークセグメントＤ、Ｅ、及びＦのためのＬＩＦを含む。いくつかの実施形態では、各論理インタフェースは、論理ネットワークに固有のものであり、論理インタフェースは、異なるテナントのための異なるＬＲＥに現れることができない。
【０２０５】
いくつかの実施形態でのホストのための構成データは、そのＶＭＡＣ（すべてのホストに関して一般的である）、そのユニークなＰＭＡＣ、及び、そのホスト上で動作するＬＲＥのリストを含む。例えば、ホスト３６３３のための構成データは、ホスト３６３３が、ＬＲＥ３８２０のためのＭＰＲＥを動作させていることを示すことになり、ホスト３６３４のための構成データは、ホスト３６３４が、ＬＲＥ３８１０及びＬＲＥ３８２０のためのＭＰＲＥを動作させていることを示すことになる。いくつかの実施形態では、所与のホストマシンのテナントＸのためのＭＰＲＥ及びテナントＹのためのＭＰＲＥは、両方とも、ホストマシンに割り当てられた同じユニークなＰＭＡＣによってアドレス指定可能である。
【０２０６】
いくつかの実施形態でのＬＲＥのための構成データは、ＬＩＦのリスト、ルーティング／転送テーブル、及び、コントローラクラスタ情報を含む。コントローラクラスタ情報は、いくつかの実施形態では、更新された制御及び構成情報をどこで取得するのかをホストに通知する。いくつかの実施形態では、ＬＲＥのための構成データは、異なるホストマシン間でＬＲＥのインスタンシエイション（すなわち、ＭＰＲＥ）のすべてのために複製される。
【０２０７】
いくつかの実施形態でのＬＩＦのための構成データは、論理インタフェースの名前（例えば、ＵＵＩＤ）、そのＩＰアドレス、そのＭＡＣアドレス（すなわち、ＬＭＡＣ又はＶＭＡＣ）、そのＭＴＵ（最大転送単位）、その宛先情報（例えば、インタフェースするネットワークセグメントのＶＮＩ）、特定のホスト上でアクティブであるか非アクティブであるか、及び、ブリッジＬＩＦであるかルーティングＬＩＦであるかを含む。いくつかの実施形態では、論理インタフェースのための構成データセットは、また、ホスト上でそのＭＰＲＥとして動作するＬＲＥが、指定されたインスタンスであり、物理（すなわち、非仮想、非ＶＤＲ）ホストのためのアドレス解決を実行する必要があるかどうかを示す、外部対面パラメータを含む。
【０２０８】
いくつかの実施形態では、ＬＲＥは、ネットワークマネージャ内で動作するＡＰＩによって構成又は制御される。例えば、いくつかの実施形態は、ＬＲＥを作成するためのＡＰＩ、ＬＲＥを削除するためのＡＰＩ、ＬＩＦを追加するためのＡＰＩ、及びＬＩＦを削除するためのＡＰＩを提供する。いくつかの実施形態では、コントローラは、ホストマシン内で（ＭＰＲＥ／ブリッジとして）動作するＬＲＥを構成するための静的な構成データを提供するだけでなく、静的及び／又は動的なルーティング情報も、ＭＰＲＥとして動作するローカルＬＲＥインスタンシエイションに提供する。いくつかの実施形態は、（例えば、ＬＩＦのＭＴＵ／ＭＡＣ／ＩＰ情報を更新するために）ＬＩＦを更新するためのＡＰＩを提供し、所与のＬＲＥのためのルートエントリを追加又は修正する。いくつかの実施形態でのルーティングエントリは、宛先ＩＰ又はサブネットマスク、ネクストホップ情報、論理インタフェース、メトリック、ルートタイプ（隣接するエントリ、又はネクストホップ、又はインタフェース、など）、ルート制御フラグ、及び（転送、ブラックホール、などのような）アクションのような情報を含む。
【０２０９】
いくつかの実施形態は、ＭＰＲＥとして動作するＬＲＥのためのルーティング情報を動的に収集し、配信する。図３９は、ＬＲＥのための動的ルーティング情報の収集及び配信を示す。図示のように、ネットワーク仮想化インフラストラクチャ３６００は、コントローラのクラスタ３６２０及びホストマシン３６３０を含むだけでなく、動的ルーティング情報を収集及び配信するための仮想マシン（「エッジＶＭ」）を動作させるホストマシン３６４０も含む。いくつかの実施形態では、エッジＶＭ３６４０は、ＯＳＰＦ又はＢＧＰプロトコルを実行し、別のＬＡＮ又は他のネットワークのための外部ルータとして現れる。いくつかの実施形態では、エッジＶＭ３６４０は、他のルータからのネットワークルートを学習する。それ自体のネットワークセグメント内の学習したルートを検証した後、エッジＶＭ３６４０は、学習したルートをコントローラクラスタ３６２０に送信する。コントローラクラスタ３６２０は、次に、学習したルートを、ホストマシン３６３０内のＭＰＲＥに伝播する。
【０２１０】
ＩＶ．電子システム
【０２１１】
上述した特徴及びアプリケーションの多くは、コンピュータ可読記憶媒体（コンピュータ可読媒体とも呼ばれる）に記録された命令のセットとして指定されるソフトウェアプロセスとして実装される。これらの命令が、１つ又は複数の処理ユニット（複数可）（例えば、１つ又は複数のプロセッサ、プロセッサのコア、又は他の処理ユニット）によって実行されると、それらは、処理ユニット（複数可）に、命令で指定されるアクションを実行させる。コンピュータ可読媒体の例は、ＣＤ−ＲＯＭ、フラッシュドライブ、ＲＡＭチップ、ハードドライブ、ＥＰＲＯＭ、などを含むが、これらに限定されない。コンピュータ可読メディアは、無線で又は有線接続を通過する搬送波及び電子信号を含まない。
【０２１２】
本明細書では、「ソフトウェア」という用語は、プロセッサによって処理するためにメモリ内に読み込むことができる、読み取り専用メモリ内に存在するファームウェア、又は、磁気ストレージに記憶されたアプリケーションを含むことを意味する。また、いくつかの実施形態では、複数のソフトウェア発明が、別個のソフトウェア発明を維持しながら、より大きいプログラムのサブパーツとして実装されてよい。いくつかの実施形態では、複数のソフトウェア発明が、別々のプログラムとして実装されてもよい。最後に、本明細書に記載のソフトウェア発明を一緒に実装する別々のプログラムのどのような組み合わせも、本発明の範囲内である。いくつかの実施形態では、ソフトウェアプログラムは、１つ又は複数の電子システム上で動作するようにインストールされると、ソフトウェアプログラムの動作を実行する１つ又は複数の特定の機械実装を定義する。
【０２１３】
図４０は、本発明のいくつかの実施形態を実装する電子システム４０００を概念的に示す。電子システム４０００は、上述した制御、仮想化、又はオペレーティングシステムアプリケーションのいずれかを実行するために使用されてよい。電子システム４０００は、コンピュータ（例えば、デスクトップコンピュータ、パーソナルコンピュータ、タブレットコンピュータ、サーバコンピュータ、メインフレーム、ブレードコンピュータ、など）、電話、ＰＤＡ、又は、任意の他の種類の電子デバイスであってよい。このような電子システムは、様々なタイプのコンピュータ可読メディア、及び、様々な他のタイプのコンピュータ可読記憶メディアのためのインタフェースを含む。電子システム４０００は、バス４００５、処理ユニット（複数可）４０１０、システムメモリ４０２５、読み取り専用メモリ４０３０、永久記憶デバイス４０３５、入力デバイス４０４０、及び出力デバイス４０４５を含む。
【０２１４】
バス４００５は、電子システム４０００の多数の内部デバイスを通信可能に接続するすべてのシステムバス、周辺機器バス、及びチップセットバスを集合的に表す。例えば、バス４００５は、処理ユニット（複数可）４０１０を、読み取り専用メモリ４０３０、システムメモリ４０２５、及び永久記憶デバイス４０３５に通信可能に接続する。
【０２１５】
これらの様々なメモリユニットから、処理ユニット（複数可）４０１０は、本発明のプロセスを実行するために、実行する命令及び処理するデータを取り出す。処理ユニット（複数可）は、異なる実施形態では、単一のプロセッサ又はマルチコアプロセッサであってよい。
【０２１６】
読み取り専用メモリ（ＲＯＭ）４０３０は、処理ユニット（複数可）４０１０、及び電子システムの他のモジュールによって必要とされる、静的なデータ及び命令を格納する。永久記憶デバイス４０３５は、他方では、読み書きメモリデバイスである。このデバイスは、電子システム４０００がオフの場合でも、命令及びデータを格納する、不揮発性メモリユニットである。本発明のいくつかの実施形態は、（磁気又は光ディスク、及びその対応ディスクドライブのような）大容量記憶デバイスを、永久記憶デバイス４０３５として使用する。
【０２１７】
他の実施形態は、（フロッピー（登録商標）ディスク、フラッシュドライブ、などのような）リムーバブル記憶デバイスを、永久記憶デバイスとして使用する。永久記憶デバイス４０３５と同様に、システムメモリ４０２５は、読み書きメモリデバイスである。しかしながら、永久記憶デバイス４０３５とは異なり、システムメモリは、ランダムアクセスメモリのような揮発性読み書きメモリである。システムメモリは、プロセッサが実行時に必要とする命令及びデータの一部を格納する。いくつかの実施形態では、本発明のプロセスは、システムメモリ４０２５、永久記憶デバイス４０３５、及び／又は読み取り専用メモリ４０３０に格納される。これらの様々なメモリユニットから、処理ユニット（複数可）４０１０は、いくつかの実施形態のプロセスを実行するために、実行する命令及び処理するデータを取り出す。
【０２１８】
バス４００５は、入力及び出力デバイス４０４０及び４０４５にも接続する。入力デバイスは、ユーザが、電子システムに情報を通信し、コマンドを選択することを可能にする。入力デバイス４０４０は、英数字キーボード及びポインティングデバイス（「カーソル制御デバイス」とも呼ばれる）を含む。出力デバイス４０４５は、電子システムによって生成された画像を表示する。出力デバイスは、プリンタ、及び、陰極線管（ＣＲＴ）又は液晶ディスプレイ（ＬＣＤ）のような表示デバイスを含む。いくつかの実施形態は、入力及び出力デバイスの両方として機能するタッチスクリーンのようなデバイスを含む。
【０２１９】
最後に、図４０に示すように、バス４００５は、また、電子システム４０００を、ネットワークアダプタ（図示せず）を介してネットワーク４０６５に結合する。このように、コンピュータは、（ローカルエリアネットワーク（「ＬＡＮ」）のような）コンピュータのネットワーク、ワイドエリアネットワーク（「ＷＡＮ」）、若しくはインターネット、又は、インターネットのようなネットワークのネットワークの一部であってよい。電子システム４０００のいずれか又はすべての構成要素は、本発明と共に使用されてよい。
【０２２０】
いくつかの実施形態は、コンピュータプログラム命令を、機械可読又はコンピュータ可読媒体（代わりに、コンピュータ可読記憶メディア、機械可読メディア、又は機械可読記憶メディアとも呼ばれる）に格納する、マイクロプロセッサ、ストレージ、及びメモリのような電子構成要素を含む。このようなコンピュータ可読メディアのいくつかの例は、ＲＡＭ、ＲＯＭ、読み取り専用コンパクトディスク（ＣＤ−ＲＯＭ）、追記型コンパクトディスク（ＣＤ−Ｒ）、書き換え可能コンパクトディスク（ＣＤ−ＲＷ）、読み取り専用デジタル多用途ディスク（例えば、ＤＶＤ−ＲＯＭ、二層ＤＶＤ−ＲＯＭ）、様々な追記型／書き換え可能ＤＶＤ（例えば、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、など）、フラッシュメモリ（例えば、ＳＤカード、ミニ−ＳＤカード、マイクロ−ＳＤカード、など）、磁気及び／又は固体ハードドライブ、読み取り専用及び記録可能ブルーレイディスク（登録商標）、超高密度光ディスク、任意の他の光又は磁気メディア、並びにフロッピーディスクを含む。コンピュータ可読メディアは、少なくとも１つの処理ユニットによって実行可能で、様々な動作を実行する命令のセットを含むコンピュータプログラムを格納することができる。コンピュータプログラム又はコンピュータコードの例は、コンパイラによって生成されるような機械コード、及び、インタプリタを使用するコンピュータ、電子構成要素、又はマイクロプロセッサによって実行される、より高いレベルのコードを含むファイルを含む。
【０２２１】
上記の説明は、主に、ソフトウェアを実行するマイクロプロセッサ又はマルチコアプロセッサに言及しているが、いくつかの実施形態は、特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のような、１つ又は複数の集積回路によって実行される。いくつかの実施形態では、このような集積回路は、回路自体に格納された命令を実行する。
【０２２２】
本明細書で使用される「コンピュータ」、「サーバ」、「プロセッサ」、及び「メモリ」という用語は、すべて、電子的又は他の技術的デバイスを指す。これらの用語は、人間又は人間のグループを除外する。本明細書の目的のために、表示又は表示するという用語は、電子デバイス上での表示を意味する。本明細書で使用される「コンピュータ可読メディア」、「コンピュータ可読媒体」、及び「機械可読媒体」という用語は、コンピュータによって読み取り可能な形式で情報を格納する有形の物理的物体に完全に限定される。これらの用語は、いかなる無線信号、有線のダウンロード信号、及びいかなる他の一時的な信号も除外する。
【０２２３】
本発明を、多数の特定の詳細を参照して説明してきたが、当業者は、本発明が、本発明の要旨から逸脱することなく、他の特定な形態で具体化されてよいことを認識するであろう。加えて、（図１１、１４、１５、２２、及び３５を含む）多数の図面は、プロセスを概念的に示す。これらのプロセスの特定の動作は、図示及び説明された正確な順序で実行されなくてよい。特定の動作は、ひと続きの動作で実行されなくてよく、異なる特定の動作が、異なる実施形態で実施されてよい。さらに、プロセスは、いくつかのサブプロセスを使用して、又は、より大きいマクロプロセスの一部として実施されてよい。したがって、当業者は、本発明が、上記の例示的な詳細によって限定されず、添付の特許請求の範囲によって定義されるべきであることを理解するであろう。
【図１】
0005925820.tif 000002
【図２】
0005925820.tif 000003
【図３】
0005925820.tif 000004
【図４】
0005925820.tif 000005
【図５ａ】
0005925820.tif 000006
【図５ｂ】
0005925820.tif 000007
【図６ａ】
0005925820.tif 000008
【図６ｂ】
0005925820.tif 000009
【図７】
0005925820.tif 000010
【図８】
0005925820.tif 000011
【図９】
0005925820.tif 000012
【図１０】
0005925820.tif 000013
【図１１】
0005925820.tif 000014
【図１２】
0005925820.tif 000015
【図１３】
0005925820.tif 000016
【図１４】
0005925820.tif 000017
【図１５】
0005925820.tif 000018
【図１６】
0005925820.tif 000019
【図１７】
0005925820.tif 000020
【図１８】
0005925820.tif 000021
【図１９】
0005925820.tif 000022
【図２０】
0005925820.tif 000023
【図２１】
0005925820.tif 000024
【図２２】
0005925820.tif 000025
【図２３】
0005925820.tif 000026
【図２４】
0005925820.tif 000027
【図２５】
0005925820.tif 000028
【図２６ａ】
0005925820.tif 000029
【図２６ｂ】
0005925820.tif 000030
【図２７】
0005925820.tif 000031
【図２８】
0005925820.tif 000032
【図２９】
0005925820.tif 000033
【図３０】
0005925820.tif 000034
【図３１】
0005925820.tif 000035
【図３２】
0005925820.tif 000036
【図３３】
0005925820.tif 000037
【図３４ａ】
0005925820.tif 000038
【図３４ｂ】
0005925820.tif 000039
【図３５】
0005925820.tif 000040
【図３６】
0005925820.tif 000041
【図３７】
0005925820.tif 000042
【図３８】
0005925820.tif 000043
【図３９】
0005925820.tif 000044
【図４０】
0005925820.tif 000045