(57)【特許請求の範囲】
【請求項１】
仮想ネットワークサービスの１つまたは複数の構成されたコンピューティング・システムにより、第１の仮想コンピュータネットワークに関するネットワークトポロジを指定した設定情報を前記仮想ネットワークサービスのユーザから受信することであって、前記指定されたネットワークトポロジは、前記第１の仮想コンピュータネットワークのコンピューティングノードの第１のサブセットを伴う第１のサブネットワーク及び前記第１の仮想コンピュータネットワークの前記コンピューティングノードの別個の第２のサブセットを伴う第２のサブネットワークを含む、受信することと、
仮想マシンを、１つまたは複数のホスト物理的コンピューティング・システム上で、前記第１の仮想コンピュータネットワークの前記コンピューティングノードとして、実行させることであって、前記１つまたは複数のホスト物理的コンピューティング・システムは、前記仮想ネットワークサービスによって提供され、別個の物理的な基盤ネットワークによって相互に接続される、実行させることと、
前記１つまたは複数のホスト物理的コンピューティング・システム上で実行される、１つまたは複数の通信マネージャにルーティング情報を提供することと、
前記第１の仮想コンピュータネットワークを、前記第１のサブネットワーク及び前記第２のサブネットワークにセグメント化する、前記指定されたネットワークトポロジの論理的ルータ装置を実装することにより、前記１つまたは複数の通信マネージャに、１つまたは複数の物理的ルータ装置をエミュレートさせることであって、前記指定されたネットワークトポロジに従って、コンピューティングノードの前記第１のサブセットと前記第２のサブセットとの間で送信される通信を変更することを含む、エミュレートさせることと
により受信した設定情報に従って、前記１つまたは複数の構成されたコンピューティング・システムにより、前記第１の仮想コンピュータネットワークを実装することと、
を備えるコンピュータ実行方法。
【請求項２】
前記第１のサブネットワークのコンピューティングノードとして仮想マシンを実行するために、前記ユーザからの要求を受信することと、
前記仮想マシンを、追加のホスト物理的コンピューティング・システム上で実行させることと、
前記第１のサブネットワークから離れて通信するために、1つまたは複数の通信マネージャに、追加のルーティング情報を送信することと
をさらに備える、請求項１に記載のコンピュータ実行方法。
【請求項３】
前記１つまたは複数の通信マネージャの１つにより、コンピューティングノードの前記第１のサブセットと前記第２のサブセットとの間で送信される前記通信を受信することであって、前記通信は、前記第１のサブネットワークの送信側のコンピューティングノードからである、受信することと、
前記１つの通信マネージャにより、前記第２のサブネットワークの宛先コンピューティングノードに前記通信を転送することと、
をさらに備える、請求項１に記載のコンピュータ実行方法。
【請求項４】
前記通信の前記変更は、前記宛先コンピューティングノードへの、前記論理的ルータ装置により転送される前記通信に対応する情報を含むように前記通信を変更することを含み、さらに、前記通信において、前記論理的ルータ装置に関連した仮想ハードウェアアドレスを、前記宛先コンピューティングノードに対応する、別個の第２の仮想ハードウェアアドレスに置き替えることを含む、請求項３に記載のコンピュータ実行方法。
【請求項５】
前記第１の仮想コンピュータネットワークの前記コンピューティングノードの各々は、関連する基盤ネットワークアドレス及び別個の仮想ネットワークアドレスを有し、
前記通信を転送することは、前記別個の物理的な基盤ネットワークの複数の物理的ネットワークデバイスの１つに前記通信を送信することを含み、
前記１つの物理的ネットワークデバイスは、前記基盤ネットワークにおける前記宛先コンピューティングノードの位置に前記通信をルーティングするために、前記宛先コンピューティングノードに関する前記基盤ネットワークアドレスを用いる、請求項３に記載のコンピュータ実行方法。
【請求項６】
前記設定情報を受信することは、前記ユーザと前記仮想ネットワークサービスに関連付けられたグラフィカルユーザインタフェースとの対話により、少なくともいくつかの前記設定情報を受信することを含む、請求項１に記載のコンピュータ実行方法。
【請求項７】
前記設定情報を受信することは、前記ユーザの代わりに実行されるプログラムによって、前記仮想ネットワークサービスにより提供されるプログラムインタフェースと対話することにより、少なくともいくつかの前記設定情報を受信することを含む、請求項１に記載のコンピュータ実行方法。
【請求項８】
前記第１の仮想コンピュータネットワークを実装することは、前記基盤ネットワークにおける、前記指定されたネットワークトポロジを物理的に実装することなく、前記指定されたネットワークトポロジをエミュレートすることを含む、請求項１に記載のコンピュータ実行方法。
【請求項９】
さらに、前記指定されたネットワークトポロジに従って、前記論理的ルータ装置からの情報に関する、前記第１の仮想コンピュータネットワークの前記コンピューティングノードの１つからの要求に応答することを含み、
前記応答することは、前記論理的ルータ装置が物理的に実装されたならば、前記論理的ルータ装置によって実行される動作及び他の機能をエミュレートすることであって、前記動作及び他の機能を前記エミュレートすることは、前記論理的ルータ装置を表すために、いずれの物理的ルータ装置を用いることなく、前記１つのコンピューティングノードに関する応答情報を生成することを含む、請求項１に記載のコンピュータ実行方法。
【請求項１０】
前記受信された設定情報は、１つまたは複数のアドレスの範囲の仕様を含み、
前記第１の仮想コンピュータネットワークを実装することは、前記第１の仮想コンピュータネットワークの前記コンピューティングノードに、前記１つまたは複数のアドレスの範囲からの仮想的なネットワークアドレスを割り当てることを含む、請求項１に記載のコンピュータ実行方法。
【請求項１１】
１つまたは複数のコンピューティング・システムが方法を実行するように構成するコンテンツを記憶した非一時的なコンピュータ可読媒体であって、
前記方法は、
１つまたは複数の構成されたコンピューティング・システムにより、第１の仮想コンピュータネットワークに関するネットワークトポロジを示す設定情報を受信することであって、前記示されたネットワークトポロジは、前記第１の仮想コンピュータネットワークのコンピューティングノードの第１のサブセットを伴う第１のサブネットワーク及び前記第１の仮想コンピュータネットワークの前記コンピューティングノードの別個の第２のサブセットを伴う第２のサブネットワークを含む、前記第１の仮想コンピュータネットワークの複数のサブネットワークを指定する、受信することと、
仮想マシンを、１つまたは複数のホスト物理的コンピューティング・システム上で、前記第１の仮想コンピュータネットワークの前記コンピューティングノードとして、実装させることであって、前記１つまたは複数のホスト物理的コンピューティング・システムは、別個の物理的基盤ネットワークによって相互に接続される、実装させることと、
前記１つまたは複数のホスト物理的コンピューティング・システム上で実行される、１つまたは複数の通信マネージャにルーティング情報を提供することと、
前記通信マネージャにより、前記第１の仮想コンピュータネットワークを、前記指定された複数のサブネットワークにセグメント化する、前記指定されたネットワークトポロジの１つまたは複数の論理的ルータ装置の機能の実装を開始することであって、前記示されたネットワークトポロジに従って、コンピューティングノードの前記第１のサブセットと前記第２のサブセットとの間で送信される通信を変更することを含む、実装を開始することと
を含む、非一時的なコンピュータ可読媒体。
【請求項１２】
前記記憶されたコンテンツはソフトウェア命令を含み、
前記ソフトウェア命令は実行されると、さらに、
前記複数のサブネットワークの第１のサブネットワークのコンピューティングノードとして仮想マシンを実装する要求を受信し、
前記仮想マシンに、ホスト物理的コンピューティング・システム上で実装させ、
前記第１のサブネットワークの外部の宛先に送信される通信に関する、追加のルーティング情報を、前記１つまたは複数の通信マネージャに送信するように、
前記１つまたは複数のコンピューティング・システムを構成する、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１３】
前記１つまたは複数の構成されたコンピューティング・システムは、仮想ネットワークサービスにより操作され、
前記設定情報を受信することは、前記仮想ネットワークサービスにより提供されるグラフィカルユーザインタフェース及び前記仮想ネットワークサービスにより提供されるプログラムインタフェースの１つまたは複数を介して、前記仮想ネットワークサービスのユーザから前記設定情報の少なくともいくらかを受信することを含む、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１４】
前記複数のサブネットワークの少なくとも１つのサブネットワークは、前記１つまたは複数の論理的ルータ装置の１つに関連付けられ、
前記方法は、さらに、関連する１つの論理的ルータ装置を示す、いずれの物理的ルータ装置を用いることなく、少なくとも、前記１つのサブネットワークに関する、前記関連する１つの論理的ルータ装置の機能をエミュレートすることを含む、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１５】
１つまたは複数の実行中の通信マネージャの１つにより、
コンピューティングノードの前記第１のサブセットと前記第２のサブセットとの間で送信される前記通信を転送することであって、前記通信は、前記複数のサブネットワークの前記第１のサブネットワーク上の前記仮想マシンのうちの送信側の仮想マシンから、前記複数のサブネットワークの前記第２のサブネットワーク上で示される宛先コンピューティングノードへの通信である、転送することを含み、
前記通信の変更は、前記第１のサブネットワークに関連付けられた１つまたは複数の論理的ルータ装置の１つにより転送された前記通信に対応する情報を含むように、前記通信を変更することを含む、
請求項１１に記載の非一時的なコンピュータ可読媒体。
【請求項１６】
１つまたは複数のコンピューティング・システムの１つまたは複数のプロセッサと、
前記１つまたは複数のプロセッサの少なくとも１つにより実行されるとき、前記１つまたは複数のコンピューティング・システムに、第１の仮想コンピュータネットワークに関する論理ネットワーク機能を提供させる命令を記憶した１つまたは複数のメモリと
を備え、
前記論理ネットワーク機能を提供することは、
前記第１の仮想コンピュータネットワークに関するネットワークトポロジを示す設定情報をユーザから取得することであって、前記示されたネットワークトポロジは、前記第１の仮想コンピュータネットワークのコンピューティングノードの第１のサブセットを伴う第１のサブネットワーク及び前記第１の仮想コンピュータネットワークの前記コンピューティングノードの別個の第２のサブセットを伴う第２のサブネットワークを含む、複数のサブネットワークを指定する、取得することと、
１つまたは複数のホスト物理的コンピューティング・システム上の仮想マシンを、前記第１の仮想コンピュータネットワークの前記コンピューティングノードとして動作させることであって、前記１つまたは複数のホスト物理的コンピューティング・システムは、前記第１の仮想コンピュータネットワークがオーバーレイされた、別個の物理的基盤ネットワークにより相互に接続される、動作させることと、
受信された前記設定情報に従って、前記１つまたは複数のホスト物理的コンピューティング・システム上で実行される、１つまたは複数の通信マネージャにルーティング情報を提供することであって、前記通信マネージャに、前記第１の仮想コンピュータネットワークを、前記指定された複数のサブネットワークにセグメント化する、前記第１の仮想コンピュータネットワークの１つまたは複数の論理的ルータ装置の機能をエミュレートさせることであって、前記示されたネットワークトポロジに従って、コンピューティングノードの前記第１のサブセットと前記第２のサブセットとの間で送信される通信を変更することを含む、提供することと  を含むシステム。
【請求項１７】
前記通信は、前記複数のサブネットワークの前記第１のサブネットワークの前記仮想マシンの１つから受信され、前記第１のサブネットワークの外部にあり、かつ前記複数のサブネットワークの前記第２のサブネットワークの中にある、宛先ノードを示し、
前記論理ネットワーク機能を提供することは、前記宛先ノードに前記通信を転送することと
をさらに含む、請求項１６に記載のシステム。
【請求項１８】
前記１つまたは複数のコンピューティング・システムは、設定可能なネットワークサービスの一部であり、
前記ユーザは、前記設定可能なネットワークサービスのユーザであり、
前記設定情報を取得することは、前記設定可能なネットワークサービスにより提供されるグラフィカルユーザインタフェース、または前記設定可能なネットワークサービスにより提供されるプログラムインタフェースにより、前記ユーザから前記設定情報の少なくともいくらかを受信することを含む、
請求項１６に記載のシステム。
【請求項１９】
論理ネットワーク機能を提供することは、前記複数のサブネットワークの前記第１のサブネットワークのコンピューティングノードとして、仮想マシンを実装するために、前記ユーザから要求を受信することをさらに含み、
前記要求に少なくとも部分的に基づいて、前記仮想マシンを、前記１つまたは複数のホスト物理的コンピューティング・システムの１つに実装させ、前記第１のサブネットワークの外部の宛先に、前記第１のサブネットワークから送信された通信に関する、前記１つまたは複数の通信マネージャに追加のルーティング情報を提供する、
請求項１６に記載のシステム。
【請求項２０】
前記設定情報は、前記第１の仮想コンピュータネットワークのコンピューティングノードで用いられる、１つまたは複数のアドレスの範囲の仕様を含み、
前記論理ネットワーク機能を提供することは、さらに、前記１つまたは複数のアドレスの範囲から仮想的なネットワークアドレスを、前記第１の仮想コンピュータネットワークの前記コンピューティングノードに割り当てることをさらに含む、
請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理されたコンピュータネットワークのための論理ネットワーキング機能の提供に関する。
【背景技術】
【０００２】
多くの会社および他の組織が、それらの事業を支援するために、多数のコンピューティングシステムを相互接続するコンピュータネットワークを運用し、そのコンピューティングシステムは、代替的に、（例えば、非公開のローカルネットワークの一部として）同一場所に配置される、または、その代りに（例えば、１つ以上の非公開の中間ネットワークまたは共有された中間ネットワークを介して接続されて）複数の別個の地理的位置に設置される。例えば、単一の組織によっておよびその単一組織のために運用される私的データセンタ、ならびに事業体のような実体によって運用される公衆データセンタなどの、相互に連結された多数のコンピューティングシステムを提供するデータセンタは、当たり前のようになっている。一部の公衆データセンタの運用者は、様々な顧客が所有するハードウェアのためのネットワークアクセス、電源およびセキュアインストールの設備を提供するが、他の公衆データセンタオペレータは、彼らの顧客が使用するための利用可能なハードウェア資源をさらに含む「フルサービス」設備を提供する。しかしながら、典型的なデータセンタおよびコンピュータネットワークの規模および範囲が増大するにつれ、関連する物理的コンピューティング資源を提供、運営および管理するタスクは、ますます複雑になっている。
【０００３】
日常的なハードウェアのための仮想化技術の出現によって、多様なニーズを持った多くの顧客のための大規模なコンピューティング資源を管理することに関していくつかの利益が提供され、様々なコンピューティング資源が複数の顧客間で効率的に安全に共有されることを可能にしている。例えば、ＶＭＷａｒｅ、ＸＥＮまたはユーザモードＬｉｎｕｘ（登録商標）によって提供されるような仮想化技術は、単一の物理的コンピューティングマシンが、それによって提供される１つ以上の仮想マシンを各ユーザに提供することにより、複数ユーザの間で共有されることを可能にし得、そのような仮想マシンの各々は、ユーザに、自らが所与のハードウェアコンピューティング資源の唯一のオペレータおよび管理者であるという錯覚を与える、別個の論理的コンピューティングシステムとして機能するソフトウェアシミュレーションである一方、様々なバーチャルマシンの間でアプリケーション隔離およびセキュリティをも提供する。更に、いくつかの仮想化技術は、現実に複数の別個の物理的コンピューティングシステムにわたる、複数の仮想プロセッサを備えた単一のバーチャルマシンなどの１つ以上の物理資源にわたる仮想資源を提供することができる。
【図面の簡単な説明】
【０００４】
【図１】仮想コンピュータネットワークに属するコンピューティングノード間の通信を設定して管理する一実施形態の例を示すネットワーク図である。
【図２Ａ】仮想オーバーレイコンピュータネットワークのコンピューティングノード間の通信を管理する例を示す。
【図２Ｂ】仮想オーバーレイコンピュータネットワークのコンピューティングノード間の通信を管理する例を示す。
【図２Ｃ】仮想オーバーレイコンピュータネットワークのコンピューティングノード間の通信を管理する例を示す。
【図２Ｄ】オーバーレイネットワークのための仮想ネットワークアドレスを組み込むことを可能にするように下層の基盤ネットワークアドレスを設定する一例を示す。
【図３】コンピューティングノード間の通信を管理するためのシステムの一実施形態を実行するための好適なコンピューティングシステムの例を示すブロック図である。
【図４Ａ】ＯＮＭシステム管理ルーチンの一実施形態の例のフローチャートを示す。
【図４Ｂ】ＯＮＭシステム管理ルーチンの一実施形態の例のフローチャートを示す。
【図５Ａ】ＯＮＭ通信管理ルーチンの一実施形態の例のフローチャートを示す。
【図５Ｂ】ＯＮＭ通信管理ルーチンの一実施形態の例のフローチャートを示す。
【発明を実施するための形態】
【０００５】
例えば、ユーザまたは他の実体のために提供される仮想コンピュータネットワーク向けなどの管理されたコンピュータネットワークのための論理ネットワーキング機能を提供するための技術が記述される。少なくともいくつかの実施形態において、本技術は、仮想コンピュータネットワークの複数のコンピューティングノードを複数の論理サブネットワークに分離するおよび／または複数のコンピューティングノードの規定されたグループに各々関連づけられる１つ以上の論理ネットワーキング装置を規定する論理ネットワークトポロジーなどの、ユーザのための提供されている仮想コンピュータネットワークのためのネットワークトポロジーを、ユーザが設定する、あるいは別様に規定することを可能にする。ネットワークトポロジーが仮想コンピュータネットワーク用に規定された後、ネットワークトポロジーに対応する論理ネットワーキング機能が、例えば、仮想コンピュータネットワークのためにネットワークトポロジーを物理的に実装せずに、様々な方式で提供され得る。具体的には、少なくともいくつかの実施形態において、仮想コンピュータネットワークの複数のコンピューティングノード間の通信は、よりいっそう詳細に以下で記述されるように、もしそれらが物理的に存在するのであれば規定された論理ネットワーキング装置によって提供されるであろう機能性をエミュレートするように、および／またはそれが物理的に実行されるのであれば規定されたネットワークトポロジーに対応するであろう機能をエミュレートするように、管理される。少なくともいくつかの実施形態において、記述された技術のいくつかまたは全部は、オーバーレイネットワーク管理システムの実施形態によって自動的に実行される。
【０００６】
複数のコンピューティングノード間の仮想ローカルネットワークまたは他の仮想コンピュータネットワークを、複数のコンピューティングノードを分割する１つ以上の中間物理ネットワークを用いて、オーバーレイネットワークを生成することなどによって、様々な実施形態において、様々な方法で提供することができる。そのような実施形態において、中間物理ネットワークを、その上にオーバーレイ仮想コンピュータネットワークが提供される基盤ネットワークとして用いることができ、オーバーレイ仮想コンピュータネットワークのコンピューティングノード間のメッセージは中間物理ネットワーク上を通るが、コンピューティングノードは、少なくともいくつかのこのような実施形態において、中間物理ネットワークの存在および使用を認識しない。例えば、複数のコンピューティングノードは、例えば基盤ＩＰ（「インターネットプロトコル」）ネットワークアドレス（例えば、中間物理ネットワークによって用いられるネットワークプロトコルを反映するためなどの、ＩＰｖ４、すなわち「インターネットプロトコルバージョン４」により規定される、またはＩＰｖ６、すなわち「インターネットプロトコルバージョン６」により規定されるＩＰネットワークアドレス）のような、中間物理ネットワーク内のコンピューティングノードの位置に対応する個別の物理的基盤ネットワークアドレスを各々が有し得る。他の実施形態において、仮想コンピュータネットワークがオーバーレイされる基盤ネットワークは、例えば１つ以上の第三者（例えば、インターネットまたはテレコムインフラストラクチャの運用者またはプロバイダにより）により実装される他の仮想コンピュータネットワークのような、１つ以上の他の仮想コンピュータネットワークをそれ自体含むまたは１つ以上の他の仮想コンピュータネットワークから構成され得る。
【０００７】
コンピューティングノードが、オーバーレイネットワーク管理システムによって提供され基盤ネットワーク上でオーバーレイされる仮想コンピュータネットワークに加わるために選択される際、各コンピューティングノードは、例えば提供される仮想コンピュータネットワークのために用いられる仮想ネットワークアドレスの範囲からのように、それらのコンピューティングノードの基盤ネットワークアドレスと無関係である提供される仮想コンピュータネットワークのための１つ以上の仮想ネットワークアドレスを割り当てられ得る。少なくともいくつかの実施形態および状況において、提供される仮想コンピュータネットワークは、（例えば、ＩＰｖ４ネットワークプロトコルを用いる仮想コンピュータネットワーク、およびＩＰｖ６ネットワークプロトコルを用いる基盤コンピュータネットワークを備えた）基盤ネットワークによって用いられるネットワークプロトコルとは異なるネットワークプロトコルを、さらに用いてもよい。仮想コンピュータネットワークのコンピューティングノードは、（例えば、通信のための送信先ネットワークアドレスとして送信先コンピューティングノードの仮想ネットワークアドレスを指定することにより、別の送信先コンピューティングノードに通信を送信することにより）仮想ネットワークアドレスを用いて相互通信するが、基盤ネットワークは、（例えば、物理ネットワークルータ装置および基盤ネットワークの他の物理的ネットワーキング装置により）基盤ネットワークアドレスに基づいて経路選択する、または別様に通信を転送するように設定されてもよい。その場合、オーバーレイ仮想コンピュータネットワークは、中間物理ネットワークに入る通信を、基盤ネットワークのネットワークプロトコルに基づく基盤ネットワークアドレスを用いるように変更することにより、および、中間物理ネットワークを除外するから出る通信を、仮想コンピュータネットワークのネットワークプロトコルに基づく仮想ネットワークアドレスを用いるように変更することにより、中間物理ネットワークの端から実現することができる。そのようなオーバーレイ仮想コンピュータネットワークの条件に関する更なる詳細は、以下に含まれる。
【０００８】
少なくともいくつかの実施形態において、オーバーレイネットワークマネージャ（「ＯＮＭ」）システムの実施形態は、例えば１つ以上の地理的な位置（例えば、１つ以上のデータセンタ内の）にあって１つ以上の中間物理ネットワークを介して相互接続される多数のコンピューティングノードを提供して用いることによってなど、顧客および他のユーザにオーバーレイ仮想コンピュータネットワークを提供する。ＯＮＭシステムは、通信が中間物理ネットワークに入り、そこから出る際に、様々なオーバーレイ仮想コンピュータネットワークのための通信を管理するために１つ以上の中間物理ネットワークの端にある様々な通信管理モジュールを用いてもよいし、ＯＮＭシステムの他のオペレーションを調整するために１つ以上のシステム管理モジュールを用いてもよい。例えば、通信管理マネージャが提供されるオーバーレイ仮想コンピュータネットワークのための通信を管理することを可能にするために、ＯＮＭシステムは、例えばコンピューティングノードに関する１つ以上のオーバーレイ仮想ネットワークアドレスに各々のこのようなコンピューティングノードの基盤物理ネットワークアドレスをマッピングすることなど、各仮想コンピュータネットワークのコンピューティングノードに関する諸情報を追跡して用いることができる。よりいっそう詳細に以下で論じられるように、そのようなマッピングおよび他の情報は、様々な実施形態において、中央にまたは分散された方式に含む様々な方式で格納され伝播され得る。
【０００９】
さらに、所望の方式でユーザおよび他の実体に仮想コンピュータネットワークを提供するために、ＯＮＭシステムは、ユーザまたは他の実体のためにＯＮＭシステムによって提供される仮想コンピュータネットワークのための様々な種類の情報を設定するために、ユーザおよび他の実体が少なくともいくつかの実施形態におけるＯＮＭシステムと対話することを可能にし、それらの仮想コンピュータネットワークを提供することの一部として、このような設定情報を追跡して用いることができる。複数のコンピューティングノードを有する特定の仮想コンピュータネットワークのための設定情報は、例えば、以下の非排他的なリストを含み得る：仮想コンピュータネットワークの一部として含む複数のコンピューティングノードの量、仮想コンピュータネットワークの一部として含む１つ以上の特定のコンピューティングノード、仮想コンピュータネットワークの複数のコンピューティングノードに関連づける複数の仮想ネットワークアドレスの範囲または他のグループ、特定のコンピューティングノードまたは関連するコンピューティングノードの特定のグループに関連づける特定の仮想ネットワークアドレスと、コンピューティングノードに含まれる、または別様にコンピューティングノードに利用可能であるためのコンピューティング資源の量および／またはコンピューティング資源の型を反映するなどの、仮想コンピュータネットワークの少なくともいくつかのコンピューティングノードの種類、仮ピュータネットワークのコンピューティングノードのいくつかまたはすべてが位置する地理的位置等。さらに、仮想コンピュータネットワークの設定情報は、例えばその目的のためのＯＮＭシステムによって提供されるＡＰＩ（「アプリケーションプログラムインターフェイス」）と対話するユーザまたは他の実体の実行プログラムによってなど、および／または、その目的のためにＯＮＭシステムによって提供されるＧＵＩ（「グラフィカルユーザインタフェース」）を対話式に用いるユーザによって、様々な実施形態において様々な方式でユーザまたは他の実体によって指定され得る。
【００１０】
さらに、前述のように、管理されたコンピュータネットワークのための論理ネットワーキング機能は、様々な実施形態において様々な方式でＯＮＭシステムによって提供され得、ＯＮＭシステムは、そのような論理ネットワーキング機能を支援する様々な機能を実行する。例えば、ユーザまたは他の実体は、特定の仮想コンピュータネットワークのネットワークトポロジーに関する諸情報を設定するために、少なくともいくつかの実施形態においてＯＮＭシステムと対話し得、ＯＮＭシステムは、その仮想コンピュータネットワークを提供する一部として、このようなネットワークトポロジーの設定情報を追跡して用いることができる。仮想コンピュータネットワークのためのネットワークトポロジーの設定情報は、以下の非排他的なリストを含む各種情報を含み得る：第１の指定されるネットワークルータ装置に関連づけられる第１のサブネットワークの一部である複数のコンピューティングノードの第１のサブセットを有するため、および第２の指定されるネットワークルータ装置に関連づけられる第２のサブネットワークの一部である複数のコンピューティングノードの第２のサブセットを有するためなど、仮想コンピュータネットワークの複数のコンピューティングノードの指定された配置と、特定のコンピューティングノードを各々支援するため、および／または、特定の示された機能を実行するためなど、仮想コンピュータネットワークの一部として動作するためである１つ以上の指定されたネットワークルータ装置または他のネットワーキング装置等。
【００１１】
ＯＮＭシステムは、特定の仮想コンピュータネットワークのために指定されるネットワークトポロジーを支援するために様々な動作を行うことができる。具体的には、少なくともいくつかの実施形態において、ＯＮＭシステムは、指定されたネットワークトポロジーのいくつかまたはすべてを物理的に実装することなく、仮想コンピュータネットワークのための指定されたネットワークトポロジーに対応する論理ネットワーキング機能をエミュレートすることができる。一例として、ＯＮＭシステムは、複数の通信管理モジュールを用いて、仮想コンピュータネットワークに対して物理的に実装され、通信の経路を選択する、または別様に通信を転送するために用いられれば、ネットワークトポロジーの１つ以上の指定されたネットワーキング装置によって提供されるであろう機能をエミュレートするように、仮想コンピュータネットワークのコンピューティングノードによって（およびコンピューティングノードに）送信された通信を透過的に管理することができる。更に、ＯＮＭシステムは、複数の通信管理モジュールを用いて、ネットワーク接続状況の確認（ｐｉｎｇ）要求やＳＮＭＰ（「単純ネットワーク管理プロトコル」）クエリなどに応答するためなど、ローカル物理的ネットワーキング装置の方式でコンピューティングノードによってなされたネットワーキング要求に対する応答をエミュレートすることができる。このようにして、ＯＮＭシステムは、仮想コンピュータネットワークのための指定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供できるが、仮想コンピュータネットワーク（または関連づけられるユーザまたは他の実体）が、指定されたネットワークトポロジーが仮想コンピュータネットワークのために物理的に実装されていないことを認識することはない。更に、よりいっそう詳細に以下で記述されるように、少なくともいくつかの実施形態において、いかなる単一のモジュールまたは物理デバイスも単独で特定の論理ネットワーキング装置をエミュレートするために関与することがないように、ＯＮＭシステムの複数のモジュールは、特定の論理ネットワーキング装置に対応する機能性を提供するために分散した方式で相互に動作してもよい。指定された設定情報に従って、仮想コンピュータネットワークのために論理ネットワーキング機能を提供することに関する付加的な詳細は、以下に含まれる。
【００１２】
少なくともいくつかの実施形態において、その間で通信が管理されるコンピューティングノードは、物理的コンピューティングシステムであってもよく、および／または、１つ以上の物理的コンピューティングシステム上で各々提供されるバーチャルマシンであってもよく、通信は、様々な形式のデータ伝送（例えば、メッセージ、パケット、フレーム、ストリーム、等）を含み得る。上述のように、特定の提供されるオーバーレイ仮想コンピュータネットワークのために用いられる、いくつかまたはすべてのコンピューティングノードは、いくつかの実施形態においては、ＯＮＭシステムによって、ユーザが使用するために提供され得るが、他の実施形態では、いくつかまたはすべてのこのようなコンピューティングノードが、それらのコンピューティングノードを用いるユーザによって代りに提供され得る。更に、少なくともいくつかの状況において、ＯＮＭシステムの実施形態は、プログラム実行サービス（または「ＰＥＳ」）の一部または傘下にあってもよく、ＰＥＳは、複数の物理ネットワーク（例えば、データセンタ内の複数の物理的コンピューティングシステムおよびネットワーク）上の複数のコンピューティングシステムを用いるプログラム実行サービスなど、サービスの複数の顧客または他のユーザのために複数のプログラムを実行する。少なくともいくつかのこのような実施形態において、コンピューティングノードが属する仮想コンピュータネットワークは、ユーザまたは他の実体のためにプログラムを実行するコンピューティングノードに基づくなど、関連づけられるユーザに基づいて選択されてもよい。さらに、いくつかの状況において、ＯＮＭシステムの実施形態は、設定可能なネットワークサービス（または「ＣＮＳ」）の一部またはそうでなければ傘下にあってもよく、ＣＮＳは、複数の物理ネットワーク（例えば、データセンタ内の複数の物理的コンピューティングシステムおよびネットワーク）上で提供される複数のコンピューティングシステムで、クラウドコンピューティング技術を用いることによってなど、サービスの複数の顧客または他のユーザに対して設定可能な非公開のコンピュータネットワークを提供する。
【００１３】
上述のように、仮想コンピュータネットワークは、いくつかの実施形態において、基盤ネットワークとして１つ以上の中間物理ネットワークを用いるオーバーレイネットワークとして提供されてもよく、１つ以上のこのようなオーバーレイ仮想コンピュータネットワークを様々な実施形態における様々な方法で基盤ネットワーク上で実現することができる。例えば、少なくともいくつかの実施形態において、オーバーレイ仮想コンピュータネットワークのノード間の通信は、１つ以上の中間物理ネットワークのネットワークプロトコルのために用いられるより大規模の物理ネットワークアドレス空間において、仮想コンピュータネットワークのコンピューティングノードのための仮想ネットワークアドレス情報（例えば、送信先コンピューティングノードの仮想ネットワークアドレス）を組み込むことによってなど、通信をカプセル化することなく、基盤ネットワーク上にそれら通信を送ることにより管理される。１つの例示として、仮想コンピュータネットワークは、３２ビットのＩＰｖ４ネットワークアドレスを用いて実行されてもよく、それらの３２ビットの仮想ネットワークアドレスは、（例えば、処理状態を把握しないＩＰ／ＩＣＭＰトランスレーション、またはＳＮＴを用いて）通信パケットまたは他のデータ伝送をリヘッダリングする（ｒｅｈｅａｄｅｒｉｎｇ）ことによって、またはそうでなければそれらのために設定された第１のネットワークプロトコルから別の第２のネットワークプロトコルに変換するように、このようなデータ伝送を変更することによってなど、１つ以上の中間物理ネットワークによって用いられる１２８ビットのＩＰｖ６ネットワークアドレスの一部として組み込まれてもよい。別の例示として、同一のネットワークアドレッシングプロトコル（例えばＩＰｖ４またはＩＰｖ６）を用いて仮想コンピュータネットワークおよび基盤コンピュータネットワークの双方が実現されてもよいし、仮想ネットワークアドレスを用いて提供されるオーバーレイ仮想コンピュータネットワークを介して送信されるデータ伝送が、伝送が基盤ネットワーク上に送信されている間に、基盤ネットワークに対応する様々な物理ネットワークアドレスを用いるように変更され得るが、元の仮想ネットワークアドレスは、変更されたデータ伝送において格納され、またはそうでなければ基盤ネットワークを出る場合にデータ伝送がオリジナルの形式に復元され得るように追跡される。他の実施形態において、オーバーレイコンピュータネットワークの少なくともいくつかは、通信のカプセル化を用いて実現されてもよい。ＳＩＩＴに関する更なる詳細は、その全体が参考されることにより援用される「コメント要求２７６５−処理状態を把握しないＩＰ／ＩＣＭＰ変換アルゴリズム」２０００年２月、tools<dot>ietf<dot>org<slash>html<slash>rfc2765（tools.ietf.org/html/rfc2765）（ここで〈.〉および〈/〉はそれらの名前を持った対応する文字と置き換えられる）にて得ることができる。より一般的には、いくつかの実施形態において、第２の基盤ネットワークを用いて、第１のオーバーレイネットワークを実現する場合、第１のネットワークアドレッシングプロトコルによる第１のオーバーレイネットワークのために指定されるＮ��ットネットワークアドレスは、第２のネットワークアドレッシングプロトコルによる第２の基盤ネットワークのために指定される別のＭビットネットワークアドレスの一部として組み込まれてもよい。ここで「Ｎ」および「Ｍ」は、ネットワークアドレッシングプロトコルに対応する任意の整数である。さらに、少なくともいくつかの実施形態において、Ｎビットネットワークアドレスは、例えば、もし対象とするＮビットネットワークアドレスのグループがより小さなビット数を用いて表わし得る場合（例えば、Ｌビットのラベルまたは識別子が、特定のＮビットネットワークアドレスに対してマッピングされており、別のネットワークアドレスに組み込まれ、「Ｌ」は「Ｎ」未満である場合）などでは、別のネットワークアドレスに、その別のネットワークアドレスのＮビットよりも多い、または少ないビット数を使用して組み込まれてもよい。
【００１４】
様々な利益が、よりいっそう詳細に以下で論じられるように、通信をカプセル化せず、または物理的基盤ネットワークの物理的ネットワーキング装置を設定せずに、物理的基盤ネットワーク上での仮想コンピュータネットワークのオーバーレイを可能にすることを含む、下層にある物理的基盤ネットワークのための基盤ネットワークアドレスに仮想ネットワークアドレス情報を組み込むことから得られ得る。更に、他の情報を、コンピューティングノード間の通信のために、少なくともいくつかの実施形態および状況において、より大規模な物理ネットワークアドレススペースに同様に組み込むことができ、その情報には、それらのコンピューティングノードを含む特定の仮想コンピュータネットワーク（例えば、ユーザまたは他の実体のための仮想コンピュータネットワークであって、それらのコンピューティングノードがそのユーザまたは実体のために動作するもの）に対する特有の識別子などが含まれる。オーバーレイネットワークの使用を介した、このような仮想コンピュータネットワークの提供に関する更なる詳細な記述は、以下に含まれる。
【００１５】
更に、提供される仮想コンピュータネットワークのための設定されたネットワークトポロジーの管理に加えて、ＯＮＭシステムは、記載される技術を用いて、様々な状況で、他の様々な利益を提供することができ、それは、同じ仮想コンピュータネットワークに属する他のコンピューティングノードに対する特定の仮想コンピュータネットワークのコンピューティングノードへのおよび／またはコンピューティングノードからの通信を限定することなどである。このようにして、複数の仮想コンピュータネットワークに属するコンピューティングノードが、１つ以上の中間物理ネットワークの一部を共有でき、その一方で特定の仮想コンピュータネットワークのコンピューティングノードのためのネットワーク隔離をなお維持することができる。さらに、記載された技術の使用によって、ユーザが仮想コンピュータネットワークのサイズを動的に変更すること（例えば、より多い、またはより少ないコンピューティング資源に対する現在の必要量を反映するようにコンピューティングノードの量を動的に変更すること）を可能にすることなどのように、コンピューティングノードを容易に仮想コンピュータネットワークに追加するおよび／または仮想コンピュータネットワークから削除できるようになる。更に、記載された技術の使用はまた、下層にある基盤ネットワークへの変更を支援する。例えば、下層にある基盤ネットワークが更なる地理的な位置で更なるコンピューティングノードを含むように拡張される場合、下層にある基盤ネットワークが、他の既存の基盤ネットワークコンピューティングノードと同一の方式でそれらの追加のコンピューティングノードのための基盤ネットワークアドレスへのおよび基盤ネットワークアドレスからの通信をルーティングするので、提供されている既存のまたは新たな仮想コンピュータネットワークは、シームレスにそれらの追加のコンピューティングノードを用いることができる。少なくともいくつかの実施形態において、下層にある基盤ネットワークは、様々な位置でのコンピューティングノード間のネットワーク待ち時間に関係なく、任意の大きさ（例えば、複数の国々または大陸にわたる）であってもよい。
【００１６】
例示の目的のために、特定の種類のコンピューティングノード、ネットワーク、通信、ネットワークトポロジーおよびコンフィギュレーション動作が実行される、いくつかの実施形態が以下に記載される。これらの例は、例示の目的のために提供され、簡潔さのために簡易化されている。また、本発明の技術は、様々な他の状況で用いることができ、それらのいくつかは以下で論じられる。
【００１７】
図１は、仮想コンピュータネットワークに属するコンピューティングノード間の通信を設定および管理する実施形態の例を図示するネットワーク図であり、通信は、コンピューティングノードに対して透過的に、１つ以上の中間物理ネットワーク上にオーバーレイされる。この例で、通信の設定および管理は、ＯＮＭシステムの例の実施形態のシステム管理モジュールおよび多重通信管理モジュールによって容易になる。この例のＯＮＭシステムは、例えば、公にアクセス可能なプログラム実行サービス（図示せず）および／または公にアクセス可能で設定可能なネットワークサービス（図示せず）と協働して用いられてもよい。またはその代りに、１つ以上の実体のための、任意の仮想コンピュータネットワークの使用と共に等（例えば企業または他の組織の異なる部署のための、その組織のプライベートネットワーク上の複数の仮想コンピュータネットワークをサポートすること等）、他の状況で用いることができる。
【００１８】
図示する例は、ＯＮＭシステムのために運用される複数の物理的コンピューティングシステムを有する例示のデータセンタ１００を含む。例示のデータセンタ１００は、データセンタ１００の外部のグローバルインターネット１３５に接続される。データセンタ１００は、プライベートネットワーク１４０を介して１つ以上のコンピューティングシステム１４５ａに、各々が複数のコンピューティングシステム（図示せず）を有する１つ以上の他のグローバルにアクセス可能なデータセンタ１６０に、および１つ以上の他のコンピューティングシステム１４５ｂに、アクセスを提供する。グローバルインターネット１３５は、例えば、インターネットなどのような（恐らく様々な別の当事者によって運用される）ネットワークの公にアクセス可能なネットワークであり得、プライベートネットワーク１４０は、例えば、プライベートネットワーク１４０に対して、その外部のコンピューティングシステムから完全にまたは部分的にアクセス不能な企業ネットワークであり得る。コンピューティングシステム１４５ｂは、例えば、（例えば、電話回線、ケーブルモデム、デジタル加入者回線（「ＤＳＬ」）、セルラーネットワークまたは他の無線接続等を介して）インターネットに各々が直接接続するホームコンピューティングシステムまたはモバイルコンピューティング装置であり得る。
【００１９】
例示のデータセンタ１００は、複数の物理的コンピューティングシステム１０５ａ〜１０５ｄおよび１５５ａ〜１５５ｎ、ならびに、関連するコンピューティングシステム１５５ａ〜１５５ｎのための通信を管理するために１つ以上の他のコンピューティングシステム（図示せず）上で実行される通信管理モジュール１５０と、１つ以上のコンピューティングシステム（図示せず）上で実行されるシステム管理モジュール１１０とを含む。この例では、物理的コンピューティングシステム１０５ａ〜１０５ｄは、各々多重仮想記憶コンピューティングノードのホストとして動作し、関連する仮想マシン（「ＶＭ」）通信管理モジュールを（例えば、物理的コンピューティングシステムのための仮想マシンハイパーバイザーモニタの一部として）含み、例えばホストコンピューティングシステム１０５ａ上にはＶＭ通信管理モジュール１０９ａおよび仮想マシン１０７ａなどを含み、ホストコンピューティングシステム１０５ｄ上にはＶＭ通信管理モジュール１０９ｄおよび仮想マシン１０７ｄなどを含む。物理的コンピューティングシステム１５５ａ〜１５５ｎは、この例では、いかなる仮想マシンをも実行せず、したがって、その各々は、ユーザのために１つ以上のソフトウエアプログラムを直接実行するコンピューティングノードとして機能することができる。関連するコンピューティングシステム１５５ａ〜１５５ｎのための通信を管理する通信管理モジュール１５０は、例えば、プロキシコンピュータ装置、ファイアウォール装置、またはネットワーキング装置（例えば、スイッチ、ルータ、ハブ、等）などの様々な形式を有し得、それを介して物理的コンピューティングシステムに、およびそれから通信が伝わる。他の実施形態において、データセンタにおける物理的コンピューティングシステムの全てが仮想マシンのホストとして動作してもよく、全てが動作しなくてもよい。
【００２０】
この例示のデータセンタ１００は、さらにスイッチ１１５ａ〜１１５ｂ、エッジルータ装置１２５ａ〜１２５ｃ、およびコアルータ装置１３０ａ〜１３０ｃなどのような、複数の物理的ネットワーキング装置を含む。スイッチ１１５ａは、物理的コンピューティングシステム１０５ａ〜１０５ｃを含む物理的サブネットワークの一部であり、エッジルータ１２５ａに接続される。スイッチ１１５ｂは、物理的コンピューティングシステム１０５ｄおよび１５５ａ〜１５５ｎ、ならびに通信管理モジュール１５０およびシステム管理モジュール１１０を提供するコンピューティングシステムを含む別の物理的サブネットワークの一部であり、エッジルータ１２５ｂに接続される。スイッチ１１５ａ〜１１５ｂによって確立された物理的サブネットワークは、次いで、エッジルータ１２５ａ〜１２５ｃおよびコアルータ１３０ａ〜１３０ｃを含む中間相互接続ネットワーク１２０を介して互いにおよび他のネットワーク（例えば、グローバルインターネット１３５）に接続される。エッジルータ１２５ａ〜１２５ｃは、２つ以上のサブネットワークまたはネットワークの間のゲートウエイを提供する。例えば、エッジルータ１２５ａは、スイッチ１１５ａによって確立された物理的サブネットワークと相互接続ネットワーク１２０との間のゲートウエイを提供し、一方エッジルータ１２５ｃは相互接続ネットワーク１２０とグローバルインターネット１３５との間のゲートウエイを提供する。コアルータ１３０ａ〜１３０ｃは、相互接続ネットワーク１２０内の通信を、このようなデータ伝送の特性（例えば、ソースおよび／または送信先アドレス、プロトコル識別子、等を含むヘッダ情報）および／または相互接続ネットワーク１２０それ自体の特性（例えば、物理ネットワークトポロジー等に基づいてルーティングする）に基づいて、必要に応じて経路を選択するまたはそうでなければパケットまたは他のデータ伝送を転送することによるなどして管理する。
【００２１】
図示するシステム管理モジュールおよび通信管理モジュールは、関連するコンピューティングノードに（から）送信される通信を設定し、権限を与え、また別様に管理するために、記載された技術のいくつかを少なくとも実行することができ、それには、コンピューティングノードの様々なものを使用して提供される１つ以上の仮想コンピュータネットワークのための様々な論理ネットワーキング機能を提供することを支援することを含む。例えば、通信管理モジュール１０９ａは、関連する仮想マシンコンピューティングノード１０７ａを管理する。通信管理モジュール１０９ｄは、関連される仮想マシンコンピューティングノード１０７ｄを管理する。そして、他の通信管理モジュールの各々は、１つ以上の他の関連するコンピューティングノードのグループのための通信を同様に管理することができる。図示する通信管理モジュールは、相互接続ネットワーク１２０上などの基盤ネットワークとして用いられる、１つ以上の中間物理ネットワーク上に特定の仮想ネットワークをオーバーレイするようにコンピューティングノード間の通信を設定してもよい。更に、特定の仮想ネットワークは、例えば、１つ以上の他のデータセンタ１６０がまたＯＮＭシステムの例による使用のために利用可能なコンピューティングノードを提供し、特定の仮想ネットワークが、２つ以上の別の地理的な位置の２つ以上のこのようなデータセンタでコンピューティングノードを含むならば、状況に応じていくつかの実施形態におけるデータセンタ１００を越えて拡張されてもよい。このような複数のデータセンタ、または１つ以上のコンピューティングノードの他の地理的な位置は、１つ以上の公衆網を直接介して、（図示されていない）私的な接続（例えばいかなる第三者、ＶＰＮ、または公衆網等上で私的な接続を提供する他のメカニズムとも共有されない専用の物理的接続）を介して、などを含む様々な方式で相互接続されてもよい。さらに、ここでは図示されないが、他のこのようなデータセンタまたは他の地理的な位置は、そのデータセンタまたは他の地理的な位置上でコンピューティングシステムのための通信を管理する１つ以上の他の通信管理モジュール、ならびにデータセンタ１００および他の任意のこのようなデータセンタ１６０へのグローバルインターネット１３５を各々含んでもよい。
【００２２】
さらに、特定の仮想コンピュータネットワークは、例えば、データセンタ１００での１つ以上の他の通信管理モジュールが、エッジルータ１２５ｃとグローバルインターネット１３５との間に配置される、またはその代りに、データセンタ１００の外部の１つ以上の他の通信管理モジュールに基づくならば（例えば、グローバルインターネット１３５およびプライベートネットワーク１４０上でコンピューティングシステム１４５ａのための通信を管理するように、別の通信管理モジュールがプライベートネットワーク１４０の一部になるならば）、他の実施形態における他の方式にデータセンタ１００を越えて状況に応じて拡張されてもよい。したがって、例えば、プライベートネットワーク１４０を運用する組織がデータセンタ１００のコンピューティングノードの１つ以上にその私的なコンピュータネットワーク１４０を仮想的に拡張することを要望する場合、プライベートネットワーク１４０の一部として（例えば、プライベートネットワーク１４０とグローバルインターネット１３５との間のインタフェースの一部として）１つ以上の通信管理モジュールを実行することにより、そのようにすることができる。このようにして、プライベートネットワーク１４０内のコンピューティングシステム１４５ａは、それらのデータセンタコンピューティングノードがプライベートネットワークの一部であるかのように、それらのデータセンタコンピューティングノードと通信することができる。
【００２３】
したがって、１つの例示として、コンピューティングシステム１０５ａ上の仮想マシンコンピューティングノード１０７ａの１つ（この例では、仮想マシンコンピューティングノード１０７ａ１）は、仮想ローカルネットワークのための仮想ネットワークアドレスを表わすために用いられるＩＰｖ４ネットワークプロトコルによるなどして、コンピューティングシステム１０５ｄ上の仮想マシンコンピューティングノード１０７ｄの１つ（この例では、仮想マシンコンピューティングノード１０７ｄ１）同一の仮想ローカルコンピュータネットワークの一部であってもよい。そして、仮想マシン１０７ａ１は、その送信先仮想マシンコンピューティングノードのための仮想ネットワークアドレスを指定することによるなどして、送出方向の通信（図示せず）を送信先仮想マシンコンピューティングノード１０７ｄ１に方向づけてもよい。通信管理モジュール１０９ａは、送出方向の通信を受信し、少なくともいくつかの実施形態において、送信元仮想マシンコンピューティングノード１０７ａ１および／または送信先仮想マシンコンピューティングノード１０７ｄ１に関してあらかじめ取得された情報（例えば、コンピューティングノードが関連づけられる仮想ネットワークおよび／または実体に関する情報）に基づいて、および／またはシステム管理モジュール１１０と動的に対話することによる（例えば、認証判定を取得するために、いくつかまたはすべてのこのような情報を取得するために、など）などのように、送出方向の通信の送信に権限を与えるべきか否かを判定する。コンピューティングノードに対して無許可の通信を送らないことによって、実体の仮想コンピュータネットワークのネットワーク隔離およびセキュリティが向上される。
【００２４】
権限が送出方向の通信に与えられることを通信管理モジュール１０９ａが判定する（または、このような認証判定を実行しない）場合、モジュール１０９ａは、通信のための送信先仮想ネットワークアドレスに対応する実際の物理ネットワーク位置を決定する。例えば、通信管理モジュール１０９ａは、システム管理モジュール１１０と動的に対話することにより、送信先仮想マシン１０７ｄ１の仮想ネットワークアドレスのために用いる実際の送信先ネットワークアドレスを決定してもよいし、または（例えば、仮想マシン１０７ａ１がアドレス解決プロトコルまたはＡＲＰを用いて指定する要求などのような、その送信先仮想ネットワークアドレスに関する情報のための送信元仮想マシン１０７ａ１からの要求に応じて）その情報をあらかじめ判定して格納していてもよい。そして、通信管理モジュール１０９ａは、例えば、通信管理モジュール１０９ｄがある範囲の複数のこのような実際の基盤ネットワークアドレスに関連づけられる場合など、実際の基盤ネットワークアドレスを用いて通信管理モジュール１０９ｄに方向づけるように、再ヘッダ化（re-header）する、または別様に送出方向の通信を変更する。図２Ａ〜図２Ｄは、仮想ネットワークのために指定された論理ネットワーキング機能をエミュレートすることを含む、いくつかの実施形態におけるこのような通信管理を行う例を提供する。
【００２５】
通信管理モジュール１０９ｄがこの例において相互接続ネットワーク１２０を介して通信を受信する際、通信のための仮想送信先ネットワークアドレスを（例えば、通信から仮想送信先ネットワークアドレスを抽出することにより）取得し、通信が方向づけられる通信管理モジュール１０９ｄによって管理された仮想マシンコンピューティングノード１０７ｄを決定する。通信管理モジュール１０９ｄは、次に、送信先仮想マシンコンピューティングノード１０７ｄ１のために権限が通信に与えられるか否かを決定する。このような認証動作の例を図２Ａ〜図２Ｄの例において詳述に論じる。権限が与えられると通信が判定する（または、通信管理モジュール１０９ｄはこのような認証判定を実行しない）ならば、仮想コンピュータネットワークのための適合する仮想ネットワークアドレスを用いて送信先仮想マシンコンピューティングノード１０７ｄ１に方向づけられるように、通信管理モジュール１０９ｄは、送信元仮想マシンコンピューティングノード１０７ａ１の仮想ネットワークアドレスをソースネットワークアドレスとして用いることによって、および送信先仮想マシンコンピューティングノード１０７ｄ１の仮想ネットワークアドレスを送信先ネットワークアドレスとして用いることによるなどして、受入方向の通信を再ヘッダ化する、または別様に変更する。そして、通信管理モジュール１０９ｄは、送信先仮想マシンコンピューティングノード１０７ｄ１に、変更された通信を転送する。少なくともいくつかの実施形態において、送信先仮想マシンに受入方向の通信を転送する前に、通信管理モジュール１０９ｄはまた、よりいっそう詳細に他のところで論じられるように、セキュリティと関連する更なるステップを実行してもよい。
【００２６】
さらに、図１には図示されていないが、いくつかの実施形態において、様々な通信管理モジュールは、指定された方式で仮想コンピュータネットワークのコンピューティングノード間の通信を管理することにより、および仮想コンピュータネットワークのコンピューティングノードによって送信された他の型の要求に応答することによるなどして、仮想コンピュータネットワークのための指定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供するために更なる動作をし得る。例えば、図１の実施形態の例では相互接続ネットワーク１２０によって物理的コンピューティングシステム１０５ａ上のコンピューティングノード１０７ａ１から分離されているが、物理的コンピューティングシステム１０５ｄ上の仮想マシンコンピューティングノード１０７ｄ１は、コンピューティングノード１０７ａ１と同一の仮想コンピュータネットワークの論理的サブネットワークの一部であるように（例えば、いかなる指定された論理ルータ装置によっても分割されないように）設定されてもよい。逆に、図１の実施形態の例の物理的コンピューティングシステム１０５ａ上の仮想マシンコンピューティングノード１０７ａ１に対する物理的コンピューティングシステム１０５ｃ上の仮想マシンコンピューティングノード１０７ｃ１の物理的近接（すなわち、物理的ルータ装置を介在せずに同一の物理的サブネットワークの一部である）にもかかわらず、コンピューティングノード１０７ｃ１は、コンピューティングノード１０７ａ１とは異なる仮想コンピュータネットワークの別個の論理的サブネットワークの一部であるように設定されてもよい（例えば、１つ以上の論理的な指定されたルータ装置（図示せず）によって分割されるように設定されてもよい）。もしそうであれば、コンピューティングノード１０７ａ１および１０７ｄ１は、指定されたネットワークトポロジー内の単一のサブネットワークの一部であるように設定されるので、コンピューティングノード１０７ａ１からコンピューティングノード１０７ｄ１に通信を送信する先の例は、いかなる介在する論理的ルータ装置の機能のエミュレートをもせずに（通信を転送するための基盤相互接続ネットワーク１２０内の複数の物理的ルータ装置の使用にもかかわらず）、先に記載された方式で実行され得る。
【００２７】
しかしながら、コンピューティングノード１０７ａ１はコンピューティングノード１０７ｃ１に追加の通信を送信する場合、ホストコンピューティングシステム１０５ａおよび１０５ｃ上の通信管理モジュール１０９ａおよび／または１０９ｃは、コンピューティングノード１０７ａ１および１０７ｃ１を分割するために指定されたネットワークトポロジーで設定された１つ以上の論理的な指定されたルータ装置に対応する付加的な機能を実行してもよい。例えば、ソースコンピューティングノード１０７ａ１は、コンピューティングノード１０７ａ１に対してローカルであるように設定される第１の論理的な指定されたルータ装置に対して最初にそれを方向づけるような（例えば、第１の論理的な指定されたルータ装置に対応する追加の通信のヘッダにおいて仮想ハードウェアアドレスを含むことによって）、方式で、追加の通信を送信してもよく、第１の論理的な指定されたルータ装置は、指定された論理的ネットワークトポロジーを介して送信先コンピューティングノード１０７ｃ１に向かって追加の通信を転送することが要求される。その場合、ソース通信管理モジュール１０９ａは、（例えば、追加の通信のヘッダに用いられる仮想ハードウェアアドレス上に基づいて）論理的な第１のルータ装置に追加の通信の転送を検出してもよいし、そうでなければ、仮想コンピュータネットワークのために設定されたネットワークトポロジーを認識して、コンピューティングノード１０７ａ１および１０７ｃ１を分割するために指定されたネットワークトポロジーで設定される論理的な指定されたルータ装置のいくつかまたはすべての機能性をエミュレートするように動作を行うことができる。例えば、追加の通信を転送する各々の論理的ルータ装置は、通信のためのＴＴＬ（「有効期限」）ホップ値を変更する、送信先コンピューティングノードへの経路上で追加の通信の次に対象とする送信先を示すように通信のために指定される仮想送信先ハードウェアアドレスを変更する、および／またはそうでなければ通信ヘッダを変更するなどの動作を行うことが要求され得る。その場合、ソース通信管理モジュール１０９ａは、送信先コンピューティングノード１０７ｃ１への提供のための基盤ネットワーク上で（この場合、物理的スイッチデバイス１１５ａを介して）送信先通信管理モジュール１０９ｃに追加の通信を転送する前にそれらの機能のいくつかまたはすべてを実行してもよい。あるいは、送信された追加の通信のための論理ネットワーキング機能を提供するためのいくつかまたはすべてのこのような追加の機能は、追加の通信が通信管理モジュール１０９ａによって通信管理モジュールに１０９ｃ転送された後、送信先通信管理モジュール１０９ｃによってその代りに実行されてもよい。図２Ｃの例は、論理ネットワーキング機能を提供する例に関する更なる詳細な記述を提供する。
【００２８】
記載された技術を用いて論理ネットワーキング機能を提供することによって、ＯＮＭシステムは様々な利益を提供する。例えば、様々な通信管理モジュールがオーバーレイ仮想ネットワークを管理し、論理ネットワーキング装置をエミュレートすることができるので、指定されたネットワーキング装置および他のネットワークトポロジーは、提供されている仮想コンピュータネットワークのために物理的に実装される必要がなく、したがって、特定の構成されたネットワークトポロジーを支援するために相互接続ネットワーク１２０またはスイッチ１１５ａ〜１１５ｂに対して対応する変更は必要としない。それにもかかわらず、仮想コンピュータネットワークのコンピューティングノードおよびソフトウエアプログラムが、仮想コンピュータネットワークのための特定のネットワークトポロジーを要求するように設定されている場合、そのネットワークトポロジーの出現は、それにもかかわらず、記載された技術によってそれらのコンピューティングノードのために透過的に提供されてもよい。
【００２９】
図２Ａ〜図２Ｃは、図１または他の状況におけるコンピューティングノードおよびネットワークによって用いられ得るなどの、１つ以上の物理ネットワーク上でオーバーレイネットワークを介して生じるコンピューティングノード間の通信を管理することに関連した更なる説明の詳細な記述を含む例をさらに図示する。具体的には、図２Ａは、基盤ネットワークとして１つ以上の中間相互接続ネットワーク２５０を用いることにより、互いに通信できる様々なコンピューティングノード２０５および２５５の例を図示する。この例では、相互接続ネットワーク２５０は、ＩＰｖ４仮想コンピュータネットワークがオーバーレイされるＩＰｖ６基盤ネットワークであるが、他の実施形態においては相互接続ネットワーク２５０およびオーバーレイ仮想コンピュータネットワークは、同一のネットワークプロトコル（例えば、ＩＰｖ４）を用いてもよい。さらに、この実施形態の例において、コンピューティングノードは、複数の別の実体のために運用され、システム管理モジュール２９０は、特定のコンピューティングノードの特定の実体および仮想コンピュータネットワークとの関連を管理して、仮想コンピュータネットワークのために指定された様々な設定情報を追跡する。図２Ａの例示のコンピューティングノードは、例示の実体Ｚのために実行される４つのコンピューティングノードと、実体Ｚのために提供される対応する仮想コンピュータネットワークの一部を含み、それらコンピューティングノードは、コンピューティングノード２０５ａ、２０５ｃ、２５５ａおよび２５５ｂである。さらに、コンピューティングノード２０５ｂおよび他のコンピューティングノード２５５などのような他のコンピューティングノードが、他の実体のために運用され、他の提供される仮想コンピュータネットワークに属する。
【００３０】
この例においては、コンピューティングノード、モジュールおよび相互接続ネットワーク間の物理的相互連結は図示されないが、この例では、コンピューティングノード２０５は、関連する通信管理モジュールＲ２１０によって管理され物理的に接続され、コンピューティングノード２５５は、関連する通信管理モジュールＳ２６０によって管理され物理的に接続され、システム管理モジュール２９０と同様に、ＯＮＭ通信管理モジュール２１０および２６０は、相互接続ネットワーク２５０に対して物理的に接続される。一例として、コンピューティングノード２０５は各々、単一の物理的コンピューティングシステムによって提供される多重仮想記憶の１つであってもよく、通信管理モジュールＲは、その物理的コンピューティングシステムのためのハイパーバイザー仮想コンピュータモニタの一部であってもよい。例えば、図１に関連して、コンピューティングノード２０５は、仮想マシン１０７ａを表し得、コンピューティングノード２５５は、仮想マシン１０７ｄを表し得る。その場合、通信管理モジュールＲは、図１の通信管理モジュール１０９ａに対応し得、通信管理モジュールＳは、図１の通信管理モジュール１０９ｄに対応することとなり、相互接続ネットワーク２５０は、図１の相互接続ネットワーク１２０に対応することとなり、システム管理モジュール２９０は、図１のシステム管理モジュール１１０に対応することとなる。あるいは、コンピューティングノード２０５または２５５は各々、その代りに、図１のコンピューティングシステム１５５ａ〜１５５ｎ、または他のデータセンタまたは地理的な位置でのコンピューティングノードに対応するような、別の物理的コンピューティングシステム（例えば、別のデータセンタ１６０やコンピューティングシステム１４５ａなどでのコンピューティングシステム）であってもよい。
【００３１】
図２Ａの通信管理モジュールの各々は、（通信管理モジュールがそれらの関連づけられるコンピューティングノードに代わって管理する）複数の物理的基盤ネットワークアドレスのグループに関連づけられる。例えば、通信管理モジュールＲは、（２の５６乗のユニークなＩＰｖ６アドレスを表す）XXXX:XXXX:XXXX:XXXA:0100:0000:0000:0000からXXXX:XXXX:XXXX:XXXA:01FF:FFFF:FFFF:FFFFまでの（１６進の）１２８ビットのアドレスに対応する「::0A:01/72」のＩＰｖ６ネットワークアドレス範囲に関連づけられるように示される。ここで、各「X」は、特定の状況のための適切な任意の１６進の文字を表し得る（例えば、図２Ｄに関してよりいっそう詳細に論じられるように、最初の６４のビットは特定の組織およびネットワークトポロジーに対応する）。相互接続ネットワーク２５０は、その範囲内の送信先ネットワークアドレスで通信管理モジュールＲに任意の通信を転送する。したがって、最初の７２ビットの範囲を指定されると、通信管理モジュールＲは、管理するコンピューティングノードを表わし、かつ送信先ネットワークアドレスがその範囲にある受入方向の通信に対してどのように処理するのかを決定するために、残りの利用可能な５６ビットを用いることができる。
【００３２】
図２Ａに示される例を目的として、コンピューティングノード２０５ａ、２０５ｃ、２５５ａおよび２５５ｂは、実体Ｚのための単一の仮想コンピュータネットワークの一部であり、「10.0.0.2」「10.0.5.1」「10.0.0.3」「10.1.5.3」のＩＰｖ４仮想ネットワークアドレスをそれぞれ割り当てている。コンピューティングノード２０５ｂが実体Ｙのための別個の仮想コンピュータネットワークの一部であるので、コンピューティングノード２０５ａと同一の仮想ネットワークアドレスを混同しないで共有することができる。この例で、コンピューティングノードＡ２０５ａは、コンピューティングノードＧ２５５ａ（仮想コンピュータネットワークのためのネットワークトポロジーにおける単一で共通のローカル物理的サブネットワーク（図示せず）の一部であるようにこの例では設定される）と通信することを求め、この例における相互接続ネットワーク２５０および通信管理モジュールは、コンピューティングノードＡおよびＧに対して透過的である。具体的には、コンピューティングノードＡおよびＧの物理的分離にもかかわらず、通信管理モジュール２１０および２６０は、それらのコンピューティングノード間の通信のための物理相互接続ネットワーク２５０上で実体Ｚのための仮想コンピュータネットワークをオーバーレイするように動作する。その結果、実際のローカルネットワークの欠如は、コンピューティングノードＡおよびＧに対して透過的である。
【００３３】
コンピューティングノードＧに対して通信を送信するために、図示する実施形態において通信管理モジュールＲの存在を認識しないにもかかわらず（すなわち、コンピューティングノードＡは、ローカルサブネットワーク上のノードを接続することをコンピューティングノードＡが信じる指定されたスイッチ素子を介してなど、ローカルサブネットワーク上の他のすべてのノードに対してブロードキャストメッセージを送信していると信じる）、コンピューティングノードＡは、通信管理モジュールＲ２１０と各種メッセージ２２０を交換する。具体的には、この例では、コンピューティングノードＡは、第１に、コンピューティングノードＧのための仮想ネットワークアドレス（すなわち「10.0.0.3」）を含み、コンピューティングノードＧのための対応するハードウェアアドレス（例えば、４８ビットのＭＡＣアドレス）を要求するＡＲＰメッセージ要求２２０−ａを送信する。通信管理モジュールＲは、ＡＲＰ要求２２０−ａを傍受し、コンピューティングノードＧのための仮想ハードウェアアドレスを含むなりすましのＡＲＰ応答メッセージ２２０−ｂによりコンピューティングノードＡに対して応答する。
【００３４】
応答メッセージを使用するためにコンピューティングノードＧのための仮想ハードウェアアドレスを取得するために、通信管理モジュールＲは、まず、対応するＩＰｖ６の実際の物理的基盤ネットワークアドレスに対して仮想ハードウェアアドレスをマッピングする情報のローカルストレージ２１２をチェックするが、仮想ハードウェアアドレスの各々は、特定の要素の仮想ネットワークのためのＩＰｖ４仮想ネットワークアドレスにも対応する。ローカルストレージ２１２がコンピューティングノードＧのためのエントリを含んでいないならば（例えば、コンピューティングノード２０５のどれもが以前にコンピューティングノードＧと通信していないならば、関連づけられる終了時刻などに基づいて、コンピューティングノードＧのためのローカルストレージ２１２内の前の入力が終了しているならば）、通信管理モジュールＲは、コンピューティングノードＡのためにコンピューティングノードＧのための対応する実際のＩＰｖ６物理的基盤ネットワークアドレスを取得するためのシステム管理モジュール２９０と対話する（２２５）。具体的には、この例では、システム管理モジュール２９０は、例えば、要素および仮想コンピュータネットワークのためのコンピューティングノード上のプログラムを実行することを開始によって、またはそうでなければこのような提供情報を取得することによって、各コンピューティングノードが現実に位置するところと、コンピューティングノードが、どの実体および／または仮想コンピュータネットワークに属するかを特定する提供情報２９２を保持する。図２Ｂに関してよりいっそう詳細に論じられるように、システム管理モジュールは、コンピューティングノードＧの実際のＩＰｖ６物理的基盤ネットワークアドレスに対するコンピューティングノードＡのための通信管理モジュールＲからの要求が有効であるか否か（コンピューティングノードＡは、コンピューティングノードＧと通信することを認証されるか否かを含む）を決定して、そうである場合、実際のＩＰｖ６物理的基盤ネットワークアドレスを提供する。
【００３５】
通信管理モジュールＲは、システム管理モジュール２９０からコンピューティングノードＧのための実際のＩＰｖ６物理的基盤ネットワークアドレスを受信し、後の使用のために（状況に応じて終了時刻および／または他の情報により）マッピング情報２１２の一部としてのコンピューティングノードＧのための新たなエントリの一部として、この受信情報を格納する。さらに、この例で、通信管理モジュールＲは、（例えば、通信管理モジュールＲによって管理されるコンピューティングノードに対してローカルでユニークな識別子を生成することにより）コンピューティングノードＧのために用いられるダミーの仮想ハードウェアアドレスを決定し、新たなマッピング情報エントリの一部として受信される実際のＩＰｖ６物理的基盤ネットワークアドレスと共にそのダミーの仮想ハードウェアアドレスを格納し、応答メッセージ２２０−ｂの一部としてコンピューティングノードＡに対してダミーの仮想ハードウェアアドレスを提供する。このようなマッピング情報２１２を維持することによって、コンピューティングノードＡからコンピューティングノードＧへの後の通信が、システム管理モジュール２９０とのさらなる対話を伴わないで、通信管理モジュールＲによって以前に提供されたダミーの仮想ハードウェアアドレスの使用に基づいて、通信管理モジュールＲによって認証され得る。他の実施形態において、コンピューティングノードＧのために通信管理モジュールＲによって用いられるハードウェアアドレスは、例えば、システム管理モジュール２９０が様々なコンピューティングノード（例えば、仮想マシンコンピューティングノードに対して割り当てられた仮想ハードウェアアドレス、コンピューティングノードとして機能するコンピューティングシステムに対して割り当てられた実際のハードウェアアドレス、など）によって用いられるハードウェアアドレスに関して情報をさらに維持し、対話２２５の一部としてコンピューティングノードＧによって用いられるハードウェアアドレスを通信管理モジュールＲに対して提供するならば、その代りにダミーアドレスではなくてもよい。このような実施形態において、異なる仮想ネットワーク上のコンピューティングノードが同一の仮想ハードウェアアドレスを用いるならば、通信管理モジュールＲは、コンピューティングノードハードウェアアドレスおよび仮想コンピュータネットワークの各々の組み合わせを対応する基盤ネットワークアドレスにマッピングするように機能することができる。
【００３６】
他の実施形態において、通信管理モジュールＲは、実体Ｚの仮想コンピュータネットワークの一部として仮想ネットワークアドレス「１０．０．０．３」を用いてコンピューティングノードＧに対して方向づけられる任意の受信される通信に応じてなどの、ＡＲＰ要求ノ受信時以外の時点で、コンピューティングノードＧのための物理的基盤ネットワークアドレスを取得するために、または別様に、このような物理的基盤ネットワークアドレスを決定するために、システム管理モジュール２９０と対話することができる。さらに、他の実施形態において、用いられる仮想ハードウェアアドレスは、仮想ハードウェアアドレスがシステム管理モジュール２９０によって指定される場合、仮想ハードウェアアドレスがランダムでなく、その代りに、対応するコンピューティングノードに対して特有の１つ以上の型の情報を格納するなどの場合、この例と異なってもよい。さらに、この例で、システム管理モジュール２９０および／または通信管理モジュールＲにより、コンピューティングノードＧ１に対して通信を送信することを認証されることをコンピューティングノードＡが決定していなければ、通信管理モジュールＲは、仮想ハードウェアアドレスとともに応答メッセージ２２０−ｂを送信することはない（例えば、その代りに、応答を送信しない、またはエラーメッセージ応答を送信する）。
【００３７】
この例で、対話２２５におけるコンピューティングノードＧに対応する返されたＩＰｖ６の実際の物理的基盤ネットワークアドレスは、「::0B:02:<Z-identifier>:10.0.0.3」である。ここで、「10.0.0.3」は１２８ビットのＩＰｖ６アドレスの最終の３２ビットに格納され、「<Z-identifier>」は実体Ｚのための仮想コンピュータネットワークに対応するコンピューティングノードＧのための２４ビットの要素ネットワーク識別子である（例えば、乱数または実体に対応する他の数字を反映するためにシステム管理モジュールによってそのネットワークに対して以前に割り当てられたように）。ＩＰｖ６ネットワークアドレスの最初の７２ビットは、通信管理モジュールＳが対応する「::0B:02/72」のネットワークアドレス範囲の、サブネットワークまたは相互接続ネットワークの他の一部に対して対応する、「::0B:02」の指定を格納する。したがって、ＩＰｖ６送信先ネットワークアドレス「::OB:02:<Z-identifier>:10.0.0.3」に対する相互接続ネットワーク２５０上に送信された通信は、通信管理モジュールＳに対してルーティングされる。他の実施形態において、実体のネットワーク識別子は、別の長さ（例えば、通信管理モジュールＳが５６ビットではなく６４ビットの関連するネットワークアドレス範囲を有しているならば、３２ビットである）であってもよいし、および／または、他の形式を有してもよいし（例えば、ランダムであってもよいし、情報の各種を格納してもよい、など）、「::0B:02」の指定の後のネットワークアドレス範囲のために用いられる残りの５６ビットは、他の種類の情報（例えば、特定の実体ための識別子、仮想ネットワークのためのタグまたはラベル、など）を格納してもよい。オーバーレイ仮想コンピュータネットワークでの用途のために設定されたＩＰｖ６の実際の物理ネットワークアドレスの例と関連する追加の詳細な記述は、図２Ｄに関して記載される。
【００３８】
通信管理モジュールＲから応答メッセージ２２０−ｂを受信した後に、コンピューティングノードＡは、通信２２０−ｃとして図２Ａに示される、コンピューティングノードＧへの通信の送信を生成して開始する。具体的には、通信２２０−ｃのヘッダは、「10.0.0.3」である送信先コンピューティングノードＧのための送信先ネットワークアドレスと、メッセージ２２０−ｂ内のコンピューティングノードＡに対して提供された仮想ハードウェアアドレスである送信先コンピューティングノードＧのための送信先ハードウェアアドレスと、「10.0.0.2」であるコンピューティングノードＡを送信するためのソースネットワークアドレスと、以前にコンピューティングノードＡに対して識別された現実またはダミーのハードウェアアドレスであるコンピューティングノードＡを送信するためのソースハードウェアアドレスとを含む。コンピューティングノードＡは、コンピューティングノードＧがそれ自体と同一のローカルのサブネットワークの一部であることを信じているので、コンピューティングノードＡは、コンピューティングノードを分割するためにネットワークトポロジーで設定される任意の中間の論理的ルータ装置に通信２２０−ｃを方向づける必要はない。
【００３９】
通信管理モジュールＲは、通信２２０−ｃを傍受し、必要に応じて通信を変更し、相互接続ネットワーク２５０上でコンピューティングノードＧに対して、変更される通信を転送する。具体的には、通信管理モジュールＲは、コンピューティングノードＧのための仮想送信先ネットワークアドレスおよび仮想送信先ハードウェアアドレスをヘッダから抽出し、次に、その仮想送信先ハードウェアアドレスに対応するＩＰｖ６の実際の物理的基盤ネットワークアドレスをマッピング情報２１２から取り出す。上述のように、この例におけるＩＰｖ６の実際の物理的基盤ネットワークアドレスは「::0B:02:<Z-identifier>:10.0.0.3」であり、通信管理モジュールＲは、その実際の物理的基盤ネットワークアドレスを含む新たなＩＰｖ６ヘッダを送信先アドレスとして生成する。同様に、通信管理モジュールＲは、コンピューティングノードＡのためのバーチャルソースネットワークアドレスおよびバーチャルソースハードウェアアドレスを受信された通信のヘッダから抽出し、そのバーチャルソースハードウェアアドレスに対応するＩＰｖ６の実際の物理的基盤ネットワークアドレスを（例えば、以前に取得されていなければ、その情報を取得するためにシステム管理モジュール２９０と対話することにより、マッピング情報２１２に格納されたエントリから）取得し、新たなＩＰｖ６ヘッダに対してソースネットワークアドレスとしてその実際の物理的基盤ネットワークアドレスを含める。この例では、コンピューティングノードＡのためのＩＰｖ６の実際の物理的基盤ネットワークアドレスは「::0A:01:<Z-identifier>:10.0.0.2」であり、もしコンピューティングノードＧのための通信管理モジュールＳによる返答に用いられるのであれば、コンピューティングノードＡに転送するための通信管理モジュールＲに対してルーティングされる。通信管理モジュールＲは、次いで通信のために必要に応じて別の情報（例えば、ペイロード長、トラフィッククラスパケットプライオリティ、など）を有する新たなＩＰｖ６ヘッダを生成することを含む、先のＩＰｖ４ヘッダを新たなＩＰｖ６ヘッダ（例えば、ＳＩＩＴによる）で置き換えるように通信２２０−ｃを変更することにより、通信２３０−３を生成する。したがって、通信２３０−３は、通信２３０−３内の通信２２０−ｃをカプセル化せずに、通信２２０−ｃと同一のコンテンツまたはペイロードを含む。さらに、ペイロード内の特定の情報へのアクセスは、ペイロードがそのペイロードを復号する必要なしに暗号化される通信を通信管理モジュールＲが処理することを可能にするようになど、このような再ヘッダ化を必要としない。
【００４０】
少なくともいくつかの実施形態において、通信管理モジュールＳに通信２３０−３を転送する前に、通信管理モジュールＲは、例えば、通信２２０−ｃに用いられる送信先仮想ハードウェアアドレスのための有効なエントリ（例えば、いくつかの実施形態において送信元コンピューティングノード２０５ａへの特有のエントリ、またはその代りに、別の実施形態においてコンピューティングノード２０５のいずれかに対応するエントリ）を含むマッピング情報２１２上に基づいて、通信２２０−ｃが通信２３０−３としてコンピューティングノードＧに転送されることを認証されるのを決定するために、１つ以上の機能を実行してもよい。別の実施形態において、このような認証の決定は、各々の送出方向の通信のための通信管理モジュールＲによって実行されなくてもよいし、またはその代りに、他の方式（例えば、送信ノードと宛先ノードが同一の仮想コンピュータネットワークの一部である、または同一の実体に関連づけられる、またはそうでなければ互いに通信しあうことを認証されることの判定に基づいて、通信のための認証の判定を得るためのシステム管理モジュール２９０との対話に基づいて、など）により実行されてもよい。
【００４１】
通信管理モジュールＲが相互接続ネットワーク２５０に変更された通信２３０−３を転送した後、相互接続ネットワークは、通信を通信管理モジュールＳへルーティングするために、通信の物理的ＩＰｖ６送信先ネットワークアドレスを用いる。そうする際に、相互接続ネットワーク２５０の装置は、組み込まれた要素ネットワーク識別子または組み込まれた仮想ネットワークアドレスを含む送信先ネットワークアドレスの一部を用いない。それにより、このような通信を転送するために特殊な設定を必要としないし、仮想コンピュータネットワークが物理相互接続ネットワーク上にオーバーレイされている認識さえ必要としない。
【００４２】
通信管理モジュールＳが相互接続ネットワーク２５０を介して通信２３０−３を受信する場合、通信管理モジュールＲのものに類似した動作を、しかし逆方向に、実行する。具体的には、少なくともいくつかの実施形態において、通信管理モジュールＳは、通信２３０−３が正当であり、かつコンピューティングノードＧに転送されることを認証されることを、例えばシステム管理モジュールとの１つ以上の対話２４０を介して、検証する。通信が認証されることが決定される場合（または認証決定が実行されないならば）、通信管理モジュールＳは、次いで必要に応じて通信２３０−３を変更し、コンピューティングノードＧに変更された通信を転送する。通信２３０−３の検証に関する更なる詳細な記述は、図２Ｂに関して論じられる。
【００４３】
具体的には、通信２３０−３を変更するために、通信管理モジュールＳは、コンピューティングノードＧによって用いられる仮想ハードウェアアドレスを含む、コンピューティングノードＧに対応するマッピング情報２６２から情報を取り出す（または新たなコンピューティングノードのためになど、以前に利用可能であったこのような仮想ハードウェアアドレスを生成する）。通信管理モジュールＳは、次いで先のＩＰｖ６ヘッダを新たなＩＰｖ４ヘッダ（例えば、ＳＩＩＴによる）で置き換えるように通信２３０−３を変更することにより、通信２４５−ｅを生成する。新たなＩＰｖ４ヘッダは、新たなＩＰｖ４ヘッダのための送信先ネットワークアドレスおよび送信先ハードウェアアドレスとしてのコンピューティングノードＧのための仮想ネットワークアドレスおよび仮想ハードウェアアドレスと、新たなＩＰｖ４ヘッダのためのソースネットワークアドレスおよびソースハードウェアアドレスとしてのコンピューティングノードＡのための仮想ネットワークアドレスおよび仮想ハードウェアアドレスとを含み、必要に応じて通信のための他の情報（例えば、全体長さ、ヘッダチェックサム、など）を含む。コンピューティングノードＡのための通信管理モジュールＳによって用いられる仮想ハードウェアアドレスは、コンピューティングノードＡのための通信管理モジュールＲによって用いられるハードウェアアドレスと同一であってもよいが、他の実施形態において、各通信管理モジュールは、（例えば、通信管理モジュールＳが、コンピューティングノードＡのハードウェアアドレスのためのコンピューティングノード２５５の１つから、先のＡＲＰ要求に応じてコンピューティングノードＡのためのそれ自身のダミーの仮想ハードウェアアドレスを生成する場合）他の通信管理モジュールによって用いられる情報と関連しない個別のハードウェアアドレス情報を保持してもよい。このようにして、通信２４５−ｅは、通信２２０−ｃおよび２３０−３と同一のコンテンツまたはペイロードを含む。通信管理モジュールＳは、次いでコンピューティングノードＧに通信２４５−ｅを転送する。
【００４４】
通信２４５−ｅを受信した後に、コンピューティングノードＧは、通信２４５−ｅからのコンピューティングノードＡのためのソース仮想ネットワークアドレスおよびソース仮想ハードウェアアドレスを用いて、コンピューティングノードＡに対して応答通信２４５ｆを送信することを決定する。通信管理モジュールＳは、応答通信２４５ｆを受信し、通信２２０−ｃおよび通信管理モジュールＲに関して以前に記載されたのと同様の方法で、処理する。具体的には、通信管理モジュールＳは、コンピューティングノードＧがコンピューティングノードＡに対して通信を送信することを認証されることを状況に応じて検証し、次に、マッピング情報２６２を用いて新たなＩＰｖ６ヘッダを生成することにより通信２３０−６を生成するために通信２４５ｆを変更する。相互接続ネットワーク２５０に通信２３０−６を転送した後、通信は、通信管理モジュールＲに対して送信され、通信管理モジュールＲは、通信２３０−３および通信管理モジュールＳに関して以前に記載されたのと同様の方法で、受入方向の通信を処理する。具体的には、通信管理モジュールＲは、コンピューティングノードＧがコンピューティングノードＡに対して通信を送信することを認証され、かつ通信２３０−６がコンピューティングノードＧの基盤ネットワーク位置から現実に送信されることを状況に応じて検証し、次に、マッピング情報２１２を用いて新たなＩＰｖ４ヘッダを生成することにより応答通信２２０−ｄを生成するために通信２３０−６を変更する。通信管理モジュールＲは、次いでコンピューティングノードＡに応答通信２２０−ｄを転送する。他の実施形態および状況において、通信管理モジュールＲおよび／またはＳは、応答通信は少なくともいくつかの状況で認証され、かつそれらの状況における応答通信のためのいくつかまたはすべての認証動作を実行しないことを仮定するなどして、最初の通信と異なる方法で応答通信を処理してもよい。
【００４５】
このようにして、コンピューティングノードＡおよびＧは、実際の介在するＩＰｖ６ベースの基板相互接続ネットワークを処理するためにそれらのコンピューティングノードの特殊設定なしで、ＩＰｖ４ベースの仮想コンピュータネットワークを用いて互いに通信しあうことができ、相互接続ネットワーク２５０は、通信のカプセル化なしで実際の物理相互接続ネットワーク上に仮想コンピュータネットワークをオーバーレイする通信管理モジュールに基づいて、かつ基盤物理ネットワークアドレスに組み込まれた仮想ネットワークアドレスを使用することに基づいて、相互接続ネットワークの任意の物理的ネットワーキング装置の特殊設定なしで、ＩＰｖ６通信を転送。
【００４６】
さらに、図２Ａに関して図示されていないが、少なくともいくつかの実施形態において、通信管理モジュールは、関連づけられるコンピューティングノードのために他の型の要求および通信を受信して処理することができる。例えば、通信管理モジュールは、それらが管理するコンピューティングノードのためのブロードキャストとマルチキャストの能力を支援するために様々な動作を行うことができる。一例として、いくつかの実施形態において、特別のマルチキャストグループ仮想ネットワークアドレスサフィックスは、信号方式ネットワーキング層２の未加工のカプセル化された通信で用いる各々の要素ネットワーク識別子プレフィックスから予約しておくことができる。同様に、リンクローカル放送およびマルチキャスト通信のために、特別のマルチキャストグループ／６４プレフィックスが予約され得（例えば「FF36:0000::」）、一方異なる送信先アドレスプレフィックス（例えば「FF15:0000::」）が他のマルチキャスト通信のための用いられていてもよい。したがって、例えば、マルチキャストおよびブロードキャストのＩＰフレームは、対応する予約された６４ビットプレフィックスを１２８ビットのＩＰｖ６アドレスの最初の６４ビットのために用いてカプセル化し、残りの６４ビットは、前に記載されたのと同様の方法で、送信先コンピューティングノードのための仮想ＩＰｖ４ネットワークアドレスおよび送信先コンピューティングノードのための要素ネットワーク識別子を含む。あるいは、他の実施形態において、１つ以上の型のブロードキャストおよび／またはマルチキャスト通信は、各々、異なるビット数を用いること、および／またはネットワークアドレスプレフィックスとはいわば別に格納されることを含む、異なる値または形式を有する、対応する予約ラベルまたは他の識別子を有してもよい。コンピューティングノードがブロードキャスト／マルチキャスト通信を送信する場合、そのマルチキャスト／ブロードキャストグループに対して割り当てられた関連するコンピューティングノードの任意の通信管理モジュールが識別される（例えば、それらの関連づけられるコンピューティングノードによって送信された、先の結合通信に応じてなど、グループに対して割り当てられた通信管理モジュールに基づいて）。また、送信元コンピューティングノードのための通信管理モジュールは、それらの適合する管理されたコンピューティングノードに転送するために、グループの識別された通信管理モジュールの各々に通信を転送する。さらに、いくつかの実施形態および状況において、少なくともあるブロードキャストまたはマルチキャスト通信は、２２４．０／１６のＩＰｖ４プレフィックスまたは別の指定のプレフィックスまたは他のラベルもしくは識別子との通信などのように、通信管理モジュールによって転送されなくてもよい。
【００４７】
管理されたコンピューティングノードのためのブロードキャストおよびマルチキャストの能力を支援することに加えて、通信管理モジュールは、コンピューティングノードが属する仮想コンピュータネットワークのための設定されたネットワークトポロジーに対応する、関連するコンピューティングノードのために他の種類の要求および通信を受信して処理することができる。例えば、コンピューティングノードは、（例えば、ｐｉｎｇ要求、ＳＮＭＰクエリ、などの）指定されたローカルルータ装置または他の指定されたネットワーキング装置が処理することを要求される様々な要求を送信してもよいし、関連する通信管理モジュールは、このような要求を傍受し、もしそれが物理的に実装されていれば、指定されたネットワーキング装置によって提供されるであろう機能をエミュレートするために様々な対応する動作を行うことができる。
【００４８】
さらに、通信管理モジュールがその通信管理モジュールに関連する複数のコンピューティングノード間の通信を促進し得ることが十分に理解されるだろう。例えば、図２Ａに関して、コンピューティングノード２０５ａは、コンピューティングノード２０５−ｃに対して追加の通信（図示せず）を送信することを望み得る。その場合、通信管理モジュールＲは、通信管理モジュールＲによる送出方向の通信２２０−ｃの処理および通信管理モジュールＳによる受入方向の通信２３０−３の処理に関して以前に記載されたものに類似した動作を（ただし、通信は相互接続ネットワーク上を伝わらないのでＩＰｖ６ヘッダを用いるために追加の通信を再ヘッダ化せずに）実行する。しかしながら、図２Ｃに関してよりいっそう詳細に論じられるように、コンピューティングノード２０５ａおよび２０５−ｃが仮想コンピュータネットワークのためのネットワークトポロジーで、１つ以上の論理ネットワーキング装置によって分離されるように設定されるならば、通信管理モジュールＲは、それらの論理ネットワーキング装置の機能をエミュレートするために追加の動作を行い得る。
【００４９】
図２Ａに関して図示されていないが、少なくともいくつかの実施形態において、他の型の要求および通信も様々な方法で処理され得る。例えば、少なくともいくつかの実施形態において、実体は、通信管理モジュールによって管理され、かつその実体のための仮想コンピュータネットワークの一部である１つ以上のコンピューティングノードを有してもよく、それらの通信を管理する関連する通信管理モジュールを有しない１つ以上の他の管理されていないコンピューティングシステム（例えば、それ相互接続ネットワーク２５０に対して直接接続されるおよび／またはＩＰｖ６ネットワークアドレスをネイティブで用いるコンピューティングシステム）をさらに有してもよい。それらの管理されていないコンピューティングシステムがその仮想コンピュータネットワークの一部である、別様に、仮想コンピュータネットワークの管理されたコンピューティングノードと通信することを、実体が望む場合、管理されたコンピューティングノードと管理されていないコンピューティングシステムとの間のこのような通信は、少なくともいくつかのこのような実施形態において、１つ以上のコンピューティングノードを管理する通信管理モジュールによって処理されてもよい。例えば、そのような状況において、そのような管理されていないコンピューティングシステムが、そのような管理されたコンピューティングノードのための実際のＩＰｖ６送信先ネットワークアドレス（例えば、この例における管理されたコンピューティングノードＡのための「::0A:01:<Z-identifier>:10.0.0.2」）を提供しているならば、管理されていないコンピューティングシステムは、その送信先ネットワークアドレスを用いて、相互接続ネットワーク２５０を介してコンピューティングノードＡに対して通信を送信してもよい。通信管理モジュールＲは、通信管理モジュールＲがその管理されていないコンピューティングシステムから（または任意の管理されていないコンピューティングシステムから）通信を受け入れるように設定されているならば、（例えば、以前に記載されたのと同様の方法で通信を再ヘッダ化した後に）コンピューティングノードＡにそれらの通信を転送することとなる。更に、通信管理モジュールＲは、このような管理されていないコンピューティングシステムに対応するようにダミーの仮想ネットワークアドレスを生成し、管理されていないコンピューティングシステムのために実際のＩＰｖ６ネットワークアドレスに対してそれをマッピングし、コンピューティングノードＡに対して（例えば、管理されていないコンピューティングシステムからコンピューティングノードＡに転送された通信のためのソースアドレスとして）ダミーの仮想ネットワークアドレスを提供してもよい。それにより、コンピューティングノードＡが、管理されていないコンピューティングシステムに対して通信を送信することを可能する。
【００５０】
同様に、少なくともいくつかの実施形態および状況において、いくつかの管理されたコンピューティングノードおよび／または少なくともそれらの仮想コンピュータネットワークは、他の管理されていないコンピューティングシステムまたはそれらの通信を管理する、関連する通信管理モジュールを有しない他の型のネットワーク機器装置などのような、仮想コンピュータネットワークの一部でない他の装置との通信を可能にするように設定されてもよい。そのような状況では、管理されているコンピューティングノードおよび／または仮想コンピュータネットワークが、そのような管理されていない他の装置との通信を可能にするように設定されている場合、このような管理されていない装置は、このようなコンピューティングノード（例えば、この例におけるコンピューティングノードＡのための「::0A:01:<Z-identifier>:10.0.0.2」）のための実際のＩＰｖ６送信先ネットワークアドレスを同様に提供され得、管理されていない装置が、その送信先ネットワークアドレスを用いて相互接続ネットワーク２５０を介してコンピューティングノードＡに対して通信を送信することを可能にし、通信管理モジュールＲは、（例えば、前に記載されたものに類似する方法で通信を再ヘッダ化した後に）コンピューティングノードＡにそれら通信を転送する。更に、通信管理モジュールＲは、コンピューティングノードＡからこのような管理されていない装置への送出方向の通信を同様に管理して、コンピューティングノードＡがこのような通信を送信することを可能にすることができる。
【００５１】
さらに、前述のように、通信管理モジュールは、いくつかの実施形態において仮想コンピュータネットワークのコンピューティングノードに対して仮想ネットワークアドレスを割り当てることによること、および／または、通信管理モジュールに対応する基盤物理ネットワークアドレスの範囲から管理されたコンピューティングノードに対して基盤物理ネットワークアドレスを割り当てることによることを含む様々な方法で関連するコンピューティングノードのための通信を管理する。他の実施形態において、いくつかのこのような動作は、代りに、ＤＨＣＰ（ダイナミックホストコンフィギュレーションプロトコル）サーバまたは仮想コンピュータネットワークの他の装置が、仮想ネットワークの特定のコンピューティングノードに仮想ネットワークアドレスおよび／または基盤物理ネットワークアドレスを指定することを可能にするなどのために、仮想コンピュータネットワークの１つ以上のコンピューティングノードによって実行することができる。このような実施形態において、通信管理モジュールは、仮想ネットワーク装置からこのような構成情報を取得し、それに応じてそのマッピング情報を更新する（そして、いくつかの実施形態において、仮想ネットワークに関連づけられるコンピューティングノードに関する情報を維持する１つ以上のシステム管理モジュールをさらに更新してもよい）。さらに他の実施形態において、仮想コンピュータネットワークに関連するユーザまたは他の実体は、特定のコンピューティングノードを特定の仮想ネットワークアドレスを用いるように直接設定することができる。その場合、通信管理モジュールおよび／またはシステム管理モジュールは、どの仮想ネットワークアドレスが特定のコンピューティングノードにより用いられるかを追跡してもよく、それに応じて、格納されたマッピング情報を同様に更新してもよい。
【００５２】
さらに、いくつかの実施形態および状況において、管理されたコンピューティングノードは、それ自体疑似ルータとして扱われてもよく、複数の仮想ネットワークアドレスがその管理されたコンピューティングノードに関連づけられ、その管理されたコンピューティングノードは、それらの複数の仮想ネットワークアドレスに対応する他のコンピューティングノードに対して通信を転送する。このような実施形態において、その管理されたルータコンピューティングノードのための通信を管理する通信管理モジュールは、コンピューティングノードとの間の通信を、前に記載されたのと同様の方法で処理する。しかしながら、通信管理モジュールは、管理されたルータコンピューティングノードに対応する複数の仮想ネットワークアドレスにより設定される。その結果、それらの複数の仮想ネットワークアドレスのいずれの受入方向の通信も、管理されたルータコンピューティングノードに転送され、管理されたルータコンピューティングノードからの送出方向の通信は、管理されたルータコンピューティングノードを介して通信を送信した特定のコンピューティングノードに対応する基盤ソース物理ネットワークアドレスを与えられる。このようにして、特定の顧客または他の実体のルータまたは他のネットワーキング装置は、その実体のために実現される仮想コンピュータネットワークのために仮想的に表わされ得る。
【００５３】
図２Ｂは、図２Ａに関して論じられたコンピューティングノードおよび通信のいくつかを図示するが、コンピューティングノード間の通信を認証するために、通信管理モジュール２１０、２６０および／またはシステム管理モジュール２９０によって行われる幾つかの動作に関する更なる詳細な記述が提供される。例えば、コンピューティングノードＡが、コンピューティングノードＧのためのハードウェアアドレスを要求するためにメッセージ２２０−ａを送信した後、通信管理モジュールＲは、コンピューティングノードＧと通信することをコンピューティングノードＡが認証されるか否かに基づくなどにより、その情報を提供するべきかどうか決定するため、ならびに相互接続ネットワーク２５０に基づいてコンピューティングノードＧのための対応する基盤物理ネットワークアドレスを決定するために、システム管理モジュール２９０と１つ以上の対話２２５を実行することができる。通信管理モジュールＲがその情報を以前に取得し格納しており、有効のままである（例えば、有効期限が切れていない）ならば、その後、対話２２５は実行されなくてもよい。この例で、コンピューティングノードＧに対応する所望の物理ネットワークアドレスを取得するために、通信管理モジュールＲは、コンピューティングノードＡおよびＧのための仮想ネットワークアドレスを含み、各々のコンピューティングノードのための実体ネットワーク識別子（この例において実体Ｚの仮想コンピュータネットワークのための実体ネットワーク識別子（例えば、３２ビットまたは２４ビットのユニークＩＤ）である）を含むシステム管理モジュール２９０に対してメッセージ２２５−１を送信する。少なくともいくつかの実施形態において、通信管理モジュールＲは、エニーキャストアドレッシングスキームおよびルーティングスキームを用いて、システム管理モジュール２９０に対してメッセージ２２５−１を送信してもよい。その結果、多重システム管理モジュールが実現されてもよく（例えば、通信管理モジュールおよび関連づけられるコンピューティングノードを含む各々のデータセンタのための１つ）、（例えば、最も近く最も利用されなかった、などの）それらの適合する１つが、メッセージを受信し処理するために選択される。
【００５４】
コンピューティングノードＡがコンピューティングノードＧと通信することを認証されるのをシステム管理モジュール２９０が決定した後（例えば、同一の要素ネットワーク識別子を有していることに基づいて、コンピューティングノードＧのための要素ネットワーク識別子のコンピューティングノードと通信することを認証される要素ネットワーク識別子を有するコンピューティングノードＡに基づいて、このような通信を実行することをコンピューティングノードＡが認証されるのを示すコンピューティングノードＡによって提供されるまたは関連する他の情報に基づいて、コンピューティングノードＡがこのような通信を実行することを認証されるのを示すコンピューティングノードＧによって提供されるまたは関連する情報に基づいて、など）、システム管理モジュール２９０は、コンピューティングノードＧに対応する所望の実際の物理的基盤ネットワークアドレスを含む応答メッセージ２２５−２を返す。さらに、少なくともいくつかの実施形態において、所望の実際の物理ネットワークアドレスを送信する前に、システム管理モジュール２９０は、通信コンピューティングノードＡが、管理モジュールＲが関連するコンピューティングノードの１つであることが決定されていることに基づいてなどように、その通信管理モジュールＲがコンピューティングノードＡに代わってメッセージ２２５−１を送信することを認証されるのをさらに検証してもよい。
【００５５】
他の実施形態において、通信管理モジュールＲは、様々なコンピューティングノードのための提供情報を維持するおよび／またはコンピューティングノードＧに対して通信を送信することをコンピューティングノードＡが認証されるか否かを決定するために、システム管理モジュール２９０によって実行されるように記載された動作のいくつかまたはすべてを実行してもよく、またはその代りに、このような認証判定がいくつかまたはすべての状況において実行されなくてもよい。さらに、他の実施形態において、ある種の通信に基づいて、通信のサイズ上に基づいて、通信の時刻に基づいてなど、他の種類の認証判定が、２つ以上のコンピューティングノード間の通信のために実行されてもよい。
【００５６】
前に図２Ａに関して示したように、通信管理モジュールＳが相互接続ネットワーク２５０を介してコンピューティングノードＧに向けられた通信２３０−３を受信した後、通信管理モジュールＳは、その通信を認証するべきか否かを決定するために、システム管理モジュール２９０と１つ以上の対話２４０を実行してもよい。具体的には、この例で、通信２３０−３が有効でありコンピューティングノードＧに転送されることが認証されるかを検証するために、通信管理モジュールＳは、まず通信２３０−３のヘッダから実際のＩＰｖ６送信先ネットワークアドレスおよび実際のＩＰｖ６ソースネットワークアドレスを抽出し、次に、組み込まれた要素ネットワーク識別子および仮想ネットワークアドレスを抽出された各々のＩＰｖ６ネットワークアドレスのから取り出す。通信管理モジュールＳは、次に、コンピューティングノードＧに代わって送信元コンピューティングノードＡのための対応する実際のＩＰｖ６物理ネットワークアドレスを取得するためにシステム管理モジュール２９０とメッセージ２４０を交換し、それにはコンピューティングノードＡおよびＧのための抽出された仮想ネットワークアドレスと各々のコンピューティングノードのための要素ネットワーク識別子とを含むメッセージ２４０−４が含まれる。少なくともいくつかの実施形態において、通信管理モジュールＳは、前に記載されたように、エニーキャストアドレッシングおよびルーティングスキームを用いて、システム管理モジュール２９０に対してメッセージに２４０−４を送ってもよい。
【００５７】
システム管理モジュール２９０は、メッセージ２４０−４を受信し、コンピューティングノードＡに対応する実際の物理的基盤ネットワークアドレスを含む応答メッセージ２４０−５を返す（この例では「::0A:01:<Z-identifier>:10.0.0.2」）。前にメッセージ２２５−１および２２５−２に関して論じられたように、いくつかの実施形態において、通信管理モジュールＳおよび／またはシステム管理モジュール２９０は、コンピューティングノードＧがコンピューティングノードＡと通信することを認証されること、通信管理モジュールＳがコンピューティングノードＧのためのメッセージ２４０−４を送信することを認証されることを決定するためになどのように、１つ以上の他の種類の認証決定動作をさらに実行してもよい。その後、通信管理モジュールＳは、他の位置の他のコンピューティングノードから現実に送信されるコンピューティングノードＡからであるようにメッセージになりすますための試みを防ぐために、応答メッセージ２４０−５内の返された物理ネットワークアドレスが通信２３０−３のヘッダから抽出されたソースＩＰｖ６ネットワークアドレスと一致することを検証する。通信管理モジュールＳは、コンピューティングノードＡの仮想ネットワークアドレスおよびコンピューティングノードＡのための仮想ハードウェアアドレスとともに、マッピング情報２６２におけるコンピューティングノードＡのための入力の一部として、応答メッセージ２４０−５からのこの受信情報を後の使用のために状況に応じて格納する。
【００５８】
図２Ｃは、図２Ａおよび図２Ｂに関して記載された仮想コンピュータネットワークのための管理する進行中の通信のさらなる例を図示するが、通信は、仮想コンピュータネットワークのための設定されたネットワークトポロジーに従って、仮想コンピュータネットワークのための論理ネットワーキング機能を支援するために管理される。具体的には、図２Ｃは、図２Ａおよび図２Ｂに示されるものに類似した方法で、コンピューティングノードＡ、通信管理モジュールＲおよびＳ、システム管理モジュール２９０、および相互接続ネットワーク２５０を図示する。しかしながら、図２Ｃは、図２Ａと比較してコンピューティングノードＡ２０５ａおよびコンピューティングノードＨ２５５ｂに関する追加情報、ならびに仮想コンピュータネットワークのための設定されたネットワークトポロジーの一部であるが、仮想コンピュータネットワークを提供する一部として実際には物理的に実装されない、２つの指定されたルータ装置の論理的表現２７０ａおよび２７０ｂをさらに図示する。具体的には、この例では、コンピューティングノードＡは、コンピューティングノードＨに対して通信を送信しており、物理的に実装されたモジュール２１０および２６０、ならびに実際に通信を送信する際のネットワーク２５０の装置の動作は、論理的に通信を送信する際の論理的ルータ装置２７０ａおよび２７０ｂのエミュレートされた動作と並んで、示される。
【００５９】
この例で、コンピューティングノードＡおよびＨは、仮想コンピュータネットワークの２つの別個のサブネットワークの一部であるように設定され、論理的ルータ装置２７０ａおよび２７０ｂは、仮想コンピュータネットワークのための設定されたネットワークトポロジー内のコンピューティングノードＡおよびＨを分離する。例えば、論理的ルータ装置Ｊ２７０ａは、コンピューティングノードＡに対するローカルルータ装置であってもよく（例えば、コンピューティングノードＡを含む第１のサブネットワークを管理してもよい）、論理的ルータ装置Ｌ２７０ｂは、コンピューティングノードＨに対するローカルルータ装置であってもよい（例えば、コンピューティングノードＨを含む第２の別のサブネットワークを管理してもよい）。コンピューティングノードＡおよびＨはこの例における設定されたネットワークトポロジー内の２つのルータ装置によって分離されるように図示されるが、このような２つのコンピューティングノードが他の状況において、０、１または２つ以上のルータ装置により分離され、他の型のネットワーキング装置がいくつかの状況においてコンピューティングノードを分離してもよいことは、十分に理解されるだろう。
【００６０】
図２Ｃの例において、コンピューティングノードＡおよびＨのために示される追加情報は、システム管理モジュール２９０および／または通信管理モジュールＲおよびＳによってコンピューティングノードに割り当てられる仮想ハードウェアアドレスなどのような、仮想コンピュータネットワークのためのそれらのコンピューティングノードに関連づけられるハードウェアアドレスを含む。具体的に、この例では、コンピューティングノードＡは、ハードウェアアドレス「00-05-02-0B-27-44」に割り当てられ、コンピューティングノードＨは、ハードウェアアドレス「00-00-7D-A2-34-11」に割り当てられている。さらに、論理的ルータ装置ＪおよびＬの各々はまた、ハードウェアアドレス（この例では、それぞれ「00-01-42-09-88-73」および「00-01-42-CD-11-01」である）、ならびに仮想ネットワークアドレス（この例では「10.0.0.1」および「10.1.5.1」である）が割り当てられている。以下で記載されるように、様々なハードウェアアドレスが、コンピューティングノードＡからコンピューティングノードＨまでの通信の送信の一部、および仮想コンピュータネットワークのための対応する論理ネットワーキング機能の提供の一部として用いられる。
【００６１】
したがって、図２Ａに関して記載されるのと同様の方法で、コンピューティングノードＡは、コンピューティングノードＨに対して通信を送信することを決定し、それに応じて、通信管理モジュールＲ２１０と各種メッセージ２２２を交換する。具体的には、この例で、コンピューティングノードＡは、まず仮想ハードウェアアドレス情報のためにＡＲＰメッセージ要求２２２−ａを送信する。しかしながら、コンピューティングノードＡおよびＧが同一の論理的サブネットワークの一部であった図２Ａの例とは異なり、コンピューティングノードＡからコンピューティングノードＨまでの通信は、コンピューティングノードＨに転送される前に、ローカルルータ装置Ｊの最初の中間の送信先を最初に通過することが要求される。したがって、論理的ルータＪが論理的にリモートコンピューティングノードＨのための最初の中間の送信先であるので、ＡＲＰメッセージ要求２２２−ａは、論理的ルータＪのための仮想ネットワークアドレス（すなわち「10.0.0.1」）を含み、論理的ルータＪのための対応するハードウェアアドレスを要求する。他の実施形態において、コンピューティングノードＡは、その代りに、コンピューティングノードＨのための仮想ハードウェアアドレス情報を（例えば、コンピューティングノードＨのための仮想ネットワークアドレス「10.1.5.3」を用いて）直接要求してもよいが、論理的ルータＪのための対応するハードウェアアドレスを提供される。
【００６２】
通信管理モジュールＲは、ＡＲＰ要求２２２−ａを傍受し、なりすまされたＡＲＰ応答メッセージ２２２−ｂの一部としてコンピューティングノードＡに提供するためにハードウェアアドレスを取得する。様々な実施形態において様々な方式で、通信管理モジュールＲは、論理的ルータＪ１のためのハードウェアアドレス、およびコンピューティングノードＨがコンピューティングノードＡからの別の論理的サブネットワークの一部であることとを決定することができる。例えば、前に論じられたように、通信管理モジュールＲは、マッピング情報２１２の一部として様々なハードウェアアドレス情報を格納することができ、その場合、論理的ルータＪのためのハードウェアアドレス情報を既に格納している場合があるが、そうでなければ、通信管理モジュールＲは、論理的ルータＪのための示された仮想ネットワークアドレスに対応するモジュール２９０からの情報を取得するためにシステム管理モジュール２９０と１つ以上の対話２２７を実行する。しかしながら、図２ＡのコンピューティングノードＧに関するように、示された仮想ネットワークアドレスに対応する基盤ネットワークアドレスを取得するのではなく、システム管理モジュール２９０は、仮想ネットワークアドレスが構成されたネットワークトポロジーの論理的ルータ装置に対応することを示し、さらに論理的ルータＪのためのハードウェアアドレス情報を示す通信管理モジュールＲに対する情報を提供してもよい。具体的には、システム管理モジュール２９０は、指定されたネットワーキング装置に関する情報などの（提供するか、そうでなければ管理する）仮想コンピュータネットワークのための設定されたネットワークトポロジーに関する諸情報２９４を維持し、通信管理モジュールに対して要求情報を提供するためにその情報を用いる。通信管理モジュールＲは、次いで今後の使用のためにマッピング情報２１２の一部として受信情報を格納し、このようにして、コンピューティングノードＨが構成されたネットワークトポロジー内のコンピューティングノードＡからの別のサブネットワークの一部であることを決定する。さらに、通信管理モジュールＲは、応答メッセージ２２２−ｂの一部として論理的ルータＪに対応するハードウェアアドレス「00-01-42-09-88-73」をコンピューティングノードＡに提供する。要求２２２−ａおよび応答メッセージ２２２−ｂがコンピューティングノードＡから見て、論じられた方式でコンピューティングノードＡおよび通信管理モジュールＲの間を実際に通過するが、通信２２２−ａおよび２２２−ｂは、ローカルルータ装置Ｊで生じる論理的対話２６３の一部である。
【００６３】
通信管理モジュールＲから応答メッセージ２２２−ｂを受信した後に、コンピューティングノードＡは、コンピューティングノードＨに、通信２２２−ｃとして図２Ｃに示される通信の送信を作成して開始する。具体的には、通信２２２−ｃのヘッダは、「10.1.5.3」である送信先コンピューティングノードＨのための送信先ネットワークアドレスと、メッセージ２２２−ｂ内のコンピューティングノードＡに対して提供される論理的ルータＪのための仮想ハードウェアアドレスである送信先ハードウェアアドレスと、「10.0.0.2」であるコンピューティングノードＡを送信するためのソースネットワークアドレスと、前にコンピューティングノードＡに対して特定された、実際のまたはダミーのハードウェアアドレスであるコンピューティングノードＡを送信するためのソースハードウェアアドレスとを含む。コンピューティングノードＡから見て、送信される通信は、論理的通信２６５のために図示された方式で処理され、通信における送信先ハードウェアアドレスに基づいて転送のための通信２６５ａとしてローカルの論理ルータＪに対して送信される。もし論理的ルータＪが物理的に実装され、このような通信２６５ａを受信したならば、通信２６５ａのヘッダを変更し、論理ルータＬに、変更される通信２６５ｂを転送することとなり、論理ルータＬは、通信２６５ｂのヘッダを同様に変更し、コンピューティングノードＨに対して、変更された通信２６５ｃを転送することとなる。論理ルータＪがこのような通信２６５ａに対して実行するであろう変更は、ヘッダ内のＴＴＬネットワークホップ値をディクリメントし次の送信先（この例では論理ルータＬとなる）に対応させるために送信先ハードウェアアドレスを変更することを含み得る。同様に、論理ルータＬがこのような通信２６５ｂに対して実行することとなる変更は、ヘッダ内のＴＴＬネットワークホップ値をさらにディクリメントし次の送信先（この例ではコンピューティングノードＨとなる）に対応させるために送信先ハードウェアアドレスを変更することを含み得る。
【００６４】
コンピューティングノードＡからコンピューティングノードＨへの通信２２２−ｃが、通信２６５のための図示された方式において論理的に処理される一方で、通信２２２−ｃは、通信管理モジュールＲによって実際に傍受され処理される。具体的には、通信２２０−ｃのための図２Ａに記載されたのと類似の方法で、通信管理モジュールＲは、通信２２２−ｃを傍受し、必要に応じて通信を変更し、コンピューティングノードＨに対して相互接続ネットワーク２５０上で、変更された通信を転送する。相互接続ネットワーク２５０上で変更された通信を転送するために用いるべき基盤ネットワークアドレスを決定するために、通信管理モジュールＲは、通信２２２−ｃのヘッダから送信先仮想ネットワークアドレスおよび送信先仮想ハードウェアアドレスを抽出する。しかしながら、通信管理モジュールＲは、図２Ａの方法とは異なる方法で、論理的ルータＪに対応する送信先仮想ハードウェアアドレスに基づいて、送信先基盤ネットワークアドレスを特定するために、送信先仮想ネットワークアドレスを用いることを決定する。したがって、通信管理モジュールＲは、コンピューティングノードＨの仮想ネットワークアドレスに対応する基盤ネットワークアドレスが前に決定されて格納されているか否かを決定するためにマッピング情報２１２をチェックする。そうでなければ、通信管理モジュールＲは、その情報を決定するために、図２Ａの対話２２５に類似した方式で、システム管理モジュール２９０と１つ以上の対話２２７を実行する。図２Ｂに関してよりいっそう詳細に論じられたように、ＡＲＰ要求メッセージ２２２−ａおよび／または通信２２２−ｃに応じて、通信管理モジュールＲおよび／またはシステム管理モジュール２９０は、様々なオプションの認証動作をさらに実行してもよい。
【００６５】
通信管理モジュールＲがコンピューティングノードＨに対応するＩＰｖ６の実際の物理的基盤ネットワークアドレスを決定した後、通信管理モジュールＲは送信先アドレスとしてその実際の物理的基盤ネットワークアドレスを含む新たなＩＰｖ６ヘッダを生成し、新たなヘッダに対してコンピューティングノードＡのためのソースＩＰｖ６アドレスを同様に追加する。この例では、コンピューティングノードＨに対応する物理的基盤ネットワークアドレスは、コンピューティングノードＧのそれに類似し、具体的にはＩＰｖ６基盤ネットワークアドレス「::0B:02:<Z-identifier>:10.1.5.3」であり、ここで、「10.1.5.3」は１２８ビットのＩＰｖ６アドレスの最終の３２ビットに格納され、「<Z-identifier>」は仮想コンピュータネットワークのための２４ビットの要素ネットワーク識別子である。したがって、コンピューティングノードＧに対して送信された通信のように、コンピューティングノードＨのための基盤ネットワークアドレスに対して相互接続ネットワーク２５０上で送信された通信は、通信管理モジュールＳに対してルーティングされる。通信管理モジュールＲは、次に、先のＩＰｖ４ヘッダを新たなＩＰｖ６ヘッダ（例えば、ＳＩＩＴによる）で置き換えるように通信２２２−ｃを変更することにより（新たな通信２３２−３を生成し、新たな通信のための他の情報（例えばペイロード長、トラフィッククラスパケットプライオリティ、など）と共に新たなＩＰｖ６ヘッダを必要に応じて生成することを含む）、相互接続ネットワーク２５０上に通信２３２−３を転送する。相互接続ネットワークは、次いで通信管理モジュールＳに対する通信の経路を選択するために、通信２３２−３の物理的ＩＰｖ６送信先ネットワークアドレスを用いる。通信管理モジュールＳが相互接続ネットワーク２５０を介して通信２３２−３を受信する場合、通信２３０−３に関して図２Ａに記載されたものに類似する動作（適合するＩＰｖ４ヘッダを含むように通信を変更し、かつコンピューティングノードＨに対して通信２４７−ｅとして変更される通信を提供することを含む）を実行する。
【００６６】
更に、他のところで示されたように、通信管理モジュールＲおよび／または通信管理モジュールＳは、この例において、仮想コンピュータネットワークのための設定されたネットワークトポロジーに、対応する論理ネットワーキング機能を提供するような方式でコンピューティングノードＡからコンピューティングノードＨに通信を変更するためにさらなる動作を行い、それには、もしそれらが仮想コンピュータネットワークのために物理的に実装されていれば、論理的ルータＪおよびＬによって提供されるであろう機能をエミュレートすることを含む。例えば、前に論じたように、論理的ルータＪおよびＬは、それらのルータが物理的に実装され用いられたならば、コンピューティングノードＨに対して転送されるように通信２６５に対する様々な変更（ＴＴＬネットワークホップ値を変更し、かつ他のヘッダ変更を実行することを含む）を実行するであろう。したがって、通信管理モジュールＲおよび／または通信管理モジュールＳは、論理的ルータＪおよびＬのこのような機能をエミュレートするために、通信２２２−ｃおよび／または２４７−ｅに対して同様の変更を実行することができる。したがって、コンピューティングノードＨは、仮想コンピュータネットワークのための指定されたネットワークトポロジーを介して転送された通信２６５ｃであるかのように見える通信２４７−ｅを受信する。
【００６７】
このようにして、ＯＮＭシステムは、いかなる仮想コンピュータネットワークのコンピューティングノードまたは介在する基板相互接続ネットワークの物理的ネットワーキング装置の特殊設定なしで、設定されたネットワークトポロジーをエミュレートするような方式で、実際の物理相互接続ネットワーク上に仮想コンピュータネットワークをオーバーレイする通信管理モジュールに基づいて、構成されたネットワークトポロジーに、対応する論理ネットワーキング機能を提供することができる。さらに、ＯＮＭシステムの複数のモジュールは、例えばモジュール２１０、２６０および２９０が各々の論理的ルータ装置２７０ａおよび２７０ｂに対応する機能をエミュレートするように先の例で相互に動作するなど、特定の論理ネットワーキング装置に対応する機能を提供するため、分散された方式で相互に動作することができる。
【００６８】
上述のように、仮想コンピュータネットワークのために指定される設定情報は、様々なネットワークトポロジー情報を含んでもよいし、様々なコンピューティングノードが、仮想コンピュータネットワークのために選択され、様々な方式でネットワークトポロジーに従って設定され得る。例えば、いくつかの実施形態で、仮想コンピュータネットワークで用いられるべき、および／または設定されたネットワークトポロジーにおいて特定の役割を割り当てられるべきコンピューティングノードの選択は、コンピューティングノードの地理的および／またはネットワークの位置の少なくとも部分的に基づき得、例えば絶対位置、あるいはその代わりに対象となる１つ以上の他のコンピューティング資源（例えば、同一の仮想ネットワークの他のコンピューティングノード、コンピューティングノードによって用いられる記憶資源、など）に対する相対位置、例えば最小および／または最大の指定された地理的な距離、または示された他のコンピューティング資源もしくは他の位置に対する他の近さの程度などである。さらに、いくつかの実施形態において、コンピューティングノードを選択する場合に用いられる要因は、位置に基づかなくてもよく、たとえば以下の１つ以上の要因を含む：リソース関連の基準（例えばメモリ量、プロセッサ使用量、ネットワーク帯域幅の量および／またはディスクスペース量）および／またはコンピューティングノードのサブセットでのみ利用可能な特定の能力などのようなコンピューティングノードの性能に関連する制約や、特定のコンピューティングノードの使用に関連する料金または運転コストに基づくようなコストに関連される制約など。
【００６９】
図２Ａ〜図２Ｃに関して論じられたものとは異なる様々な他の型の機能が、ＩＰｖ４およびＩＰｖ６以外のネットワークアドレッシングプロトコルの型を含む、他の実施形態で実行され得る。
【００７０】
図２Ｄは、いくつかの実施形態に記載された技術と共に使用するためのＩＰｖ６物理的基盤ネットワークアドレス設定２７２の例を図示しており、例示のネットワークアドレスは、基盤コンピュータネットワーク上でオーバーレイ仮想コンピュータネットワークを可能にするように仮想ネットワークアドレスおよび基盤ネットワークアドレスの他の情報を組み込むように構成されている。前に論じたように、この例示のＩＰｖ６ネットワークアドレス設定は、諸情報を格納するために１２８ビットのネットワークアドレス空間を用い、最初の６４ビットがアドレスのＩＰｖ６ネットワーク部分を格納し、後続の６４ビットがアドレスのインタフェース識別子（または「ホスト」）部分を格納する。
【００７１】
この例で、ＩＰｖ６アドレスの最初の６４ビットのネットワーク部分は、（この例では、地域インターネットレジストリ（Regional Internet Registry）ＲＩＰＥ  ＮＣＣ、またはヨーロッパＩＰリソースネットワーク調整センタ（Reseaux IP Europeens Network Coordination Centre）からの割り当てに基づいて）インターネット上で利用されるアドレス資源を管理する組織（ＩＡＮＡ（internet Assigned Numbers Authority））のためのインターネットレジストリオペレータによって、企業または他の組織のこのような組織に割り当てられた識別子に対応するビット０〜３１のための３２ビットの識別子２７２ａを含む。例えば、いくつかの実施形態において、ＯＮＭシステムの実施形態を運用する組織または記載された技術を用いる別の組織は、関連する識別子２７２ａを有し得る。アドレスの最初の６４ビットのネットワーク部分はまた、識別子が情報２７２ａにおいて示されるグループのために提供される、複数のコンピューティングノードのグループのトポロジー（例えば、サブネットワークまたは他のネットワーク部分）に対応するこの例では情報２７２ｂの３２ビットのグループを含む。前に論じられたように、少なくともいくつかの実施形態において、アドレスの最初の６４ビットのネットワーク部分は、基盤ネットワークのサブネットワークまたは他の部分などの、複数の関連するコンピューティングノードの位置に対応する基盤ネットワークのための部分的なネットワークアドレスを表わす。具体的には、少なくともいくつかの実施形態の最初の６４ビットのネットワークアドレス部分は、様々な管理されたコンピューティングノードを表わすために６４ビットのインタフェース識別子のアドレス部分のいくつかまたはすべてに対応するネットワークアドレスの範囲を管理する通信管理モジュールに基づいてなどして、通信管理モジュールによって管理されている複数の関連されるコンピューティングノードを表わす特定の通信管理モジュールに対応する。他の実施形態において、部分的なネットワークアドレスは、異なったビット数（例えば７２）により、および／またはプレフィックスとは別のアドレスの一部を用いて、表わされてもよい。
【００７２】
トポロジー情報２７２ｂの３２ビットのグループは、異なる実施形態において様々な方法で諸情報を表わしてもよく、トポロジー情報グループ２７４および２７６はトポロジー情報の２つの代替の例示の設定を示す。具体的には、２７４と２７６の例において、最初の２ビット（ＩＰｖ６アドレス全体のビット３２および３３）は、トポロジー情報の特定のバージョンを示し例えば、残りの３０ビットの意味が時間と共に、または異なった状況で変化しうるようになる。例２７４に関して、各々に示されたように様々なビットは、異なる地理的なロケール、ロケール内の地理的な領域、地理的な領域内のコンピュータラック、およびコンピュータラック内の物理的コンピューティングシステムノードを示す。この例では、ロケール情報のための６ビットは、６４の固有値を表わし得る。地域情報のための８ビットは、各々のロケール値に対して２５６の固有値を表わし得る。ラック情報のための８ビットは、各々のエリア値に対して２５６の固有値を表わし得る。物理的コンピューティングシステムノード情報のための８ビットは、各々のラック値に対して２５６の固有値を表わし得る。逆に、例２７６に関して、ロケールおよびラックの情報のみが示されるが、各々は情報のそれらの型を表わすために（その１４ビットを用いて１６，３８４のユニークなロケール値を有し、各々のロケール値のためのその１６ビットを用いて６５，５３６のユニークなラック値を有しているように）追加のビットを有している。トポロジー情報が他の実施形態における他の方式で表わされてもよいことは十分に理解されるだろう。
【００７３】
この例では、ＩＰｖ６アドレスの６４ビットのインタフェース識別子部分は、幾つかの種類の情報を格納するように設定されており、それには、特定のコンピューティングノードスロット（例えば、ＩＰｖ６アドレスの最初の６４ビットのネットワーク部分に対応する特定の物理的コンピューティングシステム上の特定の仮想マシンコンピューティングノード）に対応する６ビット識別子２７２ｃと、２つの１ビットの識別子２７２ｆおよび２７２ｇと、実体ネットワーク識別子を組み込むため（例えば、特定の仮想コンピュータネットワークを参照するため）の２４ビットの識別子２７２ｄと、ＩＰｖ４ネットワークアドレス（例えば、仮想ネットワークアドレス）を組み込むための３２ビットの識別子２７２ｅとが含まれる。スロット識別子のための６ビットは、約６４の固有値を表し得る。組み込まれた要素ネットワーク識別子のための２４ビットは、約１６８０万の固有値を表し得る。そして、組み込まれたＩＰｖ４ネットワークアドレスのための３２ビットは、約４３億の固有値を表し得る。この例では、１ビット識別子２７２ｇ（ＩＰｖ６アドレスのビット７０）は、いくつかの実施形態で、アドレスが全体的に管理されるかローカルに管理されるかを示し得るＵ／Ｌグローバル／ローカルビットを表わす。１ビット識別子２７２ｆ（ＩＰｖ６アドレスのビット７１）は、いくつかの実施形態で、単一のコンピューティングノードまたは（例えばブロードキャストまたはマルチキャストの一部として）複数のコンピューティングノードのグループにアドレスが対応するかを示し得るＩ／Ｇ個別／グループビットを表わす。少なくともいくつかの実施形態において、Ｉ／Ｇビットは０に設定され、対応する通信の仮想転送が用いられている場合、たとえば疑似コンピューティングノードルータを介して仮想サブネッティングにおいて使用するために、および／または、このような送信先アドレスとの受入方向の通信が３２ビットのＩＰｖ４の組み込まれたネットワークアドレスおよび２４ビットの要素ネットワーク識別子の値に対応するコンピューティングノードよりむしろ６ビットのスロット識別子の値に対応するコンピューティングノードに対して送られることを表示するためになどの場合、Ｕ／Ｌビットは１に設定される。インタフェース識別子情報が他の実施形態における他の方式で表わされてもよいことは、十分に理解されるだろう。
【００７４】
上述のように、ＯＮＭシステムは、（仮想コンピュータネットワークのための通信を構成することにより、および別様に管理することによるなどして）少なくともいくつかの実施形態において、１つ以上の中間の物理ネットワークの端にある１つ以上の通信管理モジュールのオペレーションを介して仮想コンピュータネットワークを確立および／または維持することができる。いくつかの状況において、通信管理モジュールは、仮想コンピュータネットワークのための通信を管理する一部として、（例えば、仮想コンピュータネットワークがどの実体のために動作するかに基づいて）モジュールの関連するコンピューティングノードが属する仮想コンピュータネットワークを追跡する、または別様に決定する。対応する仮想コンピュータネットワークの通信管理モジュールによるコンピューティングノードの決定は、（その情報を提供するシステム管理モジュールとの対話によって、このようなコンピューティングノード上で実行するソフトウエアプログラムを追跡することによって、このようなコンピューティングノードに関連する実体を追跡することによってなど）様々な実施形態において様々な方法で実行され得る。例えば、特定のコンピューティングノードがユーザのために１つ以上のソフトウエアプログラムを実行し始め、そのユーザが他のコンピューティングノード上で実行する他のソフトウエアプログラムをも有している場合、ユーザープログラムを実行する新たなコンピューティングノードは、それらの他のコンピューティングノードを含むユーザのための仮想コンピュータネットワークに関連づけられつとして選択され得る。あるいは、ユーザまたは他の実体は、（例えば実体がコンピューティングノードの異なるグループ間に複数の別の仮想コンピュータネットワークを維持する場合）コンピューティングノードが属する特定の仮想コンピュータネットワークを指定することができる。さらに、少なくともいくつかの実施形態において、ＯＮＭシステムの１つ以上のシステム管理モジュールは、コンピューティングノード間の通信を設定することを促進することができる（どのコンピューティングノードがどの仮想コンピュータネットワークに属するのかを追跡および／または管理することによって（例えば、顧客または他の実体のために実行しているプログラムに基づいて）、特定の仮想コンピュータネットワーク（例えば特定の顧客または他の実体により）のために用いられた仮想ネットワークアドレスに対応する実際の物理的基盤ネットワークアドレスに関する情報を提供することによって、など）。
【００７５】
上述のように、いくつかの実施形態において、プログラム実行サービスは、それぞれが複数の仮想マシンを提供し、仮想マシンのそれぞれが顧客のために１つ以上のプログラムを実行することができる、（例えば、１つ以上のデータセンタ内の）複数の物理的コンピューティングシステムを用いて、第三者の顧客のプログラムを実行する。いくつかのこのような実施形態において、顧客は、プログラム実行サービスに対して実行するべきプログラムを提供し得、プログラム実行サービスによって提供される物理的または仮想的なハードウェア設備の実行時間および他のリソースを予約。さらに、顧客および／またはプログラム実行サービスは、専用の物理ネットワーク上での動作の様子を仮想コンピュータネットワークのコンピューティングノードに透過的に提供するように、顧客のコンピューティングノードのためのプログラム実行サービスによって用いられる仮想コンピュータネットワークを定義することができる。さらに、いくつかの実施形態において、ＯＮＭシステムの実施形態によって管理される仮想コンピュータネットワークは、設定可能なネットワークサービスによって提供される、設定されたコンピュータネットワークであってもよい。いくつかのこのような実施形態において、顧客または他のユーザは、ネットワークトポロジー情報および／または提供されるコンピュータネットワークのためのネットワークアクセス制約などのような、提供される構成されたコンピュータネットワークのための様々な種類の設置情報を指定し、提供される設定されたコンピュータネットワークによって１つ以上の遠隔地からやりとりしてもよい。
【００７６】
図３は、コンピューティングノード間の通信を管理するためのシステムの実施形態を実行するのに好適なコンピューティングシステムの例を図示するブロック図である。具体的には、図３は、データセンタまたは同一場所に配置されたコンピューティングノードの他のグループなどのような、コンピューティングシステムおよび相互ネットワークのグループ３９９を示す。いくつかの実施形態において、ユーザまたは他の実体に対して仮想コンピュータネットワークを提供するために、グループ３９９のコンピューティングシステムのいくつかまたはすべてが、ＯＮＭシステムの実施形態によって用いられてもよい。グループ３９９は、サーバコンピューティングシステム３００と、１つ以上の仮想マシンを実行することができるホストコンピューティングシステム３５０と、ホストコンピューティングシステム３５０に類似する他のホストコンピューティングシステム３９０と、ホストコンピューティングシステム３９０を管理し、コンピューティングシステム３９０または別のコンピューティングシステム（図示せず）の１つの上で実行する、オプションの通信管理モジュール３６０とを含む。システムマネージャコンピューティングシステム３００と、ホストコンピューティングシステム３５０および３９０とは、ネットワーキング装置３６２および他のネットワーキング装置（図示せず）を含む内部ネットワーク３８０を介して互いに接続される。ネットワーク３８０は、グループ３９９のための複数の異種の物理ネットワーク（図示せず）を結合し、他のコンピューティングシステム３９５などのような外部ネットワーク（図示せず）および／またはシステムにアクセスを提供し得る相互接続ネットワークであってもよい。図示する例では、ネットワーキング装置３６２は、ネットワーク３８０とホストコンピューティングシステム３５０および３９０との間のゲートウエイを提供する。いくつかの実施形態において、ネットワーキング装置３６２は、例えば、ルータまたはブリッジであってもよい。
【００７７】
コンピューティングシステム３００は、グループ３９９内の仮想コンピュータネットワークを構成し管理するように、ならびに他の機能（例えば、コンピューティングノード上のプログラムを提供、初期化、および実行すること）を提供するように動作する。コンピューティングシステム３００は、ＣＰＵ３０５、様々のＩ／Ｏ構成要素３１０、ストレージ３３０およびメモリ３２０を含む。Ｉ／Ｏ構成要素は、ディスプレイ３１１、ネットワーク接続３１２、コンピュータ読み取り可能なメディアドライブ３１３、および他のＩ／Ｏ装置３１５（例えば、マウス、キーボード、スピーカ、など）を含む。
【００７８】
ホストコンピューティングシステム３５０は、仮想コンピュータネットワーク（例えば、様々なユーザのためにプログラムを実行するコンピューティングノード）内のコンピューティングノードとして使用するためなどの、１つ以上の仮想マシンを提供するために動作する。ホストコンピューティングシステム３５０は、ＣＰＵ３５２、様々なＩ／Ｏ構成要素３５３、ストレージ３５１、およびメモリ３５５を含む。ここでは図示されないが、Ｉ／Ｏ構成要素３５３は、Ｉ／Ｏ構成要素３１０のものと同様の構成要素を含んでもよい。仮想マシン通信マネージャモジュール３５６および１つ以上の仮想マシン３５８は、メモリ３５５において実行しており、モジュール３５６は、関連する仮想マシンコンピューティングノード３５８のための通信を管理する。通信管理モジュール３５６は、図２Ａ〜図２Ｂのマッピング情報２１２および２６２に類似する方法で、ストレージ上に、コンピューティングノード３５８および他のコンピューティングノードと関連する様々なマッピング情報３５４を維持する。他のホストコンピューティングシステム３９０の構造は、ホストコンピューティングシステム３５０のものに類似してもよく、または、その代りに、ホストコンピューティングシステム３５０および３９０のいくつかまたはすべては、提供される仮想マシンを使用せずに、実行プログラムによってコンピューティングノードとして直接動作してもよい。典型的な配置において、グループ３９９は、個別の物理的サブネットワークおよび／またはネットワークの多くに編制された、ここで図示されるものなどのような何百または何千ものホストコンピューティングシステムを含んでもよい。
【００７９】
システム管理モジュール３４０の一実施形態は、コンピューティングシステム３００のメモリ３２０内で実行している。いくつかの実施形態において、システム管理モジュール３４０は、複数のコンピューティングノードが、仮想コンピュータネットワークの一部（例えば、ホストコンピューティングシステム３５０上の１つ以上の仮想マシンコンピューティングノード、またはホストコンピューティングシステム３９０の１つを用いる１つ以上のコンピューティングノード）として用いられる旨の表示を受信し得、いくつかの状況において、仮想コンピュータネットワークのための特定のコンピューティングノードを選択し得る。あるケースでは、様々な仮想コンピュータネットワークの構造および／または所属に関する情報は、モジュール３４０によってストレージ３３０上の提供データベース３３２に格納され、様々な時に通信管理モジュールに対して提供されてもよい。同様に、あるケースでは、様々な仮想ネットワークの設定されたネットワークトポロジーに関する情報は、（図２Ｃの論理ネットワーキングデバイス情報２９４に類似する方法で）モジュール３４０によってストレージ３３０上の論理ネットワーキングデバイスデータベース３３４に格納され、様々な時に通信管理モジュールに対して提供されてもよい。
【００８０】
他の部分でよりいっそう詳細に論じられるように、通信管理モジュール３５６および３６０（および他の関連するコンピューティングノード（図示せず）を管理する他の通信管理モジュール（図示せず））と、システム管理モジュール３４０とは、提供される仮想コンピュータネットワークのための設定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供することを含んで、コンピューティングノード間の通信を管理するために様々な方法で相互に作用してもよい。このような対話は、例えば、ネットワーク３８０上で仮想コンピュータネットワークおよび状況に応じて１つ以上の外部ネットワーク（図示せず）をネットワーキング装置３６２または他のネットワーキング装置（図示せず）の特殊構成なしでオーバーレイすることにより、コンピューティングノードの特殊設定なしで、および通信のカプセル化なしで、コンピューティングノード３５８および／または他のコンピューティングノードが仮想コンピュータネットワーク上で相互通信することを可能にし得る。
【００８１】
コンピューティングシステム３００、３５０、３９０および３９５、およびネットワーキング装置３６２は、単に例示されているだけであって、本発明の範囲を限定するようには意図されないことは十分に理解されるだろう。例えば、コンピューティングシステム３００および／または３５０は、インターネットまたはワールド・ワイド・ウェブ（「Ｗｅｂ」）などのような、グループ３９９の外の１つ以上のネットワークを介することを含んで、図示されない他の装置に接続されてもよい。より一般には、コンピューティングノードまたは他のコンピューティングシステムは、相互に作用することができ、かつ記載された種類の機能性を実行することができるハードウェアまたはソフトウェアの任意の組み合わせを含んでもよく、それには、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク記憶装置および他のネットワーク装置、ＰＤＡ、携帯電話、無線電話、ページャ、電子手帳、インターネット・アプライアンス、テレビベースのシステム（例えば、セットトップボックスおよび／またはパーソナル／ディジタルビデオレコーダを用いて）、および適切な通信能力を含む様々な他の消費者製品が限定せずに含まれる。さらに、いくつかの実施形態において、図示するモジュールによって提供される機能は、より少数のモジュールに組み合わされてもよいし、または追加モジュールに分散されてもよい。同様に、いくつかの実施形態において、図示するモジュールのいくつかの機能性は提供されなくてもよいし、および／または他の追加機能性が利用可能であってもよい。
【００８２】
様々な要素が用いられる間メモリまたはストレージに格納されるように図示されているが、記憶管理とデータ保全の目的のために、メモリと他の記憶装置との間でこれらの要素または一部が転送されてもよいことも十分に理解されるだろう。あるいは、他の実施形態において、ソフトウェアモジュールおよび／またはシステムのいくつかまたはすべては、別の装置上のメモリで実行し、かつ図示されるコンピューティングシステムと相互コンピュータ通信を介して通信してもよい。更に、いくつかの実施形態において、システムおよび／またはモジュールのいくつかまたはすべては、限定されないが、以下を含む、少なくとも部分的にファームウェアおよび／またはハードウェアとして、他の方式で実現されてもよいし、または提供されてもよい：１つ以上の特定用途向けＩＣ（ＡＳＩＣ）、標準的な集積回路、コントローラ（例えば、適切な命令を実行することにより、およびマイクロコントローラおよび／またはエンベデッドコントローラを含むことによる）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブルロジックデバイス（ＣＰＬＤ）等。モジュール、システム、およびデータ構造のいくつかまたはすべてもまた、ハードディスク、メモリ、ネットワークまたは適切なドライブによって、または適切な接続を介して読み出されるポータブル媒体品などのような、コンピュータ読み取り可能な媒体に（例えば、ソフトウェア命令または構造化データとして）格納されてもよい。システム、モジュールおよびデータ構造もまた、無線ベースおよび有線／ケーブルベースの媒体を含む様々なコンピュータ読み取り可能な送信媒体上で生成データ信号（例えば、キャリア波または他のアナログまたはデジタル伝播信号の一部として）として送信されてもよいし、および様々な形態（例えば、単一または多重化されたアナログ信号の一部として、または複数の離散的なデジタルパケットまたはフレームとして）を使用してもよい。このようなコンピュータプログラムプロダクトはまた、他の実施形態において他の形態をとってもよい。したがって、本発明は、他のコンピュータシステム構成により実施されてもよい。
【００８３】
図４Ａ〜図４Ｂは、ＯＮＭシステム管理ルーチン４００の実施形態の例のフローチャートである。ルーチンは、例えば、図１のシステム管理モジュール１１０、図２Ａ〜図２Ｃのシステム管理モジュール２９０、および／または図３のシステム管理モジュール３４０の実行によって提供されてもよく、仮想コンピュータネットワークの設定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供するように通信を管理すること、ならびに、いくつかの状況において他の種類の管理操作を実行することを含んで、１つ以上の中間ネットワークにわたって複数のコンピューティングノード間の通信を管理することを支援することなどを行う。少なくともいくつかの実施形態において、ルーチンは、共通の中間ネットワークにわたって複数の異なる実体のための通信を管理するシステムの一部として提供され得、通信は、各々のコンピューティングノードがその要素に特有の私的仮想コンピュータネットワークを用いて他の関連するコンピューティングノードと透過的に通信することを可能にするように設定される。さらに、ルーチンは、（通信が認証されているか否かの判定で通信管理モジュールを支援することによってなど）無許可の通信が送信先コンピューティングノードに提供されることを防止することを促進することができる。
【００８４】
図示される実施形態において、ルーチンは、要求が受信されるブロック４０５から開始する。ルーチンは、ブロック４１０に進んで要求の種類を判定する。要求の種類が、１つ以上のコンピューティングノードを特定の示された実体および／または要素の仮想コンピュータネットワークに関連づけることであることが判定される場合、たとえばそれらのコンピューティングノードが実体のための仮想コンピュータネットワークの一部となるべき場合（例えば、その実体のために１つ以上のプログラムを実行しているか、実行するべきである）場合、ルーチンは、ブロック４１５に進み、それらのコンピューティングノードを、その示された実体および仮想コンピュータネットワークに関連づける。いくつかの実施形態では、ルーチンは、更に、示された実体および仮想コンピュータネットワークに関連付けるべき１つ以上のコンピューティングノードを、例えば示された実態によって提供された情報に基づいて決定し得るが、他の実施形態においては、このようなコンピューティングノードの選択および／またはそれらのコンピューティングノード上の適切なプログラムの実行が他の方法で実行されてもよい。さらに、他のところでよりいっそう詳細に論じられるように、いくつかの実施形態において、コンピューティングノードの１つ以上は、各々が１つ以上の物理的コンピューティングシステムによって提供される仮想マシンであってもよい。ルーチンは、次にブロック４２０に進み、コンピューティングノードの表示、および示された実体および仮想コンピュータネットワークとのそれらの関連を格納する。具体的には、図示する実施形態において、ルーチンは、コンピューティングノードに対応する物理的基盤ネットワークアドレスの表示と、仮想コンピュータネットワークの一部としてコンピューティングノードのための、実体によって用いられる仮想ネットワークアドレスと、（状況に応じて）コンピューティングノードに対して割り当てられた仮想ハードウェアアドレスと、関連する実体の表示とを格納する。他のところでよりいっそう詳細に論じられるように、コンピューティングノードに対応する物理的基盤ネットワークアドレスは、いくつかの実施形態で、その単一のコンピューティングノードに特有の基盤ネットワークアドレスであり得るが、他の実施形態においては、その代りに、関連する通信管理モジュールによって管理され得るなどの、サブネットワークまたは複数のコンピューティングノードの他のグループを参照してもよい。
【００８５】
受信される要求の種類がコンピューティングノードまたは他のネットワーク装置の仮想ネットワークアドレスのためのアドレス解決に対する要求（管理されたコンピューティングノードのための通信管理モジュールからなど）であることが、その代りにブロック４１０において判定される場合、ルーチンは、その代りに、ブロック４２５に進み、そこでは例えば、要求がなされる管理されたコンピューティングノードが仮想ネットワークアドレスの解決が要求されるコンピューティングノードに対して通信を送信することを認証されるか否かに基づいて（例えば、２つのコンピューティングノードが属する仮想コンピュータネットワークに基づいて）、要求がされる管理されたコンピューティングノードが現在構成されている仮想コンピュータネットワークの一部である有効なコンピューティングノードであるか否かにに基づいて、および／または要求がされる示されたコンピューティングノードを実際に管理する通信管理モジュールから要求が受信されるか否かに基づいて、要求が１つ以上の方法において認証されるか否かを決定する。要求が認証されることが決定される場合、ルーチンは、ブロック４３０に進み、そこではブロック４０５において受信された要求に含まれていたような、特定の仮想コンピュータネットワークのための重要な仮想ネットワークアドレスを取得する（仮想コンピュータネットワークのための取得された要素のネットワーク識別子または仮想コンピュータネットワークに関連する要素の他の表示（例えば、固有の数値または英数字のラベル）に基づいて識別され得るなど）。ルーチンは、次にブロック４３５に進み、仮想コンピュータネットワークのための仮想ネットワークアドレスに関連するコンピューティングノードのための格納された情報（具体的には、ブロック４２０に関して前に格納し得る、コンピューティングノードに対応するネットワーク位置のための物理的基盤ネットワークアドレスにその仮想ネットワークアドレスを関連づける情報に関する情報、および状況に応じて仮想ネットワークアドレスのための他の情報（例えば、関連づけられる仮想ハードウェアアドレス、実際の基盤ネットワークアドレスと共に物理的に実行されたコンピューティングノードまたは（その代りに）実際の基盤ネットワークアドレスを有しない論理ネットワーキング装置に仮想ネットワークアドレスが対応するか否かに関する表示、役割に関する情報、または構成されたネットワークトポロジー情報に関しての仮想ネットワークアドレスに対応する装置のステータス、など）に関する情報を取り出す。ブロック４３５の後、ルーチンは、４４０に進み、要求者に対してとり出された情報の表示を提供する。仮想ネットワークアドレスが、関連する物理的基盤ネットワークアドレスを有しない論理ネットワーキング装置のためのものである場合、例えば、ルーチンは、仮想ネットワークアドレスに対応する装置の状態または種類に関してブロック４４０内で表示を提供することができる。ここでは図示されないが、要求が認証されないことをブロック４２５内の判定が決定するならば、ルーチンは、その代りに、ブロック４０５で受信された要求に対するエラーメッセージにより応答することにより、または受信された要求に対して応答しないことによるなど、その要求のためのブロック４３０〜４４０を実行しなくてもよい。さらに、他の実施形態において、ルーチンは、要求された情報によって応答する前に受信される要求を確認するために（要求を開始したコンピューティングノードがその情報を得ることを認証されることを検証するためになど）、１つ以上の他のテストを実行してもよい。
【００８６】
その代りに、受信される要求が、（その仮想コンピュータネットワークに関連するユーザからなどの）示された仮想コンピュータネットワークのためのネットワークトポロジー情報を設定することであることが、ブロック４１０において判定された場合、ルーチンはブロック４７０に進み、示された仮想コンピュータネットワークのためのネットワークトポロジー情報および状況に応じて、機能がエミュレートされる論理ネットワーキング装置によって表わされるネットワークトポロジーの１つ以上のネットワーキング装置を指定するためなどの、他の構成情報の表示を受信する。ブロック４７５において、ルーチンは、次に、指定されたネットワーキング装置のいくつかまたは全部のための仮想ハードウェアアドレスを、それらの論理ネットワーキング装置を介して通信を送信することを試みるコンピューティングノードによる後の使用のため等に、判定する。ブロック４７５の後、ルーチンは、ブロック４８０に進み、示された仮想コンピュータネットワークのための論理ネットワーキング装置に関する情報および他の構成されたネットワークトポロジー情報を格納する。
【００８７】
受信される要求が別の種類であることがその代りにブロック４１０において判定される場合、ルーチンは、その代りにブロック４８５に進み、別の示されたオペレーションを必要に応じて実行する。例えばいくつかの実施形態において、ルーチンは、特定のコンピューティングノードが、前に特定の実体および／または仮想コンピュータネットワークにより関連づけられていたが、その関連付けが終了する場合（例えば、そのコンピューティングノード上でその実体のための実行されている１つ以上のプログラムが終了する、コンピューティングノードが障害を起こす、またはそうでなければ利用不可能になる等）など、特定のコンピューティングノードに関する保存した情報を更新する要求を受信し得る。ルーチンはまた、更に詳細に他のところで論じられるように、特定のコンピューティングノードの動作を開始することを自動的に決定することを含む、複数のコンピューティングノードのシステムの管理に関する様々な他の機能を実行し得る。さらに、ここでは図示されないが、他の実施形態において、ルーチンは、必要に応じて保存した情報を検討し更新するために不定期の維持管理作業を実行するように、あらかじめ定められた期間が終了した後など、時には他の種類の機能を実行する。さらに、可能な認証上の問題が、仮想ネットワークアドレスのための受信されるアドレス解決要求に関してなどで、検出された場合、ルーチンは、エラーを信号で送るために、および／または必要に応じて他の対応する動作を実行するために様々な動作を実行する。
【００８８】
ブロック４２０、４４０、４８０および４８５の後、ルーチンは、ブロック４９５に進み、終了するための明示的な表示が受信されるまでなど、継続するかどうかを決定する。継続すると決定判定される場合、ルーチンは、ブロック４０５に戻り、そうでなければブロックに４９９進み、終了する。
【００８９】
図５Ａ〜図５Ｂは、ＯＮＭ通信管理ルーチン５００の例示実施形態のフローチャートである。ルーチンは、例えば、図１の通信管理モジュール１０９ａ、１０９ｂ、１０９ｃ、１０９ｄおよび／または１５０、図２Ａ〜図２Ｃの通信管理モジュール２１０および／または２６０、および／または図３の通信管理モジュール３５６および／または３６０の実行によって、たとえば、管理されたコンピューティングノードに（および／またはから）通信を認証するべきか否かを判定すること含む、１つ以上の共有される中間ネットワーク上で私的な仮想コンピュータネットワークを提供するために１つ以上のコンピューティングノードの関連づけられるグループの間の通信を管理するために、および仮想コンピュータネットワークのための構成されたネットワークトポロジーに対応する論理ネットワーキング機能を提供することを支援するなどのために、提供されてもよい。
【００９０】
ルーチンは、ブロック５０５から開始し、そこでは表示がノード通信または他のメッセージに関して受信される。ルーチンは、ブロック５１０に進み、したがって、通信または他のメッセージの型を判定し、それに従って処理を進める。ブロック５１０において、メッセージが、ＡＲＰ要求などのような、ネットワークアドレス解決のための関連する管理されたコンピューティングノードからの要求であることが、判定される場合、ルーチンは、ブロック５１５に進み、要求において示された対象となる仮想ネットワークアドレスを決定する。そして、ルーチンは、ブロック５２０に進み、図４Ａ〜図４Ｂのブロック４２５〜４４０に関して論じられるように、要求を提供したコンピューティングノードに関連する仮想コンピュータネットワークのための示された仮想ネットワークアドレスのための仮想ネットワークアドレス解決のためのシステム管理モジュールに対して、要求を送信する。他のところでよりいっそう詳細に論じられるように、ルーチンは、いくつかの実施形態において、各々の管理されたコンピューティングノードに関連する仮想コンピュータネットワークおよび／または実体に関する情報、ならびに仮想コンピュータネットワークのための設定されたネットワークトポロジー情報を追跡することができるが、他の実施形態においては、少なくともいくつかのこのような情報が、その代りに、コンピューティングノードによりおよび／またはシステム管理モジュールによりルーチンに提供されていてもよい。または、その代りにシステム管理モジュールは、現在のルーチンにより提供され追跡されることなく、その情報を追跡し格納してもよい。ここでは図示されないが、他の実施形態および状況において、このようなアドレス解決要求は、他の方式で処理されてもよい。例えば、特定の通信管理モジュールによって管理されているコンピューティングノードがその通信管理モジュールによって管理される別のコンピューティングノードのためのアドレス解決要求を提供するならば、ルーチンは、その代りに、ローカルに保存した情報に基づいてなどのように、システム管理モジュールとの対話をせずに要求に対して応答してもよい。さらに、図示される実施形態において、受信される要求が、示されたネットワーキング層アドレスに対応するコンピューティングノードのリンク層のハードウェアアドレスを提供するための要求であるが、他の実施形態において、アドレス解決要求は、他の形式を有していてもよいし、または、コンピューティングノードは、仮想ネットワークアドレスを示したコンピューティングノードに関する他の種類の情報を要求してもよい。
【００９１】
図示される実施形態において、ルーチンは、次にブロック５２５に進み、識別された仮想ネットワークアドレスに対応する物理的基盤ネットワークアドレスおよび／または他の情報（例えば、仮想ネットワークアドレスが物理的に実行されない論理ネットワーキング装置に対応するという表示）を含むシステム管理モジュールからの応答を受信し、（例えば、ルーチンによって生成される、または応答において提供される、ダミーの仮想ハードウェアアドレスに基づいて）ルーチンによって後で使用する固有のハードウェアアドレスに対してその物理的基盤ネットワークアドレスおよび／または他の情報をマッピングする情報をローカルに格納する。ルーチンは、次に、要求するコンピューティングノードに対してハードウェアアドレスを提供する（それは、示された仮想ネットワークアドレスと共にコンピューティングノードに対して送信する通信の一部として用いる）。他のところでよりいっそう詳細に論じられるように、提供される物理的基盤ネットワークアドレスの応答は、いくつかの実施形態において、対象の示されたコンピューティングノードに対して特有の物理的基盤ネットワークアドレスを含み得るが、他の実施形態において、物理的基盤ネットワークアドレスは、それらの他のコンピューティングノードを管理する別の通信管理モジュールに対応するように、示されたコンピューティングノードが属する複数のコンピューティングノードのサブネットワークまたは他のグループに対応していてもよい。ルーチンは、次に、ブロック５３０に進み、ブロック５４０−５６０に関して論じられるように、送出方向のノード通信の処理の一部としてブロック５１５〜５２５が実行されたか否かを判定する。そして、そうであれば、ブロック５４７に進む。ここでは図示されないが、いくつかの実施形態において、ルーチンが、その代りに、（例えば、示された送信先コンピューティングノードと通信することを認証されていない、要求するコンピューティングノードに基づいて）システム管理モジュールからのエラー応答を受信し得、または何の応答も受信しない場合がある。そして、そうであれば、要求するコンピューティングノードに対していかなる応答をも送信しなくてもよいし、または、そのコンピューティングノードに、対応するエラーメッセージを送信してもよい。
【００９２】
通信または他のメッセージの型がルーチンによって管理されたコンピューティングノードからルーチンによって管理されない別の示されたリモート送信先コンピューティングノードへの送出方向のノード通信であることが、その代りに、ブロック５１０において判定された場合、ルーチンは、ブロックに５４０進み、通信ヘッダからの送信先コンピューティングノードのための示されたハードウェアアドレスを特定する。ブロック５４５において、前にブロック５２５に関して論じられたように、ルーチンは、その後、その送信先ハードウェアアドレスが送信先コンピューティングノードに対応する物理的基盤ネットワークアドレスに対して（または送信先ハードウェアアドレスが論理ネットワーキング装置に対応するという表示に対して）あらかじめマッピングされたハードウェアアドレスであるか否かを判定する。そうでない場合、ブロック５１５に進み、いくつかの実施形態において、ルーチンは、送出方向のノード通信のためのこのような対応する物理ネットワークアドレスを決定するために、ブロック５１５〜５２５を実行するが、他の実施形態においては、このような機能が実行されない（例えば、示されたハードウェアアドレスがマッピングされたアドレスでないならば、ルーチンは、送信ノードへ戻るエラーメッセージによってなど、送出方向のノード通信に障害を起こさせてもよい）。
【００９３】
示されたハードウェアアドレスがマッピングされたアドレスである場合、またはチェックが実行されない場合、ルーチンは、ブロック５４７に進み、仮想コンピュータネットワークのための設定されたネットワークトポロジーの一部である論理ネットワーキング装置に対して送信先ハードウェアアドレスが対応するか否かを判定する。そうである場合、ルーチンは、ブロック５４９に進み、対象とする送信先に通信を方向づけることに使用される通信ヘッダから送信先仮想ネットワークアドレスを特定して、その後、ブロック５５５に進む。具体的には、ブロック５４９におけるルーチンは、あらかじめ格納されたマッピング情報から、またはブロック５２０および５２５のそれに類似した方法でネットワークアドレス解決要求を実行するためにシステム管理モジュールと対話することによるなどで、特定された送信先仮想ネットワークアドレスに対応する物理的基盤ネットワークアドレスを決定する。
【００９４】
その代りに送信先ハードウェアアドレスが論理ネットワーキング装置に対して対応しないことが、ブロック５４７において判定されるならば、ルーチンは、ブロック５５０に進み、ハードウェアアドレスに対してマッピングされる物理的基盤ネットワークアドレスを取り出す。ブロック５５５において、ルーチンは、次いで、ブロック５５０において取り出された、またはブロック５４９において決定された、物理的基盤ネットワークアドレスを用いて、送信および送信先のコンピューティングノード間の１つ以上の中間ネットワークのためのネットワーキングアドレスプロトコルにより通信ヘッダを書き換える。ヘッダの書き換えは、対応する物理的基盤ネットワークアドレスであるために送信元コンピューティングノードのための仮想ネットワークアドレスを変更することを含む、新たなヘッダの他の情報を変更することをさらに含み、少なくともいくつかの実施形態において、基盤の１つ以上の中間の物理ネットワーク上に仮想コンピュータネットワークのオーバーレイの一部としてカプセル化なしで受信される通信を変更することを含む。更に、送信先ハードウェアアドレスが論理ネットワーキング装置に対応する通信のために、ブロック５５５におけるルーチンは、仮想コンピュータネットワークのための構成されたネットワークトポロジーにより送信先コンピューティングノードに対する通信を転送するために用いられるであろう１つ以上の論理ネットワーキング装置によって実行されるであろう動作および機能をエミュレートするために、論理ネットワーキング機能を提供することに対応する他の変更を、さらに実行してもよい。ブロック５６０において、ルーチンは、次いで、送信先コンピューティングノードに、基盤中間ネットワーク上に変更される送出方向の通信の転送を開始するによってなど、送信先コンピューティングノードに変更される送出方向の通信を提供することを促進する。ここでは図示されないが、他の実施形態において、様々なさらなる種類の処理が、通信が有効であるかまたは別様に様々な方法で認証されることを検証するために、（例えば、送信元コンピューティングノードが送信先コンピューティングノードに対して通信を送信することを認証されることを検証するために、同一の仮想コンピュータネットワークの同一の実体または一部を関連づけられることに基づいて、相互通信することを認証される異なる実体に関連する送信および送信先のコンピューティングノードに基づいて、通信または通信に対する特有の他の情報の型に基づいて、等）送出方向のノード通信のために実行されてもよい。
【００９５】
受信メッセージが外部コンピューティングノードからの管理されたコンピューティングノードの１つのための受入方向のノード通信であることが、ブロック５１０においてその代りに判定された場合、ルーチンは、ブロック５６５に進み、通信ヘッダからの送信および送信先のコンピューティングノードのための物理的基盤ネットワークアドレスを特定する。ブロック５６５の後、ルーチンは、ブロック５７０に進み、状況に応じて受入方向の通信が１つ以上の方法において有効であることを検証する。例えば、ルーチンは、ソースの物理的基盤ネットワークアドレスの位置に対応するコンピューティングノードに対して送信元通信ノードのための物理的基盤ネットワークアドレスが現実にマッピングされるか否かを、システム管理モジュールとの対話に基づいておよび／またはあらかじめルーチンによって取得され格納された他の情報に基づいてなどして、判定してもよい。さらに、ルーチンは、送信先通信ノードのための物理的基盤ネットワークアドレスが実際の管理されたコンピューティングノードに対応するか否かを判定してもよい。ここでは図示されないが、受入方向の通信が有効でないと判定された場合、ルーチンは、１つ以上のエラーを生成し、関連づけられる処理を実行し、および／または、示される宛先ノードにそれを転送せずに受入方向の通信を削除することのような、図示されない様々な動作を行うことができる。例えば、受入方向の通信が現在の管理されたコンピューティングノードに対応しない送信先ネットワークアドレスを示す場合、ルーチンは、受入方向の通信を削除してもよい、および／またはエラーメッセージを開始してもよいし（いくつかの実施形態において、このようなエラーメッセージは送信元コンピューティングノードに対して送信されないが）、または、あらかじめルーチンに支援された、移動されたコンピューティングノードに対する通信を転送することを支援するために他の動作が行われてもよい。
【００９６】
図示される実施形態において、ブロック５７０の後、ルーチンは、ブロック５７５に進み、物理的送信先基盤ネットワークアドレスに対してマッピングされるハードウェアアドレスおよび仮想ネットワークアドレスを取り出し、仮想ネットワークアドレスとハードウェアアドレスと共にコンピューティングノードに送信されるために表示されるように仮想コンピュータネットワークのための通信ヘッダを書き換える。例えば、いくつかの実施形態において、送信先仮想ネットワークアドレスは、送信先物理的基盤ネットワークアドレスのビットのサブセットからなど、送信先物理的基盤ネットワークアドレス自体から取得されてもよい。さらに、送信先ハードウェアアドレスは、あらかじめブロック５２５に関して論じられたように、あらかじめ物理的送信先基盤ネットワークアドレスに対してマッピングされてもよい。このような先のマッピングが生じていない状況において、ルーチンは、その代りに、このような情報を取得するためにブロック５１５〜５２５を実行してもよい。ルーチンは、仮想コンピュータネットワークのための通信ヘッダを同様に書き換えて、それがコンピューティングノードから送信され、ソース仮想ネットワークアドレスとソースハードウェアアドレスが送信元のコンピューティングノードに対応するように見えるようにすることができる。さらに、少なくともいくつかの実施形態において、ブロック５７５におけるルーチンは、仮想コンピュータネットワークのための構成されたネットワークトポロジーにより、送信先コンピューティングノードに対する通信を転送するために用いられていた１つ以上の論理ネットワーキング装置によって実行されるであろう動作および機能をエミュレートするために、論理ネットワーキング機能を提供することに対応する、受入方向の通信に対する他の変更をさらに実行してもよい。ブロック５７５の後、ルーチンは、ブロック５８０に進み、宛先ノードに対して変更される受入方向の通信の転送を開始するによってなど、送信先コンピューティングノードに対して変更される受入方向の通信を提供することを促進する。
【００９７】
別の種類のメッセージが受信されることがブロック５１０においてその代りに判定された場合、ルーチンは、ブロック５８５に進み、別の示された動作を必要に応じて実行する（特定のコンピューティングノードに関連する実体に関する情報を格納すること、特定の仮想コンピュータネットワークのために設定されたネットワークトポロジーに関する情報を格納すること、仮想コンピュータネットワークのための設定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供するためにコンピューティングノードからの要求および他のメッセージにいわば応答すること（例えば、それらが物理的に実証されたならば、指定された論理ネットワーキング装置によって実行されるであろう動作および他の機能をエミュレートすることによって）、管理されているコンピューティングノードまたはリモートコンピューティングノードに関する変更を反映するためにあらかじめマッピングされ保存された情報を更新することなどである）。
【００９８】
ブロック５６０、５８０、または５８５の後、または送出方向の通信に関して処理が実行されていないことがブロック５３０においてその代りに判定されるならば、ルーチンは、ブロック５９５に進み、終了するための明示的な表示が受信されるまでなど、継続すべきであるか否かを決定する。継続すべきであると決定された場合、ルーチンは、ブロック５０５に戻り、そうでなければブロックに５９９に進んで終了する。
【００９９】
さらに、様々な実施形態は、顧客ユーザおよび他の実体のために、コンピューティングノードおよびそれらの通信を構成する目的のためにシステム管理モジュールの実施形態と対話するメカニズムを提供することができる。例えば、いくつかの実施形態は、ユーザが、仮想コンピュータネットワーク、仮想コンピュータネットワークのためのネットワークトポロジー情報の設定、および仮想ネットワークの帰属の指定の作成または削除を管理すること、ならびに提供されるアプリケーションの運用および管理に関連するより全般的な管理機能（例えば、ユーザアカウントの作成または変更、新たなアプリケーションの提供、ホストとして動作されるアプリケーションの起動、終了、または監視、グループに対するアプリケーションの割り当て、時刻または他のシステムリソースの予約など）を行うことができる、対話型のコンソール（例えば、対話型ユーザインタフェース、ウェブブラウザベースのインタフェース、などを提供するクライアントアプリケーションプログラム）を提供することができる。いくつかの実施形態において、ＯＮＭシステムの実施形態の機能のいくつかまたはすべては、ユーザまたは他の実体からの料金と交換に提供されてもよい。そして、そうであれば、システム管理モジュールの実施形態と対話するための、顧客ユーザおよび他の実体のためのメカニズムは、ユーザおよび他の実体が、支払いおよび支払い関連の情報を提供するための、ならびにそれに対応する支払情報を監視するためのメカニズムを含んでもよい。さらに、いくつかの実施形態は、ライブラリまたはクラスインタフェースによって提供されるＡＰＩなどのような（例えば、Ｃ、Ｃ＋＋、またはＪａｖａ（登録商標）で書かれたプログラムによって呼び出されるように）、またはそうでなければ、および／またはＷｅｂサービスを介してなどのネットワークサービスプロトコルを用いて、他のコンピューティングシステムおよびプログラムが、記載された機能の少なくともいくつかをプログラムによって呼び出すことを可能にするＡＰＩを提供してもよい。記載された技術が用いられ得るプログラム実行サービスの例示実施形態の例の運用に関する更に詳細な記述は、いずれもその全体が参考されることによって本明細書に援用される２００６年３月３１日に出願され「コンピューティングノード間の通信を管理すること（Managing Communications Between Computing Nodes）」と題された米国特許出願第１１／３９４，５９５号、２００６年３月３１日に出願され「マルティプルコンピューティングシステムによりプログラムの実行を管理すること（Managing Execution of Programs by Multiple Computing Systems）」題された米国特許出願第１１／３９５，４６３号、２００７年３月２７日に出願され「コンピューティングノード間の相互通信を構成すること（Configuring Intercommunications Between Computing Nodes）」と題された米国特許出願第１１／６９２，０３８号、および２００８年１２月１０日に出願され「設定可能な私的なコンピュータネットワークにアクセスを提供すること（Providing Access To Configurable Private Computer Networks）」と題された米国特許出願第１２／３３２，２１４号にて得ることができる。さらに、少なくともＯＮＭシステムのいくつかの実施形態によって��いら得る、提供される仮想ネットワークの運営に関する更なる詳細な記述は、その全体を参考することによって本明細書に援用される２００８年３月３１日に出願され「コンピューティングノード間の通信を設定すること（Configuring Communications Between Computing Nodes）」と題された米国特許出願第１２／０６０，０７４号にて利用可能である。
【０１００】
いくつかの実施形態において、仮想マシンを提供する複数の物理的マシンを収容するデータセンタのコンテキストにおいて記載される技術が使用されるが、他の具体化のシナリオが可能であることは、また十分に理解されるだろう。例えば、記載される技術は、組織全体に渡るネットワーク、またはその従業員および／または成員のために企業または他の機関（例えば大学）によって運用されるネットワークのコンテキストにおいて使用されてもよい。あるいは、記載される技術は、ネットワークセキュリティ、有効性、および隔離を改善するために、ネットワークサービスプロバイダによって使用されることができ得る。さらに、実施形態の例は、様々な目的のためのデータセンタまたは他のコンテキスト内で使用されてもよい。例えば、顧客に対して、提供されるアプリケーションに対するアクセスを販売するデータセンタオペレータまたはユーザは、顧客のアプリケーションとデータとの間のネットワーク隔離を提供するために、いくつかの実施形態において記載される技術を用いてもよい。ソフトウェア開発チームは、（例えば、開発、ビルド、試験、展開、製造、など）彼らが用いる様々な環境間のネットワーク隔離を提供するために、いくつかの実施形態おいて記載される技術を用いてもよい。組織は、１つの従業員グループまたは部門（例えば人事部）によって利用されたコンピューティング資源を別の従業員グループまたは部門（例えば会計課）によって利用されるコンピューティング資源から分離するために、いくつかの実施形態おいて記載される技術を用いてもよい。または、複数の構成要素アプリケーション（例えば、多重層ビジネスアプリケーション）を展開させているデータセンタの運用者またはユーザは、様々な構成要素の種類（例えば、ウェブのフロントエンド、データベースサーバ、ビジネスルールエンジン、など）のための機能の分解および／または分離を提供するために、いくつかの実施形態において記載される技術を用いてもよい。より一般には、記載される技術は、別個のコンピューティングシステムおよび／またはネットワークの物理的区分化を従来は必要とするであろう、ほとんどの任意の状況を反映するように、物理ネットワークを仮想化するために用いることができる。
【０１０１】
いくつかの実施形態において、上で論じられたルーチンによって提供される機能が、より多くのルーチンの中に分割される、またはより少数のルーチンに統合される等のように、別の方法で提供されてもよいことは、また十分に理解されるだろう。同様に、いくつかの実施形態において図示説明されたルーチンは、他の図示説明するルーチンがその代りにこのような機能をそれぞれ欠くまたは含む場合や、または提供される機能の量が変更される場合など、記載されたものよりも多い、または少ない機能を提供してもよい。さらに、各種動作が、特定の方式で（例えば、順次または並行して）および／または特定の順序で実行されるように図示説明されるかもしれないが、当業者は、他の実施形態において、動作が他の順序および他の方式で実行されてもよいことを十分に理解するだろう。当業者はまた、上で論じたデータ構造が、単一データ構成を多重データ構成に分割することによって、または単一データ構成に多重データ構成を統合することによってなどの、異なる方式において構成されてもよいことを十分に理解するだろう。同様に、いくつかの実施形態において、図示説明されたデータ構造は、他の図示説明されたデータ構造がその代りにこのような情報をそれぞれ欠くまたは含む場合、または格納される情報の量または型が変更される場合など、記載されたものよりも多い、または少ない情報を格納してもよい。
【０１０２】
［付記項１］
コンピュータネットワークのための論理ネットワーキング機能を提供するためのコンピューティングシステムのための方法であって、前記方法は、
第１の仮想コンピュータネットワークのために指定されたネットワークトポロジーを介して配置された複数のコンピューティングノードの量を指定する設定情報を受信することであって、前記ネットワークトポロジーは、前記複数のコンピューティングノードの別個のサブセットを各々含み、それぞれ複数の指定された物理的ルータ装置のうちの１つに関連づけられる複数のサブネットワークを含み、前記複数のコンピューティングノードは、それぞれ前記第１の仮想コンピュータネットワークのための別の仮想ネットワークアドレスを有することと、
前記複数のコンピューティングノードを相互に接続する別個の物理的基盤ネットワーク上に前記第１の仮想コンピュータネットワークをオーバーレイすることにより、前記受信された設定情報に従って自動的に前記第１の仮想コンピュータネットワークを実現することであって、前記複数のコンピューティングノードは、それぞれ前記基盤ネットワーク上の別個の位置に各々配置されており、前記第１の仮想コンピュータネットワークの実現は、前記複数の物理的ルータ装置を物理的に提供せずに、前記複数の物理的ルータ装置の機能をエミュレートすることを含むことと、
前記コンピューティングシステム上で実行する通信管理モジュールの制御下で、１つ以上の前記複数の物理的ルータ装置の機能をエミュレートするような方式で、前記複数のコンピューティングノード間の多重通信を自動的に管理することであって、それぞれの通信は、前記複数のコンピューティングノードの送信元の１つからであって、前記複数のコンピューティングノードのリモート送信先の１つに向けられ、宛先ノードのための仮想ネットワークアドレスを含み、および送信元コンピューティングノードが属する前記サブネットワークの１つに関連する物理的ルータ装置のための仮想ハードウェアアドレスを含むことと
を含み、前記通信の各々の管理は、
通信において含まれる前記仮想ネットワークアドレスに基づいて前記通信のための送信先コンピューティングノードを特定し、前記基盤ネットワーク内の前記送信先コンピューティングノードの前記位置に対して前記基盤ネットワーク上に通信を転送することと、
前記通信において含まれる前記仮想ハードウェアアドレスに基づいて前記通信のための物理的ルータ装置を特定し、前記特定された物理的ルータ装置が前記ネットワークトポロジーに基づいて前記送信元コンピューティングノードから前記送信先コンピューティングノードに前記通信を転送したならば、前記特定された物理的ルータ装置が前記通信に対して追加するであろう情報を含めるように前記通信を変更することと、
前記送信先コンピューティングノードに前記変更された通信を提供することとを含む
方法。
【０１０３】
［付記項２］
前記通信管理モジュールは、前記通信管理モジュールによって管理される前記多重通信が関連する部分のコンピューティングノードによって送信された通信であるように、前記複数のコンピューティングノードの前記部分に関連づけられ、前記通信管理モジュールは、前記関連する部分のコンピューティングノードが属する前記物理的基盤ネットワークの第１の物理的サブネットワークをさらに管理し、前記関連する部分の前記コンピューティングノードは、前記通信管理モジュールが前記２つ以上の前記サブネットワークに関連する前記物理的ルータ装置の２つ以上のための前記機能をエミュレートするように、前記第１の仮想コンピュータネットワークの前記サブネットワークの２つ以上に属し、各々の前記管理された通信を変更することは、前記通信に含まれた前記仮想ハードウェアアドレスを通前記信のための前記送信先コンピューティングノードに対応する仮想ハードウェアアドレスであるように変更するステップを含む、付記項１に記載の方法。
【０１０４】
［付記項３］
前記通信管理モジュールは、前記複数のコンピューティングノードの関連する部分を各々管理するオーバーレイネットワーク管理システムの多重通信管理モジュールの１つであり、前記第１の仮想コンピュータネットワークは、複数のリモートユーザーのために前記オーバーレイネットワーク管理システムによって提供される複数の仮想コンピュータネットワークの１つであり、複数の仮想コンピュータネットワークは、それぞれ前記物理的基盤ネットワーク上にオーバーレイされ、前記オーバーレイネットワーク管理システムによって提供される多重の複数のコンピューティングノードを含む、付記項２に記載の方法。
【０１０５】
［付記項４］
コンピュータネットワークのための論理ネットワーキング機能を提供するためのコンピュータで実現される方法であって、前記方法は、
指定されたネットワークトポロジーを介して配置された複数のコンピューティングノードを含む第１の仮想コンピュータネットワークのための設定情報を受信することであって、前記複数のコンピューティングノードは、それぞれ前記第１の仮想コンピュータネットワークのための別個の仮想ネットワークアドレスを有し、前記設定情報は、前記複数のコンピューティングノードを相互に接続し、かつ前記複数のコンピューティングノードの１つ以上に各々関連する１つ以上の指定されたネットワーキング装置を表示することと、
１つ以上の設定されたコンピューティングシステムの制御下で、別個の基盤ネットワーク上で前記第１の仮想コンピュータネットワークをオーバーレイすることにより、および前記指定されたネットワークトポロジーを物理的に実装せずに、前記複数のコンピューティングノード間の複数の通信のための前記指定されたネットワークトポロジーをエミュレートすることにより、前記受信した設定情報に従って前記第１の仮想コンピュータネットワークを自動的に提供することであって、前記複数の通信は、それぞれ前記複数のコンピューティングノードの送信元の１つから、それぞれ前記通信のための送信先コンピューティングノードである前記複数のコンピューティングノードの１つ以上に対して各々送信されており、各通信は、前記１つ以上の送信先コンピューティングノードに対応する仮想ネットワークアドレスを含み、前記通信の最初の中間の送信先である前記指定されたネットワーキング装置の１つに関連する仮想ハードウェアアドレスを含むことと
を含み、前記指定されたネットワークトポロジーの前記エミュレートは、
前記複数通信の各々のために、前記通信に含まれる前記仮想ネットワークアドレスに基づいて前記１つ以上の送信先コンピューティングノードを特定することと、
前記１つ以上の送信先コンピューティングノードの各々のために、
前記送信先コンピューティングノードの位置に対して前記基盤ネットワーク上で前記通信を転送することと、
関連する仮想ハードウエアアドレスが前記通信において含まれる前記指定されたネットワーキング装置によって前記送信元コンピューティングノードから前記送信先コンピューティングノードに前記指定されたネットワークトポロジーを介して転送された前記通信に対応する情報を含めるように前記通信を変更することと、
前記送信先コンピューティングノードに前記変更された通信を提供することとを含む
方法。
【０１０６】
［付記項５］
前記指定されたネットワークトポロジーは、前記複数のコンピューティングノードの別個のサブセットを各々含む前記第１の仮想コンピュータネットワークの複数の論理的サブネットワークを含み、前記１つ以上の指定されたネットワーキング装置は、前記複数の論理的サブネットワークの１つに各々関連づけられる複数の論理的ルータ装置を含む、付記項４に記載の方法。
【０１０７】
［付記項６］
前記指定されたネットワークトポロジーをエミュレートすることは、別個の論理的サブネットワークの一部である送信元コンピューティングノードと送信先コンピューティングノードとの間で送信される通信のために実行される、付記項５に記載の方法。
【０１０８】
［付記項７］
前記指定されたネットワークトポロジーをエミュレートすることは、１つ以上の論理ネットワーキング装置によって、前記１つ以上の物理的ネットワーキング装置を論理的に表わすことと、前記指定されたネットワークトポロジーを介して前記複数の通信を転送する際に前記１つ以上の論理ネットワーキング装置の機能をエミュレートすることとを含む、付記項４に記載の方法。
【０１０９】
［付記項８］
送信先コンピューティングノードに指定されたネットワーキング装置によって転送された前記通信に対応する情報を含むように前記複数の通信の各々の１つ以上を変更することは、前記指定されたネットワーキング装置に関連する前記仮想ハードウェアアドレスを、前記通信において、前記通信のための前記送信先コンピューティングノードに対応する別個の仮想ハードウェアアドレスにより置き換えることを含み、ネットワーク転送ホップの発生を反映するように前記通信のヘッダを変更することを含む、付記項４に記載の方法。
【０１１０】
［付記項９］
前記受信された設定情報に従って前記第１の仮想コンピュータネットワークを提供することは、
前記複数のコンピューティングノードの各々と前記指定されたネットワーキング装置の各々とのための前記第１の仮想コンピュータネットワークのための仮想ハードウェアアドレスを追跡することと、
前記複数のコンピューティングノードの各々のために、前記指定されたネットワークトポロジー内の前記指定されたネットワーキング装置のローカルの１つを追跡することと、
前記要求した前記要求するコンピューティングノードの前記ローカルの指定されたネットワーキング装置によって提供されるであろう情報に対する前記複数のコンピューティングノードからの複数の要求の各々について、前記要求した前記要求するコンピューティングノードの前記ローカルの指定されたネットワーキング装置の機能をエミュレートするような様式で要求に対して応答することと
を含む、付記項８に記載の方法。
【０１１１】
［付記項１０］
前記１つ以上の指定されたネットワーキング装置は、複数の論理ネットワーキング装置を含み、前記指定されたネットワークトポロジーを介して前記多重通信の１つ以上の各々を転送することは、前記通信を転送するであろう前記複数の論理ネットワーキング装置の２つ以上を含み、送信先コンピューティングノードに対して指定されたネットワーキング装置によって転送された前記通信に対応する情報を含むように前記１つ以上の通信の各々を変更することは、前記指定されたネットワーキング装置に関連する前記仮想ハードウェアアドレスを、前記通信において、前記通信のための前記送信先コンピューティングノードに対応する別個の仮想ハードウェアアドレスにより置き換えることを含み、前記指定されたネットワークトポロジーを介して前記通信を転送するであろう前記２つ以上の論理ネットワーキング装置の量に対応するホップを転送する複数のネットワークの量の発生を反映するように前記通信のヘッダを変更することとを含む、付記項４に記載の方法。
【０１１２】
［付記項１１］
前記第１の仮想コンピュータネットワークを提供することは、前記複数のコンピューティングノード間の複数の他の通信を管理することをさらに含み、前記複数の別の通信は、それぞれ前記複数のコンピューティングノードの送信元の１つから前記複数のコンピューティングノードの送信先の１つに送信され、前記送信先コンピューティングノードのための前記仮想ネットワークアドレスを含み、前記送信先コンピューティングノードに関連する仮想ハードウェアアドレスを含み、前記複数の別の通信の各々を管理することは、前記送信先コンピューティングノードの前記位置に対して前記基盤ネットワーク上に前記別の通信を転送し、前記指定されたネットワークトポロジーを介して転送される前記通信に対応する情報を含むようにする変更なしで前記送信先コンピューティングノードに対して前記別の通信を提供することを含む付記項４に記載の方法。
【０１１３】
［付記項１２］
前記指定されたネットワークトポロジーは、前記複数のコンピューティングノードの別個のサブセットを各々含む前記第１の仮想コンピュータネットワークの複数の論理サブネットワークを含み、前記複数の通信は、それぞれ２つの別個の論理的サブネットワークの一部である送信元コンピューティングノードと少なくとも１つの送信先コンピューティングノードとの間のものであり、前記複数の他の通信は、単一の論理的サブネットワークの一部である送信元コンピューティングノードと送信先コンピューティングノードの間のものである、付記項１１に記載の方法。
【０１１４】
［付記項１３］
前記基盤ネットワークは、複数の相互に連結した物理的ネットワーキング装置を含む物理ネットワークであり、前記複数のコンピューティングノードの各々は、前記基盤ネットワークアドレス内の前記コンピューティングノードの位置に対応し、かつ前記コンピューティングノードのための前記仮想ネットワークアドレスとは異なる、関連する基盤ネットワークアドレスを有し、送信先コンピューティングノードの前記位置に対して前記基盤ネットワーク上で前記複数の通信の各々を転送することは、前記１つの物理的ネットワーキング装置が、通信を、前記基盤ネットワーク内の前記送信先コンピューティングノードの前記位置にルーティングするために前記送信先コンピューティングノードのための前記基盤ネットワークアドレスを用いるように、前記基盤ネットワークの前記物理的ネットワーキング装置の１つに対して通信を送信することを含む、付記項４に記載の方法。
【０１１５】
［付記項１４］
前記第１の仮想コンピュータネットワークのための前記設定情報は、前記第１の仮想コンピュータネットワークが提供されるユーザから受信される、付記項４に記載の方法。
【０１１６】
［付記項１５］
前記複数のコンピューティングノードは、それぞれ前記複数のホスト物理的コンピューティングシステムの１つの上で提供される仮想マシンのであり、前記方法は、前記１つの物理的コンピューティングシステム上で提供される前記仮想マシンコンピューティングノードによる通信を管理するために前記物理的コンピューティングシステムの１つの上で実行する仮想マシン通信マネージャモジュールによって実行され、前記仮想マシン通信マネージャモジュールは、複数ユーザに対して前記基盤ネットワーク上で各々オーバーレイされる複数の仮想コンピュータネットワークを提供するオーバーレイネットワーク管理システムの複数の通信管理モジュールの１つである、付記項１４に記載の方法。
【０１１７】
［付記項１６］
複数のコンピューティングノードを含む第１の仮想コンピュータネットワークのための指定された論理ネットワークトポロジーに関する情報を取得することであって、前記第１の仮想コンピュータネットワークは、前記複数のコンピューティングノードを相互に接続する別個の基盤ネットワーク上でオーバーレイされており、前記複数のコンピューティングノードの各々は、前記第１の仮想コンピュータネットワークのための関連する仮想ネットワークアドレスを有し、前記基盤ネットワーク内の前記コンピューティングノードの位置に対応する別個の関連する基盤ネットワークアドレスを有することと、
第１の仮想コンピュータネットワークのために前記指定された論理的ネットワークトポロジーを仮想的に実現するように前記複数のコンピューティングノード間で送信される複数の通信を自動的に管理することであって、前記複数の通信は、それぞれ第１のコンピューティングノードから送信されており、第２の送信先コンピューティングノードのための前記仮想ネットワークアドレスを含むことと
を含む方法を実行することにより、コンピュータ読み取り可能な媒体の内容によって、コンピューティングシステムが、コンピュータネットワークのための論理ネットワーキング機能を提供することが可能となる、コンピュータ読み取り可能な媒体であって、
前記複数の通信の各々を管理することは、
前記基盤ネットワーク内の前記第２のコンピューティングノードの前記位置に対して前記基盤ネットワーク上で前記通信を転送するために、前記第２のコンピューティングノードに関連する前記基盤ネットワークアドレスを用いることと、
前記第２のコンピューティングノードに対して前記通信を提供する前に、前記論理的ネットワークトポロジーを介して前記第１のコンピューティングノードから前記第２のコンピューティングノードに前記通信を転送することをエミュレートする情報を含むように前記通信を変更すること
を含む、
コンピュータ読み取り可能な媒体。
【０１１８】
［付記項１７］
前記取得される情報は、前記第１の仮想コンピュータネットワークが提供されるユーザによって指定された設定情報であり、前記指定された論理的ネットワークトポロジーは、前記複数のコンピューティングノードを相互に接続し、かつ前記複数のコンピューティングノードの１つ以上に各々関連づけられる、１つ以上の指定されたネットワーキング装置を表示し、前記第１の仮想コンピュータネットワークのための前記指定された論理的ネットワークトポロジーを前記仮想的に実現することは、もし１つ以上の指定されたネットワーキング装置が物理的に実装され、かつ送信元コンピューティングノードから送信先コンピューティングノードに前記通信を転送するために用いられたならば、前記１つ以上の指定されたネットワーキング装置によって提供されるであろう機能をエミュレートすることを含む、付記項１６に記載のコンピュータ読み取り可能な媒体。
【０１１９】
［付記項１８］
前記複数のコンピューティングノードの各々と前記１つ以上の指定されたネットワーキング装置の各々は、前記第１の仮想コンピュータネットワークのための別個の仮想ハードウェアアドレスをさらに有し、前記複数の通信の各々は、前記通信の最初の意図する送信先のための仮想ハードウェアアドレスをさらに含み、前記複数の通信の各々を変更することは、前記通信内に含まれる仮想ハードウェアアドレスが対応する、前記指定されたネットワーキング装置の１つを決定し、かつ前記通信を転送した場合に前記判定されたネットワーキング装置によって追加されたであろう情報を前記通信に対して追加するステップをさらに含む、付記項１７に記載のコンピュータ読み取り可能な媒体。
【０１２０】
［付記項１９］
前記コンピュータ読み取り可能な媒体は、前記内容が格納される前記コンピューティングシステムのメモリと、前記内容を含む生成された信号を格納するデータ伝送媒体のうちの少なくとも１つであり、前記内容は、実行される際、前記コンピューティングシステムに前記方法を実行させる命令である付記項１６に記載のコンピュータ読み取り可能な媒体。
【０１２１】
［付記項２０］
コンピュータネットワークのための論理ネットワーキング機能を提供するために構築されたシステムであって、
１つ以上のコンピューティングシステムの１つ以上のプロセッサと、
１つ以上のプロセッサの少なくとも１つによって実行される際、１つ以上の中間ネットワークを用いて実現される第１の仮想コンピュータネットワークのための論理ネットワーキング機能を提供するように各々設定される１つ以上の通信管理モジュールであって、前記１つ以上の中間ネットワークは、前記第１の仮想コンピュータネットワークの複数のコンピューティングノードを物理的に相互に接続する複数の物理的ネットワーキング装置を含み、前記複数のコンピューティングノードの各々は、第１の仮想コンピュータネットワークのための関連する第１の仮想ネットワークアドレスを有し、前記１つ以上の中間ネットワークに対応する別個の関連する第２のネットワークアドレスを有している、前記１つ以上の通信管理モジュールと
を備え、前記論理ネットワーキング機能を提供することは、
前記複数のコンピューティングノードを論理的に相互に接続し、かつ前記１つ以上の中間ネットワークの前記物理的ネットワーキング装置とは異なる、前記第１の仮想コンピュータネットワークの１つ以上の指定された論理ネットワーキング装置に関する設定情報の取得することと、
前記指定された論理ネットワーキング装置の機能を実現するように、前記複数のコンピューティングノード間で送信される複数の通信を自動的に管理することであって、前記複数の通信の各々を管理することは、前記送信先コンピューティングノードに前記１つ以上の中間ネットワークの前記物理的ネットワーキング装置の少なくとも１つを介して前記通信を転送するために、前記通信のための送信先コンピューティングノードの前記第２のネットワークアドレスを用いることを含み、前記複数の通信の各々を管理することは、前記複数のコンピューティングノードを論理的に相互に接続する前記指定された論理ネットワーキング装置の１つ以上により前記通信を転送することをエミュレートする情報を含むように前記通信を変更することをさらに含むことと
を含むシステム。
【０１２２】
［付記項２１］
前記１つ以上の中間ネットワークは、前記第１の仮想コンピュータネットワークがオーバーレイされる基盤ネットワークであり、前記複数のコンピューティングノードの前記関連する第２のネットワークアドレスは、前記基盤ネットワーク内の前記複数のコンピューティングノードの位置に対応する基盤ネットワークアドレスであり、前記１つ以上の指定された論理ネットワーキング装置は、前記複数のコンピューティングノードのサブセットに各々関連づけられる複数の指定された論理ネットワーキング装置を含み、前記設定情報は、前記複数の論理ネットワーキング装置を含む前記第１の仮想コンピュータネットワークの論理ネットワークトポロジーをさらに指定し、前記論理ネットワーキング機能を提供することは、もし前記複数の指定された論理ネットワーキング装置が物理的に実装され、かつ送信元コンピューティングノードから送信先コンピューティングノードに前記通信を転送するために用いられるならば、前記複数の指定された論理ネットワーキング装置によって提供されるであろう機能をエミュレートすることを含む、付記項２０に記載のシステム。
【０１２３】
［付記項２２］
前記複数のコンピューティングノードの各々と前記１つ以上の指定された論理ネットワーキング装置の各々とは、前記第１の仮想コンピュータネットワークのための別個の仮想ハードウェアアドレスをさらに有し、前記複数の通信の各々は、前記通信の最初の意図する送信先のための仮想ハードウェアアドレスをさらに含み、前記複数の通信の各々を変更することは、前記通信内に含まれる仮想ハードウェアアドレスが対応する、前記指定された論理ネットワーキング装置の１つを決定し、前記通信を転送した場合に前記決定された論理ネットワーキング装置によって追加されたであろう情報を前記通信に対して追加することをさらに含み、前記１つ以上の通信管理モジュールは、前記第１の仮想コンピュータネットワークを提供し、かつ前記第１の仮想コンピュータネットワークのための前記論理ネットワーキング機能の提供を自動的に管理する、オーバーレイネットワーク管理システムの一部である、付記項２１に記載のシステム。
【０１２４】
［付記項２３］
前記１つ以上の通信管理モジュールは、前記複数のコンピューティングノードのサブセットの関連するグループから送信された通信を各々管理する複数の通信管理モジュールを含み、前記１つ以上のコンピューティングシステムは、前記複数の通信管理モジュールを実行する複数のコンピューティングシステムを含み、前記システムは、前記複数のコンピューティングシステムをさらに含み、前記複数のコンピューティングシステムの１つ以上は、それぞれ前記コンピューティングシステムが提供する仮想マシンによって提供される前記コンピューティングノードが、前記実行する通信管理モジュールのためのコンピューティングノードの前記関連するグループであるように、前記複数のコンピューティングノードの１つを各々提供する複数の仮想マシンを提供し、前記コンピューティングシステムのための仮想マシン管理モジュールの一部として前記通信管理モジュールの１つを実行する、付記項２０に記載のシステム。
【０１２５】
［付記項２４］
前記１つ以上の通信管理モジュールは、それぞれ前記１つ以上のコンピューティングシステムの前記少なくとも１つのプロセッサにより実行するためのソフトウェア命令を含む、付記項２０に記載のシステム。
【０１２６】
［付記項２５］
前記１つ以上の通信管理モジュールは、それぞれ
前記複数のコンピューティングノードを論理的に相互に接続し、かつ前記１つ以上の中間ネットワークの前記物理的ネットワーキング装置とは異なる、前記第１の仮想コンピュータネットワークの１つ以上の指定された論理ネットワーキング装置に関する設定情報を取得することと、
前記指定された論理ネットワーキング装置の機能を実現するように、前記複数のコンピューティングノード間で送信される複数の通信を自動的に管理することであって、前記複数の通信の各々を管理することは、前記送信先コンピューティングノードに前記１つ以上の中間ネットワークの前記物理的ネットワーキング装置の少なくとも１つを介して前記通信を転送するために、前記通信のための送信先コンピューティングノードの前記第２のネットワークアドレスを用いることを含み、前記複数の通信の各々を管理することは、前記複数のコンピューティングノードを論理的に相互に接続する前記指定された論理ネットワーキング装置の１つ以上により前記通信を転送することをエミュレートする情報を含むように前記通信を変更することをさらに含むことと
によって前記第１の仮想コンピュータネットワークのための論理ネットワーキング機能を提供するための手段から各々構成される、付記項２０に記載のシステム。
【０１２７】
［付記項２６］
特定の実施形態が説明の目的のためここに記載されたが、本発明の精神および範囲を逸脱せずに様々な変更がされてもよいことは、前述から十分に理解されるだろう。したがって、本発明は、添付された請求項およびその中に詳述された要素によって以外には限定されない。さらに、本発明のある態様がある請求項の様式で以下に示されるが、本発明者は、任意の有効な請求項の様式で本発明の様々な態様を想定する。例えば、本発明のいくつかの態様のみがコンピュータ読み取り可能な媒体で具体化されるように目下詳述されているかもしれないが、他の態様も同様にそのように具体化されてもよい。
【図１】
0006306640.tif 000002
【図２Ａ】
0006306640.tif 000003
【図２Ｂ】
0006306640.tif 000004
【図２Ｃ】
0006306640.tif 000005
【図２Ｄ】
0006306640.tif 000006
【図３】
0006306640.tif 000007
【図４Ａ】
0006306640.tif 000008
【図４Ｂ】
0006306640.tif 000009
【図５Ａ】
0006306640.tif 000010
【図５Ｂ】
0006306640.tif 000011