(57)【特許請求の範囲】
【請求項１】
コンピューティングノード間の通信を構成するコンピュータシステムのための方法であって、
第１のコンピュータシステム上でホストされる複数の仮想マシンの通信を管理する、前記第１のコンピュータシステム上にある仮想マシン・マネージャ・モジュールの制御下において、
前記仮想マシン・マネージャ・モジュールによって、前記ホストされる複数の仮想マシンの１つであり、かつ第１の仮想ネットワークの一部である送信側ノード上の実行プログラムから出力通信を受信するステップであって、前記出力通信は、少なくとも１つの他の第２の物理ネットワークを介して前記第１のコンピュータシステムに通信可能に接続される第２のコンピュータシステム上でホストされる別の仮想マシンであるリモートの宛先ノードに対して意図され、及び前記出力通信は、前記第１の仮想ネットワークに従って前記送信側ノードによって特定される前記宛先ノードのための第１の宛先ネットワークアドレスを有する、受信するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記実行プログラムが前記出力通信を前記宛先ノードに送信することが許可されるかどうかを自動的に判定するステップと、
前記実行プログラムが許可されると判定される場合、前記出力通信を前記少なくとも１つの第２のネットワーク上で前記宛先ノードに送信するステップであって、該送信するステップは、
前記仮想マシン・マネージャ・モジュールによって、前記少なくとも１つの第２のネットワークに従って特定される前記宛先ノードに対する別個の第２の宛先ネットワークアドレスを自動的に判定するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記出力通信に関し、前記少なくとも１つの第２のネットワーク上に前記第１のネットワークをオーバレイさせることを可能にするように前記出力通信を自動的に修正するステップであって、該出力通信を修正するステップは、前記第１の宛先ネットワークアドレスを、前記判定された第２の宛先ネットワークアドレスに変更することを含む、修正するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記第２の宛先ネットワークアドレスに基づいて、前記少なくとも１つの第２のネットワークを介して、前記修正された出力通信の前記宛先ノードへの転送を開始するステップと、
により行われる前記送信するステップと
を含むことを特徴とする方法。
【請求項２】
コンピューティングノード間の通信を構成するためのコンピュータに実装される方法であって、
第１のコンピュータシステム上でホストされる１つ又は複数の仮想マシンからの通信を管理する前記第１のコンピュータシステム上の仮想マシン・マネージャ・モジュールによって、前記ホストされる仮想マシンのうちの１つである送信側ノードから宛先ノードへの出力通信を受信するステップであって、前記出力通信は、第１のネットワークの第１のネットワークアドレス指定プロトコルを使用して前記送信側ノードによって特定される前記宛先ノードのための第１の宛先ネットワークアドレスを有し、前記第１のコンピュータシステムは、少なくとも１つの他の第２のネットワークを介して、前記宛先ノードに通信可能に接続される、受信するステップと、
前記出力通信を前記少なくとも１つの第２のネットワーク上に送信する前に、前記仮想マシン・マネージャ・モジュールの制御のもと、前記少なくとも１つの第２のネットワークに従って特定される別個の第２の宛先ネットワークアドレスを前記出力通信に追加することによって、前記少なくとも１つの第２のネットワーク上に前記第１のネットワークをオーバレイさせることを可能にするように前記出力通信を自動的に修正するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記第２の宛先ネットワークアドレスに基づき前記少なくとも１つの第２のネットワークを介して、前記宛先ノードに向けて、前記修正された出力通信の転送を開始するステップと
を含むことを特徴とする方法。
【請求項３】
前記宛先ノードは第２の仮想マシン・マネージャ・モジュールを実行する第２のコンピュータシステム上にホストされる仮想マシンであり、前記第２の仮想マシン・マネージャ・モジュールの制御下において、
前記少なくとも１つの第２のネットワークを介して転送される修正された出力通信を、前記宛先ノードに対して意図される入力通信として受信するステップと、
前記受信される入力通信から、前記第１の宛先ネットワークアドレスに関する情報を検索するステップと、
前記第１の宛先ネットワークアドレスを使用することにより、前記受信される入力通信の少なくとも一部を前記宛先ノードに転送するステップと
をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記送信側ノードおよび前記宛先ノードは、それぞれ、エンティティであって、そのエンティティの為に前記送信側ノードおよび前記宛先ノードが操作しているエンティティに対応する識別子に関連付けされ、
前記出力通信を修正するステップが、前記識別子を含み、かつ前記第１の宛先ネットワークアドレスの表現を含むように前記第２の宛先ネットワークアドレスを構築するステップをさらに含み、
前記出力通信を修正して、前記少なくとも１つの第２のネットワーク上に前記第１のネットワークのオーバレイを可能にするするステップは、前記少なくとも１つの第２のネットワーク上を送信される１つまたは複数の別個の通信内に前記出力通信をカプセル化することなく、実行されることを特徴とする請求項２に記載の方法。
【請求項５】
前記受信される出力通信は、前記第１のネットワークに従って前記送信側ノードにより特定される前記送信側ノードのための示される第１のソースネットワークアドレスをさらに含み、
前記第１のネットワークは、前記宛先ノード及び前記送信側ノードが属する仮想ネットワークである、
請求項２に記載の方法。
【請求項６】
コンテンツを記憶したコンピュータ可読記憶媒体であって、前記コンテンツは、コンピュータシステムに方法を実行するように構成し、当該方法が
前記構成されるコンピュータシステム上にホストされる１つ又は複数の仮想マシンからの通信を管理する前記構成されるコンピュータシステム上の仮想マシン・マネージャ・モジュールによって、前記ホストされる仮想マシンの１つである送信側ノードによって宛先ノードに送信される出力通信を受信するステップであって、前記出力通信が、第１のネットワークに関する第１のネットワークアドレス指定プロトコルに従って特定される前記宛先ノードに関する第１の宛先ネットワークアドレスを有する、受信するステップと、
１つまたは複数の第２のネットワーク上で前記出力通信を前記宛先ノードに送信する前に、
前記仮想マシン・マネージャ・モジュールによって、前記１つまたは複数の第２のネットワークに従って特定される別個の第２の宛先ネットワークアドレスを自動的に判定するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記出力通信を修正し、前記修正された出力通信を前記１つまたは複数の第２のネットワーク上で前記宛先ノードに向かわせるときに使用するために、前記第２の宛先ネットワークアドレスを特定するステップと、
を備える、コンピュータ可読記憶媒体。
【請求項７】
コンピューティングノード間の通信を構成するよう構造化されるシステムであって、
１つまたは複数のコンピュータシステムの１つまたは複数のメモリと、
１つまたは複数の中間ネットワークを介した複数のコンピューティングノード間の通信を管理するよう構成される複数の通信マネージャ・モジュールのうちの少なくとも１つであって、各通信マネージャ・モジュールが、１つまたは複数の前記複数のコンピューティングノードの関連するグループに対する出力通信を管理する、通信マネージャ・モジュールのうちの少なくとも１つであって、該管理することは、
前記通信マネージャ・モジュールの関連するグループの前記コンピューティングノードうちの１つである送信側コンピューティングノードが、前記通信マネージャ・モジュールの別のものの関連するグループの一部である宛先コンピューティングノードへの通信を開始した後、１つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、通信に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスには、別の通信マネージャ・モジュールに対応する部分的なネットワークアドレスが含まれ、該別の通信マネージャ・モジュールのコンピューティングノードの関連するグループが宛先ノードを含み、前記判定された宛先ネットワークアドレスには、前記送信側コンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される前記宛先ノードのネットワークアドレスの指標がさらに含まれる、判定するステップと、
前記判定された宛先ネットワークアドレスを使用して、開始された通信を、前記１つまたは複数の中間ネットワークを介して前記宛先ノードに転送するステップとにより行われる、通信マネージャ・モジュールと、
前記複数の通信マネージャ・モジュールを提供する複数のコンピュータシステムであって、１つまたは複数の前記コンピュータシステムはそれぞれ、前記複数のコンピューティングノードのうちの１つをそれぞれ提供する複数の仮想マシンをホストし、かつ、前記コンピュータシステムの仮想マシン・マネージャ・モジュールの一部として前記通信マネージャ・モジュールの内の１つを実行し、前記コンピュータシステムのホストされる仮想マシンにより提供される前記コンピューティングノードが、前記実行する通信マネージャ・モジュールのコンピューティングノードの関連するグループであるようにする、複数のコンピュータシステムと、
を備えることを特徴とするシステム。
【請求項８】
送信側ノードにより宛先ノードに対して開始される通信とともに使用するための前記宛先ネットワークアドレスを前記通信マネージャ・モジュールにより判定するステップには、各前記通信マネージャ・モジュールに対するコンピューティングノードの関連するグループについての情報を保持するリモートのシステムマネージャ・モジュールと交信するステップが含まれ、該交信するステップには、前記送信側ノードにより使用される他のネットワークアドレス指定プロトコルに従って特定される前記宛先ノードネットワークアドレスの指標を前記システムマネージャ・モジュールに提供するステップが含まれ、該交信するステップには、別の通信マネージャ・モジュールに対応する部分的なネットワークアドレスの指標を前記システムマネージャ・モジュールから受信するステップがさらに含まれ、該別の通信マネージャ・モジュールのコンピューティングノードの関連するグループが前記宛先ノードを含み、該システムは、前記複数の通信マネージャ・モジュールと交信するよう構成される１つまたは複数のシステムマネージャ・モジュールをさらに備える、ことを特徴とする請求項７に記載のシステム。
【請求項９】
コンピューティングノード間の通信を管理するためのコンピュータに実装される方法であって、
第１のコンピュータシステム上にホストされる１つ又は複数の仮想マシンからの通信を管理する前記第１のコンピュータシステム上の仮想マシン・マネージャ・モジュールによって、前記ホストされる仮想マシンの１つであるソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する情報を受信するステップであって、前記ソースコンピューティングノードおよび前記宛先コンピューティングノードは、第１のネットワークアドレス指定プロトコルを使用する仮想ネットワークの一部であり、前記宛先コンピューティングノードは、前記第１のネットワークアドレス指定プロトコルに従って特定される前記仮想ネットワークのための仮想ネットワークアドレスを有し、前記第１のコンピュータシステムは、少なくとも１つの中間ネットワークを介して、前記宛先コンピューティングノードに通信可能に接続される、受信するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記宛先コンピューティングノードに関連付けられて、かつ前記少なくとも１つの中間ネットワークに従って特定される、生成される宛先ネットワークアドレスを含むように前記通信を変更するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記生成される宛先ネットワークアドレスに基づいて、前記少なくとも１つの中間ネットワーク上で、前記ソースコンピューティングノードから前記宛先コンピューティングノードへの前記変更される通信の送信を開始するステップと
を含むことを特徴とする方法。
【請求項１０】
前記生成される宛先ネットワークアドレスは、前記仮想ネットワークに関する前記仮想ネットワークアドレスの表現を含み、かつ前記宛先ノードを含む複数のホストされる仮想マシンに関する通信を管理するリモートの第２の仮想マシン・マネージャ・モジュールに対応し、前記少なくとも１つの中間ネットワーク上で前記変更される通信を前記宛先コンピューティングノードに送信することには、前記変更される通信を前記第２の通信マネージャ・モジュールにルーティングし、さらにハンドリングすることを含む、ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ソースコンピューティングノードから送信される前記通信は、前記宛先コンピューティングノードの前記仮想ネットワークアドレスを宛先ネットワークアドレスとして使用する出力通信であり、送信される前記変更される通信は、前記生成される宛先ネットアークアドレスを使用して前記少なくとも１つの中間ネットワーク上でルーティングされる、ことを特徴とする請求項９に記載の方法。
【請求項１２】
前記変更される通信の前記送信は、記少なくとも１つの中間ネットワーク上を送信される１つまたは複数の別個の通信内に通信をカプセル化することなく、前記仮想ネットワークを前記少なくとも１つの中間ネットワークにオーバレイさせることを可能にするために実行されることを特徴とする請求項９に記載の方法。
【請求項１３】
コンテンツを記憶したコンピュータ可読記憶媒体であって、前記コンテンツは、コンピュータシステムに方法を実行するように構成し、当該方法が
前記構成されるコンピュータシステム上にホストされる１つ又は複数の仮想マシンからの通信を管理する前記構成されるコンピュータシステム上の仮想マシン・マネージャ・モジュールによって、宛先ノードに対して意図される出力通信に関する情報を受信するステップであって、前記宛先ノードは、第１の仮想ネットワークの一部であり、前記第１の仮想ネットワークについて関連する第１の仮想ネットワークアドレスを有し、１つ又は複数の他のネットワークを介して、前記構成されるコンピュータシステムに通信可能に接続される、受信するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記１つ又は複数のネットワークに従って前記宛先ノードのための宛先ネットワークアドレスを自動的に判定するステップであって、前記判定される宛先ネットワークアドレスは前記第１の仮想ネットワークアドレスとは異なる、判定するステップと、
前記仮想マシン・マネージャ・モジュールによって、前記判定される宛先ネットワークアドレスを用いて前記１つ又は複数のネットワーク上で前記宛先ノードに前記出力通信の送信を開始するステップと
を備える、コンピュータ可読記憶媒体。
【請求項１４】
コンピューティングノード間の通信を管理するよう構造化されるシステムであって、
１つまたは複数のコンピュータシステムの１つまたは複数のメモリと、
１つまたは複数の中間ネットワークを介した複数のコンピューティングノード間の通信を管理するよう構成される複数の通信マネージャ・モジュールのうちの少なくとも１つであって、各通信マネージャ・モジュールが、１つまたは複数の複数のコンピューティングノードの関連するグループに対する通信を管理する、複数の通信マネージャ・モジュールのうちの少なくとも１つとを備え、該管理することは、
前記通信マネージャ・モジュールの関連するグループの前記コンピューティングノードうちの１つであるソースコンピューティングノードから、別の前記通信マネージャ・モジュールの関連するグループの一部である宛先コンピューティングノードへの１つまたは複数の通信に関する指標を受信した後、前記１つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される前記１つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスは、前記別の通信マネージャ・モジュールに対応する部分的なネットワークアドレスを含み、前記別の通信マネージャ・モジュールのコンピューティングノードの関連するグループが前記宛先ノードを含み、前記判定された宛先ネットワークアドレスは、前記ソースコンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される前記宛先ノードのネットワークアドレスの指標をさらに含む、判定するステップと、
前記１つまたは複数の中間ネットワーク上で前記１つまたは複数の通信を前記宛先コンピューティングノードに送信するときに使用するための、前記判定された宛先ネットワークアドレスの指標を提供するステップと
により行われ、
前記複数の通信マネージャ・モジュールを提供する複数のコンピュータシステムであって、１つまたは複数の前記コンピュータシステムはそれぞれ、前記複数のコンピューティングノードのうちの１つをそれぞれ提供する複数の仮想マシンをホストし、かつ、前記コンピュータシステムの仮想マシン・マネージャ・モジュールの一部として前記通信マネージャ・モジュールの内の１つを実行し、前記コンピュータシステムのホストされる仮想マシンにより提供される前記コンピューティングノードが、前記実行する通信マネージャ・モジュールのコンピューティングノードの関連するグループであるようにする、複数のコンピュータシステムと、を備える、
ことを特徴とするシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの企業および他の組織が、コンピュータネットワークを運用し、このコンピュータネットワークが、その運用をサポートするための多数のコンピュータシステムを、代替えとして共同設置される（例えば、プライベート・ローカルネットワークの一部として）コンピュータシステム、または、複数の別個の地理的場所（例えば、１つまたは複数のプライベートまたは共有の中間ネットワークを介して接続される）に代わりに設置されるコンピュータシステムを、相互接続する。例えば、かなりの数の相互接続されるコンピュータシステムを収容するデータセンタは、単一の組織によりまたは単一の組織の為に運用されるプライベートデータセンタ、及び、会社としてのエンティティにより運用される公共データセンタ等のように、一般的なものになってきた。ある公共データセンタ運用者は、種々の顧客が所有するハードウェアのための、ネットワークアクセス、権限、および安全な設置設備を提供し、一方、他の公共データセンタ運用者は、その顧客が使用するために利用可能にされたハードウェア資源をも含む「フルサービス」の設備を提供する。しかし、典型的なデータセンタおよびコンピュータネットワークの規模および範囲が増大するにつれ、関連する物理的なコンピューティング資源のプロビジョニング（provisioning）、運営および管理のタスクが、次第に複雑になってきた。
【０００２】
コモディティ・ハードウェア（commodity hardware）の仮想化技術の出現により、多様なニーズを有する多くの顧客のための大規模なコンピューティング資源を管理することについて、何らかの利益がもたらされ、種々のコンピューティング資源が、複数の顧客間で効果的かつ安全に共有される。例えば、ＶＭＷａｒｅ、ＸＥＮ、またはＵｓｅｒ−Ｍｏｄｅ  Ｌｉｎｕｘにより提供されるような仮想化技術により、単一の物理的コンピュータ機器が、単一の物理的コンピュータ機器によりホストされる１つまたは複数の仮想マシンを各ユーザに提供することにより、複数のユーザ間で共有されることができる。そして、それぞれのそのような仮想マシンは、ユーザに、自分が所定のハードウェア・コンピューティング資源の唯一の運用者および運営者であるかのような錯覚を与える別個の論理コンピュータシステムとして作動するソフトウェアシミュレーションである。一方、仮想化技術は種々の仮想マシン間のアプリケーション隔離およびセキュリティをも提供することができる。さらに、いくつかの仮想化技術は、複数の別個の物理的コンピュータシステムを実際にスパン（span）する複数の仮想プロセッサを有する単一仮想マシン等の、１つまたは複数の物理的資源をスパンする仮想資源を提供することができる。
【０００３】
データセンタおよび仮想化技術の有用性により、種々の利益がもたらされた一方、種々の問題が未だに存在し、仮想マシンおよび／または物理的コンピュータシステム間の通信の管理に関する問題などがある。
【図面の簡単な説明】
【０００４】
【図１】仮想ネットワークに属するコンピューティングノード間の通信を構成する一例の実施形態を例示するネットワーク図である。
【図２Ａ】オーバレイ・ネットワークを介して発生する、コンピューティングノード間の通信を管理する例を例示する図である。
【図２Ｂ】オーバレイ・ネットワークを介して発生する、コンピューティングノード間の通信を管理する例を例示する図である。
【図２Ｃ】下層の基板（underlying substrate）のネットワークアドレスを構成して、オーバレイ・ネットワークの仮想ネットワークアドレスの埋め込みを可能にする例を示す図である。
【図３】コンピューティングノード間の通信を管理するためのシステムの実施形態を実行するのに適切な、コンピュータシステムの例を示すブロック図である。
【図４】システムマネージャ・ルーチンの一例の実施形態のフロー図である。
【図５】通信マネージャ・ルーチンの一例の実施形態のフロー図である。
【発明を実施するための形態】
【０００５】
１つまたは複数の物理的ネットワークにより分割されるコンピューティングノード等の、複数のコンピューティングノード間の通信を管理する技術について説明する。いくつかの実施形態において、この技術を使用して、１つまたは複数の中間物理的ネットワークにより分割される複数のコンピューティングノード間に仮想ネットワークを提供することができ、その複数のコンピューティングノードは、例えば、単一のエンティティによりまたは単一のエンティティの為に運用される。そのような１つまたは複数の中間物理的ネットワークのエッジからなどの仮想ネットワークは、以下でより詳細に検討するように、種々の方法で種々の実施形態において、オーバレイ・ネットワーク（overlay network）を提供するために中間物理的ネットワークに入る通信、および／または、出る通信を修正することにより、提供することができる。少なくともいくつかの実施形態において、いくつかまたは全ての記載の技術は、通信マネージャ・モジュール（Communication Manager module）の実施形態により、自動的に実行される。
【０００６】
複数のリモート・コンピューティングノード間の仮想ローカルネットワークまたは他の仮想ネットワークは、少なくともいくつかの実施形態において、複数のコンピューティングノードを分割する１つまたは複数の中間物理的ネットワーク上にオーバレイ・ネットワークを形成することにより提供できる。オーバレイ・ネットワークは、種々の方法で種々の実施形態において、仮想ネットワークの仮想ネットワークアドレス情報を、１つまたは複数の中間物理的ネットワークのネットワーク・プロトコルに使用されるより大きな物理的ネットワークアドレス空間に埋め込むことにより、通信をカプセル化することなどせずに実装することができる。一例示例として、仮想ネットワークは、３２ビットＩＰｖ４（「インターネット・プロトコルｖｅｒｓｉｏｎ４」）ネットワークアドレスを使用して実装することができる。そして、それらの３２ビット仮想ネットワークアドレスを、通信パケットもしくは（例えば、ステートレスＩＰ／ＩＣＭＰ翻訳（Stateless IP/ICMP Translation）、すなわち、ＳＩＩＴを使用する）他のデータ伝送の再ヘッダリング（re-headering）により、または、そのようなデータ伝送を修正して第１のネットワーク・プロトコルに対して構成されるそのデータ伝送を第１のネットワーク・プロトコルから別個の第２のネットワーク・プロトコルに翻訳することなどにより、１つまたは複数の中間物理的ネットワークにより使用される１２８ビットＩＰｖ６（「インターネット・プロトコルｖｅｒｓｉｏｎ６」）ネットワークアドレスの一部として埋め込むことができる。より一般的には、いくつかの実施形態において、第１のネットワークアドレス指定プロトコル（network addressing protocol）に従って指定されるＮビットのネットワークアドレスは、第２のネットワークアドレス指定プロトコルに従って指定される別のＭビットのネットワークアドレスの一部として埋め込むことができる。ここで、「Ｎ」および「Ｍ」は、ネットワークアドレス指定プロトコルに対応する任意の整数である。加えて、少なくともいくつかの実施形態において、対象のＮビットのネットワークアドレスのグループが、より少ないビット数を使用して表現されるような場合（例えば、Ｌビットのラベルまたは識別子が、特定のＮビットのネットワークアドレスにマッピングされ、かつ他のネットワークアドレスに埋め込まれていることによって（「Ｌ」は「Ｎ」より小さい））、Ｎビットのネットワークアドレスは、Ｎビットより多いかまたは少ない他のネットワークアドレスを使用して、別のネットワークアドレスに埋め込むことができる。ＳＩＩＴに関する追加的な詳細については、「Ｒｅｑｕｅｓｔ  Ｆｏｒ  Ｃｏｍｍｅｎｔｓ  ２７６５−ステートレスＩＰ／ＩＣＭＰ翻訳アルゴリズム」２０００年２月の、ｔｏｏｌｓ＜ｄｏｔ＞ｉｅｔｆ＜ｄｏｔ＞ｏｒｇ＜ｓｌａｓｈ＞ｈｔｍｌ＜ｓｌａｓｈ＞ｒｆｃ２７６５（ここで、＜ｄｏｔ＞および＜ｓｌａｓｈ＞は、それらの名前を有する対応する文字で置き換えられる）で入手でき、その全体が参照により本明細書に組み込まれる。種々の利益は、仮想ネットワークアドレス情報を下層の物理的基板ネットワーク（underlying physical substrate network）の物理的ネットワークアドレスに埋め込むことから得られ、以下でより詳細に検討するように、通信をカプセル化することなく、または、物理的基板のネットワークのネットワークデバイスを構成することなく、仮想ネットワークのオーバレイを物理的基板ネットワーク上で可能にすることが含まれる。さらに、他の情報は、同様に、少なくともいくつかの実施形態および状況において、コンピューティングノード間の通信のためのより大きな物理的ネットワークアドレス空間に埋め込むことができ、その情報には、それらのコンピューティングノード（例えば、エンティティのための仮想ネットワークであって、エンティティの為にそれらのコンピューティングノードが運用する）を含む特定の仮想ネットワークに特有の識別子等がある。オーバレイ・ネットワークの使用を介するそのような仮想ネットワークのプロビジョニングに関する追加的な詳細については、以下に記載される。
【０００７】
加えて、少なくともいくつかの実施形態において、その間に通信が構成されるコンピューティングノードは、物理的なコンピュータシステムとすることができ、および／または、１つまたは複数の物理的コンピュータシステム上でそれぞれホストされる仮想マシンとすることができ、かつ、通信には、種々のフォーマットでのデータ（例えば、メッセージ、パケット、フレーム、ストリーム等）の伝送を含むことができる。さらに、少なくともいくつかの実施形態において、少なくともいくつかのコンピューティングノードは、複数の顧客またはサービスの他のユーザの為に複数のプログラムを実行する、プログラム実行サービス（すなわち「ＰＥＳ(program execution service)」）の一部とすることができ、そのようなプログラム実行サービスには、複数の物理的ネットワーク（例えば、複数の物理的コンピュータシステムおよびデータセンタ内のネットワーク）上で複数のコンピュータシステムを使用するものがある。少なくともいくつかのそのような実施形態において、プログラム実行サービスの１つまたは複数のシステムマネージャ・モジュールは、以下でより詳細に検討するように、どのコンピューティングノードがどの仮想ネットワークに属するかを、そのコンピューティングノードによる顧客または他のエンティティの為のプログラムの実行などに基づいて、追跡および／または管理することができる。
【０００８】
記載の技術を使用することにより、種々の状況において種々の利益を提供することができ、特定の仮想ネットワークのコンピューティングノードへのおよび／または特定の仮想ネットワークのコンピューティングノードからの通信を、その仮想ネットワークに属する他のコンピューティングノードに限定する等を行う。このようにして、複数の仮想ネットワークに属するコンピューティングノードは、１つまたは複数の中間物理的ネットワークの一部を共有し、一方で、さらに特定の仮想ネットワークのコンピューティングノードに対するネットワーク分離を保持することができる。加えて、記載の技術を使用することにより、仮想ネットワークのコンピューティングノードを、物理的に移動させか、所望に位置させることができ、オーバレイ・ネットワークが、特定の仮想ネットワークアドレスに対する通信を、対応する実際の物理的ネットワークアドレスに（例えば、特定の仮想ネットワークの特定の仮想ネットワークアドレスを、仮想ネットワークアドレスが割り当てられるコンピューティングノードの特定の物理的な場所に関連付けるマッピングを更新することにより）ルーティングすることを管理する。例えば、他の箇所でより詳細に記載するように、仮想ネットワークのコンピューティングノードを、種々の物理的ネットワーク間で物理的に移動させ、一方、関連する通信マネージャ・モジュール（Communication Manager module）によりコンピューティングノードに割り当てられるダミーのハードウェア・アドレスの管理に基づくなどして、コンピューティングノードのハードウェア・アドレス間の任意の可能性のある矛盾（conflict）を最小にする、または除去することができる。仮想ネットワークに関連するコンピューティングノードを容易に移動させることに加えて、記載の技術を使用することにより、コンピューティングノードを、容易に仮想ネットワークに追加、および／または仮想ネットワークから削除することもでき、エンティティにより仮想ネットワークの大きさを動的に修正させる等する（例えば、コンピューティングノードの量を動的に修正して、ある程度のコンピューティング資源への現在の必要性の総量を反映することを可能にする）。
【０００９】
いくつかの場合において、そのような仮想ネットワークを、仮想ネットワークの通信を構成および管理することによるなどして、１つまたは複数の中間物理的ネットワークのエッジにおける１つまたは複数の通信マネージャ・モジュールの運用を介して、確立および／または保持することができる。特に、１つまたは複数のコンピューティングノードのグループは、それらのコンピューティングノードとの通信を管理する、関連する通信マネージャ・モジュールを有することができる。例えば、物理的コンピュータシステムが複数の仮想マシンコンピューティングノードをホストする場合、物理的コンピュータシステム上のハイパーバイザ（hypervisor）または他の仮想マシンモニタマネージャが、それらの仮想マシンコンピューティングノードのための通信マネージャ・モジュールを提供することができる。同様に、１つまたは複数の物理的コンピュータシステムは、少なくともいくつかの実施形態において、関連する通信マネージャ・モジュールを有することができ、これは、プロキシコンピュータデバイスであってこれを介して物理的コンピュータシステムとの通信が行われるプロキシコンピュータデバイスや、ネットワークデバイス（例えば、スイッチ、ルータ、ハブ等）であってこれを介して物理的コンピュータシステムとの通信が行われるネットワークデバイスにより提供されるなどする。
【００１０】
いくつかの状況において、通信マネージャ・モジュールは、モジュールの関連するコンピューティングノードが属する（例えば、エンティティに基づき、エンティティの為に仮想ネットワークが運用する）仮想ネットワークを追跡または判定し、そして、それぞれ関連するコンピューティングノードへの通信および／またはそれぞれ関連するコンピューティングノードからの通信を操作して、その関連する仮想ネットワークを反映する。コンピューティングノードの対応する仮想ネットワークの通信マネージャ・モジュールによる判定は、種々の実施形態において種々の方法で実行することができ、例えば、その情報を提供するシステムマネージャ・モジュールと交信することにより、または、そのようなコンピューティングノード上で実行されるソフトウェアプログラムを追跡することにより、または、そのようなコンピューティングノードに関連するエンティティを追跡することによるなどして、実行される。例えば、特定のコンピューティングノードが、プログラム実行サービスの顧客であるエンティティの為に１つまたは複数のソフトウェアプログラムの実行を開始し、かつ、その顧客がまた、他のコンピューティングノード上で実行する他のソフトウェアプログラムを有するとき、顧客のプログラム（複数可）を実行するその新しいコンピューティングノードを、それらの他のコンピューティングノードを含む顧客の仮想ネットワークに関連付けされるように選択することができる。あるいは、顧客または他のエンティティは、エンティティが、コンピューティングノードの異なるグループ間の複数の別個の仮想ネットワークを維持する場合などは、コンピューティングノードが属する特定の仮想ネットワークを特定することができる。
【００１１】
上述したように、いくつかの実施形態において、プログラム実行サービスは、それぞれ複数の仮想マシンをホストする複数の物理的コンピュータシステム（例えば、１つまたは複数のデータセンタにおいて）を使用して、サードパーティの顧客のプログラムを実行し、各仮想マシンは、顧客の１つまたは複数のプログラムを実行することができる。いくつかの状況において、記載の技術は、１つまたは複数の通信マネージャ・モジュールが使用し、プログラム実行サービスの一部として実行して各顧客のプログラムとの通信を制御することができる。例えば、それぞれ関連するコンピューティングノードへの通信、および／または、それぞれ関連するコンピューティングノードからの通信、を操作して、その関連する仮想ネットワークを反映することにより、以下でより詳細に検討するように、通信マネージャ・モジュールは、他の仮想ネットワーク上のコンピューティングノードがそれらの通信へのアクセスを獲得することを阻止することができる。いくつかの実施形態において、顧客は、実行すべきプログラムを実行サービスに提供することができ、かつ、実行時間、および実行サービスにより提供される物理的または仮想ハードウェア設備上の他の資源を予約することができる。加えて、顧客および／またはプログラム実行サービスは、顧客のコンピューティングノードのためのプログラム実行サービスにより使用される仮想ネットワークを定義して、仮想ネットワークのコンピューティングノードに、専用の物理的ネットワーク上での運用の外観（appearance）を透過的に提供することができる。
【００１２】
少なくともいくつかの実施形態において、１つまたは複数のシステムマネージャ・モジュールは、コンピューティングノード間に通信を構成することを容易にすることができ、これは、例えば、どのコンピューティングノードがどの仮想ネットワークに属するかを（例えば、顧客または他のエンティティの為にプログラムを実行することに基づき）、追跡および／または管理することにより、および、特定の仮想ネットワークで使用される仮想ネットワークアドレスに対応する実際の物理的ネットワークアドレスについての情報を（例えば、特定の顧客または他のエンティティにより）提供することにより行う。例えば、ＰＥＳのためのシステムマネージャ・モジュールは、ＰＥＳの複数の物理的ネットワークの１つの一部である、目標の物理的コンピュータシステム上の仮想マシンの指標（indication）を受け取ることができる。そして、システムマネージャ・モジュールは、仮想マシンが関連付けされるべき仮想ネットワークを判定することができる。仮想マシンに関連する仮想ネットワークを判定した後、システムマネージャ・モジュールは、目標の物理的コンピュータシステムのための仮想マシン通信マネージャ・モジュールの構成を開始して、仮想マシンを仮想ネットワークに関連付けすることができる、または、通信マネージャ・モジュールが、代わりにその構成を開始することができる（例えば、仮想マシンが最初に通信を開始または受信するとき）。
【００１３】
加えて、少なくともいくつかの実施形態において、コンピューティングノードおよび仮想ネットワークについての種々の情報を使用して、許可された通信のみが通信マネージャ・モジュールにより配信または転送される場合（または、未許可の通信が、１つまたは複数の他の方法で許可された通信とは異なって扱われる場合）などに、コンピューティングノード間の通信が許可されるかどうかを判定する。未許可の通信をコンピューティングノードに配信しないことにより、エンティティの仮想ネットワークのネットワーク分離およびセキュリティが向上する。
【００１４】
例えば、第１の仮想ネットワーク上の第１のコンピューティングノードが、異なる第２の仮想ネットワーク上の第２のコンピューティングノードへの出力通信（出ていく通信：outgoing communication）を送信しようとし、かつ、その第２の仮想ネットワーク（または第２のコンピューティングノード）が、第１の仮想ネットワークから（または、第１のコンピューティングノードからの）入力通信（入ってくる通信：incoming communication）を許可していない場合、第１のコンピューティングノードは、そのような通信を、第１および第２のコンピューティングノード間の１つまたは複数の中間基板ネットワーク上へ送信することができない場合があるが、これは、そのような出力通信を遮断する（例えば、第１のコンピューティングノードからの出力通信を受信するが、その出力通信を転送しないこと、または、第１のコンピューティングノードがそのような通信の送信時に使用され得る第２のコンピューティングノードの１つまたは複数のアドレスについての情報を取得することを阻止すること、等により）、その第１のコンピューティングノードに関連する通信マネージャ・モジュールに起因する。加えて、未許可の通信が、中間基板ネットワークを介して、意図される宛先コンピューティングノードに送信される場合（例えば、悪質なユーザが、通信マネージャ・モジュールの制御を獲得すること、または基板ネットワークへのアクセスを獲得することが可能であることに基づく）、宛先コンピューティングノードの通信を管理する通信マネージャ・モジュールは、未許可の通信を識別し、宛先ノードへ転送されることを阻止することができる。
【００１５】
少なくともいくつかの実施形態において、未許可の通信の検出および／または阻止は、仮想ネットワークがオーバレイされる１つまたは複数の中間基板ネットワークのトポロジに少なくとも部分的に基づくものとすることができる。特に、少なくともいくつかの実施形態において、仮想ネットワークの一部である各コンピューティングノードは、関連する通信マネージャ・モジュールにより管理される。図２Ａから２Ｃおよび他の図面に関してより詳細に記載するように、少なくともいくつかのそのような実施形態において、基板ネットワーク上の通信のそのようなコンピューティングノードに使用される物理的ネットワークアドレスには、コンピューティングノードの仮想ネットワークアドレスの指標が含まれ、かつ、コンピューティングノードの関連する通信マネージャ・モジュールの場所（例えば、通信マネージャ・モジュールが通信を管理する基板ネットワークのサブネットワークまたは他の部分）に対応する基板ネットワークのための部分的なネットワークアドレスが含まれる。従って、悪質なユーザが、仮想ネットワークの一部であるコンピューティングノードのための有効な物理的ネットワークアドレスを正確に作成するためには、悪質なユーザは、コンピューティングノードが属する仮想ネットワークについての情報へのアクセスを獲得し、関連する通信マネージャ・モジュールのための部分的なネットワークアドレスを判定するために、コンピューティングノードの物理的ネットワークの場所のトポロジについての情報へのアクセスを獲得し、その情報をどのように使用して物理的ネットワークアドレスを作成するかを判定する必要があろう。構築された物理的ネットワークアドレスの有効性は、種々の方法でチェックすることができ、例えば、構築された物理的ネットワークアドレスに埋め込まれる仮想アドレスが対応するコンピューティングノードを識別すること、及び、その識別されたコンピューティングノードの場所が、部分的なネットワークアドレスに対応するネットワークの一部内のコンピューティングノードの１つ（例えば、部分的ネットワークアドレスが対応する通信マネージャ・モジュールにより管理されるコンピューティングノードの１つ）に対応することを検証することにより行う。加えて、構築された物理的ネットワークアドレスの有効性は、種々の時間にチェックすることができ、例えば、宛先コンピューティングノードに対して意図された、入力通信を受信する（例えば、ソース物理的ネットワークアドレスが有効であることを検証する）通信マネージャ・モジュール、及び、示され管理されるコンピューティングノードの為に通信マネージャ・モジュールから意図的にメッセージを受信するシステムマネージャ・モジュール（例えば、対象となる意図される宛先コンピューティングノードのための物理的ネットワークアドレスを要求するメッセージ）などにより行う。
【００１６】
加えて、少なくともいくつかの実施形態において、未許可の通信の検出および／または阻止は、コンピューティングノードが属する仮想ネットワークに少なくとも部分的に基づくものとすることができる。特にいくつかの実施形態において、通信マネージャ・モジュールにより管理されるいくつかまたは全てのコンピューティングノードは、それぞれ１つまたは複数の仮想ネットワークに割り当てられ、ユーザまたは他のエンティティであってコンピューティングノードがこれの為に運用を行うユーザまたは他のエンティティに対応させるなどする（例えば、１つまたは複数のプログラムがコンピューティングノードで実行されていることから）。そのような実施形態において、いくつかまたは全ての仮想ネットワークは、仮想ネットワーク上のコンピューティングノード間、および／または、他の仮想ネットワークからのコンピューティングノード間に、何の通信が許可されるかについての関連する規則を有することができる。その場合、そのような所定の規則は、関連するコンピューティングノードへの入力通信、および／または、関連するコンピューティングノードからの出力通信を受信する通信マネージャ・モジュールにより、そのような通信を転送するかどうか、または、そのような通信を許可するかどうかを判定するために使用され、その判定は、送信側コンピューティングノードおよび宛先コンピューティングノードが関連付けされる、仮想ネットワーク（複数可）および／またはエンティティ（複数可）についての情報に基づくなどして行う。通信マネージャ・モジュールは、関連する仮想ネットワークおよび／または関連するコンピューティングノードのエンティティについてのそのような情報、および／または、仮想ネットワークに対する所定の規則についてのそのような情報を、追跡および記憶することができ、または、その代わりに、いくつかの実施形態において、いくつかまたは全てのそのような情報を取得するために、１つまたは複数のシステムマネージャ・モジュールと交信することができる。コンピューティングノード間の通信が許可されるかどうかの判定、および、そのような判定に対応する動作、に関する追加的な詳細については、以下に記載される。
【００１７】
例示の目的で、いくつかの実施形態が以下に記載され、それにおいて、特定のタイプのコンピューティングノード、ネットワーク、通信、およびコンフィギュレーション操作が実行される。これらの例は、例示の目的で与えられ、かつ、簡潔にするために簡素化され、発明の技術は、多種多様の他の状況において使用可能であり、そのうちのいくつかを以下で検討する。
【００１８】
図１は、仮想ネットワークに属するコンピューティングノード間の通信を構成する一例の実施形態を例示するネットワーク図であり、通信は、コンピューティングノードに対して透過的な方法で、１つまたは複数の中間物理的ネットワーク上にオーバレイされる。本例において、コンピューティングノードは、プログラム実行サービスの一部であり、通信の構成は、プログラム実行サービスのシステムマネージャ・モジュールおよびプログラム実行サービスの複数の通信マネージャ・モジュールにより、容易にされる。他の実施形態において、その技術は、プログラム実行サービスを伴わない状況、例えば、１つまたは複数のエンティティの為に、仮想ネットワークの任意の他の使用を伴う状況（例えば、会社の他の部分または組織のプライベートネットワーク上の他の組織の、複数の仮想ネットワークをサポートするため）で、使用することができる。
【００１９】
例示の例には、プログラム実行サービスにより運営される複数の物理的コンピュータシステムを有するデータセンタ１００が含まれる。データセンタ１００は、データセンタ１００の外部にあるグローバルインターネット１３５に接続され、グローバルインターネットは、プライベートネットワーク１４０を介した１つまたは複数のコンピュータシステム１４５ａと、それぞれ複数のコンピュータシステムを有する１つまたは複数の他のグローバルにアクセス可能なデータセンタ１６０と、１つまたは複数の他のコンピュータシステム１４５ｂと、へのアクセスを提供する。グローバルインターネット１３５は、例えば、インターネット等のネットワークの公的にアクセス可能なネットワークとすることができ、種々の別個のグループにより運用可能であり、プライベートネットワーク１４０は、例えば、プライベートネットワーク１４０の外部のコンピュータシステムからは全体としてまたは部分的にアクセス不可能である企業ネットワークとすることができる。コンピュータシステム１４５ｂは、例えば、インターネットに（例えば、電話線、ケーブルモデム、デジタル加入者回線（「ＤＳＬ」）等を介して）直接接続する家庭用コンピュータシステムとすることができる。
【００２０】
データセンタ１００には、多数の物理的コンピュータシステム１０５ａから１０５ｄと、１５５ａから１５５ｎと、また、１つまたは複数の他のコンピュータシステム（図示せず）上で実行して、関連するコンピュータシステム１５５ａから１５５ｎに対する通信を管理する通信マネージャ・モジュール１５０と、１つまたは複数のコンピュータシステム（図示せず）で実行するプログラム実行サービスのシステムマネージャ・モジュール１１０とが含まれる。本例において、各物理的コンピュータシステム１０５ａから１０５ｄは、複数の仮想マシンコンピューティングノードをホストし、仮想マシン（「ＶＭ：virtual machine」）通信マネージャ・モジュールを（例えば、物理的コンピュータシステムの仮想マシン・ハイパーバイザ・モニタの一部として）含み、例えば、コンピュータシステム１０５ａ上のＶＭ通信マネージャ・モジュール１０９ａおよび仮想マシン１０７ａ、ならびに、コンピュータシステム１０５ｄ上のＶＭ通信マネージャ・モジュール１０９ｄおよび仮想マシン１０７ｄ等である。物理的コンピュータシステム１５５ａから１５５ｎは、この例においては任意の仮想マシンを実行せず、従ってそれぞれが、プログラム実行サービスの顧客の為に、１つまたは複数のソフトウェアプログラムを直接実行するコンピューティングノードとして動作することができる。他の実施形態において、データセンタにおける全ての物理的コンピュータシステムが、仮想マシンをすべてホストすることができるか、または全くホストしない。
【００２１】
本例のデータセンタには、複数のネットワークデバイスがさらに含まれ、例えば、スイッチ１１５ａから１１５ｂと、エッジ・ルータ１２５ａから１２５ｃと、コア・ルータ１３０ａから１３０ｃとである。スイッチ１１５ａは、物理的コンピュータシステム１０５ａから１０５ｃを含む物理的ネットワークの一部であり、エッジ・ルータ１２５ａに接続される。スイッチ１１５ｂは、物理的コンピュータシステム１０５ｄと、１５５ａから１５５ｎと、通信マネージャ・モジュール１５０およびシステムマネージャ・モジュール１１０を提供するコンピュータシステムと含む別個の物理的ネットワークの一部であり、エッジ・ルータ１２５ｂに接続される。スイッチ１１５ａから１１５ｂにより確立される物理的ネットワークは、同じく、中間相互接続ネットワーク１２０を介してお互いに、および他のネットワーク（例えば、グローバルインターネット１３５）に接続され、中間相互接続ネットワークにはエッジ・ルータ１２５ａから１２５ｃと、コア・ルータ１３０ａから１３０ｃとが含まれる。エッジ・ルータ１２５ａから１２５ｃは、２つまたはそれ以上のネットワーク間のゲートウェイを提供する。例えば、エッジ・ルータ１２５ａは、スイッチ１１５ａにより確立される物理的ネットワークと相互接続ネットワーク１２０との間のゲートウェイを提供する。エッジ・ルータ１２５ｃは、相互接続ネットワーク１２０とグローバルインターネット１３５との間のゲートウェイを提供する。コア・ルータ１３０ａから１３０ｃは、相互接続ネットワーク１２０内の通信を管理する。これは、例えば、パケットまたは他のデータ伝送を、そのようなデータ伝送（例えば、ソースおよび／または宛先アドレスを含むヘッダ情報、プロトコル識別子等）の特徴、および／または、相互接続ネットワーク１２０自体の特徴（例えば、ネットワークトポロジに基づくルート等）に基づき、必要に応じて転送することにより行う。
【００２２】
例示の通信マネージャ・モジュールは、関連するコンピューティングノードに送信する通信、または、関連するコンピューティングノードから送信される通信を、構成、許可、または管理するために、少なくともいくつかの記載の技術を実行することができる。例えば、通信マネージャ・モジュール１０９ａは、関連する仮想マシンコンピューティングノード１０７ａを管理し、通信マネージャ・モジュール１０９ｄは、関連する仮想マシンコンピューティングノード１０７ｄを管理し、他の通信マネージャ・モジュールのそれぞれは、同様に、１つまたは複数の他の関連するコンピューティングノードのグループのための通信を管理することができる。例示の通信マネージャ・モジュールは、コンピューティングノード間の通信を構成して特定の仮想ネットワークを相互接続ネットワーク１２０等の１つまたは複数の中間物理的ネットワーク上にオーバレイさせることができるが、別の通信マネージャモジュール（図示せず）がコンピュータシステム１４５ａのための通信を管理する場合は、選択的にグローバルインターネット１３５およびプライベートネットワーク１４０にオーバレイさせることができる。従って、例えば、プライベートネットワーク１４０を運用する組織は、そのプライベートネットワークをデータセンタの１つまたは複数のコンピューティングノードに実質的に拡大することを望む場合、１つまたは複数の通信マネージャ・モジュールをプライベートネットワーク１４０の一部として（例えば、プライベートネットワーク１４０とグローバルインターネット１３５との間のインターフェースの一部として）実装することにより行うことができる。このようにして、プライベートネットワーク内のコンピュータシステム（例えば、コンピュータシステム１４５ａ）は、それらのデータセンタコンピューティングノードがプライベートネットワークの一部であるかのように、それらのデータセンタコンピューティングノードと通信することができる。加えて、例示の通信マネージャ・モジュールは、コンピューティングノード間の通信を許可してネットワーク分離およびセキュリティを向上させることができる。
【００２３】
従って、例示の一例として、コンピュータシステム１０５ａ上の仮想マシンコンピューティングノード１０７ａの１つは、コンピュータシステム１０５ｄ上の仮想マシンコンピューティングノード１０７ｄの１つと同じ仮想ローカルネットワークの一部とすることができ、ＩＰｖ４が仮想ローカルネットワークのための仮想ネットワークアドレスを表すために使用される。その仮想マシン１０７ａは、出力通信（図示せず）を宛先仮想マシンコンピューティングノード１０７ｄに向かわせることができ、例えばこれは、その宛先仮想マシンコンピューティングノードのための仮想ネットワークアドレスを特定することなどにより行う。通信マネージャ・モジュール１０９ａは、出力通信を受信し、また、少なくともいくつかの実施形態においては、出力通信の送信を許可するかどうかを判定し、その判定は、送信側仮想マシンコンピューティングノード１０７ａについて、および／または宛先仮想マシンコンピューティングノード１０７ｄについて、事前に取得される情報（例えば、コンピューティングノードが関連付けされる、仮想ネットワークおよび／またはエンティティについての情報）に基づいて行われ、かつ／または、システムマネージャ・モジュール１１０と動的に交信することにより（例えば、許可判定を取得したり、いくつかまたは全てのそのような情報を取得したりする、等）行われる。通信マネージャ・モジュール１０９ａが、出力通信が許可される（または、そのような許可判定を実行しない）と判定する場合、モジュール１０９ａは、通信のための宛先仮想ネットワークアドレスに対応する実際の物理的ネットワークの場所を判定し（例えば、システムマネージャ・モジュール１１０と交信することに基づき）、本例においては、相互接続ネットワークは、相互接続ネットワークを介して接続されるコンピューティングノードのための実際のネットワークアドレスを表すためにＩＰｖ６を使用する。通信マネージャ・モジュール１０９ａは次に、出力通信を再ヘッダリングして、通信マネージャ・モジュール１０９ｄが複数のＩＰｖ６ネットワークアドレスの範囲を含むサブネットワークと関連する場合などに、実際のＩＰｖ６ネットワークアドレスを使用して、出力通信を通信マネージャ・モジュール１０９ｄに向かわせる。例えば、通信マネージャ・モジュール１０９ａは、システムマネージャ・モジュール１１０と動的に交信することにより、実際のＩＰｖ６宛先ネットワークアドレスを判定して、宛先仮想マシン１０７ｄの仮想ネットワークアドレスに使用することができ、または、その情報を（例えば、その宛先仮想ネットワークアドレスについての情報を求める送信側仮想マシン１０７ａからの要求、例えば、アドレス解決プロトコル、すなわちＡＲＰを使用する要求、に応答して）事前に判定、および記憶しておくことができる。本例においては、図２Ａから２Ｃの例に対してより詳細に記載するように、使用される実際のＩＰｖ６宛先ネットワークアドレスには、仮想宛先ネットワークアドレスおよび追加の情報が含まれる。
【００２４】
通信マネージャ・モジュール１０９ｄは、相互接続ネットワーク１２０を介して通信を受信すると、実際のＩＰｖ６宛先ネットワークアドレスから仮想宛先ネットワークアドレスおよび追加の情報を抽出して、かつ、どの仮想マシンコンピューティングノード１０７ｄに通信を向けるかを判定する。通信マネージャ・モジュール１０９ｄは、次に、以下でより詳細に検討するように、実際のＩＰｖ６ソースネットワークアドレスから仮想ソースネットワークアドレスおよび追加の情報を抽出すること、および、仮想ソースネットワークアドレスを有するコンピューティングノードが、その通信を転送した通信マネージャ・モジュール（本例においては、通信マネージャ・モジュール１０９ａ）により実際に管理されることを確実にすることなどにより、宛先仮想マシンコンピューティングノード１０７ｄに対して通信を許可するかどうかを判定する。通信が許可される（または、通信マネージャ・モジュールはそのような許可判定を実行しない）と判定されると、通信マネージャ・モジュール１０９ｄは次に、入力通信を再ヘッダリングして、送信側仮想マシンコンピューティングノードの仮想ネットワークアドレスをソースネットワークアドレスとして使用すること、および、宛先仮想マシンコンピューティングノードの仮想ネットワークアドレスを宛先ネットワークアドレスとして使用することにより、仮想ネットワークのための適切なＩＰｖ４ネットワークアドレスを使用して、入力通信を宛先仮想マシンコンピューティングノード１０７ｄに向かわせる。入力通信の再ヘッダリング後、通信マネージャ・モジュール１０９ｄは次に、修正された通信を宛先仮想マシンコンピューティングノードに転送する。少なくともいくつかの実施形態において、入力通信を宛先仮想マシンに転送する前に、通信マネージャ・モジュール１０９ｄはまた、セキュリティに関する追加の工程を実行することができる。例えば、通信マネージャ・モジュール１０９ｄは、送信側仮想マシンコンピューティングノードが、宛先仮想マシンと通信することが許可されること（例えば、同じ仮想ネットワークに属すること、同じ顧客または他のエンティティに関連すること、異なるエンティティであってそのコンピューティングノードが互いに通信しあうことが許可されたエンティティに関連すること、等に基づき）、および／または、通信マネージャ・モジュール１０９ｄにより事前に取得された情報に基づき、またはシステムマネージャ・モジュール１１０と交信することに基づくなどして、入力通信が許可されたタイプのものであることを検証することができる。
【００２５】
図２Ａおよび２Ｂは、１つまたは複数の物理的ネットワーク上のオーバレイ・ネットワークを介して発生するコンピューティングノード間の通信を管理することに関する追加の例示の詳細を有するさらなる例を示し、図１のコンピューティングノード及びネットワークまたは他の状況により使用することができる。特に、図２Ａは、１つまたは複数の中間相互接続ネットワーク２５０上でお互いに通信することができる種々の例のコンピューティングノード２０５および２５５を例示する。本例の実施形態においては、コンピューティングノードは、プログラム実行サービスの複数の顧客等の複数の別個のエンティティの為に運用され、システムマネージャ・モジュール２９０は、特定のコンピューティングノードの、特定のエンティティおよび仮想ネットワークとの関係を管理する。図２Ａの例のコンピューティングノードには、エンティティＺの為に実行される３つのコンピューティングノードが含まれ、それらはコンピューティングノード２０５ａ、２０５ｃおよび２５５ａである。加えて、コンピューティングノード２０５ｂ等の他のコンピューティングノードが、他のエンティティの為に運用される。
【００２６】
本例においては、コンピューティングノード２０５は、関連する通信マネージャ・モジュールＲ２１０により管理され、コンピューティングノード２５５は、関連する通信マネージャ・モジュールＳ２６０により管理される。一例として、コンピューティングノード２０５はそれぞれ、単一の物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの１つとすることができ、通信マネージャ・モジュールＲは、その物理的コンピュータシステムのハイパーバイザ仮想マシンモニタの一部とすることができる。例えば、図１を参照すると、コンピューティングノード２０５は、仮想マシン１０７ａを表すことが可能であり、コンピューティングノード２５５は、仮想マシン１０７ｄを表すことが可能である。その場合、通信マネージャ・モジュールＲが図１の通信マネージャ・モジュール１０９ａに対応し、通信マネージャ・モジュールＳが図１の通信マネージャ・モジュール１０９ｄに対応し、相互接続ネットワーク２５０が図１の相互接続ネットワーク１２０に対応し、システムマネージャ・モジュール２９０が図１のシステムマネージャ・モジュール１１０に対応することになる。あるいは、コンピューティングノード２０５または２５５は、代わりにそれぞれ、図１のコンピュータシステム１５５ａから１５５ｎに対応するような、別個の物理的コンピュータシステムとすることができる。
【００２７】
図２Ａの通信マネージャ・モジュールのそれぞれは、複数の物理的ネットワークアドレスのサブネットワークに関連するものであり、そのサブネットワークを、通信マネージャ・モジュールがその関連するコンピューティングノードの為に管理する。例えば、通信マネージャ・モジュールＲは、「：：０Ａ：０１／７２」のＩＰｖ６ネットワークアドレス範囲に関連するものとして示され、これはＸＸＸＸ：ＸＸＸＸ：ＸＸＸＸ：ＸＸＸＡ：０１００：００００：００００：００００からＸＸＸＸ：ＸＸＸＸ：ＸＸＸＸ：ＸＸＸＡ：０１ＦＦ：ＦＦＦＦ：ＦＦＦＦ：ＦＦＦＦ（２の５６乗の固有のＩＰｖ６アドレスを表す）までの１２８ビットアドレス（１６進数）に対応し、ここで、それぞれ「Ｘ」は、特定の状況（例えば、図２Ｃを参照して以下でより詳細に検討するように、最初の６４ビットが特定の組織およびネットワークトポロジに対応するなど）に適切な任意の１６進数文字を表すことができる。相互接続ネットワーク２５０は、任意の通信をその範囲内の宛先ネットワークアドレスと共に通信マネージャ・モジュールＲに転送し、従って、その範囲の最初の７２ビットは特定されており、通信マネージャ・モジュールＲは、残りの利用可能な５６ビットを使用して、通信マネージャ・モジュールＲが管理するコンピューティングノードを表し、かつ、宛先ネットワークアドレスがその範囲内である入力通信をどのように処理するかを判定することができる。
【００２８】
図２Ａに示す例を説明するために、コンピューティングノード２０５ａ、２０５ｃおよび２５５ａは、エンティティＺのための単一の仮想ローカルネットワークの一部であり、それぞれＩＰｖ４ネットワークアドレス「１０．０．０．２」、「１０．０．０．５」および「１０．０．０．３」が割り当てられる（ドット区切りの１６進数形式で表記すると、「１０．０．０．２」は、代わりに「Ａ．０．０．２」となる）。コンピューティングノード２０５ｂは、エンティティＹのための別個の仮想ネットワークの一部であるため、コンピューティングノード２０５ａと同じ仮想ネットワークアドレスを混乱することなく共有することが可能である。本例においては、コンピューティングノードＡ２０５ａが、コンピューティングノードＧ２５５ａとの通信を要求するが（コンピューティングノードＡ２０５ａは、コンピューティングノードＧ２５５ａがコンピューティングノードＡとの共通ローカル物理的ネットワークの一部であると認識している）、これは相互接続ネットワーク２５０および通信マネージャ・モジュールが、本例のコンピューティングノードＡおよびＧに透過的であるからである。特に、コンピューティングノードＡおよびＧが物理的に分割されているにもかかわらず、通信マネージャ・モジュール２１０および２６０は、エンティティＺのための仮想ローカルネットワークをそれらのコンピューティングノード間の通信の物理的相互接続ネットワーク２５０上にオーバレイさせるよう運用するため、実際のローカルネットワークが欠如していることは、コンピューティングノードＡおよびＧには透過的である。本例においては、物理的相互接続ネットワーク２５０は、ＩＰｖ４仮想ネットワークがオーバレイされるＩＰｖ６基板ネットワークである。
【００２９】
例示の実施形態においては通信マネージャ・モジュールＲの存在が認知されていない（すなわち、コンピューティングノードＡは、ブロードキャストメッセージをローカルネットワーク上の全ての他のコンピューティングノードに伝送していると認識している）にもかかわらず、通信をコンピューティングノードＧに送信するために、コンピューティングノードＡは、種々のメッセージ２２０を通信マネージャ・モジュールＲ２１０と交換する。特に、本例においては、コンピューティングノードＡは最初に、コンピューティングノードＧのためのローカルネットワークアドレス（すなわち、「１０．０．０．３」）を含み、かつ、コンピューティングノードＧのための対応するハードウェア・アドレス（例えば、４８ビットＭＡＣすなわちＭｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ（媒体アクセス制御）アドレス）を要求するＡＲＰメッセージ要求２２０−ａを送信する。通信マネージャ・モジュールＲは、ＡＲＰ要求２２０−ａを傍受し、コンピューティングノードＡにコンピューティングノードＧのためのダミーの仮想ハードウェア・アドレスを含むスプーフィングされた（spoofed）ＡＲＰ応答メッセージ２２０−ｂで応答する。
【００３０】
応答メッセージのためのダミーの仮想ハードウェア・アドレスを取得するために、通信マネージャ・モジュールＲは最初に、ダミーの仮想ハードウェア・アドレスを対応するＩＰｖ６の実際の物理的ネットワークアドレスにマッピングする、ローカルストア２１２の情報をチェックし、ここで、各ダミーの仮想ハードウェア・アドレスは、特定のエンティティの仮想ネットワークのためのＩＰｖ４の仮想ネットワークアドレスに対応する。ローカルストア２１２が、コンピューティングノードＧのエントリを含まない場合（例えば、どのコンピューティングノード２０５もコンピューティングノードＧと事前に通信しなかった場合、ローカルストア２１２内のコンピューティングノードＧの前回のエントリが失効している場合、等）、通信マネージャ・モジュールＲは、システムマネージャ・モジュール２９０と交信２２５して、コンピューティングノードＡの為に、コンピューティングノードＧのための対応する実際のＩＰｖ６物理的ネットワークアドレスを取得する。特に、本例においては、システムマネージャ・モジュール２９０は、各コンピューティングノードが実際にどこに設置されているか、および、コンピューティングノードがどのエンティティおよび／または仮想ネットワークに属するかを識別するプロビジョニング情報２９２を保持し、これは、エンティティおよび仮想ネットワークのコンピューティングノード上でプログラムの実行を開始することにより、または、そのようなプロビジョニング情報を取得することにより行う。図２Ｂに対してより詳細に記載するように、システムマネージャ・モジュールは、コンピューティングノードＡがコンピューティングノードＧとの通信を許可されるかどうかの判定を含んで、コンピューティングノードＡに代わり通信マネージャ・モジュールＲからの、コンピューティングノードＧの実際のＩＰｖ６物理的ネットワークアドレスを求める要求が有効であるかどうかを判定し、有効である場合に、その実際のＩＰｖ６物理的ネットワークアドレスを提供する。
【００３１】
通信マネージャ・モジュールＲは、コンピューティングノードＧのための実際のＩＰｖ６物理的ネットワークアドレスをシステムマネージャ・モジュールから受信し、この受信情報を、後で使用するためのマッピング情報２１２の一部としてのコンピューティングノードＧの新しいエントリの一部として記憶する（選択的に、有効期限および／または他の情報と共に）。加えて、通信マネージャ・モジュールＲは、コンピューティングノードＧに使用されるダミーの仮想ハードウェア・アドレスを判定し（例えば、通信マネージャ・モジュールＲにより管理されるコンピューティングノードに対してローカルに一意的である識別子を生成することにより）、そのダミーの仮想ハードウェア・アドレスを、受信された実際のＩＰｖ６物理的ネットワークアドレスと併せて新しいマッピング情報エントリの一部として記憶し、ダミーの仮想ハードウェア・アドレスをコンピューティングノードＡに応答メッセージ２２０−ｂの一部として提供する。そのようなマッピング情報２１２を保持することにより、コンピューティングノードＡからコンピューティングノードＧへの後の通信を、システムマネージャ・モジュール２９０とさらに交信することなく、通信マネージャ・モジュールＲにより事前に提供されたダミーの仮想ハードウェア・アドレスを使用することに基づき、通信マネージャ・モジュールＲにより許可することができる。
【００３２】
他の実施形態において、通信マネージャ・モジュールＲは、システムマネージャ・モジュール２９０と交信して、コンピューティングノードＧのための物理的ネットワークアドレスを取得する、または、そのような物理的ネットワークアドレスをＡＲＰ要求の受信時ではなく時々、例えば、エンティティＺの仮想ネットワークのための仮想ネットワークアドレスを使用してコンピューティングノードＧに向けられる任意の受信された通信に応答して、判定することができる。さらに、他の実施形態において、使用される仮想ハードウェア・アドレスは、例えば、仮想ハードウェア・アドレスがシステムマネージャ・モジュール２９０により特定される場合、仮想ハードウェア・アドレスがランダムではなく、代わりに１つまたは複数のタイプの対応するコンピューティングノードに特有の情報を記憶する場合などは、本例とは異なるものとすることができる。加えて、本例においては、コンピューティングノードＡが、システムマネージャ・モジュール２９０および／または通信マネージャ・モジュールＲによるかどうかにかかわらず、コンピューティングノードＧへ通信を送信することが許可されなかったと判定された場合、通信マネージャ・モジュールＲは、ダミーの仮想ハードウェア・アドレスを有する応答メッセージ２２０−ｂを送信しない（例えば、何の応答も送信しない、エラーメッセージの応答を送信する、等）。
【００３３】
本例においては、応答メッセージ２２５−２内の、コンピューティングノードＧに対応する戻されたＩＰｖ６の実際の物理的ネットワークアドレスは、「：：０Ｂ：０２：＜Ｚ−識別子＞：１０．０．０．３」であり、ここで、「１０．０．０．３」は１２８ビットＩＰｖ６アドレスの最後の３２ビットに記憶され、かつ、「＜Ｚ−識別子＞」はエンティティＺの仮想ローカルネットワークに対応するコンピューティングノードＧの２４ビットのエンティティネットワーク識別子である（例えば、システムマネージャ・モジュールによりネットワークに事前に割り当てられて、乱数またはエンティティに対応する何らかの他の数字を反映する）。ＩＰｖ６ネットワークアドレスの最初の７２ビットは、「：：０Ｂ：０２」という記号表示を記憶し、これはサブネットワーク、または、通信マネージャ・モジュールＳが対応するネットワークアドレス範囲「：：０Ｂ：０２／７２」を有する相互接続ネットワークの他の部分に対応する。従って、相互接続ネットワーク２５０上をＩＰｖ６宛先ネットワークアドレス「：：０Ｂ：０２：＜Ｚ−識別子＞：１０．０．０．３」に送信される通信は、通信マネージャ・モジュールＳにルーティングされる。他の実施形態において、エンティティネットワーク識別子は、他の長さ（例えば、通信マネージャ・モジュールＳが、５６ビットではなく６４ビットのネットワークアドレス範囲を有するサブネットワークを持つ場合は、３２ビット）とすることができ、および／または、他の形式（例えば、ランダムである、種々のタイプの情報を記憶する、等とすることができる）を持つものとすることができ、また、サブネットワークのネットワークアドレス範囲に使用される残りの５６ビットは、他のタイプの情報（例えば、特定のエンティティの識別子、仮想ネットワークのタグまたはラベル、等）を記憶することができる。オーバレイ・ネットワークと共に使用するための一例の構成されたＩＰｖ６の実際の物理的ネットワークアドレスに関する追加的な詳細については、図２Ｃに関して記載される。
【００３４】
応答メッセージ２２０−ｂを通信マネージャ・モジュールＲから受信した後、コンピューティングノードＡは、図２Ａにおいて通信２２０−ｃとして示されるコンピューティングノードＧへの通信の送信を作成および開始する。特に、通信２２０−ｃのヘッダには、宛先コンピューティングノードＧのための「１０．０．０．３」である宛先ネットワークアドレス、宛先コンピューティングノードＧのためのコンピューティングノードＡに提供されるメッセージ２２０−ｂ内のダミーの仮想ハードウェア・アドレスである宛先ハードウェア・アドレス、送信側コンピューティングノードＡのための「１０．０．０．２」であるソースネットワークアドレス、送信側コンピューティングノードＡのためのコンピューティングノードＡにより事前に識別された実際またはダミーのハードウェア・アドレスであるソースハードウェアアドレス、が含まれる。
【００３５】
通信マネージャ・モジュールＲは、通信２２０−ｃを傍受し、通信を必要に応じて修正し，修正した通信を相互接続ネットワーク２５０上をコンピューティングノードＧへ転送する。特に、通信マネージャ・モジュールＲは、コンピューティングノードＧのための仮想宛先ネットワークアドレスおよび仮想宛先ハードウェア・アドレスを、ヘッダから抽出し、そして、その仮想宛先ハードウェア・アドレスに対応するＩＰｖ６の実際の物理的ネットワークアドレスをマッピング情報２１２から検索する。上述したように、本例におけるＩＰｖ６の実際の物理的ネットワークアドレスは、「：：ＯＢ：０２：＜Ｚ−識別子＞：１０．０．０．３」であり、通信マネージャ・モジュールＲは、その実際の物理的ネットワークアドレスを宛先アドレスとして含む新しいＩＰｖ６ヘッダを作成する。同様に、通信マネージャ・モジュールＲは、コンピューティングノードＡのための仮想ソースネットワークアドレスおよび仮想ソースハードウェアアドレスを、受信された通信のヘッダから抽出し、その仮想ソースハードウェアアドレスに対応するＩＰｖ６の実際の物理的ネットワークアドレスを取得し（例えば、事前に取得されていない場合は、マッピング情報２１２内の記憶されたエントリから、システムマネージャ・モジュール２９０と交信することによりその情報を取得する、等）、その実際の物理的ネットワークアドレスを新しいＩＰｖ６ヘッダのためのソースネットワークアドレスとして含む。本例においては、コンピューティングノードＡのためのＩＰｖ６の実際の物理的ネットワークアドレスは、「：：０Ａ：０１：＜Ｚ−識別子＞：１０．０．０．２」であり、これは、コンピューティングノードＧの為に通信マネージャ・モジュールＳにより応答に使用される場合、コンピューティングノードＡに転送するために通信マネージャ・モジュールＲにルーティングされる。通信マネージャ・モジュールＲは次に、通信２２０−ｃを修正することにより新しい通信２３０−３を作成して前回のＩＰｖ４ヘッダを新しいＩＰｖ６ヘッダと（例えば、ＳＩＩＴに従って）置きかえ、これには、新しいＩＰｖ６ヘッダに新しい通信に適切な他の情報（例えば、ペイロード長、トラフィッククラスのパケット優先度、等）を追加することが含まれる。従って、新しい通信２３０−３には、前回の通信２２０−ｃを新しい通信２３０−３内にカプセル化することなく、前回の通信２２０−ｃと同じコンテンツまたはペイロードが含まれる。さらに、ペイロード内の特定の情報へのアクセスは、そのような再ヘッダリングに必要ではなく、例えば、通信マネージャ・モジュールＲが、ペイロードが暗号化された通信をそのペイロードを解読する必要無しに、扱うことを可能にする。
【００３６】
少なくともいくつかの実施形態において、通信２３０−３を通信マネージャ・モジュールＳに転送する前に、通信マネージャ・モジュールＲは、１つまたは複数の動作を実行して、通信２２０−ｃを通信２３０−３としてコンピューティングノードＧへ転送することを許可すると判定することができ、これは例えば、通信２２０−ｃに使用されるソースおよび／または宛先の仮想ハードウェア・アドレスの有効なエントリを含むマッピング情報２１２に基づき行う。他の実施形態において、そのような許可判定は、通信マネージャ・モジュールＲにより各出力通信に対して実行されなくとも良く、または代わりに、他の方法で実行されても良い（例えば、送信側ノードおよび宛先ノードが同じ仮想ネットワークの一部である、または、同じエンティティに関連する、または互いに通信しあうことが許可される、ことの判定に基づいたり、通信のための許可判定を取得するためのシステムマネージャ・モジュール２９０との交信に基づく、等）。
【００３７】
通信マネージャ・モジュールＲが、修正された通信２３０−３を相互接続ネットワーク２５０に転送した後、相互接続ネットワークは、通信の物理的ＩＰｖ６宛先ネットワークアドレスを使用して、通信を通信マネージャ・モジュールＳにルーティングする。その際、相互接続ネットワーク２５０のデバイスは、埋め込まれたエンティティネットワーク識別子または埋め込まれた仮想ネットワークアドレスを含む宛先ネットワークアドレスの一部分を使用せず、従って、そのような通信を転送するための任意の特定の構成を必要とせず、仮想ネットワークが物理的相互接続ネットワーク上にオーバレイされていることを認識する必要もない。
【００３８】
通信マネージャ・モジュールＳは、相互接続ネットワーク２５０を介して通信２３０−３を受信すると、逆に、通信マネージャ・モジュールＲの動作と同様の動作を実行する。特に、少なくともいくつかの実施形態において、通信マネージャ・モジュールＳは、システムマネージャ・モジュールとの１つまたは複数の交信２４０を介するなどして、通信２３０−３が正規のものであるか、コンピューティングノードＧへの転送が許可されるかを検証する。通信が許可されると判定される場合（または、許可判定が実行されると）、通信マネージャ・モジュールＳは次に、必要に応じて通信２３０−３を修正し、修正された通信をコンピューティングノードＧに転送する。通信２３０−３の検証に関する追加的は詳細については、図２Ｂに対して検討する。
【００３９】
特に、通信２３０−３を修正するために、通信マネージャ・モジュールＳは、コンピューティングノードＧにより使用される仮想ハードウェア・アドレスを含む、コンピューティングノードＧに対応するマッピング情報２６２から情報を検索する（または、新しいコンピューティングノード等に事前に使用可能でない場合に、そのような仮想ハードウェア・アドレスを生成する）。通信マネージャ・モジュールＳは次に、通信２３０−３を修正することにより新しい通信２４５−ｅを作成して、前回のＩＰｖ６ヘッダを新しいＩＰｖ４ヘッダと（例えば、ＳＩＩＴに従って）置き換える。新しいＩＰｖ４ヘッダには、新しいＩＰｖ４ヘッダのための宛先ネットワークアドレスおよび宛先ハードウェア・アドレスとしてのコンピューティングノードＧのための仮想ネットワークアドレスおよび仮想ハードウェア・アドレス、新しいＩＰｖ４ヘッダのためのソースネットワークアドレスおよびソースハードウェアアドレスとしての、コンピューティングノードＡのための仮想ネットワークアドレスおよびダミーの仮想ハードウェア・アドレスが含まれ、かつ、新しい通信に必要に応じて他の情報（例えば、全長、ヘッダチェックサム、等）が含まれる。通信マネージャ・モジュールＳにより使用される、コンピューティングノードＡのためのダミーの仮想ハードウェア・アドレスは、通信マネージャ・モジュールＲにより使用される、コンピューティングノードＡのためのハードウェア・アドレスと同じでも良いが、他の実施形態において、各通信マネージャ・モジュールは、他の通信マネージャ・モジュールにより使用される情報と関係のない別個のハードウェア・アドレス情報を保持することができる（例えば、通信マネージャ・モジュールＳが、コンピューティングノード２５５の１つからのコンピューティングノードＡのハードウェア・アドレスを求める前回のＡＲＰ要求に応答して、コンピューティングノードＡのための自分自身のダミーの仮想ハードウェア・アドレスを生成した場合）。従って、新しい通信２４５−ｅには、前回の通信２２０−ｃおよび２３０−３と同じコンテンツまたはペイロードが含まれる。通信マネージャ・モジュールＳは次に、新しい通信２４５−ｅをコンピューティングノードＧに転送する。
【００４０】
通信２４５−ｅを受信した後、コンピューティングノードＧは、通信２４５−ｅからのコンピューティングノードＡのためのソース仮想ネットワークアドレスおよびソース仮想ハードウェア・アドレスを使用して、応答の通信２４５−ｆを、コンピューティングノードＡに送信することを判定する。通信マネージャ・モジュールＳは、通信２４５−ｅを受信し、通信２２０−ｃおよび通信マネージャ・モジュールＲについて先に記載した方法と同様の方法で処理する。特に、通信マネージャ・モジュールＳは、コンピューティングノードＧがコンピューティングノードＡに通信を送信することが許可されることを選択的に検証し、次に、マッピング情報２６２を使用して新しいＩＰｖ６ヘッダを生成することにより、通信２４５−ｆを修正して通信２３０−６を作成する。通信２３０−６を相互接続ネットワーク２５０に転送した後、通信は通信マネージャ・モジュールＲに送信され、通信マネージャ・モジュールＲは、通信２３０−３および通信マネージャ・モジュールＳについて先に記載した方法と同様の方法で、入力通信を処理する。特に、通信マネージャ・モジュールＲは、コンピューティングノードＧがコンピューティングノードＡに通信を送信することが許可されること、および、通信２３０−６がコンピューティングノードＧにより実際に送信されたこと、を選択的に検証し、次に、マッピング情報２１２を使用して新しいＩＰｖ４ヘッダを生成することにより、通信２３０−６を修正して通信２２０−ｄを作成し、そして通信マネージャ・モジュールＲは、通信２２０−ｄをコンピューティングノードＡに転送する。
【００４１】
このようにして、コンピューティングノードＡおよびＧは、それらのコンピューティングノードが、実際の介在するＩＰｖ６ベースの基板相互接続ネットワークを扱うための任意の特定の構成でない場合でも、ＩＰｖ４ベースの仮想ローカルネットワークを使用して互いに通信しあうことができ、また、相互接続ネットワーク２５０は、相互接続ネットワークの任意のネットワークデバイスが任意の特定の構成でない場合でも、通信マネージャ・モジュールが、通信をカプセル化せずに、仮想ローカルネットワークを実際の物理的相互接続ネットワーク上にオーバレイさせることに基づいて、および、基板物理的ネットワークアドレス内の埋め込まれた仮想ネットワークアドレスを使用すること、に基づいて、ＩＰｖ６通信を転送することができる。
【００４２】
加えて、図２Ａに対しては例示されないが、少なくともいくつかの実施形態において、通信マネージャ・モジュールは、他のタイプの要求および通信を、関連するコンピューティングノードの為に受信および扱うことができる。例えば、通信マネージャ・モジュールは、通信マネージャ・モジュールが管理するコンピューティングノードのブロードキャストおよびマルチキャストの能力をサポートする種々の動作を行うことができる。一例として、いくつかの実施形態において、特定のマルチキャストグループの仮想ネットワークアドレスのサフィックス（suffix）は、レイヤ２の未処理の（raw）カプセル化された通信をシグナリングする際に使用するために、各エンティティネットワーク識別子のプリフィックス（prefix）から予約することができる。同様に、リンクローカルなブロードキャストおよびマルチキャストの通信では、特定のマルチキャストグループの／６４プリフィックスを予約することができ（例えば、「ＦＦ３６：００００：：」）、一方、異なる宛先アドレスプリフィックス（例えば、「ＦＦ１５：００００：：」）を他のマルチキャスト通信に使用することができる。従って、例えば、１２８ビットＩＰｖ６アドレスの最初の６４ビットに、対応する予約された６４ビットのプリフィックスを使用して、マルチキャストおよびブロードキャストのＩＰフレームをカプセル化することができ、残りの６４ビットには、先に記載した方法と同様の方法で、宛先コンピューティングノードのための仮想ＩＰｖ４ネットワークアドレスおよび宛先コンピューティングノードのためのエンティティネットワーク識別子が含まれる。あるいは、他の実施形態において、１つまたは複数のタイプのブロードキャストおよび／またはマルチキャストの通信はそれぞれ、異なるビット数を使用すること、および／または、ネットワークアドレスプリフィックスとしてではなく他の方法で記憶されること、を含めて、対応する予約されたラベル、または、異なる値または形式を有する他の識別子を持つことができる。コンピューティングノードが、ブロードキャスト／マルチキャスト通信を送信すると、そのマルチキャスト／ブロードキャストグループにサブスクライブ（subscribe）した関連するコンピューティングノードを有する任意の通信マネージャ・モジュールが識別され（例えば、それらの関連するコンピューティングノードにより送信される、前回の結合した通信に応答するなどして、それらの通信マネージャ・モジュールがグループにサブスクライブしたことに基づき）、送信側コンピューティングノードの通信マネージャ・モジュールは、グループの識別された通信マネージャ・モジュールのそれぞれに、その管理される適切なコンピューティングノードに転送するために、通信を送信する。加えて、いくつかの実施形態および状況において、少なくとのいくつかのブロードキャストまたはマルチキャストの通信、例えば、２２４．０／１６もしくは別の指定されたプリフィックスのＩＰｖ４プリフィックス、または他のラベルもしくは識別子、を有する通信は、通信マネージャ・モジュールにより転送されなくても良い。
【００４３】
加えて、通信マネージャ・モジュールが、この通信マネージャ・モジュールに関連する複数のコンピューティングノード間の通信を容易にすることが理解されるであろう。例えば、図２Ａについて、コンピューティングノード２０５ａは、追加の通信（図示せず）をコンピューティングノード２０５ｃに送信することを望むかもしれない。その場合、通信マネージャ・モジュールＲは、通信マネージャ・モジュールＲによる出力通信２２０−ｃの扱い、および、通信マネージャ・モジュールＳによる入力通信２３０−３の扱い、について先に記載した方法と同様の動作で、動作を実行するが、通信が相互接続ネットワーク上に送られないため、追加の通信を再ヘッダリングせずにＩＰｖ６ヘッダを使用する。
【００４４】
図２Ａに対しては例示しないが、少なくともいくつかの実施形態において、他のタイプの要求および通信を、種々の方法で扱うこともできる。例えば、少なくともいくつかの実施形態において、エンティティは、通信マネージャモジュール（複数可）により管理され、かつ、そのエンティティの仮想ネットワークの一部である１つまたは複数のコンピューティングノードを有することができ、また、１つまたは複数の他の非管理のコンピュータシステム（例えば、相互接続ネットワーク２５０に直接接続される、および／または、元々ＩＰｖ６ネットワークアドレシングを使用する、コンピュータシステム）であって、その通信を管理する関連する通信マネージャ・モジュールを持たないコンピュータシステムをさらに有することができる。それらの非管理コンピュータシステムがその仮想ネットワークの一部であること、さもなければ、仮想ネットワークの管理されるコンピューティングノードと通信することを、エンティティが望む場合、管理されるコンピューティングノードと非管理コンピュータシステムとの間の通信は、少なくともいくつかのそのような実施形態においては、１つまたは複数のコンピューティングノードを管理する通信マネージャモジュール（複数可）により扱うことができる。例えば、そのような状況において、そのような非管理コンピュータシステムに、そのような管理されるコンピューティングノードのための実際のＩＰｖ６宛先ネットワークアドレス（例えば、本例においては、管理されるコンピューティングノードＡのための「：：０Ａ：０１：＜Ｚ−識別子＞：１０．０．０．２」）が与えられる場合、非管理コンピュータシステムは、その宛先ネットワークアドレスを使用して、相互接続ネットワーク２５０を介して通信をコンピューティングノードＡに送信することができ、通信マネージャ・モジュールＲは、通信をその非管理コンピュータシステムから（または、任意の非管理コンピュータシステムから）受け取るよう構成されている場合、それらの通信をコンピューティングノードＡに転送する（例えば、先に記載した方法と同様の方法で、通信を再ヘッダリングした後に）。さらに、通信マネージャ・モジュールＲは、そのような非管理コンピュータシステムに対応するダミーの仮想ネットワークアドレスを生成し、それを非管理コンピュータシステムのための実際のＩＰｖ６ネットワークアドレスにマッピングし、ダミーの仮想ネットワークアドレスを（例えば、非管理コンピュータシステムからコンピューティングノードＡに転送される通信のためのソースアドレスとして）コンピューティングノードＡに与えることが可能であり、従って、コンピューティングノードＡが非管理コンピュータシステムに通信を送信することを可能にする。
【００４５】
同様に、少なくともいくつかの実施形態および状況において、少なくともいくつかの管理されるコンピューティングノードおよび／またはそれらの仮想ネットワークは、仮想ネットワークの一部ではない他のデバイスとの通信が可能であるように構成され、他のデバイスには例えば、通信を管理する関連する通信マネージャ・モジュールを持たない他の非管理コンピュータシステムまたは他のタイプのネットワークの電気器具がある。そのような状況において、管理されるコンピューティングノードおよび／または仮想ネットワークが、そのような他の非管理デバイスとの通信が可能であるように構成される場合、そのような非管理のデバイスには、同様に、そのようなコンピューティングノードのための実際のＩＰｖ６宛先ネットワークアドレス（例えば、本例においては、コンピューティングノードＡのための「：：０Ａ：０１：＜Ｚ−識別子＞：１０，０．０．２」）が与えられ、非管理のデバイスが、その宛先ネットワークアドレスを使用して、相互接続ネットワーク２５０を介して通信をコンピューティングノードＡに送信することが可能にされ、そして、通信マネージャ・モジュールＲが、それらの通信をコンピューティングノードＡに転送する（例えば、先に記載した方法と同様の方法で、通信を再ヘッダリングした後に）。さらに、通信マネージャ・モジュールＲは、同様に、コンピューティングノードＡからそのような非管理のデバイスへの出力通信を管理して、コンピューティングノードＡがそのような通信を送信することを可能にすることができる。
【００４６】
加えて、上述したように、通信マネージャ・モジュールは、関連するコンピューティングノードの通信を種々の方法で管理し、例えば、いくつかの実施形態において、仮想ネットワークアドレスを仮想ネットワークアドレスのコンピューティングノードに割り当てることにより、および／または、通信マネージャ・モジュールに対応する基板物理的ネットワークアドレスの範囲から、管理されるコンピューティングノードに基板物理的ネットワークアドレスを割り当てることにより、管理する。他の実施形態において、いくつかのそのような動作は、仮想ネットワークの１つまたは複数のコンピューティングノードにより代わりに実行され、ＤＨＣＰ（Dynamic Host Configuration Protocol：動的ホスト構成プロトコル）のサーバまたは仮想ネットワークの他のデバイスが、仮想ネットワークアドレスおよび／または基板物理的ネットワークアドレスを、仮想ネットワークの特定のコンピューティングノードに指定すること可能にさせる、などすることができる。そのような実施形態において、通信マネージャ・モジュールは、そのような構成情報を仮想ネットワークデバイス（複数可）から取得し、それに従ってそのマッピング情報を更新する（また、いくつかの実施形態において、さらに、仮想ネットワークに関連するコンピューティングノードについての情報を保持する、１つまたは複数のシステムマネージャ・モジュールを更新することができる）。
【００４７】
加えて、いくつかの実施形態および状況において、管理されるコンピューティングノード自身を仮想ルータまたは実在しないルータとして扱うことができ、複数の仮想ネットワークアドレスがその管理されるコンピューティングノードに関連付けられ、その管理されるコンピューティングノードがそれらの複数の仮想ネットワークアドレスに対応する他のコンピューティングノードに通信を転送する。そのような実施形態において、管理されるコンピューティングノードのルータの通信を管理する、通信マネージャ・モジュールは、そのコンピューティングノードとの通信を先に記載した方法と同様の方法で扱う。しかし、通信マネージャ・モジュールは、管理されるコンピューティングノードのルータに対応する複数の仮想ネットワークアドレスで構成されて、それらの複数の仮想ネットワークアドレスのいずれかへの入力通信が、管理されるコンピューティングノードのルータに転送され、かつ、管理されるコンピューティングノードのルータからの出力通信には、管理されるコンピューティングノードのルータを介して通信を送信した特定のコンピューティングノードに対応する基板ソース物理的ネットワークアドレスが与えられる。このようにして、特定の顧客または他のエンティティの物理的ルータまたは他のネットワークデバイスを、そのエンティティに実装される仮想ネットワークに対して仮想的に表すことができる。
【００４８】
図２Ｂは、図２Ａに対して検討したコンピューティングノードおよび通信のいくつかを例示するが、通信マネージャ・モジュール２１０および２６０、および／または、コンピューティングノード間の通信を許可するシステムマネージャ・モジュール２９０、により行われるいくつかの動作について、追加的な詳細が与えられる。例えば、コンピューティングノードＡが、メッセージ２２０−ａを送信してコンピューティングノードＧのためのハードウェア・アドレスを要求した後、通信マネージャ・モジュールＲは、コンピューティングノードＡがコンピューティングノードＧとの通信を許可されるかどうかに基づくなどして、その情報を提供すべきかどうかを判定するために、また、相互接続ネットワーク２５０に基づき、コンピューティングノードＧのための対応する基板物理的ネットワークアドレスを判定するために、システムマネージャ・モジュール２９０との１つまたは複数の交信２２５を実行することができる。通信マネージャ・モジュールＲがその情報を事前に取得しており、その情報がまだ有効である（例えば、失効していない）場合、交信２２５を、実行しなくても良い。本例においては、コンピューティングノードＧに対応する所望の物理的ネットワークアドレスを取得するために、コンピューティングノードＡおよびＧのための仮想ネットワークアドレスを含み、かつ、それぞれのコンピューティングノードのためのエンティティネットワーク識別子、本例においてはエンティティＺのためのエンティティネットワーク識別子（例えば、３２ビットまたは２４ビットの一意的な識別子）を含む、システムマネージャ・モジュール２９０に、通信マネージャ・モジュールＲがメッセージ２２５−１を送信する。少なくともいくつかの実施形態において、通信マネージャ・モジュールＲは、エニーキャスト（anycast）のアドレシング／ルーティングスキームを使用して、メッセージ２２５−１をシステムマネージャ・モジュール２９０に送信し、複数のシステムマネージャ・モジュールが実装されるよう（例えば、通信マネージャ・モジュールおよび関連するコンピューティングノードを含む各データセンタのためのシステムマネージャ・モジュール）、かつ、システムマネージャ・モジュールのうちの適切なもの（例えば、最も近いもの、最も活用されていないもの、等）が選択されて、メッセージを受信し処理するようにする。システムマネージャ・モジュール２９０が、コンピューティングノードＡがコンピューティングノードＧと通信することが許可されると判定した後（例えば、同じエンティティネットワーク識別子を有することに基づく、コンピューティングノードＧのためのエンティティネットワーク識別子のコンピューティングノードと通信することが許可されるコンピューティングノードＡが、エンティティネットワーク識別子を有することに基づく、コンピューティングノードＡがそのような通信を行うことが許可されることを示すコンピューティングノードＡにより提供されるまたはコンピューティングノードＡに関連する他の情報に基づく、コンピューティングノードＡがそのような通信を行うことが許可されることを示すコンピューティングノードＧにより提供されるまたはコンピュ��ティングノードＧに関連する情報に基づく、などして）、システムマネージャ・モジュール２９０は、コンピューティングノードＧに対応する所望の実際の物理的ネットワークアドレスを含む応答メッセージ２２５−２を戻す。加えて、少なくともいくつかの実施形態において、所望の実際の物理的ネットワークアドレスを送信する前に、システムマネージャ・モジュール２９０は、さらに、通信マネージャ・モジュールＲがコンピューティングノードＡの為にメッセージ２２５−１を送信することが許可されることを検証することができ、コンピューティングノードＡが、通信マネージャ・モジュールＲが関連付けされるコンピューティングノードの１つであることに基づくなどして、検証される。
【００４９】
他の実施形態において、通信マネージャ・モジュールＲは、システムマネージャ・モジュール２９０により実行されるものとして記載されるいくつかまたは全ての動作を実行して、種々のコンピューティングノードのプロビジョニング情報を保持する、および／または、コンピューティングノードＡが通信をコンピューティングノードＧに送信することが許可されるかどうかを判定することができ、または、代わりに、そのような許可判定をいくつかまたは全ての状況において実行しなくても良い。さらに、他の実施形態において、他のタイプの許可判定を、通信のタイプ、通信の大きさ、通信の時間等に基づくなどして、２つまたはそれ以上のコンピューティングノード間の通信に対して実行することができる。
【００５０】
図２Ａに対して上述したように、通信マネージャ・モジュールＳが、相互接続ネットワーク２５０を介して、コンピューティングノードＧに対して意図される通信２３０−３を受け取った後、通信マネージャ・モジュールＳは、その通信を許可するかどうかを判定するために、システムマネージャ・モジュール２９０との１つまたは複数の交信２４０を実行することができる。特に、本例においては、通信２３０−３が有効であり、かつ、コンピューティングノードＧに転送されることが許可されることを検証するために、通信マネージャ・モジュールＳは最初に、実際のＩＰｖ６宛先ネットワークアドレスおよび実際のＩＰｖ６ソースネットワークアドレスを通信２３０−３のヘッダから抽出し、次に、埋め込まれたエンティティネットワーク識別子および仮想ネットワークアドレスを抽出されたＩＰｖ６ネットワークアドレスのそれぞれから検索する。通信マネージャ・モジュールＳは次に、コンピューティングノードＡおよびＧのための抽出された仮想ネットワークアドレス、および、各コンピューティングノードのためのエンティティネットワーク識別子が含まれるメッセージ２４０−４を含むメッセージ２４０を、システムマネージャ・モジュール２９０と交換して、コンピューティングノードＧの為に、送信側コンピューティングノードＡのための対応する実際のＩＰｖ６物理的ネットワークアドレスを取得する。少なくともいくつかの実施形態において、通信マネージャ・モジュールＳは、エニーキャストのアドレシング／ルーティングスキームを使用して、メッセージ２４０−４をシステムマネージャ・モジュール２９０に送信することができる。
【００５１】
システムマネージャ・モジュール２９０は、メッセージ２４０−４を受信し、コンピューティングノードＡに対応する実際の物理的ネットワークアドレス、本例においては「：：０Ａ：０１：＜Ｚ−識別子＞：１０．０．０．２」、を含む応答メッセージ２４０−５を戻す。メッセージ２２５−１および２２５−２に対して先に検討したように、いくつかの実施形態において、システムマネージャ・モジュール２９０および／または通信マネージャ・モジュールＳは、１つまたは複数の他のタイプの許可判定の動作をさらに実行して、コンピューティングノードＧがコンピューティングノードＡと通信することが許可されること、通信マネージャ・モジュールＳがコンピューティングノードＧの為にメッセージ２４０−４を送信することが許可されること、などを判定することができる。通信マネージャ・モジュールＳは次に、メッセージ２４０−５内の戻された物理的ネットワークアドレスが、通信２３０−３のヘッダから抽出されたソースＩＰｖ６ネットワークアドレスと一致することを検証し、他の場所にある他のコンピューティングノードから実際に送信されるメッセージを、コンピューティングノードＡからのものとしてスプーフィングする企みを阻止する。通信マネージャ・モジュールＳは、メッセージ２４０−５内のこの受信情報を、後で使用するためにマッピング情報２６２に、コンピューティングノードＡのエントリの一部として、コンピューティングノードＡの仮想ネットワークアドレスおよびコンピューティングノードＡのためのダミーの仮想ハードウェア・アドレスと共に、選択的に記憶する。
【００５２】
図２Ａから２Ｂに対して検討したもの以外の種々の他のタイプの動作を、他の実施形態において実行することができ、ＩＰｖ４およびＩＰｖ６以外のネットワークアドレス指定プロトコルのタイプの動作が含まれる。
【００５３】
図２Ｃは、記載の技術と共に使用するための一例のＩＰｖ６ネットワークアドレス構成２７２を例示し、例のネットワークアドレスは、仮想ネットワークアドレスおよび他の情報を、基板ネットワークアドレスに埋め込んで、基板ネットワーク上にオーバレイ・ネットワークを可能にするよう構成される。先に検討したように、本例のＩＰｖ６ネットワークアドレス構成は、１２８ビットネットワークアドレス空間を使用して、種々の情報を記憶し、最初の６４ビットがアドレスのＩＰｖ６ネットワーク部分を記憶し、次の６４ビットがアドレスのインターフェース識別子（または「ホスト」）部分を記憶する。
【００５４】
本例においては、ＩＰｖ６アドレスの最初の６４ビットネットワーク部分には、ビット０からビット３１までの３２ビット識別子２７２ａが含まれ、これはＩｎｔｅｒｎｅｔ  Ａｓｓｉｇｎｅｄ  Ｎｕｍｂｅｒｓ  Ａｕｔｈｏｒｉｔｙの為にインターネットレジストリ運用者により、そのような組織に割り当てられる企業または他の組織の識別子（本例においては、地域インターネットレジストリＲＩＰＥ  ＮＮＣ、すなわち、ＲｅｓｅａｕｘＩＰ  Ｅｕｒｏｐｅｅｎｓ  Ｎｅｔｗｏｒｋ  Ｃｏｏｒｄｉｎａｔｉｏｎ  Ｃｅｎｔｒｅ（ヨーロッパＩＰリソースネットワーク調整センター）からの割り当てに基づく）に対応する。例えば、いくつかの実施形態において、プログラム実行サービスを運用する組織、または、記載の技術を使用する他の組織は、関連する識別子２７２ａを有することができる。アドレスの最初の６４ビットネットワーク部分にはまた、本例においては、３２ビット情報グループ２７２ｂが含まれ、これは複数のコンピューティングノードのグループ（例えば、サブネットワークまたは他のネットワーク部分）のトポロジに対応し、トポロジは、情報２７２ａ内に識別子が示されるそのグループの為に提供される。先に検討したように、少なくともいくつかの実施形態において、アドレスの最初の６４ビットネットワーク部分は、サブネットワークまたは基板ネットワークの他の部分等の、複数の関係するコンピューティングノードの場所に対応する基板ネットワークのための部分的なネットワークアドレスを表す。特に、最初の６４ビットネットワークアドレス部分は、少なくともいくつかの実施形態において、複数の関連するコンピューティングノードが通信マネージャ・モジュールにより管理されることを表す特定の通信マネージャ・モジュールに対応し、これは、通信マネージャ・モジュールが、種々の管理されるコンピューティングノードを表すために、６４−ｂｉｔインターフェース識別子アドレス部分のある部分または全てに対応するネットワークアドレスの範囲を管理することなどに基づく。他の実施形態において、部分的なネットワークアドレスを、異なるビット数（例えば、７２）を用いて、および／または、プリフィックス以外のアドレスの一部を使用して、表すことができる。
【００５５】
３２ビットトポロジ情報グループ２７２ｂは、異なる実施形態において種々の情報を種々の方法で表すことができ、トポロジ情報グループ２７４および２７６が、トポロジ情報の２つの代替例の構成を示す。特に、例２７４および２７６において、最初の２ビット（ＩＰｖ６アドレス全体の内のビット３２およびビット３３）が、トポロジ情報の特定のバージョンを示し、残りの３０ビットが意味するものが時間と共に変化する。例２７４については、示される種々のビットはそれぞれ、異なる地理的ロケール（場所）、そのロケール内での地理的地域、地理的地域におけるコンピュータラック、コンピュータラック内の物理的コンピュータシステムノードを示す。本例においては、ロケール情報の６ビットが、６４個の一意的な値を表し、地域情報の８ビットが、各ロケール値に対する２５６個の一意的な値を表し、ラック情報の８ビットが、各地域値に対する２５６個の一意的な値を表し、物理的コンピュータシステムノード情報の８ビットが、各ラック値に対する２５６の一意的な値を表すことができる。逆に、例２７６については、ロケール情報およびラック情報のみが示されるが、それぞれ、追加ビットを持ち、１４ビットを使用して１６，３８４個の一意的なロケール値を有するもの、１６ビットを使用して各ロケール値に対する６５，５３６個の一意的なラック値を有するもの、等のタイプの情報を表す。トポロジ情報が、他の方法で他の実施形態において表されることは、理解されるであろう。
【００５６】
本例においては、ＩＰｖ６アドレスの６４ビットインターフェース識別子部分は、数タイプの情報を記憶するよう構成され、これには、特定のコンピューティングノードスロット（例えば、ＩＰｖ６アドレスの最初の６４ビットネットワーク部分に対応する特定の物理的コンピュータシステム上の特定の仮想マシンコンピューティングノード）に対応する６ビット識別子２７２ｃ、２つの１ビット識別子２７２ｆおよび２７２ｇ、エンティティネットワーク識別子（例えば、特定の仮想ネットワークを参照するための）を埋め込む２４ビット識別子２７２ｄ、ＩＰｖ４ネットワークアドレス（例えば、仮想ネットワークアドレス）を埋め込む３２ビット識別子２７２ｅ、が含まれる。スロット識別子の６ビットは、ほぼ６４個の一意的な値を表し、埋め込まれるエンティティネットワーク識別子の２４ビットは、ほぼ１６８０万個の一意的な値を表し、埋め込まれるＩＰｖ４ネットワークアドレスの３２ビットは、ほぼ４３億個の一意的な値を表すことができる。本例においては、１ビット識別子２７２ｇ（ＩＰｖ６アドレスのビット７０）は、いくつかの実施形態において、アドレスがグローバルに運営されるか、または、ローカルに運営されるかを示すことができるＵ／Ｌ  ｇｌｏｂａｌ／ｌｏｃａｌビットを表し、１−ｂｉｔ識別子２７２ｆ（ＩＰｖ６アドレスのビット７１）は、いくつかの実施形態において、アドレスが単一のコンピューティングノードまたは複数のコンピューティングノードのグループ（例えば、ブロードキャストまたはマルチキャストの一部として）に対応するかどうかを示すことができる、Ｉ／Ｇ  ｉｎｄｉｖｉｄｕａｌ／グループ・ビットを表す。少なくともいくつかの実施形態において、Ｉ／Ｇビットは０に設定され、Ｕ／Ｌビットは、対応する通信の仮想転送が使用されているときには１に設定されるが、これは、実在しないコンピューティングノードルータを介して仮想のサブネット化の際に使用するため、および／または、そのような宛先アドレスを有する入力通信が、３２ビットＩＰｖ４埋め込みネットワークアドレスおよび２４ビットエンティティネットワーク識別子の値に対応するコンピューティングノードではなく、６ビットスロット識別子の値に対応するコンピューティングノードに、配信されることを示すなどのためである。インターフェース識別子情報が、他の方法で他の実施形態において表されることは理解されるであろう。
【００５７】
図３は、コンピューティングノード間の通信を管理するためのシステムの実施形態を実行するのに適切な、例のコンピュータシステムを示すブロック図である。特に、図３は、コンピュータシステムおよびインターネットワーク（複数可）のグループ３９９を例示し、例えば、データセンタまたは共同設置されるコンピューティングノードの他のグループがある。いくつかの実施形態において、グループ３９９のコンピュータシステムのいくつかまたは全ては、顧客または他のエンティティの為にプログラムを実行するプログラム実行サービスにより使用することができる。グループ３９９には、システムマネージャコンピュータシステム３００、１つまたは複数の仮想マシンを実行することが可能なホストコンピュータシステム３５０、ホストコンピュータシステム３５０と同様の他のホストコンピュータシステム３９０、ホストコンピュータシステム３９０を管理し、かつ、コンピュータシステム３９０の１つ上または別のコンピュータシステム（図示せず）上で実行する、選択的通信マネージャ・モジュール３６０、が含まれる。システムマネージャコンピュータシステム３００とホストコンピュータシステム３５０および３９０とは、内部ネットワーク３８０を介してお互いに接続され、内部ネットワーク３８０にはネットワークデバイス３６２および他のネットワークデバイス（図示せず）が含まれる。ネットワーク３８０は、グループ３９９のための複数の異種の物理的ネットワーク（図示せず）を連結する相互接続ネットワークとすることができ、かつ、場合により、外部ネットワーク（図示せず）および／またはコンピュータシステム３９５等のシステムへのアクセスを提供する。例示の例において、ネットワークデバイス３６２は、ネットワーク３８０と、ホストコンピュータシステム３５０および３９０との間のゲートウェイを提供する。いくつかの実施形態において、ネットワークデバイス３６２は、例えば、ルータまたはブリッジとすることができる。
【００５８】
システムマネージャコンピュータシステム３００は、グループ３９９内の仮想ネットワークの構成を管理するよう機能し、また、プロビジョニング、初期化、およびコンピューティングノード上でのプログラムの実行に関する他の機能を提供するよう機能する。システムマネージャコンピュータシステム３００には、ＣＰＵ３０５、種々のＩ／Ｏコンポーネント３１０、記憶装置３３０、およびメモリ３２０が含まれる。Ｉ／Ｏコンポーネントには、ディスプレイ３１１、ネットワーク接続３１２、コンピュータ可読媒体ドライブ３１３、および他のＩ／Ｏデバイス３１５（例えば、マウス、キーボード等）が含まれる。
【００５９】
ホストコンピュータシステム３５０は、１つまたは複数の仮想マシンをホストするよう機能し、例えば、種々の顧客の為にプログラムを実行するコンピューティングノードとして運用する。ホストコンピュータシステム３５０には、ＣＰＵ３５２、種々のＩ／Ｏコンポーネント３５３、記憶装置３５１、およびメモリ３５５が含まれる。仮想マシン通信マネージャ・モジュール３５６および１つまたは複数の仮想マシン３５８が、メモリ３５５内で実行中、モジュール３５６は、関連する仮想マシンコンピューティングノード３５８の通信を管理する。通信マネージャ・モジュール３５６は、図２Ａから２Ｂのマッピング情報２１２および２６２と同様の方法などで、コンピューティングノード３５８および他のコンピューティングノードに関する種々のマッピング情報３５４を記憶装置上に保持する。他のホストコンピュータシステム３９０の構造は、ホストコンピュータシステム３５０の構造と同様とすることができ、または代わりに、ホストコンピュータシステム３５０および３９０のいくつかまたは全ては、ホストされる仮想マシンを使用せずにプログラムを実行することにより、コンピューティングノードとして直接動作することができる。典型的な配置において、グループ３９９には、本明細書に例示するような、数百または数千のホストコンピュータシステムを、多数の別個の物理的ネットワークに体系化して含むことができる。
【００６０】
システムマネージャ・モジュール３４０の実施形態は、コンピュータシステム３００のメモリ３２０内で実行している。いくつかの実施形態において、システムマネージャ３４０は、ホストコンピュータシステム３５０上で１つまたは複数の仮想マシンコンピューティングノードの一部として、または、ホストコンピュータシステム３９０の１つを使用して１つまたは複数のコンピューティングノードとして、実行される１つまたは複数のプログラムの指標を受信することができ、いくつかの状況において、プログラムを実行するコンピューティングノード（複数可）を選択することができる。システムマネージャ３４０は、そして、例えば、プログラムに関連する顧客識別および／または他の要因に基づき、コンピューティングノード（複数可）に関連する仮想ネットワークを判定することができる。いくつかの場合において、種々の仮想ネットワークの構造および／またはメンバシップは、プロビジョニングデータベース３３２により提供することができ、プロビジョニングデータベース３３２は、モジュール３４０が保持して、種々の顧客および／または実行プログラムおよびコンピューティングノードに関連する物理的資源および仮想資源（例えば、ネットワーキング、ハードウェア等）に関する情報を記憶する。システムマネージャ・モジュール３４０は、そして、コンピューティングノード（複数可）上でプログラムの実行を開始し、かつ、それらのコンピューティングノードが関連付けされる仮想ネットワークおよび／またはエンティティに関して、それらのコンピューティングノードに関連する通信マネージャ・モジュールに情報を選択的に提供する。他の実施形態において、コンピューティングノード上でのプログラムの実行は、他の方法で開始することができ、システムマネージャ・モジュール３４０は、その代わりに、それらのコンピューティングノード、プログラム、関連するエンティティおよび関連する仮想ネットワークについての情報を、単に受信し保持することができる。
【００６１】
他の箇所でより詳細に検討するように、通信マネージャ・モジュール３５６および３６０（および、他の関連するコンピューティングノード（図示せず）を管理する他の通信マネージャ・モジュール（図示せず））と、システムマネージャ・モジュール３４０とは、種々の方法で交信して、コンピューティングノード間の通信を管理することができる。そのような交信は、例えば、ネットワークデバイス３６２または他のネットワークデバイス（図示せず）を任意の特定の構成にせず、かつ、通信をカプセル化せずに、ネットワーク３８０上、および選択的に１つまたは複数の外部のネットワーク（図示せず）上に、仮想ネットワークをオーバレイすることにより、コンピューティングノードを任意の特定の構成にせずに、コンピューティングノード３５８および／または他のコンピューティングノードが、仮想ネットワーク上でお互いに通信することを可能にする。
【００６２】
コンピュータシステム３００、３５０、３９０、および３９５と、ネットワークデバイス３６２とは、単なる例示であり、かつ、本発明の範囲を制限することは意図されないことは理解されるであろう。例えば、コンピュータシステム３００および／または３５０は、グループ３９９の外部の１つまたは複数のネットワークを介して、例えばインターネットすなわちワールドワイドウェブ（「Ｗｅｂ」）を介するなどして、他のデバイスに接続することができる。さらに一般的には、コンピューティングノードまたは他のコンピュータシステムは、交信および記載のタイプの機能性の実行が可能な、任意の組み合わせハードウェアまたはソフトウェアを含むことができ、これには、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク記憶装置および他のネットワークデバイス、ＰＤＡ、携帯電話、無線電話、ページャ、電子手帳、インターネット家電、テレビベースのシステム（例えば、セットトップボックスおよび／またはパーソナル／デジタルビデオレコーダを使用して）、ならびに、適切な通信機能を含む種々の他の消費者製品、が制限なく含まれる。加えて、例示のモジュールにより提供される機能性は、いくつかの実施形態において、より少ないモジュールで組み合わせること、または、追加のモジュールに分散させることができる。同様に、いくつかの実施形態において、いくつかの例示のモジュールの機能性を提供することができ、および／または、他の追加の機能性を利用可能とすることができる。
【００６３】
種々のアイテムが、使用中はメモリ内または記憶装置上に記憶されているものとして例示されるが、これらのアイテムまたはその一部を、メモリ管理およびデータの整合性の目的でメモリと他の記憶装置との間を転送することが可能であることもまたは理解されるであろう。あるいは、他の実施形態において、いくつかまたは全てのソフトウェアモジュールおよび／またはシステムは、別のデバイス上のメモリ内で実行することができ、かつ、コンピュータ間通信を介して例示のコンピュータシステムと通信することができる。さらに、いくつかの実施形態において、いくつかまたは全てのシステムおよび／またはモジュールは、他の方法で、例えば、少なくとも部分的にはファームウェアおよび／またはハードウェアで実装または提供され、これには、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ）、標準集積回路、コントローラ（例えば、適切な命令を実行することにより、また、マイクロコントローラおよび／または組み込みコントローラが含まれる）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、結合プログラム可能論理回路（ＣＰＬＤ）等、が含まれるがこれに限定されない。いくつかまたは全てのモジュール、システム、およびデータ構造は、（例えば、ソフトウェア命令または構造化データとして）コンピュータ可読媒体上、例えば、ハードディスク、メモリ、ネットワーク、または、適切なドライブによりまたは適切な接続を介して読まれる携帯用媒体製品、上に記憶することもできる。システム、モジュールおよびデータ構造は、生成されたデータ信号として（例えば、搬送波または他のアナログ伝搬信号もしくはデジタル伝搬信号の一部として）、無線ベースの媒体および有線／ケーブルベースの媒体を含む、様々なコンピュータ可読伝送媒体上に伝送することもでき、かつ、様々な形式（例えば、単一アナログ信号または多重アナログ信号の一部として、または、複数の離散デジタルパケットまたはフレームとして）をとることができる。そのようなコンピュータプログラム製品は、他の実施形態において他の形式をとることもできる。従って、本発明は、他のコンピュータシステム構成で実践することができる。
【００６４】
図４は、システムマネージャ・ルーチン４００の一例の実施形態のフローチャートである。ルーチンは、例えば、図１のシステムマネージャ・モジュール１１０、図２Ａから２Ｂのシステムマネージャ・モジュール２９０、および／または、図３のシステムマネージャ・モジュール３４０を実行することにより提供することができ、例えば、１つまたは複数の中間ネットワークに亘る複数のコンピューティングノード間の通信の管理をサポートし、また、いくつかの状況において他のタイプの管理操作を実行する。少なくともいくつかの実施形態において、ルーチンは、共通の中間ネットワークに亘って複数の異なるエンティティの通信を構成するシステムの一部として、例えば、複数の顧客の分散されるコンピューティングノード上でプログラムを実行するプログラム実行サービスの一部として、提供することができ、通信は、各コンピューティングノードが、そのエンティティに特有のプライベート仮想ローカルネットワークを使用して他の関連するコンピューティングノードと透過的に通信することを可能にするよう構成される。さらに、ルーチンは、通信が許可されるかどうかを判定して通信マネージャ・モジュールを支援することなどにより、未許可の通信が宛先コンピューティングノードに提供されないようにすることを容易にすることができる。
【００６５】
例示の実施形態において、ルーチンは、ブロック４０５にて開始され、それにおいて要求が受信される。ルーチンはブロック４１０へ進み、要求のタイプを判定する。要求のタイプがコンピューティングノードを特定の示されるエンティティに関連付けさせるものである、と判定される場合、例えば、そのコンピューティングノードが、そのエンティティの為に１つまたは複数のプログラムを実行している、または、実行しようとしている場合、ルーチンはブロック４１５へ進み、そのコンピューティングノードをその示されるエンティティに関連付ける。いくつかの実施形態において、ルーチンは、１つまたは複数のコンピューティングノードが、示されるエンティティに関連付けされるべきであるとさらに判定することができ、これは、例えば、実行が開始されようとしている１つまたは複数のプログラムに関して、示されるエンティティにより提供される情報に基づき行われ、一方で、他の実施形態において、そのようなコンピューティングノードの選択、および／または、それらのコンピューティングノード上での適切なプログラムの実行は、他の方法で実行することができる。加えて、他の箇所でより詳細に検討するように、いくつかの実施形態において、１つまたは複数のコンピューティングノードは、それぞれ、１つまたは複数の物理的コンピュータシステムによりホストされる仮想マシンとすることができる。ルーチンは次に、ブロック４２０へ進み、コンピューティングノードの指標およびこれの示されるエンティティとの関連性を記憶する。特に、例示の実施形態において、ルーチンは、コンピューティングノードに対応する物理的ネットワークアドレスの指標、コンピューティングノードのエンティティにより使用される仮想ネットワークアドレス、関連するエンティティの指標を記憶する。他の箇所でより詳細に検討するように、コンピューティングノードに対応する物理的ネットワークアドレスは、いくつかの実施形態において、その単一のコンピューティングノードに特有の物理的ネットワークアドレスとすることができ、一方で、他の実施形態においては、代わりに、サブネットワークまたは複数のコンピューティングノードの他のグループを参照することができ、関連する通信マネージャ・モジュールにより管理することなどができる。さらに、特定のエンティティが複数の別個の仮想ネットワークを有する状況においては、ルーチンは、指標を受信することができ、または、コンピューティングノードが関連付けされる１つまたは複数の仮想ネットワークを判定し、同様に、その情報をコンピューティングノードについての他の情報と併せて記憶することができる。先に検討したように、図２Ｃは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。
【００６６】
代わりに、ブロック４１０において、受信された要求のタイプが、別の管理されるコンピューティングノードの為に通信マネージャ・モジュールからなどの、コンピューティングノードの仮想ネットワークアドレスに対するアドレス解決を求める要求であると判定される場合、ルーチンは、代わりに、ブロック４２５へ進み、そこで、許可されるかどうかを１つまたは複数の方法で判定するが、これは例えば、管理されるコンピューティングノードであってこれの為に要求がなされるコンピューティングノードが、仮想ネットワークアドレス解決が要求されるコンピューティングノードに、通信を送信することが許可されるかどうかに基づき（例えば、２つのコンピューティングノードが属する仮想ネットワーク（複数可）に基づき）、管理されるコンピューティングノードであってこれの為に要求がなされるコンピューティングノードが、現在、構成される仮想ネットワークの一部である有効なコンピューティングノードであるかどうかに基づき、および／または、示されるコンピューティングノードであってこれの為に要求がなされるコンピューティングノードを実際に管理する通信マネージャ・モジュールから要求が受信されたかどうかに基づき行われる。要求が許可されると判定される場合、ルーチンはブロック４３０へ進み、そこで、対象の仮想ネットワークアドレスおよびエンティティネットワーク識別子またはエンティティの他の指標（例えば、一意的な数字または英数字のラベル）を取得するが、これは例えば、ブロック４０５において受信された要求と共に含まれる。ルーチンは次に、ブロック４３５へ進み、そのエンティティネットワーク識別子に対応する仮想ネットワークのためのその仮想ネットワークアドレスを、コンピューティングノードに対応する場所のための物理的ネットワークアドレスに関連付ける、記憶される情報を検索するが、この情報は、例えば、ブロック４２０に関して事前に記憶される。ブロック４３５の後、ルーチンは、４４０へ進み、物理的ネットワークアドレスの指標をリクエスタに提供する。本明細書において例示はしないが、ブロック４２５での判定が、要求を許可しないと判定する場合、ブロック４０５において受信された要求に対してエラーメッセージで応答することにより、または、その受信された要求に応答しないことによるなどして、ルーチンは、代わりに、その要求に対するブロック４３０から４４０を実行しない。加えて、他の実施形態において、ルーチンは、１つまたは複数の他のテストを実行することができ、受信された要求を、要求された情報で応答する前に、要求を開始したコンピューティングノードが、その情報を受信することが許可されることを検証するなど行う。
【００６７】
代わりに、ブロック４１０において、受信された要求が別のタイプのものであると判定される場合、ルーチンは代わりにブロック４５０へ進み、別の示される操作を必要に応じて実行する。例えば、いくつかの実施形態において、ルーチンは、要求を受け取って、特定のコンピューティングノードについての記憶される情報を更新することができ、例えば、特定のコンピューティングノードが、特定のエンティティおよび／または仮想ネットワークに事前に関連付けられていた場合に、その関連性が切れる（例えば、そのコンピューティングノード上でそのエンティティに対して実行されている１つまたは複数のプログラムが終了される）。ルーチンはまた、他の箇所でより詳細に検討するように、複数のコンピューティングノードのシステムを管理することに関する様々な他の動作を実行することができる。加えて、本明細書において例示はしないが、他の実施形態において、ルーチンは、時には、他のタイプの動作を実行することができ、例えば、所定の期間が過ぎた場合などに、不定期にハウスキーピング操作を行って記憶される情報を必要に応じて見直しおよび更新する。加えて、仮想ネットワークアドレスの受信されたアドレス解決要求などに対してなど、可能性のある有効化の問題が検出される場合、ルーチンは、種々の動作をとり、エラーを信号で送る、および／または、他の対応する動作を必要に応じて実行する、ことができる。
【００６８】
ブロック４２０、４４０、および４５０の後、ルーチンはブロック４９５へ進み、継続すべきかどうかを判定する。継続すべきであると判定した場合、ルーチンはブロック４０５へ戻り、継続すべきでないと判定した場合、ブロック４９９へ進み、終了する。
【００６９】
図５は、通信マネージャ・ルーチン５００の一例の実施形態のフロー図である。ルーチンは、例えば、通信マネージャ・モジュール１０９ａ、１０９ｄおよび／または図１の１５０、通信マネージャ・モジュール２１０および／または図２Ａから２Ｂの２６０、および／または、通信マネージャ・モジュール３５６および／または図３の３６０、の実行により提供することができ、１つまたは複数の共有される中間ネットワーク上にプライベート仮想ネットワークを提供するために、１つまたは複数のコンピューティングノードの関連するグループとの通信を管理し、これには、管理されるコンピューティングノードへの通信および／または管理されるコンピューティングノードからの通信を許可するかどうかを判定することが含まれる。
【００７０】
ルーチンは、ブロック５０５にて開始され、それにおいてノード通信または他のメッセージの指標が受信される。ルーチンはブロック５１０へ進み、通信または他のメッセージのタイプを判定し、それに従って進み、ブロック５１０においてメッセージが、関連する管理されるコンピューティングノードからのＡＲＰ要求等のネットワークアドレス解決を求める要求であると判定される場合、ルーチンはブロック５１５へ進み、要求内に示される対象の仮想ネットワークアドレスを識別する。ルーチンは次に、ブロック５２０へ進み、図４のブロック４２５から４４０に対して検討したように、要求を与えたコンピューティングノードに関連する仮想ネットワーク（または、代替えとしてエンティティ）のための示される仮想ネットワークアドレスに対する仮想ネットワークアドレス解決を求める要求を、システムマネージャ・モジュールに送信する。他の箇所でより詳細に検討するように、ルーチンは、いくつかの実施形態において、それぞれの管理されるコンピューティングノードに関連する仮想ネットワークおよび／またはエンティティについての情報を追跡することができ、一方で、他の実施異形態において、代わりに、そのような情報を、コンピューティングノードにより、および／または、システムマネージャ・モジュールにより、ルーチンへ提供することができ、または、代わりに、システムマネージャ・モジュールは、その情報を、現在のルーチンにより提供および追跡されることなく、追跡および記憶することができる。本明細書において例示はしないが、他の実施形態および状況において、そのようなアドレス解決要求を、他の方法で扱うことができる。例えば、特定の通信マネージャ・モジュールにより管理されているコンピューティングノードが、やはり通信マネージャ・モジュールにより管理される別のコンピューティングノードのアドレス解決要求を与える場合、ルーチンは、代わりに、例えば、ルーチンによりローカルに記憶される情報に基づき、システムマネージャ・モジュールと交信せずに要求に応答することができる。加えて、例示の実施形態においては、受信された要求は、示されるネットワークレイヤアドレスに対応するコンピューティングノードのリンクレイヤハードウェアアドレスを提供するための要求であるが、他の実施形態においては、アドレス解決要求は他の形式を有することができる。
【００７１】
例示の実施形態において、ルーチンは次に、ブロック５２５へ進み、物理的ネットワークアドレスを含む応答をシステムマネージャ・モジュールから受信し、その物理的ネットワークアドレスを、ルーチンが後で使用するための一意的なダミーのハードウェア・アドレスにマッピングする情報をローカルに記憶する（例えば、ルーチンにより生成されまたは応答内に提供される、ダミーの仮想ハードウェア・アドレスに基づき）。先に検討したように、図２Ｃは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。ルーチンは次に、ダミーハードウェアアドレスを要求側コンピューティングノードに提供し、ルーチンが、示される仮想ネットワークアドレスと共に、コンピューティングノードに送信する通信の一部として、ダミーハードウェアアドレスを使用する。他の箇所でより詳細に検討するように、与えられる物理的ネットワークアドレス応答は、いくつかの実施形態において、示される対象のコンピューティングノードに特有である物理的ネットワークアドレスを含み、一方で、他の実施形態において、物理的ネットワークアドレスは、サブネットワークまたは示されるコンピューティングノードが属する複数のコンピューティングノードの他のグループに対応し、例えば、それらの他のコンピューティングノードを管理する別の通信マネージャ・モジュールに対応する。ルーチンは次に、ブロック５３０へ進み、ブロック５４０から５５５について検討するように、ブロック５１５から５２５が出力ノード通信（出ていくノード通信）を扱うことの一部として実行されたかどうかを判定し、実行された場合は、ブロック５５０へ進む。本明細書において例示はしないが、いくつかの実施形態において、ルーチンは、代わりに、エラー応答をシステムマネージャ・モジュールから受信することができ（例えば、要求側コンピューティングノードが、示される宛先コンピューティングノードと通信することが許可されないことに基づき）、または何の応答も受信しない。受信した場合は、要求側コンピューティングノードに何の応答も送信しないか、または、対応するエラーメッセージをそのコンピューティングノードに送信することができる。
【００７２】
代わりに、ブロック５１０において、通信または他のメッセージのタイプが、ルーチンにより管理されるコンピューティングノードからルーチンにより管理されない別の示されるリモートの宛先コンピューティングノードへの出力ノード通信であると判定される場合、ルーチンはブロック５４０へ進み、宛先コンピューティングノードのための示されるハードウェア・アドレスを通信ヘッダから識別する。ブロック５４５において、ルーチンは次に、その宛先ハードウェア・アドレスが、ブロック５２５について先に検討したように、宛先コンピューティングノードに対応する物理的ネットワークアドレスに事前にマッピングされたダミーのハードウェア・アドレスであるかどうかを判定する。そうでない場合、いくつかの実施形態において、ルーチンはブロック５１５へ進み、ブロック５１５から５２５を実行して、出力ノード通信のそのような対応する物理的ネットワークアドレスを判定し、一方で、他の実施形態において、そのような動作は実行されない（例えば、示されるハードウェア・アドレスがマッピングされたダミーのアドレスでない場合、ルーチンは、出力ノード通信を不能にすることができ、例えば、エラーメッセージを送信側ノードに返す）。示されるハードウェア・アドレスが、マッピングされたダミーのアドレスである場合、またはチェックが実行されない場合、ルーチンはブロック５５０へ進み、ダミーのハードウェア・アドレスにマッピングされる物理的ネットワークアドレスを検索し、検索されたアドレスを使用して送信側コンピューティングノードと宛先コンピューティングノードとの間の１つまたは複数の中間ネットワークのネットワーキングアドレスプロトコルに従って、通信ヘッダを書き換える。先に検討したように、図２Ｃは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。ヘッダの書き換えには、送信側コンピューティングノードのための仮想ネットワークアドレスを、対応する物理的ネットワークアドレスであるとして変更することを含む、新しいヘッダの他の情報を変更することがさらに含まれ、少なくともいくつかの実施形態において、受信された通信を、カプセル化せずに１つまたは複数の中間物理的ネットワーク上の仮想ネットワークのオーバレイの一部として修正することが含まれる。ブロック５５５において、ルーチンは次に、修正された出力通信を宛先コンピューティングノードに提供することを容易にし、例えば、修正された出力通信を、中間ネットワーク上で宛先コンピューティングノードへ転送することを開始することにより行う。本明細書には例示はしないが、他の実施形態において、種々の追加的なタイプの処理が出力ノード通信に対して実行され、例えば、通信が有効であること、または、種々の方法で許可されることを検証する（例えば、送信側コンピューティングノードが、宛先コンピューティングノードへ通信を送信することが許可されることを検証するが、これは、同じエンティティまたは同じ仮想ネットワークの一部に関連していることに基づいたり、送信側コンピューティングノードおよび指定コンピューティングノードが、互いに通信しあうことが許可された異なるエンティティに関連することに基づいたり、通信または通信に特有の他の情報のタイプに基づいたりする、などして行われる）。
【００７３】
代わりに、ブロック５１０において、受信されたメッセージが、管理されるコンピューティングノードのうちの１つのための、外部のコンピューティングノードからの入力ノード通信（入ってくるノード通信）であることを判定する場合、ルーチンはブロック５６５へ進み、送信側コンピューティングノードおよび宛先コンピューティングノードのための物理的ネットワークアドレスを通信ヘッダから識別する。先に検討したように、図２Ｃは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。ブロック５６５の後、ルーチンはブロック５７０へ進み、入力通信が有効であることを１つまたは複数の方法で選択的に検証する。例えば、ルーチンは、送信側通信ノードのための物理的ネットワークアドレスが、ソース物理的ネットワークアドレスの場所に対応するコンピューティングノードに実際にマッピングされるかどうかを判定することができ、例えば、システムマネージャ・モジュールとの交信に基づき、および／または、ルーチンにより事前に取得および記憶された他の情報に基づき判定される。加えて、ルーチンは、宛先通信ノードのための物理的ネットワークアドレスが、実際の管理されるコンピューティングノードに対応するかどうかを判定することができる。本明細書において例示はしないが、入力通信が有効でないと判定される場合、ルーチンは、図示されない種々の動作を取ることができ、１つまたは複数のエラーを生成し、関連する処理を実行し、および／または、入力通信を、示される宛先ノードに転送せずにドロップする、など行う。例えば、入力通信が、現在の管理されるコンピューティングノードに対応しない宛先ネットワークアドレスを示す場合、ルーチンは、入力通信をドロップし、および／または、エラーメッセージを開始することができるが、いくつかの実施形態においては、そのようなメッセージは、送信側コンピューティングノードに送信されない。示される宛先ネットワークアドレスが、最近管理されたが、現在は管理されないコンピューティングノードに対応する場合（例えば、対応するエンティティの為に１つまたは複数のプログラムをそれ以上実行しないなど、そのコンピューティングノードが、示される仮想ネットワークにはもう関連がないことにより）、ルーチンは、宛先コンピューティングノードがそれ以上利用できない、という指標を送信側コンピューティングノードに与えることができる。
【００７４】
例示の実施形態において、ブロック５７０の後、ルーチンはブロック５７５へ進み、物理的宛先ネットワークアドレスにマッピングされるダミーのハードウェア・アドレスおよび仮想ネットワークアドレスを検索し、仮想ローカルネットワークのための通信ヘッダを書き換え、通信ヘッダが、その仮想ネットワークアドレスおよびダミーのハードウェア・アドレスと共にコンピューティングノードに送信されるようにする。例えば、いくつかの実施形態において、宛先仮想ネットワークアドレスは、宛先物理的ネットワークアドレス自体から、例えば、宛先物理的ネットワークアドレスのビットのサブセットなどから、取得できる。加えて、ダミーの宛先ハードウェア・アドレスは、ブロック５２５について先に検討したように、事前に物理的宛先ネットワークアドレスにマッピングすることができる。そのような事前のマッピングがなされない状況においては、ルーチンは、代わりに、ブロック５１５から５２５を実行して、そのような情報を取得することができる。ルーチンは同様に、仮想ローカルネットワークの通信ヘッダを書き換えることができ、通信ヘッダが、ソース仮想ネットワークアドレスおよび送信側コンピューティングノードに対応するダミーのソースハードウェアアドレスと共に、コンピューティングノードから送信されるようにする。ブロック５７５の後、ルーチンはブロック５８０へ進み、修正された入力通信を宛先コンピューティングノードに与えることを容易にし、修正された入力通信の宛先ノードへの転送を開始することなどにより行う。
【００７５】
代わりに、ブロック５１０において、別のタイプのメッセージが受信されたと判定される場合、ルーチンはブロック５８５へ進み、必要に応じて別の示される操作を実行し、例えば、特定のコンピューティングノードに関連するエンティティについての情報を記憶する、事前にマッピングまたは記憶された情報を更新して、管理されているコンピューティングノードまたはリモートのコンピューティングノードに対して、変更を反映する。
【００７６】
ブロック５５５、５８０、または５８５の後、または、代わりに、ブロック５３０において、出力通信に対して処理が実行されていないと判定される場合、ルーチンはブロック５９５へ進み、継続すべきかどうかを判定する。継続すべきであると判定した場合、ルーチンはブロック５０５へ戻り、継続すべきでないと判定した場合、ブロック５９９へ進み、終了する。
【００７７】
加えて、種々の実施形態により、顧客ユーザおよび他のエンティティがコンピューティングノードおよびその通信を構成する目的で、システムマネージャ・モジュールの実施形態と対話するための機構を提供することができる。例えば、いくつかの実施形態により、対話型コンソールを提供することができ（例えば、インタラクティブユーザインターフェース、ウェブブラウザベースのインターフェース、等を提供するクライアントアプリケーションプログラム）、対話型コンソールから、ユーザは、仮想ネットワークの作成または削除、および仮想ネットワークのメンバシップの指定を管理すること、また、ホストされるアプリケーションの操作および管理に関するより全体的な管理機能、を管理することが可能である（例えば、ユーザアカウントの作成及び変更、新しいアプリケーションの提供、ホストされるアプリケーションの開始・終了・監視、グループへのアプリケーションの割り当て、時間または他のシステムリソースの予約、等）。加えて、いくつかの実施形態により、他のコンピュータシステムおよびプログラムに、少なくともいくつかの記載の機能性をプログラムで起動させる、ＡＰＩ（「アプリケーションプログラミングインターフェース」）を提供することができる。そのようなＡＰＩは、ライブラリまたはクラスインターフェース（例えば、Ｃ、Ｃ＋＋、またはＪａｖａ（登録商標）で書かれたプログラムにより起動される）、および／または、ウェブサービスを介するようなネットワークサービスプロトコル、により提供することができる。記載の技術を共に使用することができるプログラム実行サービスの例の実施形態の運用に関する追加的な詳細は、２００６年３月３１日に出願された「Ｍａｎａｇｉｎｇ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｂｅｔｗｅｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｎｏｄｅｓ（コンピューティングノード間の通信の管理）」という名称の米国特許出願第１１／３９４，５９５号、２００６年３月３１日に出願された「Ｍａｎａｇｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  ｏｆ  Ｐｒｏｇｒａｍｓ  ｂｙ  Ｍｕｌｔｉｐｌｅ  Ｃｏｍｐｕｔｉｎｇ  Ｓｙｓｔｅｍｓ（複数のコンピュータシステムによるプログラムの実行の管理）という名称の米国特許出願第１１／３９５，４６３号、および、２００７年３月２７日に出願された「Ｃｏｎｆｉｇｕｒｉｎｇ  Ｉｎｔｅｒｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｂｅｔｗｅｅｎ  Ｃｏｍｐｕｔｉｎｇ  Ｎｏｄｅｓ（コンピューティングノード間の相互通信の構成）」という名称の米国特許出願第１１／６９２，０３８号で入手可能であり、それぞれ、その全体が参照により本明細書に組み込まれる。
【００７８】
いくつかの実施形態において、記載の技術は、仮想マシンをホストする複数の物理的機器を収容するデータセンタのコンテキストおよび／またはプログラム実行サービスのコンテキスト、で採用されるが、他の実装のシナリオも可能であることは理解されるであろう。例えば、記載の技術を、会社または他の機関（例えば、大学）によりその従業員および／または会員の利益のために運用される組織全体のネットワークまたはネットワークのコンテキストで採用することができる。あるいは、記載の技術を、ネットワークサービスプロバイダがネットワークのセキュリティ、有用性、および分離を向上させることが可能である。加えて、例の実施形態を、データセンタおよび様々な目的のための他のコンテキスト内で採用することができる。例えば、ホストされるアプリケーションへのアクセスを顧客に販売するデータセンタ運用者またはユーザは、いくつかの実施形態において、記載の技術を使用してその顧客のアプリケーションとデータとの間のネットワーク分離を提供することができ、ソフトウェア開発チームは、いくつかの実施形態において、記載の技術を使用して、使用する種々の環境（例えば、開発、構築、テスト、展開、製造等）の間のネットワーク分離を提供することができ、組織は、いくつかの実施形態において、記載の技術を使用して、１つの社員グループまたは部署（例えば、人事部）により利用されるコンピューティング資源を、別の社員グループまたは部署（例えば、経理部）により利用されるコンピューティング資源から分離することができ、または、マルチコンポーネントアプリケーション（例えば、多層ビジネスアプリケーション）を展開しているデータセンタ運用者またはユーザは、いくつかの実施形態において、記載の技術を使用して、種々の構成要素のタイプ（例えば、ウェブフロントエンド、データベースサーバ、ビジネスルールエンジン等）に対する機能分割および／または分離を提供することができる。より一般的には、記載の技術を使用して、物理的ネットワークを仮想化して、従来、別個のコンピュータシステムおよび／またはネットワークの物理的分割を必要とするほとんどの任意の状況を反映することができる。
【００７９】
いくつかの実施形態において、上記で検討したルーチンにより提供される機能性は、より多くのルーチン間で分割する、または、より少ないルーチンに集約するなど、代替の方法で提供することができることは、理解されるであろう。同様に、いくつかの実施形態において、例示のルーチンは、記載されるものより多くのまたは少ない機能性を提供することができ、これは、他の例示のルーチンが代わりに、それぞれそのような機能性を欠いているまたは含むとき、または、提供される機能性の量が変更されるとき、などである。加えて、種々の操作が、特定の方法（例えば、順次または並行して）および／または特定の順番で実行されるものとして例示される一方、当業者は、他の実施形態において、他の順番および他の方法で、操作を実行することができることを理解するであろう。当業者はまた、上記で検討したデータ構造を、異なる方法、例えば、単一のデータ構造を複数データ構造に分割させること、または、複数データ構造を単一データ構造に集約させること、によりで構築できることを理解するであろう。同様に、いくつかの実施形態において、例示のデータ構造は、記載されるものより多くのまたは少ない情報を記憶することができ、これは、他の例示のデータ構造が代わりに、それぞれそのような情報を欠いているまたは含むとき、または、記憶される情報の量またはタイプが変更されるとき、などである。
【００８０】
記載の実施形態の種々の態様を、以下の条項について、さらに理解することが可能である。
【００８１】
条項１。コンピューティングノード間の通信を構成するコンピュータシステムのための方法であって、
複数の関連するコンピューティングノードの通信を管理する通信マネージャ・モジュールの制御下において、
通信マネージャ・モジュールに対する関連するコンピューティングノードの１つである送信側ノード上の実行プログラムから、出力通信を受信するステップであって、出力通信は、別のリモートの通信マネージャ・モジュールに関連する複数の他のコンピューティングノードの１つであるリモートの宛先ノードに対して意図され、出力通信は、第１の仮想ネットワークの第１のネットワークアドレス指定プロトコルを使用して前記送信側ノードにより特定される宛先ノードのための第１の宛先ネットワークアドレスである示される宛先アドレスを有し、通信マネージャ・モジュールは、別個の第２のネットワークアドレス指定プロトコルを使用する少なくとも１つの他の第２の物理的ネットワークを介して、別の通信マネージャ・モジュールに通信可能に接続される、ステップと、
実行プログラムが出力通信を宛先ノードに送信することが許可されるかどうかを自動的に判定するステップと、
実行プログラムが許可されると判定される場合、出力通信を少なくとも１つの第２のネットワーク上を宛先ノードに、以下のステップにより、すなわち、
第２のネットワークアドレス指定プロトコルに従って特定される別個の第２の宛先ネットワークアドレスを自動的に判定するステップであって、第２の宛先ネットワークアドレスは、別の通信マネージャ・モジュールに対応する第２のネットワークアドレス指定プロトコルに基づく宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第１のネットワークアドレス指定プロトコルに従って特定される第１の宛先ネットワークアドレスを表す部分を含む、ステップと、
出力通信を自動的に修正して、少なくとも１つの第２のネットワーク上を送信される１つまたは複数の別個の通信内に出力通信をカプセル化することなく、第１のネットワークを、出力通信の少なくとも１つの第２のネットワーク上にオーバレイさせることを可能にするステップであって、出力通信を修正するステップには、示される宛先アドレスを、判定された第２の宛先ネットワークアドレスに変更するステップが含まれる、ステップと、
第２の宛先ネットワークアドレスに基づき少なくとも１つの第２のネットワークを介して、修正された出力通信の宛先ノードへの転送を開始するステップと、により
送信するステップと
を含む方法。
【００８２】
条項１の方法において、送信側ノード上の実行プログラムは、プログラム実行サービスの第１の顧客の為に実行されている第１のプログラムであり、送信側ノードは、プログラム実行サービスに関連する複数の物理的コンピュータシステムのうちの１つによりホストされる複数の仮想マシンのうちの１つであり、通信マネージャ・モジュールは、プログラム実行サービスの為に１つの物理的コンピュータシステムの仮想マシンマネージャモジュールにより提供され、宛先ノードは、複数の物理的コンピュータシステムのうちの別のものによりホストされる複数の仮想マシンのうちの１つであり、かつ、プログラム実行サービスの第２の顧客の為に第２のプログラムを実行し、第１の実行プログラムが出力通信を宛先ノードに送信することが許可されるかどうかを自動的に判定するステップには、プログラム実行サービスのシステムマネージャ・モジュールと交信して、第１の顧客が、第２の顧客に通信を送信することが許可されるかどうかを判定するステップが含まれる。
【００８３】
条項３。条項１の方法において、第１の仮想ネットワークは、送信側ノードおよび宛先ノードが属するプライベート仮想ローカルネットワークであり、少なくとも１つの第２のネットワークは、非プライベートネットワークであり、通信マネージャ・モジュールの制御下において、方法は、
複数の関連するコンピューティングノードのうちの１つに対する入力通信を、別のリモートの通信マネージャ・モジュールに関連するリモートの送信側コンピューティングノード上で実行される第２のプログラムから受信するステップであって、入力通信は、第１のネットワークアドレス指定プロトコルを使用してリモートの送信側ノードにより特定される、リモートの送信側ノードのための第１のソースネットワークアドレスを表す部分を有し、入力通信は、第１のネットワークアドレス指定プロトコルを使用してリモートの送信側ノードにより特定される、１つの関連するコンピューティングノードのための第３の宛先ネットワークアドレスを表す部分をさらに有する、ステップと、
１つの関連するコンピューティングノードに通信を送信することが許可されるコンピューティングノードに対応する第１のソースネットワークアドレスに少なくとも部分的に基づき、入力通信が有効であるかどうかを自動的に判定するステップと、
入力通信が有効であると判定される場合、第３の宛先ネットワークアドレスを使用して、入力通信を１つの関連するコンピューティングノードに提供するステップと、
をさらに含む。
【００８４】
条項４。コンピューティングノード間の通信を構成するためのコンピュータに実装される方法であって、
出力通信を、リモートの宛先コンピューティングノードに対して意図される送信側コンピューティングノードから受信するステップであって、出力通信は、第１のネットワークの第１のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、宛先ノードのための第１の宛先ネットワークアドレスである、示される宛先アドレスを有し、送信側ノードは、別個の第２のネットワークアドレス指定プロトコルを使用する少なくとも１つの他の第２のネットワークを介して、宛先ノードに通信可能に接続される、ステップと、
出力通信を１つまたは複数の中間ネットワーク上に送信する前に、出力通信を自動的に修正して、第１のネットワークを出力通信の少なくとも１つの第２のネットワーク上にオーバレイさせることを可能にするステップであって、出力通信を修正するステップには第２のネットワークアドレス指定プロトコルを使用して、示される宛先アドレスを別個の第２の宛先ネットワークアドレスに変更するステップが含まれ、第２の宛先ネットワークアドレスは、宛先ノードを含む複数のコンピューティングノードに対応する宛先ノードのための部分的な宛先ネットワークアドレスを含み、第２の宛先ネットワークアドレスは、第１の宛先ネットワークアドレスを表す部分をさらに含む、ステップと、
第２の宛先ネットワークアドレスに基づき少なくとも１つの第２のネットワークを介して、修正された出力通信の宛先ノードへの転送を開始するステップと
を含む方法。
【００８５】
条項５。条項４の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む１つまたは複数のコンピューティングノードの通信を管理する第１の通信マネージャ・モジュールの制御下において実行され、部分的な宛先ネットワークアドレスは、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第２の通信マネージャ・モジュールに対応し、方法は、第２の通信マネージャ・モジュールの制御下において、
少なくとも１つの第２のネットワークを介して転送される修正された出力通信を、宛先ノードに対して意図される入力通信として受信するステップと、
受信される入力通信の第２の宛先ネットワークアドレスに含まれる、第１の宛先ネットワークアドレスを表示する部分を検索するステップと、
第１の宛先ネットワークアドレスを使用することにより、受信される入力通信の少なくとも一部を宛先ノードに転送するステップと
をさらに含む方法。
【００８６】
条項６。条項５の方法において、受信される出力通信は、第１のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、送信側ノードのための示される第１のソースネットワークアドレスをさらに含み、第１の通信マネージャ・モジュールによる出力通信を修正するステップが、第１のソースネットワークアドレスを表す部分を含む、第２のネットワークアドレス指定プロトコルを使用して送信側ノードのための別個の第２のソースネットワークアドレスを追加するステップをさらに含み、方法は、第２の通信マネージャ・モジュールの制御下において、かつ、通信部分を宛先ノードに転送する前に、宛先ノードと通信することが許可されたコンピューティングノードに対応する第１のソースネットワークアドレスに少なくとも部分的に基づき、かつ、第１の通信マネージャ・モジュールに対応する第２のソースネットワークアドレスに少なくとも部分的に基づき、受信される入力通信が有効であると検証するステップをさらに含む。
【００８７】
条項７。条項４の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む１つまたは複数のコンピューティングノードの通信を管理する第１の通信マネージャ・モジュールの制御下において、実行され、受信される出力通信は、第１のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、送信側ノードのための示される第１のソースネットワークアドレスをさらに含み、方法は、第１の通信マネージャ・モジュールの制御下において、かつ、通信部分を宛先ノードに転送する前に、送信側ノードが宛先ノードとの通信が許可されること、に少なくとも部分的に基づき、受信される出力通信が有効であることを検証するステップをさらに含む。
【００８８】
条項８。条項４の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む１つまたは複数のコンピューティングノードの通信を管理する第１の通信マネージャ・モジュールの制御下において、実行され、方法は、第１の通信マネージャ・モジュールの制御下において、かつ、出力通信を修正する前に、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第２の通信マネージャ・モジュールと、宛先ノードのための第１の宛先ネットワークアドレスとの関連性を示す、記憶される情報を検索することにより、宛先ノードのための部分的な宛先ネットワークアドレスを自動的に判定するステップをさらに含む。
【００８９】
条項９。条項４の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む１つまたは複数のコンピューティングノードの通信を管理する第１の通信マネージャ・モジュールの制御下において、実行され、方法は、第１の通信マネージャ・モジュールの制御下において、かつ、出力通信を修正する前に、宛先ノードのための第１の宛先ネットワークアドレスと、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第２の通信マネージャ・モジュールとの関連性を保持する、リモートのサーバと交信することにより、宛先ノードのための部分的な宛先ネットワークアドレスを自動的に判定するステップをさらに含む。
【００９０】
条項１０。条項９の方法において、送信側コンピューティングノードおよび宛先コンピューティングノードは、顧客の為にプログラムを実行するプログラム実行サービスにより使用される複数のコンピューティングノードの一部であり、送信側コンピューティングノードは、第１の顧客の為に第１のプログラムを実行し、宛先コンピューティングノードは、第２の顧客の為に第２のプログラムを実行し、リモートのサーバは、プログラム実行サービスのシステムマネージャ・モジュールを提供する。
【００９１】
条項１１。条項４の方法において、送信側ノードおよび宛先ノードは、仮想ローカルネットワークの一部であり、第１の宛先ネットワークアドレスは、仮想ローカルネットワーク上の宛先ノードのための、送信側ノードにより使用される仮想ネットワークアドレスであり、第２の宛先ネットワークアドレスは、送信側ノードが利用可能である。
【００９２】
条項１２。条項４の方法において、送信側ノードおよび宛先ノードは、それぞれ、エンティティであって、そのエンティティの為に送信側ノードおよび宛先ノードが操作しているエンティティ、に対応する識別子に関連付けされ、出力通信を修正するステップが、識別子を含むように第２の宛先ネットワークアドレスを構築するステップをさらに含み、出力通信を修正して、第１のネットワークを出力通信の少なくとも１つの第２のネットワーク上にオーバレイされることを可能にするするステップは、少なくとも１つの第２のネットワーク上を送信される１つまたは複数の別個の通信内に出力通信をカプセル化することなく、実行される。
【００９３】
条項１３。条項４の方法において、第１のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン４（ＩＰｖ４）であり、第２のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン６（ＩＰｖ６）である。
【００９４】
条項１４。条項４の方法において、受信される出力通信は、第１のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、送信側ノードのための示される第１のソースネットワークアドレスをさらに含み、宛先コンピューティングノードは、宛先コンピューティングノードが属するネットワークの第１のネットワークアドレス指定プロトコルを使用し、修正された出力通信は、第１のソースネットワークアドレスを表す部分を含む示されるソースアドレスをさらに含み、宛先ノードが、第１のソースネットワークアドレスから第１の宛先ネットワークアドレスに送信されるものとして示される出力通信の複製を受信するようにする。
【００９５】
条項１５。条項４の方法において、第２のネットワークアドレス指定プロトコルは、ネットワークアドレスを表すために、第１のネットワークアドレス指定プロトコルよりも多くのビットを使用し、第１のネットワークを少なくとも１つの第２のネットワーク上にオーバレイさせることには、第２の宛先ネットワークアドレスを構築して、第２のネットワークアドレス指定プロトコルのビットのサブセットを使用して第１のネットワークを表すようにすることが含まれ、構築される第２の宛先ネットワークアドレスのビットのサブセットは、第１のネットワークアドレス指定プロトコルに従って特定される、第１の宛先ネットワークアドレスを表す部分を含む。
【００９６】
条項１６。条項４の方法において、送信側ノードは、物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの１つであり、方法は、物理的コンピュータシステム上で実行して複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより、実行される。
【００９７】
条項１７。コンピュータ可読媒体であって、
第１のネットワークアドレス指定プロトコルに従って特定される第１の宛先ネットワークアドレスを使用して、送信側ノードにより、宛先ノードに送信される出力通信を受信するステップと、
出力通信を、第１のネットワークアドレス指定プロトコルとは別個の第２のネットワークアドレス指定プロトコルを使用する１つまたは複数のネットワーク上を、宛先ノードに送信する前に、
第２のネットワークアドレス指定プロトコルに従って特定される別個の第２の宛先ネットワークアドレスを自動的に判定するステップであって、第２の宛先ネットワークアドレスは、第２のネットワークアドレス指定プロトコルに基づく宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第１の宛先ネットワークアドレスの指標を含む、ステップと、
出力通信を修正して、それにより、１つまたは複数のネットワーク上を、修正された出力通信を宛先ノードに向かわせるときに使用するための第２の宛先ネットワークアドレスを特定するステップであって、修正のステップは、出力通信を１つまたは複数の別個の通信内にカプセル化することなく実行される、ステップと
を含む方法を実行することによって、コンピュータ可読媒体のコンテンツは、コンピュータシステムがコンピューティングノード間の通信を構成することを可能にする、コンピュータ可読媒体。
【００９８】
条項１８。条項１７のコンピュータ可読媒体において、送信側ノードは、物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの１つであり、方法は、物理的コンピュータシステム上で実行して複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより実行され、かつ、修正された出力通信を１つまたは複数のネットワークに転送するステップをさらに含み、第１のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン４（ＩＰｖ４）であり、送信側ノードは、第１のネットワークアドレス指定プロトコルを使用する第１の仮想ネットワークの一部であり、第２のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン６（ＩＰｖ６）であり、１つまたは複数のネットワークは、第１のネットワークとは別個のものであり、かつ、第２のネットワークアドレス指定プロトコルを使用する、送信側ノードと宛先ノードとの間の少なくとも１つの中間物理的ネットワークの一部であり、出力通信を修正するステップを実行して、第１のネットワークを１つまたは複数のネットワーク上にオーバレイさせることを可能にする。
【００９９】
条項１９。条項１７のコンピュータ可読媒体において、コンピュータ可読媒体は、コンピュータデバイス内のメモリ、および、コンテンツを含む生成された信号を伝送するデータ伝送媒体のうちの少なくとも１つである。
【０１００】
条項２０。条項１７のコンピュータ可読媒体において、コンテンツは、命令であって、実行されるときに、コンピュータシステムに方法を実行させる命令である。
【０１０１】
条項２１。コンピューティングノード間の通信を構成するよう構造化されるシステムであって、
１つまたは複数のコンピュータシステムの１つまたは複数のメモリと、
１つまたは複数の中間ネットワークを介した複数のコンピューティングノード間の通信を管理するよう構成される複数の通信マネージャ・モジュールのうちの少なくとも１つであって、各通信マネージャ・モジュールが、１つまたは複数の複数のコンピューティングノードの関連するグループに対する出力通信を、以下のステップにより、すなわち、
送信側コンピューティングノードが、通信マネージャ・モジュールの別のものの関連するグループの一部である宛先コンピューティングノードへの通信を開始した後（送信側コンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードうちの１つである）、１つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、通信に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスには、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュールに対応する、部分的なネットワークアドレスが含まれ、判定された宛先ネットワークアドレスには、送信側コンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標がさらに含まれる、ステップと、
判定された宛先ネットワークアドレスを使用して、開始された通信を、１つまたは複数の中間ネットワークを介して宛先ノードに転送するステップと
により管理する通信マネージャ・モジュールと、
を備えるシステム。
【０１０２】
条項２２。条項２１のシステムにおいて、送信側ノードにより宛先ノードに対して開始される通信に使用するための宛先ネットワークアドレスを、通信マネージャ・モジュールにより判定するステップには、各通信マネージャ・モジュールに対するコンピューティングノードの関連するグループについての情報を保持する、リモートのシステムマネージャ・モジュールと交信するステップが含まれ、交信するステップには、送信側ノードにより使用される他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードネットワークアドレスの指標をシステムマネージャ・モジュールに提供するステップが含まれ、交信するステップには、前記別の通信マネージャ・モジュールであって、前記別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが前記宛先ノードを含む、別の通信マネージャ・モジュール、に対応する、部分的なネットワークアドレスの指標を、システムマネージャ・モジュールから受信するステップがさらに含まれ、システムは、複数の通信マネージャ・モジュールと交信するよう構成される１つまたは複数のシステムマネージャ・モジュールをさらに備える。
【０１０３】
条項２３。条項２１のシステムが、複数の通信マネージャ・モジュールを提供する複数のコンピュータシステムをさらに備え、１つまたは複数のコンピュータシステムはそれぞれ、複数のコンピューティングノードのうちの１つをそれぞれ提供する複数の仮想マシンをホストし、かつ、コンピュータシステムの仮想マシンマネージャモジュールの一部として通信マネージャ・モジュールの内の１つを実行し、コンピュータシステムのホストされる仮想マシンにより提供されるコンピューティングノードが、実行通信マネージャ・モジュールのコンピューティングノードの関連するグループであるようにする。
【０１０４】
条項２４。条項２１のシステムにおいて、通信マネージャ・モジュールはそれぞれ、１つまたは複数のコンピュータシステムのメモリにおいて実行するためのソフトウェア命令を含む。
【０１０５】
条項２５。条項２１のシステムにおいて、各通信マネージャ・モジュールは、１つまたは複数の複数のコンピューティングノードの関連するグループに対する出力通信を管理する手段から成り、出力通信は
送信側コンピューティングノードが、通信マネージャ・モジュールの別のものの関連するグループの一部である宛先コンピューティングノードへの通信を開始した後（送信側コンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードうちの１つである）、１つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、通信に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスには、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュールに対応する、部分的なネットワークアドレスが含まれ、判定された宛先ネットワークアドレスには、送信側コンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標がさらに含まれる、ステップと、
判定された宛先ネットワークアドレスを使用して、開始された通信を、１つまたは複数の中間ネットワークを介して宛先ノードに転送するステップと
により管理される。
【０１０６】
条項２６。コンピューティングノード間の通信を管理するするコンピュータシステムのための方法であって、方法は、複数の関連するコンピューティングノードの通信を管理する通信マネージャ・モジュールの制御下において、
通信マネージャ・モジュールに対する関連するコンピューティングノードの１つである送信側ノード上の実行プログラムから、出力通信の指標を受信するステップであって、出力通信は、別のリモートの通信マネージャ・モジュールに関連する複数の他のコンピューティングノードの１つであるリモートの宛先ノードに対して意図され、送信側ノードおよび宛先ノードは、第１のネットワークアドレス指定プロトコルを使用する第１の仮想ネットワークの一部であるため、宛先ノードが第１のネットワークアドレス指定プロトコルに従って特定される、第１の仮想ネットワークのための仮想ネットワークアドレスである、第１の宛先ネットワークアドレスを有し、通信マネージャ・モジュールは、別個の第２のネットワークアドレス指定プロトコルを使用する少なくとも１つの他の第２の物理的ネットワークを介して、別の通信マネージャ・モジュールに通信可能に接続される、ステップと、
少なくとも１つの第２のネットワーク上を、送信側ノードから宛先ノードに出力通信を送信することを、以下のステップにより、すなわち
第２のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのための別個の第２の宛先ネットワークアドレスを自動的に生成するステップであって、第２の宛先ネットワークアドレスは、別の通信マネージャ・モジュールに対応する第２のネットワークアドレス指定プロトコルに基づく、宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第１のネットワークアドレス指定プロトコルに従って特定される第１の宛先ネットワークアドレスを表す埋め込まれた部分を含む、ステップと、
生成された第２の宛先ネットワークアドレスの使用を開始して、転送される通信を別の通信マネージャ・モジュールにルーティングすることを介して、少なくとも１つの第２のネットワーク上を、出力通信を宛先ノードに転送するステップと
により容易にするステップと
を含む。
【０１０７】
条項２７。条項２６の方法において、送信側ノード上のプログラムは、プログラム実行サービスの第１の顧客の為に実行されている第１のプログラムであり、送信側ノードは、プログラム実行サービスに関連する複数の物理的コンピュータシステムのうちの１つによりホストされる複数の仮想マシンのうちの１つであり、通信マネージャ・モジュールは、１つの物理的コンピュータシステムの仮想マシンマネージャモジュールにより提供され、宛先ノードは、複数の物理的コンピュータシステムのうちの別のものによりホストされる複数の仮想マシンのうちの１つであり、宛先ノードのための別個の第２の宛先ネットワークアドレスを自動的に生成するステップには、プログラム実行サービスのシステムマネージャ・モジュールと交信して、別の通信マネージャ・モジュールに対応する宛先ノードのための部分的な宛先ネットワークアドレスを判定するステップが含まれる。
【０１０８】
条項２８。条項２６の方法において、第１の仮想ネットワークは、送信側ノードおよび宛先ノードが属するプライベート仮想ローカルネットワークであり、通信マネージャ・モジュールに関連する複数のコンピューティングノードのうちの１つまたは複数の他のものが、１つまたは複数の他の仮想ネットワークに属し、少なくとも１つの第２のネットワークは、第１の仮想ネットワークの通信および１つまたは複数の他の仮想ネットワークの通信が転送される非プライベートネットワークであり、宛先ノードのための自動的に生成された第２の宛先ネットワークアドレスは、生成された第２の宛先ネットワークアドレスに含まれる第１の宛先ネットワークアドレスの解決を可能にするように、第１の仮想ネットワークを表す識別子をさらに含む。
【０１０９】
条項２９。コンピューティングノード間の通信を管理するためのコンピュータに実装される方法であって、
ソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する指標を受信するステップであって、ソースコンピューティングノードおよび宛先コンピューティングノードは、第１のネットワークアドレス指定プロトコルを使用して、第１のネットワークアドレス指定プロトコルに従って特定される、仮想ネットワークのための仮想ネットワークアドレスを、宛先コンピューティングノードが有するようにする、仮想ネットワークの一部であり、ソースコンピューティングノードは、別個の第２のネットワークアドレス指定プロトコルを使用する少なくとも１つの中間ネットワークを介して、宛先コンピューティングノードに通信可能に接続される、ステップと、
少なくとも１つの中間ネットワーク上を、ソースコンピューティングノードから宛先コンピューティングノードに、通信を送信することを容易にするステップであって、容易にするステップには、第２のネットワークアドレス指定プロトコルに従って特定される、宛先コンピューティングノードのための宛先ネットワークアドレスを自動的に生成するステップが含まれ、宛先ネットワークアドレスは、複数のコンピューティングノードに対応する、宛先コンピューティングノードのための部分的な宛先ネットワークアドレスを含み、かつ、宛先コンピューティングノードのための仮想ネットワークアドレスを表す部分を含む、ステップと、
少なくとも１つの中間ネットワーク上で、通信を宛先コンピューティングノードにルーティングするときに使用するための、生成された宛先ネットワークアドレスの指標を提供するステップと
を含む方法。
【０１１０】
条項３０。条項２９の方法において、前記宛先ネットワークアドレスを自動的に生成するステップは、ソースコンピューティングノードを含む１つまたは複数のコンピューティングノードの通信を管理する第１の通信マネージャ・モジュールの制御下において実行され、部分的な宛先ネットワークアドレスは、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第２の通信マネージャ・モジュールに対応し、少なくとも１つの中間ネットワーク上で通信を宛先コンピューティングノードにルーティングすることには、通信を前記第２の通信マネージャ・モジュールにルーティングすることが含まれる。
【０１１１】
条項３１。条項３０の方法において、方法は、第２の通信マネージャ・モジュールの制御下において、通信が第２の通信マネージャ・モジュールにルーティングされた後、生成された宛先ネットワークアドレスに含まれる仮想ネットワークアドレスを使用して、宛先コンピューティングノードを識別するステップと、識別された宛先コンピューティングノードに通信を転送するステップと、をさらに含む。
【０１１２】
条項３２。条項２９の方法において、生成された宛先ネットワークアドレスは、仮想ネットワークの識別子をさらに含み、仮想ネットワークのための仮想ネットワークアドレスが割り当てられるコンピューティングノードを判定することに少なくとも部分的に基づき、通信の宛先コンピューティングノードを、生成された宛先ネットワークアドレスから識別することを可能にするようにする。
【０１１３】
条項３３。条項２９の方法において、生成された宛先ネットワークアドレスの部分的な宛先ネットワークアドレスは、少なくとも１つの中間ネットワークのトポロジを反映して、複数のコンピューティングノードを含む少なくとも１つの中間ネットワークの一部に対応するようにする。
【０１１４】
条項３４。条項２９の方法において、生成された宛先ネットワークアドレスの部分的な宛先ネットワークアドレスは、複数のコンピューティングノードが共同設置される物理的サブネットワークに対応する。
【０１１５】
条項３５。条項２９の方法において、宛先ネットワークアドレスを自動的に生成するステップは、それぞれが複数のコンピューティングノードを含む複数の仮想ネットワークについての情報を保持する、システムマネージャ・モジュールの制御下において実行され、保持される情報には、複数の仮想ネットワークのための仮想ネットワークアドレスが割り当てられるコンピューティングノードについての情報が含まれる。
【０１１６】
条項３６。条項２９の方法において、宛先ネットワークアドレスを自動的に生成するステップは、ソースコンピューティングノードを含む１つまたは複数のコンピューティングノードの通信を管理する、通信マネージャ・モジュールの制御下において実行され、宛先ネットワークアドレスを自動的に生成するステップには、仮想ネットワークアドレスが割り当てられるコンピューティングノードについての情報を保持するリモートのシステムマネージャ・モジュールと交信するステップが含まれ、交信するステップには、宛先ネットワークアドレスに対応するリモートのシステムマネージャ・モジュールから情報を取得するステップが含まれる。
【０１１７】
条項３７。条項２９の方法において、ソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する受信された指標は、ソースコンピューティングノードにより送信される出力通信であり、出力通信は、宛先コンピューティングノードの仮想ネットワークアドレスを使用して、出力通信の意図される受信者を示し、生成された宛先ネットワークアドレスの指標を提供するステップには、出力通信を少なくとも１つの中間ネットワークに転送して、生成された宛先ネットワークアドレスを使用して通信を少なくとも１つの中間ネットワーク上でルーティングする、ステップが含まれる。
【０１１８】
条項３８。条項２９の方法において、ソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する受信された指標は、後で通信を送信するときに使用するための宛先コンピューティングノードのアドレシング情報を求めるソースコンピューティングノードからの要求であり、方法は、宛先コンピューティングノードのダミーのアドレシング情報を、生成された宛先ネットワークアドレスにマッピングするステップと、ダミーのアドレシング情報をソースコンピューティングノードに提供するステップと、を含み、生成された宛先ネットワークアドレスの指標を提供するステップには、ソースコンピューティングノードが後で通信を送信し、かつ、提供されたダミーのアドレスシング情報を使用して宛先コンピューティングノードを示した後、提供されたダミーのアドレスシング情報の代わりに、生成された宛先ネットワークアドレスを使用するステップが含まれる。
【０１１９】
条項３９。条項２９の方法において、ソースコンピューティングノードは、第１の物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの１つであり、第１の物理的コンピュータシステムは、顧客の為にプログラムを実行するプログラム実行サービスにより使用される、複数の物理的コンピュータシステムうちの１つであり、ソースコンピューティングノードは、プログラム実行サービスの顧客のうちの１つの為に、１つまたは複数のプログラムを実行し、方法は、第１の物理的コンピュータシステム上で実行して、プログラム実行サービスの為に複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより実行され、少なくとも１つの中間ネットワーク上を、ソースコンピューティングノードから宛先コンピューティングノードに通信を送信することを容易にするステップは、プログラム実行サービスの為に実行され、仮想ネットワークを１つの顧客に提供する。
【０１２０】
条項４０。条項２９の方法において、通信を少なくとも１つの中間ネットワークで宛先コンピューティングノードにルーティングするときに使用するための生成された宛先ネットワークアドレスの指標を提供するステップは、実行されて、少なくとも１つの中間ネットワーク上を送信される１つまたは複数の別個の通信内に通信をカプセル化することなく、仮想ネットワークを少なくとも１つの通信の中間ネットワークにオーバレイさせることを可能にする。
【０１２１】
条項４１。コンピュータ可読媒体であって、
宛先ノードに対して意図される通信に関する指標を受信するステップであって、宛先ノードは、第１のネットワークアドレス指定プロトコルを使用する第１の仮想ネットワークの一部であり、かつ、第１のネットワークアドレス指定プロトコルを使用して関連する第１の仮想ネットワークアドレスを有し、通信は、別個の第２のネットワークアドレス指定プロトコルを使用する１つまたは複数のネットワークを介して送信される、ステップと、
第２のネットワークアドレス指定プロトコルを使用して、宛先ノードのための宛先ネットワークアドレスを判定するステップであって、宛先ネットワークアドレスは、第２のネットワークアドレス指定プロトコルに基づく、宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第１の仮想ネットワークアドレスの指標を含む、ステップと、
判定された宛先ネットワークアドレスの指標を提供して、１つまたは複数のネットワーク上を、宛先ノードに通信を送信することを可能にするステップと
を含む方法を実行することによって、コンピュータ可読媒体のコンテンツは、コンピュータシステムが通信を管理することを可能にする、コンピュータ可読媒体。
【０１２２】
条項４２。条項４１のコンピュータ可読媒体において、通信は、物理的コンピュータシステムによりホストされる複数の仮想マシンの１つであり、かつ、第１の仮想ネットワークの一部である、送信側ノードからのものであり、１つまたは複数のネットワークは、第２のネットワークアドレス指定プロトコルを使用する、送信側ノードと宛先ノードとの間の少なくとも１つの中間物理的ネットワーク一部であり、方法は、物理的コンピュータシステム上で実行して複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより実行され、かつ、判定された宛先ネットワークアドレスを使用して、１つまたは複数のネットワークに通信を転送して、第１の仮想ネットワークを１つまたは複数のネットワーク上にオーバレイされることを可能にするステップをさらに含み、第１のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン４（ＩＰｖ４）であり、第２のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン６（ＩＰｖ６）であり、宛先ノードのための宛先ネットワークアドレスを判定するステップには、宛先ネットワークアドレスを生成するステップが含まれる。
【０１２３】
条項４３。条項４１のコンピュータ可読媒体において、コンピュータ可読媒体は、コンピュータデバイス内のメモリ、および、コンテンツを含む生成された信号を伝送するデータ伝送媒体のうちの少なくとも１つである。
【０１２４】
条項４４。条項４１のコンピュータ可読媒体において、コンテンツは、命令であって、実行されるときに、コンピュータシステムに方法を実行させる命令である。
【０１２５】
条項４５。条項４１のコンピュータ可読媒体において、コンテンツには、ネットワークアドレスを記憶するときに使用するための１つまたは複数のエントリを含む、１つまたは複数のデータ構造が含まれ、１つまたは複数のエントリには、第１のネットワークアドレス指定プロトコルに従って特定される第１のネットワークアドレスを含む第１のエントリが含まれる。
【０１２６】
条項４６。コンピューティングノード間の通信を管理するよう構造化されるシステムであって、
１つまたは複数のコンピュータシステムの１つまたは複数のメモリと、
１つまたは複数の中間ネットワークを介した複数のコンピューティングノード間の通信を管理するよう構成される複数の通信マネージャ・モジュールのうちの少なくとも１つであって、各通信マネージャ・モジュールが、１つまたは複数の複数のコンピューティングノードの関連するグループに対する通信を、以下のステップにより、すなわち、
ソースコンピューティングノードから、別の通信マネージャ・モジュールの関連するグループの一部である宛先コンピューティングノードへの、１つまたは複数の通信に関する指標を受信した後（ソースコンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードうちの１つである）、１つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、１つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスは、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュール、に対応する、部分的なネットワークアドレスを含み、判定された宛先ネットワークアドレスは、ソースコンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標をさらに含む、ステップと、
１つまたは複数の中間ネットワーク上を、１つまたは複数の通信を宛先コンピューティングノードに送信するときに使用するための、判定された宛先ネットワークアドレスの指標を提供するステップと
により管理する通信マネージャ・モジュールと、
を備えるシステム。
【０１２７】
条項４７。条項４６のシステムにおいて、通信マネージャ・モジュールにより、１つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップには、各通信マネージャ・モジュールのコンピューティングノードの関連するグループについての情報を保持するリモートのシステムマネージャ・モジュールと交信するステップが含まれ、交信するステップには、ソースコンピューティングノードにより使用される他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードネットワークアドレスのシステムマネージャ・モジュールに指標を提供するステップが含まれ、交信するステップには、システムマネージャ・モジュールから、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先コンピューティングノードを含む、別の通信マネージャ・モジュール、に対応する部分的なネットワークアドレスの指標を受信するステップがさらに含まれ、システムは、複数の通信マネージャ・モジュールと交信するよう構成される１つまたは複数のシステムマネージャ・モジュールをさらに備える。
【０１２８】
条項４８。条項４６のシステムは、複数の通信マネージャ・モジュールを提供する複数のコンピュータシステムをさらに備え、１つまたは複数のコンピュータシステムはそれぞれ、複数のコンピューティングノードのうちの１つをそれぞれ提供する複数の仮想マシンをホストし、かつ、コンピュータシステムの仮想マシンマネージャモジュールの一部として通信マネージャ・モジュールの内の１つを実行し、コンピュータシステムのホストされる仮想マシンにより提供されるコンピューティングノードが、実行通信マネージャ・モジュールのコンピューティングノードの関連するグループであるようにする。
【０１２９】
条項４９。条項４６のシステムにおいて、少なくとも１つの通信マネージャ・モジュールはそれぞれ、１つまたは複数のコンピュータシステムのメモリにおいて実行するためのソフトウェア命令を含む。
【０１３０】
条項５０。条項４６のシステムにおいて、少なくとも１つの通信マネージャ・モジュールのそれぞれは、１つまたは複数の複数のコンピューティングノードのうちの関連するグループに対する出力通信を管理する手段から成り、出力通信は
ソースコンピューティングノードから、別の通信マネージャ・モジュールの関連するグループの一部である宛先コンピューティングノードへの、１つまたは複数の通信に関する指標を受信した後（ソースコンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードのうちの１つである）、１つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、１つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスは、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュール、に対応する、部分的なネットワークアドレスを含み、判定された宛先ネットワークアドレスは、ソースコンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標をさらに含む、ステップと、
１つまたは複数の中間ネットワーク上を、１つまたは複数の通信を宛先コンピューティングノードに送信するときに使用するための、判定された宛先ネットワークアドレスの指標を提供するステップと
により管理される。
【０１３１】
本明細書において、特定の実施形態が例示の目的で記載されたが、本発明の精神および範囲から逸脱することなく、種々の修正がなされ得ることは、上記の記載から理解されるであろう。従って、本発明は、添付の請求項およびここに列挙される要素によるものを除いて、制限されることは無い。加えて、本発明の特定の態様が以下の特定の請求項の形式で表されるが、本発明者は、本発明の種々の態様を任意の利用可能な請求項の形式で熟考する。例えば、現在、本発明のいくつかの態様のみが、コンピュータ可読媒体において具現化されるものとして列挙されるが、他の態様を同様に具現化することができる。
【図１】
0005520929.tif 000002
【図２Ａ】
0005520929.tif 000003
【図２Ｂ】
0005520929.tif 000004
【図２Ｃ】
0005520929.tif 000005
【図３】
0005520929.tif 000006
【図４】
0005520929.tif 000007
【図５】
0005520929.tif 000008