(58)【調査した分野】(Int.Cl.,DB名)
仮想ネットワークサービスの1つまたは複数の構成されたコンピューティング・システムにより、第1の仮想コンピュータネットワークに関するネットワークトポロジを指定した設定情報を前記仮想ネットワークサービスのユーザから受信することであって、前記指定されたネットワークトポロジは、前記第1の仮想コンピュータネットワークのコンピューティングノードの第1のサブセットを伴う第1のサブネットワーク及び前記第1の仮想コンピュータネットワークの前記コンピューティングノードの別個の第2のサブセットを伴う第2のサブネットワークを含む、受信することと、
仮想マシンを、1つまたは複数のホスト物理的コンピューティング・システム上で、前記第1の仮想コンピュータネットワークの前記コンピューティングノードとして、実行させることであって、前記1つまたは複数のホスト物理的コンピューティング・システムは、前記仮想ネットワークサービスによって提供され、別個の物理的な基盤ネットワークによって相互に接続される、実行させることと、
前記1つまたは複数のホスト物理的コンピューティング・システム上で実行される、1つまたは複数の通信マネージャにルーティング情報を提供することと、
前記第1の仮想コンピュータネットワークを、前記第1のサブネットワーク及び前記第2のサブネットワークにセグメント化する、前記指定されたネットワークトポロジの論理的ルータ装置を実装することにより、前記1つまたは複数の通信マネージャに、1つまたは複数の物理的ルータ装置をエミュレートさせることであって、前記指定されたネットワークトポロジに従って、コンピューティングノードの前記第1のサブセットと前記第2のサブセットとの間で送信される通信を変更することを含む、エミュレートさせることと
により受信した設定情報に従って、前記1つまたは複数の構成されたコンピューティング・システムにより、前記第1の仮想コンピュータネットワークを実装することと、
を備えるコンピュータ実行方法。
前記第1の仮想コンピュータネットワークを実装することは、前記基盤ネットワークにおける、前記指定されたネットワークトポロジを物理的に実装することなく、前記指定されたネットワークトポロジをエミュレートすることを含む、請求項1に記載のコンピュータ実行方法。
【発明を実施するための形態】
【0005】
例えば、ユーザまたは他の実体のために提供される仮想コンピュータネットワーク向けなどの管理されたコンピュータネットワークのための論理ネットワーキング機能を提供するための技術が記述される。少なくともいくつかの実施形態において、本技術は、仮想コンピュータネットワークの複数のコンピューティングノードを複数の論理サブネットワークに分離するおよび/または複数のコンピューティングノードの規定されたグループに各々関連づけられる1つ以上の論理ネットワーキング装置を規定する論理ネットワークトポロジーなどの、ユーザのための提供されている仮想コンピュータネットワークのためのネットワークトポロジーを、ユーザが設定する、あるいは別様に規定することを可能にする。ネットワークトポロジーが仮想コンピュータネットワーク用に規定された後、ネットワークトポロジーに対応する論理ネットワーキング機能が、例えば、仮想コンピュータネットワークのためにネットワークトポロジーを物理的に実装せずに、様々な方式で提供され得る。具体的には、少なくともいくつかの実施形態において、仮想コンピュータネットワークの複数のコンピューティングノード間の通信は、よりいっそう詳細に以下で記述されるように、もしそれらが物理的に存在するのであれば規定された論理ネットワーキング装置によって提供されるであろう機能性をエミュレートするように、および/またはそれが物理的に実行されるのであれば規定されたネットワークトポロジーに対応するであろう機能をエミュレートするように、管理される。少なくともいくつかの実施形態において、記述された技術のいくつかまたは全部は、オーバーレイネットワーク管理システムの実施形態によって自動的に実行される。
【0006】
複数のコンピューティングノード間の仮想ローカルネットワークまたは他の仮想コンピュータネットワークを、複数のコンピューティングノードを分割する1つ以上の中間物理ネットワークを用いて、オーバーレイネットワークを生成することなどによって、様々な実施形態において、様々な方法で提供することができる。そのような実施形態において、中間物理ネットワークを、その上にオーバーレイ仮想コンピュータネットワークが提供される基盤ネットワークとして用いることができ、オーバーレイ仮想コンピュータネットワークのコンピューティングノード間のメッセージは中間物理ネットワーク上を通るが、コンピューティングノードは、少なくともいくつかのこのような実施形態において、中間物理ネットワークの存在および使用を認識しない。例えば、複数のコンピューティングノードは、例えば基盤IP(「インターネットプロトコル」)ネットワークアドレス(例えば、中間物理ネットワークによって用いられるネットワークプロトコルを反映するためなどの、IPv4、すなわち「インターネットプロトコルバージョン4」により規定される、またはIPv6、すなわち「インターネットプロトコルバージョン6」により規定されるIPネットワークアドレス)のような、中間物理ネットワーク内のコンピューティングノードの位置に対応する個別の物理的基盤ネットワークアドレスを各々が有し得る。他の実施形態において、仮想コンピュータネットワークがオーバーレイされる基盤ネットワークは、例えば1つ以上の第三者(例えば、インターネットまたはテレコムインフラストラクチャの運用者またはプロバイダにより)により実装される他の仮想コンピュータネットワークのような、1つ以上の他の仮想コンピュータネットワークをそれ自体含むまたは1つ以上の他の仮想コンピュータネットワークから構成され得る。
【0007】
コンピューティングノードが、オーバーレイネットワーク管理システムによって提供され基盤ネットワーク上でオーバーレイされる仮想コンピュータネットワークに加わるために選択される際、各コンピューティングノードは、例えば提供される仮想コンピュータネットワークのために用いられる仮想ネットワークアドレスの範囲からのように、それらのコンピューティングノードの基盤ネットワークアドレスと無関係である提供される仮想コンピュータネットワークのための1つ以上の仮想ネットワークアドレスを割り当てられ得る。少なくともいくつかの実施形態および状況において、提供される仮想コンピュータネットワークは、(例えば、IPv4ネットワークプロトコルを用いる仮想コンピュータネットワーク、およびIPv6ネットワークプロトコルを用いる基盤コンピュータネットワークを備えた)基盤ネットワークによって用いられるネットワークプロトコルとは異なるネットワークプロトコルを、さらに用いてもよい。仮想コンピュータネットワークのコンピューティングノードは、(例えば、通信のための送信先ネットワークアドレスとして送信先コンピューティングノードの仮想ネットワークアドレスを指定することにより、別の送信先コンピューティングノードに通信を送信することにより)仮想ネットワークアドレスを用いて相互通信するが、基盤ネットワークは、(例えば、物理ネットワークルータ装置および基盤ネットワークの他の物理的ネットワーキング装置により)基盤ネットワークアドレスに基づいて経路選択する、または別様に通信を転送するように設定されてもよい。その場合、オーバーレイ仮想コンピュータネットワークは、中間物理ネットワークに入る通信を、基盤ネットワークのネットワークプロトコルに基づく基盤ネットワークアドレスを用いるように変更することにより、および、中間物理ネットワークを除外するから出る通信を、仮想コンピュータネットワークのネットワークプロトコルに基づく仮想ネットワークアドレスを用いるように変更することにより、中間物理ネットワークの端から実現することができる。そのようなオーバーレイ仮想コンピュータネットワークの条件に関する更なる詳細は、以下に含まれる。
【0008】
少なくともいくつかの実施形態において、オーバーレイネットワークマネージャ(「ONM」)システムの実施形態は、例えば1つ以上の地理的な位置(例えば、1つ以上のデータセンタ内の)にあって1つ以上の中間物理ネットワークを介して相互接続される多数のコンピューティングノードを提供して用いることによってなど、顧客および他のユーザにオーバーレイ仮想コンピュータネットワークを提供する。ONMシステムは、通信が中間物理ネットワークに入り、そこから出る際に、様々なオーバーレイ仮想コンピュータネットワークのための通信を管理するために1つ以上の中間物理ネットワークの端にある様々な通信管理モジュールを用いてもよいし、ONMシステムの他のオペレーションを調整するために1つ以上のシステム管理モジュールを用いてもよい。例えば、通信管理マネージャが提供されるオーバーレイ仮想コンピュータネットワークのための通信を管理することを可能にするために、ONMシステムは、例えばコンピューティングノードに関する1つ以上のオーバーレイ仮想ネットワークアドレスに各々のこのようなコンピューティングノードの基盤物理ネットワークアドレスをマッピングすることなど、各仮想コンピュータネットワークのコンピューティングノードに関する諸情報を追跡して用いることができる。よりいっそう詳細に以下で論じられるように、そのようなマッピングおよび他の情報は、様々な実施形態において、中央にまたは分散された方式に含む様々な方式で格納され伝播され得る。
【0009】
さらに、所望の方式でユーザおよび他の実体に仮想コンピュータネットワークを提供するために、ONMシステムは、ユーザまたは他の実体のためにONMシステムによって提供される仮想コンピュータネットワークのための様々な種類の情報を設定するために、ユーザおよび他の実体が少なくともいくつかの実施形態におけるONMシステムと対話することを可能にし、それらの仮想コンピュータネットワークを提供することの一部として、このような設定情報を追跡して用いることができる。複数のコンピューティングノードを有する特定の仮想コンピュータネットワークのための設定情報は、例えば、以下の非排他的なリストを含み得る:仮想コンピュータネットワークの一部として含む複数のコンピューティングノードの量、仮想コンピュータネットワークの一部として含む1つ以上の特定のコンピューティングノード、仮想コンピュータネットワークの複数のコンピューティングノードに関連づける複数の仮想ネットワークアドレスの範囲または他のグループ、特定のコンピューティングノードまたは関連するコンピューティングノードの特定のグループに関連づける特定の仮想ネットワークアドレスと、コンピューティングノードに含まれる、または別様にコンピューティングノードに利用可能であるためのコンピューティング資源の量および/またはコンピューティング資源の型を反映するなどの、仮想コンピュータネットワークの少なくともいくつかのコンピューティングノードの種類、仮ピュータネットワークのコンピューティングノードのいくつかまたはすべてが位置する地理的位置等。さらに、仮想コンピュータネットワークの設定情報は、例えばその目的のためのONMシステムによって提供されるAPI(「アプリケーションプログラムインターフェイス」)と対話するユーザまたは他の実体の実行プログラムによってなど、および/または、その目的のためにONMシステムによって提供されるGUI(「グラフィカルユーザインタフェース」)を対話式に用いるユーザによって、様々な実施形態において様々な方式でユーザまたは他の実体によって指定され得る。
【0010】
さらに、前述のように、管理されたコンピュータネットワークのための論理ネットワーキング機能は、様々な実施形態において様々な方式でONMシステムによって提供され得、ONMシステムは、そのような論理ネットワーキング機能を支援する様々な機能を実行する。例えば、ユーザまたは他の実体は、特定の仮想コンピュータネットワークのネットワークトポロジーに関する諸情報を設定するために、少なくともいくつかの実施形態においてONMシステムと対話し得、ONMシステムは、その仮想コンピュータネットワークを提供する一部として、このようなネットワークトポロジーの設定情報を追跡して用いることができる。仮想コンピュータネットワークのためのネットワークトポロジーの設定情報は、以下の非排他的なリストを含む各種情報を含み得る:第1の指定されるネットワークルータ装置に関連づけられる第1のサブネットワークの一部である複数のコンピューティングノードの第1のサブセットを有するため、および第2の指定されるネットワークルータ装置に関連づけられる第2のサブネットワークの一部である複数のコンピューティングノードの第2のサブセットを有するためなど、仮想コンピュータネットワークの複数のコンピューティングノードの指定された配置と、特定のコンピューティングノードを各々支援するため、および/または、特定の示された機能を実行するためなど、仮想コンピュータネットワークの一部として動作するためである1つ以上の指定されたネットワークルータ装置または他のネットワーキング装置等。
【0011】
ONMシステムは、特定の仮想コンピュータネットワークのために指定されるネットワークトポロジーを支援するために様々な動作を行うことができる。具体的には、少なくともいくつかの実施形態において、ONMシステムは、指定されたネットワークトポロジーのいくつかまたはすべてを物理的に実装することなく、仮想コンピュータネットワークのための指定されたネットワークトポロジーに対応する論理ネットワーキング機能をエミュレートすることができる。一例として、ONMシステムは、複数の通信管理モジュールを用いて、仮想コンピュータネットワークに対して物理的に実装され、通信の経路を選択する、または別様に通信を転送するために用いられれば、ネットワークトポロジーの1つ以上の指定されたネットワーキング装置によって提供されるであろう機能をエミュレートするように、仮想コンピュータネットワークのコンピューティングノードによって(およびコンピューティングノードに)送信された通信を透過的に管理することができる。更に、ONMシステムは、複数の通信管理モジュールを用いて、ネットワーク接続状況の確認(ping)要求やSNMP(「単純ネットワーク管理プロトコル」)クエリなどに応答するためなど、ローカル物理的ネットワーキング装置の方式でコンピューティングノードによってなされたネットワーキング要求に対する応答をエミュレートすることができる。このようにして、ONMシステムは、仮想コンピュータネットワークのための指定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供できるが、仮想コンピュータネットワーク(または関連づけられるユーザまたは他の実体)が、指定されたネットワークトポロジーが仮想コンピュータネットワークのために物理的に実装されていないことを認識することはない。更に、よりいっそう詳細に以下で記述されるように、少なくともいくつかの実施形態において、いかなる単一のモジュールまたは物理デバイスも単独で特定の論理ネットワーキング装置をエミュレートするために関与することがないように、ONMシステムの複数のモジュールは、特定の論理ネットワーキング装置に対応する機能性を提供するために分散した方式で相互に動作してもよい。指定された設定情報に従って、仮想コンピュータネットワークのために論理ネットワーキング機能を提供することに関する付加的な詳細は、以下に含まれる。
【0012】
少なくともいくつかの実施形態において、その間で通信が管理されるコンピューティングノードは、物理的コンピューティングシステムであってもよく、および/または、1つ以上の物理的コンピューティングシステム上で各々提供されるバーチャルマシンであってもよく、通信は、様々な形式のデータ伝送(例えば、メッセージ、パケット、フレーム、ストリーム、等)を含み得る。上述のように、特定の提供されるオーバーレイ仮想コンピュータネットワークのために用いられる、いくつかまたはすべてのコンピューティングノードは、いくつかの実施形態においては、ONMシステムによって、ユーザが使用するために提供され得るが、他の実施形態では、いくつかまたはすべてのこのようなコンピューティングノードが、それらのコンピューティングノードを用いるユーザによって代りに提供され得る。更に、少なくともいくつかの状況において、ONMシステムの実施形態は、プログラム実行サービス(または「PES」)の一部または傘下にあってもよく、PESは、複数の物理ネットワーク(例えば、データセンタ内の複数の物理的コンピューティングシステムおよびネットワーク)上の複数のコンピューティングシステムを用いるプログラム実行サービスなど、サービスの複数の顧客または他のユーザのために複数のプログラムを実行する。少なくともいくつかのこのような実施形態において、コンピューティングノードが属する仮想コンピュータネットワークは、ユーザまたは他の実体のためにプログラムを実行するコンピューティングノードに基づくなど、関連づけられるユーザに基づいて選択されてもよい。さらに、いくつかの状況において、ONMシステムの実施形態は、設定可能なネットワークサービス(または「CNS」)の一部またはそうでなければ傘下にあってもよく、CNSは、複数の物理ネットワーク(例えば、データセンタ内の複数の物理的コンピューティングシステムおよびネットワーク)上で提供される複数のコンピューティングシステムで、クラウドコンピューティング技術を用いることによってなど、サービスの複数の顧客または他のユーザに対して設定可能な非公開のコンピュータネットワークを提供する。
【0013】
上述のように、仮想コンピュータネットワークは、いくつかの実施形態において、基盤ネットワークとして1つ以上の中間物理ネットワークを用いるオーバーレイネットワークとして提供されてもよく、1つ以上のこのようなオーバーレイ仮想コンピュータネットワークを様々な実施形態における様々な方法で基盤ネットワーク上で実現することができる。例えば、少なくともいくつかの実施形態において、オーバーレイ仮想コンピュータネットワークのノード間の通信は、1つ以上の中間物理ネットワークのネットワークプロトコルのために用いられるより大規模の物理ネットワークアドレス空間において、仮想コンピュータネットワークのコンピューティングノードのための仮想ネットワークアドレス情報(例えば、送信先コンピューティングノードの仮想ネットワークアドレス)を組み込むことによってなど、通信をカプセル化することなく、基盤ネットワーク上にそれら通信を送ることにより管理される。1つの例示として、仮想コンピュータネットワークは、32ビットのIPv4ネットワークアドレスを用いて実行されてもよく、それらの32ビットの仮想ネットワークアドレスは、(例えば、処理状態を把握しないIP/ICMPトランスレーション、またはSNTを用いて)通信パケットまたは他のデータ伝送をリヘッダリングする(reheadering)ことによって、またはそうでなければそれらのために設定された第1のネットワークプロトコルから別の第2のネットワークプロトコルに変換するように、このようなデータ伝送を変更することによってなど、1つ以上の中間物理ネットワークによって用いられる128ビットのIPv6ネットワークアドレスの一部として組み込まれてもよい。別の例示として、同一のネットワークアドレッシングプロトコル(例えばIPv4またはIPv6)を用いて仮想コンピュータネットワークおよび基盤コンピュータネットワークの双方が実現されてもよいし、仮想ネットワークアドレスを用いて提供されるオーバーレイ仮想コンピュータネットワークを介して送信されるデータ伝送が、伝送が基盤ネットワーク上に送信されている間に、基盤ネットワークに対応する様々な物理ネットワークアドレスを用いるように変更され得るが、元の仮想ネットワークアドレスは、変更されたデータ伝送において格納され、またはそうでなければ基盤ネットワークを出る場合にデータ伝送がオリジナルの形式に復元され得るように追跡される。他の実施形態において、オーバーレイコンピュータネットワークの少なくともいくつかは、通信のカプセル化を用いて実現されてもよい。SIITに関する更なる詳細は、その全体が参考されることにより援用される「コメント要求2765−処理状態を把握しないIP/ICMP変換アルゴリズム」2000年2月、tools<dot>ietf<dot>org<slash>html<slash>rfc2765(tools.ietf.org/html/rfc2765)(ここで〈.〉および〈/〉はそれらの名前を持った対応する文字と置き換えられる)にて得ることができる。より一般的には、いくつかの実施形態において、第2の基盤ネットワークを用いて、第1のオーバーレイネットワークを実現する場合、第1のネットワークアドレッシングプロトコルによる第1のオーバーレイネットワークのために指定されるNビットネットワークアドレスは、第2のネットワークアドレッシングプロトコルによる第2の基盤ネットワークのために指定される別のMビットネットワークアドレスの一部として組み込まれてもよい。ここで「N」および「M」は、ネットワークアドレッシングプロトコルに対応する任意の整数である。さらに、少なくともいくつかの実施形態において、Nビットネットワークアドレスは、例えば、もし対象とするNビットネットワークアドレスのグループがより小さなビット数を用いて表わし得る場合(例えば、Lビットのラベルまたは識別子が、特定のNビットネットワークアドレスに対してマッピングされており、別のネットワークアドレスに組み込まれ、「L」は「N」未満である場合)などでは、別のネットワークアドレスに、その別のネットワークアドレスのNビットよりも多い、または少ないビット数を使用して組み込まれてもよい。
【0014】
様々な利益が、よりいっそう詳細に以下で論じられるように、通信をカプセル化せず、または物理的基盤ネットワークの物理的ネットワーキング装置を設定せずに、物理的基盤ネットワーク上での仮想コンピュータネットワークのオーバーレイを可能にすることを含む、下層にある物理的基盤ネットワークのための基盤ネットワークアドレスに仮想ネットワークアドレス情報を組み込むことから得られ得る。更に、他の情報を、コンピューティングノード間の通信のために、少なくともいくつかの実施形態および状況において、より大規模な物理ネットワークアドレススペースに同様に組み込むことができ、その情報には、それらのコンピューティングノードを含む特定の仮想コンピュータネットワーク(例えば、ユーザまたは他の実体のための仮想コンピュータネットワークであって、それらのコンピューティングノードがそのユーザまたは実体のために動作するもの)に対する特有の識別子などが含まれる。オーバーレイネットワークの使用を介した、このような仮想コンピュータネットワークの提供に関する更なる詳細な記述は、以下に含まれる。
【0015】
更に、提供される仮想コンピュータネットワークのための設定されたネットワークトポロジーの管理に加えて、ONMシステムは、記載される技術を用いて、様々な状況で、他の様々な利益を提供することができ、それは、同じ仮想コンピュータネットワークに属する他のコンピューティングノードに対する特定の仮想コンピュータネットワークのコンピューティングノードへのおよび/またはコンピューティングノードからの通信を限定することなどである。このようにして、複数の仮想コンピュータネットワークに属するコンピューティングノードが、1つ以上の中間物理ネットワークの一部を共有でき、その一方で特定の仮想コンピュータネットワークのコンピューティングノードのためのネットワーク隔離をなお維持することができる。さらに、記載された技術の使用によって、ユーザが仮想コンピュータネットワークのサイズを動的に変更すること(例えば、より多い、またはより少ないコンピューティング資源に対する現在の必要量を反映するようにコンピューティングノードの量を動的に変更すること)を可能にすることなどのように、コンピューティングノードを容易に仮想コンピュータネットワークに追加するおよび/または仮想コンピュータネットワークから削除できるようになる。更に、記載された技術の使用はまた、下層にある基盤ネットワークへの変更を支援する。例えば、下層にある基盤ネットワークが更なる地理的な位置で更なるコンピューティングノードを含むように拡張される場合、下層にある基盤ネットワークが、他の既存の基盤ネットワークコンピューティングノードと同一の方式でそれらの追加のコンピューティングノードのための基盤ネットワークアドレスへのおよび基盤ネットワークアドレスからの通信をルーティングするので、提供されている既存のまたは新たな仮想コンピュータネットワークは、シームレスにそれらの追加のコンピューティングノードを用いることができる。少なくともいくつかの実施形態において、下層にある基盤ネットワークは、様々な位置でのコンピューティングノード間のネットワーク待ち時間に関係なく、任意の大きさ(例えば、複数の国々または大陸にわたる)であってもよい。
【0016】
例示の目的のために、特定の種類のコンピューティングノード、ネットワーク、通信、ネットワークトポロジーおよびコンフィギュレーション動作が実行される、いくつかの実施形態が以下に記載される。これらの例は、例示の目的のために提供され、簡潔さのために簡易化されている。また、本発明の技術は、様々な他の状況で用いることができ、それらのいくつかは以下で論じられる。
【0017】
図1は、仮想コンピュータネットワークに属するコンピューティングノード間の通信を設定および管理する実施形態の例を図示するネットワーク図であり、通信は、コンピューティングノードに対して透過的に、1つ以上の中間物理ネットワーク上にオーバーレイされる。この例で、通信の設定および管理は、ONMシステムの例の実施形態のシステム管理モジュールおよび多重通信管理モジュールによって容易になる。この例のONMシステムは、例えば、公にアクセス可能なプログラム実行サービス(図示せず)および/または公にアクセス可能で設定可能なネットワークサービス(図示せず)と協働して用いられてもよい。またはその代りに、1つ以上の実体のための、任意の仮想コンピュータネットワークの使用と共に等(例えば企業または他の組織の異なる部署のための、その組織のプライベートネットワーク上の複数の仮想コンピュータネットワークをサポートすること等)、他の状況で用いることができる。
【0018】
図示する例は、ONMシステムのために運用される複数の物理的コンピューティングシステムを有する例示のデータセンタ100を含む。例示のデータセンタ100は、データセンタ100の外部のグローバルインターネット135に接続される。データセンタ100は、プライベートネットワーク140を介して1つ以上のコンピューティングシステム145aに、各々が複数のコンピューティングシステム(図示せず)を有する1つ以上の他のグローバルにアクセス可能なデータセンタ160に、および1つ以上の他のコンピューティングシステム145bに、アクセスを提供する。グローバルインターネット135は、例えば、インターネットなどのような(恐らく様々な別の当事者によって運用される)ネットワークの公にアクセス可能なネットワークであり得、プライベートネットワーク140は、例えば、プライベートネットワーク140に対して、その外部のコンピューティングシステムから完全にまたは部分的にアクセス不能な企業ネットワークであり得る。コンピューティングシステム145bは、例えば、(例えば、電話回線、ケーブルモデム、デジタル加入者回線(「DSL」)、セルラーネットワークまたは他の無線接続等を介して)インターネットに各々が直接接続するホームコンピューティングシステムまたはモバイルコンピューティング装置であり得る。
【0019】
例示のデータセンタ100は、複数の物理的コンピューティングシステム105a〜105dおよび155a〜155n、ならびに、関連するコンピューティングシステム155a〜155nのための通信を管理するために1つ以上の他のコンピューティングシステム(図示せず)上で実行される通信管理モジュール150と、1つ以上のコンピューティングシステム(図示せず)上で実行されるシステム管理モジュール110とを含む。この例では、物理的コンピューティングシステム105a〜105dは、各々多重仮想記憶コンピューティングノードのホストとして動作し、関連する仮想マシン(「VM」)通信管理モジュールを(例えば、物理的コンピューティングシステムのための仮想マシンハイパーバイザーモニタの一部として)含み、例えばホストコンピューティングシステム105a上にはVM通信管理モジュール109aおよび仮想マシン107aなどを含み、ホストコンピューティングシステム105d上にはVM通信管理モジュール109dおよび仮想マシン107dなどを含む。物理的コンピューティングシステム155a〜155nは、この例では、いかなる仮想マシンをも実行せず、したがって、その各々は、ユーザのために1つ以上のソフトウエアプログラムを直接実行するコンピューティングノードとして機能することができる。関連するコンピューティングシステム155a〜155nのための通信を管理する通信管理モジュール150は、例えば、プロキシコンピュータ装置、ファイアウォール装置、またはネットワーキング装置(例えば、スイッチ、ルータ、ハブ、等)などの様々な形式を有し得、それを介して物理的コンピューティングシステムに、およびそれから通信が伝わる。他の実施形態において、データセンタにおける物理的コンピューティングシステムの全てが仮想マシンのホストとして動作してもよく、全てが動作しなくてもよい。
【0020】
この例示のデータセンタ100は、さらにスイッチ115a〜115b、エッジルータ装置125a〜125c、およびコアルータ装置130a〜130cなどのような、複数の物理的ネットワーキング装置を含む。スイッチ115aは、物理的コンピューティングシステム105a〜105cを含む物理的サブネットワークの一部であり、エッジルータ125aに接続される。スイッチ115bは、物理的コンピューティングシステム105dおよび155a〜155n、ならびに通信管理モジュール150およびシステム管理モジュール110を提供するコンピューティングシステムを含む別の物理的サブネットワークの一部であり、エッジルータ125bに接続される。スイッチ115a〜115bによって確立された物理的サブネットワークは、次いで、エッジルータ125a〜125cおよびコアルータ130a〜130cを含む中間相互接続ネットワーク120を介して互いにおよび他のネットワーク(例えば、グローバルインターネット135)に接続される。エッジルータ125a〜125cは、2つ以上のサブネットワークまたはネットワークの間のゲートウエイを提供する。例えば、エッジルータ125aは、スイッチ115aによって確立された物理的サブネットワークと相互接続ネットワーク120との間のゲートウエイを提供し、一方エッジルータ125cは相互接続ネットワーク120とグローバルインターネット135との間のゲートウエイを提供する。コアルータ130a〜130cは、相互接続ネットワーク120内の通信を、このようなデータ伝送の特性(例えば、ソースおよび/または送信先アドレス、プロトコル識別子、等を含むヘッダ情報)および/または相互接続ネットワーク120それ自体の特性(例えば、物理ネットワークトポロジー等に基づいてルーティングする)に基づいて、必要に応じて経路を選択するまたはそうでなければパケットまたは他のデータ伝送を転送することによるなどして管理する。
【0021】
図示するシステム管理モジュールおよび通信管理モジュールは、関連するコンピューティングノードに(から)送信される通信を設定し、権限を与え、また別様に管理するために、記載された技術のいくつかを少なくとも実行することができ、それには、コンピューティングノードの様々なものを使用して提供される1つ以上の仮想コンピュータネットワークのための様々な論理ネットワーキング機能を提供することを支援することを含む。例えば、通信管理モジュール109aは、関連する仮想マシンコンピューティングノード107aを管理する。通信管理モジュール109dは、関連される仮想マシンコンピューティングノード107dを管理する。そして、他の通信管理モジュールの各々は、1つ以上の他の関連するコンピューティングノードのグループのための通信を同様に管理することができる。図示する通信管理モジュールは、相互接続ネットワーク120上などの基盤ネットワークとして用いられる、1つ以上の中間物理ネットワーク上に特定の仮想ネットワークをオーバーレイするようにコンピューティングノード間の通信を設定してもよい。更に、特定の仮想ネットワークは、例えば、1つ以上の他のデータセンタ160がまたONMシステムの例による使用のために利用可能なコンピューティングノードを提供し、特定の仮想ネットワークが、2つ以上の別の地理的な位置の2つ以上のこのようなデータセンタでコンピューティングノードを含むならば、状況に応じていくつかの実施形態におけるデータセンタ100を越えて拡張されてもよい。このような複数のデータセンタ、または1つ以上のコンピューティングノードの他の地理的な位置は、1つ以上の公衆網を直接介して、(図示されていない)私的な接続(例えばいかなる第三者、VPN、または公衆網等上で私的な接続を提供する他のメカニズムとも共有されない専用の物理的接続)を介して、などを含む様々な方式で相互接続されてもよい。さらに、ここでは図示されないが、他のこのようなデータセンタまたは他の地理的な位置は、そのデータセンタまたは他の地理的な位置上でコンピューティングシステムのための通信を管理する1つ以上の他の通信管理モジュール、ならびにデータセンタ100および他の任意のこのようなデータセンタ160へのグローバルインターネット135を各々含んでもよい。
【0022】
さらに、特定の仮想コンピュータネットワークは、例えば、データセンタ100での1つ以上の他の通信管理モジュールが、エッジルータ125cとグローバルインターネット135との間に配置される、またはその代りに、データセンタ100の外部の1つ以上の他の通信管理モジュールに基づくならば(例えば、グローバルインターネット135およびプライベートネットワーク140上でコンピューティングシステム145aのための通信を管理するように、別の通信管理モジュールがプライベートネットワーク140の一部になるならば)、他の実施形態における他の方式にデータセンタ100を越えて状況に応じて拡張されてもよい。したがって、例えば、プライベートネットワーク140を運用する組織がデータセンタ100のコンピューティングノードの1つ以上にその私的なコンピュータネットワーク140を仮想的に拡張することを要望する場合、プライベートネットワーク140の一部として(例えば、プライベートネットワーク140とグローバルインターネット135との間のインタフェースの一部として)1つ以上の通信管理モジュールを実行することにより、そのようにすることができる。このようにして、プライベートネットワーク140内のコンピューティングシステム145aは、それらのデータセンタコンピューティングノードがプライベートネットワークの一部であるかのように、それらのデータセンタコンピューティングノードと通信することができる。
【0023】
したがって、1つの例示として、コンピューティングシステム105a上の仮想マシンコンピューティングノード107aの1つ(この例では、仮想マシンコンピューティングノード107a1)は、仮想ローカルネットワークのための仮想ネットワークアドレスを表わすために用いられるIPv4ネットワークプロトコルによるなどして、コンピューティングシステム105d上の仮想マシンコンピューティングノード107dの1つ(この例では、仮想マシンコンピューティングノード107d1)同一の仮想ローカルコンピュータネットワークの一部であってもよい。そして、仮想マシン107a1は、その送信先仮想マシンコンピューティングノードのための仮想ネットワークアドレスを指定することによるなどして、送出方向の通信(図示せず)を送信先仮想マシンコンピューティングノード107d1に方向づけてもよい。通信管理モジュール109aは、送出方向の通信を受信し、少なくともいくつかの実施形態において、送信元仮想マシンコンピューティングノード107a1および/または送信先仮想マシンコンピューティングノード107d1に関してあらかじめ取得された情報(例えば、コンピューティングノードが関連づけられる仮想ネットワークおよび/または実体に関する情報)に基づいて、および/またはシステム管理モジュール110と動的に対話することによる(例えば、認証判定を取得するために、いくつかまたはすべてのこのような情報を取得するために、など)などのように、送出方向の通信の送信に権限を与えるべきか否かを判定する。コンピューティングノードに対して無許可の通信を送らないことによって、実体の仮想コンピュータネットワークのネットワーク隔離およびセキュリティが向上される。
【0024】
権限が送出方向の通信に与えられることを通信管理モジュール109aが判定する(または、このような認証判定を実行しない)場合、モジュール109aは、通信のための送信先仮想ネットワークアドレスに対応する実際の物理ネットワーク位置を決定する。例えば、通信管理モジュール109aは、システム管理モジュール110と動的に対話することにより、送信先仮想マシン107d1の仮想ネットワークアドレスのために用いる実際の送信先ネットワークアドレスを決定してもよいし、または(例えば、仮想マシン107a1がアドレス解決プロトコルまたはARPを用いて指定する要求などのような、その送信先仮想ネットワークアドレスに関する情報のための送信元仮想マシン107a1からの要求に応じて)その情報をあらかじめ判定して格納していてもよい。そして、通信管理モジュール109aは、例えば、通信管理モジュール109dがある範囲の複数のこのような実際の基盤ネットワークアドレスに関連づけられる場合など、実際の基盤ネットワークアドレスを用いて通信管理モジュール109dに方向づけるように、再ヘッダ化(re-header)する、または別様に送出方向の通信を変更する。
図2A〜
図2Dは、仮想ネットワークのために指定された論理ネットワーキング機能をエミュレートすることを含む、いくつかの実施形態におけるこのような通信管理を行う例を提供する。
【0025】
通信管理モジュール109dがこの例において相互接続ネットワーク120を介して通信を受信する際、通信のための仮想送信先ネットワークアドレスを(例えば、通信から仮想送信先ネットワークアドレスを抽出することにより)取得し、通信が方向づけられる通信管理モジュール109dによって管理された仮想マシンコンピューティングノード107dを決定する。通信管理モジュール109dは、次に、送信先仮想マシンコンピューティングノード107d1のために権限が通信に与えられるか否かを決定する。このような認証動作の例を
図2A〜
図2Dの例において詳述に論じる。権限が与えられると通信が判定する(または、通信管理モジュール109dはこのような認証判定を実行しない)ならば、仮想コンピュータネットワークのための適合する仮想ネットワークアドレスを用いて送信先仮想マシンコンピューティングノード107d1に方向づけられるように、通信管理モジュール109dは、送信元仮想マシンコンピューティングノード107a1の仮想ネットワークアドレスをソースネットワークアドレスとして用いることによって、および送信先仮想マシンコンピューティングノード107d1の仮想ネットワークアドレスを送信先ネットワークアドレスとして用いることによるなどして、受入方向の通信を再ヘッダ化する、または別様に変更する。そして、通信管理モジュール109dは、送信先仮想マシンコンピューティングノード107d1に、変更された通信を転送する。少なくともいくつかの実施形態において、送信先仮想マシンに受入方向の通信を転送する前に、通信管理モジュール109dはまた、よりいっそう詳細に他のところで論じられるように、セキュリティと関連する更なるステップを実行してもよい。
【0026】
さらに、
図1には図示されていないが、いくつかの実施形態において、様々な通信管理モジュールは、指定された方式で仮想コンピュータネットワークのコンピューティングノード間の通信を管理することにより、および仮想コンピュータネットワークのコンピューティングノードによって送信された他の型の要求に応答することによるなどして、仮想コンピュータネットワークのための指定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供するために更なる動作をし得る。例えば、
図1の実施形態の例では相互接続ネットワーク120によって物理的コンピューティングシステム105a上のコンピューティングノード107a1から分離されているが、物理的コンピューティングシステム105d上の仮想マシンコンピューティングノード107d1は、コンピューティングノード107a1と同一の仮想コンピュータネットワークの論理的サブネットワークの一部であるように(例えば、いかなる指定された論理ルータ装置によっても分割されないように)設定されてもよい。逆に、
図1の実施形態の例の物理的コンピューティングシステム105a上の仮想マシンコンピューティングノード107a1に対する物理的コンピューティングシステム105c上の仮想マシンコンピューティングノード107c1の物理的近接(すなわち、物理的ルータ装置を介在せずに同一の物理的サブネットワークの一部である)にもかかわらず、コンピューティングノード107c1は、コンピューティングノード107a1とは異なる仮想コンピュータネットワークの別個の論理的サブネットワークの一部であるように設定されてもよい(例えば、1つ以上の論理的な指定されたルータ装置(図示せず)によって分割されるように設定されてもよい)。もしそうであれば、コンピューティングノード107a1および107d1は、指定されたネットワークトポロジー内の単一のサブネットワークの一部であるように設定されるので、コンピューティングノード107a1からコンピューティングノード107d1に通信を送信する先の例は、いかなる介在する論理的ルータ装置の機能のエミュレートをもせずに(通信を転送するための基盤相互接続ネットワーク120内の複数の物理的ルータ装置の使用にもかかわらず)、先に記載された方式で実行され得る。
【0027】
しかしながら、コンピューティングノード107a1はコンピューティングノード107c1に追加の通信を送信する場合、ホストコンピューティングシステム105aおよび105c上の通信管理モジュール109aおよび/または109cは、コンピューティングノード107a1および107c1を分割するために指定されたネットワークトポロジーで設定された1つ以上の論理的な指定されたルータ装置に対応する付加的な機能を実行してもよい。例えば、ソースコンピューティングノード107a1は、コンピューティングノード107a1に対してローカルであるように設定される第1の論理的な指定されたルータ装置に対して最初にそれを方向づけるような(例えば、第1の論理的な指定されたルータ装置に対応する追加の通信のヘッダにおいて仮想ハードウェアアドレスを含むことによって)、方式で、追加の通信を送信してもよく、第1の論理的な指定されたルータ装置は、指定された論理的ネットワークトポロジーを介して送信先コンピューティングノード107c1に向かって追加の通信を転送することが要求される。その場合、ソース通信管理モジュール109aは、(例えば、追加の通信のヘッダに用いられる仮想ハードウェアアドレス上に基づいて)論理的な第1のルータ装置に追加の通信の転送を検出してもよいし、そうでなければ、仮想コンピュータネットワークのために設定されたネットワークトポロジーを認識して、コンピューティングノード107a1および107c1を分割するために指定されたネットワークトポロジーで設定される論理的な指定されたルータ装置のいくつかまたはすべての機能性をエミュレートするように動作を行うことができる。例えば、追加の通信を転送する各々の論理的ルータ装置は、通信のためのTTL(「有効期限」)ホップ値を変更する、送信先コンピューティングノードへの経路上で追加の通信の次に対象とする送信先を示すように通信のために指定される仮想送信先ハードウェアアドレスを変更する、および/またはそうでなければ通信ヘッダを変更するなどの動作を行うことが要求され得る。その場合、ソース通信管理モジュール109aは、送信先コンピューティングノード107c1への提供のための基盤ネットワーク上で(この場合、物理的スイッチデバイス115aを介して)送信先通信管理モジュール109cに追加の通信を転送する前にそれらの機能のいくつかまたはすべてを実行してもよい。あるいは、送信された追加の通信のための論理ネットワーキング機能を提供するためのいくつかまたはすべてのこのような追加の機能は、追加の通信が通信管理モジュール109aによって通信管理モジュールに109c転送された後、送信先通信管理モジュール109cによってその代りに実行されてもよい。
図2Cの例は、論理ネットワーキング機能を提供する例に関する更なる詳細な記述を提供する。
【0028】
記載された技術を用いて論理ネットワーキング機能を提供することによって、ONMシステムは様々な利益を提供する。例えば、様々な通信管理モジュールがオーバーレイ仮想ネットワークを管理し、論理ネットワーキング装置をエミュレートすることができるので、指定されたネットワーキング装置および他のネットワークトポロジーは、提供されている仮想コンピュータネットワークのために物理的に実装される必要がなく、したがって、特定の構成されたネットワークトポロジーを支援するために相互接続ネットワーク120またはスイッチ115a〜115bに対して対応する変更は必要としない。それにもかかわらず、仮想コンピュータネットワークのコンピューティングノードおよびソフトウエアプログラムが、仮想コンピュータネットワークのための特定のネットワークトポロジーを要求するように設定されている場合、そのネットワークトポロジーの出現は、それにもかかわらず、記載された技術によってそれらのコンピューティングノードのために透過的に提供されてもよい。
【0029】
図2A〜
図2Cは、
図1または他の状況におけるコンピューティングノードおよびネットワークによって用いられ得るなどの、1つ以上の物理ネットワーク上でオーバーレイネットワークを介して生じるコンピューティングノード間の通信を管理することに関連した更なる説明の詳細な記述を含む例をさらに図示する。具体的には、
図2Aは、基盤ネットワークとして1つ以上の中間相互接続ネットワーク250を用いることにより、互いに通信できる様々なコンピューティングノード205および255の例を図示する。この例では、相互接続ネットワーク250は、IPv4仮想コンピュータネットワークがオーバーレイされるIPv6基盤ネットワークであるが、他の実施形態においては相互接続ネットワーク250およびオーバーレイ仮想コンピュータネットワークは、同一のネットワークプロトコル(例えば、IPv4)を用いてもよい。さらに、この実施形態の例において、コンピューティングノードは、複数の別の実体のために運用され、システム管理モジュール290は、特定のコンピューティングノードの特定の実体および仮想コンピュータネットワークとの関連を管理して、仮想コンピュータネットワークのために指定された様々な設定情報を追跡する。
図2Aの例示のコンピューティングノードは、例示の実体Zのために実行される4つのコンピューティングノードと、実体Zのために提供される対応する仮想コンピュータネットワークの一部を含み、それらコンピューティングノードは、コンピューティングノード205a、205c、255aおよび255bである。さらに、コンピューティングノード205bおよび他のコンピューティングノード255などのような他のコンピューティングノードが、他の実体のために運用され、他の提供される仮想コンピュータネットワークに属する。
【0030】
この例においては、コンピューティングノード、モジュールおよび相互接続ネットワーク間の物理的相互連結は図示されないが、この例では、コンピューティングノード205は、関連する通信管理モジュールR210によって管理され物理的に接続され、コンピューティングノード255は、関連する通信管理モジュールS260によって管理され物理的に接続され、システム管理モジュール290と同様に、ONM通信管理モジュール210および260は、相互接続ネットワーク250に対して物理的に接続される。一例として、コンピューティングノード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、または他のデータセンタまたは地理的な位置でのコンピューティングノードに対応するような、別の物理的コンピューティングシステム(例えば、別のデータセンタ160やコンピューティングシステム145aなどでのコンピューティングシステム)であってもよい。
【0031】
図2Aの通信管理モジュールの各々は、(通信管理モジュールがそれらの関連づけられるコンピューティングノードに代わって管理する)複数の物理的基盤ネットワークアドレスのグループに関連づけられる。例えば、通信管理モジュールRは、(2の56乗のユニークなIPv6アドレスを表す)XXXX:XXXX:XXXX:XXXA:0100:0000:0000:0000からXXXX:XXXX:XXXX:XXXA:01FF:FFFF:FFFF:FFFFまでの(16進の)128ビットのアドレスに対応する「::0A:01/72」のIPv6ネットワークアドレス範囲に関連づけられるように示される。ここで、各「X」は、特定の状況のための適切な任意の16進の文字を表し得る(例えば、
図2Dに関してよりいっそう詳細に論じられるように、最初の64のビットは特定の組織およびネットワークトポロジーに対応する)。相互接続ネットワーク250は、その範囲内の送信先ネットワークアドレスで通信管理モジュールRに任意の通信を転送する。したがって、最初の72ビットの範囲を指定されると、通信管理モジュールRは、管理するコンピューティングノードを表わし、かつ送信先ネットワークアドレスがその範囲にある受入方向の通信に対してどのように処理するのかを決定するために、残りの利用可能な56ビットを用いることができる。
【0032】
図2Aに示される例を目的として、コンピューティングノード205a、205c、255aおよび255bは、実体Zのための単一の仮想コンピュータネットワークの一部であり、「10.0.0.2」「10.0.5.1」「10.0.0.3」「10.1.5.3」のIPv4仮想ネットワークアドレスをそれぞれ割り当てている。コンピューティングノード205bが実体Yのための別個の仮想コンピュータネットワークの一部であるので、コンピューティングノード205aと同一の仮想ネットワークアドレスを混同しないで共有することができる。この例で、コンピューティングノードA205aは、コンピューティングノードG255a(仮想コンピュータネットワークのためのネットワークトポロジーにおける単一で共通のローカル物理的サブネットワーク(図示せず)の一部であるようにこの例では設定される)と通信することを求め、この例における相互接続ネットワーク250および通信管理モジュールは、コンピューティングノードAおよびGに対して透過的である。具体的には、コンピューティングノードAおよびGの物理的分離にもかかわらず、通信管理モジュール210および260は、それらのコンピューティングノード間の通信のための物理相互接続ネットワーク250上で実体Zのための仮想コンピュータネットワークをオーバーレイするように動作する。その結果、実際のローカルネットワークの欠如は、コンピューティングノードAおよびGに対して透過的である。
【0033】
コンピューティングノードGに対して通信を送信するために、図示する実施形態において通信管理モジュールRの存在を認識しないにもかかわらず(すなわち、コンピューティングノードAは、ローカルサブネットワーク上のノードを接続することをコンピューティングノードAが信じる指定されたスイッチ素子を介してなど、ローカルサブネットワーク上の他のすべてのノードに対してブロードキャストメッセージを送信していると信じる)、コンピューティングノードAは、通信管理モジュールR210と各種メッセージ220を交換する。具体的には、この例では、コンピューティングノードAは、第1に、コンピューティングノードGのための仮想ネットワークアドレス(すなわち「10.0.0.3」)を含み、コンピューティングノードGのための対応するハードウェアアドレス(例えば、48ビットのMACアドレス)を要求するARPメッセージ要求220−aを送信する。通信管理モジュールRは、ARP要求220−aを傍受し、コンピューティングノードGのための仮想ハードウェアアドレスを含むなりすましのARP応答メッセージ220−bによりコンピューティングノードAに対して応答する。
【0034】
応答メッセージを使用するためにコンピューティングノードGのための仮想ハードウェアアドレスを取得するために、通信管理モジュールRは、まず、対応するIPv6の実際の物理的基盤ネットワークアドレスに対して仮想ハードウェアアドレスをマッピングする情報のローカルストレージ212をチェックするが、仮想ハードウェアアドレスの各々は、特定の要素の仮想ネットワークのためのIPv4仮想ネットワークアドレスにも対応する。ローカルストレージ212がコンピューティングノードGのためのエントリを含んでいないならば(例えば、コンピューティングノード205のどれもが以前にコンピューティングノードGと通信していないならば、関連づけられる終了時刻などに基づいて、コンピューティングノードGのためのローカルストレージ212内の前の入力が終了しているならば)、通信管理モジュールRは、コンピューティングノードAのためにコンピューティングノードGのための対応する実際のIPv6物理的基盤ネットワークアドレスを取得するためのシステム管理モジュール290と対話する(225)。具体的には、この例では、システム管理モジュール290は、例えば、要素および仮想コンピュータネットワークのためのコンピューティングノード上のプログラムを実行することを開始によって、またはそうでなければこのような提供情報を取得することによって、各コンピューティングノードが現実に位置するところと、コンピューティングノードが、どの実体および/または仮想コンピュータネットワークに属するかを特定する提供情報292を保持する。
図2Bに関してよりいっそう詳細に論じられるように、システム管理モジュールは、コンピューティングノードGの実際のIPv6物理的基盤ネットワークアドレスに対するコンピューティングノードAのための通信管理モジュールRからの要求が有効であるか否か(コンピューティングノードAは、コンピューティングノードGと通信することを認証されるか否かを含む)を決定して、そうである場合、実際のIPv6物理的基盤ネットワークアドレスを提供する。
【0035】
通信管理モジュールRは、システム管理モジュール290からコンピューティングノードGのための実際のIPv6物理的基盤ネットワークアドレスを受信し、後の使用のために(状況に応じて終了時刻および/または他の情報により)マッピング情報212の一部としてのコンピューティングノードGのための新たなエントリの一部として、この受信情報を格納する。さらに、この例で、通信管理モジュールRは、(例えば、通信管理モジュールRによって管理されるコンピューティングノードに対してローカルでユニークな識別子を生成することにより)コンピューティングノードGのために用いられるダミーの仮想ハードウェアアドレスを決定し、新たなマッピング情報エントリの一部として受信される実際のIPv6物理的基盤ネットワークアドレスと共にそのダミーの仮想ハードウェアアドレスを格納し、応答メッセージ220−bの一部としてコンピューティングノードAに対してダミーの仮想ハードウェアアドレスを提供する。このようなマッピング情報212を維持することによって、コンピューティングノードAからコンピューティングノードGへの後の通信が、システム管理モジュール290とのさらなる対話を伴わないで、通信管理モジュールRによって以前に提供されたダミーの仮想ハードウェアアドレスの使用に基づいて、通信管理モジュールRによって認証され得る。他の実施形態において、コンピューティングノードGのために通信管理モジュールRによって用いられるハードウェアアドレスは、例えば、システム管理モジュール290が様々なコンピューティングノード(例えば、仮想マシンコンピューティングノードに対して割り当てられた仮想ハードウェアアドレス、コンピューティングノードとして機能するコンピューティングシステムに対して割り当てられた実際のハードウェアアドレス、など)によって用いられるハードウェアアドレスに関して情報をさらに維持し、対話225の一部としてコンピューティングノードGによって用いられるハードウェアアドレスを通信管理モジュールRに対して提供するならば、その代りにダミーアドレスではなくてもよい。このような実施形態において、異なる仮想ネットワーク上のコンピューティングノードが同一の仮想ハードウェアアドレスを用いるならば、通信管理モジュールRは、コンピューティングノードハードウェアアドレスおよび仮想コンピュータネットワークの各々の組み合わせを対応する基盤ネットワークアドレスにマッピングするように機能することができる。
【0036】
他の実施形態において、通信管理モジュールRは、実体Zの仮想コンピュータネットワークの一部として仮想ネットワークアドレス「10.0.0.3」を用いてコンピューティングノードGに対して方向づけられる任意の受信される通信に応じてなどの、ARP要求ノ受信時以外の時点で、コンピューティングノードGのための物理的基盤ネットワークアドレスを取得するために、または別様に、このような物理的基盤ネットワークアドレスを決定するために、システム管理モジュール290と対話することができる。さらに、他の実施形態において、用いられる仮想ハードウェアアドレスは、仮想ハードウェアアドレスがシステム管理モジュール290によって指定される場合、仮想ハードウェアアドレスがランダムでなく、その代りに、対応するコンピューティングノードに対して特有の1つ以上の型の情報を格納するなどの場合、この例と異なってもよい。さらに、この例で、システム管理モジュール290および/または通信管理モジュールRにより、コンピューティングノードG1に対して通信を送信することを認証されることをコンピューティングノードAが決定していなければ、通信管理モジュールRは、仮想ハードウェアアドレスとともに応答メッセージ220−bを送信することはない(例えば、その代りに、応答を送信しない、またはエラーメッセージ応答を送信する)。
【0037】
この例で、対話225におけるコンピューティングノードGに対応する返されたIPv6の実際の物理的基盤ネットワークアドレスは、「::0B:02:<Z-identifier>:10.0.0.3」である。ここで、「10.0.0.3」は128ビットのIPv6アドレスの最終の32ビットに格納され、「<Z-identifier>」は実体Zのための仮想コンピュータネットワークに対応するコンピューティングノードGのための24ビットの要素ネットワーク識別子である(例えば、乱数または実体に対応する他の数字を反映するためにシステム管理モジュールによってそのネットワークに対して以前に割り当てられたように)。IPv6ネットワークアドレスの最初の72ビットは、通信管理モジュールSが対応する「::0B:02/72」のネットワークアドレス範囲の、サブネットワークまたは相互接続ネットワークの他の一部に対して対応する、「::0B:02」の指定を格納する。したがって、IPv6送信先ネットワークアドレス「::OB:02:<Z-identifier>:10.0.0.3」に対する相互接続ネットワーク250上に送信された通信は、通信管理モジュールSに対してルーティングされる。他の実施形態において、実体のネットワーク識別子は、別の長さ(例えば、通信管理モジュールSが56ビットではなく64ビットの関連するネットワークアドレス範囲を有しているならば、32ビットである)であってもよいし、および/または、他の形式を有してもよいし(例えば、ランダムであってもよいし、情報の各種を格納してもよい、など)、「::0B:02」の指定の後のネットワークアドレス範囲のために用いられる残りの56ビットは、他の種類の情報(例えば、特定の実体ための識別子、仮想ネットワークのためのタグまたはラベル、など)を格納してもよい。オーバーレイ仮想コンピュータネットワークでの用途のために設定されたIPv6の実際の物理ネットワークアドレスの例と関連する追加の詳細な記述は、
図2Dに関して記載される。
【0038】
通信管理モジュールRから応答メッセージ220−bを受信した後に、コンピューティングノードAは、通信220−cとして
図2Aに示される、コンピューティングノードGへの通信の送信を生成して開始する。具体的には、通信220−cのヘッダは、「10.0.0.3」である送信先コンピューティングノードGのための送信先ネットワークアドレスと、メッセージ220−b内のコンピューティングノードAに対して提供された仮想ハードウェアアドレスである送信先コンピューティングノードGのための送信先ハードウェアアドレスと、「10.0.0.2」であるコンピューティングノードAを送信するためのソースネットワークアドレスと、以前にコンピューティングノードAに対して識別された現実またはダミーのハードウェアアドレスであるコンピューティングノードAを送信するためのソースハードウェアアドレスとを含む。コンピューティングノードAは、コンピューティングノードGがそれ自体と同一のローカルのサブネットワークの一部であることを信じているので、コンピューティングノードAは、コンピューティングノードを分割するためにネットワークトポロジーで設定される任意の中間の論理的ルータ装置に通信220−cを方向づける必要はない。
【0039】
通信管理モジュールRは、通信220−cを傍受し、必要に応じて通信を変更し、相互接続ネットワーク250上でコンピューティングノードGに対して、変更される通信を転送する。具体的には、通信管理モジュールRは、コンピューティングノードGのための仮想送信先ネットワークアドレスおよび仮想送信先ハードウェアアドレスをヘッダから抽出し、次に、その仮想送信先ハードウェアアドレスに対応するIPv6の実際の物理的基盤ネットワークアドレスをマッピング情報212から取り出す。上述のように、この例におけるIPv6の実際の物理的基盤ネットワークアドレスは「::0B:02:<Z-identifier>:10.0.0.3」であり、通信管理モジュールRは、その実際の物理的基盤ネットワークアドレスを含む新たなIPv6ヘッダを送信先アドレスとして生成する。同様に、通信管理モジュールRは、コンピューティングノードAのためのバーチャルソースネットワークアドレスおよびバーチャルソースハードウェアアドレスを受信された通信のヘッダから抽出し、そのバーチャルソースハードウェアアドレスに対応するIPv6の実際の物理的基盤ネットワークアドレスを(例えば、以前に取得されていなければ、その情報を取得するためにシステム管理モジュール290と対話することにより、マッピング情報212に格納されたエントリから)取得し、新たなIPv6ヘッダに対してソースネットワークアドレスとしてその実際の物理的基盤ネットワークアドレスを含める。この例では、コンピューティングノードAのためのIPv6の実際の物理的基盤ネットワークアドレスは「::0A:01:<Z-identifier>:10.0.0.2」であり、もしコンピューティングノードGのための通信管理モジュールSによる返答に用いられるのであれば、コンピューティングノードAに転送するための通信管理モジュールRに対してルーティングされる。通信管理モジュールRは、次いで通信のために必要に応じて別の情報(例えば、ペイロード長、トラフィッククラスパケットプライオリティ、など)を有する新たなIPv6ヘッダを生成することを含む、先のIPv4ヘッダを新たなIPv6ヘッダ(例えば、SIITによる)で置き換えるように通信220−cを変更することにより、通信230−3を生成する。したがって、通信230−3は、通信230−3内の通信220−cをカプセル化せずに、通信220−cと同一のコンテンツまたはペイロードを含む。さらに、ペイロード内の特定の情報へのアクセスは、ペイロードがそのペイロードを復号する必要なしに暗号化される通信を通信管理モジュールRが処理することを可能にするようになど、このような再ヘッダ化を必要としない。
【0040】
少なくともいくつかの実施形態において、通信管理モジュールSに通信230−3を転送する前に、通信管理モジュールRは、例えば、通信220−cに用いられる送信先仮想ハードウェアアドレスのための有効なエントリ(例えば、いくつかの実施形態において送信元コンピューティングノード205aへの特有のエントリ、またはその代りに、別の実施形態においてコンピューティングノード205のいずれかに対応するエントリ)を含むマッピング情報212上に基づいて、通信220−cが通信230−3としてコンピューティングノードGに転送されることを認証されるのを決定するために、1つ以上の機能を実行してもよい。別の実施形態において、このような認証の決定は、各々の送出方向の通信のための通信管理モジュールRによって実行されなくてもよいし、またはその代りに、他の方式(例えば、送信ノードと宛先ノードが同一の仮想コンピュータネットワークの一部である、または同一の実体に関連づけられる、またはそうでなければ互いに通信しあうことを認証されることの判定に基づいて、通信のための認証の判定を得るためのシステム管理モジュール290との対話に基づいて、など)により実行されてもよい。
【0041】
通信管理モジュールRが相互接続ネットワーク250に変更された通信230−3を転送した後、相互接続ネットワークは、通信を通信管理モジュールSへルーティングするために、通信の物理的IPv6送信先ネットワークアドレスを用いる。そうする際に、相互接続ネットワーク250の装置は、組み込まれた要素ネットワーク識別子または組み込まれた仮想ネットワークアドレスを含む送信先ネットワークアドレスの一部を用いない。それにより、このような通信を転送するために特殊な設定を必要としないし、仮想コンピュータネットワークが物理相互接続ネットワーク上にオーバーレイされている認識さえ必要としない。
【0042】
通信管理モジュールSが相互接続ネットワーク250を介して通信230−3を受信する場合、通信管理モジュールRのものに類似した動作を、しかし逆方向に、実行する。具体的には、少なくともいくつかの実施形態において、通信管理モジュールSは、通信230−3が正当であり、かつコンピューティングノードGに転送されることを認証されることを、例えばシステム管理モジュールとの1つ以上の対話240を介して、検証する。通信が認証されることが決定される場合(または認証決定が実行されないならば)、通信管理モジュールSは、次いで必要に応じて通信230−3を変更し、コンピューティングノードGに変更された通信を転送する。通信230−3の検証に関する更なる詳細な記述は、
図2Bに関して論じられる。
【0043】
具体的には、通信230−3を変更するために、通信管理モジュールSは、コンピューティングノードGによって用いられる仮想ハードウェアアドレスを含む、コンピューティングノードGに対応するマッピング情報262から情報を取り出す(または新たなコンピューティングノードのためになど、以前に利用可能であったこのような仮想ハードウェアアドレスを生成する)。通信管理モジュールSは、次いで先のIPv6ヘッダを新たなIPv4ヘッダ(例えば、SIITによる)で置き換えるように通信230−3を変更することにより、通信245−eを生成する。新たなIPv4ヘッダは、新たなIPv4ヘッダのための送信先ネットワークアドレスおよび送信先ハードウェアアドレスとしてのコンピューティングノードGのための仮想ネットワークアドレスおよび仮想ハードウェアアドレスと、新たなIPv4ヘッダのためのソースネットワークアドレスおよびソースハードウェアアドレスとしてのコンピューティングノードAのための仮想ネットワークアドレスおよび仮想ハードウェアアドレスとを含み、必要に応じて通信のための他の情報(例えば、全体長さ、ヘッダチェックサム、など)を含む。コンピューティングノードAのための通信管理モジュールSによって用いられる仮想ハードウェアアドレスは、コンピューティングノードAのための通信管理モジュールRによって用いられるハードウェアアドレスと同一であってもよいが、他の実施形態において、各通信管理モジュールは、(例えば、通信管理モジュールSが、コンピューティングノードAのハードウェアアドレスのためのコンピューティングノード255の1つから、先のARP要求に応じてコンピューティングノードAのためのそれ自身のダミーの仮想ハードウェアアドレスを生成する場合)他の通信管理モジュールによって用いられる情報と関連しない個別のハードウェアアドレス情報を保持してもよい。このようにして、通信245−eは、通信220−cおよび230−3と同一のコンテンツまたはペイロードを含む。通信管理モジュールSは、次いでコンピューティングノードGに通信245−eを転送する。
【0044】
通信245−eを受信した後に、コンピューティングノードGは、通信245−eからのコンピューティングノードAのためのソース仮想ネットワークアドレスおよびソース仮想ハードウェアアドレスを用いて、コンピューティングノードAに対して応答通信245fを送信することを決定する。通信管理モジュールSは、応答通信245fを受信し、通信220−cおよび通信管理モジュールRに関して以前に記載されたのと同様の方法で、処理する。具体的には、通信管理モジュールSは、コンピューティングノードGがコンピューティングノードAに対して通信を送信することを認証されることを状況に応じて検証し、次に、マッピング情報262を用いて新たなIPv6ヘッダを生成することにより通信230−6を生成するために通信245fを変更する。相互接続ネットワーク250に通信230−6を転送した後、通信は、通信管理モジュールRに対して送信され、通信管理モジュールRは、通信230−3および通信管理モジュールSに関して以前に記載されたのと同様の方法で、受入方向の通信を処理する。具体的には、通信管理モジュールRは、コンピューティングノードGがコンピューティングノードAに対して通信を送信することを認証され、かつ通信230−6がコンピューティングノードGの基盤ネットワーク位置から現実に送信されることを状況に応じて検証し、次に、マッピング情報212を用いて新たなIPv4ヘッダを生成することにより応答通信220−dを生成するために通信230−6を変更する。通信管理モジュールRは、次いでコンピューティングノードAに応答通信220−dを転送する。他の実施形態および状況において、通信管理モジュールRおよび/またはSは、応答通信は少なくともいくつかの状況で認証され、かつそれらの状況における応答通信のためのいくつかまたはすべての認証動作を実行しないことを仮定するなどして、最初の通信と異なる方法で応答通信を処理してもよい。
【0045】
このようにして、コンピューティングノードAおよびGは、実際の介在するIPv6ベースの基板相互接続ネットワークを処理するためにそれらのコンピューティングノードの特殊設定なしで、IPv4ベースの仮想コンピュータネットワークを用いて互いに通信しあうことができ、相互接続ネットワーク250は、通信のカプセル化なしで実際の物理相互接続ネットワーク上に仮想コンピュータネットワークをオーバーレイする通信管理モジュールに基づいて、かつ基盤物理ネットワークアドレスに組み込まれた仮想ネットワークアドレスを使用することに基づいて、相互接続ネットワークの任意の物理的ネットワーキング装置の特殊設定なしで、IPv6通信を転送。
【0046】
さらに、
図2Aに関して図示されていないが、少なくともいくつかの実施形態において、通信管理モジュールは、関連づけられるコンピューティングノードのために他の型の要求および通信を受信して処理することができる。例えば、通信管理モジュールは、それらが管理するコンピューティングノードのためのブロードキャストとマルチキャストの能力を支援するために様々な動作を行うことができる。一例として、いくつかの実施形態において、特別のマルチキャストグループ仮想ネットワークアドレスサフィックスは、信号方式ネットワーキング層2の未加工のカプセル化された通信で用いる各々の要素ネットワーク識別子プレフィックスから予約しておくことができる。同様に、リンクローカル放送およびマルチキャスト通信のために、特別のマルチキャストグループ/64プレフィックスが予約され得(例えば「FF36:0000::」)、一方異なる送信先アドレスプレフィックス(例えば「FF15:0000::」)が他のマルチキャスト通信のための用いられていてもよい。したがって、例えば、マルチキャストおよびブロードキャストのIPフレームは、対応する予約された64ビットプレフィックスを128ビットのIPv6アドレスの最初の64ビットのために用いてカプセル化し、残りの64ビットは、前に記載されたのと同様の方法で、送信先コンピューティングノードのための仮想IPv4ネットワークアドレスおよび送信先コンピューティングノードのための要素ネットワーク識別子を含む。あるいは、他の実施形態において、1つ以上の型のブロードキャストおよび/またはマルチキャスト通信は、各々、異なるビット数を用いること、および/またはネットワークアドレスプレフィックスとはいわば別に格納されることを含む、異なる値または形式を有する、対応する予約ラベルまたは他の識別子を有してもよい。コンピューティングノードがブロードキャスト/マルチキャスト通信を送信する場合、そのマルチキャスト/ブロードキャストグループに対して割り当てられた関連するコンピューティングノードの任意の通信管理モジュールが識別される(例えば、それらの関連づけられるコンピューティングノードによって送信された、先の結合通信に応じてなど、グループに対して割り当てられた通信管理モジュールに基づいて)。また、送信元コンピューティングノードのための通信管理モジュールは、それらの適合する管理されたコンピューティングノードに転送するために、グループの識別された通信管理モジュールの各々に通信を転送する。さらに、いくつかの実施形態および状況において、少なくともあるブロードキャストまたはマルチキャスト通信は、224.0/16のIPv4プレフィックスまたは別の指定のプレフィックスまたは他のラベルもしくは識別子との通信などのように、通信管理モジュールによって転送されなくてもよい。
【0047】
管理されたコンピューティングノードのためのブロードキャストおよびマルチキャストの能力を支援することに加えて、通信管理モジュールは、コンピューティングノードが属する仮想コンピュータネットワークのための設定されたネットワークトポロジーに対応する、関連するコンピューティングノードのために他の種類の要求および通信を受信して処理することができる。例えば、コンピューティングノードは、(例えば、ping要求、SNMPクエリ、などの)指定されたローカルルータ装置または他の指定されたネットワーキング装置が処理することを要求される様々な要求を送信してもよいし、関連する通信管理モジュールは、このような要求を傍受し、もしそれが物理的に実装されていれば、指定されたネットワーキング装置によって提供されるであろう機能をエミュレートするために様々な対応する動作を行うことができる。
【0048】
さらに、通信管理モジュールがその通信管理モジュールに関連する複数のコンピューティングノード間の通信を促進し得ることが十分に理解されるだろう。例えば、
図2Aに関して、コンピューティングノード205aは、コンピューティングノード205−cに対して追加の通信(図示せず)を送信することを望み得る。その場合、通信管理モジュールRは、通信管理モジュールRによる送出方向の通信220−cの処理および通信管理モジュールSによる受入方向の通信230−3の処理に関して以前に記載されたものに類似した動作を(ただし、通信は相互接続ネットワーク上を伝わらないのでIPv6ヘッダを用いるために追加の通信を再ヘッダ化せずに)実行する。しかしながら、
図2Cに関してよりいっそう詳細に論じられるように、コンピューティングノード205aおよび205−cが仮想コンピュータネットワークのためのネットワークトポロジーで、1つ以上の論理ネットワーキング装置によって分離されるように設定されるならば、通信管理モジュールRは、それらの論理ネットワーキング装置の機能をエミュレートするために追加の動作を行い得る。
【0049】
図2Aに関して図示されていないが、少なくともいくつかの実施形態において、他の型の要求および通信も様々な方法で処理され得る。例えば、少なくともいくつかの実施形態において、実体は、通信管理モジュールによって管理され、かつその実体のための仮想コンピュータネットワークの一部である1つ以上のコンピューティングノードを有してもよく、それらの通信を管理する関連する通信管理モジュールを有しない1つ以上の他の管理されていないコンピューティングシステム(例えば、それ相互接続ネットワーク250に対して直接接続されるおよび/またはIPv6ネットワークアドレスをネイティブで用いるコンピューティングシステム)をさらに有してもよい。それらの管理されていないコンピューティングシステムがその仮想コンピュータネットワークの一部である、別様に、仮想コンピュータネットワークの管理されたコンピューティングノードと通信することを、実体が望む場合、管理されたコンピューティングノードと管理されていないコンピューティングシステムとの間のこのような通信は、少なくともいくつかのこのような実施形態において、1つ以上のコンピューティングノードを管理する通信管理モジュールによって処理されてもよい。例えば、そのような状況において、そのような管理されていないコンピューティングシステムが、そのような管理されたコンピューティングノードのための実際のIPv6送信先ネットワークアドレス(例えば、この例における管理されたコンピューティングノードAのための「::0A:01:<Z-identifier>:10.0.0.2」)を提供しているならば、管理されていないコンピューティングシステムは、その送信先ネットワークアドレスを用いて、相互接続ネットワーク250を介してコンピューティングノードAに対して通信を送信してもよい。通信管理モジュールRは、通信管理モジュールRがその管理されていないコンピューティングシステムから(または任意の管理されていないコンピューティングシステムから)通信を受け入れるように設定されているならば、(例えば、以前に記載されたのと同様の方法で通信を再ヘッダ化した後に)コンピューティングノードAにそれらの通信を転送することとなる。更に、通信管理モジュールRは、このような管理されていないコンピューティングシステムに対応するようにダミーの仮想ネットワークアドレスを生成し、管理されていないコンピューティングシステムのために実際のIPv6ネットワークアドレスに対してそれをマッピングし、コンピューティングノードAに対して(例えば、管理されていないコンピューティングシステムからコンピューティングノードAに転送された通信のためのソースアドレスとして)ダミーの仮想ネットワークアドレスを提供してもよい。それにより、コンピューティングノードAが、管理されていないコンピューティングシステムに対して通信を送信することを可能する。
【0050】
同様に、少なくともいくつかの実施形態および状況において、いくつかの管理されたコンピューティングノードおよび/または少なくともそれらの仮想コンピュータネットワークは、他の管理されていないコンピューティングシステムまたはそれらの通信を管理する、関連する通信管理モジュールを有しない他の型のネットワーク機器装置などのような、仮想コンピュータネットワークの一部でない他の装置との通信を可能にするように設定されてもよい。そのような状況では、管理されているコンピューティングノードおよび/または仮想コンピュータネットワークが、そのような管理されていない他の装置との通信を可能にするように設定されている場合、このような管理されていない装置は、このようなコンピューティングノード(例えば、この例におけるコンピューティングノードAのための「::0A:01:<Z-identifier>:10.0.0.2」)のための実際のIPv6送信先ネットワークアドレスを同様に提供され得、管理されていない装置が、その送信先ネットワークアドレスを用いて相互接続ネットワーク250を介してコンピューティングノードAに対して通信を送信することを可能にし、通信管理モジュールRは、(例えば、前に記載されたものに類似する方法で通信を再ヘッダ化した後に)コンピューティングノードAにそれら通信を転送する。更に、通信管理モジュールRは、コンピューティングノードAからこのような管理されていない装置への送出方向の通信を同様に管理して、コンピューティングノードAがこのような通信を送信することを可能にすることができる。
【0051】
さらに、前述のように、通信管理モジュールは、いくつかの実施形態において仮想コンピュータネットワークのコンピューティングノードに対して仮想ネットワークアドレスを割り当てることによること、および/または、通信管理モジュールに対応する基盤物理ネットワークアドレスの範囲から管理されたコンピューティングノードに対して基盤物理ネットワークアドレスを割り当てることによることを含む様々な方法で関連するコンピューティングノードのための通信を管理する。他の実施形態において、いくつかのこのような動作は、代りに、DHCP(ダイナミックホストコンフィギュレーションプロトコル)サーバまたは仮想コンピュータネットワークの他の装置が、仮想ネットワークの特定のコンピューティングノードに仮想ネットワークアドレスおよび/または基盤物理ネットワークアドレスを指定することを可能にするなどのために、仮想コンピュータネットワークの1つ以上のコンピューティングノードによって実行することができる。このような実施形態において、通信管理モジュールは、仮想ネットワーク装置からこのような構成情報を取得し、それに応じてそのマッピング情報を更新する(そして、いくつかの実施形態において、仮想ネットワークに関連づけられるコンピューティングノードに関する情報を維持する1つ以上のシステム管理モジュールをさらに更新してもよい)。さらに他の実施形態において、仮想コンピュータネットワークに関連するユーザまたは他の実体は、特定のコンピューティングノードを特定の仮想ネットワークアドレスを用いるように直接設定することができる。その場合、通信管理モジュールおよび/またはシステム管理モジュールは、どの仮想ネットワークアドレスが特定のコンピューティングノードにより用いられるかを追跡してもよく、それに応じて、格納されたマッピング情報を同様に更新してもよい。
【0052】
さらに、いくつかの実施形態および状況において、管理されたコンピューティングノードは、それ自体疑似ルータとして扱われてもよく、複数の仮想ネットワークアドレスがその管理されたコンピューティングノードに関連づけられ、その管理されたコンピューティングノードは、それらの複数の仮想ネットワークアドレスに対応する他のコンピューティングノードに対して通信を転送する。このような実施形態において、その管理されたルータコンピューティングノードのための通信を管理する通信管理モジュールは、コンピューティングノードとの間の通信を、前に記載されたのと同様の方法で処理する。しかしながら、通信管理モジュールは、管理されたルータコンピューティングノードに対応する複数の仮想ネットワークアドレスにより設定される。その結果、それらの複数の仮想ネットワークアドレスのいずれの受入方向の通信も、管理されたルータコンピューティングノードに転送され、管理されたルータコンピューティングノードからの送出方向の通信は、管理されたルータコンピューティングノードを介して通信を送信した特定のコンピューティングノードに対応する基盤ソース物理ネットワークアドレスを与えられる。このようにして、特定の顧客または他の実体のルータまたは他のネットワーキング装置は、その実体のために実現される仮想コンピュータネットワークのために仮想的に表わされ得る。
【0053】
図2Bは、
図2Aに関して論じられたコンピューティングノードおよび通信のいくつかを図示するが、コンピューティングノード間の通信を認証するために、通信管理モジュール210、260および/またはシステム管理モジュール290によって行われる幾つかの動作に関する更なる詳細な記述が提供される。例えば、コンピューティングノードAが、コンピューティングノードGのためのハードウェアアドレスを要求するためにメッセージ220−aを送信した後、通信管理モジュールRは、コンピューティングノードGと通信することをコンピューティングノードAが認証されるか否かに基づくなどにより、その情報を提供するべきかどうか決定するため、ならびに相互接続ネットワーク250に基づいてコンピューティングノードGのための対応する基盤物理ネットワークアドレスを決定するために、システム管理モジュール290と1つ以上の対話225を実行することができる。通信管理モジュールRがその情報を以前に取得し格納しており、有効のままである(例えば、有効期限が切れていない)ならば、その後、対話225は実行されなくてもよい。この例で、コンピューティングノードGに対応する所望の物理ネットワークアドレスを取得するために、通信管理モジュールRは、コンピューティングノードAおよびGのための仮想ネットワークアドレスを含み、各々のコンピューティングノードのための実体ネットワーク識別子(この例において実体Zの仮想コンピュータネットワークのための実体ネットワーク識別子(例えば、32ビットまたは24ビットのユニークID)である)を含むシステム管理モジュール290に対してメッセージ225−1を送信する。少なくともいくつかの実施形態において、通信管理モジュールRは、エニーキャストアドレッシングスキームおよびルーティングスキームを用いて、システム管理モジュール290に対してメッセージ225−1を送信してもよい。その結果、多重システム管理モジュールが実現されてもよく(例えば、通信管理モジュールおよび関連づけられるコンピューティングノードを含む各々のデータセンタのための1つ)、(例えば、最も近く最も利用されなかった、などの)それらの適合する1つが、メッセージを受信し処理するために選択される。
【0054】
コンピューティングノードAがコンピューティングノードGと通信することを認証されるのをシステム管理モジュール290が決定した後(例えば、同一の要素ネットワーク識別子を有していることに基づいて、コンピューティングノードGのための要素ネットワーク識別子のコンピューティングノードと通信することを認証される要素ネットワーク識別子を有するコンピューティングノードAに基づいて、このような通信を実行することをコンピューティングノードAが認証されるのを示すコンピューティングノードAによって提供されるまたは関連する他の情報に基づいて、コンピューティングノードAがこのような通信を実行することを認証されるのを示すコンピューティングノードGによって提供されるまたは関連する情報に基づいて、など)、システム管理モジュール290は、コンピューティングノードGに対応する所望の実際の物理的基盤ネットワークアドレスを含む応答メッセージ225−2を返す。さらに、少なくともいくつかの実施形態において、所望の実際の物理ネットワークアドレスを送信する前に、システム管理モジュール290は、通信コンピューティングノードAが、管理モジュールRが関連するコンピューティングノードの1つであることが決定されていることに基づいてなどように、その通信管理モジュールRがコンピューティングノードAに代わってメッセージ225−1を送信することを認証されるのをさらに検証してもよい。
【0055】
他の実施形態において、通信管理モジュールRは、様々なコンピューティングノードのための提供情報を維持するおよび/またはコンピューティングノードGに対して通信を送信することをコンピューティングノードAが認証されるか否かを決定するために、システム管理モジュール290によって実行されるように記載された動作のいくつかまたはすべてを実行してもよく、またはその代りに、このような認証判定がいくつかまたはすべての状況において実行されなくてもよい。さらに、他の実施形態において、ある種の通信に基づいて、通信のサイズ上に基づいて、通信の時刻に基づいてなど、他の種類の認証判定が、2つ以上のコンピューティングノード間の通信のために実行されてもよい。
【0056】
前に
図2Aに関して示したように、通信管理モジュールSが相互接続ネットワーク250を介してコンピューティングノードGに向けられた通信230−3を受信した後、通信管理モジュールSは、その通信を認証するべきか否かを決定するために、システム管理モジュール290と1つ以上の対話240を実行してもよい。具体的には、この例で、通信230−3が有効でありコンピューティングノードGに転送されることが認証されるかを検証するために、通信管理モジュールSは、まず通信230−3のヘッダから実際のIPv6送信先ネットワークアドレスおよび実際のIPv6ソースネットワークアドレスを抽出し、次に、組み込まれた要素ネットワーク識別子および仮想ネットワークアドレスを抽出された各々のIPv6ネットワークアドレスのから取り出す。通信管理モジュールSは、次に、コンピューティングノードGに代わって送信元コンピューティングノードAのための対応する実際のIPv6物理ネットワークアドレスを取得するためにシステム管理モジュール290とメッセージ240を交換し、それにはコンピューティングノードAおよびGのための抽出された仮想ネットワークアドレスと各々のコンピューティングノードのための要素ネットワーク識別子とを含むメッセージ240−4が含まれる。少なくともいくつかの実施形態において、通信管理モジュールSは、前に記載されたように、エニーキャストアドレッシングおよびルーティングスキームを用いて、システム管理モジュール290に対してメッセージに240−4を送ってもよい。
【0057】
システム管理モジュール290は、メッセージ240−4を受信し、コンピューティングノードAに対応する実際の物理的基盤ネットワークアドレスを含む応答メッセージ240−5を返す(この例では「::0A:01:<Z-identifier>:10.0.0.2」)。前にメッセージ225−1および225−2に関して論じられたように、いくつかの実施形態において、通信管理モジュールSおよび/またはシステム管理モジュール290は、コンピューティングノードGがコンピューティングノードAと通信することを認証されること、通信管理モジュールSがコンピューティングノードGのためのメッセージ240−4を送信することを認証されることを決定するためになどのように、1つ以上の他の種類の認証決定動作をさらに実行してもよい。その後、通信管理モジュールSは、他の位置の他のコンピューティングノードから現実に送信されるコンピューティングノードAからであるようにメッセージになりすますための試みを防ぐために、応答メッセージ240−5内の返された物理ネットワークアドレスが通信230−3のヘッダから抽出されたソースIPv6ネットワークアドレスと一致することを検証する。通信管理モジュールSは、コンピューティングノードAの仮想ネットワークアドレスおよびコンピューティングノードAのための仮想ハードウェアアドレスとともに、マッピング情報262におけるコンピューティングノードAのための入力の一部として、応答メッセージ240−5からのこの受信情報を後の使用のために状況に応じて格納する。
【0058】
図2Cは、
図2Aおよび
図2Bに関して記載された仮想コンピュータネットワークのための管理する進行中の通信のさらなる例を図示するが、通信は、仮想コンピュータネットワークのための設定されたネットワークトポロジーに従って、仮想コンピュータネットワークのための論理ネットワーキング機能を支援するために管理される。具体的には、
図2Cは、
図2Aおよび
図2Bに示されるものに類似した方法で、コンピューティングノードA、通信管理モジュールRおよびS、システム管理モジュール290、および相互接続ネットワーク250を図示する。しかしながら、
図2Cは、
図2Aと比較してコンピューティングノードA205aおよびコンピューティングノードH255bに関する追加情報、ならびに仮想コンピュータネットワークのための設定されたネットワークトポロジーの一部であるが、仮想コンピュータネットワークを提供する一部として実際には物理的に実装されない、2つの指定されたルータ装置の論理的表現270aおよび270bをさらに図示する。具体的には、この例では、コンピューティングノードAは、コンピューティングノードHに対して通信を送信しており、物理的に実装されたモジュール210および260、ならびに実際に通信を送信する際のネットワーク250の装置の動作は、論理的に通信を送信する際の論理的ルータ装置270aおよび270bのエミュレートされた動作と並んで、示される。
【0059】
この例で、コンピューティングノードAおよびHは、仮想コンピュータネットワークの2つの別個のサブネットワークの一部であるように設定され、論理的ルータ装置270aおよび270bは、仮想コンピュータネットワークのための設定されたネットワークトポロジー内のコンピューティングノードAおよびHを分離する。例えば、論理的ルータ装置J270aは、コンピューティングノードAに対するローカルルータ装置であってもよく(例えば、コンピューティングノードAを含む第1のサブネットワークを管理してもよい)、論理的ルータ装置L270bは、コンピューティングノードHに対するローカルルータ装置であってもよい(例えば、コンピューティングノードHを含む第2の別のサブネットワークを管理してもよい)。コンピューティングノードAおよびHはこの例における設定されたネットワークトポロジー内の2つのルータ装置によって分離されるように図示されるが、このような2つのコンピューティングノードが他の状況において、0、1または2つ以上のルータ装置により分離され、他の型のネットワーキング装置がいくつかの状況においてコンピューティングノードを分離してもよいことは、十分に理解されるだろう。
【0060】
図2Cの例において、コンピューティングノードAおよびHのために示される追加情報は、システム管理モジュール290および/または通信管理モジュールRおよびSによってコンピューティングノードに割り当てられる仮想ハードウェアアドレスなどのような、仮想コンピュータネットワークのためのそれらのコンピューティングノードに関連づけられるハードウェアアドレスを含む。具体的に、この例では、コンピューティングノードAは、ハードウェアアドレス「00-05-02-0B-27-44」に割り当てられ、コンピューティングノードHは、ハードウェアアドレス「00-00-7D-A2-34-11」に割り当てられている。さらに、論理的ルータ装置JおよびLの各々はまた、ハードウェアアドレス(この例では、それぞれ「00-01-42-09-88-73」および「00-01-42-CD-11-01」である)、ならびに仮想ネットワークアドレス(この例では「10.0.0.1」および「10.1.5.1」である)が割り当てられている。以下で記載されるように、様々なハードウェアアドレスが、コンピューティングノードAからコンピューティングノードHまでの通信の送信の一部、および仮想コンピュータネットワークのための対応する論理ネットワーキング機能の提供の一部として用いられる。
【0061】
したがって、
図2Aに関して記載されるのと同様の方法で、コンピューティングノードAは、コンピューティングノードHに対して通信を送信することを決定し、それに応じて、通信管理モジュールR210と各種メッセージ222を交換する。具体的には、この例で、コンピューティングノードAは、まず仮想ハードウェアアドレス情報のためにARPメッセージ要求222−aを送信する。しかしながら、コンピューティングノードAおよびGが同一の論理的サブネットワークの一部であった
図2Aの例とは異なり、コンピューティングノードAからコンピューティングノードHまでの通信は、コンピューティングノードHに転送される前に、ローカルルータ装置Jの最初の中間の送信先を最初に通過することが要求される。したがって、論理的ルータJが論理的にリモートコンピューティングノードHのための最初の中間の送信先であるので、ARPメッセージ要求222−aは、論理的ルータJのための仮想ネットワークアドレス(すなわち「10.0.0.1」)を含み、論理的ルータJのための対応するハードウェアアドレスを要求する。他の実施形態において、コンピューティングノードAは、その代りに、コンピューティングノードHのための仮想ハードウェアアドレス情報を(例えば、コンピューティングノードHのための仮想ネットワークアドレス「10.1.5.3」を用いて)直接要求してもよいが、論理的ルータJのための対応するハードウェアアドレスを提供される。
【0062】
通信管理モジュールRは、ARP要求222−aを傍受し、なりすまされたARP応答メッセージ222−bの一部としてコンピューティングノードAに提供するためにハードウェアアドレスを取得する。様々な実施形態において様々な方式で、通信管理モジュールRは、論理的ルータJ1のためのハードウェアアドレス、およびコンピューティングノードHがコンピューティングノードAからの別の論理的サブネットワークの一部であることとを決定することができる。例えば、前に論じられたように、通信管理モジュールRは、マッピング情報212の一部として様々なハードウェアアドレス情報を格納することができ、その場合、論理的ルータJのためのハードウェアアドレス情報を既に格納している場合があるが、そうでなければ、通信管理モジュールRは、論理的ルータJのための示された仮想ネットワークアドレスに対応するモジュール290からの情報を取得するためにシステム管理モジュール290と1つ以上の対話227を実行する。しかしながら、
図2AのコンピューティングノードGに関するように、示された仮想ネットワークアドレスに対応する基盤ネットワークアドレスを取得するのではなく、システム管理モジュール290は、仮想ネットワークアドレスが構成されたネットワークトポロジーの論理的ルータ装置に対応することを示し、さらに論理的ルータJのためのハードウェアアドレス情報を示す通信管理モジュールRに対する情報を提供してもよい。具体的には、システム管理モジュール290は、指定されたネットワーキング装置に関する情報などの(提供するか、そうでなければ管理する)仮想コンピュータネットワークのための設定されたネットワークトポロジーに関する諸情報294を維持し、通信管理モジュールに対して要求情報を提供するためにその情報を用いる。通信管理モジュールRは、次いで今後の使用のためにマッピング情報212の一部として受信情報を格納し、このようにして、コンピューティングノードHが構成されたネットワークトポロジー内のコンピューティングノードAからの別のサブネットワークの一部であることを決定する。さらに、通信管理モジュールRは、応答メッセージ222−bの一部として論理的ルータJに対応するハードウェアアドレス「00-01-42-09-88-73」をコンピューティングノードAに提供する。要求222−aおよび応答メッセージ222−bがコンピューティングノードAから見て、論じられた方式でコンピューティングノードAおよび通信管理モジュールRの間を実際に通過するが、通信222−aおよび222−bは、ローカルルータ装置Jで生じる論理的対話263の一部である。
【0063】
通信管理モジュールRから応答メッセージ222−bを受信した後に、コンピューティングノードAは、コンピューティングノードHに、通信222−cとして
図2Cに示される通信の送信を作成して開始する。具体的には、通信222−cのヘッダは、「10.1.5.3」である送信先コンピューティングノードHのための送信先ネットワークアドレスと、メッセージ222−b内のコンピューティングノードAに対して提供される論理的ルータJのための仮想ハードウェアアドレスである送信先ハードウェアアドレスと、「10.0.0.2」であるコンピューティングノードAを送信するためのソースネットワークアドレスと、前にコンピューティングノードAに対して特定された、実際のまたはダミーのハードウェアアドレスであるコンピューティングノードAを送信するためのソースハードウェアアドレスとを含む。コンピューティングノードAから見て、送信される通信は、論理的通信265のために図示された方式で処理され、通信における送信先ハードウェアアドレスに基づいて転送のための通信265aとしてローカルの論理ルータJに対して送信される。もし論理的ルータJが物理的に実装され、このような通信265aを受信したならば、通信265aのヘッダを変更し、論理ルータLに、変更される通信265bを転送することとなり、論理ルータLは、通信265bのヘッダを同様に変更し、コンピューティングノードHに対して、変更された通信265cを転送することとなる。論理ルータJがこのような通信265aに対して実行するであろう変更は、ヘッダ内のTTLネットワークホップ値をディクリメントし次の送信先(この例では論理ルータLとなる)に対応させるために送信先ハードウェアアドレスを変更することを含み得る。同様に、論理ルータLがこのような通信265bに対して実行することとなる変更は、ヘッダ内のTTLネットワークホップ値をさらにディクリメントし次の送信先(この例ではコンピューティングノードHとなる)に対応させるために送信先ハードウェアアドレスを変更することを含み得る。
【0064】
コンピューティングノードAからコンピューティングノードHへの通信222−cが、通信265のための図示された方式において論理的に処理される一方で、通信222−cは、通信管理モジュールRによって実際に傍受され処理される。具体的には、通信220−cのための
図2Aに記載されたのと類似の方法で、通信管理モジュールRは、通信222−cを傍受し、必要に応じて通信を変更し、コンピューティングノードHに対して相互接続ネットワーク250上で、変更された通信を転送する。相互接続ネットワーク250上で変更された通信を転送するために用いるべき基盤ネットワークアドレスを決定するために、通信管理モジュールRは、通信222−cのヘッダから送信先仮想ネットワークアドレスおよび送信先仮想ハードウェアアドレスを抽出する。しかしながら、通信管理モジュールRは、
図2Aの方法とは異なる方法で、論理的ルータJに対応する送信先仮想ハードウェアアドレスに基づいて、送信先基盤ネットワークアドレスを特定するために、送信先仮想ネットワークアドレスを用いることを決定する。したがって、通信管理モジュールRは、コンピューティングノードHの仮想ネットワークアドレスに対応する基盤ネットワークアドレスが前に決定されて格納されているか否かを決定するためにマッピング情報212をチェックする。そうでなければ、通信管理モジュールRは、その情報を決定するために、
図2Aの対話225に類似した方式で、システム管理モジュール290と1つ以上の対話227を実行する。
図2Bに関してよりいっそう詳細に論じられたように、ARP要求メッセージ222−aおよび/または通信222−cに応じて、通信管理モジュールRおよび/またはシステム管理モジュール290は、様々なオプションの認証動作をさらに実行してもよい。
【0065】
通信管理モジュールRがコンピューティングノードHに対応するIPv6の実際の物理的基盤ネットワークアドレスを決定した後、通信管理モジュールRは送信先アドレスとしてその実際の物理的基盤ネットワークアドレスを含む新たなIPv6ヘッダを生成し、新たなヘッダに対してコンピューティングノードAのためのソースIPv6アドレスを同様に追加する。この例では、コンピューティングノードHに対応する物理的基盤ネットワークアドレスは、コンピューティングノードGのそれに類似し、具体的にはIPv6基盤ネットワークアドレス「::0B:02:<Z-identifier>:10.1.5.3」であり、ここで、「10.1.5.3」は128ビットのIPv6アドレスの最終の32ビットに格納され、「<Z-identifier>」は仮想コンピュータネットワークのための24ビットの要素ネットワーク識別子である。したがって、コンピューティングノードGに対して送信された通信のように、コンピューティングノードHのための基盤ネットワークアドレスに対して相互接続ネットワーク250上で送信された通信は、通信管理モジュールSに対してルーティングされる。通信管理モジュールRは、次に、先のIPv4ヘッダを新たなIPv6ヘッダ(例えば、SIITによる)で置き換えるように通信222−cを変更することにより(新たな通信232−3を生成し、新たな通信のための他の情報(例えばペイロード長、トラフィッククラスパケットプライオリティ、など)と共に新たなIPv6ヘッダを必要に応じて生成することを含む)、相互接続ネットワーク250上に通信232−3を転送する。相互接続ネットワークは、次いで通信管理モジュールSに対する通信の経路を選択するために、通信232−3の物理的IPv6送信先ネットワークアドレスを用いる。通信管理モジュールSが相互接続ネットワーク250を介して通信232−3を受信する場合、通信230−3に関して
図2Aに記載されたものに類似する動作(適合するIPv4ヘッダを含むように通信を変更し、かつコンピューティングノードHに対して通信247−eとして変更される通信を提供することを含む)を実行する。
【0066】
更に、他のところで示されたように、通信管理モジュールRおよび/または通信管理モジュールSは、この例において、仮想コンピュータネットワークのための設定されたネットワークトポロジーに、対応する論理ネットワーキング機能を提供するような方式でコンピューティングノードAからコンピューティングノードHに通信を変更するためにさらなる動作を行い、それには、もしそれらが仮想コンピュータネットワークのために物理的に実装されていれば、論理的ルータJおよびLによって提供されるであろう機能をエミュレートすることを含む。例えば、前に論じたように、論理的ルータJおよびLは、それらのルータが物理的に実装され用いられたならば、コンピューティングノードHに対して転送されるように通信265に対する様々な変更(TTLネットワークホップ値を変更し、かつ他のヘッダ変更を実行することを含む)を実行するであろう。したがって、通信管理モジュールRおよび/または通信管理モジュールSは、論理的ルータJおよびLのこのような機能をエミュレートするために、通信222−cおよび/または247−eに対して同様の変更を実行することができる。したがって、コンピューティングノードHは、仮想コンピュータネットワークのための指定されたネットワークトポロジーを介して転送された通信265cであるかのように見える通信247−eを受信する。
【0067】
このようにして、ONMシステムは、いかなる仮想コンピュータネットワークのコンピューティングノードまたは介在する基板相互接続ネットワークの物理的ネットワーキング装置の特殊設定なしで、設定されたネットワークトポロジーをエミュレートするような方式で、実際の物理相互接続ネットワーク上に仮想コンピュータネットワークをオーバーレイする通信管理モジュールに基づいて、構成されたネットワークトポロジーに、対応する論理ネットワーキング機能を提供することができる。さらに、ONMシステムの複数のモジュールは、例えばモジュール210、260および290が各々の論理的ルータ装置270aおよび270bに対応する機能をエミュレートするように先の例で相互に動作するなど、特定の論理ネットワーキング装置に対応する機能を提供するため、分散された方式で相互に動作することができる。
【0068】
上述のように、仮想コンピュータネットワークのために指定される設定情報は、様々なネットワークトポロジー情報を含んでもよいし、様々なコンピューティングノードが、仮想コンピュータネットワークのために選択され、様々な方式でネットワークトポロジーに従って設定され得る。例えば、いくつかの実施形態で、仮想コンピュータネットワークで用いられるべき、および/または設定されたネットワークトポロジーにおいて特定の役割を割り当てられるべきコンピューティングノードの選択は、コンピューティングノードの地理的および/またはネットワークの位置の少なくとも部分的に基づき得、例えば絶対位置、あるいはその代わりに対象となる1つ以上の他のコンピューティング資源(例えば、同一の仮想ネットワークの他のコンピューティングノード、コンピューティングノードによって用いられる記憶資源、など)に対する相対位置、例えば最小および/または最大の指定された地理的な距離、または示された他のコンピューティング資源もしくは他の位置に対する他の近さの程度などである。さらに、いくつかの実施形態において、コンピューティングノードを選択する場合に用いられる要因は、位置に基づかなくてもよく、たとえば以下の1つ以上の要因を含む:リソース関連の基準(例えばメモリ量、プロセッサ使用量、ネットワーク帯域幅の量および/またはディスクスペース量)および/またはコンピューティングノードのサブセットでのみ利用可能な特定の能力などのようなコンピューティングノードの性能に関連する制約や、特定のコンピューティングノードの使用に関連する料金または運転コストに基づくようなコストに関連される制約など。
【0069】
図2A〜
図2Cに関して論じられたものとは異なる様々な他の型の機能が、IPv4およびIPv6以外のネットワークアドレッシングプロトコルの型を含む、他の実施形態で実行され得る。
【0070】
図2Dは、いくつかの実施形態に記載された技術と共に使用するためのIPv6物理的基盤ネットワークアドレス設定272の例を図示しており、例示のネットワークアドレスは、基盤コンピュータネットワーク上でオーバーレイ仮想コンピュータネットワークを可能にするように仮想ネットワークアドレスおよび基盤ネットワークアドレスの他の情報を組み込むように構成されている。前に論じたように、この例示のIPv6ネットワークアドレス設定は、諸情報を格納するために128ビットのネットワークアドレス空間を用い、最初の64ビットがアドレスのIPv6ネットワーク部分を格納し、後続の64ビットがアドレスのインタフェース識別子(または「ホスト」)部分を格納する。
【0071】
この例で、IPv6アドレスの最初の64ビットのネットワーク部分は、(この例では、地域インターネットレジストリ(Regional Internet Registry)RIPE NCC、またはヨーロッパIPリソースネットワーク調整センタ(Reseaux IP Europeens Network Coordination Centre)からの割り当てに基づいて)インターネット上で利用されるアドレス資源を管理する組織(IANA(internet Assigned Numbers Authority))のためのインターネットレジストリオペレータによって、企業または他の組織のこのような組織に割り当てられた識別子に対応するビット0〜31のための32ビットの識別子272aを含む。例えば、いくつかの実施形態において、ONMシステムの実施形態を運用する組織または記載された技術を用いる別の組織は、関連する識別子272aを有し得る。アドレスの最初の64ビットのネットワーク部分はまた、識別子が情報272aにおいて示されるグループのために提供される、複数のコンピューティングノードのグループのトポロジー(例えば、サブネットワークまたは他のネットワーク部分)に対応するこの例では情報272bの32ビットのグループを含む。前に論じられたように、少なくともいくつかの実施形態において、アドレスの最初の64ビットのネットワーク部分は、基盤ネットワークのサブネットワークまたは他の部分などの、複数の関連するコンピューティングノードの位置に対応する基盤ネットワークのための部分的なネットワークアドレスを表わす。具体的には、少なくともいくつかの実施形態の最初の64ビットのネットワークアドレス部分は、様々な管理されたコンピューティングノードを表わすために64ビットのインタフェース識別子のアドレス部分のいくつかまたはすべてに対応するネットワークアドレスの範囲を管理する通信管理モジュールに基づいてなどして、通信管理モジュールによって管理されている複数の関連されるコンピューティングノードを表わす特定の通信管理モジュールに対応する。他の実施形態において、部分的なネットワークアドレスは、異なったビット数(例えば72)により、および/またはプレフィックスとは別のアドレスの一部を用いて、表わされてもよい。
【0072】
トポロジー情報272bの32ビットのグループは、異なる実施形態において様々な方法で諸情報を表わしてもよく、トポロジー情報グループ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のユニークなラック値を有しているように)追加のビットを有している。トポロジー情報が他の実施形態における他の方式で表わされてもよいことは十分に理解されるだろう。
【0073】
この例では、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グローバル/ローカルビットを表わす。1ビット識別子272f(IPv6アドレスのビット71)は、いくつかの実施形態で、単一のコンピューティングノードまたは(例えばブロードキャストまたはマルチキャストの一部として)複数のコンピューティングノードのグループにアドレスが対応するかを示し得るI/G個別/グループビットを表わす。少なくともいくつかの実施形態において、I/Gビットは0に設定され、対応する通信の仮想転送が用いられている場合、たとえば疑似コンピューティングノードルータを介して仮想サブネッティングにおいて使用するために、および/または、このような送信先アドレスとの受入方向の通信が32ビットのIPv4の組み込まれたネットワークアドレスおよび24ビットの要素ネットワーク識別子の値に対応するコンピューティングノードよりむしろ6ビットのスロット識別子の値に対応するコンピューティングノードに対して送られることを表示するためになどの場合、U/Lビットは1に設定される。インタフェース識別子情報が他の実施形態における他の方式で表わされてもよいことは、十分に理解されるだろう。
【0074】
上述のように、ONMシステムは、(仮想コンピュータネットワークのための通信を構成することにより、および別様に管理することによるなどして)少なくともいくつかの実施形態において、1つ以上の中間の物理ネットワークの端にある1つ以上の通信管理モジュールのオペレーションを介して仮想コンピュータネットワークを確立および/または維持することができる。いくつかの状況において、通信管理モジュールは、仮想コンピュータネットワークのための通信を管理する一部として、(例えば、仮想コンピュータネットワークがどの実体のために動作するかに基づいて)モジュールの関連するコンピューティングノードが属する仮想コンピュータネットワークを追跡する、または別様に決定する。対応する仮想コンピュータネットワークの通信管理モジュールによるコンピューティングノードの決定は、(その情報を提供するシステム管理モジュールとの対話によって、このようなコンピューティングノード上で実行するソフトウエアプログラムを追跡することによって、このようなコンピューティングノードに関連する実体を追跡することによってなど)様々な実施形態において様々な方法で実行され得る。例えば、特定のコンピューティングノードがユーザのために1つ以上のソフトウエアプログラムを実行し始め、そのユーザが他のコンピューティングノード上で実行する他のソフトウエアプログラムをも有している場合、ユーザープログラムを実行する新たなコンピューティングノードは、それらの他のコンピューティングノードを含むユーザのための仮想コンピュータネットワークに関連づけられつとして選択され得る。あるいは、ユーザまたは他の実体は、(例えば実体がコンピューティングノードの異なるグループ間に複数の別の仮想コンピュータネットワークを維持する場合)コンピューティングノードが属する特定の仮想コンピュータネットワークを指定することができる。さらに、少なくともいくつかの実施形態において、ONMシステムの1つ以上のシステム管理モジュールは、コンピューティングノード間の通信を設定することを促進することができる(どのコンピューティングノードがどの仮想コンピュータネットワークに属するのかを追跡および/または管理することによって(例えば、顧客または他の実体のために実行しているプログラムに基づいて)、特定の仮想コンピュータネットワーク(例えば特定の顧客または他の実体により)のために用いられた仮想ネットワークアドレスに対応する実際の物理的基盤ネットワークアドレスに関する情報を提供することによって、など)。
【0075】
上述のように、いくつかの実施形態において、プログラム実行サービスは、それぞれが複数の仮想マシンを提供し、仮想マシンのそれぞれが顧客のために1つ以上のプログラムを実行することができる、(例えば、1つ以上のデータセンタ内の)複数の物理的コンピューティングシステムを用いて、第三者の顧客のプログラムを実行する。いくつかのこのような実施形態において、顧客は、プログラム実行サービスに対して実行するべきプログラムを提供し得、プログラム実行サービスによって提供される物理的または仮想的なハードウェア設備の実行時間および他のリソースを予約。さらに、顧客および/またはプログラム実行サービスは、専用の物理ネットワーク上での動作の様子を仮想コンピュータネットワークのコンピューティングノードに透過的に提供するように、顧客のコンピューティングノードのためのプログラム実行サービスによって用いられる仮想コンピュータネットワークを定義することができる。さらに、いくつかの実施形態において、ONMシステムの実施形態によって管理される仮想コンピュータネットワークは、設定可能なネットワークサービスによって提供される、設定されたコンピュータネットワークであってもよい。いくつかのこのような実施形態において、顧客または他のユーザは、ネットワークトポロジー情報および/または提供されるコンピュータネットワークのためのネットワークアクセス制約などのような、提供される構成されたコンピュータネットワークのための様々な種類の設置情報を指定し、提供される設定されたコンピュータネットワークによって1つ以上の遠隔地からやりとりしてもよい。
【0076】
図3は、コンピューティングノード間の通信を管理するためのシステムの実施形態を実行するのに好適なコンピューティングシステムの例を図示するブロック図である。具体的には、
図3は、データセンタまたは同一場所に配置されたコンピューティングノードの他のグループなどのような、コンピューティングシステムおよび相互ネットワークのグループ399を示す。いくつかの実施形態において、ユーザまたは他の実体に対して仮想コンピュータネットワークを提供するために、グループ399のコンピューティングシステムのいくつかまたはすべてが、ONMシステムの実施形態によって用いられてもよい。グループ399は、サーバコンピューティングシステム300と、1つ以上の仮想マシンを実行することができるホストコンピューティングシステム350と、ホストコンピューティングシステム350に類似する他のホストコンピューティングシステム390と、ホストコンピューティングシステム390を管理し、コンピューティングシステム390または別のコンピューティングシステム(図示せず)の1つの上で実行する、オプションの通信管理モジュール360とを含む。システムマネージャコンピューティングシステム300と、ホストコンピューティングシステム350および390とは、ネットワーキング装置362および他のネットワーキング装置(図示せず)を含む内部ネットワーク380を介して互いに接続される。ネットワーク380は、グループ399のための複数の異種の物理ネットワーク(図示せず)を結合し、他のコンピューティングシステム395などのような外部ネットワーク(図示せず)および/またはシステムにアクセスを提供し得る相互接続ネットワークであってもよい。図示する例では、ネットワーキング装置362は、ネットワーク380とホストコンピューティングシステム350および390との間のゲートウエイを提供する。いくつかの実施形態において、ネットワーキング装置362は、例えば、ルータまたはブリッジであってもよい。
【0077】
コンピューティングシステム300は、グループ399内の仮想コンピュータネットワークを構成し管理するように、ならびに他の機能(例えば、コンピューティングノード上のプログラムを提供、初期化、および実行すること)を提供するように動作する。コンピューティングシステム300は、CPU305、様々のI/O構成要素310、ストレージ330およびメモリ320を含む。I/O構成要素は、ディスプレイ311、ネットワーク接続312、コンピュータ読み取り可能なメディアドライブ313、および他のI/O装置315(例えば、マウス、キーボード、スピーカ、など)を含む。
【0078】
ホストコンピューティングシステム350は、仮想コンピュータネットワーク(例えば、様々なユーザのためにプログラムを実行するコンピューティングノード)内のコンピューティングノードとして使用するためなどの、1つ以上の仮想マシンを提供するために動作する。ホストコンピューティングシステム350は、CPU352、様々なI/O構成要素353、ストレージ351、およびメモリ355を含む。ここでは図示されないが、I/O構成要素353は、I/O構成要素310のものと同様の構成要素を含んでもよい。仮想マシン通信マネージャモジュール356および1つ以上の仮想マシン358は、メモリ355において実行しており、モジュール356は、関連する仮想マシンコンピューティングノード358のための通信を管理する。通信管理モジュール356は、
図2A〜
図2Bのマッピング情報212および262に類似する方法で、ストレージ上に、コンピューティングノード358および他のコンピューティングノードと関連する様々なマッピング情報354を維持する。他のホストコンピューティングシステム390の構造は、ホストコンピューティングシステム350のものに類似してもよく、または、その代りに、ホストコンピューティングシステム350および390のいくつかまたはすべては、提供される仮想マシンを使用せずに、実行プログラムによってコンピューティングノードとして直接動作してもよい。典型的な配置において、グループ399は、個別の物理的サブネットワークおよび/またはネットワークの多くに編制された、ここで図示されるものなどのような何百または何千ものホストコンピューティングシステムを含んでもよい。
【0079】
システム管理モジュール340の一実施形態は、コンピューティングシステム300のメモリ320内で実行している。いくつかの実施形態において、システム管理モジュール340は、複数のコンピューティングノードが、仮想コンピュータネットワークの一部(例えば、ホストコンピューティングシステム350上の1つ以上の仮想マシンコンピューティングノード、またはホストコンピューティングシステム390の1つを用いる1つ以上のコンピューティングノード)として用いられる旨の表示を受信し得、いくつかの状況において、仮想コンピュータネットワークのための特定のコンピューティングノードを選択し得る。あるケースでは、様々な仮想コンピュータネットワークの構造および/または所属に関する情報は、モジュール340によってストレージ330上の提供データベース332に格納され、様々な時に通信管理モジュールに対して提供されてもよい。同様に、あるケースでは、様々な仮想ネットワークの設定されたネットワークトポロジーに関する情報は、(
図2Cの論理ネットワーキングデバイス情報294に類似する方法で)モジュール340によってストレージ330上の論理ネットワーキングデバイスデータベース334に格納され、様々な時に通信管理モジュールに対して提供されてもよい。
【0080】
他の部分でよりいっそう詳細に論じられるように、通信管理モジュール356および360(および他の関連するコンピューティングノード(図示せず)を管理する他の通信管理モジュール(図示せず))と、システム管理モジュール340とは、提供される仮想コンピュータネットワークのための設定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供することを含んで、コンピューティングノード間の通信を管理するために様々な方法で相互に作用してもよい。このような対話は、例えば、ネットワーク380上で仮想コンピュータネットワークおよび状況に応じて1つ以上の外部ネットワーク(図示せず)をネットワーキング装置362または他のネットワーキング装置(図示せず)の特殊構成なしでオーバーレイすることにより、コンピューティングノードの特殊設定なしで、および通信のカプセル化なしで、コンピューティングノード358および/または他のコンピューティングノードが仮想コンピュータネットワーク上で相互通信することを可能にし得る。
【0081】
コンピューティングシステム300、350、390および395、およびネットワーキング装置362は、単に例示されているだけであって、本発明の範囲を限定するようには意図されないことは十分に理解されるだろう。例えば、コンピューティングシステム300および/または350は、インターネットまたはワールド・ワイド・ウェブ(「Web」)などのような、グループ399の外の1つ以上のネットワークを介することを含んで、図示されない他の装置に接続されてもよい。より一般には、コンピューティングノードまたは他のコンピューティングシステムは、相互に作用することができ、かつ記載された種類の機能性を実行することができるハードウェアまたはソフトウェアの任意の組み合わせを含んでもよく、それには、デスクトップまたは他のコンピュータ、データベースサーバ、ネットワーク記憶装置および他のネットワーク装置、PDA、携帯電話、無線電話、ページャ、電子手帳、インターネット・アプライアンス、テレビベースのシステム(例えば、セットトップボックスおよび/またはパーソナル/ディジタルビデオレコーダを用いて)、および適切な通信能力を含む様々な他の消費者製品が限定せずに含まれる。さらに、いくつかの実施形態において、図示するモジュールによって提供される機能は、より少数のモジュールに組み合わされてもよいし、または追加モジュールに分散されてもよい。同様に、いくつかの実施形態において、図示するモジュールのいくつかの機能性は提供されなくてもよいし、および/または他の追加機能性が利用可能であってもよい。
【0082】
様々な要素が用いられる間メモリまたはストレージに格納されるように図示されているが、記憶管理とデータ保全の目的のために、メモリと他の記憶装置との間でこれらの要素または一部が転送されてもよいことも十分に理解されるだろう。あるいは、他の実施形態において、ソフトウェアモジュールおよび/またはシステムのいくつかまたはすべては、別の装置上のメモリで実行し、かつ図示されるコンピューティングシステムと相互コンピュータ通信を介して通信してもよい。更に、いくつかの実施形態において、システムおよび/またはモジュールのいくつかまたはすべては、限定されないが、以下を含む、少なくとも部分的にファームウェアおよび/またはハードウェアとして、他の方式で実現されてもよいし、または提供されてもよい:1つ以上の特定用途向けIC(ASIC)、標準的な集積回路、コントローラ(例えば、適切な命令を実行することにより、およびマイクロコントローラおよび/またはエンベデッドコントローラを含むことによる)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブルロジックデバイス(CPLD)等。モジュール、システム、およびデータ構造のいくつかまたはすべてもまた、ハードディスク、メモリ、ネットワークまたは適切なドライブによって、または適切な接続を介して読み出されるポータブル媒体品などのような、コンピュータ読み取り可能な媒体に(例えば、ソフトウェア命令または構造化データとして)格納されてもよい。システム、モジュールおよびデータ構造もまた、無線ベースおよび有線/ケーブルベースの媒体を含む様々なコンピュータ読み取り可能な送信媒体上で生成データ信号(例えば、キャリア波または他のアナログまたはデジタル伝播信号の一部として)として送信されてもよいし、および様々な形態(例えば、単一または多重化されたアナログ信号の一部として、または複数の離散的なデジタルパケットまたはフレームとして)を使用してもよい。このようなコンピュータプログラムプロダクトはまた、他の実施形態において他の形態をとってもよい。したがって、本発明は、他のコンピュータシステム構成により実施されてもよい。
【0083】
図4A〜
図4Bは、ONMシステム管理ルーチン400の実施形態の例のフローチャートである。ルーチンは、例えば、
図1のシステム管理モジュール110、
図2A〜
図2Cのシステム管理モジュール290、および/または
図3のシステム管理モジュール340の実行によって提供されてもよく、仮想コンピュータネットワークの設定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供するように通信を管理すること、ならびに、いくつかの状況において他の種類の管理操作を実行することを含んで、1つ以上の中間ネットワークにわたって複数のコンピューティングノード間の通信を管理することを支援することなどを行う。少なくともいくつかの実施形態において、ルーチンは、共通の中間ネットワークにわたって複数の異なる実体のための通信を管理するシステムの一部として提供され得、通信は、各々のコンピューティングノードがその要素に特有の私的仮想コンピュータネットワークを用いて他の関連するコンピューティングノードと透過的に通信することを可能にするように設定される。さらに、ルーチンは、(通信が認証されているか否かの判定で通信管理モジュールを支援することによってなど)無許可の通信が送信先コンピューティングノードに提供されることを防止することを促進することができる。
【0084】
図示される実施形態において、ルーチンは、要求が受信されるブロック405から開始する。ルーチンは、ブロック410に進んで要求の種類を判定する。要求の種類が、1つ以上のコンピューティングノードを特定の示された実体および/または要素の仮想コンピュータネットワークに関連づけることであることが判定される場合、たとえばそれらのコンピューティングノードが実体のための仮想コンピュータネットワークの一部となるべき場合(例えば、その実体のために1つ以上のプログラムを実行しているか、実行するべきである)場合、ルーチンは、ブロック415に進み、それらのコンピューティングノードを、その示された実体および仮想コンピュータネットワークに関連づける。いくつかの実施形態では、ルーチンは、更に、示された実体および仮想コンピュータネットワークに関連付けるべき1つ以上のコンピューティングノードを、例えば示された実態によって提供された情報に基づいて決定し得るが、他の実施形態においては、このようなコンピューティングノードの選択および/またはそれらのコンピューティングノード上の適切なプログラムの実行が他の方法で実行されてもよい。さらに、他のところでよりいっそう詳細に論じられるように、いくつかの実施形態において、コンピューティングノードの1つ以上は、各々が1つ以上の物理的コンピューティングシステムによって提供される仮想マシンであってもよい。ルーチンは、次にブロック420に進み、コンピューティングノードの表示、および示された実体および仮想コンピュータネットワークとのそれらの関連を格納する。具体的には、図示する実施形態において、ルーチンは、コンピューティングノードに対応する物理的基盤ネットワークアドレスの表示と、仮想コンピュータネットワークの一部としてコンピューティングノードのための、実体によって用いられる仮想ネットワークアドレスと、(状況に応じて)コンピューティングノードに対して割り当てられた仮想ハードウェアアドレスと、関連する実体の表示とを格納する。他のところでよりいっそう詳細に論じられるように、コンピューティングノードに対応する物理的基盤ネットワークアドレスは、いくつかの実施形態で、その単一のコンピューティングノードに特有の基盤ネットワークアドレスであり得るが、他の実施形態においては、その代りに、関連する通信管理モジュールによって管理され得るなどの、サブネットワークまたは複数のコンピューティングノードの他のグループを参照してもよい。
【0085】
受信される要求の種類がコンピューティングノードまたは他のネットワーク装置の仮想ネットワークアドレスのためのアドレス解決に対する要求(管理されたコンピューティングノードのための通信管理モジュールからなど)であることが、その代りにブロック410において判定される場合、ルーチンは、その代りに、ブロック425に進み、そこでは例えば、要求がなされる管理されたコンピューティングノードが仮想ネットワークアドレスの解決が要求されるコンピューティングノードに対して通信を送信することを認証されるか否かに基づいて(例えば、2つのコンピューティングノードが属する仮想コンピュータネットワークに基づいて)、要求がされる管理されたコンピューティングノードが現在構成されている仮想コンピュータネットワークの一部である有効なコンピューティングノードであるか否かにに基づいて、および/または要求がされる示されたコンピューティングノードを実際に管理する通信管理モジュールから要求が受信されるか否かに基づいて、要求が1つ以上の方法において認証されるか否かを決定する。要求が認証されることが決定される場合、ルーチンは、ブロック430に進み、そこではブロック405において受信された要求に含まれていたような、特定の仮想コンピュータネットワークのための重要な仮想ネットワークアドレスを取得する(仮想コンピュータネットワークのための取得された要素のネットワーク識別子または仮想コンピュータネットワークに関連する要素の他の表示(例えば、固有の数値または英数字のラベル)に基づいて識別され得るなど)。ルーチンは、次にブロック435に進み、仮想コンピュータネットワークのための仮想ネットワークアドレスに関連するコンピューティングノードのための格納された情報(具体的には、ブロック420に関して前に格納し得る、コンピューティングノードに対応するネットワーク位置のための物理的基盤ネットワークアドレスにその仮想ネットワークアドレスを関連づける情報に関する情報、および状況に応じて仮想ネットワークアドレスのための他の情報(例えば、関連づけられる仮想ハードウェアアドレス、実際の基盤ネットワークアドレスと共に物理的に実行されたコンピューティングノードまたは(その代りに)実際の基盤ネットワークアドレスを有しない論理ネットワーキング装置に仮想ネットワークアドレスが対応するか否かに関する表示、役割に関する情報、または構成されたネットワークトポロジー情報に関しての仮想ネットワークアドレスに対応する装置のステータス、など)に関する情報を取り出す。ブロック435の後、ルーチンは、440に進み、要求者に対してとり出された情報の表示を提供する。仮想ネットワークアドレスが、関連する物理的基盤ネットワークアドレスを有しない論理ネットワーキング装置のためのものである場合、例えば、ルーチンは、仮想ネットワークアドレスに対応する装置の状態または種類に関してブロック440内で表示を提供することができる。ここでは図示されないが、要求が認証されないことをブロック425内の判定が決定するならば、ルーチンは、その代りに、ブロック405で受信された要求に対するエラーメッセージにより応答することにより、または受信された要求に対して応答しないことによるなど、その要求のためのブロック430〜440を実行しなくてもよい。さらに、他の実施形態において、ルーチンは、要求された情報によって応答する前に受信される要求を確認するために(要求を開始したコンピューティングノードがその情報を得ることを認証されることを検証するためになど)、1つ以上の他のテストを実行してもよい。
【0086】
その代りに、受信される要求が、(その仮想コンピュータネットワークに関連するユーザからなどの)示された仮想コンピュータネットワークのためのネットワークトポロジー情報を設定することであることが、ブロック410において判定された場合、ルーチンはブロック470に進み、示された仮想コンピュータネットワークのためのネットワークトポロジー情報および状況に応じて、機能がエミュレートされる論理ネットワーキング装置によって表わされるネットワークトポロジーの1つ以上のネットワーキング装置を指定するためなどの、他の構成情報の表示を受信する。ブロック475において、ルーチンは、次に、指定されたネットワーキング装置のいくつかまたは全部のための仮想ハードウェアアドレスを、それらの論理ネットワーキング装置を介して通信を送信することを試みるコンピューティングノードによる後の使用のため等に、判定する。ブロック475の後、ルーチンは、ブロック480に進み、示された仮想コンピュータネットワークのための論理ネットワーキング装置に関する情報および他の構成されたネットワークトポロジー情報を格納する。
【0087】
受信される要求が別の種類であることがその代りにブロック410において判定される場合、ルーチンは、その代りにブロック485に進み、別の示されたオペレーションを必要に応じて実行する。例えばいくつかの実施形態において、ルーチンは、特定のコンピューティングノードが、前に特定の実体および/または仮想コンピュータネットワークにより関連づけられていたが、その関連付けが終了する場合(例えば、そのコンピューティングノード上でその実体のための実行されている1つ以上のプログラムが終了する、コンピューティングノードが障害を起こす、またはそうでなければ利用不可能になる等)など、特定のコンピューティングノードに関する保存した情報を更新する要求を受信し得る。ルーチンはまた、更に詳細に他のところで論じられるように、特定のコンピューティングノードの動作を開始することを自動的に決定することを含む、複数のコンピューティングノードのシステムの管理に関する様々な他の機能を実行し得る。さらに、ここでは図示されないが、他の実施形態において、ルーチンは、必要に応じて保存した情報を検討し更新するために不定期の維持管理作業を実行するように、あらかじめ定められた期間が終了した後など、時には他の種類の機能を実行する。さらに、可能な認証上の問題が、仮想ネットワークアドレスのための受信されるアドレス解決要求に関してなどで、検出された場合、ルーチンは、エラーを信号で送るために、および/または必要に応じて他の対応する動作を実行するために様々な動作を実行する。
【0088】
ブロック420、440、480および485の後、ルーチンは、ブロック495に進み、終了するための明示的な表示が受信されるまでなど、継続するかどうかを決定する。継続すると決定判定される場合、ルーチンは、ブロック405に戻り、そうでなければブロックに499進み、終了する。
【0089】
図5A〜
図5Bは、ONM通信管理ルーチン500の例示実施形態のフローチャートである。ルーチンは、例えば、
図1の通信管理モジュール109a、109b、109c、109dおよび/または150、
図2A〜
図2Cの通信管理モジュール210および/または260、および/または
図3の通信管理モジュール356および/または360の実行によって、たとえば、管理されたコンピューティングノードに(および/またはから)通信を認証するべきか否かを判定すること含む、1つ以上の共有される中間ネットワーク上で私的な仮想コンピュータネットワークを提供するために1つ以上のコンピューティングノードの関連づけられるグループの間の通信を管理するために、および仮想コンピュータネットワークのための構成されたネットワークトポロジーに対応する論理ネットワーキング機能を提供することを支援するなどのために、提供されてもよい。
【0090】
ルーチンは、ブロック505から開始し、そこでは表示がノード通信または他のメッセージに関して受信される。ルーチンは、ブロック510に進み、したがって、通信または他のメッセージの型を判定し、それに従って処理を進める。ブロック510において、メッセージが、ARP要求などのような、ネットワークアドレス解決のための関連する管理されたコンピューティングノードからの要求であることが、判定される場合、ルーチンは、ブロック515に進み、要求において示された対象となる仮想ネットワークアドレスを決定する。そして、ルーチンは、ブロック520に進み、
図4A〜
図4Bのブロック425〜440に関して論じられるように、要求を提供したコンピューティングノードに関連する仮想コンピュータネットワークのための示された仮想ネットワークアドレスのための仮想ネットワークアドレス解決のためのシステム管理モジュールに対して、要求を送信する。他のところでよりいっそう詳細に論じられるように、ルーチンは、いくつかの実施形態において、各々の管理されたコンピューティングノードに関連する仮想コンピュータネットワークおよび/または実体に関する情報、ならびに仮想コンピュータネットワークのための設定されたネットワークトポロジー情報を追跡することができるが、他の実施形態においては、少なくともいくつかのこのような情報が、その代りに、コンピューティングノードによりおよび/またはシステム管理モジュールによりルーチンに提供されていてもよい。または、その代りにシステム管理モジュールは、現在のルーチンにより提供され追跡されることなく、その情報を追跡し格納してもよい。ここでは図示されないが、他の実施形態および状況において、このようなアドレス解決要求は、他の方式で処理されてもよい。例えば、特定の通信管理モジュールによって管理されているコンピューティングノードがその通信管理モジュールによって管理される別のコンピューティングノードのためのアドレス解決要求を提供するならば、ルーチンは、その代りに、ローカルに保存した情報に基づいてなどのように、システム管理モジュールとの対話をせずに要求に対して応答してもよい。さらに、図示される実施形態において、受信される要求が、示されたネットワーキング層アドレスに対応するコンピューティングノードのリンク層のハードウェアアドレスを提供するための要求であるが、他の実施形態において、アドレス解決要求は、他の形式を有していてもよいし、または、コンピューティングノードは、仮想ネットワークアドレスを示したコンピューティングノードに関する他の種類の情報を要求してもよい。
【0091】
図示される実施形態において、ルーチンは、次にブロック525に進み、識別された仮想ネットワークアドレスに対応する物理的基盤ネットワークアドレスおよび/または他の情報(例えば、仮想ネットワークアドレスが物理的に実行されない論理ネットワーキング装置に対応するという表示)を含むシステム管理モジュールからの応答を受信し、(例えば、ルーチンによって生成される、または応答において提供される、ダミーの仮想ハードウェアアドレスに基づいて)ルーチンによって後で使用する固有のハードウェアアドレスに対してその物理的基盤ネットワークアドレスおよび/または他の情報をマッピングする情報をローカルに格納する。ルーチンは、次に、要求するコンピューティングノードに対してハードウェアアドレスを提供する(それは、示された仮想ネットワークアドレスと共にコンピューティングノードに対して送信する通信の一部として用いる)。他のところでよりいっそう詳細に論じられるように、提供される物理的基盤ネットワークアドレスの応答は、いくつかの実施形態において、対象の示されたコンピューティングノードに対して特有の物理的基盤ネットワークアドレスを含み得るが、他の実施形態において、物理的基盤ネットワークアドレスは、それらの他のコンピューティングノードを管理する別の通信管理モジュールに対応するように、示されたコンピューティングノードが属する複数のコンピューティングノードのサブネットワークまたは他のグループに対応していてもよい。ルーチンは、次に、ブロック530に進み、ブロック540−560に関して論じられるように、送出方向のノード通信の処理の一部としてブロック515〜525が実行されたか否かを判定する。そして、そうであれば、ブロック547に進む。ここでは図示されないが、いくつかの実施形態において、ルーチンが、その代りに、(例えば、示された送信先コンピューティングノードと通信することを認証されていない、要求するコンピューティングノードに基づいて)システム管理モジュールからのエラー応答を受信し得、または何の応答も受信しない場合がある。そして、そうであれば、要求するコンピューティングノードに対していかなる応答をも送信しなくてもよいし、または、そのコンピューティングノードに、対応するエラーメッセージを送信してもよい。
【0092】
通信または他のメッセージの型がルーチンによって管理されたコンピューティングノードからルーチンによって管理されない別の示されたリモート送信先コンピューティングノードへの送出方向のノード通信であることが、その代りに、ブロック510において判定された場合、ルーチンは、ブロックに540進み、通信ヘッダからの送信先コンピューティングノードのための示されたハードウェアアドレスを特定する。ブロック545において、前にブロック525に関して論じられたように、ルーチンは、その後、その送信先ハードウェアアドレスが送信先コンピューティングノードに対応する物理的基盤ネットワークアドレスに対して(または送信先ハードウェアアドレスが論理ネットワーキング装置に対応するという表示に対して)あらかじめマッピングされたハードウェアアドレスであるか否かを判定する。そうでない場合、ブロック515に進み、いくつかの実施形態において、ルーチンは、送出方向のノード通信のためのこのような対応する物理ネットワークアドレスを決定するために、ブロック515〜525を実行するが、他の実施形態においては、このような機能が実行されない(例えば、示されたハードウェアアドレスがマッピングされたアドレスでないならば、ルーチンは、送信ノードへ戻るエラーメッセージによってなど、送出方向のノード通信に障害を起こさせてもよい)。
【0093】
示されたハードウェアアドレスがマッピングされたアドレスである場合、またはチェックが実行されない場合、ルーチンは、ブロック547に進み、仮想コンピュータネットワークのための設定されたネットワークトポロジーの一部である論理ネットワーキング装置に対して送信先ハードウェアアドレスが対応するか否かを判定する。そうである場合、ルーチンは、ブロック549に進み、対象とする送信先に通信を方向づけることに使用される通信ヘッダから送信先仮想ネットワークアドレスを特定して、その後、ブロック555に進む。具体的には、ブロック549におけるルーチンは、あらかじめ格納されたマッピング情報から、またはブロック520および525のそれに類似した方法でネットワークアドレス解決要求を実行するためにシステム管理モジュールと対話することによるなどで、特定された送信先仮想ネットワークアドレスに対応する物理的基盤ネットワークアドレスを決定する。
【0094】
その代りに送信先ハードウェアアドレスが論理ネットワーキング装置に対して対応しないことが、ブロック547において判定されるならば、ルーチンは、ブロック550に進み、ハードウェアアドレスに対してマッピングされる物理的基盤ネットワークアドレスを取り出す。ブロック555において、ルーチンは、次いで、ブロック550において取り出された、またはブロック549において決定された、物理的基盤ネットワークアドレスを用いて、送信および送信先のコンピューティングノード間の1つ以上の中間ネットワークのためのネットワーキングアドレスプロトコルにより通信ヘッダを書き換える。ヘッダの書き換えは、対応する物理的基盤ネットワークアドレスであるために送信元コンピューティングノードのための仮想ネットワークアドレスを変更することを含む、新たなヘッダの他の情報を変更することをさらに含み、少なくともいくつかの実施形態において、基盤の1つ以上の中間の物理ネットワーク上に仮想コンピュータネットワークのオーバーレイの一部としてカプセル化なしで受信される通信を変更することを含む。更に、送信先ハードウェアアドレスが論理ネットワーキング装置に対応する通信のために、ブロック555におけるルーチンは、仮想コンピュータネットワークのための構成されたネットワークトポロジーにより送信先コンピューティングノードに対する通信を転送するために用いられるであろう1つ以上の論理ネットワーキング装置によって実行されるであろう動作および機能をエミュレートするために、論理ネットワーキング機能を提供することに対応する他の変更を、さらに実行してもよい。ブロック560において、ルーチンは、次いで、送信先コンピューティングノードに、基盤中間ネットワーク上に変更される送出方向の通信の転送を開始するによってなど、送信先コンピューティングノードに変更される送出方向の通信を提供することを促進する。ここでは図示されないが、他の実施形態において、様々なさらなる種類の処理が、通信が有効であるかまたは別様に様々な方法で認証されることを検証するために、(例えば、送信元コンピューティングノードが送信先コンピューティングノードに対して通信を送信することを認証されることを検証するために、同一の仮想コンピュータネットワークの同一の実体または一部を関連づけられることに基づいて、相互通信することを認証される異なる実体に関連する送信および送信先のコンピューティングノードに基づいて、通信または通信に対する特有の他の情報の型に基づいて、等)送出方向のノード通信のために実行されてもよい。
【0095】
受信メッセージが外部コンピューティングノードからの管理されたコンピューティングノードの1つのための受入方向のノード通信であることが、ブロック510においてその代りに判定された場合、ルーチンは、ブロック565に進み、通信ヘッダからの送信および送信先のコンピューティングノードのための物理的基盤ネットワークアドレスを特定する。ブロック565の後、ルーチンは、ブロック570に進み、状況に応じて受入方向の通信が1つ以上の方法において有効であることを検証する。例えば、ルーチンは、ソースの物理的基盤ネットワークアドレスの位置に対応するコンピューティングノードに対して送信元通信ノードのための物理的基盤ネットワークアドレスが現実にマッピングされるか否かを、システム管理モジュールとの対話に基づいておよび/またはあらかじめルーチンによって取得され格納された他の情報に基づいてなどして、判定してもよい。さらに、ルーチンは、送信先通信ノードのための物理的基盤ネットワークアドレスが実際の管理されたコンピューティングノードに対応するか否かを判定してもよい。ここでは図示されないが、受入方向の通信が有効でないと判定された場合、ルーチンは、1つ以上のエラーを生成し、関連づけられる処理を実行し、および/または、示される宛先ノードにそれを転送せずに受入方向の通信を削除することのような、図示されない様々な動作を行うことができる。例えば、受入方向の通信が現在の管理されたコンピューティングノードに対応しない送信先ネットワークアドレスを示す場合、ルーチンは、受入方向の通信を削除してもよい、および/またはエラーメッセージを開始してもよいし(いくつかの実施形態において、このようなエラーメッセージは送信元コンピューティングノードに対して送信されないが)、または、あらかじめルーチンに支援された、移動されたコンピューティングノードに対する通信を転送することを支援するために他の動作が行われてもよい。
【0096】
図示される実施形態において、ブロック570の後、ルーチンは、ブロック575に進み、物理的送信先基盤ネットワークアドレスに対してマッピングされるハードウェアアドレスおよび仮想ネットワークアドレスを取り出し、仮想ネットワークアドレスとハードウェアアドレスと共にコンピューティングノードに送信されるために表示されるように仮想コンピュータネットワークのための通信ヘッダを書き換える。例えば、いくつかの実施形態において、送信先仮想ネットワークアドレスは、送信先物理的基盤ネットワークアドレスのビットのサブセットからなど、送信先物理的基盤ネットワークアドレス自体から取得されてもよい。さらに、送信先ハードウェアアドレスは、あらかじめブロック525に関して論じられたように、あらかじめ物理的送信先基盤ネットワークアドレスに対してマッピングされてもよい。このような先のマッピングが生じていない状況において、ルーチンは、その代りに、このような情報を取得するためにブロック515〜525を実行してもよい。ルーチンは、仮想コンピュータネットワークのための通信ヘッダを同様に書き換えて、それがコンピューティングノードから送信され、ソース仮想ネットワークアドレスとソースハードウェアアドレスが送信元のコンピューティングノードに対応するように見えるようにすることができる。さらに、少なくともいくつかの実施形態において、ブロック575におけるルーチンは、仮想コンピュータネットワークのための構成されたネットワークトポロジーにより、送信先コンピューティングノードに対する通信を転送するために用いられていた1つ以上の論理ネットワーキング装置によって実行されるであろう動作および機能をエミュレートするために、論理ネットワーキング機能を提供することに対応する、受入方向の通信に対する他の変更をさらに実行してもよい。ブロック575の後、ルーチンは、ブロック580に進み、宛先ノードに対して変更される受入方向の通信の転送を開始するによってなど、送信先コンピューティングノードに対して変更される受入方向の通信を提供することを促進する。
【0097】
別の種類のメッセージが受信されることがブロック510においてその代りに判定された場合、ルーチンは、ブロック585に進み、別の示された動作を必要に応じて実行する(特定のコンピューティングノードに関連する実体に関する情報を格納すること、特定の仮想コンピュータネットワークのために設定されたネットワークトポロジーに関する情報を格納すること、仮想コンピュータネットワークのための設定されたネットワークトポロジーに対応する論理ネットワーキング機能を提供するためにコンピューティングノードからの要求および他のメッセージにいわば応答すること(例えば、それらが物理的に実証されたならば、指定された論理ネットワーキング装置によって実行されるであろう動作および他の機能をエミュレートすることによって)、管理されているコンピューティングノードまたはリモートコンピューティングノードに関する変更を反映するためにあらかじめマッピングされ保存された情報を更新することなどである)。
【0098】
ブロック560、580、または585の後、または送出方向の通信に関して処理が実行されていないことがブロック530においてその代りに判定されるならば、ルーチンは、ブロック595に進み、終了するための明示的な表示が受信されるまでなど、継続すべきであるか否かを決定する。継続すべきであると決定された場合、ルーチンは、ブロック505に戻り、そうでなければブロックに599に進んで終了する。
【0099】
さらに、様々な実施形態は、顧客ユーザおよび他の実体のために、コンピューティングノードおよびそれらの通信を構成する目的のためにシステム管理モジュールの実施形態と対話するメカニズムを提供することができる。例えば、いくつかの実施形態は、ユーザが、仮想コンピュータネットワーク、仮想コンピュータネットワークのためのネットワークトポロジー情報の設定、および仮想ネットワークの帰属の指定の作成または削除を管理すること、ならびに提供されるアプリケーションの運用および管理に関連するより全般的な管理機能(例えば、ユーザアカウントの作成または変更、新たなアプリケーションの提供、ホストとして動作されるアプリケーションの起動、終了、または監視、グループに対するアプリケーションの割り当て、時刻または他のシステムリソースの予約など)を行うことができる、対話型のコンソール(例えば、対話型ユーザインタフェース、ウェブブラウザベースのインタフェース、などを提供するクライアントアプリケーションプログラム)を提供することができる。いくつかの実施形態において、ONMシステムの実施形態の機能のいくつかまたはすべては、ユーザまたは他の実体からの料金と交換に提供されてもよい。そして、そうであれば、システム管理モジュールの実施形態と対話するための、顧客ユーザおよび他の実体のためのメカニズムは、ユーザおよび他の実体が、支払いおよび支払い関連の情報を提供するための、ならびにそれに対応する支払情報を監視するためのメカニズムを含んでもよい。さらに、いくつかの実施形態は、ライブラリまたはクラスインタフェースによって提供されるAPIなどのような(例えば、C、C++、またはJava(登録商標)で書かれたプログラムによって呼び出されるように)、またはそうでなければ、および/またはWebサービスを介してなどのネットワークサービスプロトコルを用いて、他のコンピューティングシステムおよびプログラムが、記載された機能の少なくともいくつかをプログラムによって呼び出すことを可能にするAPIを提供してもよい。記載された技術が用いられ得るプログラム実行サービスの例示実施形態の例の運用に関する更に詳細な記述は、いずれもその全体が参考されることによって本明細書に援用される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号、および2008年12月10日に出願され「設定可能な私的なコンピュータネットワークにアクセスを提供すること(Providing Access To Configurable Private Computer Networks)」と題された米国特許出願第12/332,214号にて得ることができる。さらに、少なくともONMシステムのいくつかの実施形態によって用いら得る、提供される仮想ネットワークの運営に関する更なる詳細な記述は、その全体を参考することによって本明細書に援用される2008年3月31日に出願され「コンピューティングノード間の通信を設定すること(Configuring Communications Between Computing Nodes)」と題された米国特許出願第12/060,074号にて利用可能である。
【0100】
いくつかの実施形態において、仮想マシンを提供する複数の物理的マシンを収容するデータセンタのコンテキストにおいて記載される技術が使用されるが、他の具体化のシナリオが可能であることは、また十分に理解されるだろう。例えば、記載される技術は、組織全体に渡るネットワーク、またはその従業員および/または成員のために企業または他の機関(例えば大学)によって運用されるネットワークのコンテキストにおいて使用されてもよい。あるいは、記載される技術は、ネットワークセキュリティ、有効性、および隔離を改善するために、ネットワークサービスプロバイダによって使用されることができ得る。さらに、実施形態の例は、様々な目的のためのデータセンタまたは他のコンテキスト内で使用されてもよい。例えば、顧客に対して、提供されるアプリケーションに対するアクセスを販売するデータセンタオペレータまたはユーザは、顧客のアプリケーションとデータとの間のネットワーク隔離を提供するために、いくつかの実施形態において記載される技術を用いてもよい。ソフトウェア開発チームは、(例えば、開発、ビルド、試験、展開、製造、など)彼らが用いる様々な環境間のネットワーク隔離を提供するために、いくつかの実施形態おいて記載される技術を用いてもよい。組織は、1つの従業員グループまたは部門(例えば人事部)によって利用されたコンピューティング資源を別の従業員グループまたは部門(例えば会計課)によって利用されるコンピューティング資源から分離するために、いくつかの実施形態おいて記載される技術を用いてもよい。または、複数の構成要素アプリケーション(例えば、多重層ビジネスアプリケーション)を展開させているデータセンタの運用者またはユーザは、様々な構成要素の種類(例えば、ウェブのフロントエンド、データベースサーバ、ビジネスルールエンジン、など)のための機能の分解および/または分離を提供するために、いくつかの実施形態において記載される技術を用いてもよい。より一般には、記載される技術は、別個のコンピューティングシステムおよび/またはネットワークの物理的区分化を従来は必要とするであろう、ほとんどの任意の状況を反映するように、物理ネットワークを仮想化するために用いることができる。
【0101】
いくつかの実施形態において、上で論じられたルーチンによって提供される機能が、より多くのルーチンの中に分割される、またはより少数のルーチンに統合される等のように、別の方法で提供されてもよいことは、また十分に理解されるだろう。同様に、いくつかの実施形態において図示説明されたルーチンは、他の図示説明するルーチンがその代りにこのような機能をそれぞれ欠くまたは含む場合や、または提供される機能の量が変更される場合など、記載されたものよりも多い、または少ない機能を提供してもよい。さらに、各種動作が、特定の方式で(例えば、順次または並行して)および/または特定の順序で実行されるように図示説明されるかもしれないが、当業者は、他の実施形態において、動作が他の順序および他の方式で実行されてもよいことを十分に理解するだろう。当業者はまた、上で論じたデータ構造が、単一データ構成を多重データ構成に分割することによって、または単一データ構成に多重データ構成を統合することによってなどの、異なる方式において構成されてもよいことを十分に理解するだろう。同様に、いくつかの実施形態において、図示説明されたデータ構造は、他の図示説明されたデータ構造がその代りにこのような情報をそれぞれ欠くまたは含む場合、または格納される情報の量または型が変更される場合など、記載されたものよりも多い、または少ない情報を格納してもよい。
【0102】
[付記項1]
コンピュータネットワークのための論理ネットワーキング機能を提供するためのコンピューティングシステムのための方法であって、前記方法は、
第1の仮想コンピュータネットワークのために指定されたネットワークトポロジーを介して配置された複数のコンピューティングノードの量を指定する設定情報を受信することであって、前記ネットワークトポロジーは、前記複数のコンピューティングノードの別個のサブセットを各々含み、それぞれ複数の指定された物理的ルータ装置のうちの1つに関連づけられる複数のサブネットワークを含み、前記複数のコンピューティングノードは、それぞれ前記第1の仮想コンピュータネットワークのための別の仮想ネットワークアドレスを有することと、
前記複数のコンピューティングノードを相互に接続する別個の物理的基盤ネットワーク上に前記第1の仮想コンピュータネットワークをオーバーレイすることにより、前記受信された設定情報に従って自動的に前記第1の仮想コンピュータネットワークを実現することであって、前記複数のコンピューティングノードは、それぞれ前記基盤ネットワーク上の別個の位置に各々配置されており、前記第1の仮想コンピュータネットワークの実現は、前記複数の物理的ルータ装置を物理的に提供せずに、前記複数の物理的ルータ装置の機能をエミュレートすることを含むことと、
前記コンピューティングシステム上で実行する通信管理モジュールの制御下で、1つ以上の前記複数の物理的ルータ装置の機能をエミュレートするような方式で、前記複数のコンピューティングノード間の多重通信を自動的に管理することであって、それぞれの通信は、前記複数のコンピューティングノードの送信元の1つからであって、前記複数のコンピューティングノードのリモート送信先の1つに向けられ、宛先ノードのための仮想ネットワークアドレスを含み、および送信元コンピューティングノードが属する前記サブネットワークの1つに関連する物理的ルータ装置のための仮想ハードウェアアドレスを含むことと
を含み、前記通信の各々の管理は、
通信において含まれる前記仮想ネットワークアドレスに基づいて前記通信のための送信先コンピューティングノードを特定し、前記基盤ネットワーク内の前記送信先コンピューティングノードの前記位置に対して前記基盤ネットワーク上に通信を転送することと、
前記通信において含まれる前記仮想ハードウェアアドレスに基づいて前記通信のための物理的ルータ装置を特定し、前記特定された物理的ルータ装置が前記ネットワークトポロジーに基づいて前記送信元コンピューティングノードから前記送信先コンピューティングノードに前記通信を転送したならば、前記特定された物理的ルータ装置が前記通信に対して追加するであろう情報を含めるように前記通信を変更することと、
前記送信先コンピューティングノードに前記変更された通信を提供することとを含む
方法。
【0103】
[付記項2]
前記通信管理モジュールは、前記通信管理モジュールによって管理される前記多重通信が関連する部分のコンピューティングノードによって送信された通信であるように、前記複数のコンピューティングノードの前記部分に関連づけられ、前記通信管理モジュールは、前記関連する部分のコンピューティングノードが属する前記物理的基盤ネットワークの第1の物理的サブネットワークをさらに管理し、前記関連する部分の前記コンピューティングノードは、前記通信管理モジュールが前記2つ以上の前記サブネットワークに関連する前記物理的ルータ装置の2つ以上のための前記機能をエミュレートするように、前記第1の仮想コンピュータネットワークの前記サブネットワークの2つ以上に属し、各々の前記管理された通信を変更することは、前記通信に含まれた前記仮想ハードウェアアドレスを通前記信のための前記送信先コンピューティングノードに対応する仮想ハードウェアアドレスであるように変更するステップを含む、付記項1に記載の方法。
【0104】
[付記項3]
前記通信管理モジュールは、前記複数のコンピューティングノードの関連する部分を各々管理するオーバーレイネットワーク管理システムの多重通信管理モジュールの1つであり、前記第1の仮想コンピュータネットワークは、複数のリモートユーザーのために前記オーバーレイネットワーク管理システムによって提供される複数の仮想コンピュータネットワークの1つであり、複数の仮想コンピュータネットワークは、それぞれ前記物理的基盤ネットワーク上にオーバーレイされ、前記オーバーレイネットワーク管理システムによって提供される多重の複数のコンピューティングノードを含む、付記項2に記載の方法。
【0105】
[付記項4]
コンピュータネットワークのための論理ネットワーキング機能を提供するためのコンピュータで実現される方法であって、前記方法は、
指定されたネットワークトポロジーを介して配置された複数のコンピューティングノードを含む第1の仮想コンピュータネットワークのための設定情報を受信することであって、前記複数のコンピューティングノードは、それぞれ前記第1の仮想コンピュータネットワークのための別個の仮想ネットワークアドレスを有し、前記設定情報は、前記複数のコンピューティングノードを相互に接続し、かつ前記複数のコンピューティングノードの1つ以上に各々関連する1つ以上の指定されたネットワーキング装置を表示することと、
1つ以上の設定されたコンピューティングシステムの制御下で、別個の基盤ネットワーク上で前記第1の仮想コンピュータネットワークをオーバーレイすることにより、および前記指定されたネットワークトポロジーを物理的に実装せずに、前記複数のコンピューティングノード間の複数の通信のための前記指定されたネットワークトポロジーをエミュレートすることにより、前記受信した設定情報に従って前記第1の仮想コンピュータネットワークを自動的に提供することであって、前記複数の通信は、それぞれ前記複数のコンピューティングノードの送信元の1つから、それぞれ前記通信のための送信先コンピューティングノードである前記複数のコンピューティングノードの1つ以上に対して各々送信されており、各通信は、前記1つ以上の送信先コンピューティングノードに対応する仮想ネットワークアドレスを含み、前記通信の最初の中間の送信先である前記指定されたネットワーキング装置の1つに関連する仮想ハードウェアアドレスを含むことと
を含み、前記指定されたネットワークトポロジーの前記エミュレートは、
前記複数通信の各々のために、前記通信に含まれる前記仮想ネットワークアドレスに基づいて前記1つ以上の送信先コンピューティングノードを特定することと、
前記1つ以上の送信先コンピューティングノードの各々のために、
前記送信先コンピューティングノードの位置に対して前記基盤ネットワーク上で前記通信を転送することと、
関連する仮想ハードウエアアドレスが前記通信において含まれる前記指定されたネットワーキング装置によって前記送信元コンピューティングノードから前記送信先コンピューティングノードに前記指定されたネットワークトポロジーを介して転送された前記通信に対応する情報を含めるように前記通信を変更することと、
前記送信先コンピューティングノードに前記変更された通信を提供することとを含む
方法。
【0106】
[付記項5]
前記指定されたネットワークトポロジーは、前記複数のコンピューティングノードの別個のサブセットを各々含む前記第1の仮想コンピュータネットワークの複数の論理的サブネットワークを含み、前記1つ以上の指定されたネットワーキング装置は、前記複数の論理的サブネットワークの1つに各々関連づけられる複数の論理的ルータ装置を含む、付記項4に記載の方法。
【0107】
[付記項6]
前記指定されたネットワークトポロジーをエミュレートすることは、別個の論理的サブネットワークの一部である送信元コンピューティングノードと送信先コンピューティングノードとの間で送信される通信のために実行される、付記項5に記載の方法。
【0108】
[付記項7]
前記指定されたネットワークトポロジーをエミュレートすることは、1つ以上の論理ネットワーキング装置によって、前記1つ以上の物理的ネットワーキング装置を論理的に表わすことと、前記指定されたネットワークトポロジーを介して前記複数の通信を転送する際に前記1つ以上の論理ネットワーキング装置の機能をエミュレートすることとを含む、付記項4に記載の方法。
【0109】
[付記項8]
送信先コンピューティングノードに指定されたネットワーキング装置によって転送された前記通信に対応する情報を含むように前記複数の通信の各々の1つ以上を変更することは、前記指定されたネットワーキング装置に関連する前記仮想ハードウェアアドレスを、前記通信において、前記通信のための前記送信先コンピューティングノードに対応する別個の仮想ハードウェアアドレスにより置き換えることを含み、ネットワーク転送ホップの発生を反映するように前記通信のヘッダを変更することを含む、付記項4に記載の方法。
【0110】
[付記項9]
前記受信された設定情報に従って前記第1の仮想コンピュータネットワークを提供することは、
前記複数のコンピューティングノードの各々と前記指定されたネットワーキング装置の各々とのための前記第1の仮想コンピュータネットワークのための仮想ハードウェアアドレスを追跡することと、
前記複数のコンピューティングノードの各々のために、前記指定されたネットワークトポロジー内の前記指定されたネットワーキング装置のローカルの1つを追跡することと、
前記要求した前記要求するコンピューティングノードの前記ローカルの指定されたネットワーキング装置によって提供されるであろう情報に対する前記複数のコンピューティングノードからの複数の要求の各々について、前記要求した前記要求するコンピューティングノードの前記ローカルの指定されたネットワーキング装置の機能をエミュレートするような様式で要求に対して応答することと
を含む、付記項8に記載の方法。
【0111】
[付記項10]
前記1つ以上の指定されたネットワーキング装置は、複数の論理ネットワーキング装置を含み、前記指定されたネットワークトポロジーを介して前記多重通信の1つ以上の各々を転送することは、前記通信を転送するであろう前記複数の論理ネットワーキング装置の2つ以上を含み、送信先コンピューティングノードに対して指定されたネットワーキング装置によって転送された前記通信に対応する情報を含むように前記1つ以上の通信の各々を変更することは、前記指定されたネットワーキング装置に関連する前記仮想ハードウェアアドレスを、前記通信において、前記通信のための前記送信先コンピューティングノードに対応する別個の仮想ハードウェアアドレスにより置き換えることを含み、前記指定されたネットワークトポロジーを介して前記通信を転送するであろう前記2つ以上の論理ネットワーキング装置の量に対応するホップを転送する複数のネットワークの量の発生を反映するように前記通信のヘッダを変更することとを含む、付記項4に記載の方法。
【0112】
[付記項11]
前記第1の仮想コンピュータネットワークを提供することは、前記複数のコンピューティングノード間の複数の他の通信を管理することをさらに含み、前記複数の別の通信は、それぞれ前記複数のコンピューティングノードの送信元の1つから前記複数のコンピューティングノードの送信先の1つに送信され、前記送信先コンピューティングノードのための前記仮想ネットワークアドレスを含み、前記送信先コンピューティングノードに関連する仮想ハードウェアアドレスを含み、前記複数の別の通信の各々を管理することは、前記送信先コンピューティングノードの前記位置に対して前記基盤ネットワーク上に前記別の通信を転送し、前記指定されたネットワークトポロジーを介して転送される前記通信に対応する情報を含むようにする変更なしで前記送信先コンピューティングノードに対して前記別の通信を提供することを含む付記項4に記載の方法。
【0113】
[付記項12]
前記指定されたネットワークトポロジーは、前記複数のコンピューティングノードの別個のサブセットを各々含む前記第1の仮想コンピュータネットワークの複数の論理サブネットワークを含み、前記複数の通信は、それぞれ2つの別個の論理的サブネットワークの一部である送信元コンピューティングノードと少なくとも1つの送信先コンピューティングノードとの間のものであり、前記複数の他の通信は、単一の論理的サブネットワークの一部である送信元コンピューティングノードと送信先コンピューティングノードの間のものである、付記項11に記載の方法。
【0114】
[付記項13]
前記基盤ネットワークは、複数の相互に連結した物理的ネットワーキング装置を含む物理ネットワークであり、前記複数のコンピューティングノードの各々は、前記基盤ネットワークアドレス内の前記コンピューティングノードの位置に対応し、かつ前記コンピューティングノードのための前記仮想ネットワークアドレスとは異なる、関連する基盤ネットワークアドレスを有し、送信先コンピューティングノードの前記位置に対して前記基盤ネットワーク上で前記複数の通信の各々を転送することは、前記1つの物理的ネットワーキング装置が、通信を、前記基盤ネットワーク内の前記送信先コンピューティングノードの前記位置にルーティングするために前記送信先コンピューティングノードのための前記基盤ネットワークアドレスを用いるように、前記基盤ネットワークの前記物理的ネットワーキング装置の1つに対して通信を送信することを含む、付記項4に記載の方法。
【0115】
[付記項14]
前記第1の仮想コンピュータネットワークのための前記設定情報は、前記第1の仮想コンピュータネットワークが提供されるユーザから受信される、付記項4に記載の方法。
【0116】
[付記項15]
前記複数のコンピューティングノードは、それぞれ前記複数のホスト物理的コンピューティングシステムの1つの上で提供される仮想マシンのであり、前記方法は、前記1つの物理的コンピューティングシステム上で提供される前記仮想マシンコンピューティングノードによる通信を管理するために前記物理的コンピューティングシステムの1つの上で実行する仮想マシン通信マネージャモジュールによって実行され、前記仮想マシン通信マネージャモジュールは、複数ユーザに対して前記基盤ネットワーク上で各々オーバーレイされる複数の仮想コンピュータネットワークを提供するオーバーレイネットワーク管理システムの複数の通信管理モジュールの1つである、付記項14に記載の方法。
【0117】
[付記項16]
複数のコンピューティングノードを含む第1の仮想コンピュータネットワークのための指定された論理ネットワークトポロジーに関する情報を取得することであって、前記第1の仮想コンピュータネットワークは、前記複数のコンピューティングノードを相互に接続する別個の基盤ネットワーク上でオーバーレイされており、前記複数のコンピューティングノードの各々は、前記第1の仮想コンピュータネットワークのための関連する仮想ネットワークアドレスを有し、前記基盤ネットワーク内の前記コンピューティングノードの位置に対応する別個の関連する基盤ネットワークアドレスを有することと、
第1の仮想コンピュータネットワークのために前記指定された論理的ネットワークトポロジーを仮想的に実現するように前記複数のコンピューティングノード間で送信される複数の通信を自動的に管理することであって、前記複数の通信は、それぞれ第1のコンピューティングノードから送信されており、第2の送信先コンピューティングノードのための前記仮想ネットワークアドレスを含むことと
を含む方法を実行することにより、コンピュータ読み取り可能な媒体の内容によって、コンピューティングシステムが、コンピュータネットワークのための論理ネットワーキング機能を提供することが可能となる、コンピュータ読み取り可能な媒体であって、
前記複数の通信の各々を管理することは、
前記基盤ネットワーク内の前記第2のコンピューティングノードの前記位置に対して前記基盤ネットワーク上で前記通信を転送するために、前記第2のコンピューティングノードに関連する前記基盤ネットワークアドレスを用いることと、
前記第2のコンピューティングノードに対して前記通信を提供する前に、前記論理的ネットワークトポロジーを介して前記第1のコンピューティングノードから前記第2のコンピューティングノードに前記通信を転送することをエミュレートする情報を含むように前記通信を変更すること
を含む、
コンピュータ読み取り可能な媒体。
【0118】
[付記項17]
前記取得される情報は、前記第1の仮想コンピュータネットワークが提供されるユーザによって指定された設定情報であり、前記指定された論理的ネットワークトポロジーは、前記複数のコンピューティングノードを相互に接続し、かつ前記複数のコンピューティングノードの1つ以上に各々関連づけられる、1つ以上の指定されたネットワーキング装置を表示し、前記第1の仮想コンピュータネットワークのための前記指定された論理的ネットワークトポロジーを前記仮想的に実現することは、もし1つ以上の指定されたネットワーキング装置が物理的に実装され、かつ送信元コンピューティングノードから送信先コンピューティングノードに前記通信を転送するために用いられたならば、前記1つ以上の指定されたネットワーキング装置によって提供されるであろう機能をエミュレートすることを含む、付記項16に記載のコンピュータ読み取り可能な媒体。
【0119】
[付記項18]
前記複数のコンピューティングノードの各々と前記1つ以上の指定されたネットワーキング装置の各々は、前記第1の仮想コンピュータネットワークのための別個の仮想ハードウェアアドレスをさらに有し、前記複数の通信の各々は、前記通信の最初の意図する送信先のための仮想ハードウェアアドレスをさらに含み、前記複数の通信の各々を変更することは、前記通信内に含まれる仮想ハードウェアアドレスが対応する、前記指定されたネットワーキング装置の1つを決定し、かつ前記通信を転送した場合に前記判定されたネットワーキング装置によって追加されたであろう情報を前記通信に対して追加するステップをさらに含む、付記項17に記載のコンピュータ読み取り可能な媒体。
【0120】
[付記項19]
前記コンピュータ読み取り可能な媒体は、前記内容が格納される前記コンピューティングシステムのメモリと、前記内容を含む生成された信号を格納するデータ伝送媒体のうちの少なくとも1つであり、前記内容は、実行される際、前記コンピューティングシステムに前記方法を実行させる命令である付記項16に記載のコンピュータ読み取り可能な媒体。
【0121】
[付記項20]
コンピュータネットワークのための論理ネットワーキング機能を提供するために構築されたシステムであって、
1つ以上のコンピューティングシステムの1つ以上のプロセッサと、
1つ以上のプロセッサの少なくとも1つによって実行される際、1つ以上の中間ネットワークを用いて実現される第1の仮想コンピュータネットワークのための論理ネットワーキング機能を提供するように各々設定される1つ以上の通信管理モジュールであって、前記1つ以上の中間ネットワークは、前記第1の仮想コンピュータネットワークの複数のコンピューティングノードを物理的に相互に接続する複数の物理的ネットワーキング装置を含み、前記複数のコンピューティングノードの各々は、第1の仮想コンピュータネットワークのための関連する第1の仮想ネットワークアドレスを有し、前記1つ以上の中間ネットワークに対応する別個の関連する第2のネットワークアドレスを有している、前記1つ以上の通信管理モジュールと
を備え、前記論理ネットワーキング機能を提供することは、
前記複数のコンピューティングノードを論理的に相互に接続し、かつ前記1つ以上の中間ネットワークの前記物理的ネットワーキング装置とは異なる、前記第1の仮想コンピュータネットワークの1つ以上の指定された論理ネットワーキング装置に関する設定情報の取得することと、
前記指定された論理ネットワーキング装置の機能を実現するように、前記複数のコンピューティングノード間で送信される複数の通信を自動的に管理することであって、前記複数の通信の各々を管理することは、前記送信先コンピューティングノードに前記1つ以上の中間ネットワークの前記物理的ネットワーキング装置の少なくとも1つを介して前記通信を転送するために、前記通信のための送信先コンピューティングノードの前記第2のネットワークアドレスを用いることを含み、前記複数の通信の各々を管理することは、前記複数のコンピューティングノードを論理的に相互に接続する前記指定された論理ネットワーキング装置の1つ以上により前記通信を転送することをエミュレートする情報を含むように前記通信を変更することをさらに含むことと
を含むシステム。
【0122】
[付記項21]
前記1つ以上の中間ネットワークは、前記第1の仮想コンピュータネットワークがオーバーレイされる基盤ネットワークであり、前記複数のコンピューティングノードの前記関連する第2のネットワークアドレスは、前記基盤ネットワーク内の前記複数のコンピューティングノードの位置に対応する基盤ネットワークアドレスであり、前記1つ以上の指定された論理ネットワーキング装置は、前記複数のコンピューティングノードのサブセットに各々関連づけられる複数の指定された論理ネットワーキング装置を含み、前記設定情報は、前記複数の論理ネットワーキング装置を含む前記第1の仮想コンピュータネットワークの論理ネットワークトポロジーをさらに指定し、前記論理ネットワーキング機能を提供することは、もし前記複数の指定された論理ネットワーキング装置が物理的に実装され、かつ送信元コンピューティングノードから送信先コンピューティングノードに前記通信を転送するために用いられるならば、前記複数の指定された論理ネットワーキング装置によって提供されるであろう機能をエミュレートすることを含む、付記項20に記載のシステム。
【0123】
[付記項22]
前記複数のコンピューティングノードの各々と前記1つ以上の指定された論理ネットワーキング装置の各々とは、前記第1の仮想コンピュータネットワークのための別個の仮想ハードウェアアドレスをさらに有し、前記複数の通信の各々は、前記通信の最初の意図する送信先のための仮想ハードウェアアドレスをさらに含み、前記複数の通信の各々を変更することは、前記通信内に含まれる仮想ハードウェアアドレスが対応する、前記指定された論理ネットワーキング装置の1つを決定し、前記通信を転送した場合に前記決定された論理ネットワーキング装置によって追加されたであろう情報を前記通信に対して追加することをさらに含み、前記1つ以上の通信管理モジュールは、前記第1の仮想コンピュータネットワークを提供し、かつ前記第1の仮想コンピュータネットワークのための前記論理ネットワーキング機能の提供を自動的に管理する、オーバーレイネットワーク管理システムの一部である、付記項21に記載のシステム。
【0124】
[付記項23]
前記1つ以上の通信管理モジュールは、前記複数のコンピューティングノードのサブセットの関連するグループから送信された通信を各々管理する複数の通信管理モジュールを含み、前記1つ以上のコンピューティングシステムは、前記複数の通信管理モジュールを実行する複数のコンピューティングシステムを含み、前記システムは、前記複数のコンピューティングシステムをさらに含み、前記複数のコンピューティングシステムの1つ以上は、それぞれ前記コンピューティングシステムが提供する仮想マシンによって提供される前記コンピューティングノードが、前記実行する通信管理モジュールのためのコンピューティングノードの前記関連するグループであるように、前記複数のコンピューティングノードの1つを各々提供する複数の仮想マシンを提供し、前記コンピューティングシステムのための仮想マシン管理モジュールの一部として前記通信管理モジュールの1つを実行する、付記項20に記載のシステム。
【0125】
[付記項24]
前記1つ以上の通信管理モジュールは、それぞれ前記1つ以上のコンピューティングシステムの前記少なくとも1つのプロセッサにより実行するためのソフトウェア命令を含む、付記項20に記載のシステム。
【0126】
[付記項25]
前記1つ以上の通信管理モジュールは、それぞれ
前記複数のコンピューティングノードを論理的に相互に接続し、かつ前記1つ以上の中間ネットワークの前記物理的ネットワーキング装置とは異なる、前記第1の仮想コンピュータネットワークの1つ以上の指定された論理ネットワーキング装置に関する設定情報を取得することと、
前記指定された論理ネットワーキング装置の機能を実現するように、前記複数のコンピューティングノード間で送信される複数の通信を自動的に管理することであって、前記複数の通信の各々を管理することは、前記送信先コンピューティングノードに前記1つ以上の中間ネットワークの前記物理的ネットワーキング装置の少なくとも1つを介して前記通信を転送するために、前記通信のための送信先コンピューティングノードの前記第2のネットワークアドレスを用いることを含み、前記複数の通信の各々を管理することは、前記複数のコンピューティングノードを論理的に相互に接続する前記指定された論理ネットワーキング装置の1つ以上により前記通信を転送することをエミュレートする情報を含むように前記通信を変更することをさらに含むことと
によって前記第1の仮想コンピュータネットワークのための論理ネットワーキング機能を提供するための手段から各々構成される、付記項20に記載のシステム。
【0127】
[付記項26]
特定の実施形態が説明の目的のためここに記載されたが、本発明の精神および範囲を逸脱せずに様々な変更がされてもよいことは、前述から十分に理解されるだろう。したがって、本発明は、添付された請求項およびその中に詳述された要素によって以外には限定されない。さらに、本発明のある態様がある請求項の様式で以下に示されるが、本発明者は、任意の有効な請求項の様式で本発明の様々な態様を想定する。例えば、本発明のいくつかの態様のみがコンピュータ読み取り可能な媒体で具体化されるように目下詳述されているかもしれないが、他の態様も同様にそのように具体化されてもよい。