1つまたは複数の物理的ネットワークにより分割されるコンピューティングノード等の、複数のコンピューティングノード間の通信を管理する技術について説明する。いくつかの実施形態において、この技術を使用して、1つまたは複数の中間物理的ネットワークにより分割される複数のコンピューティングノード間に仮想ネットワークを提供することができ、その複数のコンピューティングノードは、例えば、単一のエンティティによりまたは単一のエンティティの為に運用される。そのような1つまたは複数の中間物理的ネットワークのエッジからなどの仮想ネットワークは、以下でより詳細に検討するように、種々の方法で種々の実施形態において、オーバレイ・ネットワーク(overlay network)を提供するために中間物理的ネットワークに入る通信、および/または、出る通信を修正することにより、提供することができる。少なくともいくつかの実施形態において、いくつかまたは全ての記載の技術は、通信マネージャ・モジュール(Communication Manager module)の実施形態により、自動的に実行される。
複数のリモート・コンピューティングノード間の仮想ローカルネットワークまたは他の仮想ネットワークは、少なくともいくつかの実施形態において、複数のコンピューティングノードを分割する1つまたは複数の中間物理的ネットワーク上にオーバレイ・ネットワークを形成することにより提供できる。オーバレイ・ネットワークは、種々の方法で種々の実施形態において、仮想ネットワークの仮想ネットワークアドレス情報を、1つまたは複数の中間物理的ネットワークのネットワーク・プロトコルに使用されるより大きな物理的ネットワークアドレス空間に埋め込むことにより、通信をカプセル化することなどせずに実装することができる。一例示例として、仮想ネットワークは、32ビットIPv4(「インターネット・プロトコルversion4」)ネットワークアドレスを使用して実装することができる。そして、それらの32ビット仮想ネットワークアドレスを、通信パケットもしくは(例えば、ステートレスIP/ICMP翻訳(Stateless IP/ICMP Translation)、すなわち、SIITを使用する)他のデータ伝送の再ヘッダリング(re-headering)により、または、そのようなデータ伝送を修正して第1のネットワーク・プロトコルに対して構成されるそのデータ伝送を第1のネットワーク・プロトコルから別個の第2のネットワーク・プロトコルに翻訳することなどにより、1つまたは複数の中間物理的ネットワークにより使用される128ビットIPv6(「インターネット・プロトコルversion6」)ネットワークアドレスの一部として埋め込むことができる。より一般的には、いくつかの実施形態において、第1のネットワークアドレス指定プロトコル(network addressing protocol)に従って指定されるNビットのネットワークアドレスは、第2のネットワークアドレス指定プロトコルに従って指定される別のMビットのネットワークアドレスの一部として埋め込むことができる。ここで、「N」および「M」は、ネットワークアドレス指定プロトコルに対応する任意の整数である。加えて、少なくともいくつかの実施形態において、対象のNビットのネットワークアドレスのグループが、より少ないビット数を使用して表現されるような場合(例えば、Lビットのラベルまたは識別子が、特定のNビットのネットワークアドレスにマッピングされ、かつ他のネットワークアドレスに埋め込まれていることによって(「L」は「N」より小さい))、Nビットのネットワークアドレスは、Nビットより多いかまたは少ない他のネットワークアドレスを使用して、別のネットワークアドレスに埋め込むことができる。SIITに関する追加的な詳細については、「Request For Comments 2765−ステートレスIP/ICMP翻訳アルゴリズム」2000年2月の、tools<dot>ietf<dot>org<slash>html<slash>rfc2765(ここで、<dot>および<slash>は、それらの名前を有する対応する文字で置き換えられる)で入手でき、その全体が参照により本明細書に組み込まれる。種々の利益は、仮想ネットワークアドレス情報を下層の物理的基盤ネットワーク(underlying physical substrate network)の物理的ネットワークアドレスに埋め込むことから得られ、以下でより詳細に検討するように、通信をカプセル化することなく、または、物理的基板のネットワークのネットワークデバイスを構成することなく、仮想ネットワークのオーバレイを物理的基盤ネットワーク上で可能にすることが含まれる。さらに、他の情報は、同様に、少なくともいくつかの実施形態および状況において、コンピューティングノード間の通信のためのより大きな物理的ネットワークアドレス空間に埋め込むことができ、その情報には、それらのコンピューティングノード(例えば、エンティティのための仮想ネットワークであって、エンティティの為にそれらのコンピューティングノードが運用する)を含む特定の仮想ネットワークに特有の識別子等がある。オーバレイ・ネットワークの使用を介するそのような仮想ネットワークのプロビジョニングに関する追加的な詳細については、以下に記載される。
加えて、少なくともいくつかの実施形態において、その間に通信が構成されるコンピューティングノードは、物理的なコンピュータシステムとすることができ、および/または、1つまたは複数の物理的コンピュータシステム上でそれぞれホストされる仮想マシンとすることができ、かつ、通信には、種々のフォーマットでのデータ(例えば、メッセージ、パケット、フレーム、ストリーム等)の伝送を含むことができる。さらに、少なくともいくつかの実施形態において、少なくともいくつかのコンピューティングノードは、複数の顧客またはサービスの他のユーザの為に複数のプログラムを実行する、プログラム実行サービス(すなわち「PES(program execution service)」)の一部とすることができ、そのようなプログラム実行サービスには、複数の物理的ネットワーク(例えば、複数の物理的コンピュータシステムおよびデータセンタ内のネットワーク)上で複数のコンピュータシステムを使用するものがある。少なくともいくつかのそのような実施形態において、プログラム実行サービスの1つまたは複数のシステムマネージャ・モジュールは、以下でより詳細に検討するように、どのコンピューティングノードがどの仮想ネットワークに属するかを、そのコンピューティングノードによる顧客または他のエンティティの為のプログラムの実行などに基づいて、追跡および/または管理することができる。
記載の技術を使用することにより、種々の状況において種々の利益を提供することができ、特定の仮想ネットワークのコンピューティングノードへのおよび/または特定の仮想ネットワークのコンピューティングノードからの通信を、その仮想ネットワークに属する他のコンピューティングノードに限定する等を行う。このようにして、複数の仮想ネットワークに属するコンピューティングノードは、1つまたは複数の中間物理的ネットワークの一部を共有し、一方で、さらに特定の仮想ネットワークのコンピューティングノードに対するネットワーク分離を保持することができる。加えて、記載の技術を使用することにより、仮想ネットワークのコンピューティングノードを、物理的に移動させか、所望に位置させることができ、オーバレイ・ネットワークが、特定の仮想ネットワークアドレスに対する通信を、対応する実際の物理的ネットワークアドレスに(例えば、特定の仮想ネットワークの特定の仮想ネットワークアドレスを、仮想ネットワークアドレスが割り当てられるコンピューティングノードの特定の物理的な場所に関連付けるマッピングを更新することにより)ルーティングすることを管理する。例えば、他の箇所でより詳細に記載するように、仮想ネットワークのコンピューティングノードを、種々の物理的ネットワーク間で物理的に移動させ、一方、関連する通信マネージャ・モジュール(Communication Manager module)によりコンピューティングノードに割り当てられるダミーのハードウェア・アドレスの管理に基づくなどして、コンピューティングノードのハードウェア・アドレス間の任意の可能性のある矛盾(conflict)を最小にする、または除去することができる。仮想ネットワークに関連するコンピューティングノードを容易に移動させることに加えて、記載の技術を使用することにより、コンピューティングノードを、容易に仮想ネットワークに追加、および/または仮想ネットワークから削除することもでき、エンティティにより仮想ネットワークの大きさを動的に修正させる等する(例えば、コンピューティングノードの量を動的に修正して、ある程度のコンピューティング資源への現在の必要性の総量を反映することを可能にする)。
いくつかの場合において、そのような仮想ネットワークを、仮想ネットワークの通信を構成および管理することによるなどして、1つまたは複数の中間物理的ネットワークのエッジにおける1つまたは複数の通信マネージャ・モジュールの運用を介して、確立および/または保持することができる。特に、1つまたは複数のコンピューティングノードのグループは、それらのコンピューティングノードとの通信を管理する、関連する通信マネージャ・モジュールを有することができる。例えば、物理的コンピュータシステムが複数の仮想マシンコンピューティングノードをホストする場合、物理的コンピュータシステム上のハイパーバイザ(hypervisor)または他の仮想マシンモニタマネージャが、それらの仮想マシンコンピューティングノードのための通信マネージャ・モジュールを提供することができる。同様に、1つまたは複数の物理的コンピュータシステムは、少なくともいくつかの実施形態において、関連する通信マネージャ・モジュールを有することができ、これは、プロキシコンピュータデバイスであってこれを介して物理的コンピュータシステムとの通信が行われるプロキシコンピュータデバイスや、ネットワークデバイス(例えば、スイッチ、ルータ、ハブ等)であってこれを介して物理的コンピュータシステムとの通信が行われるネットワークデバイスにより提供されるなどする。
いくつかの状況において、通信マネージャ・モジュールは、モジュールの関連するコンピューティングノードが属する(例えば、エンティティに基づき、エンティティの為に仮想ネットワークが運用する)仮想ネットワークを追跡または判定し、そして、それぞれ関連するコンピューティングノードへの通信および/またはそれぞれ関連するコンピューティングノードからの通信を操作して、その関連する仮想ネットワークを反映する。コンピューティングノードの対応する仮想ネットワークの通信マネージャ・モジュールによる判定は、種々の実施形態において種々の方法で実行することができ、例えば、その情報を提供するシステムマネージャ・モジュールと交信することにより、または、そのようなコンピューティングノード上で実行されるソフトウェアプログラムを追跡することにより、または、そのようなコンピューティングノードに関連するエンティティを追跡することによるなどして、実行される。例えば、特定のコンピューティングノードが、プログラム実行サービスの顧客であるエンティティの為に1つまたは複数のソフトウェアプログラムの実行を開始し、かつ、その顧客がまた、他のコンピューティングノード上で実行する他のソフトウェアプログラムを有するとき、顧客のプログラム(複数可)を実行するその新しいコンピューティングノードを、それらの他のコンピューティングノードを含む顧客の仮想ネットワークに関連付けされるように選択することができる。あるいは、顧客または他のエンティティは、エンティティが、コンピューティングノードの異なるグループ間の複数の別個の仮想ネットワークを維持する場合などは、コンピューティングノードが属する特定の仮想ネットワークを特定することができる。
上述したように、いくつかの実施形態において、プログラム実行サービスは、それぞれ複数の仮想マシンをホストする複数の物理的コンピュータシステム(例えば、1つまたは複数のデータセンタにおいて)を使用して、サードパーティの顧客のプログラムを実行し、各仮想マシンは、顧客の1つまたは複数のプログラムを実行することができる。いくつかの状況において、記載の技術は、1つまたは複数の通信マネージャ・モジュールが使用し、プログラム実行サービスの一部として実行して各顧客のプログラムとの通信を制御することができる。例えば、それぞれ関連するコンピューティングノードへの通信、および/または、それぞれ関連するコンピューティングノードからの通信、を操作して、その関連する仮想ネットワークを反映することにより、以下でより詳細に検討するように、通信マネージャ・モジュールは、他の仮想ネットワーク上のコンピューティングノードがそれらの通信へのアクセスを獲得することを阻止することができる。いくつかの実施形態において、顧客は、実行すべきプログラムを実行サービスに提供することができ、かつ、実行時間、および実行サービスにより提供される物理的または仮想ハードウェア設備上の他の資源を予約することができる。加えて、顧客および/またはプログラム実行サービスは、顧客のコンピューティングノードのためのプログラム実行サービスにより使用される仮想ネットワークを定義して、仮想ネットワークのコンピューティングノードに、専用の物理的ネットワーク上での運用の外観(appearance)を透過的に提供することができる。
少なくともいくつかの実施形態において、1つまたは複数のシステムマネージャ・モジュールは、コンピューティングノード間に通信を構成することを容易にすることができ、これは、例えば、どのコンピューティングノードがどの仮想ネットワークに属するかを(例えば、顧客または他のエンティティの為にプログラムを実行することに基づき)、追跡および/または管理することにより、および、特定の仮想ネットワークで使用される仮想ネットワークアドレスに対応する実際の物理的ネットワークアドレスについての情報を(例えば、特定の顧客または他のエンティティにより)提供することにより行う。例えば、PESのためのシステムマネージャ・モジュールは、PESの複数の物理的ネットワークの1つの一部である、目標の物理的コンピュータシステム上の仮想マシンの指標(indication)を受け取ることができる。そして、システムマネージャ・モジュールは、仮想マシンが関連付けされるべき仮想ネットワークを判定することができる。仮想マシンに関連する仮想ネットワークを判定した後、システムマネージャ・モジュールは、目標の物理的コンピュータシステムのための仮想マシン通信マネージャ・モジュールの構成を開始して、仮想マシンを仮想ネットワークに関連付けすることができる、または、通信マネージャ・モジュールが、代わりにその構成を開始することができる(例えば、仮想マシンが最初に通信を開始または受信するとき)。
加えて、少なくともいくつかの実施形態において、コンピューティングノードおよび仮想ネットワークについての種々の情報を使用して、許可された通信のみが通信マネージャ・モジュールにより配信または転送される場合(または、未許可の通信が、1つまたは複数の他の方法で許可された通信とは異なって扱われる場合)などに、コンピューティングノード間の通信が許可されるかどうかを判定する。未許可の通信をコンピューティングノードに配信しないことにより、エンティティの仮想ネットワークのネットワーク分離およびセキュリティが向上する。
例えば、第1の仮想ネットワーク上の第1のコンピューティングノードが、異なる第2の仮想ネットワーク上の第2のコンピューティングノードへの出力通信(出ていく通信:outgoing communication)を送信しようとし、かつ、その第2の仮想ネットワーク(または第2のコンピューティングノード)が、第1の仮想ネットワークから(または、第1のコンピューティングノードからの)入力通信(入ってくる通信:incoming communication)を許可していない場合、第1のコンピューティングノードは、そのような通信を、第1および第2のコンピューティングノード間の1つまたは複数の中間基盤ネットワーク上へ送信することができない場合があるが、これは、そのような出力通信を遮断する(例えば、第1のコンピューティングノードからの出力通信を受信するが、その出力通信を転送しないこと、または、第1のコンピューティングノードがそのような通信の送信時に使用され得る第2のコンピューティングノードの1つまたは複数のアドレスについての情報を取得することを阻止すること、等により)、その第1のコンピューティングノードに関連する通信マネージャ・モジュールに起因する。加えて、未許可の通信が、中間基盤ネットワークを介して、意図される宛先コンピューティングノードに送信される場合(例えば、悪質なユーザが、通信マネージャ・モジュールの制御を獲得すること、または基盤ネットワークへのアクセスを獲得することが可能であることに基づく)、宛先コンピューティングノードの通信を管理する通信マネージャ・モジュールは、未許可の通信を識別し、宛先ノードへ転送されることを阻止することができる。
少なくともいくつかの実施形態において、未許可の通信の検出および/または阻止は、仮想ネットワークがオーバレイされる1つまたは複数の中間基盤ネットワークのトポロジに少なくとも部分的に基づくものとすることができる。特に、少なくともいくつかの実施形態において、仮想ネットワークの一部である各コンピューティングノードは、関連する通信マネージャ・モジュールにより管理される。図2Aから2Cおよび他の図面に関してより詳細に記載するように、少なくともいくつかのそのような実施形態において、基盤ネットワーク上の通信のそのようなコンピューティングノードに使用される物理的ネットワークアドレスには、コンピューティングノードの仮想ネットワークアドレスの指標が含まれ、かつ、コンピューティングノードの関連する通信マネージャ・モジュールの場所(例えば、通信マネージャ・モジュールが通信を管理する基盤ネットワークのサブネットワークまたは他の部分)に対応する基盤ネットワークのための部分的なネットワークアドレスが含まれる。従って、悪質なユーザが、仮想ネットワークの一部であるコンピューティングノードのための有効な物理的ネットワークアドレスを正確に作成するためには、悪質なユーザは、コンピューティングノードが属する仮想ネットワークについての情報へのアクセスを獲得し、関連する通信マネージャ・モジュールのための部分的なネットワークアドレスを判定するために、コンピューティングノードの物理的ネットワークの場所のトポロジについての情報へのアクセスを獲得し、その情報をどのように使用して物理的ネットワークアドレスを作成するかを判定する必要があろう。構築された物理的ネットワークアドレスの有効性は、種々の方法でチェックすることができ、例えば、構築された物理的ネットワークアドレスに埋め込まれる仮想アドレスが対応するコンピューティングノードを識別すること、及び、その識別されたコンピューティングノードの場所が、部分的なネットワークアドレスに対応するネットワークの一部内のコンピューティングノードの1つ(例えば、部分的ネットワークアドレスが対応する通信マネージャ・モジュールにより管理されるコンピューティングノードの1つ)に対応することを検証することにより行う。加えて、構築された物理的ネットワークアドレスの有効性は、種々の時間にチェックすることができ、例えば、宛先コンピューティングノードに対して意図された、入力通信を受信する(例えば、ソース物理的ネットワークアドレスが有効であることを検証する)通信マネージャ・モジュール、及び、示され管理されるコンピューティングノードの為に通信マネージャ・モジュールから意図的にメッセージを受信するシステムマネージャ・モジュール(例えば、対象となる意図される宛先コンピューティングノードのための物理的ネットワークアドレスを要求するメッセージ)などにより行う。
加えて、少なくともいくつかの実施形態において、未許可の通信の検出および/または阻止は、コンピューティングノードが属する仮想ネットワークに少なくとも部分的に基づくものとすることができる。特にいくつかの実施形態において、通信マネージャ・モジュールにより管理されるいくつかまたは全てのコンピューティングノードは、それぞれ1つまたは複数の仮想ネットワークに割り当てられ、ユーザまたは他のエンティティであってコンピューティングノードがこれの為に運用を行うユーザまたは他のエンティティに対応させるなどする(例えば、1つまたは複数のプログラムがコンピューティングノードで実行されていることから)。そのような実施形態において、いくつかまたは全ての仮想ネットワークは、仮想ネットワーク上のコンピューティングノード間、および/または、他の仮想ネットワークからのコンピューティングノード間に、何の通信が許可されるかについての関連する規則を有することができる。その場合、そのような所定の規則は、関連するコンピューティングノードへの入力通信、および/または、関連するコンピューティングノードからの出力通信を受信する通信マネージャ・モジュールにより、そのような通信を転送するかどうか、または、そのような通信を許可するかどうかを判定するために使用され、その判定は、送信側コンピューティングノードおよび宛先コンピューティングノードが関連付けされる、仮想ネットワーク(複数可)および/またはエンティティ(複数可)についての情報に基づくなどして行う。通信マネージャ・モジュールは、関連する仮想ネットワークおよび/または関連するコンピューティングノードのエンティティについてのそのような情報、および/または、仮想ネットワークに対する所定の規則についてのそのような情報を、追跡および記憶することができ、または、その代わりに、いくつかの実施形態において、いくつかまたは全てのそのような情報を取得するために、1つまたは複数のシステムマネージャ・モジュールと交信することができる。コンピューティングノード間の通信が許可されるかどうかの判定、および、そのような判定に対応する動作、に関する追加的な詳細については、以下に記載される。
例示の目的で、いくつかの実施形態が以下に記載され、それにおいて、特定のタイプのコンピューティングノード、ネットワーク、通信、およびコンフィギュレーション操作が実行される。これらの例は、例示の目的で与えられ、かつ、簡潔にするために簡素化され、発明の技術は、多種多様の他の状況において使用可能であり、そのうちのいくつかを以下で検討する。
図1は、仮想ネットワークに属するコンピューティングノード間の通信を構成する一例の実施形態を例示するネットワーク図であり、通信は、コンピューティングノードに対して透過的な方法で、1つまたは複数の中間物理的ネットワーク上にオーバレイされる。本例において、コンピューティングノードは、プログラム実行サービスの一部であり、通信の構成は、プログラム実行サービスのシステムマネージャ・モジュールおよびプログラム実行サービスの複数の通信マネージャ・モジュールにより、容易にされる。他の実施形態において、その技術は、プログラム実行サービスを伴わない状況、例えば、1つまたは複数のエンティティの為に、仮想ネットワークの任意の他の使用を伴う状況(例えば、会社の他の部分または組織のプライベートネットワーク上の他の組織の、複数の仮想ネットワークをサポートするため)で、使用することができる。
例示の例には、プログラム実行サービスにより運営される複数の物理的コンピュータシステムを有するデータセンタ100が含まれる。データセンタ100は、データセンタ100の外部にあるグローバルインターネット135に接続され、グローバルインターネットは、プライベートネットワーク140を介した1つまたは複数のコンピュータシステム145aと、それぞれ複数のコンピュータシステムを有する1つまたは複数の他のグローバルにアクセス可能なデータセンタ160と、1つまたは複数の他のコンピュータシステム145bと、へのアクセスを提供する。グローバルインターネット135は、例えば、インターネット等のネットワークの公的にアクセス可能なネットワークとすることができ、種々の別個のグループにより運用可能であり、プライベートネットワーク140は、例えば、プライベートネットワーク140の外部のコンピュータシステムからは全体としてまたは部分的にアクセス不可能である企業ネットワークとすることができる。コンピュータシステム145bは、例えば、インターネットに(例えば、電話線、ケーブルモデム、デジタル加入者回線(「DSL」)等を介して)直接接続する家庭用コンピュータシステムとすることができる。
データセンタ100には、多数の物理的コンピュータシステム105aから105dと、155aから155nと、また、1つまたは複数の他のコンピュータシステム(図示せず)上で実行して、関連するコンピュータシステム155aから155nに対する通信を管理する通信マネージャ・モジュール150と、1つまたは複数のコンピュータシステム(図示せず)で実行するプログラム実行サービスのシステムマネージャ・モジュール110とが含まれる。本例において、各物理的コンピュータシステム105aから105dは、複数の仮想マシンコンピューティングノードをホストし、仮想マシン(「VM:virtual machine」)通信マネージャ・モジュールを(例えば、物理的コンピュータシステムの仮想マシン・ハイパーバイザ・モニタの一部として)含み、例えば、コンピュータシステム105a上のVM通信マネージャ・モジュール109aおよび仮想マシン107a、ならびに、コンピュータシステム105d上のVM通信マネージャ・モジュール109dおよび仮想マシン107d等である。物理的コンピュータシステム155aから155nは、この例においては任意の仮想マシンを実行せず、従ってそれぞれが、プログラム実行サービスの顧客の為に、1つまたは複数のソフトウェアプログラムを直接実行するコンピューティングノードとして動作することができる。他の実施形態において、データセンタにおける全ての物理的コンピュータシステムが、仮想マシンをすべてホストすることができるか、または全くホストしない。
本例のデータセンタには、複数のネットワークデバイスがさらに含まれ、例えば、スイッチ115aから115bと、エッジ・ルータ125aから125cと、コア・ルータ130aから130cとである。スイッチ115aは、物理的コンピュータシステム105aから105cを含む物理的ネットワークの一部であり、エッジ・ルータ125aに接続される。スイッチ115bは、物理的コンピュータシステム105dと、155aから155nと、通信マネージャ・モジュール150およびシステムマネージャ・モジュール110を提供するコンピュータシステムと含む別個の物理的ネットワークの一部であり、エッジ・ルータ125bに接続される。スイッチ115aから115bにより確立される物理的ネットワークは、同じく、中間相互接続ネットワーク120を介してお互いに、および他のネットワーク(例えば、グローバルインターネット135)に接続され、中間相互接続ネットワークにはエッジ・ルータ125aから125cと、コア・ルータ130aから130cとが含まれる。エッジ・ルータ125aから125cは、2つまたはそれ以上のネットワーク間のゲートウェイを提供する。例えば、エッジ・ルータ125aは、スイッチ115aにより確立される物理的ネットワークと相互接続ネットワーク120との間のゲートウェイを提供する。エッジ・ルータ125cは、相互接続ネットワーク120とグローバルインターネット135との間のゲートウェイを提供する。コア・ルータ130aから130cは、相互接続ネットワーク120内の通信を管理する。これは、例えば、パケットまたは他のデータ伝送を、そのようなデータ伝送(例えば、ソースおよび/または宛先アドレスを含むヘッダ情報、プロトコル識別子等)の特徴、および/または、相互接続ネットワーク120自体の特徴(例えば、ネットワークトポロジに基づくルート等)に基づき、必要に応じて転送することにより行う。
例示の通信マネージャ・モジュールは、関連するコンピューティングノードに送信する通信、または、関連するコンピューティングノードから送信される通信を、構成、許可、または管理するために、少なくともいくつかの記載の技術を実行することができる。例えば、通信マネージャ・モジュール109aは、関連する仮想マシンコンピューティングノード107aを管理し、通信マネージャ・モジュール109dは、関連する仮想マシンコンピューティングノード107dを管理し、他の通信マネージャ・モジュールのそれぞれは、同様に、1つまたは複数の他の関連するコンピューティングノードのグループのための通信を管理することができる。例示の通信マネージャ・モジュールは、コンピューティングノード間の通信を構成して特定の仮想ネットワークを相互接続ネットワーク120等の1つまたは複数の中間物理的ネットワーク上にオーバレイさせることができるが、別の通信マネージャモジュール(図示せず)がコンピュータシステム145aのための通信を管理する場合は、選択的にグローバルインターネット135およびプライベートネットワーク140にオーバレイさせることができる。従って、例えば、プライベートネットワーク140を運用する組織は、そのプライベートネットワークをデータセンタの1つまたは複数のコンピューティングノードに実質的に拡大することを望む場合、1つまたは複数の通信マネージャ・モジュールをプライベートネットワーク140の一部として(例えば、プライベートネットワーク140とグローバルインターネット135との間のインターフェースの一部として)実装することにより行うことができる。このようにして、プライベートネットワーク内のコンピュータシステム(例えば、コンピュータシステム145a)は、それらのデータセンタコンピューティングノードがプライベートネットワークの一部であるかのように、それらのデータセンタコンピューティングノードと通信することができる。加えて、例示の通信マネージャ・モジュールは、コンピューティングノード間の通信を許可してネットワーク分離およびセキュリティを向上させることができる。
従って、例示の一例として、コンピュータシステム105a上の仮想マシンコンピューティングノード107aの1つは、コンピュータシステム105d上の仮想マシンコンピューティングノード107dの1つと同じ仮想ローカルネットワークの一部とすることができ、IPv4が仮想ローカルネットワークのための仮想ネットワークアドレスを表すために使用される。その仮想マシン107aは、出力通信(図示せず)を宛先仮想マシンコンピューティングノード107dに向かわせることができ、例えばこれは、その宛先仮想マシンコンピューティングノードのための仮想ネットワークアドレスを特定することなどにより行う。通信マネージャ・モジュール109aは、出力通信を受信し、また、少なくともいくつかの実施形態においては、出力通信の送信を許可するかどうかを判定し、その判定は、送信側仮想マシンコンピューティングノード107aについて、および/または宛先仮想マシンコンピューティングノード107dについて、事前に取得される情報(例えば、コンピューティングノードが関連付けされる、仮想ネットワークおよび/またはエンティティについての情報)に基づいて行われ、かつ/または、システムマネージャ・モジュール110と動的に交信することにより(例えば、許可判定を取得したり、いくつかまたは全てのそのような情報を取得したりする、等)行われる。通信マネージャ・モジュール109aが、出力通信が許可される(または、そのような許可判定を実行しない)と判定する場合、モジュール109aは、通信のための宛先仮想ネットワークアドレスに対応する実際の物理的ネットワークの場所を判定し(例えば、システムマネージャ・モジュール110と交信することに基づき)、本例においては、相互接続ネットワークは、相互接続ネットワークを介して接続されるコンピューティングノードのための実際のネットワークアドレスを表すためにIPv6を使用する。通信マネージャ・モジュール109aは次に、出力通信を再ヘッダリングして、通信マネージャ・モジュール109dが複数のIPv6ネットワークアドレスの範囲を含むサブネットワークと関連する場合などに、実際のIPv6ネットワークアドレスを使用して、出力通信を通信マネージャ・モジュール109dに向かわせる。例えば、通信マネージャ・モジュール109aは、システムマネージャ・モジュール110と動的に交信することにより、実際のIPv6宛先ネットワークアドレスを判定して、宛先仮想マシン107dの仮想ネットワークアドレスに使用することができ、または、その情報を(例えば、その宛先仮想ネットワークアドレスについての情報を求める送信側仮想マシン107aからの要求、例えば、アドレス解決プロトコル、すなわちARPを使用する要求、に応答して)事前に判定、および記憶しておくことができる。本例においては、図2Aから2Cの例に対してより詳細に記載するように、使用される実際のIPv6宛先ネットワークアドレスには、仮想宛先ネットワークアドレスおよび追加の情報が含まれる。
通信マネージャ・モジュール109dは、相互接続ネットワーク120を介して通信を受信すると、実際のIPv6宛先ネットワークアドレスから仮想宛先ネットワークアドレスおよび追加の情報を抽出して、かつ、どの仮想マシンコンピューティングノード107dに通信を向けるかを判定する。通信マネージャ・モジュール109dは、次に、以下でより詳細に検討するように、実際のIPv6ソースネットワークアドレスから仮想ソースネットワークアドレスおよび追加の情報を抽出すること、および、仮想ソースネットワークアドレスを有するコンピューティングノードが、その通信を転送した通信マネージャ・モジュール(本例においては、通信マネージャ・モジュール109a)により実際に管理されることを確実にすることなどにより、宛先仮想マシンコンピューティングノード107dに対して通信を許可するかどうかを判定する。通信が許可される(または、通信マネージャ・モジュールはそのような許可判定を実行しない)と判定されると、通信マネージャ・モジュール109dは次に、入力通信を再ヘッダリングして、送信側仮想マシンコンピューティングノードの仮想ネットワークアドレスをソースネットワークアドレスとして使用すること、および、宛先仮想マシンコンピューティングノードの仮想ネットワークアドレスを宛先ネットワークアドレスとして使用することにより、仮想ネットワークのための適切なIPv4ネットワークアドレスを使用して、入力通信を宛先仮想マシンコンピューティングノード107dに向かわせる。入力通信の再ヘッダリング後、通信マネージャ・モジュール109dは次に、修正された通信を宛先仮想マシンコンピューティングノードに転送する。少なくともいくつかの実施形態において、入力通信を宛先仮想マシンに転送する前に、通信マネージャ・モジュール109dはまた、セキュリティに関する追加の工程を実行することができる。例えば、通信マネージャ・モジュール109dは、送信側仮想マシンコンピューティングノードが、宛先仮想マシンと通信することが許可されること(例えば、同じ仮想ネットワークに属すること、同じ顧客または他のエンティティに関連すること、異なるエンティティであってそのコンピューティングノードが互いに通信しあうことが許可されたエンティティに関連すること、等に基づき)、および/または、通信マネージャ・モジュール109dにより事前に取得された情報に基づき、またはシステムマネージャ・モジュール110と交信することに基づくなどして、入力通信が許可されたタイプのものであることを検証することができる。
図2Aおよび2Bは、1つまたは複数の物理的ネットワーク上のオーバレイ・ネットワークを介して発生するコンピューティングノード間の通信を管理することに関する追加の例示の詳細を有するさらなる例を示し、図1のコンピューティングノード及びネットワークまたは他の状況により使用することができる。特に、図2Aは、1つまたは複数の中間相互接続ネットワーク250上でお互いに通信することができる種々の例のコンピューティングノード205および255を例示する。本例の実施形態においては、コンピューティングノードは、プログラム実行サービスの複数の顧客等の複数の別個のエンティティの為に運用され、システムマネージャ・モジュール290は、特定のコンピューティングノードの、特定のエンティティおよび仮想ネットワークとの関係を管理する。図2Aの例のコンピューティングノードには、エンティティZの為に実行される3つのコンピューティングノードが含まれ、それらはコンピューティングノード205a、205cおよび255aである。加えて、コンピューティングノード205b等の他のコンピューティングノードが、他のエンティティの為に運用される。
本例においては、コンピューティングノード205は、関連する通信マネージャ・モジュールR210により管理され、コンピューティングノード255は、関連する通信マネージャ・モジュールS260により管理される。一例として、コンピューティングノード205はそれぞれ、単一の物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの1つとすることができ、通信マネージャ・モジュールRは、その物理的コンピュータシステムのハイパーバイザ仮想マシンモニタの一部とすることができる。例えば、図1を参照すると、コンピューティングノード205は、仮想マシン107aを表すことが可能であり、コンピューティングノード255は、仮想マシン107dを表すことが可能である。その場合、通信マネージャ・モジュールRが図1の通信マネージャ・モジュール109aに対応し、通信マネージャ・モジュールSが図1の通信マネージャ・モジュール109dに対応し、相互接続ネットワーク250が図1の相互接続ネットワーク120に対応し、システムマネージャ・モジュール290が図1のシステムマネージャ・モジュール110に対応することになる。あるいは、コンピューティングノード205または255は、代わりにそれぞれ、図1のコンピュータシステム155aから155nに対応するような、別個の物理的コンピュータシステムとすることができる。
図2Aの通信マネージャ・モジュールのそれぞれは、複数の物理的ネットワークアドレスのサブネットワークに関連するものであり、そのサブネットワークを、通信マネージャ・モジュールがその関連するコンピューティングノードの為に管理する。例えば、通信マネージャ・モジュールRは、「::0A:01/72」のIPv6ネットワークアドレス範囲に関連するものとして示され、これはXXXX:XXXX:XXXX:XXXA:0100:0000:0000:0000からXXXX:XXXX:XXXX:XXXA:01FF:FFFF:FFFF:FFFF(2の56乗の固有のIPv6アドレスを表す)までの128ビットアドレス(16進数)に対応し、ここで、それぞれ「X」は、特定の状況(例えば、図2Cを参照して以下でより詳細に検討するように、最初の64ビットが特定の組織およびネットワークトポロジに対応するなど)に適切な任意の16進数文字を表すことができる。相互接続ネットワーク250は、任意の通信をその範囲内の宛先ネットワークアドレスと共に通信マネージャ・モジュールRに転送し、従って、その範囲の最初の72ビットは特定されており、通信マネージャ・モジュールRは、残りの利用可能な56ビットを使用して、通信マネージャ・モジュールRが管理するコンピューティングノードを表し、かつ、宛先ネットワークアドレスがその範囲内である入力通信をどのように処理するかを判定することができる。
図2Aに示す例を説明するために、コンピューティングノード205a、205cおよび255aは、エンティティZのための単一の仮想ローカルネットワークの一部であり、それぞれIPv4ネットワークアドレス「10.0.0.2」、「10.0.0.5」および「10.0.0.3」が割り当てられる(ドット区切りの16進数形式で表記すると、「10.0.0.2」は、代わりに「A.0.0.2」となる)。コンピューティングノード205bは、エンティティYのための別個の仮想ネットワークの一部であるため、コンピューティングノード205aと同じ仮想ネットワークアドレスを混乱することなく共有することが可能である。本例においては、コンピューティングノードA205aが、コンピューティングノードG255aとの通信を要求するが(コンピューティングノードA205aは、コンピューティングノードG255aがコンピューティングノードAとの共通ローカル物理的ネットワークの一部であると認識している)、これは相互接続ネットワーク250および通信マネージャ・モジュールが、本例のコンピューティングノードAおよびGに透過的であるからである。特に、コンピューティングノードAおよびGが物理的に分割されているにもかかわらず、通信マネージャ・モジュール210および260は、エンティティZのための仮想ローカルネットワークをそれらのコンピューティングノード間の通信の物理的相互接続ネットワーク250上にオーバレイさせるよう運用するため、実際のローカルネットワークが欠如していることは、コンピューティングノードAおよびGには透過的である。本例においては、物理的相互接続ネットワーク250は、IPv4仮想ネットワークがオーバレイされるIPv6基盤ネットワークである。
例示の実施形態においては通信マネージャ・モジュールRの存在が認知されていない(すなわち、コンピューティングノードAは、ブロードキャストメッセージをローカルネットワーク上の全ての他のコンピューティングノードに伝送していると認識している)にもかかわらず、通信をコンピューティングノードGに送信するために、コンピューティングノードAは、種々のメッセージ220を通信マネージャ・モジュールR210と交換する。特に、本例においては、コンピューティングノードAは最初に、コンピューティングノードGのためのローカルネットワークアドレス(すなわち、「10.0.0.3」)を含み、かつ、コンピューティングノードGのための対応するハードウェア・アドレス(例えば、48ビットMACすなわちMedia Access Control(媒体アクセス制御)アドレス)を要求するARPメッセージ要求220−aを送信する。通信マネージャ・モジュールRは、ARP要求220−aを傍受し、コンピューティングノードAにコンピューティングノードGのためのダミーの仮想ハードウェア・アドレスを含むスプーフィングされた(spoofed)ARP応答メッセージ220−bで応答する。
応答メッセージのためのダミーの仮想ハードウェア・アドレスを取得するために、通信マネージャ・モジュールRは最初に、ダミーの仮想ハードウェア・アドレスを対応するIPv6の実際の物理的ネットワークアドレスにマッピングする、ローカルストア212の情報をチェックし、ここで、各ダミーの仮想ハードウェア・アドレスは、特定のエンティティの仮想ネットワークのためのIPv4の仮想ネットワークアドレスに対応する。ローカルストア212が、コンピューティングノードGのエントリを含まない場合(例えば、どのコンピューティングノード205もコンピューティングノードGと事前に通信しなかった場合、ローカルストア212内のコンピューティングノードGの前回のエントリが失効している場合、等)、通信マネージャ・モジュールRは、システムマネージャ・モジュール290と交信225して、コンピューティングノードAの為に、コンピューティングノードGのための対応する実際のIPv6物理的ネットワークアドレスを取得する。特に、本例においては、システムマネージャ・モジュール290は、各コンピューティングノードが実際にどこに設置されているか、および、コンピューティングノードがどのエンティティおよび/または仮想ネットワークに属するかを識別するプロビジョニング情報292を保持し、これは、エンティティおよび仮想ネットワークのコンピューティングノード上でプログラムの実行を開始することにより、または、そのようなプロビジョニング情報を取得することにより行う。図2Bに対してより詳細に記載するように、システムマネージャ・モジュールは、コンピューティングノードAがコンピューティングノードGとの通信を許可されるかどうかの判定を含んで、コンピューティングノードAに代わり通信マネージャ・モジュールRからの、コンピューティングノードGの実際のIPv6物理的ネットワークアドレスを求める要求が有効であるかどうかを判定し、有効である場合に、その実際のIPv6物理的ネットワークアドレスを提供する。
通信マネージャ・モジュールRは、コンピューティングノードGのための実際のIPv6物理的ネットワークアドレスをシステムマネージャ・モジュールから受信し、この受信情報を、後で使用するためのマッピング情報212の一部としてのコンピューティングノードGの新しいエントリの一部として記憶する(選択的に、有効期限および/または他の情報と共に)。加えて、通信マネージャ・モジュールRは、コンピューティングノードGに使用されるダミーの仮想ハードウェア・アドレスを判定し(例えば、通信マネージャ・モジュールRにより管理されるコンピューティングノードに対してローカルに一意的である識別子を生成することにより)、そのダミーの仮想ハードウェア・アドレスを、受信された実際のIPv6物理的ネットワークアドレスと併せて新しいマッピング情報エントリの一部として記憶し、ダミーの仮想ハードウェア・アドレスをコンピューティングノードAに応答メッセージ220−bの一部として提供する。そのようなマッピング情報212を保持することにより、コンピューティングノードAからコンピューティングノードGへの後の通信を、システムマネージャ・モジュール290とさらに交信することなく、通信マネージャ・モジュールRにより事前に提供されたダミーの仮想ハードウェア・アドレスを使用することに基づき、通信マネージャ・モジュールRにより許可することができる。
他の実施形態において、通信マネージャ・モジュールRは、システムマネージャ・モジュール290と交信して、コンピューティングノードGのための物理的ネットワークアドレスを取得する、または、そのような物理的ネットワークアドレスをARP要求の受信時ではなく時々、例えば、エンティティZの仮想ネットワークのための仮想ネットワークアドレスを使用してコンピューティングノードGに向けられる任意の受信された通信に応答して、判定することができる。さらに、他の実施形態において、使用される仮想ハードウェア・アドレスは、例えば、仮想ハードウェア・アドレスがシステムマネージャ・モジュール290により特定される場合、仮想ハードウェア・アドレスがランダムではなく、代わりに1つまたは複数のタイプの対応するコンピューティングノードに特有の情報を記憶する場合などは、本例とは異なるものとすることができる。加えて、本例においては、コンピューティングノードAが、システムマネージャ・モジュール290および/または通信マネージャ・モジュールRによるかどうかにかかわらず、コンピューティングノードGへ通信を送信することが許可されなかったと判定された場合、通信マネージャ・モジュールRは、ダミーの仮想ハードウェア・アドレスを有する応答メッセージ220−bを送信しない(例えば、何の応答も送信しない、エラーメッセージの応答を送信する、等)。
本例においては、応答メッセージ225−2内の、コンピューティングノードGに対応する戻されたIPv6の実際の物理的ネットワークアドレスは、「::0B:02:<Z−識別子>:10.0.0.3」であり、ここで、「10.0.0.3」は128ビットIPv6アドレスの最後の32ビットに記憶され、かつ、「<Z−識別子>」はエンティティZの仮想ローカルネットワークに対応するコンピューティングノードGの24ビットのエンティティネットワーク識別子である(例えば、システムマネージャ・モジュールによりネットワークに事前に割り当てられて、乱数またはエンティティに対応する何らかの他の数字を反映する)。IPv6ネットワークアドレスの最初の72ビットは、「::0B:02」という記号表示を記憶し、これはサブネットワーク、または、通信マネージャ・モジュールSが対応するネットワークアドレス範囲「::0B:02/72」を有する相互接続ネットワークの他の部分に対応する。従って、相互接続ネットワーク250上をIPv6宛先ネットワークアドレス「::0B:02:<Z−識別子>:10.0.0.3」に送信される通信は、通信マネージャ・モジュールSにルーティングされる。他の実施形態において、エンティティネットワーク識別子は、他の長さ(例えば、通信マネージャ・モジュールSが、56ビットではなく64ビットのネットワークアドレス範囲を有するサブネットワークを持つ場合は、32ビット)とすることができ、および/または、他の形式(例えば、ランダムである、種々のタイプの情報を記憶する、等とすることができる)を持つものとすることができ、また、サブネットワークのネットワークアドレス範囲に使用される残りの56ビットは、他のタイプの情報(例えば、特定のエンティティの識別子、仮想ネットワークのタグまたはラベル、等)を記憶することができる。オーバレイ・ネットワークと共に使用するための一例の構成されたIPv6の実際の物理的ネットワークアドレスに関する追加的な詳細については、図2Cに関して記載される。
応答メッセージ220−bを通信マネージャ・モジュールRから受信した後、コンピューティングノードAは、図2Aにおいて通信220−cとして示されるコンピューティングノードGへの通信の送信を作成および開始する。特に、通信220−cのヘッダには、宛先コンピューティングノードGのための「10.0.0.3」である宛先ネットワークアドレス、宛先コンピューティングノードGのためのコンピューティングノードAに提供されるメッセージ220−b内のダミーの仮想ハードウェア・アドレスである宛先ハードウェア・アドレス、送信側コンピューティングノードAのための「10.0.0.2」であるソースネットワークアドレス、送信側コンピューティングノードAのためのコンピューティングノードAにより事前に識別された実際またはダミーのハードウェア・アドレスであるソースハードウェアアドレス、が含まれる。
通信マネージャ・モジュールRは、通信220−cを傍受し、通信を必要に応じて修正し,修正した通信を相互接続ネットワーク250上をコンピューティングノードGへ転送する。特に、通信マネージャ・モジュールRは、コンピューティングノードGのための仮想宛先ネットワークアドレスおよび仮想宛先ハードウェア・アドレスを、ヘッダから抽出し、そして、その仮想宛先ハードウェア・アドレスに対応するIPv6の実際の物理的ネットワークアドレスをマッピング情報212から検索する。上述したように、本例におけるIPv6の実際の物理的ネットワークアドレスは、「::OB:02:<Z−識別子>:10.0.0.3」であり、通信マネージャ・モジュールRは、その実際の物理的ネットワークアドレスを宛先アドレスとして含む新しいIPv6ヘッダを作成する。同様に、通信マネージャ・モジュールRは、コンピューティングノードAのための仮想ソースネットワークアドレスおよび仮想ソースハードウェアアドレスを、受信された通信のヘッダから抽出し、その仮想ソースハードウェアアドレスに対応するIPv6の実際の物理的ネットワークアドレスを取得し(例えば、事前に取得されていない場合は、マッピング情報212内の記憶されたエントリから、システムマネージャ・モジュール290と交信することによりその情報を取得する、等)、その実際の物理的ネットワークアドレスを新しいIPv6ヘッダのためのソースネットワークアドレスとして含む。本例においては、コンピューティングノードAのためのIPv6の実際の物理的ネットワークアドレスは、「::0A:01:<Z−識別子>:10.0.0.2」であり、これは、コンピューティングノードGの為に通信マネージャ・モジュールSにより応答に使用される場合、コンピューティングノードAに転送するために通信マネージャ・モジュールRにルーティングされる。通信マネージャ・モジュールRは次に、通信220−cを修正することにより新しい通信230−3を作成して前回のIPv4ヘッダを新しいIPv6ヘッダと(例えば、SIITに従って)置きかえ、これには、新しいIPv6ヘッダに新しい通信に適切な他の情報(例えば、ペイロード長、トラフィッククラスのパケット優先度、等)を追加することが含まれる。従って、新しい通信230−3には、前回の通信220−cを新しい通信230−3内にカプセル化することなく、前回の通信220−cと同じコンテンツまたはペイロードが含まれる。さらに、ペイロード内の特定の情報へのアクセスは、そのような再ヘッダリングに必要ではなく、例えば、通信マネージャ・モジュールRが、ペイロードが暗号化された通信をそのペイロードを解読する必要無しに、扱うことを可能にする。
少なくともいくつかの実施形態において、通信230−3を通信マネージャ・モジュールSに転送する前に、通信マネージャ・モジュールRは、1つまたは複数の動作を実行して、通信220−cを通信230−3としてコンピューティングノードGへ転送することを許可すると判定することができ、これは例えば、通信220−cに使用されるソースおよび/または宛先の仮想ハードウェア・アドレスの有効なエントリを含むマッピング情報212に基づき行う。他の実施形態において、そのような許可判定は、通信マネージャ・モジュールRにより各出力通信に対して実行されなくとも良く、または代わりに、他の方法で実行されても良い(例えば、送信側ノードおよび宛先ノードが同じ仮想ネットワークの一部である、または、同じエンティティに関連する、または互いに通信しあうことが許可される、ことの判定に基づいたり、通信のための許可判定を取得するためのシステムマネージャ・モジュール290との交信に基づく、等)。
通信マネージャ・モジュールRが、修正された通信230−3を相互接続ネットワーク250に転送した後、相互接続ネットワークは、通信の物理的IPv6宛先ネットワークアドレスを使用して、通信を通信マネージャ・モジュールSにルーティングする。その際、相互接続ネットワーク250のデバイスは、埋め込まれたエンティティネットワーク識別子または埋め込まれた仮想ネットワークアドレスを含む宛先ネットワークアドレスの一部分を使用せず、従って、そのような通信を転送するための任意の特定の構成を必要とせず、仮想ネットワークが物理的相互接続ネットワーク上にオーバレイされていることを認識する必要もない。
通信マネージャ・モジュールSは、相互接続ネットワーク250を介して通信230−3を受信すると、逆に、通信マネージャ・モジュールRの動作と同様の動作を実行する。特に、少なくともいくつかの実施形態において、通信マネージャ・モジュールSは、システムマネージャ・モジュールとの1つまたは複数の交信240を介するなどして、通信230−3が正規のものであるか、コンピューティングノードGへの転送が許可されるかを検証する。通信が許可されると判定される場合(または、許可判定が実行されると)、通信マネージャ・モジュールSは次に、必要に応じて通信230−3を修正し、修正された通信をコンピューティングノードGに転送する。通信230−3の検証に関する追加的は詳細については、図2Bに対して検討する。
特に、通信230−3を修正するために、通信マネージャ・モジュールSは、コンピューティングノードGにより使用される仮想ハードウェア・アドレスを含む、コンピューティングノードGに対応するマッピング情報262から情報を検索する(または、新しいコンピューティングノード等に事前に使用可能でない場合に、そのような仮想ハードウェア・アドレスを生成する)。通信マネージャ・モジュールSは次に、通信230−3を修正することにより新しい通信245−eを作成して、前回のIPv6ヘッダを新しいIPv4ヘッダと(例えば、SIITに従って)置き換える。新しいIPv4ヘッダには、新しいIPv4ヘッダのための宛先ネットワークアドレスおよび宛先ハードウェア・アドレスとしてのコンピューティングノードGのための仮想ネットワークアドレスおよび仮想ハードウェア・アドレス、新しいIPv4ヘッダのためのソースネットワークアドレスおよびソースハードウェアアドレスとしての、コンピューティングノードAのための仮想ネットワークアドレスおよびダミーの仮想ハードウェア・アドレスが含まれ、かつ、新しい通信に必要に応じて他の情報(例えば、全長、ヘッダチェックサム、等)が含まれる。通信マネージャ・モジュールSにより使用される、コンピューティングノードAのためのダミーの仮想ハードウェア・アドレスは、通信マネージャ・モジュールRにより使用される、コンピューティングノードAのためのハードウェア・アドレスと同じでも良いが、他の実施形態において、各通信マネージャ・モジュールは、他の通信マネージャ・モジュールにより使用される情報と関係のない別個のハードウェア・アドレス情報を保持することができる(例えば、通信マネージャ・モジュールSが、コンピューティングノード255の1つからのコンピューティングノードAのハードウェア・アドレスを求める前回のARP要求に応答して、コンピューティングノードAのための自分自身のダミーの仮想ハードウェア・アドレスを生成した場合)。従って、新しい通信245−eには、前回の通信220−cおよび230−3と同じコンテンツまたはペイロードが含まれる。通信マネージャ・モジュールSは次に、新しい通信245−eをコンピューティングノードGに転送する。
通信245−eを受信した後、コンピューティングノードGは、通信245−eからのコンピューティングノードAのためのソース仮想ネットワークアドレスおよびソース仮想ハードウェア・アドレスを使用して、応答の通信245−fを、コンピューティングノードAに送信することを判定する。通信マネージャ・モジュールSは、通信245−eを受信し、通信220−cおよび通信マネージャ・モジュールRについて先に記載した方法と同様の方法で処理する。特に、通信マネージャ・モジュールSは、コンピューティングノードGがコンピューティングノードAに通信を送信することが許可されることを選択的に検証し、次に、マッピング情報262を使用して新しいIPv6ヘッダを生成することにより、通信245−fを修正して通信230−6を作成する。通信230−6を相互接続ネットワーク250に転送した後、通信は通信マネージャ・モジュールRに送信され、通信マネージャ・モジュールRは、通信230−3および通信マネージャ・モジュールSについて先に記載した方法と同様の方法で、入力通信を処理する。特に、通信マネージャ・モジュールRは、コンピューティングノードGがコンピューティングノードAに通信を送信することが許可されること、および、通信230−6がコンピューティングノードGにより実際に送信されたこと、を選択的に検証し、次に、マッピング情報212を使用して新しいIPv4ヘッダを生成することにより、通信230−6を修正して通信220−dを作成し、そして通信マネージャ・モジュールRは、通信220−dをコンピューティングノードAに転送する。
このようにして、コンピューティングノードAおよびGは、それらのコンピューティングノードが、実際の介在するIPv6ベースの基板相互接続ネットワークを扱うための任意の特定の構成でない場合でも、IPv4ベースの仮想ローカルネットワークを使用して互いに通信しあうことができ、また、相互接続ネットワーク250は、相互接続ネットワークの任意のネットワークデバイスが任意の特定の構成でない場合でも、通信マネージャ・モジュールが、通信をカプセル化せずに、仮想ローカルネットワークを実際の物理的相互接続ネットワーク上にオーバレイさせることに基づいて、および、基板物理的ネットワークアドレス内の埋め込まれた仮想ネットワークアドレスを使用すること、に基づいて、IPv6通信を転送することができる。
加えて、図2Aに対しては例示されないが、少なくともいくつかの実施形態において、通信マネージャ・モジュールは、他のタイプの要求および通信を、関連するコンピューティングノードの為に受信および扱うことができる。例えば、通信マネージャ・モジュールは、通信マネージャ・モジュールが管理するコンピューティングノードのブロードキャストおよびマルチキャストの能力をサポートする種々の動作を行うことができる。一例として、いくつかの実施形態において、特定のマルチキャストグループの仮想ネットワークアドレスのサフィックス(suffix)は、レイヤ2の未処理の(raw)カプセル化された通信をシグナリングする際に使用するために、各エンティティネットワーク識別子のプリフィックス(prefix)から予約することができる。同様に、リンクローカルなブロードキャストおよびマルチキャストの通信では、特定のマルチキャストグループの/64プリフィックスを予約することができ(例えば、「FF36:0000::」)、一方、異なる宛先アドレスプリフィックス(例えば、「FF15:0000::」)を他のマルチキャスト通信に使用することができる。従って、例えば、128ビットIPv6アドレスの最初の64ビットに、対応する予約された64ビットのプリフィックスを使用して、マルチキャストおよびブロードキャストのIPフレームをカプセル化することができ、残りの64ビットには、先に記載した方法と同様の方法で、宛先コンピューティングノードのための仮想IPv4ネットワークアドレスおよび宛先コンピューティングノードのためのエンティティネットワーク識別子が含まれる。あるいは、他の実施形態において、1つまたは複数のタイプのブロードキャストおよび/またはマルチキャストの通信はそれぞれ、異なるビット数を使用すること、および/または、ネットワークアドレスプリフィックスとしてではなく他の方法で記憶されること、を含めて、対応する予約されたラベル、または、異なる値または形式を有する他の識別子を持つことができる。コンピューティングノードが、ブロードキャスト/マルチキャスト通信を送信すると、そのマルチキャスト/ブロードキャストグループにサブスクライブ(subscribe)した関連するコンピューティングノードを有する任意の通信マネージャ・モジュールが識別され(例えば、それらの関連するコンピューティングノードにより送信される、前回の結合した通信に応答するなどして、それらの通信マネージャ・モジュールがグループにサブスクライブしたことに基づき)、送信側コンピューティングノードの通信マネージャ・モジュールは、グループの識別された通信マネージャ・モジュールのそれぞれに、その管理される適切なコンピューティングノードに転送するために、通信を送信する。加えて、いくつかの実施形態および状況において、少なくとのいくつかのブロードキャストまたはマルチキャストの通信、例えば、224.0/16もしくは別の指定されたプリフィックスのIPv4プリフィックス、または他のラベルもしくは識別子、を有する通信は、通信マネージャ・モジュールにより転送されなくても良い。
加えて、通信マネージャ・モジュールが、この通信マネージャ・モジュールに関連する複数のコンピューティングノード間の通信を容易にすることが理解されるであろう。例えば、図2Aについて、コンピューティングノード205aは、追加の通信(図示せず)をコンピューティングノード205cに送信することを望むかもしれない。その場合、通信マネージャ・モジュールRは、通信マネージャ・モジュールRによる出力通信220−cの扱い、および、通信マネージャ・モジュールSによる入力通信230−3の扱い、について先に記載した方法と同様の動作で、動作を実行するが、通信が相互接続ネットワーク上に送られないため、追加の通信を再ヘッダリングせずにIPv6ヘッダを使用する。
図2Aに対しては例示しないが、少なくともいくつかの実施形態において、他のタイプの要求および通信を、種々の方法で扱うこともできる。例えば、少なくともいくつかの実施形態において、エンティティは、通信マネージャモジュール(複数可)により管理され、かつ、そのエンティティの仮想ネットワークの一部である1つまたは複数のコンピューティングノードを有することができ、また、1つまたは複数の他の非管理のコンピュータシステム(例えば、相互接続ネットワーク250に直接接続される、および/または、元々IPv6ネットワークアドレシングを使用する、コンピュータシステム)であって、その通信を管理する関連する通信マネージャ・モジュールを持たないコンピュータシステムをさらに有することができる。それらの非管理コンピュータシステムがその仮想ネットワークの一部であること、さもなければ、仮想ネットワークの管理されるコンピューティングノードと通信することを、エンティティが望む場合、管理されるコンピューティングノードと非管理コンピュータシステムとの間の通信は、少なくともいくつかのそのような実施形態においては、1つまたは複数のコンピューティングノードを管理する通信マネージャモジュール(複数可)により扱うことができる。例えば、そのような状況において、そのような非管理コンピュータシステムに、そのような管理されるコンピューティングノードのための実際のIPv6宛先ネットワークアドレス(例えば、本例においては、管理されるコンピューティングノードAのための「::0A:01:<Z−識別子>:10.0.0.2」)が与えられる場合、非管理コンピュータシステムは、その宛先ネットワークアドレスを使用して、相互接続ネットワーク250を介して通信をコンピューティングノードAに送信することができ、通信マネージャ・モジュールRは、通信をその非管理コンピュータシステムから(または、任意の非管理コンピュータシステムから)受け取るよう構成されている場合、それらの通信をコンピューティングノードAに転送する(例えば、先に記載した方法と同様の方法で、通信を再ヘッダリングした後に)。さらに、通信マネージャ・モジュールRは、そのような非管理コンピュータシステムに対応するダミーの仮想ネットワークアドレスを生成し、それを非管理コンピュータシステムのための実際のIPv6ネットワークアドレスにマッピングし、ダミーの仮想ネットワークアドレスを(例えば、非管理コンピュータシステムからコンピューティングノードAに転送される通信のためのソースアドレスとして)コンピューティングノードAに与えることが可能であり、従って、コンピューティングノードAが非管理コンピュータシステムに通信を送信することを可能にする。
同様に、少なくともいくつかの実施形態および状況において、少なくともいくつかの管理されるコンピューティングノードおよび/またはそれらの仮想ネットワークは、仮想ネットワークの一部ではない他のデバイスとの通信が可能であるように構成され、他のデバイスには例えば、通信を管理する関連する通信マネージャ・モジュールを持たない他の非管理コンピュータシステムまたは他のタイプのネットワークの電気器具がある。そのような状況において、管理されるコンピューティングノードおよび/または仮想ネットワークが、そのような他の非管理デバイスとの通信が可能であるように構成される場合、そのような非管理のデバイスには、同様に、そのようなコンピューティングノードのための実際のIPv6宛先ネットワークアドレス(例えば、本例においては、コンピューティングノードAのための「::0A:01:<Z−識別子>:10,0.0.2」)が与えられ、非管理のデバイスが、その宛先ネットワークアドレスを使用して、相互接続ネットワーク250を介して通信をコンピューティングノードAに送信することが可能にされ、そして、通信マネージャ・モジュールRが、それらの通信をコンピューティングノードAに転送する(例えば、先に記載した方法と同様の方法で、通信を再ヘッダリングした後に)。さらに、通信マネージャ・モジュールRは、同様に、コンピューティングノードAからそのような非管理のデバイスへの出力通信を管理して、コンピューティングノードAがそのような通信を送信することを可能にすることができる。
加えて、上述したように、通信マネージャ・モジュールは、関連するコンピューティングノードの通信を種々の方法で管理し、例えば、いくつかの実施形態において、仮想ネットワークアドレスを仮想ネットワークアドレスのコンピューティングノードに割り当てることにより、および/または、通信マネージャ・モジュールに対応する基板物理的ネットワークアドレスの範囲から、管理されるコンピューティングノードに基板物理的ネットワークアドレスを割り当てることにより、管理する。他の実施形態において、いくつかのそのような動作は、仮想ネットワークの1つまたは複数のコンピューティングノードにより代わりに実行され、DHCP(Dynamic Host Configuration Protocol:動的ホスト構成プロトコル)のサーバまたは仮想ネットワークの他のデバイスが、仮想ネットワークアドレスおよび/または基板物理的ネットワークアドレスを、仮想ネットワークの特定のコンピューティングノードに指定すること可能にさせる、などすることができる。そのような実施形態において、通信マネージャ・モジュールは、そのような構成情報を仮想ネットワークデバイス(複数可)から取得し、それに従ってそのマッピング情報を更新する(また、いくつかの実施形態において、さらに、仮想ネットワークに関連するコンピューティングノードについての情報を保持する、1つまたは複数のシステムマネージャ・モジュールを更新することができる)。
加えて、いくつかの実施形態および状況において、管理されるコンピューティングノード自身を仮想ルータまたは実在しないルータとして扱うことができ、複数の仮想ネットワークアドレスがその管理されるコンピューティングノードに関連付けられ、その管理されるコンピューティングノードがそれらの複数の仮想ネットワークアドレスに対応する他のコンピューティングノードに通信を転送する。そのような実施形態において、管理されるコンピューティングノードのルータの通信を管理する、通信マネージャ・モジュールは、そのコンピューティングノードとの通信を先に記載した方法と同様の方法で扱う。しかし、通信マネージャ・モジュールは、管理されるコンピューティングノードのルータに対応する複数の仮想ネットワークアドレスで構成されて、それらの複数の仮想ネットワークアドレスのいずれかへの入力通信が、管理されるコンピューティングノードのルータに転送され、かつ、管理されるコンピューティングノードのルータからの出力通信には、管理されるコンピューティングノードのルータを介して通信を送信した特定のコンピューティングノードに対応する基板ソース物理的ネットワークアドレスが与えられる。このようにして、特定の顧客または他のエンティティの物理的ルータまたは他のネットワークデバイスを、そのエンティティに実装される仮想ネットワークに対して仮想的に表すことができる。
図2Bは、図2Aに対して検討したコンピューティングノードおよび通信のいくつかを例示するが、通信マネージャ・モジュール210および260、および/または、コンピューティングノード間の通信を許可するシステムマネージャ・モジュール290、により行われるいくつかの動作について、追加的な詳細が与えられる。例えば、コンピューティングノードAが、メッセージ220−aを送信してコンピューティングノードGのためのハードウェア・アドレスを要求した後、通信マネージャ・モジュールRは、コンピューティングノードAがコンピューティングノードGとの通信を許可されるかどうかに基づくなどして、その情報を提供すべきかどうかを判定するために、また、相互接続ネットワーク250に基づき、コンピューティングノードGのための対応する基板物理的ネットワークアドレスを判定するために、システムマネージャ・モジュール290との1つまたは複数の交信225を実行することができる。通信マネージャ・モジュールRがその情報を事前に取得しており、その情報がまだ有効である(例えば、失効していない)場合、交信225を、実行しなくても良い。本例においては、コンピューティングノードGに対応する所望の物理的ネットワークアドレスを取得するために、コンピューティングノードAおよびGのための仮想ネットワークアドレスを含み、かつ、それぞれのコンピューティングノードのためのエンティティネットワーク識別子、本例においてはエンティティZのためのエンティティネットワーク識別子(例えば、32ビットまたは24ビットの一意的な識別子)を含む、システムマネージャ・モジュール290に、通信マネージャ・モジュールRがメッセージ225−1を送信する。少なくともいくつかの実施形態において、通信マネージャ・モジュールRは、エニーキャスト(anycast)のアドレシング/ルーティングスキームを使用して、メッセージ225−1をシステムマネージャ・モジュール290に送信し、複数のシステムマネージャ・モジュールが実装されるよう(例えば、通信マネージャ・モジュールおよび関連するコンピューティングノードを含む各データセンタのためのシステムマネージャ・モジュール)、かつ、システムマネージャ・モジュールのうちの適切なもの(例えば、最も近いもの、最も活用されていないもの、等)が選択されて、メッセージを受信し処理するようにする。システムマネージャ・モジュール290が、コンピューティングノードAがコンピューティングノードGと通信することが許可されると判定した後(例えば、同じエンティティネットワーク識別子を有することに基づく、コンピューティングノードGのためのエンティティネットワーク識別子のコンピューティングノードと通信することが許可されるコンピューティングノードAが、エンティティネットワーク識別子を有することに基づく、コンピューティングノードAがそのような通信を行うことが許可されることを示すコンピューティングノードAにより提供されるまたはコンピューティングノードAに関連する他の情報に基づく、コンピューティングノードAがそのような通信を行うことが許可されることを示すコンピューティングノードGにより提供されるまたはコンピューティングノードGに関連する情報に基づく、などして)、システムマネージャ・モジュール290は、コンピューティングノードGに対応する所望の実際の物理的ネットワークアドレスを含む応答メッセージ225−2を戻す。加えて、少なくともいくつかの実施形態において、所望の実際の物理的ネットワークアドレスを送信する前に、システムマネージャ・モジュール290は、さらに、通信マネージャ・モジュールRがコンピューティングノードAの為にメッセージ225−1を送信することが許可されることを検証することができ、コンピューティングノードAが、通信マネージャ・モジュールRが関連付けされるコンピューティングノードの1つであることに基づくなどして、検証される。
他の実施形態において、通信マネージャ・モジュールRは、システムマネージャ・モジュール290により実行されるものとして記載されるいくつかまたは全ての動作を実行して、種々のコンピューティングノードのプロビジョニング情報を保持する、および/または、コンピューティングノードAが通信をコンピューティングノードGに送信することが許可されるかどうかを判定することができ、または、代わりに、そのような許可判定をいくつかまたは全ての状況において実行しなくても良い。さらに、他の実施形態において、他のタイプの許可判定を、通信のタイプ、通信の大きさ、通信の時間等に基づくなどして、2つまたはそれ以上のコンピューティングノード間の通信に対して実行することができる。
図2Aに対して上述したように、通信マネージャ・モジュールSが、相互接続ネットワーク250を介して、コンピューティングノードGに対して意図される通信230−3を受け取った後、通信マネージャ・モジュールSは、その通信を許可するかどうかを判定するために、システムマネージャ・モジュール290との1つまたは複数の交信240を実行することができる。特に、本例においては、通信230−3が有効であり、かつ、コンピューティングノードGに転送されることが許可されることを検証するために、通信マネージャ・モジュールSは最初に、実際のIPv6宛先ネットワークアドレスおよび実際のIPv6ソースネットワークアドレスを通信230−3のヘッダから抽出し、次に、埋め込まれたエンティティネットワーク識別子および仮想ネットワークアドレスを抽出されたIPv6ネットワークアドレスのそれぞれから検索する。通信マネージャ・モジュールSは次に、コンピューティングノードAおよびGのための抽出された仮想ネットワークアドレス、および、各コンピューティングノードのためのエンティティネットワーク識別子が含まれるメッセージ240−4を含むメッセージ240を、システムマネージャ・モジュール290と交換して、コンピューティングノードGの為に、送信側コンピューティングノードAのための対応する実際のIPv6物理的ネットワークアドレスを取得する。少なくともいくつかの実施形態において、通信マネージャ・モジュールSは、エニーキャストのアドレシング/ルーティングスキームを使用して、メッセージ240−4をシステムマネージャ・モジュール290に送信することができる。
システムマネージャ・モジュール290は、メッセージ240−4を受信し、コンピューティングノードAに対応する実際の物理的ネットワークアドレス、本例においては「::0A:01:<Z−識別子>:10.0.0.2」、を含む応答メッセージ240−5を戻す。メッセージ225−1および225−2に対して先に検討したように、いくつかの実施形態において、システムマネージャ・モジュール290および/または通信マネージャ・モジュールSは、1つまたは複数の他のタイプの許可判定の動作をさらに実行して、コンピューティングノードGがコンピューティングノードAと通信することが許可されること、通信マネージャ・モジュールSがコンピューティングノードGの為にメッセージ240−4を送信することが許可されること、などを判定することができる。通信マネージャ・モジュールSは次に、メッセージ240−5内の戻された物理的ネットワークアドレスが、通信230−3のヘッダから抽出されたソースIPv6ネットワークアドレスと一致することを検証し、他の場所にある他のコンピューティングノードから実際に送信されるメッセージを、コンピューティングノードAからのものとしてスプーフィングする企みを阻止する。通信マネージャ・モジュールSは、メッセージ240−5内のこの受信情報を、後で使用するためにマッピング情報262に、コンピューティングノードAのエントリの一部として、コンピューティングノードAの仮想ネットワークアドレスおよびコンピューティングノードAのためのダミーの仮想ハードウェア・アドレスと共に、選択的に記憶する。
図2Aから2Bに対して検討したもの以外の種々の他のタイプの動作を、他の実施形態において実行することができ、IPv4およびIPv6以外のネットワークアドレス指定プロトコルのタイプの動作が含まれる。
図2Cは、記載の技術と共に使用するための一例のIPv6ネットワークアドレス構成272を例示し、例のネットワークアドレスは、仮想ネットワークアドレスおよび他の情報を、基盤ネットワークアドレスに埋め込んで、基盤ネットワーク上にオーバレイ・ネットワークを可能にするよう構成される。先に検討したように、本例のIPv6ネットワークアドレス構成は、128ビットネットワークアドレス空間を使用して、種々の情報を記憶し、最初の64ビットがアドレスのIPv6ネットワーク部分を記憶し、次の64ビットがアドレスのインターフェース識別子(または「ホスト」)部分を記憶する。
本例においては、IPv6アドレスの最初の64ビットネットワーク部分には、ビット0からビット31までの32ビット識別子272aが含まれ、これはInternet Assigned Numbers Authorityの為にインターネットレジストリ運用者により、そのような組織に割り当てられる企業または他の組織の識別子(本例においては、地域インターネットレジストリRIPE NNC、すなわち、ReseauxIP Europeens Network Coordination Centre(ヨーロッパIPリソースネットワーク調整センター)からの割り当てに基づく)に対応する。例えば、いくつかの実施形態において、プログラム実行サービスを運用する組織、または、記載の技術を使用する他の組織は、関連する識別子272aを有することができる。アドレスの最初の64ビットネットワーク部分にはまた、本例においては、32ビット情報グループ272bが含まれ、これは複数のコンピューティングノードのグループ(例えば、サブネットワークまたは他のネットワーク部分)のトポロジに対応し、トポロジは、情報272a内に識別子が示されるそのグループの為に提供される。先に検討したように、少なくともいくつかの実施形態において、アドレスの最初の64ビットネットワーク部分は、サブネットワークまたは基盤ネットワークの他の部分等の、複数の関係するコンピューティングノードの場所に対応する基盤ネットワークのための部分的なネットワークアドレスを表す。特に、最初の64ビットネットワークアドレス部分は、少なくともいくつかの実施形態において、複数の関連するコンピューティングノードが通信マネージャ・モジュールにより管理されることを表す特定の通信マネージャ・モジュールに対応し、これは、通信マネージャ・モジュールが、種々の管理されるコンピューティングノードを表すために、64−bitインターフェース識別子アドレス部分のある部分または全てに対応するネットワークアドレスの範囲を管理することなどに基づく。他の実施形態において、部分的なネットワークアドレスを、異なるビット数(例えば、72)を用いて、および/または、プリフィックス以外のアドレスの一部を使用して、表すことができる。
32ビットトポロジ情報グループ272bは、異なる実施形態において種々の情報を種々の方法で表すことができ、トポロジ情報グループ274および276が、トポロジ情報の2つの代替例の構成を示す。特に、例274および276において、最初の2ビット(IPv6アドレス全体の内のビット32およびビット33)が、トポロジ情報の特定のバージョンを示し、残りの30ビットが意味するものが時間と共に変化する。例274については、示される種々のビットはそれぞれ、異なる地理的ロケール(場所)、そのロケール内での地理的地域、地理的地域におけるコンピュータラック、コンピュータラック内の物理的コンピュータシステムノードを示す。本例においては、ロケール情報の6ビットが、64個の一意的な値を表し、地域情報の8ビットが、各ロケール値に対する256個の一意的な値を表し、ラック情報の8ビットが、各地域値に対する256個の一意的な値を表し、物理的コンピュータシステムノード情報の8ビットが、各ラック値に対する256の一意的な値を表すことができる。逆に、例276については、ロケール情報およびラック情報のみが示されるが、それぞれ、追加ビットを持ち、14ビットを使用して16,384個の一意的なロケール値を有するもの、16ビットを使用して各ロケール値に対する65,536個の一意的なラック値を有するもの、等のタイプの情報を表す。トポロジ情報が、他の方法で他の実施形態において表されることは、理解されるであろう。
本例においては、IPv6アドレスの64ビットインターフェース識別子部分は、数タイプの情報を記憶するよう構成され、これには、特定のコンピューティングノードスロット(例えば、IPv6アドレスの最初の64ビットネットワーク部分に対応する特定の物理的コンピュータシステム上の特定の仮想マシンコンピューティングノード)に対応する6ビット識別子272c、2つの1ビット識別子272fおよび272g、エンティティネットワーク識別子(例えば、特定の仮想ネットワークを参照するための)を埋め込む24ビット識別子272d、IPv4ネットワークアドレス(例えば、仮想ネットワークアドレス)を埋め込む32ビット識別子272e、が含まれる。スロット識別子の6ビットは、ほぼ64個の一意的な値を表し、埋め込まれるエンティティネットワーク識別子の24ビットは、ほぼ1680万個の一意的な値を表し、埋め込まれるIPv4ネットワークアドレスの32ビットは、ほぼ43億個の一意的な値を表すことができる。本例においては、1ビット識別子272g(IPv6アドレスのビット70)は、いくつかの実施形態において、アドレスがグローバルに運営されるか、または、ローカルに運営されるかを示すことができるU/L global/localビットを表し、1−bit識別子272f(IPv6アドレスのビット71)は、いくつかの実施形態において、アドレスが単一のコンピューティングノードまたは複数のコンピューティングノードのグループ(例えば、ブロードキャストまたはマルチキャストの一部として)に対応するかどうかを示すことができる、I/G individual/グループ・ビットを表す。少なくともいくつかの実施形態において、I/Gビットは0に設定され、U/Lビットは、対応する通信の仮想転送が使用されているときには1に設定されるが、これは、実在しないコンピューティングノードルータを介して仮想のサブネット化の際に使用するため、および/または、そのような宛先アドレスを有する入力通信が、32ビットIPv4埋め込みネットワークアドレスおよび24ビットエンティティネットワーク識別子の値に対応するコンピューティングノードではなく、6ビットスロット識別子の値に対応するコンピューティングノードに、配信されることを示すなどのためである。インターフェース識別子情報が、他の方法で他の実施形態において表されることは理解されるであろう。
図3は、コンピューティングノード間の通信を管理するためのシステムの実施形態を実行するのに適切な、例のコンピュータシステムを示すブロック図である。特に、図3は、コンピュータシステムおよびインターネットワーク(複数可)のグループ399を例示し、例えば、データセンタまたは共同設置されるコンピューティングノードの他のグループがある。いくつかの実施形態において、グループ399のコンピュータシステムのいくつかまたは全ては、顧客または他のエンティティの為にプログラムを実行するプログラム実行サービスにより使用することができる。グループ399には、システムマネージャコンピュータシステム300、1つまたは複数の仮想マシンを実行することが可能なホストコンピュータシステム350、ホストコンピュータシステム350と同様の他のホストコンピュータシステム390、ホストコンピュータシステム390を管理し、かつ、コンピュータシステム390の1つ上または別のコンピュータシステム(図示せず)上で実行する、選択的通信マネージャ・モジュール360、が含まれる。システムマネージャコンピュータシステム300とホストコンピュータシステム350および390とは、内部ネットワーク380を介してお互いに接続され、内部ネットワーク380にはネットワークデバイス362および他のネットワークデバイス(図示せず)が含まれる。ネットワーク380は、グループ399のための複数の異種の物理的ネットワーク(図示せず)を連結する相互接続ネットワークとすることができ、かつ、場合により、外部ネットワーク(図示せず)および/またはコンピュータシステム395等のシステムへのアクセスを提供する。例示の例において、ネットワークデバイス362は、ネットワーク380と、ホストコンピュータシステム350および390との間のゲートウェイを提供する。いくつかの実施形態において、ネットワークデバイス362は、例えば、ルータまたはブリッジとすることができる。
システムマネージャコンピュータシステム300は、グループ399内の仮想ネットワークの構成を管理するよう機能し、また、プロビジョニング、初期化、およびコンピューティングノード上でのプログラムの実行に関する他の機能を提供するよう機能する。システムマネージャコンピュータシステム300には、CPU305、種々のI/Oコンポーネント310、記憶装置330、およびメモリ320が含まれる。I/Oコンポーネントには、ディスプレイ311、ネットワーク接続312、コンピュータ可読媒体ドライブ313、および他のI/Oデバイス315(例えば、マウス、キーボード等)が含まれる。
ホストコンピュータシステム350は、1つまたは複数の仮想マシンをホストするよう機能し、例えば、種々の顧客の為にプログラムを実行するコンピューティングノードとして運用する。ホストコンピュータシステム350には、CPU352、種々のI/Oコンポーネント353、記憶装置351、およびメモリ355が含まれる。仮想マシン通信マネージャ・モジュール356および1つまたは複数の仮想マシン358が、メモリ355内で実行中、モジュール356は、関連する仮想マシンコンピューティングノード358の通信を管理する。通信マネージャ・モジュール356は、図2Aから2Bのマッピング情報212および262と同様の方法などで、コンピューティングノード358および他のコンピューティングノードに関する種々のマッピング情報354を記憶装置上に保持する。他のホストコンピュータシステム390の構造は、ホストコンピュータシステム350の構造と同様とすることができ、または代わりに、ホストコンピュータシステム350および390のいくつかまたは全ては、ホストされる仮想マシンを使用せずにプログラムを実行することにより、コンピューティングノードとして直接動作することができる。典型的な配置において、グループ399には、本明細書に例示するような、数百または数千のホストコンピュータシステムを、多数の別個の物理的ネットワークに体系化して含むことができる。
システムマネージャ・モジュール340の実施形態は、コンピュータシステム300のメモリ320内で実行している。いくつかの実施形態において、システムマネージャ340は、ホストコンピュータシステム350上で1つまたは複数の仮想マシンコンピューティングノードの一部として、または、ホストコンピュータシステム390の1つを使用して1つまたは複数のコンピューティングノードとして、実行される1つまたは複数のプログラムの指標を受信することができ、いくつかの状況において、プログラムを実行するコンピューティングノード(複数可)を選択することができる。システムマネージャ340は、そして、例えば、プログラムに関連する顧客識別および/または他の要因に基づき、コンピューティングノード(複数可)に関連する仮想ネットワークを判定することができる。いくつかの場合において、種々の仮想ネットワークの構造および/またはメンバシップは、プロビジョニングデータベース332により提供することができ、プロビジョニングデータベース332は、モジュール340が保持して、種々の顧客および/または実行プログラムおよびコンピューティングノードに関連する物理的資源および仮想資源(例えば、ネットワーキング、ハードウェア等)に関する情報を記憶する。システムマネージャ・モジュール340は、そして、コンピューティングノード(複数可)上でプログラムの実行を開始し、かつ、それらのコンピューティングノードが関連付けされる仮想ネットワークおよび/またはエンティティに関して、それらのコンピューティングノードに関連する通信マネージャ・モジュールに情報を選択的に提供する。他の実施形態において、コンピューティングノード上でのプログラムの実行は、他の方法で開始することができ、システムマネージャ・モジュール340は、その代わりに、それらのコンピューティングノード、プログラム、関連するエンティティおよび関連する仮想ネットワークについての情報を、単に受信し保持することができる。
他の箇所でより詳細に検討するように、通信マネージャ・モジュール356および360(および、他の関連するコンピューティングノード(図示せず)を管理する他の通信マネージャ・モジュール(図示せず))と、システムマネージャ・モジュール340とは、種々の方法で交信して、コンピューティングノード間の通信を管理することができる。そのような交信は、例えば、ネットワークデバイス362または他のネットワークデバイス(図示せず)を任意の特定の構成にせず、かつ、通信をカプセル化せずに、ネットワーク380上、および選択的に1つまたは複数の外部のネットワーク(図示せず)上に、仮想ネットワークをオーバレイすることにより、コンピューティングノードを任意の特定の構成にせずに、コンピューティングノード358および/または他のコンピューティングノードが、仮想ネットワーク上でお互いに通信することを可能にする。
コンピュータシステム300、350、390、および395と、ネットワークデバイス362とは、単なる例示であり、かつ、本発明の範囲を制限することは意図されないことは理解されるであろう。例えば、コンピュータシステム300および/または350は、グループ399の外部の1つまたは複数のネットワークを介して、例えばインターネットすなわちワールドワイドウェブ(「Web」)を介するなどして、他のデバイスに接続することができる。さらに一般的には、コンピューティングノードまたは他のコンピュータシステムは、交信および記載のタイプの機能性の実行が可能な、任意の組み合わせハードウェアまたはソフトウェアを含むことができ、これには、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク記憶装置および他のネットワークデバイス、PDA、携帯電話、無線電話、ページャ、電子手帳、インターネット家電、テレビベースのシステム(例えば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダを使用して)、ならびに、適切な通信機能を含む種々の他の消費者製品、が制限なく含まれる。加えて、例示のモジュールにより提供される機能性は、いくつかの実施形態において、より少ないモジュールで組み合わせること、または、追加のモジュールに分散させることができる。同様に、いくつかの実施形態において、いくつかの例示のモジュールの機能性を提供することができ、および/または、他の追加の機能性を利用可能とすることができる。
種々のアイテムが、使用中はメモリ内または記憶装置上に記憶されているものとして例示されるが、これらのアイテムまたはその一部を、メモリ管理およびデータの整合性の目的でメモリと他の記憶装置との間を転送することが可能であることもまたは理解されるであろう。あるいは、他の実施形態において、いくつかまたは全てのソフトウェアモジュールおよび/またはシステムは、別のデバイス上のメモリ内で実行することができ、かつ、コンピュータ間通信を介して例示のコンピュータシステムと通信することができる。さらに、いくつかの実施形態において、いくつかまたは全てのシステムおよび/またはモジュールは、他の方法で、例えば、少なくとも部分的にはファームウェアおよび/またはハードウェアで実装または提供され、これには、1つまたは複数の特定用途向け集積回路(ASIC)、標準集積回路、コントローラ(例えば、適切な命令を実行することにより、また、マイクロコントローラおよび/または組み込みコントローラが含まれる)、フィールドプログラマブルゲートアレイ(FPGA)、結合プログラム可能論理回路(CPLD)等、が含まれるがこれに限定されない。いくつかまたは全てのモジュール、システム、およびデータ構造は、(例えば、ソフトウェア命令または構造化データとして)コンピュータ可読媒体上、例えば、ハードディスク、メモリ、ネットワーク、または、適切なドライブによりまたは適切な接続を介して読まれる携帯用媒体製品、上に記憶することもできる。システム、モジュールおよびデータ構造は、生成されたデータ信号として(例えば、搬送波または他のアナログ伝搬信号もしくはデジタル伝搬信号の一部として)、無線ベースの媒体および有線/ケーブルベースの媒体を含む、様々なコンピュータ可読伝送媒体上に伝送することもでき、かつ、様々な形式(例えば、単一アナログ信号または多重アナログ信号の一部として、または、複数の離散デジタルパケットまたはフレームとして)をとることができる。そのようなコンピュータプログラム製品は、他の実施形態において他の形式をとることもできる。従って、本発明は、他のコンピュータシステム構成で実践することができる。
図4は、システムマネージャ・ルーチン400の一例の実施形態のフローチャートである。ルーチンは、例えば、図1のシステムマネージャ・モジュール110、図2Aから2Bのシステムマネージャ・モジュール290、および/または、図3のシステムマネージャ・モジュール340を実行することにより提供することができ、例えば、1つまたは複数の中間ネットワークに亘る複数のコンピューティングノード間の通信の管理をサポートし、また、いくつかの状況において他のタイプの管理操作を実行する。少なくともいくつかの実施形態において、ルーチンは、共通の中間ネットワークに亘って複数の異なるエンティティの通信を構成するシステムの一部として、例えば、複数の顧客の分散されるコンピューティングノード上でプログラムを実行するプログラム実行サービスの一部として、提供することができ、通信は、各コンピューティングノードが、そのエンティティに特有のプライベート仮想ローカルネットワークを使用して他の関連するコンピューティングノードと透過的に通信することを可能にするよう構成される。さらに、ルーチンは、通信が許可されるかどうかを判定して通信マネージャ・モジュールを支援することなどにより、未許可の通信が宛先コンピューティングノードに提供されないようにすることを容易にすることができる。
例示の実施形態において、ルーチンは、ブロック405にて開始され、それにおいて要求が受信される。ルーチンはブロック410へ進み、要求のタイプを判定する。要求のタイプがコンピューティングノードを特定の示されるエンティティに関連付けさせるものである、と判定される場合、例えば、そのコンピューティングノードが、そのエンティティの為に1つまたは複数のプログラムを実行している、または、実行しようとしている場合、ルーチンはブロック415へ進み、そのコンピューティングノードをその示されるエンティティに関連付ける。いくつかの実施形態において、ルーチンは、1つまたは複数のコンピューティングノードが、示されるエンティティに関連付けされるべきであるとさらに判定することができ、これは、例えば、実行が開始されようとしている1つまたは複数のプログラムに関して、示されるエンティティにより提供される情報に基づき行われ、一方で、他の実施形態において、そのようなコンピューティングノードの選択、および/または、それらのコンピューティングノード上での適切なプログラムの実行は、他の方法で実行することができる。加えて、他の箇所でより詳細に検討するように、いくつかの実施形態において、1つまたは複数のコンピューティングノードは、それぞれ、1つまたは複数の物理的コンピュータシステムによりホストされる仮想マシンとすることができる。ルーチンは次に、ブロック420へ進み、コンピューティングノードの指標およびこれの示されるエンティティとの関連性を記憶する。特に、例示の実施形態において、ルーチンは、コンピューティングノードに対応する物理的ネットワークアドレスの指標、コンピューティングノードのエンティティにより使用される仮想ネットワークアドレス、関連するエンティティの指標を記憶する。他の箇所でより詳細に検討するように、コンピューティングノードに対応する物理的ネットワークアドレスは、いくつかの実施形態において、その単一のコンピューティングノードに特有の物理的ネットワークアドレスとすることができ、一方で、他の実施形態においては、代わりに、サブネットワークまたは複数のコンピューティングノードの他のグループを参照することができ、関連する通信マネージャ・モジュールにより管理することなどができる。さらに、特定のエンティティが複数の別個の仮想ネットワークを有する状況においては、ルーチンは、指標を受信することができ、または、コンピューティングノードが関連付けされる1つまたは複数の仮想ネットワークを判定し、同様に、その情報をコンピューティングノードについての他の情報と併せて記憶することができる。先に検討したように、図2Cは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。
代わりに、ブロック410において、受信された要求のタイプが、別の管理されるコンピューティングノードの為に通信マネージャ・モジュールからなどの、コンピューティングノードの仮想ネットワークアドレスに対するアドレス解決を求める要求であると判定される場合、ルーチンは、代わりに、ブロック425へ進み、そこで、許可されるかどうかを1つまたは複数の方法で判定するが、これは例えば、管理されるコンピューティングノードであってこれの為に要求がなされるコンピューティングノードが、仮想ネットワークアドレス解決が要求されるコンピューティングノードに、通信を送信することが許可されるかどうかに基づき(例えば、2つのコンピューティングノードが属する仮想ネットワーク(複数可)に基づき)、管理されるコンピューティングノードであってこれの為に要求がなされるコンピューティングノードが、現在、構成される仮想ネットワークの一部である有効なコンピューティングノードであるかどうかに基づき、および/または、示されるコンピューティングノードであってこれの為に要求がなされるコンピューティングノードを実際に管理する通信マネージャ・モジュールから要求が受信されたかどうかに基づき行われる。要求が許可されると判定される場合、ルーチンはブロック430へ進み、そこで、対象の仮想ネットワークアドレスおよびエンティティネットワーク識別子またはエンティティの他の指標(例えば、一意的な数字または英数字のラベル)を取得するが、これは例えば、ブロック405において受信された要求と共に含まれる。ルーチンは次に、ブロック435へ進み、そのエンティティネットワーク識別子に対応する仮想ネットワークのためのその仮想ネットワークアドレスを、コンピューティングノードに対応する場所のための物理的ネットワークアドレスに関連付ける、記憶される情報を検索するが、この情報は、例えば、ブロック420に関して事前に記憶される。ブロック435の後、ルーチンは、440へ進み、物理的ネットワークアドレスの指標をリクエスタに提供する。本明細書において例示はしないが、ブロック425での判定が、要求を許可しないと判定する場合、ブロック405において受信された要求に対してエラーメッセージで応答することにより、または、その受信された要求に応答しないことによるなどして、ルーチンは、代わりに、その要求に対するブロック430から440を実行しない。加えて、他の実施形態において、ルーチンは、1つまたは複数の他のテストを実行することができ、受信された要求を、要求された情報で応答する前に、要求を開始したコンピューティングノードが、その情報を受信することが許可されることを検証するなど行う。
代わりに、ブロック410において、受信された要求が別のタイプのものであると判定される場合、ルーチンは代わりにブロック450へ進み、別の示される操作を必要に応じて実行する。例えば、いくつかの実施形態において、ルーチンは、要求を受け取って、特定のコンピューティングノードについての記憶される情報を更新することができ、例えば、特定のコンピューティングノードが、特定のエンティティおよび/または仮想ネットワークに事前に関連付けられていた場合に、その関連性が切れる(例えば、そのコンピューティングノード上でそのエンティティに対して実行されている1つまたは複数のプログラムが終了される)。ルーチンはまた、他の箇所でより詳細に検討するように、複数のコンピューティングノードのシステムを管理することに関する様々な他の動作を実行することができる。加えて、本明細書において例示はしないが、他の実施形態において、ルーチンは、時には、他のタイプの動作を実行することができ、例えば、所定の期間が過ぎた場合などに、不定期にハウスキーピング操作を行って記憶される情報を必要に応じて見直しおよび更新する。加えて、仮想ネットワークアドレスの受信されたアドレス解決要求などに対してなど、可能性のある有効化の問題が検出される場合、ルーチンは、種々の動作をとり、エラーを信号で送る、および/または、他の対応する動作を必要に応じて実行する、ことができる。
ブロック420、440、および450の後、ルーチンはブロック495へ進み、継続すべきかどうかを判定する。継続すべきであると判定した場合、ルーチンはブロック405へ戻り、継続すべきでないと判定した場合、ブロック499へ進み、終了する。
図5は、通信マネージャ・ルーチン500の一例の実施形態のフロー図である。ルーチンは、例えば、通信マネージャ・モジュール109a、109dおよび/または図1の150、通信マネージャ・モジュール210および/または図2Aから2Bの260、および/または、通信マネージャ・モジュール356および/または図3の360、の実行により提供することができ、1つまたは複数の共有される中間ネットワーク上にプライベート仮想ネットワークを提供するために、1つまたは複数のコンピューティングノードの関連するグループとの通信を管理し、これには、管理されるコンピューティングノードへの通信および/または管理されるコンピューティングノードからの通信を許可するかどうかを判定することが含まれる。
ルーチンは、ブロック505にて開始され、それにおいてノード通信または他のメッセージの指標が受信される。ルーチンはブロック510へ進み、通信または他のメッセージのタイプを判定し、それに従って進み、ブロック510においてメッセージが、関連する管理されるコンピューティングノードからのARP要求等のネットワークアドレス解決を求める要求であると判定される場合、ルーチンはブロック515へ進み、要求内に示される対象の仮想ネットワークアドレスを識別する。ルーチンは次に、ブロック520へ進み、図4のブロック425から440に対して検討したように、要求を与えたコンピューティングノードに関連する仮想ネットワーク(または、代替えとしてエンティティ)のための示される仮想ネットワークアドレスに対する仮想ネットワークアドレス解決を求める要求を、システムマネージャ・モジュールに送信する。他の箇所でより詳細に検討するように、ルーチンは、いくつかの実施形態において、それぞれの管理されるコンピューティングノードに関連する仮想ネットワークおよび/またはエンティティについての情報を追跡することができ、一方で、他の実施異形態において、代わりに、そのような情報を、コンピューティングノードにより、および/または、システムマネージャ・モジュールにより、ルーチンへ提供することができ、または、代わりに、システムマネージャ・モジュールは、その情報を、現在のルーチンにより提供および追跡されることなく、追跡および記憶することができる。本明細書において例示はしないが、他の実施形態および状況において、そのようなアドレス解決要求を、他の方法で扱うことができる。例えば、特定の通信マネージャ・モジュールにより管理されているコンピューティングノードが、やはり通信マネージャ・モジュールにより管理される別のコンピューティングノードのアドレス解決要求を与える場合、ルーチンは、代わりに、例えば、ルーチンによりローカルに記憶される情報に基づき、システムマネージャ・モジュールと交信せずに要求に応答することができる。加えて、例示の実施形態においては、受信された要求は、示されるネットワークレイヤアドレスに対応するコンピューティングノードのリンクレイヤハードウェアアドレスを提供するための要求であるが、他の実施形態においては、アドレス解決要求は他の形式を有することができる。
例示の実施形態において、ルーチンは次に、ブロック525へ進み、物理的ネットワークアドレスを含む応答をシステムマネージャ・モジュールから受信し、その物理的ネットワークアドレスを、ルーチンが後で使用するための一意的なダミーのハードウェア・アドレスにマッピングする情報をローカルに記憶する(例えば、ルーチンにより生成されまたは応答内に提供される、ダミーの仮想ハードウェア・アドレスに基づき)。先に検討したように、図2Cは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。ルーチンは次に、ダミーハードウェアアドレスを要求側コンピューティングノードに提供し、ルーチンが、示される仮想ネットワークアドレスと共に、コンピューティングノードに送信する通信の一部として、ダミーハードウェアアドレスを使用する。他の箇所でより詳細に検討するように、与えられる物理的ネットワークアドレス応答は、いくつかの実施形態において、示される対象のコンピューティングノードに特有である物理的ネットワークアドレスを含み、一方で、他の実施形態において、物理的ネットワークアドレスは、サブネットワークまたは示されるコンピューティングノードが属する複数のコンピューティングノードの他のグループに対応し、例えば、それらの他のコンピューティングノードを管理する別の通信マネージャ・モジュールに対応する。ルーチンは次に、ブロック530へ進み、ブロック540から555について検討するように、ブロック515から525が出力ノード通信(出ていくノード通信)を扱うことの一部として実行されたかどうかを判定し、実行された場合は、ブロック550へ進む。本明細書において例示はしないが、いくつかの実施形態において、ルーチンは、代わりに、エラー応答をシステムマネージャ・モジュールから受信することができ(例えば、要求側コンピューティングノードが、示される宛先コンピューティングノードと通信することが許可されないことに基づき)、または何の応答も受信しない。受信した場合は、要求側コンピューティングノードに何の応答も送信しないか、または、対応するエラーメッセージをそのコンピューティングノードに送信することができる。
代わりに、ブロック510において、通信または他のメッセージのタイプが、ルーチンにより管理されるコンピューティングノードからルーチンにより管理されない別の示されるリモートの宛先コンピューティングノードへの出力ノード通信であると判定される場合、ルーチンはブロック540へ進み、宛先コンピューティングノードのための示されるハードウェア・アドレスを通信ヘッダから識別する。ブロック545において、ルーチンは次に、その宛先ハードウェア・アドレスが、ブロック525について先に検討したように、宛先コンピューティングノードに対応する物理的ネットワークアドレスに事前にマッピングされたダミーのハードウェア・アドレスであるかどうかを判定する。そうでない場合、いくつかの実施形態において、ルーチンはブロック515へ進み、ブロック515から525を実行して、出力ノード通信のそのような対応する物理的ネットワークアドレスを判定し、一方で、他の実施形態において、そのような動作は実行されない(例えば、示されるハードウェア・アドレスがマッピングされたダミーのアドレスでない場合、ルーチンは、出力ノード通信を不能にすることができ、例えば、エラーメッセージを送信側ノードに返す)。示されるハードウェア・アドレスが、マッピングされたダミーのアドレスである場合、またはチェックが実行されない場合、ルーチンはブロック550へ進み、ダミーのハードウェア・アドレスにマッピングされる物理的ネットワークアドレスを検索し、検索されたアドレスを使用して送信側コンピューティングノードと宛先コンピューティングノードとの間の1つまたは複数の中間ネットワークのネットワーキングアドレスプロトコルに従って、通信ヘッダを書き換える。先に検討したように、図2Cは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。ヘッダの書き換えには、送信側コンピューティングノードのための仮想ネットワークアドレスを、対応する物理的ネットワークアドレスであるとして変更することを含む、新しいヘッダの他の情報を変更することがさらに含まれ、少なくともいくつかの実施形態において、受信された通信を、カプセル化せずに1つまたは複数の中間物理的ネットワーク上の仮想ネットワークのオーバレイの一部として修正することが含まれる。ブロック555において、ルーチンは次に、修正された出力通信を宛先コンピューティングノードに提供することを容易にし、例えば、修正された出力通信を、中間ネットワーク上で宛先コンピューティングノードへ転送することを開始することにより行う。本明細書には例示はしないが、他の実施形態において、種々の追加的なタイプの処理が出力ノード通信に対して実行され、例えば、通信が有効であること、または、種々の方法で許可されることを検証する(例えば、送信側コンピューティングノードが、宛先コンピューティングノードへ通信を送信することが許可されることを検証するが、これは、同じエンティティまたは同じ仮想ネットワークの一部に関連していることに基づいたり、送信側コンピューティングノードおよび指定コンピューティングノードが、互いに通信しあうことが許可された異なるエンティティに関連することに基づいたり、通信または通信に特有の他の情報のタイプに基づいたりする、などして行われる)。
代わりに、ブロック510において、受信されたメッセージが、管理されるコンピューティングノードのうちの1つのための、外部のコンピューティングノードからの入力ノード通信(入ってくるノード通信)であることを判定する場合、ルーチンはブロック565へ進み、送信側コンピューティングノードおよび宛先コンピューティングノードのための物理的ネットワークアドレスを通信ヘッダから識別する。先に検討したように、図2Cは、そのような物理的ネットワークアドレスをどのように構成するかについての一例を示す。ブロック565の後、ルーチンはブロック570へ進み、入力通信が有効であることを1つまたは複数の方法で選択的に検証する。例えば、ルーチンは、送信側通信ノードのための物理的ネットワークアドレスが、ソース物理的ネットワークアドレスの場所に対応するコンピューティングノードに実際にマッピングされるかどうかを判定することができ、例えば、システムマネージャ・モジュールとの交信に基づき、および/または、ルーチンにより事前に取得および記憶された他の情報に基づき判定される。加えて、ルーチンは、宛先通信ノードのための物理的ネットワークアドレスが、実際の管理されるコンピューティングノードに対応するかどうかを判定することができる。本明細書において例示はしないが、入力通信が有効でないと判定される場合、ルーチンは、図示されない種々の動作を取ることができ、1つまたは複数のエラーを生成し、関連する処理を実行し、および/または、入力通信を、示される宛先ノードに転送せずにドロップする、など行う。例えば、入力通信が、現在の管理されるコンピューティングノードに対応しない宛先ネットワークアドレスを示す場合、ルーチンは、入力通信をドロップし、および/または、エラーメッセージを開始することができるが、いくつかの実施形態においては、そのようなメッセージは、送信側コンピューティングノードに送信されない。示される宛先ネットワークアドレスが、最近管理されたが、現在は管理されないコンピューティングノードに対応する場合(例えば、対応するエンティティの為に1つまたは複数のプログラムをそれ以上実行しないなど、そのコンピューティングノードが、示される仮想ネットワークにはもう関連がないことにより)、ルーチンは、宛先コンピューティングノードがそれ以上利用できない、という指標を送信側コンピューティングノードに与えることができる。
例示の実施形態において、ブロック570の後、ルーチンはブロック575へ進み、物理的宛先ネットワークアドレスにマッピングされるダミーのハードウェア・アドレスおよび仮想ネットワークアドレスを検索し、仮想ローカルネットワークのための通信ヘッダを書き換え、通信ヘッダが、その仮想ネットワークアドレスおよびダミーのハードウェア・アドレスと共にコンピューティングノードに送信されるようにする。例えば、いくつかの実施形態において、宛先仮想ネットワークアドレスは、宛先物理的ネットワークアドレス自体から、例えば、宛先物理的ネットワークアドレスのビットのサブセットなどから、取得できる。加えて、ダミーの宛先ハードウェア・アドレスは、ブロック525について先に検討したように、事前に物理的宛先ネットワークアドレスにマッピングすることができる。そのような事前のマッピングがなされない状況においては、ルーチンは、代わりに、ブロック515から525を実行して、そのような情報を取得することができる。ルーチンは同様に、仮想ローカルネットワークの通信ヘッダを書き換えることができ、通信ヘッダが、ソース仮想ネットワークアドレスおよび送信側コンピューティングノードに対応するダミーのソースハードウェアアドレスと共に、コンピューティングノードから送信されるようにする。ブロック575の後、ルーチンはブロック580へ進み、修正された入力通信を宛先コンピューティングノードに与えることを容易にし、修正された入力通信の宛先ノードへの転送を開始することなどにより行う。
代わりに、ブロック510において、別のタイプのメッセージが受信されたと判定される場合、ルーチンはブロック585へ進み、必要に応じて別の示される操作を実行し、例えば、特定のコンピューティングノードに関連するエンティティについての情報を記憶する、事前にマッピングまたは記憶された情報を更新して、管理されているコンピューティングノードまたはリモートのコンピューティングノードに対して、変更を反映する。
ブロック555、580、または585の後、または、代わりに、ブロック530において、出力通信に対して処理が実行されていないと判定される場合、ルーチンはブロック595へ進み、継続すべきかどうかを判定する。継続すべきであると判定した場合、ルーチンはブロック505へ戻り、継続すべきでないと判定した場合、ブロック599へ進み、終了する。
加えて、種々の実施形態により、顧客ユーザおよび他のエンティティがコンピューティングノードおよびその通信を構成する目的で、システムマネージャ・モジュールの実施形態と対話するための機構を提供することができる。例えば、いくつかの実施形態により、対話型コンソールを提供することができ(例えば、インタラクティブユーザインターフェース、ウェブブラウザベースのインターフェース、等を提供するクライアントアプリケーションプログラム)、対話型コンソールから、ユーザは、仮想ネットワークの作成または削除、および仮想ネットワークのメンバシップの指定を管理すること、また、ホストされるアプリケーションの操作および管理に関するより全体的な管理機能、を管理することが可能である(例えば、ユーザアカウントの作成及び変更、新しいアプリケーションの提供、ホストされるアプリケーションの開始・終了・監視、グループへのアプリケーションの割り当て、時間または他のシステムリソースの予約、等)。加えて、いくつかの実施形態により、他のコンピュータシステムおよびプログラムに、少なくともいくつかの記載の機能性をプログラムで起動させる、API(「アプリケーションプログラミングインターフェース」)を提供することができる。そのようなAPIは、ライブラリまたはクラスインターフェース(例えば、C、C++、またはJava(登録商標)で書かれたプログラムにより起動される)、および/または、ウェブサービスを介するようなネットワークサービスプロトコル、により提供することができる。記載の技術を共に使用することができるプログラム実行サービスの例の実施形態の運用に関する追加的な詳細は、2006年3月31日に出願された「Managing Communications Between Computing Nodes(コンピューティングノード間の通信の管理)」という名称の米国特許出願第11/394,595号、2006年3月31日に出願された「Managing Execution of Programs by Multiple Computing Systems(複数のコンピュータシステムによるプログラムの実行の管理)という名称の米国特許出願第11/395,463号、および、2007年3月27日に出願された「Configuring Intercommunications Between Computing Nodes(コンピューティングノード間の相互通信の構成)」という名称の米国特許出願第11/692,038号で入手可能であり、それぞれ、その全体が参照により本明細書に組み込まれる。
いくつかの実施形態において、記載の技術は、仮想マシンをホストする複数の物理的機器を収容するデータセンタのコンテキストおよび/またはプログラム実行サービスのコンテキスト、で採用されるが、他の実装のシナリオも可能であることは理解されるであろう。例えば、記載の技術を、会社または他の機関(例えば、大学)によりその従業員および/または会員の利益のために運用される組織全体のネットワークまたはネットワークのコンテキストで採用することができる。あるいは、記載の技術を、ネットワークサービスプロバイダがネットワークのセキュリティ、有用性、および分離を向上させることが可能である。加えて、例の実施形態を、データセンタおよび様々な目的のための他のコンテキスト内で採用することができる。例えば、ホストされるアプリケーションへのアクセスを顧客に販売するデータセンタ運用者またはユーザは、いくつかの実施形態において、記載の技術を使用してその顧客のアプリケーションとデータとの間のネットワーク分離を提供することができ、ソフトウェア開発チームは、いくつかの実施形態において、記載の技術を使用して、使用する種々の環境(例えば、開発、構築、テスト、展開、製造等)の間のネットワーク分離を提供することができ、組織は、いくつかの実施形態において、記載の技術を使用して、1つの社員グループまたは部署(例えば、人事部)により利用されるコンピューティング資源を、別の社員グループまたは部署(例えば、経理部)により利用されるコンピューティング資源から分離することができ、または、マルチコンポーネントアプリケーション(例えば、多層ビジネスアプリケーション)を展開しているデータセンタ運用者またはユーザは、いくつかの実施形態において、記載の技術を使用して、種々の構成要素のタイプ(例えば、ウェブフロントエンド、データベースサーバ、ビジネスルールエンジン等)に対する機能分割および/または分離を提供することができる。より一般的には、記載の技術を使用して、物理的ネットワークを仮想化して、従来、別個のコンピュータシステムおよび/またはネットワークの物理的分割を必要とするほとんどの任意の状況を反映することができる。
いくつかの実施形態において、上記で検討したルーチンにより提供される機能性は、より多くのルーチン間で分割する、または、より少ないルーチンに集約するなど、代替の方法で提供することができることは、理解されるであろう。同様に、いくつかの実施形態において、例示のルーチンは、記載されるものより多くのまたは少ない機能性を提供することができ、これは、他の例示のルーチンが代わりに、それぞれそのような機能性を欠いているまたは含むとき、または、提供される機能性の量が変更されるとき、などである。加えて、種々の操作が、特定の方法(例えば、順次または並行して)および/または特定の順番で実行されるものとして例示される一方、当業者は、他の実施形態において、他の順番および他の方法で、操作を実行することができることを理解するであろう。当業者はまた、上記で検討したデータ構造を、異なる方法、例えば、単一のデータ構造を複数データ構造に分割させること、または、複数データ構造を単一データ構造に集約させること、によりで構築できることを理解するであろう。同様に、いくつかの実施形態において、例示のデータ構造は、記載されるものより多くのまたは少ない情報を記憶することができ、これは、他の例示のデータ構造が代わりに、それぞれそのような情報を欠いているまたは含むとき、または、記憶される情報の量またはタイプが変更されるとき、などである。
記載の実施形態の種々の態様を、以下の条項について、さらに理解することが可能である。
条項1。コンピューティングノード間の通信を構成するコンピュータシステムのための方法であって、
複数の関連するコンピューティングノードの通信を管理する通信マネージャ・モジュールの制御下において、
通信マネージャ・モジュールに対する関連するコンピューティングノードの1つである送信側ノード上の実行プログラムから、出力通信を受信するステップであって、出力通信は、別のリモートの通信マネージャ・モジュールに関連する複数の他のコンピューティングノードの1つであるリモートの宛先ノードに対して意図され、出力通信は、第1の仮想ネットワークの第1のネットワークアドレス指定プロトコルを使用して前記送信側ノードにより特定される宛先ノードのための第1の宛先ネットワークアドレスである示される宛先アドレスを有し、通信マネージャ・モジュールは、別個の第2のネットワークアドレス指定プロトコルを使用する少なくとも1つの他の第2の物理的ネットワークを介して、別の通信マネージャ・モジュールに通信可能に接続される、ステップと、
実行プログラムが出力通信を宛先ノードに送信することが許可されるかどうかを自動的に判定するステップと、
実行プログラムが許可されると判定される場合、出力通信を少なくとも1つの第2のネットワーク上を宛先ノードに、以下のステップにより、すなわち、
第2のネットワークアドレス指定プロトコルに従って特定される別個の第2の宛先ネットワークアドレスを自動的に判定するステップであって、第2の宛先ネットワークアドレスは、別の通信マネージャ・モジュールに対応する第2のネットワークアドレス指定プロトコルに基づく宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第1のネットワークアドレス指定プロトコルに従って特定される第1の宛先ネットワークアドレスを表す部分を含む、ステップと、
出力通信を自動的に修正して、少なくとも1つの第2のネットワーク上を送信される1つまたは複数の別個の通信内に出力通信をカプセル化することなく、第1のネットワークを、出力通信の少なくとも1つの第2のネットワーク上にオーバレイさせることを可能にするステップであって、出力通信を修正するステップには、示される宛先アドレスを、判定された第2の宛先ネットワークアドレスに変更するステップが含まれる、ステップと、
第2の宛先ネットワークアドレスに基づき少なくとも1つの第2のネットワークを介して、修正された出力通信の宛先ノードへの転送を開始するステップと、により
送信するステップと
を含む方法。
条項1の方法において、送信側ノード上の実行プログラムは、プログラム実行サービスの第1の顧客の為に実行されている第1のプログラムであり、送信側ノードは、プログラム実行サービスに関連する複数の物理的コンピュータシステムのうちの1つによりホストされる複数の仮想マシンのうちの1つであり、通信マネージャ・モジュールは、プログラム実行サービスの為に1つの物理的コンピュータシステムの仮想マシンマネージャモジュールにより提供され、宛先ノードは、複数の物理的コンピュータシステムのうちの別のものによりホストされる複数の仮想マシンのうちの1つであり、かつ、プログラム実行サービスの第2の顧客の為に第2のプログラムを実行し、第1の実行プログラムが出力通信を宛先ノードに送信することが許可されるかどうかを自動的に判定するステップには、プログラム実行サービスのシステムマネージャ・モジュールと交信して、第1の顧客が、第2の顧客に通信を送信することが許可されるかどうかを判定するステップが含まれる。
条項3。条項1の方法において、第1の仮想ネットワークは、送信側ノードおよび宛先ノードが属するプライベート仮想ローカルネットワークであり、少なくとも1つの第2のネットワークは、非プライベートネットワークであり、通信マネージャ・モジュールの制御下において、方法は、
複数の関連するコンピューティングノードのうちの1つに対する入力通信を、別のリモートの通信マネージャ・モジュールに関連するリモートの送信側コンピューティングノード上で実行される第2のプログラムから受信するステップであって、入力通信は、第1のネットワークアドレス指定プロトコルを使用してリモートの送信側ノードにより特定される、リモートの送信側ノードのための第1のソースネットワークアドレスを表す部分を有し、入力通信は、第1のネットワークアドレス指定プロトコルを使用してリモートの送信側ノードにより特定される、1つの関連するコンピューティングノードのための第3の宛先ネットワークアドレスを表す部分をさらに有する、ステップと、
1つの関連するコンピューティングノードに通信を送信することが許可されるコンピューティングノードに対応する第1のソースネットワークアドレスに少なくとも部分的に基づき、入力通信が有効であるかどうかを自動的に判定するステップと、
入力通信が有効であると判定される場合、第3の宛先ネットワークアドレスを使用して、入力通信を1つの関連するコンピューティングノードに提供するステップと、
をさらに含む。
条項4。コンピューティングノード間の通信を構成するためのコンピュータに実装される方法であって、
出力通信を、リモートの宛先コンピューティングノードに対して意図される送信側コンピューティングノードから受信するステップであって、出力通信は、第1のネットワークの第1のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、宛先ノードのための第1の宛先ネットワークアドレスである、示される宛先アドレスを有し、送信側ノードは、別個の第2のネットワークアドレス指定プロトコルを使用する少なくとも1つの他の第2のネットワークを介して、宛先ノードに通信可能に接続される、ステップと、
出力通信を1つまたは複数の中間ネットワーク上に送信する前に、出力通信を自動的に修正して、第1のネットワークを出力通信の少なくとも1つの第2のネットワーク上にオーバレイさせることを可能にするステップであって、出力通信を修正するステップには第2のネットワークアドレス指定プロトコルを使用して、示される宛先アドレスを別個の第2の宛先ネットワークアドレスに変更するステップが含まれ、第2の宛先ネットワークアドレスは、宛先ノードを含む複数のコンピューティングノードに対応する宛先ノードのための部分的な宛先ネットワークアドレスを含み、第2の宛先ネットワークアドレスは、第1の宛先ネットワークアドレスを表す部分をさらに含む、ステップと、
第2の宛先ネットワークアドレスに基づき少なくとも1つの第2のネットワークを介して、修正された出力通信の宛先ノードへの転送を開始するステップと
を含む方法。
条項5。条項4の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む1つまたは複数のコンピューティングノードの通信を管理する第1の通信マネージャ・モジュールの制御下において実行され、部分的な宛先ネットワークアドレスは、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第2の通信マネージャ・モジュールに対応し、方法は、第2の通信マネージャ・モジュールの制御下において、
少なくとも1つの第2のネットワークを介して転送される修正された出力通信を、宛先ノードに対して意図される入力通信として受信するステップと、
受信される入力通信の第2の宛先ネットワークアドレスに含まれる、第1の宛先ネットワークアドレスを表示する部分を検索するステップと、
第1の宛先ネットワークアドレスを使用することにより、受信される入力通信の少なくとも一部を宛先ノードに転送するステップと
をさらに含む方法。
条項6。条項5の方法において、受信される出力通信は、第1のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、送信側ノードのための示される第1のソースネットワークアドレスをさらに含み、第1の通信マネージャ・モジュールによる出力通信を修正するステップが、第1のソースネットワークアドレスを表す部分を含む、第2のネットワークアドレス指定プロトコルを使用して送信側ノードのための別個の第2のソースネットワークアドレスを追加するステップをさらに含み、方法は、第2の通信マネージャ・モジュールの制御下において、かつ、通信部分を宛先ノードに転送する前に、宛先ノードと通信することが許可されたコンピューティングノードに対応する第1のソースネットワークアドレスに少なくとも部分的に基づき、かつ、第1の通信マネージャ・モジュールに対応する第2のソースネットワークアドレスに少なくとも部分的に基づき、受信される入力通信が有効であると検証するステップをさらに含む。
条項7。条項4の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む1つまたは複数のコンピューティングノードの通信を管理する第1の通信マネージャ・モジュールの制御下において、実行され、受信される出力通信は、第1のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、送信側ノードのための示される第1のソースネットワークアドレスをさらに含み、方法は、第1の通信マネージャ・モジュールの制御下において、かつ、通信部分を宛先ノードに転送する前に、送信側ノードが宛先ノードとの通信が許可されること、に少なくとも部分的に基づき、受信される出力通信が有効であることを検証するステップをさらに含む。
条項8。条項4の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む1つまたは複数のコンピューティングノードの通信を管理する第1の通信マネージャ・モジュールの制御下において、実行され、方法は、第1の通信マネージャ・モジュールの制御下において、かつ、出力通信を修正する前に、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第2の通信マネージャ・モジュールと、宛先ノードのための第1の宛先ネットワークアドレスとの関連性を示す、記憶される情報を検索することにより、宛先ノードのための部分的な宛先ネットワークアドレスを自動的に判定するステップをさらに含む。
条項9。条項4の方法において、出力通信を自動的に修正するステップは、送信側ノードを含む1つまたは複数のコンピューティングノードの通信を管理する第1の通信マネージャ・モジュールの制御下において、実行され、方法は、第1の通信マネージャ・モジュールの制御下において、かつ、出力通信を修正する前に、宛先ノードのための第1の宛先ネットワークアドレスと、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第2の通信マネージャ・モジュールとの関連性を保持する、リモートのサーバと交信することにより、宛先ノードのための部分的な宛先ネットワークアドレスを自動的に判定するステップをさらに含む。
条項10。条項9の方法において、送信側コンピューティングノードおよび宛先コンピューティングノードは、顧客の為にプログラムを実行するプログラム実行サービスにより使用される複数のコンピューティングノードの一部であり、送信側コンピューティングノードは、第1の顧客の為に第1のプログラムを実行し、宛先コンピューティングノードは、第2の顧客の為に第2のプログラムを実行し、リモートのサーバは、プログラム実行サービスのシステムマネージャ・モジュールを提供する。
条項11。条項4の方法において、送信側ノードおよび宛先ノードは、仮想ローカルネットワークの一部であり、第1の宛先ネットワークアドレスは、仮想ローカルネットワーク上の宛先ノードのための、送信側ノードにより使用される仮想ネットワークアドレスであり、第2の宛先ネットワークアドレスは、送信側ノードが利用可能である。
条項12。条項4の方法において、送信側ノードおよび宛先ノードは、それぞれ、エンティティであって、そのエンティティの為に送信側ノードおよび宛先ノードが操作しているエンティティ、に対応する識別子に関連付けされ、出力通信を修正するステップが、識別子を含むように第2の宛先ネットワークアドレスを構築するステップをさらに含み、出力通信を修正して、第1のネットワークを出力通信の少なくとも1つの第2のネットワーク上にオーバレイされることを可能にするするステップは、少なくとも1つの第2のネットワーク上を送信される1つまたは複数の別個の通信内に出力通信をカプセル化することなく、実行される。
条項13。条項4の方法において、第1のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン4(IPv4)であり、第2のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン6(IPv6)である。
条項14。条項4の方法において、受信される出力通信は、第1のネットワークアドレス指定プロトコルを使用して送信側ノードにより特定される、送信側ノードのための示される第1のソースネットワークアドレスをさらに含み、宛先コンピューティングノードは、宛先コンピューティングノードが属するネットワークの第1のネットワークアドレス指定プロトコルを使用し、修正された出力通信は、第1のソースネットワークアドレスを表す部分を含む示されるソースアドレスをさらに含み、宛先ノードが、第1のソースネットワークアドレスから第1の宛先ネットワークアドレスに送信されるものとして示される出力通信の複製を受信するようにする。
条項15。条項4の方法において、第2のネットワークアドレス指定プロトコルは、ネットワークアドレスを表すために、第1のネットワークアドレス指定プロトコルよりも多くのビットを使用し、第1のネットワークを少なくとも1つの第2のネットワーク上にオーバレイさせることには、第2の宛先ネットワークアドレスを構築して、第2のネットワークアドレス指定プロトコルのビットのサブセットを使用して第1のネットワークを表すようにすることが含まれ、構築される第2の宛先ネットワークアドレスのビットのサブセットは、第1のネットワークアドレス指定プロトコルに従って特定される、第1の宛先ネットワークアドレスを表す部分を含む。
条項16。条項4の方法において、送信側ノードは、物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの1つであり、方法は、物理的コンピュータシステム上で実行して複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより、実行される。
条項17。コンピュータ可読媒体であって、
第1のネットワークアドレス指定プロトコルに従って特定される第1の宛先ネットワークアドレスを使用して、送信側ノードにより、宛先ノードに送信される出力通信を受信するステップと、
出力通信を、第1のネットワークアドレス指定プロトコルとは別個の第2のネットワークアドレス指定プロトコルを使用する1つまたは複数のネットワーク上を、宛先ノードに送信する前に、
第2のネットワークアドレス指定プロトコルに従って特定される別個の第2の宛先ネットワークアドレスを自動的に判定するステップであって、第2の宛先ネットワークアドレスは、第2のネットワークアドレス指定プロトコルに基づく宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第1の宛先ネットワークアドレスの指標を含む、ステップと、
出力通信を修正して、それにより、1つまたは複数のネットワーク上を、修正された出力通信を宛先ノードに向かわせるときに使用するための第2の宛先ネットワークアドレスを特定するステップであって、修正のステップは、出力通信を1つまたは複数の別個の通信内にカプセル化することなく実行される、ステップと
を含む方法を実行することによって、コンピュータ可読媒体のコンテンツは、コンピュータシステムがコンピューティングノード間の通信を構成することを可能にする、コンピュータ可読媒体。
条項18。条項17のコンピュータ可読媒体において、送信側ノードは、物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの1つであり、方法は、物理的コンピュータシステム上で実行して複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより実行され、かつ、修正された出力通信を1つまたは複数のネットワークに転送するステップをさらに含み、第1のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン4(IPv4)であり、送信側ノードは、第1のネットワークアドレス指定プロトコルを使用する第1の仮想ネットワークの一部であり、第2のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン6(IPv6)であり、1つまたは複数のネットワークは、第1のネットワークとは別個のものであり、かつ、第2のネットワークアドレス指定プロトコルを使用する、送信側ノードと宛先ノードとの間の少なくとも1つの中間物理的ネットワークの一部であり、出力通信を修正するステップを実行して、第1のネットワークを1つまたは複数のネットワーク上にオーバレイさせることを可能にする。
条項19。条項17のコンピュータ可読媒体において、コンピュータ可読媒体は、コンピュータデバイス内のメモリ、および、コンテンツを含む生成された信号を伝送するデータ伝送媒体のうちの少なくとも1つである。
条項20。条項17のコンピュータ可読媒体において、コンテンツは、命令であって、実行されるときに、コンピュータシステムに方法を実行させる命令である。
条項21。コンピューティングノード間の通信を構成するよう構造化されるシステムであって、
1つまたは複数のコンピュータシステムの1つまたは複数のメモリと、
1つまたは複数の中間ネットワークを介した複数のコンピューティングノード間の通信を管理するよう構成される複数の通信マネージャ・モジュールのうちの少なくとも1つであって、各通信マネージャ・モジュールが、1つまたは複数の複数のコンピューティングノードの関連するグループに対する出力通信を、以下のステップにより、すなわち、
送信側コンピューティングノードが、通信マネージャ・モジュールの別のものの関連するグループの一部である宛先コンピューティングノードへの通信を開始した後(送信側コンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードうちの1つである)、1つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、通信に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスには、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュールに対応する、部分的なネットワークアドレスが含まれ、判定された宛先ネットワークアドレスには、送信側コンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標がさらに含まれる、ステップと、
判定された宛先ネットワークアドレスを使用して、開始された通信を、1つまたは複数の中間ネットワークを介して宛先ノードに転送するステップと
により管理する通信マネージャ・モジュールと、
を備えるシステム。
条項22。条項21のシステムにおいて、送信側ノードにより宛先ノードに対して開始される通信に使用するための宛先ネットワークアドレスを、通信マネージャ・モジュールにより判定するステップには、各通信マネージャ・モジュールに対するコンピューティングノードの関連するグループについての情報を保持する、リモートのシステムマネージャ・モジュールと交信するステップが含まれ、交信するステップには、送信側ノードにより使用される他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードネットワークアドレスの指標をシステムマネージャ・モジュールに提供するステップが含まれ、交信するステップには、前記別の通信マネージャ・モジュールであって、前記別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが前記宛先ノードを含む、別の通信マネージャ・モジュール、に対応する、部分的なネットワークアドレスの指標を、システムマネージャ・モジュールから受信するステップがさらに含まれ、システムは、複数の通信マネージャ・モジュールと交信するよう構成される1つまたは複数のシステムマネージャ・モジュールをさらに備える。
条項23。条項21のシステムが、複数の通信マネージャ・モジュールを提供する複数のコンピュータシステムをさらに備え、1つまたは複数のコンピュータシステムはそれぞれ、複数のコンピューティングノードのうちの1つをそれぞれ提供する複数の仮想マシンをホストし、かつ、コンピュータシステムの仮想マシンマネージャモジュールの一部として通信マネージャ・モジュールの内の1つを実行し、コンピュータシステムのホストされる仮想マシンにより提供されるコンピューティングノードが、実行通信マネージャ・モジュールのコンピューティングノードの関連するグループであるようにする。
条項24。条項21のシステムにおいて、通信マネージャ・モジュールはそれぞれ、1つまたは複数のコンピュータシステムのメモリにおいて実行するためのソフトウェア命令を含む。
条項25。条項21のシステムにおいて、各通信マネージャ・モジュールは、1つまたは複数の複数のコンピューティングノードの関連するグループに対する出力通信を管理する手段から成り、出力通信は
送信側コンピューティングノードが、通信マネージャ・モジュールの別のものの関連するグループの一部である宛先コンピューティングノードへの通信を開始した後(送信側コンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードうちの1つである)、1つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、通信に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスには、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュールに対応する、部分的なネットワークアドレスが含まれ、判定された宛先ネットワークアドレスには、送信側コンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標がさらに含まれる、ステップと、
判定された宛先ネットワークアドレスを使用して、開始された通信を、1つまたは複数の中間ネットワークを介して宛先ノードに転送するステップと
により管理される。
条項26。コンピューティングノード間の通信を管理するするコンピュータシステムのための方法であって、方法は、複数の関連するコンピューティングノードの通信を管理する通信マネージャ・モジュールの制御下において、
通信マネージャ・モジュールに対する関連するコンピューティングノードの1つである送信側ノード上の実行プログラムから、出力通信の指標を受信するステップであって、出力通信は、別のリモートの通信マネージャ・モジュールに関連する複数の他のコンピューティングノードの1つであるリモートの宛先ノードに対して意図され、送信側ノードおよび宛先ノードは、第1のネットワークアドレス指定プロトコルを使用する第1の仮想ネットワークの一部であるため、宛先ノードが第1のネットワークアドレス指定プロトコルに従って特定される、第1の仮想ネットワークのための仮想ネットワークアドレスである、第1の宛先ネットワークアドレスを有し、通信マネージャ・モジュールは、別個の第2のネットワークアドレス指定プロトコルを使用する少なくとも1つの他の第2の物理的ネットワークを介して、別の通信マネージャ・モジュールに通信可能に接続される、ステップと、
少なくとも1つの第2のネットワーク上を、送信側ノードから宛先ノードに出力通信を送信することを、以下のステップにより、すなわち
第2のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのための別個の第2の宛先ネットワークアドレスを自動的に生成するステップであって、第2の宛先ネットワークアドレスは、別の通信マネージャ・モジュールに対応する第2のネットワークアドレス指定プロトコルに基づく、宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第1のネットワークアドレス指定プロトコルに従って特定される第1の宛先ネットワークアドレスを表す埋め込まれた部分を含む、ステップと、
生成された第2の宛先ネットワークアドレスの使用を開始して、転送される通信を別の通信マネージャ・モジュールにルーティングすることを介して、少なくとも1つの第2のネットワーク上を、出力通信を宛先ノードに転送するステップと
により容易にするステップと
を含む。
条項27。条項26の方法において、送信側ノード上のプログラムは、プログラム実行サービスの第1の顧客の為に実行されている第1のプログラムであり、送信側ノードは、プログラム実行サービスに関連する複数の物理的コンピュータシステムのうちの1つによりホストされる複数の仮想マシンのうちの1つであり、通信マネージャ・モジュールは、1つの物理的コンピュータシステムの仮想マシンマネージャモジュールにより提供され、宛先ノードは、複数の物理的コンピュータシステムのうちの別のものによりホストされる複数の仮想マシンのうちの1つであり、宛先ノードのための別個の第2の宛先ネットワークアドレスを自動的に生成するステップには、プログラム実行サービスのシステムマネージャ・モジュールと交信して、別の通信マネージャ・モジュールに対応する宛先ノードのための部分的な宛先ネットワークアドレスを判定するステップが含まれる。
条項28。条項26の方法において、第1の仮想ネットワークは、送信側ノードおよび宛先ノードが属するプライベート仮想ローカルネットワークであり、通信マネージャ・モジュールに関連する複数のコンピューティングノードのうちの1つまたは複数の他のものが、1つまたは複数の他の仮想ネットワークに属し、少なくとも1つの第2のネットワークは、第1の仮想ネットワークの通信および1つまたは複数の他の仮想ネットワークの通信が転送される非プライベートネットワークであり、宛先ノードのための自動的に生成された第2の宛先ネットワークアドレスは、生成された第2の宛先ネットワークアドレスに含まれる第1の宛先ネットワークアドレスの解決を可能にするように、第1の仮想ネットワークを表す識別子をさらに含む。
条項29。コンピューティングノード間の通信を管理するためのコンピュータに実装される方法であって、
ソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する指標を受信するステップであって、ソースコンピューティングノードおよび宛先コンピューティングノードは、第1のネットワークアドレス指定プロトコルを使用して、第1のネットワークアドレス指定プロトコルに従って特定される、仮想ネットワークのための仮想ネットワークアドレスを、宛先コンピューティングノードが有するようにする、仮想ネットワークの一部であり、ソースコンピューティングノードは、別個の第2のネットワークアドレス指定プロトコルを使用する少なくとも1つの中間ネットワークを介して、宛先コンピューティングノードに通信可能に接続される、ステップと、
少なくとも1つの中間ネットワーク上を、ソースコンピューティングノードから宛先コンピューティングノードに、通信を送信することを容易にするステップであって、容易にするステップには、第2のネットワークアドレス指定プロトコルに従って特定される、宛先コンピューティングノードのための宛先ネットワークアドレスを自動的に生成するステップが含まれ、宛先ネットワークアドレスは、複数のコンピューティングノードに対応する、宛先コンピューティングノードのための部分的な宛先ネットワークアドレスを含み、かつ、宛先コンピューティングノードのための仮想ネットワークアドレスを表す部分を含む、ステップと、
少なくとも1つの中間ネットワーク上で、通信を宛先コンピューティングノードにルーティングするときに使用するための、生成された宛先ネットワークアドレスの指標を提供するステップと
を含む方法。
条項30。条項29の方法において、前記宛先ネットワークアドレスを自動的に生成するステップは、ソースコンピューティングノードを含む1つまたは複数のコンピューティングノードの通信を管理する第1の通信マネージャ・モジュールの制御下において実行され、部分的な宛先ネットワークアドレスは、宛先ノードを含む複数のコンピューティングノードの通信を管理するリモートの第2の通信マネージャ・モジュールに対応し、少なくとも1つの中間ネットワーク上で通信を宛先コンピューティングノードにルーティングすることには、通信を前記第2の通信マネージャ・モジュールにルーティングすることが含まれる。
条項31。条項30の方法において、方法は、第2の通信マネージャ・モジュールの制御下において、通信が第2の通信マネージャ・モジュールにルーティングされた後、生成された宛先ネットワークアドレスに含まれる仮想ネットワークアドレスを使用して、宛先コンピューティングノードを識別するステップと、識別された宛先コンピューティングノードに通信を転送するステップと、をさらに含む。
条項32。条項29の方法において、生成された宛先ネットワークアドレスは、仮想ネットワークの識別子をさらに含み、仮想ネットワークのための仮想ネットワークアドレスが割り当てられるコンピューティングノードを判定することに少なくとも部分的に基づき、通信の宛先コンピューティングノードを、生成された宛先ネットワークアドレスから識別することを可能にするようにする。
条項33。条項29の方法において、生成された宛先ネットワークアドレスの部分的な宛先ネットワークアドレスは、少なくとも1つの中間ネットワークのトポロジを反映して、複数のコンピューティングノードを含む少なくとも1つの中間ネットワークの一部に対応するようにする。
条項34。条項29の方法において、生成された宛先ネットワークアドレスの部分的な宛先ネットワークアドレスは、複数のコンピューティングノードが共同設置される物理的サブネットワークに対応する。
条項35。条項29の方法において、宛先ネットワークアドレスを自動的に生成するステップは、それぞれが複数のコンピューティングノードを含む複数の仮想ネットワークについての情報を保持する、システムマネージャ・モジュールの制御下において実行され、保持される情報には、複数の仮想ネットワークのための仮想ネットワークアドレスが割り当てられるコンピューティングノードについての情報が含まれる。
条項36。条項29の方法において、宛先ネットワークアドレスを自動的に生成するステップは、ソースコンピューティングノードを含む1つまたは複数のコンピューティングノードの通信を管理する、通信マネージャ・モジュールの制御下において実行され、宛先ネットワークアドレスを自動的に生成するステップには、仮想ネットワークアドレスが割り当てられるコンピューティングノードについての情報を保持するリモートのシステムマネージャ・モジュールと交信するステップが含まれ、交信するステップには、宛先ネットワークアドレスに対応するリモートのシステムマネージャ・モジュールから情報を取得するステップが含まれる。
条項37。条項29の方法において、ソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する受信された指標は、ソースコンピューティングノードにより送信される出力通信であり、出力通信は、宛先コンピューティングノードの仮想ネットワークアドレスを使用して、出力通信の意図される受信者を示し、生成された宛先ネットワークアドレスの指標を提供するステップには、出力通信を少なくとも1つの中間ネットワークに転送して、生成された宛先ネットワークアドレスを使用して通信を少なくとも1つの中間ネットワーク上でルーティングする、ステップが含まれる。
条項38。条項29の方法において、ソースコンピューティングノードから宛先コンピューティングノードに送信される通信に関する受信された指標は、後で通信を送信するときに使用するための宛先コンピューティングノードのアドレシング情報を求めるソースコンピューティングノードからの要求であり、方法は、宛先コンピューティングノードのダミーのアドレシング情報を、生成された宛先ネットワークアドレスにマッピングするステップと、ダミーのアドレシング情報をソースコンピューティングノードに提供するステップと、を含み、生成された宛先ネットワークアドレスの指標を提供するステップには、ソースコンピューティングノードが後で通信を送信し、かつ、提供されたダミーのアドレスシング情報を使用して宛先コンピューティングノードを示した後、提供されたダミーのアドレスシング情報の代わりに、生成された宛先ネットワークアドレスを使用するステップが含まれる。
条項39。条項29の方法において、ソースコンピューティングノードは、第1の物理的コンピュータシステムによりホストされる複数の仮想マシンのうちの1つであり、第1の物理的コンピュータシステムは、顧客の為にプログラムを実行するプログラム実行サービスにより使用される、複数の物理的コンピュータシステムうちの1つであり、ソースコンピューティングノードは、プログラム実行サービスの顧客のうちの1つの為に、1つまたは複数のプログラムを実行し、方法は、第1の物理的コンピュータシステム上で実行して、プログラム実行サービスの為に複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより実行され、少なくとも1つの中間ネットワーク上を、ソースコンピューティングノードから宛先コンピューティングノードに通信を送信することを容易にするステップは、プログラム実行サービスの為に実行され、仮想ネットワークを1つの顧客に提供する。
条項40。条項29の方法において、通信を少なくとも1つの中間ネットワークで宛先コンピューティングノードにルーティングするときに使用するための生成された宛先ネットワークアドレスの指標を提供するステップは、実行されて、少なくとも1つの中間ネットワーク上を送信される1つまたは複数の別個の通信内に通信をカプセル化することなく、仮想ネットワークを少なくとも1つの通信の中間ネットワークにオーバレイさせることを可能にする。
条項41。コンピュータ可読媒体であって、
宛先ノードに対して意図される通信に関する指標を受信するステップであって、宛先ノードは、第1のネットワークアドレス指定プロトコルを使用する第1の仮想ネットワークの一部であり、かつ、第1のネットワークアドレス指定プロトコルを使用して関連する第1の仮想ネットワークアドレスを有し、通信は、別個の第2のネットワークアドレス指定プロトコルを使用する1つまたは複数のネットワークを介して送信される、ステップと、
第2のネットワークアドレス指定プロトコルを使用して、宛先ノードのための宛先ネットワークアドレスを判定するステップであって、宛先ネットワークアドレスは、第2のネットワークアドレス指定プロトコルに基づく、宛先ノードのための部分的な宛先ネットワークアドレスを含み、かつ、第1の仮想ネットワークアドレスの指標を含む、ステップと、
判定された宛先ネットワークアドレスの指標を提供して、1つまたは複数のネットワーク上を、宛先ノードに通信を送信することを可能にするステップと
を含む方法を実行することによって、コンピュータ可読媒体のコンテンツは、コンピュータシステムが通信を管理することを可能にする、コンピュータ可読媒体。
条項42。条項41のコンピュータ可読媒体において、通信は、物理的コンピュータシステムによりホストされる複数の仮想マシンの1つであり、かつ、第1の仮想ネットワークの一部である、送信側ノードからのものであり、1つまたは複数のネットワークは、第2のネットワークアドレス指定プロトコルを使用する、送信側ノードと宛先ノードとの間の少なくとも1つの中間物理的ネットワーク一部であり、方法は、物理的コンピュータシステム上で実行して複数のホストされる仮想マシンにより通信を管理する、仮想マシンマネージャモジュールにより実行され、かつ、判定された宛先ネットワークアドレスを使用して、1つまたは複数のネットワークに通信を転送して、第1の仮想ネットワークを1つまたは複数のネットワーク上にオーバレイされることを可能にするステップをさらに含み、第1のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン4(IPv4)であり、第2のネットワークアドレス指定プロトコルは、インターネット・プロトコルバージョン6(IPv6)であり、宛先ノードのための宛先ネットワークアドレスを判定するステップには、宛先ネットワークアドレスを生成するステップが含まれる。
条項43。条項41のコンピュータ可読媒体において、コンピュータ可読媒体は、コンピュータデバイス内のメモリ、および、コンテンツを含む生成された信号を伝送するデータ伝送媒体のうちの少なくとも1つである。
条項44。条項41のコンピュータ可読媒体において、コンテンツは、命令であって、実行されるときに、コンピュータシステムに方法を実行させる命令である。
条項45。条項41のコンピュータ可読媒体において、コンテンツには、ネットワークアドレスを記憶するときに使用するための1つまたは複数のエントリを含む、1つまたは複数のデータ構造が含まれ、1つまたは複数のエントリには、第1のネットワークアドレス指定プロトコルに従って特定される第1のネットワークアドレスを含む第1のエントリが含まれる。
条項46。コンピューティングノード間の通信を管理するよう構造化されるシステムであって、
1つまたは複数のコンピュータシステムの1つまたは複数のメモリと、
1つまたは複数の中間ネットワークを介した複数のコンピューティングノード間の通信を管理するよう構成される複数の通信マネージャ・モジュールのうちの少なくとも1つであって、各通信マネージャ・モジュールが、1つまたは複数の複数のコンピューティングノードの関連するグループに対する通信を、以下のステップにより、すなわち、
ソースコンピューティングノードから、別の通信マネージャ・モジュールの関連するグループの一部である宛先コンピューティングノードへの、1つまたは複数の通信に関する指標を受信した後(ソースコンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードうちの1つである)、1つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、1つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスは、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュール、に対応する、部分的なネットワークアドレスを含み、判定された宛先ネットワークアドレスは、ソースコンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標をさらに含む、ステップと、
1つまたは複数の中間ネットワーク上を、1つまたは複数の通信を宛先コンピューティングノードに送信するときに使用するための、判定された宛先ネットワークアドレスの指標を提供するステップと
により管理する通信マネージャ・モジュールと、
を備えるシステム。
条項47。条項46のシステムにおいて、通信マネージャ・モジュールにより、1つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップには、各通信マネージャ・モジュールのコンピューティングノードの関連するグループについての情報を保持するリモートのシステムマネージャ・モジュールと交信するステップが含まれ、交信するステップには、ソースコンピューティングノードにより使用される他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードネットワークアドレスのシステムマネージャ・モジュールに指標を提供するステップが含まれ、交信するステップには、システムマネージャ・モジュールから、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先コンピューティングノードを含む、別の通信マネージャ・モジュール、に対応する部分的なネットワークアドレスの指標を受信するステップがさらに含まれ、システムは、複数の通信マネージャ・モジュールと交信するよう構成される1つまたは複数のシステムマネージャ・モジュールをさらに備える。
条項48。条項46のシステムは、複数の通信マネージャ・モジュールを提供する複数のコンピュータシステムをさらに備え、1つまたは複数のコンピュータシステムはそれぞれ、複数のコンピューティングノードのうちの1つをそれぞれ提供する複数の仮想マシンをホストし、かつ、コンピュータシステムの仮想マシンマネージャモジュールの一部として通信マネージャ・モジュールの内の1つを実行し、コンピュータシステムのホストされる仮想マシンにより提供されるコンピューティングノードが、実行通信マネージャ・モジュールのコンピューティングノードの関連するグループであるようにする。
条項49。条項46のシステムにおいて、少なくとも1つの通信マネージャ・モジュールはそれぞれ、1つまたは複数のコンピュータシステムのメモリにおいて実行するためのソフトウェア命令を含む。
条項50。条項46のシステムにおいて、少なくとも1つの通信マネージャ・モジュールのそれぞれは、1つまたは複数の複数のコンピューティングノードのうちの関連するグループに対する出力通信を管理する手段から成り、出力通信は
ソースコンピューティングノードから、別の通信マネージャ・モジュールの関連するグループの一部である宛先コンピューティングノードへの、1つまたは複数の通信に関する指標を受信した後(ソースコンピューティングノードは、通信マネージャ・モジュールの関連するグループのコンピューティングノードのうちの1つである)、1つまたは複数の中間ネットワークにより使用されるネットワークアドレス指定プロトコルに従って特定される、1つまたは複数の通信と共に使用するための宛先ネットワークアドレスを判定するステップであって、判定された宛先ネットワークアドレスは、別の通信マネージャ・モジュールであって、別の通信マネージャ・モジュールの、コンピューティングノードの関連するグループが宛先ノードを含む、別の通信マネージャ・モジュール、に対応する、部分的なネットワークアドレスを含み、判定された宛先ネットワークアドレスは、ソースコンピューティングノードにより使用される別個の他のネットワークアドレス指定プロトコルに従って特定される、宛先ノードのネットワークアドレスの指標をさらに含む、ステップと、
1つまたは複数の中間ネットワーク上を、1つまたは複数の通信を宛先コンピューティングノードに送信するときに使用するための、判定された宛先ネットワークアドレスの指標を提供するステップと
により管理される。
本明細書において、特定の実施形態が例示の目的で記載されたが、本発明の精神および範囲から逸脱することなく、種々の修正がなされ得ることは、上記の記載から理解されるであろう。従って、本発明は、添付の請求項およびここに列挙される要素によるものを除いて、制限されることは無い。加えて、本発明の特定の態様が以下の特定の請求項の形式で表されるが、本発明者は、本発明の種々の態様を任意の利用可能な請求項の形式で熟考する。例えば、現在、本発明のいくつかの態様のみが、コンピュータ可読媒体において具現化されるものとして列挙されるが、他の態様を同様に具現化することができる。