(58)【調査した分野】(Int.Cl.,DB名)
ネットワークサービスの1つ又は複数のコンピューティングシステムにより、複数のリモートのクライアントのための前記ネットワークサービスにより提供される複数の仮想ネットワークを構成するのに使用するインターフェースを提供することと、
前記1つ又は複数のコンピューティングシステムにより、前記提供されたインターフェースを介して、前記ネットワークサービスのクライアントから、前記クライアントのために前記ネットワークサービスにより提供される仮想ネットワークのための構成情報を受信することであって、前記受信された構成情報は前記仮想ネットワークのために使用するための1つ又は複数の仮想ネットワークアドレスを特定する、ことと、
前記1つ又は複数のコンピューティングシステムにより、前記仮想ネットワークの複数のコンピューティングノードとして用いる仮想マシンを選択することで、前記クライアントのための前記仮想ネットワークを提供することであり、前記選択された仮想マシンは、前記ネットワークサービスにより提供される1つ又は複数の物理コンピューティングマシン上にホストされており、前記仮想ネットワークを提供することは、前記特定された仮想ネットワークアドレスを、前記複数のコンピューティングノードに割り当てることを含み、前記仮想ネットワークを提供することは、前記複数のコンピューティングノードを含む通信のための前記割り当てられた前記仮想ネットワークアドレスを用いることで前記クライアントのための前記仮想ネットワークを実装するために、前記1つ又は複数の物理コンピューティングマシンの各々において通信マネージャを構成することをさらに含む、ことと、
前記1つ又は複数のコンピューティングシステムにより、前記仮想ネットワークの前記複数のコンピューティングノードへの前記クライアントのためのアクセスを、提供することと
を含むことを特徴とするコンピュータ実装方法。
前記特定された仮想ネットワークアドレスは、前記クライアントのリモートコンピュータネットワークにおいて使用された仮想ネットワークアドレスの範囲と重複し、前記方法は、前記仮想ネットワークと前記リモートコンピュータネットワークとの間のやりとりを実行することをさらに含むことを特徴とする請求項1に記載のコンピュータ実装方法。
前記受信された構成情報は、前記仮想ネットワークに対して前記クライアントにより特定された識別子を含み、前記方法は、前記特定された識別子を前記仮想ネットワークに関連付けることをさらに含むことを特徴とする請求項1に記載のコンピュータ実装方法。
前記仮想ネットワークアドレスは、CIDR(Classless Inter−Domain Routing)記法において特定されることを特徴とする請求項1に記載のコンピュータ実装方法。
前記提供されたインターフェースを介して、第2のクライアントから、前記ネットワークサービスにより提供される第2の仮想ネットワークと共に使用するために追加の構成情報を受信することであって、前記追加の構成情報は、前記第2の仮想ネットワークにおいて使用するための第2の仮想ネットワークアドレスを特定し、前記仮想ネットワークアドレス及び第2の仮想ネットワークアドレスは1つ又は複数の共通の仮想ネットワークアドレスを含み、前記方法は、前記仮想ネットワーク及び前記第2の仮想ネットワークによる、前記共通の仮想ネットワークアドレスの同時使用を管理することをさらに含むことを特徴とする請求項1に記載のコンピュータ実装方法。
前記提供されたインターフェースは、グラフィカルユーザインターフェースを含み、前記構成情報は、前記グラフィカルユーザインターフェースを介して受信されることを特徴とする請求項1に記載のコンピュータ実装方法。
前記提供されたインターフェースはAPI(apprication programming interface)を含み、前記構成情報の受信は、前記クライアントのリモートコンピューティングシステムによる前記APIの起動に基づいていることを特徴とする請求項1に記載のコンピュータ実装方法。
前記仮想ネットワークは、前記1つ又は複数のクライアントと関連するリモートコンピュータネットワークへの拡張として提供され、前記メモリは、実行されたときに、前記システムに、前記仮想ネットワークからの、前記仮想ネットワーク又は前記リモートコンピュータネットワークの一部でないコンピューティングシステムへのアクセスを防止させる命令をさらに含むことを特徴とする請求項16に記載のシステム。
前記プログラムによるインターフェースは、API(apprication programing interface)を含み、前記構成情報を受信することは、前記1つ又は複数のクライアントのリモートコンピューティングシステムによる前記APIの起動に基づくことを特徴とする請求項16に記載のシステム。
前記メモリは、実行されたときに、前記システムに、1つ又は複数の第2のクライアントから、前記提供されたプログラムによるインターフェースを介して、第2の仮想ネットワークにおいて使用するための追加の構成情報を受信させる命令をさらに含み、前記追加の構成情報は、前記第2の仮想ネットワークにおいて使用するための複数の第2の仮想ネットワークアドレスを特定し、前記複数の仮想ネットワークアドレスおよび前記複数の第2の仮想ネットワークアドレスは、1つ又は複数の共通の仮想ネットワークアドレスを含み、前記メモリは、実行されたときに、前記システムに、前記仮想ネットワークおよび前記第2の仮想ネットワークによる前記共通の仮想ネットワークアドレスの同時使用を管理させる命令をさらに含むことを特徴とする請求項16に記載のシステム。
【発明を実施するための形態】
【0005】
リモートユーザが利用可能な設定可能ネットワークサービスの制御下においてなど、ユーザにコンピュータネットワークへのアクセスを提供するための技術について説明する。少なくともいくつかの実施形態では、リモートユーザは、そのユーザが利用するコンピュータネットワークの作成および設定を行うため、公衆網を介して設定可能ネットワークサービスとやりとりすることができ、その設定されたコンピュータネットワークは、その設定可能ネットワークサービスにより提供され、かつその設定可能ネットワークサービスで保守されているか、そうでなければその制御下にある複数のコンピューティングノードを含んでいる。かかるコンピュータネットワークを設定すると、ユーザは1つまたは複数のリモート位置から、提供されるコンピュータネットワークのコンピューティングノード上でのプログラム実行などのために、設定可能ネットワークサービスによりユーザに対して提供されているコンピュータネットワークとやりとりできる。設定可能ネットワークサービスは、少なくともいくつかの実施形態で、有料サービスのこともあり、設定可能ネットワークサービスのユーザは、その設定可能ネットワークサービスによって提供される機能の少なくともいくつかに対して、設定可能ネットワークサービスの料金を支払う顧客となる。また、少なくともいくつかの実施形態では、説明した技術の一部または全ては、以降でさらに詳述するように、設定可能ネットワークサービスマネージャモジュールの実施形態によって自動的に実行され、オプションとして別の通信マネージャモジュールと連動して実行される。
【0006】
少なくともいくつかの実施形態において、設定可能ネットワークサービスによって提供されるコンピュータネットワークの少なくともいくつかは、提供されるコンピュータネットワークがそのユーザのために作成および設定された設定可能ネットワークサービスのユーザによって(またはアクセスが明示的に設定された別のユーザによって)のみアクセス可能なプライベートコンピュータネットワークである。例えば、設定可能ネットワークサービスは、その設定可能ネットワークサービスのクライアントであるユーザに、クライアントの1つまたは複数のリモートコンピューティングシステムとその提供されるコンピュータネットワークとの間にVPN(仮想プライベートネットワーク)接続または別の安全な接続を可能にすることなどにより、そのクライアント用に提供されるコンピュータネットワークへの安全なプライベートアクセスを提供し、または、別のセキュリティおよび/または認証技術を使用して、クライアントが非公開かつ安全な方法でその提供されるコンピュータネットワークとリモートでやりとりできるようにする。また、少なくともいくつかの実施形態では、設定可能ネットワークサービスによって提供されるコンピュータネットワークの少なくともいくつかは、クライアントの既存のリモートプライベートコンピュータネットワーク(例えば、企業体であるクライアントのリモート企業ネットワーク)へのプライベートコンピュータネットワーク拡張としてなど、各々、クライアントの既存のコンピュータネットワークへの拡張としてクライアントによって作成および設定される。かかる実施形態では、既存のコンピュータネットワークと提供される新規のコンピュータネットワーク拡張との間の安全なプライベートアクセスは、同様に、1つもしくは複数のVPN接続または別のプライベート接続を用いて可能にできる。設定可能ネットワークサービスの一実施形態によって提供されるコンピュータネットワークへのクライアントのアクセス確立に関しては、以下で詳述する。
【0007】
設定可能ネットワークサービスのクライアントは、設定可能ネットワークサービスによって提供されるコンピュータネットワークを、種々の実施形態において種々の方法で作成および設定することができる。少なくともいくつかの実施形態では、設定可能ネットワークサービスは、設定可能ネットワークサービスによって提供されるコンピュータネットワークの作成、設定、および使用開始時に一部または全ての動作を実行するために、クライアントのコンピューティングシステムが、設定可能ネットワークサービスとプログラムでやりとりできるようにする1つまたは複数のAPI(アプリケーションプログラミングインタフェース)を提供し、他方、少なくともいくつかの実施形態では、設定可能ネットワークサービスのクライアントであるユーザは、かかるAPIの使用によるかかる動作の実行に代わってまたは加えてかに関わらず、かかる動作の一部または全てを(例えば、GUI(グラフィカルユーザインタフェース)、またはその設定可能ネットワークサービスによって提供される別のコンソールを介して)実行するために、設定可能ネットワークサービスと対話形式でやりとりできる。いくつかの実施形態では、ユーザが利用可能なGUIは、代替としてユーザが利用可能な基礎となるAPIに基づくことができ、他方、別の実施形態では、GUIを別の方法で実装できる。さらに、クライアントのコンピューティング装置と設定可能ネットワークサービスとの間のやりとりは、例えば設定可能ネットワークサービスのメッセージベースのAPIに従って、クライアントのコンピューティング装置と設定可能ネットワークサービスとの間で送信された電子メッセージ(例えば、電子メールサービス)に少なくとも部分的に基づき得る。
【0008】
例えば、少なくともいくつかの実施形態では、クライアントは、そのクライアント用に提供されるコンピュータネットワーク用の設定情報を指定するために設定可能ネットワークサービスの一実施形態とやりとりすることができ、その設定情報はオプションとして、次の限定的ではないリストの1つまたは複数のような、様々なタイプの情報を含む:つまり、提供されるコンピュータネットワークの複数のコンピューティングノードに割り当てる複数の特定されたネットワークアドレス、提供されるコンピュータネットワーク用に特定されたネットワークトポロジ情報、および提供されるコンピュータネットワーク用に特定されたネットワークアクセス制限である。複数の特定されたネットワークアドレスは、例えば、1つまたは複数のネットワークアドレスの範囲を含むことができ、提供されるコンピュータネットワークが、クライアントのリモートプライベートコンピュータネットワークへの拡張である場合は、リモートプライベートコンピュータネットワーク用に使用される仮想および/またはプライベートのネットワークアドレスのサブセットに対応し得る。特定されたネットワークトポロジ情報は、例えば、提供されるコンピュータネットワークの一部となり、かつ特定の指定済みネットワークアドレスを有するコンピューティングノードを管理するかまたは別の方法でそれらに関連付けられた1つまたは複数のネットワーキング装置(例えば、ルータ、スイッチなど)の特定、またはそうでなければ、提供されるコンピュータネットワークのサブネットもしくは提供されるコンピュータネットワークのコンピューティングノードの別のグループの特定などによって、グループにまとめられるか、また別の方法で共通の相互通信特性を共有する提供されるコンピュータネットワークのコンピューティングノードのサブセットを指示することができる。特定されたネットワークアクセス制限情報は、例えば、提供されるコンピュータネットワークのコンピューティングノードの1つまたは複数の各々について、提供されるコンピュータネットワークのコンピューティングノードが、提供されるコンピュータネットワークの外部にある任意のコンピューティングノードとの通信を許可されているか否か(または、提供されるコンピュータネットワークが既存の別のコンピュータネットワークへの拡張である場合に、提供されるコンピュータネットワークのコンピューティングノードが、それが属するその別のコンピュータネットワークの外部にある任意のコンピューティングノードとの通信が許可されているか否か)を含めて、別のコンピューティングノードのどれがそのコンピューティングノードと相互接続できるか、および/またはそのコンピューティングノードとの間で許可されている通信のタイプを特定することができる。設定可能ネットワークサービスの実施形態によって提供されるコンピュータネットワークの作成および設定については、以下でさらに詳述する。
【0009】
また、少なくともいくつかの実施形態では、クライアントにコンピュータネットワークを提供するために設定可能ネットワークサービスによって使用されるコンピューティングノードは、各々が1つまたは複数の物理コンピューティングシステム上でホストされる物理コンピューティングシステムおよび/または仮想マシンなど、種々の形態をとることができる。例えば、いくつかの実施形態では、設定可能ネットワークサービスは、1つまたは複数の地理的位置にある1つまたは複数のデータセンタなど、クライアントに提供されるコンピュータネットワークで利用可能になる設定可能ネットワークサービスによって提供される多数のコンピューティングノードを含むことができる。さらに、少なくともいくつかの実施形態では、設定可能ネットワークサービスで提供されるコンピューティングノードの一部または全ては、1つまたは複数の中間物理ネットワークで相互接続され、かつ、クライアントに提供されるコンピュータネットワークは、その中間物理ネットワークを基板ネットワークとして使用することによりその中間物理ネットワークの上に重ねられた仮想(または「論理」)ネットワークでもよい。その上、少なくともいくつかの実施形態では、少なくともいくつかのコンピューティングノードは、複数の顧客またはプログラム実行サービスの別のユーザのために複数のプログラムを実行するプログラム実行サービス(または「PES」)によって使用され得る。コンピューティングノードおよび基礎となるコンピュータネットワークに関する詳細については以下で述べられており、クライアントへの仮想ネットワークの提供およびプログラム実行サービスの提供の実施形態例に関する詳細については、2006年3月31日に出願された「Managing Communications Between Computing Nodes」という名称の米国特許出願番号第11/394,595号(代理人整理番号120137.524)、2006年3月31日に出願された「Managing Execution of Programs by Multiple Computing Systems」という名称の米国特許出願番号第11/395,463号(代理人整理番号120137.525)、2007年3月27日に出願された「Configuring Intercommunications Between Computing Nodes」という名称の米国特許出願番号第11/692,038号(代理人整理番号120137.554)、2008年3月31日に出願された「Configuring Communications Between Computing Nodes」という名称の米国特許出願番号第12/060,074号(代理人整理番号120137.576)、および2007年6月18日に出願された「Providing Enhanced Access To Remote Services」という名称の米国特許出願番号第11/764,739号(代理人整理番号120137.555)に含まれており、その各々が全体の参照により本明細書に組み込まれる。
【0010】
いくつかの実施形態において、クライアントは、例えばインターネットまたは別の公衆網を経由してアクセス可能であるか、またはそうでなければ提供されるコンピュータネットワークの外部にあってかつその一部でない、別のリモートネットワークアクセス可能サービスなど、提供されるコンピュータネットワークからリモートの1つまたは複数の別のネットワークアクセス可能サービスへのアクセスを提供するため、設定可能ネットワークサービスで提供されるコンピュータネットワークをさらに設定できる。かかるリモートサービスの少なくともいくつかは、いくつかの実施形態において、設定可能ネットワークサービスと関連していてもよく(例えば、設定可能ネットワークサービスの運営者または関連団体による提供、設定可能ネットワークサービスによってその別のクライアントに提供されるコンピュータネットワーク経由など、設定可能ネットワークサービスの別のクライアントによる提供などによって)、かかるリモートサービスの少なくともいくつかは、いくつかの実施形態では、代わりに設定可能ネットワークサービスから独立していてもよい。かかる別のリモートサービスは、種々の実施形態で種々の形態をとることができ、これには、リモートコンピューティングシステムで使用するために1つまたは複数のタイプのコンピューティング関連資源へのネットワークアクセスを提供するサービス(例えば、格納されたデータ資源へのアクセスを提供するストレージサービス、メッセージキュー資源または別の格納されたメッセージ資源へのアクセスを提供するメッセージサービス、格納されたデータベース資源へのアクセスを提供するデータベースサービス、プログラム実行資源へのアクセスを提供するプログラム実行サービスなど)、または別の方法で情報または機能または他の役立つ資源へのアクセスを提供するサービス(例えば、株価情報資源または検索クエリ結果資源を提供するサービス、写真共有機能資源またはソーシャルネットワーキング能力資源を提供するサービスなど)などがある。いくつかの状況では、設定可能ネットワークサービスの一実施形態は、データセンタまたは別の地理的位置に複数のコンピューティングノードを提供することができ、さらに、これらのコンピューティングノードのサブセットを使用して、様々なクライアントに様々なコンピュータネットワークを(例えば、提供されるコンピュータネットワークの各々を、共通の基板ネットワークを共有する別個の仮想ネットワークとして)提供することができる、つまり、かかる状況では、1つのクライアントは、その地理的位置で別の提供されるコンピュータネットワークを使用して別のクライアントで提供される1つまたは複数のネットワークアクセス可能リモートサービスへのアクセスを提供するために、例えばそのクライアントが、それらのリモート資源が同一の地理的位置で別のコンピューティングノードによって物理的に提供されていることを認識することなく、提供されるコンピュータネットワークをそのクライアント用に設定することが可能である。
【0011】
少なくともいくつかの実施形態では、クライアントは、特定の資源サービスへアクセス用の機構を含め、そのアクセス機構が、提供されるコンピュータネットワークに種々の機能を提供できるように、その提供されるコンピュータネットワークをそのクライアント用に設定できる。一具体例として、いくつかの実施形態では、複数の関連付けられた仮想ネットワークアドレスを持つ提供される仮想コンピュータネットワークは、特定のリモート資源サービスを表すために、それら仮想ネットワークアドレスの1つ(または複数)を割り当てて、提供されるコンピュータネットワークのコンピューティングノードまたは別の参加者が、その提供されるコンピュータネットワークにローカルな代表の割当てられたネットワークアドレスを利用して、提供されるコンピュータネットワークの外部にあるリモート資源サービスと通信できるようにする。このように、提供されるコンピュータネットワークの外部との通信を防ぐために(例えば、インターネットまたは1つもしくは複数の別の公衆網を通過するような通信を防ぐため)ネットワークアクセス制限を用いて設定された提供されるコンピュータネットワークでさえ、提供されるコンピュータネットワークの一部であるかかる設定されたアクセス機構を経由して、特定の外部リモート資源サービスへの通信が許可されるように設定できる。
【0012】
さらに、少なくともいくつかの実施形態では、提供されるコンピュータサービスから、その提供されるコンピュータネットワークの設定されたアクセス機構を経由したリモート資源サービスへのかかる通信用に強化されたセキュリティを提供するために、種々の技術が使用できる。例えば、少なくともいくつかの実施形態では、特定のリモート資源サービスは、インターネットまたは別の公衆網を経由して(例えば、1つまたは複数の公衆網アドレスおよび関連したドメイン名を経由して)ユーザが利用できる公的アクセス可能なインタフェースを持つことができるが、例えば、特定のリモート資源サービスが設定可能ネットワークサービスと同一の運営者によって提供されているか、そうでなければその設定可能ネットワークサービスに関連している場合など、コンピューティングノードを相互接続するために、その設定可能ネットワークサービスで使用される基板ネットワークから直接アクセス可能なインタフェースを実装することもできる。かかる直接アクセス可能なインタフェースが特定のリモート資源サービス用の基板ネットワーク上で実装されている場合、設定可能ネットワークサービスの1つまたは複数の提供されるコンピュータネットワークは各々、そのリモート資源サービスを対象とした通信を、そのリモート資源サービスのリモートから公的アクセス可能なインタフェースではなく、基板ネットワーク上に実装されたそのインタフェースへ向ける、そのリモート資源サービス用の設定されたアクセス機構を持つ。そのリモート資源サービスはそれゆえ、少なくともいくつかの実施形態および状況において、少なくともいくつかのクライアント要求のためにリモート資源サービスの機能の一部または全てを設定可能ネットワークサービスにローカルな方法で提供することを(例えば、そのローカル機能を実装するために、設定可能ネットワークサービスの1つまたは複数のコンピューティングノードが使用される場合)選択し、一方、別の実施形態および状況では、リモート資源サービスは、設定可能ネットワークサービスの基板ネットワークから、そのリモート資源サービスのリモート位置への1つまたは複数の公衆網を介した通信を安全な方法で管理することにより、かかるクライアント要求の少なくともいくつかに対して、一部または全ての機能を提供できる。あるいは、少なくともいくつかの実施形態において、設定可能ネットワークサービスは、設定可能ネットワークサービスから1つまたは複数の公衆網を介してそのリモート資源サービスのリモート位置への安全な通信を同様の方法で提供するために、例えば、そのリモート資源サービスにアクセス可能な方法での通信の暗号化および/または信頼できるソースからとしてのその通信の認証などにより、少なくともいくつかのリモート資源サービスに対して追加の動作を行うことができる。提供されるコンピュータネットワークからリモート資源のアクセスについては、以下でさらに詳述する。
【0013】
また、少なくともかかる実施形態のいくつかでは、クライアント用に提供されるコンピュータネットワークは、ネットワークアクセス可能なリモート資源サービスで提供されるコンピューティング関連資源の特定のサブセット(例えば、そのクライアントに対応するサブセットなど)へのアクセスを受けるように設定できる。一例として、リモート資源サービスは、それ自身の提供される資源を、異なるアクセス権を持つ異なるグループに分割し、かつ別々に参照される別個の名前空間を使用することができ、異なる名前空間の異なる資源が同一のローカル名または別の識別子を持つことができるが、それらの名前空間に基づいて別々に参照されるようになり、特定の名前空間が特定のクライアントに対応する。そうである場合、クライアント用に提供されるコンピュータネットワークは、各々がそのリモート資源サービスの特定の名前空間に自動的に対応するように設定された特定のリモート資源サービスにアクセスするための1つまたは複数の機構を含むことができ、その提供されるコンピュータネットワークのコンピューティングノードは、設定されたアクセス機構を使用して、そのクライアントの特定の対応する名前空間内の資源にアクセスできるようになる。さらに、少なくともいくつかの実施形態では、提供されるコンピュータネットワークのコンピューティングノードは、設定された機構が対応する名前空間を認識していない可能性があり、コンピューティングノードは、名前空間のコンテキスト内において、対象とする資源の名前または別の識別子を指示するリモート資源サービスに対して、しかしその名前空間の実際の指示なしで、要求または別のメッセージを送信できるようになる。そうである場合、設定されたアクセス機構は、メッセージを自動的に変更または変換し、オプションとしてその変更または変換をそのメッセージを送信したコンピューティングノードに対して透過的にして、指示された名前または別の識別子が設定されたアクセス機構に対応する名前空間に関連付けられるようにする。
【0014】
提供されるコンピュータネットワークの設定およびリモート資源サービスを表すアクセス機構は、種々の方法で実行することができる。例えば、いくつかの状況では、クライアントは、リモート資源サービス内でそのクライアントの既存の名前空間(そのクライアントが特定の資源を事前に格納したかまたは別の方法で使用した名前空間など)を特定できる。あるいは、別の実施形態では、設定可能ネットワークサービスは、例えば、新規の名前空間を作成するためにリモート資源サービスとやりとりすることなどにより、その提供されるコンピュータネットワークからアクセスされる新規の資源用のリモート資源サービス内で新規の名前空間の使用を自動的に開始することができる。リモート資源サービスとのかかるやりとりは、そのクライアントが提供されるコンピュータネットワークを作成および設定している時、またはその代わりに後で(例えば、提供されるコンピュータネットワーク上のコンピューティングノードが設定されたアクセス機構を介してリモート資源サービスに初めてアクセスしようとする時)など、さまざまな時に実行され得る。さらに、少なくともいくつかの実施形態および状況では、設定可能ネットワークサービスは、提供されるコンピュータネットワークに関連付けられた一意の識別子を生成し、その識別子を使用して新規の名前空間を参照することができ、他方、別の実施形態では、リモート資源サービスは、作成された新規の名前空間のかかる識別子または別の指示を提供することができる。いずれの場合も、クライアントおよび提供されるコンピュータネットワークのコンピューティングノードは、オプションとして、新規で自動的に開始された名前空間および/またはその新規の名前空間を参照するために設定可能ネットワークサービスで使用された一意の識別子を認識しないことができる。また、いくつかの実施形態では、新規の名前空間を参照するためにその識別子が設定可能ネットワークサービスで使用されるか、または代わりに別の方法で行われることをそのクライアントが認識しているか否かに関わらず、そのクライアントは、設定可能ネットワークサービスによりそのクライアントに提供されるコンピュータネットワークに関連付けられる設定可能ネットワークサービスで使用される識別子を特定することができる。さらに、少なくともいくつかの実施形態では、クライアントに提供されるコンピュータネットワークに関連付けられた識別子は、そのクライアントが単一の提供されるコンピュータネットワークを有する場合など、そのクライアントに関連付けられた識別子のこともあるが、他方、別の実施形態では、提供されるコンピュータネットワークの識別子は、クライアントに固有のいずれの識別子とも異なる。名前空間の使用については、以降で詳述する。
【0015】
さらに、少なくともいくつかのかかる実施形態において、クライアント用に提供されるコンピュータネットワークが特定のリモート資源サービスから資源にアクセスするために使用するアクセス機構は、例えば、通信が特定の位置から送信されたことを確認するためなど(例えば、その同一のクライアントでさえ別の位置から特定の資源にアクセスするのを防ぐため)、提供されるコンピュータネットワークから受信された通信の認証および確認時に、リモート資源サービスを支援するように設定することができる。例えば、少なくともいくつかのリモート資源サービスは、そのリモート資源サービスによって提供される資源の各々が、1つまたは複数の関連したアクセス制御インディケータ(例えば、名前または別のテキスト識別子、数値識別子、タグまたは別のアクセスキー、認証情報など)を持つことを許可または要求でき、リクエスタがそれらの関連したインディケータの全てを提供する場合に限り、かかる資源を外部のリクエスタがアクセスできるようになる。かかるリモート資源サービスに関して、クライアント用に提供されるコンピュータネットワークのコンピューティングノードで使用されるアクセス制御インディケータの1つは、そのリモート資源サービスでの、そのクライアント用の顧客識別子など、そのクライアントに対応する識別子であり得る。クライアント用の単一の顧客識別子が資源に関連付けられている場合に限り、そのクライアントは、同一の単一の顧客識別子を提供することによりそのクライアントの別のリモートコンピューティングシステムからその資源にアクセスすることが可能になる。例えば、かかる資源は、クライアントからの要求に応じて作成されるか、または別の方法でアクセスされて、そのクライアントに(例えば、一時的に)関連付けられる。
【0016】
しかし、少なくともいくつかの実施形態では、クライアント用に提供されるコンピュータネットワークが特定のリモート資源サービスから資源にアクセスするために使用する設定されたアクセス機構は、1つまたは複数の別の追加のアクセス制御インディケータを含めるために、リモート資源サービスに送信される通信を変更するように設定できる。かかる別の追加のアクセス制御インディケータは、例えば、設定可能ネットワークサービスで自動的に生成される提供されるコンピュータネットワークに対応する識別子を含むことができ、さらに、少なくともいくつかの実施形態では、そのクライアントおよび/または提供されるコンピュータネットワークのコンピューティングノードは、使用される特定の追加のアクセス制御インディケータを認識しないか、またはかかる追加のアクセス制御インディケータのいずれの存在および使用を認識さえしない。1つまたは複数の追加のアクセス制御インディケータがそのクライアントに未知である場合、そのクライアントは、その資源へのアクセス要求でかかる資源に関連付けられた全てのインディケータを別の方法では提供しないため、そのクライアントは、その設定されたアクセス機構を経由して提供されるコンピュータネットワーク以外からは、それらの資源にアクセスすることができない。このため、前述のとおり、かかる追加のアクセス制御インディケータは、リモート資源サービスによって資源へのアクセス要求のソースまたは位置のインディケータとして使用でき、別の位置からの要求にはその資源へのアクセスが付与されないようになる。あるいは、例えば、その資源用の全てのアクセス制御インディケータが提供される場合に限り、その資源への書込みアクセスまたは変更アクセスを許可するが、別の状況ではその資源への読取りアクセスまたは他のアクセスが許可されるように資源を設定する場合や、そのクライアント固有の識別子が提供される場合にもう1つ別の位置からのクライアントによって要求される場合、アクセス制御インディケータのいずれも提供することなく誰かによって要求される場合など、別の位置からの要求には、かかる資源への別の異なるアクセスが付与される。さらに、かかる追加のアクセス制御インディケータは、自動生成されたランダムな英数字インディケータ、提供されるコンピュータネットワークに関連した実際の地理的位置の指示など、種々の形態をとることができる。
【0017】
名前空間で使用するのと同様の方法で、提供されるコンピュータネットワークが1つまたは複数のかかる追加のアクセス制御インディケータを使用するようにするためのアクセス機構の設定は、種々の方法で実行することができる。例えば、いくつかの実施形態において、クライアントは、リモート資源サービスへの設定されたアクセス機構で使用するために、提供されるコンピュータネットワークに関連付けるべき1つまたは複数の追加のインディケータを特定することができる。また、別の実施形態では、設定可能ネットワークサービスは、提供されるコンピュータネットワーク用のリモート資源サービスへの設定されたアクセス機構用の1つまたは複数の新規の追加インディケータの使用を(例えば、提供されるコンピュータネットワークに関連付けられた一意の識別子の生成および使用などによって)自動的に開始することができ、そのリモート資源サービスからその設定されたアクセス機構を経由してアクセスされる新規の資源が、その提供されるコンピュータネットワークからのみアクセス可能になる。さらに、以降でさらに詳述するように、設定可能ネットワークサービスのいくつかの実施形態では、基板ネットワークを経由した通信の送信を容易にするためなど、提供されるコンピュータネットワークのコンピューティングノード間での通信を管理するために種々のモジュールを使用でき、そうである場合、名前空間識別子および/またはアクセス制御インディケータを含むように通信を自動的に変更すること、および/または1つまたは複数の公衆網を経由して特定のリモート資源サービスへ通信を転送する(オプションとして変更の後に)ことにより、1つまたは複数のかかるモジュールを特定のアクセス機構を実装するように設定できる。提供されるコンピュータネットワークからの位置に固有の通信を確認する際のリモート資源サービスの支援を含め、アクセス機構の実装については、以降でさらに詳述する。
【0018】
少なくともいくつかの実施形態において、設定可能ネットワークサービスは、クライアントがその設定可能ネットワークサービスとプログラムでやりとりできるようにするAPIを追加で提供して、その設定可能ネットワークサービスが、その設定可能ネットワークサービスによってクライアントに提供されるコンピュータネットワークへのクライアントのリモートアクセスの確立を容易にする動作を行うようにする。かかるリモートアクセス確立APIは、種々の実施形態において種々の動作を実行でき、さらに、少なくともいくつかの実施形態において、クライアントのリモート位置から設定可能ネットワークサービスによってそのクライアント用に提供されるコンピュータネットワークへのVPN接続の確立時にクライアントを支援する。前述のように、状況によっては、クライアントは、設定可能ネットワークサービスの外部にリモートプライベートコンピュータネットワークを有することができ、その設定可能ネットワークサービスによって作成および提供されるコンピュータネットワークは、リモートプライベートネットワークへの拡張であるか、またはそうでない場合はそのリモートプライベートネットワークに接続され得る。別の状況では、クライアントは、1つまたは複数のリモートコンピューティングシステムを使用して、その設定可能ネットワークサービスにより提供されるコンピュータネットワークに対してアクセスし、やりとりすることができる。いずれの状況でも、そのクライアントは、少なくともいくつかの実施形態において、リモートプライベートネットワークまたは別のリモートコンピューティングシステムから、その設定可能ネットワークサービスによって提供されるコンピュータネットワークへのVPN接続または別の安全な接続を使用することができる。かかる実施形態において、設定可能ネットワークサービスにより提供されるリモートアクセス確立APIは、その設定可能ネットワークサービスのクライアントによりプログラムで起動される際、その設定可能ネットワークサービスがそのクライアントに対して1つまたは複数の適切なネットワーク設定要素の提供を開始するようにして、そのクライアントのリモートプライベートネットワークまたは別のリモートコンピューティングシステムが、その設定可能ネットワークサービスによって提供されるコンピュータネットワークへのVPN接続または別の安全な接続を確立できるようにする。例えば、かかるネットワーク構成要素は、1つまたは複数のハードウェア装置(例えば、ルータまたは別のネットワーキング装置)、ソフトウェア構成要素、および/または一連の設定情報を含むことができる。
【0019】
例えば、いくつかの実施形態において、クライアントによってリモートアクセス確立APIを起動することにより、設定可能ネットワークサービスが、クライアントのリモート位置に配達される適切なルータ装置または別のハードウェアネットワーキング装置を購入するかまたは別の方法で入手するために、販売業者とやりとりし、さらに、その入手したネットワーキング装置用に適切に設定されたソフトウェアまたは別の設定情報がそのクライアントに送達されるようになり、これによって、その装置が、そのソフトウェアを使用してまたはその設定情報に基づいて設定されて、そのクライアントの1つまたは複数のリモートコンピューティングシステムに接続されると、その設定可能ネットワークによってそのクライアント用に提供されるコンピュータネットワークとの通信を開始する。このようにして、クライアントがネットワーキング装置、ソフトウェアおよび/または設定情報を受け取ると、そのクライアントは、例えば、受け取ったネットワーキング装置をリモートプライベートネットワークまたは別のリモートコンピューティングシステムに接続し、そのソフトウェアおよび/または設定情報を使用してその受け取ったネットワーキング装置を設定する。すると、その設定されたネットワーキング装置は、そのクライアント用に提供されるコンピュータネットワークと自動的に通信しVPN接続を確立し、提供されるコンピュータネットワークへのそのクライアントのプライベートで安全なアクセスを可能にする。別の状況では、設定されたネットワーキング装置は、そのクライアント用に提供されるコンピュータネットワークに特有の追加設定情報を取得するため、まず設定可能ネットワークサービスの設定されたコンピューティングシステムと自動的にやりとりし、その後、その提供されるコンピュータネットワークへのVPN接続を自動的に確立する。
【0020】
かかる実施形態において、ネットワーキング装置をクライアントに提供するために利用される販売業者は、オンライン販売業者または設定可能ネットワークサービスを運営する同一の運営者によって運営されるかもしくは別の方法でその設定可能ネットワークサービスと提携している別の小売業者、またはその設定可能ネットワークサービスと無関係な第三者の販売業者など、種々の形態を取ることができる。使用されるハードウェア装置は、自動的に検出および/またはクライアントによって特定され得るなど、その設定可能ネットワークサービスによって提供されるコンピュータネットワークとの互換性および/またはそのクライアントが使用中のリモートコンピューティングシステムとの互換性に基づいて選択されることを含め、種々の実施形態において種々の方法で同様に選択することができる。さらに、いくつかの実施形態では、リモートアクセス確立APIを最初に起動する時、または後で設定可能ネットワークサービスからのクエリ(例えば、クライアントが選択可能な複数の選択肢を指定するクエリ)に応じて、クライアントによって特定し得るなど、クライアントが選択可能な複数の選択肢を利用することができる。別の実施形態では、単一のタイプのネットワーキング装置または別のハードウェア装置が使用できる。さらに、設定されたソフトウェアおよび/または他の設定情報は、種々のソースからクライアントに提供でき(例えば、ネットワーキング装置を提供した同一の販売業者から、設定可能ネットワークサービスから直接、またはもう1つ別の団体から)、かつ種々の方法で提供できる(例えば、ソフトウェアおよび/または設定情報をクライアントへ電子的に送信する、DVDまたはUSBメモリキーなどの物理装置の可読媒体上へソフトウェアおよび/または設定情報を格納し、その媒体をクライアントへ物理的に配達する、装置の事前設定などのように、ソフトウェアおよび/または設定情報をネットワーキング装置に格納してから、それらをクライアントに配達する)。さらに、いくつかの実施形態では、クライアントに提供される設定されたソフトウェアは、クライアントが既にリモート位置に有する1つまたは複数のコンピューティングシステムまたは別のハードウェア装置と一緒に使用する場合など、VPN接続を確立するのに十分であり得る。
【0021】
さらに、クライアントのための小売業者または別の第三者団体からのハードウェア装置の取得は、その装置の購入またはその代わりに別の方法での取得(例えば、リース、賃貸、一時的評価での取得など)など、種々の実施形態において種々の方法で実行でき、かつ、いくつかの実施形態では、その小売業者への支払提供およびその後の別途クライアントからの支払受取り(例えば、クライアントからの支払金額が小売業者への支払金額を超えて、未満、または同額で)を行うか、または別の方法でクライアントに小売業者に対して直接支払提供をさせる(例えば、設定可能ネットワークサービスが小売業者にクライアント用の支払情報を提供する、設定可能ネットワークサービスが支払情報取得のために小売業者にクライアントとの連絡または別の方法でのやりとりのための情報を提供する、小売業者に支払受取りのためクライアントから事前に取得した情報を使用させるなどの方法で)設定可能ネットワークサービスを含むことができる。さらに、いくつかの実施形態では、クライアントのために小売業者からハードウェア装置の取得を開始すると、小売業者からクライアントのリモート位置にハードウェア装置が直接配達されるが、他方、別の実施形態では、設定可能ネットワークサービスが最初にハードウェア装置の配達を受け、その後それをクライアントに配達するなど(例えば、適切なソフトウェアおよび/または設定情報を使用してハードウェア装置を設定した後、またはその代わりにハードウェア装置を受け取った時点と同じ形でクライアントに転送することにより)、別の方法で取得を実行することができる。種々の実施形態において設定可能ネットワークサービスによりクライアントのリモートアクセス確立APIのプログラム起動を実行するための動作については、以降でさらに詳述する。
【0022】
例示を目的として、特定のタイプのコンピューティングノード、ネットワーク、通信、および設定操作が実行される、いくつかの実施形態が以下で説明される。これらの例は、例示を目的として提供され簡潔さのために単純化されており、また、独創的な技術は多岐にわたる別の状況で使用することが可能であり、そのうちのいくつかの状況について以下で説明する。例えば、いくつかの実施形態では、クライアントによるアクセスのために作成および設定されるコンピュータネットワークは、それらのクライアントの既存のプライベートコンピュータネットワークへのプライベートコンピュータネットワーク拡張であり、他方、別の実施形態では、作成および設定されるコンピュータネットワークは、別のコンピュータネットワークへの拡張ではない独立のネットワーク、および/または、ネットワークが作成および設定されるクライアントによってプライベートにはアクセスできない公衆のコンピュータネットワークでもよい。さらに、いくつかの実施形態では、設定可能ネットワークサービスによって提供されるコンピュータネットワークは、その設定可能ネットワークサービスで提供および制御されるコンピューティングノードを使用し、他方、別の実施形態では、提供されるコンピュータネットワークで使用される少なくともいくつかのかかるコンピューティングノードは、他者(例えば、第三者、クライアントなど)によって制御または保守され得るが、その設定可能ネットワークサービスで利用可能にできる。
【0023】
図1Aは、リモートクライアントがそのクライアントによる使用のためにコンピュータネットワークを作成および設定できるようにする設定可能ネットワークサービスの実施形態例を示すネットワーク図である。この例では、作成および設定されるコンピュータネットワークは、クライアントの既存のプライベートコンピュータネットワークへのプライベートネットワーク拡張であり、設定可能ネットワークサービス105は、1つまたは複数の公衆網100を経由して(例えば、インターネットを経由して)クライアント(図示せず)にかかる機能を提供する。このため、リモートクライアントは、例えば、公衆網100を経由してクラウドコンピューティング技術を使用するなど、設定可能ネットワークサービス(CNS)105を使用して、それらのプライベートコンピュータネットワークの規模および/または能力を動的に変更できる。
【0024】
具体的には、
図1Aの例では、多数のクライアント(図示せず)が、リモートで既存のクライアントプライベートネットワーク130への種々のプライベートコンピュータネットワーク拡張120を作成および設定するために公衆網100を経由してマネージャモジュール110とやりとりしているが、コンピュータネットワーク拡張120のうちの少なくともいくつかは、公衆網100を経由して(例えば、相互接続100aおよび100bを介して確立されたVPN接続を経由して)1つまたは複数の対応するクライアントプライベートネットワーク130から安全なプライベートアクセスが可能になるように設定されている。この実施形態例では、マネージャモジュール110は、例えばCNS105の様々な別のモジュール(図示せず)ならびにCNS105によってプライベートコンピュータネットワーク拡張120を提供するために使用される種々のコンピューティングノードおよびネットワーキング装置(図示せず)と連携などして、CNS105の機能をリモートクライアントに提供するのを支援する。少なくともいくつかの実施形態では、CNSマネージャモジュール110は、CNS105の1つまたは複数のコンピューティングシステム(図示せず)上で実行することができ、リモートコンピューティングシステムがモジュール110とプログラムでやりとりして、クライアントのためにCNS105の一部または全ての機能にアクセスできるようにする1つまたは複数のAPIを提供することができる(例えば、プライベートネットワーク拡張120の作成、設定、および/または使用の開始のため)。さらに、少なくともいくつかの実施形態において、クライアントはかかる動作の一部または全てを実行するために、代わりにモジュール110と手動でやりとりする(例えば、モジュール110によって提供されるユーザインタフェース経由で)ことができる。
【0025】
例えば、公衆網100は、インターネットなど、(おそらく個別の団体によって運営されている)接続されたネットワークの公的にアクセス可能なネットワークでもよい。リモートクライアントプライベートネットワーク130の各々は、特権のないユーザには部分的または完全にアクセス不可能であって、かつクライアントのコンピューティングシステムおよび/または別のネットワーク装置を含む、企業または別のプライベートネットワーク(例えば、家庭、大学など)のような、1つまたは複数の既存のプライベートネットワークを含む。図示例では、提供されるネットワーク拡張120の各々は、複数のコンピューティングノード(図示せず)を含み、それらのうちの少なくともいくつかは、CNS105によって提供されるか、またはそうでない場合はCNS105の制御下にあり、かつ提供されるネットワーク拡張120の各々は、それらが提供されるクライアントによって種々の方法で設定することができる。例示した実施形態におけるネットワーク拡張120の各々は、それを作成するクライアントによってのみアクセス可能なプライベートコンピュータネットワークの可能性があるが、別の実施形態では、CNSによりクライアントに対して提供される少なくともいくつかのコンピュータネットワークは、他の既存のコンピュータネットワークへの拡張ではない公的にアクセス可能および/または単独のコンピュータネットワークであり得る。同様に、この例では、提供されるコンピュータネットワーク120は、プライベートネットワークであるリモートクライアントコンピュータネットワーク130への拡張であるが、別の実施形態では、提供されるコンピュータネットワーク120は、プライベートネットワークではないクライアントコンピュータネットワーク130への拡張であり得る。
【0026】
リモートクライアントプライベートコンピュータネットワーク130とクライアントに提供される対応するプライベートコンピュータネットワーク拡張120との間のプライベートアクセスは、例えば、公衆網100を介した相互通信を安全でプライベートな方法で可能にするVPN接続または別の安全な接続をそれらの間に確立することなどにより、種々の方法で有効にされる。例えば、CNS105でホストされる1つまたは複数のVPN機構(例えば、ソフトウェアおよび/またはハードウェアVPN機構)の自動設定などにより、CNS105は、そのコンピューティングノードおよび別のコンピューティングシステム上で適切な設定を自動的に実行して、クライアントの特定のプライベートネットワーク拡張120へのVPNアクセスを可能にでき、および/またはクライアントに適切な設定情報(例えば、認証情報、アクセスポイント、および/または他のパラメータ)を自動的に提供して、リモートクライアントプライベートネットワーク130上でホストされるVPN機構がVPNアクセスを確立できるようにする。VPNアクセスが適切に有効にされかつ/または設定されると、VPN接続がリモートクライアントプライベートネットワークとプライベートネットワーク拡張との間で、例えば、IPsec(インターネットプロトコルセキュリティ)または他の適切な通信技術を使用してクライアントにより開始されるなどして、確立される。例えば、いくつかの実施形態では、VPN接続または別の安全な接続を、例えばIPsecに基づくVPNなどの代わりに、データ送信用のMPLS(マルチプロトコルラベルスイッチング)を使用するネットワークに対してまたはネットワークとの間に確立できる。例えば、CNS105で提供される対応するリモートアクセス確立APIのクライアント起動に応じてなど、安全な接続の有効化および確立については、別の箇所で詳述する。
【0027】
また、例示した実施形態では、種々のネットワークアクセス可能なリモート資源サービス140は、リモートクライアントプライベートネットワーク130上のコンピューティングシステムを含め、公衆網100を介してリモートコンピューティングシステムが利用可能である。資源サービス140は、例えば、資源サービス140の少なくともいくつかがリモートコンピューティングシステムに各種コンピューティング関連資源へのアクセスを提供するなど、種々の機能をリモートコンピューティングシステムに提供することができる。さらに、CNS105で提供されるプライベートネットワーク拡張120の少なくともいくつかは、リモート資源サービス140の少なくともいくつかへのプライベートアクセスまたは別の専用アクセスを提供するように設定することができるが、このとき、リモート資源サービス140との実際の通信は公衆網100を経由して(例えば、相互接続100bおよび100cを経由して)生じるが、その提供されるアクセスは、オプションとして、プライベートネットワーク拡張120のコンピューティングノードには、プライベートネットワーク拡張120の一部である仮想接続115を経由してローカルに提供されているように見える。リモート資源サービスへのかかるプライベートアクセスまたは別の専用アクセスの確立および使用についての詳細は、別の箇所で詳述する。
【0028】
前述のとおり、提供されるネットワーク拡張120の各々は、クライアントにより種々の方法で設定され得る。例えば、少なくともいくつかの実施形態では、CNS105は、クライアントに提供されるネットワーク拡張での使用が可能な複数のコンピューティングノードを提供し、提供されるネットワーク拡張120の各々は、その提供されるネットワーク拡張の一部として専用に使用される複数のかかるコンピューティングノードをクライアントによって設定された数だけ含むことができる。具体的には、クライアントは、モジュール110とやりとりして、クライアント用に提供されるコンピュータネットワークに当初に含まれるコンピューティングノードの数を設定することができる(例えば、CNS105で提供されるAPIとの1つまたは複数のプログラムによるやりとりを通して)。また、少なくともいくつかのかかる実施形態では、提供されるコンピュータネットワークがクライアントによって既に使用されるようになった後などに(例えば、特定のコンピューティングノード上で特定プログラムの実行の開始または終了を指示することにより)、クライアントの提供されるコンピュータネットワークに対して、後で動的にコンピューティングノードの追加または除去を行うことができる(例えば、CNS105で提供されるAPIとの1つまたは複数のプログラムによるやりとりを通して)。さらに、CNS105は、例えば、種々の性能特性(例えば、プロセッサ速度、利用可能なメモリ、利用可能なストレージ)および/または別の能力を持つコンピューティングノードなど、少なくともいくつかの実施形態において、複数の異なるタイプのコンピューティングノードを提供することができる。そうである場合、少なくともいくつかのかかる実施形態では、クライアントは、そのクライアント用に提供されるコンピュータネットワークに含めるコンピューティングノードのタイプを指定できる。
【0029】
また、少なくともいくつかの実施形態では、クライアントは、モジュール110とやりとりして、そのクライアント用に提供されるコンピュータネットワーク用のネットワークアドレスを設定することができ(例えば、CNS105で提供されるAPIとの1つまたは複数のプログラムによるやりとりを通して)、提供されるコンピュータネットワークがクライアントによって既に使用されるようになった後などに、少なくともいくつかのかかる実施形態では、提供されるコンピュータネットワークに対して、後で動的にネットワークアドレスの追加、除去、または変更を行うことができる。例えば、設定中のある特定の提供されるコンピュータネットワークが既存のリモートクライアントコンピュータネットワークへの拡張である場合、クライアントは1つまたは複数のアドレス範囲(例えば、クラスレスインタードメインルーティング(CIDR)アドレスブロック)または既存のリモートクライアントコンピュータネットワークで使用されるネットワークアドレスのサブセットであるネットワークアドレスの別のグループを指定することができ、指定されたネットワークアドレスは提供されるコンピュータネットワークのコンピューティングノード用に使用されるようになる。かかる設定されたネットワークアドレスは、ある状況では、公衆網100上のコンピューティングシステムから直接アドレス指定できない仮想またはプライベートのネットワークアドレスであり得(例えば、既存のリモートクライアントコンピュータネットワークおよび対応する提供されるネットワーク拡張が、クライアントコンピュータネットワークおよびその提供されるネットワーク拡張に対して、ネットワークアドレス変換技術および/または仮想ネットワーキング技術を使用する場合など)、他方、別の状況では、設定されたネットワークアドレスの少なくともいくつかは、公衆網100上のコンピューティングシステムから直接アドレス可能な公衆網アドレスであり得る(例えば、インターネットルーティング可能な固定IPアドレスまたは別の変わらないネットワークアドレスなど)。別の実施形態では、CNS105は、例えば、CNS105で使用可能なネットワークアドレスに基づいて、提供されるコンピュータネットワークに対応するリモートで既存のコンピュータネットワークで使用される関連したネットワークアドレスであるネットワークアドレス選択に基づいてなど、少なくともいくつかの提供されるコンピュータネットワーク拡張の少なくともいくつかのコンピューティングノードで使用するためのネットワークアドレスを自動的に選択することができる。さらに、例えば、基板ネットワーク上でのオーバーレイネットワークの使用などにより、CNS105がクライアントに仮想ネットワークを提供する少なくともいくつかの実施形態では、たとえ複数のクライアントが各々の提供されるコンピュータネットワークに対して同一または重複するネットワークアドレスを指定しても、各クライアントはそれらの提供されるコンピュータネットワークで使用する任意のネットワークアドレスを指定することが許可されており、つまり、かかる実施形態では、CNS105は、各クライアントについて別個にネットワークアドレスを管理するため、第1のクライアントは、その第1のクライアントの提供されるコンピュータネットワーク用のある特定の指定されたネットワークアドレスに関連付けられた第1のコンピューティングノードを持つことができ、他方、異なる第2のクライアントは、その第2のクライアントの提供されるコンピュータネットワーク用の同一の特定の指定されたネットワークアドレスに関連付けられた異なる第2のコンピューティングノードを持つことができる。提供されるコンピュータネットワーク用にネットワークアドレスが設定されるかまたは別の方法で決定されるとすぐに、CNS105は、例えば、ランダムに、DHCP(動的ホスト設定プロトコル)またはネットワークアドレスを動的に割り当てる他の技術の使用などにより、提供されるコンピュータネットワーク用に選択された各種コンピューティングノードに対してネットワークアドレスを割り当てることができる。また、たとえ公衆網アドレスが特定のコンピュータネットワーク用に使用されていても、CNS105は、例えば、別の箇所で詳述するとおり、特定のリモート資源サービス用のアクセス機構として動作するために特定の公衆網アドレスを使用するなど、それらの公衆網アドレスの1つまたは複数を別の方法で使用するためにマッピングすることができ、、その特定のコンピュータネットワークのコンピュータノードによってその特定の公衆網アドレスに送信される通信が、インターネットまたはその特定の公衆網アドレスが割り当てられた別のネットワーク上にあるもう1つ別のコンピューティングシステムではなく、対応するリモート資源サービスに転送されるようになる。
図1Bは、提供されるコンピュータネットワーク内で通信をルーティングするために設定されたネットワークアドレスを使用する詳細な例を示している。
【0030】
また、少なくともいくつかの実施形態において、クライアントは、モジュール110とやりとりして、そのクライアント用に提供されるコンピュータネットワーク用にネットワークトポロジ情報を設定することができ(例えば、CNS105で提供されるAPIとの1つまたは複数のプログラムによるやりとりを通して)、例えば、提供されるコンピュータネットワークがクライアントによって既に使用されるようになった後に、かかるネットワークトポロジ情報は、少なくともいくつかのかかる実施形態において提供されるコンピュータネットワーク用に後で動的に変更することができる。例えば、クライアントは、特定のタイプのネットワーキング装置(例えば、ルータ、スイッチなど)および/または提供されるコンピュータネットワークの一部となる別のネットワーク装置またはノード(例えば、ファイアウォール、プロキシ、ネットワークストレージ装置、プリンタなど)を特定することができ、かつ/または、グループにまとめられるか、または別の方法で共通の相互通信特性を共有する提供されるコンピュータネットワークのコンピューティングノードのサブセットを特定できる(例えば、相互通信がフィルタリングされていないか、かつ/または特定のネットワーキング装置に関連付けられたサブネットの一部であるコンピューティングノードの特定のサブセットなど)。また、提供されるコンピュータネットワーク用に特定された設定情報は、少なくともいくつかの実施形態において、ネットワーク装置および/またはコンピューティング装置グループ間のルーティング情報または別の相互接続情報を含む。さらに、少なくともいくつかの実施形態では、CNS105は、複数の地理的位置で(例えば、複数の地理的に分散されたデータセンタで)利用可能なコンピューティングノードを提供することができ、提供されるコンピュータネットワーク用にクライアントによって特定される設定情報は、(例えば、提供されるコンピュータネットワークのコンピューティングノードを複数の地理的位置に設置することにより、それらのコンピューティングノード間に耐障害性を提供するために)提供されるコンピュータネットワークのコンピューティングノードが設置される1つまたは複数の地理的位置を追加で指示することができ、かつ/または、そうでない場合、1つまたは複数のかかる地理的位置を選択するためにCNS105で使用される、提供されるコンピュータネットワークのコンピューティングノードを相互運用する方法の優先または要件に関する情報(例えば、コンピューティングノード相互通信のための最小または最大のネットワーク待ち時間または帯域幅、コンピューティングノード間の最小または最大のネットワーク近接性、コンピューティングノード間の最小または最大の地理的近接性、かかる地理的位置全てで利用できない特定の資源または機能へのローカルアクセスを有すること、例えばクライアントのリモートコンピュータネットワークおよび/またはリモート資源サービスなど、別の外部コンピューティングシステムに関連して特定された位置を有すること、など)を提供できる。
【0031】
別の箇所で詳述するとおり、少なくともいくつかの実施形態において、提供されるコンピュータネットワークのコンピューティングノード間の相互接続および相互通信は、CNS105の基礎となる基板ネットワークを使用して管理され、そうである場合、設定されたネットワークトポロジ情報の一部または全ては、少なくともいくつかのかかる実施形態において基礎となる基板ネットワークおよびCNS105の対応するモジュールを使用してシミュレートすることができる。例えば、CNS105で提供されるコンピューティングノードの各々は、その関連付けられたコンピューティングノードとの間での通信を管理するCNS105のノード通信マネージャモジュールと関連付けられ得る。そうである場合、ファイアウォール装置は、コンピューティングノード用の関連した通信マネージャを使用することによってシミュレートされ、1つまたは複数のシミュレートされたファイアウォール装置に合致する方法でコンピューティングノードとの間での通信を許可しないか、または別の方法で処理できる。かかるノード通信マネージャモジュールは、相互通信がコンピューティングノード間でどのように渡されるか、または渡されるか否かを制御すること、およびコンピューティングノードからの情報要求(例えば、ARP(アドレス解決プロトコル)要求)に適切な応答情報で応答することにより、ルータおよびサブネットを同様にシミュレートすることができる。CNS105の1つまたは複数の外部通信マネージャモジュールは、例えば、ファイアウォール装置の同様のシミュレートおよび特定されたネットワークアクセス制限の強化、ならびにリモート資源サービス用の設定されたアクセス機構およびリモートクライアントプライベートコンピュータネットワークへの安全な接続の管理など、CNS105および外部コンピューティングシステムで提供されるコンピューティングノード間での通信を管理できる。別のタイプのネットワークトポロジ情報も同様にシミュレートすることができ、いくつかの実施形態におけるCNS105の種々のモジュール使用についての詳細は、以降で
図2に関する説明および別の箇所で述べる。
【0032】
さらに、少なくともいくつかの実施形態では、クライアントはモジュール110とやりとりして、クライアント用に提供されるコンピュータネットワークのために種々のネットワークアクセス制限情報を設定することができ(例えば、CNS105で提供されるAPIとの1つまたは複数のプログラムによるやりとりを通して)、かかるネットワークアクセス制限情報は、提供されるコンピュータネットワークがクライアントによって既に使用されるようになった後などに、少なくともいくつかのかかる実施形態において、提供されるコンピュータネットワーク用に後で動的に変更することができる。例えば、クライアントは、提供されるコンピュータネットワークのコンピューティングノードの一部または全てが、その提供されるコンピュータネットワークの別のコンピューティングノードおよび/または別の外部コンピューティングシステムとの通信が許可されるか否かおよびどのように許可されるかに関する情報を特定できるが、それは、次のうちの1つ以上に基づいて特定される:通信の方向(入力対出力)、通信のタイプ(例えば、テキスト用にHTTP要求を許可するが画像では許可せず、FTP要求は許可しないなど、含まれる内容のタイプおよび/または使用する通信プロトコルのタイプに基づいて)、別のコンピューティングシステムの位置(例えば、提供されるコンピュータネットワークの一部か、提供されるコンピュータネットワークに対応するリモートクライアントコンピュータネットワークの一部か、プライベートアクセスまたは別の専用アクセスが確立されているリモート資源サービスの一部か、提供されるコンピュータネットワークおよび任意の対応するリモートクライアントコンピュータネットワークの外部かどうか、など)、他のコンピューティングシステムのタイプなど。また、別の箇所で詳述するとおり、少なくともいくつかの実施形態では、提供されるコンピュータネットワークは、その提供されるコンピュータネットワークの一部またはそうでない場合はそのネットワークにローカルな設定されたアクセス機構などによって、1つまたは複数のリモート資源サービスへのプライベートアクセスまたは別の専用アクセスを提供するように設定できる。ネットワークトポロジ情報および別のルーティング情報と同様の方法で、CNS105は、提供されるコンピュータネットワーク用のネットワークアクセス制限情報を用いて種々の方法で制限を実行することができる。いくつかの実施形態において提供されるコンピュータネットワーク用通信の管理についての詳細は、以降で
図2に関する説明および別の箇所で述べる。
【0033】
図1Bは、CNS105によってクライアントに対し提供され得るコンピュータネットワーク例120a(または設定可能ネットワークサービスの別の実施形態)に関する詳細を図示しており、本例中において、提供されるコンピュータネットワーク120aは、
図1Aのリモートプライベートコンピュータネットワーク130の1つのような、クライアントのリモートプライベートコンピュータネットワークへのプライベートネットワーク拡張である。本例において、提供されるコンピュータネットワーク120a用の種々の接続および通信経路は、設定可能ネットワークアクセス制限およびネットワークトポロジのタイプを説明するように概念的な方法で示されており、また、
図2には、提供されるコンピュータネットワーク例120aのような、提供されるコンピュータネットワークの作成に使用可能な基礎となる基板ネットワークおよび接続の一例に関する詳細が図示されている。
【0034】
具体的には、
図1Bでは、提供されるコンピュータネットワーク120aは、第1の地理的位置1 160(例えば、地理的位置1にある第1のデータセンタなど)に配置されたCNS105によって提供される種々のコンピューティングノードを含み、その種々のコンピューティングノードは(例えば、異なるサブネットおよび/または関連した設定されたネットワーキング装置(図示せず)に対応するため)本例では論理グループ164、165および166に設定されている。本例では、それらのコンピューティングノードと別のコンピューティングシステムとの間の通信を制御するために単一の概念的仮想ルータ162が地理的位置1に示され、提供されるコンピュータネットワーク120aは、実際には地理的位置1に複数の設定されたネットワーキング装置を持つこともあれば全く持たないこともあるが、生じる可能性のある各種の通信が図示されており、そして、コンピュータネットワーク120aは、例えば、複数の物理的に相互接続されたルータまたは他のネットワーキング装置経由や、基礎となる基板ネットワークおよびその基礎となる基板ネットワークを介した通信を制御する関連したモジュールの使用など、地理的位置1において種々の方法で設定可能ネットワークサービスにより実装される可能性がある。本例では、仮想ルータ162は、設定されたネットワークトポロジ情報、リモート資源サービスへの設定されたプライベートアクセスまたは別の専用アクセス、および別の設定されたネットワークアクセス制限情報を含め、提供されるコンピュータネットワーク120a用の設定された情報に従って動作し、例えば、提供されるコンピュータネットワーク120a内のネットワークアドレスに送信される通信を、提供されるコンピュータネットワーク120a上の対応する宛先コンピューティングノードへルーティングしたり、別の通信を、提供されるコンピュータネットワーク120aの外部にある別のネットワークアドレスに適宜ルーティングしたりする。さらに、設定されたファイアウォール装置、設定されたネットワークトポロジ情報、または別の設定されたネットワークアクセス制限によって許可されていない通信は、仮想ルータ162によってブロックされるか、または別の方法で管理される。
【0035】
本例において、コンピュータネットワーク120aは、例のクライアント1用に提供され、クライアント1のリモートコンピュータネットワークへのネットワーク拡張である。クライアント1のリモートコンピュータネットワークは、第1リモート位置のサイトA190にある複数のコンピューティングシステム(図示せず)を含み、かつ、仮想ルータ162は、地理的位置1にある仮想通信リンク170を経由してそれら複数のコンピューティングシステムと通信するように設定される。例えば、別の箇所で詳述するとおり、提供されるコンピュータネットワーク120aは、サイトA190にある複数のコンピューティングシステムへの1つまたは複数の設定されたVPN接続を含むことができ、通信リンク170は、1つまたは複数のかかるVPN接続に対応することができる。また、クライアント1のリモートコンピューティングネットワークは、図示されているオプションのサイトB192など、1つまたは複数の別の位置にあるコンピューティングシステムをオプションとして含むことができ、そうである場合、仮想ルータ162はさらに、サイトB192へのオプションの仮想通信リンク172経由(例えば、サイトBに対して直接設定された1つまたは複数の別のVPN接続を介して)などで、別の位置にあるそれら別のコンピューティングシステムと通信するように設定できる。リモートコンピュータネットワークのリモートコンピューティングシステムに対して複数のVPN接続または別の安全な接続が使用されている場合、各接続は、(例えば、それらリモートコンピューティングシステムに対応するリモートコンピュータネットワークのネットワークアドレスのサブセットに対応することにより)リモートコンピューティングシステムのサブセットに対応して、通信が適切な接続にルーティングされるようにできる。別の実施形態では、複数のVPN接続または別の安全な接続は、1つまたは複数の位置にあるリモートコンピューティングシステムに対して使用できるが、複数の接続が冗長な代替手段の場合(例えば、負荷分散のための使用)などは、リモートコンピューティングシステムのいずれかへの通信を各々サポートできる。さらに、いくつかの実施形態では、クライアントのリモートコンピュータネットワークは、複数のサイトで複数のコンピューティングシステムを含むことができるが、リモートコンピューティングシステムへの単一のVPN接続または他の安全な接続のみが使用される場合があり、リモートコンピュータネットワークが通信の適切なサイトおよびコンピューティングシステムへのルーティングに責任を持つ。
【0036】
また、提供されるコンピュータネットワーク120aは、インターネット196または別の公衆網上で通常アクセス可能な提供されるコンピュータネットワーク120aのコンピューティングノードと別の外部コンピューティングシステムとの間の通信を全部もしくは一部を許可するか、または通信を許可しないように設定することができる。少なくとも一部のかかる外部通信が許可される場合、仮想ルータ162は、例えば提供されるコンピュータネットワーク120a用のオプションの仮想境界ルータ155と接続して、提供されるコンピュータネットワーク120aのオプションの仮想通信リンク178を経由して、それら外部の複数のコンピューティングシステムと通信するようにさらに設定できる。仮想境界ルータ155は、種々の方法で物理的に実装することができるが、例えば、CNS105が地理的位置1において外部コンピューティングシステムとCNS105によって提供される種々のコンピューティングノードとの間の通信を管理する1つまたは複数の実際のファイアウォール装置または境界ルータ装置(例えば、CNS105のそれらのコンピューティングノードを使用するクライアントに対してCNS105によって提供される多数のコンピュータネットワークをサポートする実際の装置)を使用することや、(例えば、許可されていない通信が、提供されるコンピュータネットワーク120aのコンピューティングノードによって基板ネットワークへ送信されるのを防ぐために)基礎となる基板ネットワークおよび基礎となる基板ネットワークを介した通信を制御する関連モジュールを使用することによる。さらに、仮想境界ルータ155は、例えば、サイトAおよびサイトBにあるリモートクライアントコンピュータネットワーク、1つまたは複数のリモート資源サービスなど、提供されるコンピュータネットワーク120aの外部にある別のコンピューティングシステムへの別の通信を管理するのをさらに概念的に支援する。
【0037】
さらに、提供されるコンピュータネットワーク120aは、例えば、提供されるコンピュータネットワーク120aの1つまたは複数のネットワークアドレスをそれらの1つまたは複数のリモート資源サービスを表すために割り当てたり、オプションとしてそれらの割当て済みネットワークアドレスに送信された通信に対して実行する特定の動作を設定したりすることにより、1つまたは複数のリモート資源サービスへのプライベートアクセスまたは別の専用アクセスを提供するように設定できる。本例では、仮想ルータ162は、提供されるコンピュータネットワーク120aの仮想通信リンク174を経由してリモート資源サービス194へのローカルアクセスを提供するように設定されている。このため、例えば、提供されるコンピュータネットワーク120aのコンピューティングノードの1つが、通信リンク174へマッピングされている提供されるコンピュータネットワーク120aの特定のネットワークアドレスに通信を送信する場合、仮想ルータは、その通信を(例えば、インターネットまたは別の公衆網を経由して)提供されるコンピュータネットワーク120の外部にあるリモート資源サービス194に転送する。別の実施形態では、リモート資源サービス194は、CNS105の一部であるかそうでない場合は地理的位置1にあるインタフェースを実装することができ、そうである場合、通信リンク174にマッピングされている提供されるコンピュータネットワーク120aの特定のネットワークアドレスに送信された通信は、代わりに、処理のためリモート資源サービスのそのインタフェースに転送される。
【0038】
また、仮想通信リンク174は、少なくともいくつかの実施形態において、例えば、リモート資源サービス194に転送される前に1つまたは複数の方法でそれらの通信を変更したり、そうでない場合は特定の方法でリモート資源サービス194にアクセスしたりするため、そのリンクを経由して送信された通信を種々の方法で管理するように設定することができる。例えば、例示した実施形態では、仮想通信リンク174は、リモート資源サービス194で提供されるコンピューティング関連資源のサブセットをその名前空間の一部にして、リモート資源サービス194内の特定の名前空間に対応するように設定することができる。従って、仮想通信リンク174は、例えば、特定の名前空間に関連付けられた名前または別の識別子を使用する通信の変更または変換、特定の名前空間の指示をサポートするリモート資源サービスの特定のインタフェースの使用などにより、特定の名前空間内の資源にアクセスするように設定できる。さらに、仮想通信リンク174が特定の名前空間に対応するように、またそうでない場合はリモート資源サービス194で提供される資源のサブセットに対応するように設定される場合、提供されるコンピュータネットワーク120aは、同一のリモート資源サービス194にも対応するが、リモート資源サービス194に別の方法でアクセスするように設定された1つまたは複数の別の仮想通信リンクを含むようにオプションとしてさらに設定できる。例えば、提供されるコンピュータネットワーク120aは、異なる第2の名前空間に対応する、どの特定の名前空間にも対応しない、通信リンク174用に使用された顧客識別子と異なるリモート資源サービス194の顧客識別子を使用するために、仮想通信リンク174とは異なる方法でリモート資源サービス194にアクセスするように設定された異なる仮想通信リンク176をオプションとして含むことができる。本例では、仮想通信リンク174および176は、異なる識別子(例えば、異なる名前空間識別子)を使用するように設定されており、それらの識別子は、本例中ではリンク174および176に対してそれぞれID1およびID2として表される。このため、提供されるコンピュータネットワーク120aのコンピューティングノードは、リモート資源194から異なるタイプの機能にアクセスすることが可能になる。さらに、ここでは図示していないが、提供されるコンピュータネットワーク120aは、それら別のリモート資源サービスへの別の仮想通信リンクを使用して、1つまたは複数の別のリモート資源サービス(図示せず)にアクセスするように同様に設定できる。
【0039】
リモート資源サービス194の特定の名前空間にアクセスするための仮想通信リンク174の設定に加えてまたはその代わりに、仮想通信リンクは、少なくともいくつかの実施形態において、リモート資源サービス194が通信の位置または別のソースを、提供されるコンピュータネットワーク120aとして確認にするのを可能にするため、リモート資源サービス194に追加情報を提供するように設定できる。例えば、例示した実施形態において、仮想通信リンク174は、設定可能ネットワークサービスまたはリモート資源サービス194によりその提供されるコンピュータネットワーク120aに関連付けられた1つまたは複数の特定の識別子または別のアクセス制御インディケータに対応するように設定されて、リモート資源サービス194によるそれらの資源へのアクセスの制限時に使用するため、仮想通信リンク174経由でアクセスされるリモート資源サービス194によって提供される新規または/および既存のコンピューティング関連リソースのサブセットが、アクセス制御インディケータに関連付けられるようになる。従って、仮想通信リンク174は、例えば、追加のインディケータを含むように通信を変更する、通信を変更することなく追加のインディケータを通信と一緒に送信する、かかる追加のインディケータを含むことをサポートするリモート資源サービスの特定のインタフェースを使用するなど、種々の方法で、提供されるコンピュータネットワーク120aに関連付けられた指定済みの追加のインディケータを使用するように設定できる。さらに、仮想通信リンク174が1つまたは複数の追加のインディケータに対応するように設定された場合、提供されるコンピュータネットワーク120aはオプションとして、同一のリモート資源サービス194にも対応するが別の方法でリモート資源サービス194にアクセスするように設定された、1つまたは複数の他の仮想通信リンクを含むようさらに設定できる。例えば、提供されるコンピュータネットワーク120aは、追加のインディケータのいずれも使用することなくリモート資源サービス194にアクセスするため(例えば、そうでなければ公的に利用可能になるようなリモート資源サービス194への同一アクセスを提供するため)、仮想通信リンク174で使用されたものとは異なる1つまたは複数の別の追加のアクセス制御インディケータを使用するため、仮想通信リンク174用に使用された顧客識別子とは異なるリモート資源サービス194の顧客の識別子を使用するためなど、オプションとして別個の仮想通信リンク176を設定することができる。さらに、ここでは図示していないが、提供されるコンピュータネットワーク120aは、同様に、例えば、仮想通信リンク174として1つまたは複数の追加のインディケータを使用するように設定されたかまたは別の方法で設定された別の仮想通信リンクなど、それら別のリモート資源サービスへの別の仮想通信リンクを使用する1つまたは複数の別のリモート資源サービス(図示せず)にアクセスするように同様に設定され得る。
【0040】
例示した実施形態では、地理的位置1にあるCNS105のコンピューティングノードに加えて、提供されるコンピュータネットワーク120は、第2の地理的位置2 180に配置されているCNS105で提供されるコンピューティングノード184(例えば、地理的位置2にある異なる第2のデータセンタなど)をさらに含むことができる。それに応じて、仮想ルータ162は、地理的位置2で提供されるコンピュータネットワーク120aの一部へのオプションの仮想通信リンク168を含むように設定できる。本例では、地理的位置2にある提供されるコンピュータネットワーク120aの一部は、同様に、仮想通信リンク188を経由した地理的位置1にある提供されるコンピュータネットワーク120の一部との通信を含め、コンピューティングノード184との間の通信を管理する概念的仮想ルータ182を用いて説明される。異なる地理的位置にあるCNS105のコンピューティングノード間のかかる通信は、インターネットまたは別の公衆網を介して(例えば、CNS105でサポートされる暗号を使用する、安全なトンネルの一部として)通信を送信する、プライベートで安全な方法で(例えば、地理的位置間の専用回線を経由して)通信を送信するなど、種々の実施形態において種々の方法で処理される。さらに、ここでは図示していないが、地理的位置2における提供されるコンピュータネットワーク120aの一部は、同様に、(例えば、地理的位置1へのいかなるVPN接続とも異なる1つまたは複数のVPN接続を経由した)リモートクライアントプライベートネットワーク、リモート資源サービス、インターネットなどへの、地理的位置1でその一部が図示されている、同一タイプの他の仮想通信リンクの一部または全てを含むことができる。
【0041】
図1Bの提供されるコンピュータネットワーク120aは、例示を目的として含まれていること、および、クライアント用にCNS105で提供される別のコンピュータネットワークは、あらゆるタイプの設定された通信リンクおよびネットワークトポロジ情報を含んではおらず、かつ/または、ここに示されていない別のタイプの設定された通信リンクおよびネットワークトポロジ情報を含む可能性があることを理解されよう。例えば、いくつかの実施形態および状況では、提供されるコンピュータネットワークは、コンピューティングノードに加えてまたはその代わりに、設定された装置および別の資源を含むことができ、そうである場合、かかる別の資源の各々に、オプションとして、その提供されるコンピュータネットワークのネットワークアドレスを割り当てることができる。さらに、
図1Bに示されている概念的装置および通信リンクは、各種の基礎となる物理装置、接続およびモジュールを用いて実装することができる。また、ここでは図示していないが、クライアントは、提供されるコンピュータネットワークからか、またはその代わりに別のリモートコンピューティングシステムからかに関わらず、リモート資源サービスとの様々なタイプの別のやりとりを実行することができ、これには、資源使用のための加入/登録、種々の認証情報(例えば、ユーザID、パスワードなど)の受信/作成、提供されるコンピュータネットワーク(例えば、プライベートな企業ネットワークへのネットワーク拡張など)から後でアクセスされる(例えば、リモートのプライベートな企業ネットワークの一部である)別のリモートコンピューティングシステムからの資源および/または名前空間の作成などがある。
【0042】
図2は、設定可能ネットワークサービスの一実施形態などによって、コンピュータネットワークの提供に使用するためのコンピューティングシステムの実施形態例を示すネットワーク図である。具体的には、本例では、多数の物理コンピューティングシステムがデータセンタ200内の同一場所に配置され、かつ種々のネットワーキング装置および1つまたは複数の物理ネットワークを経由して相互接続されている。物理コンピューティングシステムおよび別の装置は、本例では設定可能ネットワークサービスによってクライアントに複数のコンピュータネットワークを提供するために、提供されるコンピュータネットワークの各々を仮想ネットワークとして確立および保守すること、および物理ネットワークを、仮想ネットワークがその上に重ねられている基板ネットワークとして使用することにより、使用される。例えば、
図1Bの例に関して、データセンタ200は、地理的位置1に配置することができ、例示された物理コンピューティングシステムは、提供されるコンピュータネットワーク120aのコンピューティングノード164、165および166を提供するために使用できる。オーバーレイネットワークおよび基礎となる基板ネットワークの使用は、少なくともいくつかの実施形態において提供されるコンピュータネットワークのコンピューティングシステムにとって透過的である可能性がある。
【0043】
このように、本例では、設定可能ネットワークサービスによって提供されるコンピュータネットワークが、基礎となる物理基板ネットワークを経由して通信を送信する仮想オーバーレイネットワークとして実装される。提供される仮想オーバーレイネットワークは、種々の実施形態において種々の方法で実装することができ、例えば、いくつかの実施形態では(例えば、仮想ネットワーク用の仮想ネットワーク情報を、物理基板ネットワークのネットワーキングプロトコル用に設定された通信に埋め込むことにより)通信をカプセル化することなく実装できる。説明に役立つ一例として、仮想ネットワークは、32ビットのIPv4(インターネットプロトコルバージョン4)ネットワークアドレスを使用して実装され得、そしてそれらの32ビットの仮想ネットワークアドレスは、その物理基板ネットワークで使用される128ビットのIPv6(インターネットプロトコルバージョン6)ネットワークアドレスの一部として埋め込まれ得る、これは、(例えば、ステートレスIP/ICMPトランスレーション(SIIT)を用いて)通信パケットまたは別のデータ通信のヘッダの再設定、または別の方法で、それらのデータ通信が設定された第1のネットワーキングプロトコルから、異なる第2のネットワーキングプロトコルに変換するための、かかるデータ通信の変更などにより行う。説明に役立つもう1つ別の例として、仮想ネットワークおよび基板ネットワークの両方を同一のネットワークアドレス指定プロトコル(例えば、IPv4またはIPv6)を使用して実装することができ、通信は基板ネットワークを介して送信されるのに対し、仮想ネットワークアドレスを使用し、提供される仮想オーバーレイネットワークを経由して送信されたデータ通信は、基板ネットワークに対応する異なる物理ネットワークアドレスを使用するように変更できるが、基板ネットワークを出る時に通信データをその元の形式に復元できるように、元の仮想ネットワークアドレスを変更済みデータ通信に格納しているか、または別の方法で追跡している。別の実施形態では、少なくともいくつかのオーバーレイネットワークは、通信のカプセル化を使用して実装できる。
【0044】
図2の図示例は、設定可能ネットワークサービスの実施形態で動作する複数の物理コンピューティングシステムを持つデータセンタ200を含む。データセンタ200は、データセンタ200の外部にある1つまたは複数の公衆網235に接続されており、その公衆網235は、プライベートネットワーク240を経由して1つまたは複数のリモートコンピューティングシステム245a、各々が別の地理的位置に複数のコンピューティングシステムを持つ1つまたは複数のグローバルアクセス可能なデータセンタ260、および1つまたは複数の別のリモートコンピューティングシステム245bへのアクセスを提供する。公衆網235は、例えば、ネットワークのうちの公的アクセス可能なネットワークであって、インターネットなど、種々の異なる団体によっておそらく運営されている可能性があり、そして、プライベートネットワーク240は、例えば、プライベートネットワーク240の外部にあるコンピューティングシステムからは全体または一部がアクセス不能な企業ネットワークである。コンピューティングシステム245bの各々は、例えば、インターネットと(例えば、電話回線、ケーブルモデム、デジタル加入者回線(DSL)などを経由して)直接接続するホームコンピューティングシステムであってもよい。
【0045】
本例では、仮想の提供されるコンピュータネットワークの設定は、設定可能ネットワークサービスのマネージャモジュール210によって容易にされ、そして、設定可能ネットワークサービスの複数の別のモジュールは、例えば、基板ネットワークに出入りする通信を変更することにより物理基板ネットワークの端から、提供されるコンピュータネットワークの機能を実装するために使用される。具体的には、本例では、設定可能ネットワークサービスの複数のノード通信マネージャモジュールの各々は、例えば、以降でさらに詳述するように、図示したノード通信マネージャモジュール209a、209d、および250など、関連付けられたコンピューティングノードとの間の通信を管理する。さらに、本例では、設定可能ネットワークサービスの外部通信マネージャモジュール270は、以降でさらに詳述するように、データセンタ200内の物理コンピューティングシステムと外部コンピューティングシステムとの間の通信を管理する。本例では、単一の外部通信マネージャモジュール270のみが図示されているが、モジュール270の機能は、冗長性および負荷分散などのために、複数の装置を使用して実装できることを理解されよう。
【0046】
データセンタ200は、多数の物理コンピューティングシステム205a〜205dおよび255a〜255nのほかに、関連したコンピューティングシステム255a〜255nのために通信を管理する1つまたは複数の別のコンピューティングシステム(図示せず)上で実行するCNSノード通信マネージャモジュール250、および1つまたは複数のコンピューティングシステム(図示せず)上で実行する設定可能ネットワークサービスのマネージャモジュール210を含む。本実施形態例において、物理コンピューティングシステム205a〜205dの各々は、複数の仮想マシンコンピューティングノードをホストし、かつ、コンピューティングシステム205a上のCNS VMノード通信マネージャモジュール209aおよび仮想マシン207a、ならびにコンピューティングシステム205d上のCNS VMノード通信マネージャモジュール209dおよび仮想マシン207dなど、仮想マシン(VM)ノード通信マネージャモジュールも(例えば、物理コンピューティングシステム用の仮想マシンハイパーバイザモニタの一部として)含む。仮想マシンコンピューティングノードの各々は、設定可能ネットワークサービスによって、クライアントに提供されるコンピュータネットワークの異なるコンピューティングノードとして使用できる。物理コンピューティングシステム255a〜255nは、本例ではいかなる仮想マシンも実行しないため、設定可能ネットワークサービスでクライアントに提供されるコンピュータネットワークの一部である異なるコンピューティングノードとして、各々動作することができる。別の実施形態では、データセンタにある物理コンピューティングシステムの全部が仮想マシンをホストするか、いずれもホストしない可能性がある。
【0047】
本データセンタ例は、スイッチ215aおよび215b、エッジルータ225a〜255c、ならびにコアルータ230a〜230cなど、複数の物理ネットワーキング装置をさらに含む。スイッチ215aは、物理コンピューティングシステム205a〜205cを含む物理ネットワークの一部であって、かつ、エッジルータ225aに接続されている。スイッチ215bは、物理コンピューティングシステム205d、255a〜255n、およびCNSノード通信マネージャモジュール250およびCNSシステムマネージャモジュール210を提供するコンピューティングシステムを含む異なる物理ネットワークの一部であって、かつ、エッジルータ255bに接続されている。スイッチ215a〜215bで確立された物理ネットワークは、中間にある相互接続ネットワーク220を経由して相互に別のネットワーク(例えば、公衆網235)と交互に接続され、その相互接続ネットワーク220は、エッジルータ225a〜255cおよびコアルータ230a〜230cを含む。エッジルータ225a〜255cは、2つ以上のネットワーク間のゲートウェイを提供する。例えば、エッジルータ225aは、スイッチ215aで確立された物理ネットワークと相互接続ネットワーク220との間のゲートウェイを提供する。エッジルータ225cは、相互接続ネットワーク220と公衆網235との間のゲートウェイを提供する。コアルータ230a〜230cは、かかるデータ送信の特性(例えば、ソースおよび/または宛先の基板ネットワークアドレス、プロトコル識別子、など)および/または相互接続ネットワーク220自体の特性(例えば、物理ネットワークトポロジに基づく経路など)に基づき適宜パケットまたは他のデータ通信を転送することなどにより、相互接続ネットワーク220内での通信を管理する。
【0048】
図示されたノード通信マネージャモジュールは、関連したコンピューティングノードとの間で送信された通信を管理する。例えば、ノード通信マネージャモジュール209aは、関連した仮想マシンコンピューティングノード207aを管理し、ノード通信マネージャモジュール209dは、関連した仮想マシンコンピューティングノード207dを管理し、そして、別のノード通信マネージャモジュールの各々は、同様に1グループの1つまたは複数の別の関連したコンピューティングノードのために通信を管理する。図示されたノード通信マネージャモジュールは、コンピューティングノード間の通信を管理して、特定の仮想ネットワークが中間にある物理基板ネットワーク(例えば、相互接続ネットワーク220ならびにスイッチ215aおよび215bに関連付けられた物理ネットワーク)の上に重なるようにすることができ、そして、かかる通信を管理するためにファイアウォールポリシおよび別のネットワークアクセス制限を実装できる。外部通信マネージャモジュール270は、例えば、かかる外部通信に関して、データセンタ200内の基板ネットワーク上にオーバーレイネットワークをさらに実装するため、データセンタ200に出入りする外部通信を管理する。外部通信マネージャモジュール270は、データセンタ200の外部にあるリモート資源サービスへのプライベートアクセスまたは別の専用アクセスを許可する提供されるコンピュータネットワーク用の少なくともいくつかの設定されたアクセス機構、およびオプションとして外部リモートクライアントコンピュータネットワークへの少なくともいくつかのVPN接続を含め、ファイアウォールポリシおよび別のネットワークアクセス制限を実装するための処置をとることができるか、または代わりに、かかるVPN接続の設定可能ネットワークサービスの部分を実装する別のハードウェアおよび/またはソフトウェア(図示せず)と連携して動作することができる。
【0049】
従って、説明に役立つ一例として、コンピューティングシステム205a上の1つの仮想マシンコンピューティングノード207aは、IPv4を仮想ネットワーク用の仮想ネットワークアドレスを表すために使用して、コンピューティングシステム205d上の1つの仮想マシンコンピューティングノード207d、およびコンピューティングシステム255a(およびオプションとして、このデータセンタ内または設定可能ネットワークサービスでも使用される1つまたは複数の別のデータセンタ260内の別のコンピューティングノード)とともに、クライアント用の特定の提供される仮想コンピュータネットワーク(例えば、
図1Bの提供されるコンピュータネットワーク120a)の一部であってもよい。別の仮想マシンコンピューティングノード207a、仮想マシンコンピューティングノード207d、およびコンピューティングシステム255d〜255nは(図示された別のコンピューティングノードと同様に)、現在、別のクライアントに提供中の別のコンピュータネットワークに割り当てられているか、現在は提供されるコンピュータネットワークに割り当てられておらずその設定可能ネットワークサービスで使用不能であるか、かつ/または同一の特定の提供される仮想コンピュータネットワークの一部でもある可能性がある。特定の提供される仮想コンピュータネットワークの一部である仮想マシンコンピューティングノード207a上でクライアント用に実行されているプログラムは、次に、出力通信(図示せず)を特定の提供される仮想コンピュータネットワークの仮想マシンコンピューティングノード207dへ向けることができるが、これは、その宛先仮想マシンコンピューティングノード207dに割り当てられたその提供される仮想コンピューティングネットワーク用の仮想ネットワークアドレスを指定することなどによって行う。ノード通信マネージャモジュール209aは、その出力通信を受信し、そして、少なくともいくつかの実施形態では、送信仮想マシンコンピューティングノード207dおよび/または宛先仮想マシンコンピューティングノード207dに関する事前の設定された情報などに基づき、および/またはシステムマネージャモジュール210と(例えば、許可決定の取得、かかる情報の一部または全ての取得などのため)動的にやりとりすることにより、その出力通信の送信を許可するかどうかを決定する。
【0050】
ノード通信マネージャモジュール209aが、出力通信が許可されることを決定する(または、かかる許可決定を実行しない)場合、モジュール209aは、その通信用の宛先仮想ネットワークアドレスに対応する実際の物理基板ネットワーク位置を決定する。本例では、相互接続ネットワークは、相互接続ネットワークを経由して接続されたコンピューティングノード用の実際のネットワークアドレスを表すためにIPv6を使用し、モジュール209aは、出力通信のヘッダを再設定し、実際のIPv6の基板ネットワークアドレスを使用してその出力通信がノード通信マネージャモジュール209dに向けられるようにする。ノード通信マネージャモジュール209aは、例えば、システムマネージャモジュール210と動的にやりとりすることにより、宛先仮想コンピューティングノード207dの仮想ネットワークアドレス用に使用する実際のIPv6宛先ネットワークアドレスを決定できるか、または(例えば、アドレス解決プロトコル(ARP)を使用した要求など、送信仮想マシンコンピューティングノード207aからのその宛先仮想ネットワークアドレスに関する情報の事前の要求に応じて)その情報を事前に決定および保存しておくことができる。本例では、使用された実際のIPv6宛先ネットワークアドレスが仮想宛先ネットワークアドレスおよび追加情報を埋め込んで、カプセル化することなくオーバーレイネットワークを介して通信を送信できるようにする。
【0051】
ノード通信マネージャモジュール209dは、相互接続ネットワーク220を経由して通信を受信する場合、実際のIPv6宛先ネットワークアドレスから仮想宛先ネットワークアドレスおよび追加情報を抽出して、どの仮想マシンコンピューティングノード207dにその通信が向けられているかを決定する。ノード通信マネージャモジュール209dは次に、オプションとして、通信が宛先仮想マシンコンピューティングノード207dに対して許可されているかどうかを決定するが、これは、例えば、実際のIPv6ソースネットワークアドレスから仮想ソースネットワークアドレスおよび追加情報を抽出すること、およびその仮想ソースネットワークアドレスを持つコンピューティングノードが、通信を転送したノード通信マネージャモジュールで実際に管理されていることを確認して、悪意のある送信者がソースネットワークアドレスになりすますのを防ぐことなどにより、行う。通信が許可される(または、ノード通信マネージャモジュール209dがかかる許可決定を実行しない)ことが決定している場合、そのモジュール209dはその後、例えば、送信仮想マシンコンピューティングノードの仮想ネットワークアドレスをソースネットワークアドレスとして使用し、宛先仮想マシンコンピューティングノードの仮想ネットワークアドレスを宛先ネットワークアドレスとして使用することなどにより、入力通信のヘッダを再設定し、仮想ネットワーク用の適切なIPv4ネットワークアドレスを使用して、その入力通信が宛先仮想マシンコンピューティングノード207dに向けられるようにする。入力通信のヘッダを再設定した後、モジュール209dは、次にその変更済み通信を宛先仮想マシンコンピューティングノードに転送する。少なくともいくつかの実施形態では、入力通信を宛先仮想マシンに転送する前に、モジュール209dは、安全に関する追加の手順を実行することもできる。例えば、モジュール209dは、(例えば、同一仮想ネットワークに属していること、および/またはその提供される仮想ネットワーク用に指定されたネットワークアクセス制限情報、同一顧客または別の団体に関連付けられていること、コンピューティングノードが相互通信を許可されている異なる団体に関連付けられていること、などに基づいて)送信仮想マシンコンピューティングノードが宛先仮想マシンと通信するのを許可されること、および/または、モジュール209dによって事前に取得された情報またはシステムマネージャモジュール210とのやりとりなどに基づいて、入力通信が許可されているタイプであることを確認できる。
【0052】
送信仮想マシンコンピューティングノード207aが代わりに(または追加で)、出力通信(図示せず)を、データセンタ200の外部にある1つまたは複数の対象とする宛先コンピューティングシステムに向ける場合、通信マネージャモジュール209aは、同様の方法でその出力通信を受信および処理する。対象とする外部の宛先コンピューティングシステムは、例えば、同一の特定の提供される仮想コンピュータネットワークの一部であるもう1つ別のコンピューティングノード(例えば、特定の提供されるコンピュータネットワークがその拡張であるリモート仮想クライアントコンピュータネットワーク上、または設定可能ネットワークサービスによって特定の仮想コンピュータネットワークの部分を提供するためにも使用されたもう1つ別のデータセンタ260においてなど)、リモート資源サービスのコンピューティングシステム、インターネット上で公的アクセス可能なコンピューティングシステムなどでもよい。少なくともいくつかの実施形態および状況では、モジュール209aは、出力通信の送信を許可するかどうかを最初に決定することができ、決定する場合、その通信用の宛先ネットワークアドレスに対応する実際の物理基板ネットワーク位置を決定する。本例では、決定された物理基板ネットワーク位置は、例えば、モジュール270が、別の方法ではノード通信マネージャモジュールに割り当てられていない全ての仮想および/または実際のネットワークアドレスに関連付けられている場合、外部通信マネージャモジュール270に対応する。モジュール270は、相互接続ネットワーク220を経由して通信を受信する場合、受信した通信から宛先ネットワークアドレスおよび追加情報を同様に抽出し、オプションとして、対象とする宛先に対して通信が許可されているか否かの決定を含め、その通信を転送するか否かおよびその方法を決定する。通信が許可されること(または、モジュール270がかかる許可決定を実行しないこと)が決定された場合、モジュール270は、次に入力通信のヘッダを再設定し、適切なIPv4の公衆網アドレス(または、公衆網235に適した別のネットワークアドレス)を使用してその通信が宛先に向けられるようにし、その後その変更済み通信を公衆網経由で転送する。
【0053】
前述したとおり、こうして外部通信マネージャモジュール270は、例示した実施形態において、リモート資源サービス用の設定されたアクセス機構を経由してそれらリモート資源サービスに送信された出力通信を含め、提供されるコンピュータネットワークからの出力通信を処理する。出力通信が、特定の提供されるコンピュータネットワーク用の設定されたアクセス機構を経由してリモート資源サービスに送信されている場合、モジュール270および/または送信コンピューティングノードの関連するノード通信マネージャモジュールは、少なくともいくつかの実施形態および状況において追加の処置をとる。例えば、特定の提供される仮想コンピュータネットワークは、リモート資源サービスの特定の名前空間にマッピングされている特定のリモート資源サービス(例えば、1つまたは複数のコンピューティングシステム245bまたはもう1つ別のデータセンタ260にある1つまたは複数のコンピューティングシステムを経由して提供されるリモート資源サービスなど)用の設定されたアクセス機構を有することができ、そして、送信仮想マシンコンピューティングノード207aは、その設定されたアクセス機構を経由して通信を送信できる。特定の提供されるコンピュータネットワーク用のそのリモート資源サービスに対する設定されたアクセス機構は、例えば、その設定されたアクセス機構を表すために割り当てられた特定の提供されるコンピュータネットワークの仮想ネットワークアドレスである可能性があり、そうである場合、その割り当てられた仮想ネットワークアドレスはモジュール270に関連付けられて、出力通信がモジュール270に向けられるようにすることができる。かかる出力通信を公衆網235経由でリモート資源サービスに転送する前に、モジュール270は使用されたアクセス機構用の設定を反映させるために、例えば、アクセス機構が対応する特定の名前空間を参照または別の方法で使用する出力通信の変更など、種々の処置をとる。かかる状況では、モジュール270は、アクセス機構のための名前空間および他の設定情報を、例えば、設定情報をローカルに保存する、システムマネージャモジュール270と連絡をとって設定情報を取得するなど、種々の方法で決定することができる。さらに、モジュール270は、特定の名前空間を種々の方法で使用するように通信を変更する方法および時を決定できるが、これは、事前に提供される設定可能ネットワークサービスに対応する設定情報(例えば、名前空間を示す1つまたは複数の特定のメッセージパラメータの指示、資源の指定または参照に使用される1つまたは複数の特定のメッセージパラメータの指示(オプションとして名前空間識別子を含む)、名前空間が示されるのを許可するかまたは別の方法で名前空間情報を使用するメッセージのタイプの指示、など)を有するリモート資源サービスなどによって行うことができる。
【0054】
説明に役立つ特定の一例として、リモート資源サービスは、データストレージサービスを提供することができ、そして、出力通信は、(例えば、保存されたオブジェクトまたは保存されたデータの別のグループを検索するため)特定のストレージ関連資源へのアクセス要求の可能性がある。そうである場合、特定のストレージ資源は、提供されるコンピュータネットワークの外部にあるコンピューティングシステム(例えば、クライアントのリモートプライベートコンピュータネットワーク上)の使用などにより、クライアントによって定義された名前空間の一部としてクライアントにより事前に作成されていた可能性がある。その同一の名前空間を使用するために特定の提供されるコンピュータネットワーク用のアクセス機構を設定することにより、提供されるコンピュータネットワークのコンピューティングノードは、クライアントの既存の保存された資源のアクセスおよび使用が可能になる。説明に役立つ一例として、クライアントのリモートプライベートコンピュータネットワークが企業ネットワークである場合、そのクライアントは異なるタイプのデータを保存するために異なる名前空間を使用することができ、例えば、デリケートな人事データを第1の名前空間に保存し、機密のソフトウェア開発ソフトウェアおよび他のデータを第2の名前空間に保存し、企業全体で一般に利用可能な他の企業データを第3の名前空間で保存する。設定可能ネットワークサービスの提供されるコンピュータネットワークは、その企業の特定のサブセット(例えば、人事部員)によってのみ使用される場合、特定の提供されるコンピュータネットワーク用のリモート資源サービスへのアクセス機構は、デリケートな人事データ用の第1の名前空間を使用するように設定できる。さらに、特定の提供されるコンピュータネットワークは、オプションとして、例えば、一般に利用可能な企業データ用の第3の名前空間を使用して、リモート資源サービスに対して設定された第2のアクセス機構を持つ(例えば、提供されるコンピュータネットワークの異なる割当て済み仮想ネットワークアドレスを使用して)ことができ、特定の提供されるコンピュータネットワークのコンピューティングノードが、異なるグループの資源にアクセスするため、特定の提供されるコンピュータネットワークの異なるローカル仮想ネットワークアドレスとやりとりできるようになる。
【0055】
説明に役立つもう1つの例として、特定のコンピュータネットワーク用のリモート資源サービスへのアクセス機構は、代わりに、特定の提供されるコンピュータネットワークのコンピューティングノードのみが、それらのコンピューティングノードによって作成および使用されるストレージ資源へのアクセスを許可されるように設定できる。そうである場合、設定可能ネットワークサービスは、新規の名前空間を自動生成する(例えば、その情報を特定の提供されるコンピュータネットワークのコンピューティングノードに提供することなく)か、または、クライアントにより設定情報で指示される新規の名前空間を使用することにより、その特定の提供されるコンピュータネットワークで使用する新規の名前空間を決定することができ、そして、その新規の名前空間を使用するようにアクセス機構を設定できる。設定可能ネットワークサービスまたは特定の提供されるコンピュータネットワークのコンピューティングノードは、リモート資源サービス内に新規の名前空間を作成するため、リモート資源サービスに応じて、さらに初期の処置をとる必要がある。一旦新規の名前空間が利用可能になると、特定の提供されるコンピュータネットワークのコンピューティングノードは、リモート資源サービスとやりとりするために設定されたアクセス機構を同様に使用して、新規の名前空間の一部である新規の保存された資源の作成およびかかる保存された資源へのアクセスを行うことができ、そして、外部通信マネージャモジュール270は、同様にその新規の名前空間を使用するように出力通信を適宜変更するであろう。
【0056】
特定のリモート資源サービス内の特定の名前空間に対応する設定されたアクセス機構を実装するために設定されていることに加えてまたはその代わりに、外部通信マネージャモジュール270は、いくつかの実施形態において、そのアクセス機構経由でそのリモート資源サービスに送信された一部または全ての通信に対するアクセス制御に関連した1つまたは複数の追加のインディケータを含むように設定でき、そして、送信仮想マシンコンピューティングノード270aはかかる通信をその設定されたアクセス機構経由で送信できる。かかる出力通信を公衆網235経由でリモート資源サービスに転送する前に、モジュール270は、使用されたアクセス機構用の設定を反映するために種々の処置をとることができ、例えば、リモート資源サービスに固有の方法で通信のヘッダおよび/または本体を変更することにより、アクセス機構が対応する1つまたは複数の追加のインディケータを含むように(例えば、リモート資源サービスが1つまたは複数のアクセス制御インディケータのクライアント指定を許可する場合、送信仮想マシンコンピューティングノード207aで指定された任意のインディケータの代わりまたは追加かを問わず、そのリモート資源サービスでサポートされる方法で1つまたは複数の追加のインディケータを含める)出力通信を変更することができる。かかる状況において、モジュール270は、情報をローカルに保存する、情報取得のためにシステムマネージャモジュールに連絡する、など、種々の方法でアクセス機構用の追加のインディケータを決定できる。また、モジュール270は、特定の追加のインディケータを種々の方法で使用するために通信を変更する方法と時を決定することができるが、これは、事前に提供される設定可能ネットワークサービスに対応する設定情報(例えば、かかるアクセス制御インディケータを示す1つまたは複数の特定のメッセージパラメータの指示、資源のアクセスに使用された1つまたは複数の特定のメッセージパラメータの指示(オプションとして1つまたは複数のかかるアクセス制御インディケータを含む)、1つまたは複数のかかるアクセス制御インディケータが指定できるかまたは別の方法でかかるアクセス制御インディケータを使用できるようにするメッセージのタイプの指示など)を有するリモート資源サービスなどによって行うことができる。
【0057】
設定されたアクセス機構による名前空間使用に関して前に説明した例と同様の方法で、リモート資源サービスは、データストレージサービスを提供することができ、そして、出力通信は、(例えば、保存されたオブジェクトまたは保存されたデータの別のグループを検索するため)特定のストレージ関連資源へのアクセス要求の可能性がある。そうである場合、特定のストレージ資源は、送信仮想マシンコンピューティングノード207aが属する提供されるコンピュータネットワークの1つのコンピューティングノードで事前に作成されているか、または現在の通信の一部として新規に作成またはアクセスされている可能性がある。いくつかの実施形態では、設定可能ネットワークサービスは、1つまたは複数の追加のインディケータをリモート資源サービス内での使用のために(例えば、それらを定義するために)指定するには、リモート資源サービスに応じて、さらに初期の処置をとる必要がある。別の箇所で詳述するとおり、送信仮想マシンコンピューティングノード207aおよび関連するクライアントは、追加のインディケータの使用を認識していない可能性があるが、外部通信マネージャモジュール270は、それにもかかわらず関連したインディケータを使用するために出力通信を適宜変更するだろう。
【0058】
さらに、前述したとおり、外部通信マネージャモジュール270は、例示した実施形態において、例えば、設定されたVPN接続経由で特定のリモートコンピュータネットワークに送信された出力通信など、提供されるコンピュータネットワークから、拡張が対応するリモートコンピュータネットワークへの出力通信を処理する。少なくともいくつかの実施形態では、設定可能ネットワークサービスは、クライアントが、データセンタ200にリモートな位置から、データセンタ200にあるクライアント用に提供されるコンピュータネットワークへのかかるVPN接続の確立をプログラムで開始できるようにするリモートアクセス確立APIを提供し、例えば、クライアントがVPN接続の確立に使用するため、適切なハードウェア装置、ソフトウェアおよび/または設定情報がリモート位置に配達されるようにする。例えば、コンピューティングシステム245dの1つは、かかるハードウェア装置および/またはソフトウェアを販売または別の方法で提供するオンライン小売業者に連絡することができ、そうである場合、設定可能ネットワークサービスは、その小売業者によって提供される別個のAPIを使用して、かかるハードウェア装置および/またはソフトウェアをクライアントに応じたリモート位置または別の指定位置へ配達する発注を(例えば、設定可能ネットワークサービスの提供されるAPI起動の一部としてクライアントによる指定、クライアント用の設定可能ネットワークサービスによって予め保存された情報、そのクライアント用に小売業者によって事前に保存された情報、などに基づいて)行うことができる。一旦かかるVPN接続または別の安全な接続が確立されて、クライアントが提供されるコンピュータネットワークにリモートアクセスできるようになると、モジュール270は、例えば、その安全な接続を使用して、その安全な接続が対応するリモート位置にある1つまたは複数の宛先コンピューティングシステム向けの出力通信を送信するなど、安全な接続をサポートするためにさらに処置をとることができる。
【0059】
このように、
図2に関して前述したとおり、少なくともいくつかの実施形態では、設定可能ネットワークサービスは、例えば、設定可能ネットワークサービスの種々のノード通信マネージャおよび設定可能ネットワークサービスの1つまたは複数の外部通信マネージャモジュールの使用など、基礎となる基板ネットワークを使用して、仮想コンピュータネットワークをオーバーレイネットワークとして実装することにより、クライアントに提供する。少なくともいくつかの実施形態では、1つまたは複数のシステムマネージャモジュールは、例えば、どのコンピューティングノードがどの提供される仮想ネットワークに属するかの追跡および/または管理、ならびに(例えば、特定の顧客または他の団体によって)特定の仮想ネットワーク用に使用されている仮想ネットワークアドレスに対応する実際の物理基板ネットワークアドレスに関する情報の提供などにより、コンピューティングノード間の通信の設定をさらに容易にすることができる。また、システムマネージャモジュールは、対象となる物理コンピューティングシステム上の仮想マシンコンピューティングノードおよび仮想マシンが関連付けられる提供される仮想ネットワークの指示を受信でき、その後、仮想マシンを仮想ネットワークに関連付けるために、対象とする物理コンピューティングシステム用の仮想マシンノード通信マネージャモジュールの設定を開始するか、または、(例えば、仮想マシンが最初に通信を開始または受信する時に)ノード通信マネージャモジュールが代わりにその設定を開始できる。
【0060】
少なくともいくつかの実施形態において、許可されていない通信の検出および/または防止は、前述したとおり、少なくともいくつかは仮想ネットワークがその上に重ねられている1つまたは複数の中間基板ネットワークのトポロジに基づく。かかる実施形態では、基板ネットワークを介した通信用のかかるコンピューティングノード用に使用された物理ネットワークアドレスは、コンピューティングノードの仮想ネットワークアドレスの指示を含み、かつ、コンピューティングノードの関連したノード通信マネージャモジュール位置に対応する基板ネットワーク用の部分ネットワークアドレス(例えば、ノード通信マネージャモジュールが通信を管理する基板ネットワークのサブネットワークまたは別の部分)を含む。従って、悪意のあるユーザが、仮想ネットワークの一部であるコンピューティングノード用に有効な物理ネットワークアドレスを正しく設定するためには、その悪意のあるユーザは、コンピューティングノードが属する仮想ネットワークに関する情報にアクセスし、関連するノード通信マネージャモジュール用の部分ネットワークアドレスを決定するためにコンピューティングノードの物理基板ネットワーク位置のトポロジに関する情報にアクセスし、そして、物理ネットワークアドレスを設定するためにその情報を使用する方法を決定する必要があるだろう。設定された物理ネットワークアドレスの妥当性は、例えば、設定された物理ネットワークアドレスに埋め込まれた仮想アドレスが対応するコンピューティングノードを識別し、その識別されたコンピューティングノード位置が、部分ネットワークアドレスに対応する基板ネットワークの部分にあるコンピューティングノードの1つ(例えば、部分ネットワークアドレスが対応するノード通信マネージャモジュールによって管理されるコンピューティングノードの1つ)に対応することを確認するなど、種々の方法で確認できる。また、設定された物理ネットワークアドレスの妥当性は、(例えば、ソース物理ネットワークアドレスが有効であることを確認するため)宛先コンピューティングノード向けの入力通信を受信するノード通信マネージャモジュール、指示された管理対象ノードの代わりにノード通信マネージャモジュールからとされるメッセージ(例えば、関心の対象とする宛先コンピューティングノード用の物理ネットワークアドレスを要求するメッセージ)を受信するマネージャモジュールなどによって、何度も確認される可能性がある。
【0061】
図4、
図5、および
図6は、それぞれ、少なくともいくつかの実施形態におけるシステムマネージャモジュール210、ノード通信マネージャモジュール、および外部通信マネージャモジュール270の動作に関する詳細を示している。また、少なくともいくつかの実施形態で使用できるオーバーレイネットワークの実装に関する詳細については、2008年3月31日に出願された「Configuring Communications Between Computing Nodes」という名称の米国特許出願番号第12/060,074号(代理人整理番号120137.576)に含まれており、その全体の参照により本明細書に組み込まれる。
【0062】
図3は、リモートクライアント用のコンピュータネットワークを提供するためのシステムの一実施形態の実行に適したコンピューティングシステム例を示すブロック図である。具体的には、
図3は、設定可能ネットワークサービスの提供を支援する設定可能ネットワークサービスシステムマネージャモジュールの一実施形態の実行に適したサーバコンピューティングシステム300と共に、種々のクライアントコンピューティングシステム350、ホストコンピューティングシステム360、および別のコンピューティングシステム380を示す。ここに示されていないが、いくつかの実施形態では、図示されたコンピューティングシステムの少なくともいくつか(例えば、サーバコンピューティングシステム300および設定可能ネットワークサービスの一部であるホストコンピューティングシステム360の少なくともいくつか)は、
図1Bおよび
図2に関して詳述しているように、例えば、データセンタなど、同一場所に配置されているか、またはそうでない場合は関連付けられている。さらに、ここには示されていないが、例えば、種々のノード通信マネージャモジュールおよび1つまたは複数の外部通信マネージャモジュールなど、設定可能ネットワークサービスの種々の他のモジュールは、少なくともいくつかの実施形態では存在し使用されている可能性がある。
【0063】
例示した実施形態において、サーバコンピューティングシステム300は、CPU305、各種入出力コンポーネント310、ストレージ320、およびメモリ330を含む設定要素を有する。図示した入出力コンポーネントは、ディスプレイ311、ネットワーク接続312、コンピュータ可読媒体ドライブ313、および別の入出力装置315(例えば、キーボード、マウス、スピーカなど)を含む。さらに、図示したクライアントコンピューティングシステム350は、CPU351、入出力コンポーネント352、ストレージ354、およびメモリ357を含め、サーバコンピューティングシステム300と同様の設定要素を持つ。別のコンピューティングシステム360および380の各々は、サーバコンピューティングシステム300に関して図示された設定要素の一部または全てと同様の設定要素を含むが、かかる設定要素は、簡潔さのために本例では図示されていない。
【0064】
設定可能ネットワークサービス(CNS)マネージャモジュール340の一実施形態は、メモリ330内で実行し、コンピューティングシステム350、360、および380と1つまたは複数のネットワーク390(例えば、インターネットおよび/またはワールドワイドウェブ、プライベートセルラーネットワーク、設定可能ネットワークサービスで使用中のプライベート基板ネットワークなど)を経由してやりとりする。本実施形態例では、モジュール340は、設定可能ネットワークサービスの一部として種々のクライアント(図示せず)による使用のためのコンピュータネットワークの提供および管理に関連する機能を含み、クライアントはコンピュータシステム350を使用して、提供されるコンピュータネットワークの設定およびアクセスを行う。ホストコンピューティングシステム360はまた、例えば、設定可能ネットワークサービスで提供されるコンピュータネットワーク用のコンピューティングノードの提供などにより、設定可能ネットワークサービスの提供を支援することができる。同様に、少なくともいくつかの実施形態では、別のコンピューティングシステムの少なくともいくつかもまた、設定可能ネットワークサービスの提供を支援することができ、例えば、提供されるコンピュータネットワークと外部リモートコンピューティングシステムとの間の相互通信を(例えば、VPN接続または別のアクセス機構の実装などで)容易にすること、提供されるコンピュータネットワークがアクセスするように設定されたリモート資源サービスを提供すること、提供されるコンピュータネットワークのコンピューティングノード間の相互通信を(例えば、基板ネットワークの部分または通信を容易にする設定可能ネットワークサービスの他のインフラストラクチャの実装などで)容易にすること、などができる。
【0065】
別のコンピューティングシステム350、360、および380は、モジュール340とのやりとりの一部として種々のソフトウェアを実行している可能性がある。例えば、クライアントコンピューティングシステム350の一部または全ての各々は、例えば、クライアントコンピューティングシステムのユーザが、設定可能ネットワークサービスのそのユーザまたは別のクライアントによる使用のために設定可能コンピュータネットワークの作成および設定を可能にするためなど、モジュール340とやりとりするために(例えば、ウェブブラウザまたは専用のクライアント側アプリケーションプログラムの一部として)メモリ357内でソフトウェアを実行している可能性がある。さらに、クライアントコンピューティングシステム350および/または別のコンピューティングシステム380の一部または全ての各々は、例えば、クライアント用のリモートネットワークの一部である複数のクライアントコンピューティングシステム350および/または別のコンピューティングシステム380を、クライアントのリモートネットワーク用に提供されるコンピュータネットワーク拡張の一部としてコンピューティングノードを提供する複数のホストコンピューティングシステム360に接続するVPN接続経由などで、クライアントの代わりに、そのクライアント用の設定可能ネットワークサービスで提供中のコンピュータネットワークとやりとりするため、メモリ357でソフトウェアを実行している可能性がある。また、クライアントコンピューティングシステム350の1つまたは複数のユーザは、別の箇所で詳述するとおり、様々な別のタイプの動作(例えば、設定可能ネットワークサービスでのクライアントのアカウントに関する管理機能、提供されるコンピュータネットワーク使用のモニタなど)を実行するためにモジュール340とやりとりすることができる。このほか、ホストコンピューティングシステム360および/または別のコンピューティングシステム380のいくつかは、設定可能ネットワークサービスの提供を支援するために、提供されるコンピュータネットワークのコンピューティングノード間で送信された通信の管理を支援するノード通信マネージャモジュールなどの、ソフトウェアモジュール(図示せず)を実行することができる。さらに、コンピューティングシステム360および380の別のいくつかは、種々のユーザが利用可能なリモート資源サービスの実行など、他の機能を実行することができる。情報322など、モジュール340および設定可能ネットワークサービスの機能に関する種々の情報は、ストレージ320にも保存されており、複数のクライアントのために、コンピュータネットワークの設定および/または提供に関する情報を含むことができる。
【0066】
モジュール340がクライアント用にコンピュータネットワークを作成および設定するための1つまたは複数の要求(または他の指示)を受信すると、モジュール340は、別の箇所で詳述するとおり、種々の動作を実行することができる。かかる動作は、コンピュータネットワークの一部となる予定のホストコンピューティングシステム360からの1つまたは複数のコンピューティングノードの選択、そのコンピュータネットワークを提供するためのそれらホストコンピューティングシステムおよび/または別のコンピューティングシステムの設定、および提供されるコンピュータネットワークからクライアントのリモートコンピューティングシステム350またはリモートの別のコンピューティングシステム380へのアクセスの開始を含む。また、モジュール340は、例えば、クライアントからの要求に応じてまたは自動的に決定したとおり、提供中のコンピュータネットワークを管理するためにコンピューティングシステム360とさらにやりとりするが、これは、いくつかの状況における提供されるコンピュータネットワークの一部であるコンピューティングノード数の増減、提供されるコンピュータネットワーク用の設定されたネットワークトポロジの変更、提供されるコンピュータネットワークのコンピューティングノードを提供する特定のホストコンピューティングシステムの変更(例えば、提供されるコンピュータネットワークの1つまたは複数のコンピューティングノード上で実行中のプログラムの別のコンピューティングノードへの移行など)などのためである。さらに、モジュール340は、提供されるコンピュータネットワークの使用および動作を追跡するため、ホストコンピューティングシステム360の1つまたは複数のモニタ、またはそうでない場合はそれらとのやりとりを行うことができる。
【0067】
コンピューティングシステム300、350、360、および380は単に例示的であって、本発明の範囲を制限することを意図するものでないことを理解されよう。コンピューティングシステムおよび/またはコンピューティングノードは、各々代わりに複数のやりとりするコンピューティングシステムまたは装置を含んでもよく、そのコンピューティングシステム/ノードは、インターネットなどの1つまたは複数のネットワーク、ウェブ、またはプライベートネットワーク(例えば、モバイル通信ネットワークなど)経由を含めて、図示されていない別の装置に接続可能である。より一般的には、コンピューティングノードまたは別のコンピューティングシステムは、デスクトップまたは別のコンピュータ、データベースサーバ、ネットワークストレージ装置および別のネットワーク装置、PDA、携帯電話、無線電話、ポケットベル、電子手帳、インターネット家電、テレビベースのシステム(例えば、セットトップボックスおよび/またはパーソナル/デジタルビデオレコーダを使用)、ならびに適切な通信能力を含む他の種々の消費者製品を含むがこれらに限定されることなく、やりとりし、説明したタイプの機能を実行できるハードウェアおよびソフトウェアの任意の組合せを含んでもよい。さらに、図示したモジュール340によって提供される機能は、いくつかの実施形態では、追加のモジュールに分散してもよく、また、モジュール340は、設定可能ネットワークサービスの複数のモジュールで提供されているとして別の箇所で説明されている機能(例えば、1つまたは複数のシステムマネージャモジュール、1つまたは複数のノード通信マネージャモジュール、および1つまたは複数の外部通信マネージャモジュール)を組み込むことができる。同様に、いくつかの実施形態では、モジュール340の一部の機能は提供されなくてもよく、さらに/または別の追加の機能が利用可能であってもよい。
【0068】
種々のアイテムが、使用中にメモリ内またはストレージ上に格納されているとして例示されるが、これらのアイテムまたはそれらの部分は、メモリ管理およびデータ整合性の目的で、メモリと別のストレージ装置との間で転送可能であることも理解されよう。代替として、別の実施形態では、ソフトウェアモジュールおよび/またはシステムの一部もしくは全ては、別の装置上のメモリ内で実行し、コンピュータ間通信を経由して例示されたコンピューティングシステムと通信してもよい。さらに、いくつかの実施形態では、システムおよび/またはモジュールの一部もしくは全ては、特定用途向け集積回路(ASIC)、標準的な集積回路、コントローラ(例えば、適切な命令の実行、およびマイクロコントローラおよび/または組込コントローラを含む)、フィールドプログラマブルゲートアレイ(FPGA)、結合プログラム可能論理回路(CPLD)などを含むがこれらに限定されることなく、少なくともいくつかはファームウェア内および/またはハードウェア内など、別の方法で実装または提供可能である。モジュール、システムおよびデータ構造の一部または全ても、ハードディスク、メモリ、ネットワーク、または適切なドライブもしくは適切な接続を介して読み取る携帯用媒体などの、コンピュータ可読媒体上に(例えば、ソフトウェア命令または構造化データとして)格納することができる。システム、モジュールおよびデータ構造も、無線ベースおよび有線/ケーブルベースの媒体を含め、種々のコンピュータ可読伝送媒体上で生成されたデータ信号として(例えば、搬送波の一部または別のアナログまたはデジタル伝搬信号として)送信されることが可能で、種々の形態(例えば、単一または多重化アナログ信号の一部、または複数の不連続デジタルパケットまたはフレームとして)をとることができる。かかるコンピュータプログラム製品は、別の実施形態では別の形態をとることもできる。従って、本発明は、別のコンピュータシステム設定で実施してもよい。
【0069】
図4Aおよび
図4Bは、設定可能ネットワークサービスマネージャ(Configurable Network Service Manager)ルーチン400の実施形態例の流れ図である。このルーチンは、例えば、
図1Aのシステムマネージャモジュール110、
図2のシステムマネージャモジュール210、および/または
図3のシステムマネージャモジュール340によって提供されることがあり、例えば、コンピュータネットワークをリモートクライアントに提供する設定可能ネットワークサービスの動作の管理を支援する。例示した実施形態では、ルーチン400で作成および提供されるコンピュータネットワークの少なくともいくつかは、クライアントの既存のリモートネットワークへの拡張でもよく、他方、別の実施形態では、ルーチン400で作成および提供されるネットワークは代わりに、別のネットワークの拡張ではない、クライアントによって使用される単独のネットワークでもよい。
【0070】
例示した実施形態のルーチンは、ブロック405から始まり、ここで、クライアントからのメッセージまたは受信された別の情報の指示を受信する。少なくともいくつかの実施形態では、ルーチン400がサポートする設定可能ネットワークサービスは、リモートクライアントがその設定可能ネットワークサービスとプログラムでやりとりできるようにする1つまたは複数のAPIを提供し、そうである場合、ブロック405で受信された指示の一部または全ては、起動またはリモートクライアントのそれらAPIとのプログラムでのやりとりによって作成された可能性があり、他方、別の実施形態および状況では、ブロック405で受信された指示の一部または全ては、代わりに、リモートクライアントまたは別のものによって別の方法で開始された可能性がある。
【0071】
ブロック405の後、ルーチンはブロック410に進み、ブロック405で受信された指示が、要求しているクライアントのために提供される新規のコンピュータネットワークの作成(例えば、クライアントの既存のリモートネットワークへの拡張など)を開始するか否かを判定する。作成を開始する場合、ルーチンはブロック415に進み、クライアントのために、新規のコンピュータネットワーク拡張または別の新規のコンピュータネットワークを作成するための種々の動作を実行する。例えば、別の箇所で詳述するとおり、新規のコンピュータネットワークを作成するために受信された通信は、例えば、作成されたコンピュータネットワークの一部となる多数のコンピューティングノード、新規のコンピュータネットワークがもう1つ別のリモートネットワークへの拡張か否かの指示など、作成されるコンピュータネットワークに関連した種々の設定情報を含むことができる。ブロック415で取られる処置には、例えば、作成中の新規コンピュータネットワークでの使用のために設定可能ネットワークサービスから利用可能な特定のコンピューティングノードの選択、一意の識別子の生成および作成中の新規コンピュータネットワークへの関連付け、後で使用するための受信した任意の設定情報の保存などがある。別の箇所で詳述するとおり、かかるコンピューティングノードは、種々の実施形態において、例えば、選択されたコンピューティングノードの能力、選択されたコンピューティングノードのネットワーク位置(例えば、設定可能ネットワークサービスの基礎となる基板ネットワーク上、コンピュータネットワークの別のコンピューティングノードと相対的なネットワーク位置上など)、選択されたコンピューティングノードの地理的位置(例えば、地理的に分散された複数のデータセンタのうちの1つ内、コンピュータネットワークの別のコンピューティングノードと相対的な地理的位置上など)に基づき、またはランダムな方法などで、利用可能なコンピューティングノードのグループから種々の方法で選択することができる。さらに、ここでは図示していないが、ルーチンは、クライアントに新規コンピュータネットワーク用のの識別子または新規コンピュータネットワーク用の別の参照を提供して、クライアントが、新規コンピュータネットワークの追加の設定を実行する際に、その新規コンピュータネットワークを後で参照できるようにする。
【0072】
ブロック415の後、または代わりにブロック410で、ブロック405で受信された指示が新規のコンピュータネットワークを作成しないと判定された場合、ルーチンはブロック420に進み、ブロック405で受信された指示がアクセス制限に関する情報または指示されたコンピュータネットワーク用の別のアクセス情報を含むか否かを判定する。例えば、ある状況では、クライアントは、新規のコンピュータネットワーク拡張およびその新規コンピュータネットワーク拡張用に指定された種々の設定情報の作成要求など、ブロック405に関して受信されて一緒に処理された1つあるいは複数の要求または別のメッセージを提供することができ、そうである場合、アクセス情報が提供される指示されたコンピュータネットワークは、ブロック415に関して作成されたばかりの新規コンピュータネットワーク拡張の可能性がある。別の状況および実施形態では、リモートクライアントは、例えば、新規のコンピュータネットワークを作成するための初期要求、その以前に作成されたコンピュータネットワーク用の各種の設定情報を後で指定するための1つまたは複数の別個の要求など、ブロック405に関して受信および処理された異なる通信を異なる時に代わりに提供することもできる。ブロック420で、アクセス情報がブロック405で受信されたと判定された場合、ルーチンはブロック422に進み、クライアントがリモートアクセス確立APIを起動したか、またはそうでなければ、クライアントのリモート位置から指示されたコンピュータネットワークへのリモートアクセスの確立を要求したか否かを判定し、これは、例示した実施形態において、リモート位置にあるクライアントの1つまたは複数のリモートコンピューティングシステムから指示されたコンピュータネットワークへのVPN接続の作成を開始することにより実行される。そうである場合、ルーチンはブロック425に進み、リモートクライアントアクセスを確立するための処置をとるVPN作成実行(VPN Creation Fulfillment)ルーチンを実行するが、かかるルーチンの一例は
図8に関して詳述する。
【0073】
ブロック425の後、または代わりにブロック422で、アクセス情報がリモートクライアント位置でのVPN接続の作成開始を指示していないと判定された場合、ルーチンはブロック430に進み、指示されたコンピュータネットワーク用に指定された別のアクセス制限情報を使用して、指示されたコンピュータネットワークのために許容アクセスを設定する。別の箇所で詳述するとおり、かかる設定情報は、コンピュータネットワークのコンピューティングノードのいずれかが、インターネットまたはそうでない場合はコンピュータネットワークの外部へのアクセスを許可されるか否か、およびオプションとしてコンピュータネットワーク(指示されたコンピュータネットワークがリモートコンピュータネットワークの外部にある場合、コンピュータネットワークのリモート部分を含む)のコンピューティングノード間の通信アクセスポリシを指定できるか否の制限を含むことができる。したがって、ブロック430では、別の箇所で詳述するとおり、ルーチンは、1つまたは複数の処置をとり、これには、例えば、コンピュータネットワークをサポートするノード通信マネージャモジュールおよび/または外部通信マネージャモジュールで使用するルーティング情報の設定(例えば、それらの通信マネージャモジュールに、設定する情報とともにメッセージを送信することによって)などが含まれる。また、ブロック425でリモートクライアント位置から提供されるコンピュータネットワークへのVPN接続を確立するための処置がとられた場合、ブロック430でとられた処置は、提供されるコンピュータネットワークのために、提供されるコンピュータネットワークまたはそうでない場合は設定可能ネットワークサービスによってかかるVPN接続をサポートするための処置を追加で含むことができ、例えば、かかるVPN接続を受け取って、そのVPN接続用に暗号化された通信を解読するための適切な情報を使用するために、提供されるコンピュータネットワークを設定する。
【0074】
ブロック430の後、または代わりにブロック420で、ブロック405での指示がアクセス情報を含まないと判定された場合、ルーチンは、ブロック440に進んで、ブロック405の指示が、例えば、1つまたは複数のネットワークアドレス範囲および/または別の形式で指定されたネットワークアドレスなど、指示されたコンピュータネットワーク用のネットワークアドレス情報を含むかどうかを判定する。アドレス情報を含む場合、ルーチンは、ブロック445に進み、指示されたコンピュータネットワークのコンピューティングノードで使用するため、指定されたネットワークアドレス情報を保存し、それらのコンピューティングノードが既に選択されているか、またはそうでなければ使用されている場合、さらに続けてそれらの指定済みネットワークアドレスを指示されたコンピュータネットワークのコンピューティングノードに関連付けることができる(例えば、ブロック415または/および462に関して)。指定済みネットワークアドレスとコンピュータネットワークのコンピューティングアドレスとの関連付けは、別の箇所で詳述するとおり、コンピュータネットワークをサポートするノード通信マネージャモジュールおよび/または外部通信マネージャモジュールによって使用されるルーティング情報の設定をさらに含むことができる。ブロック445の後、または代わりにブロック440で、ブロック405で受信された指示がネットワークアドレス情報を含んでいないと判定された場合、ルーチンは、ブロック455に進み、ブロック405で受信された指示が指示されたコンピュータネットワーク用のネットワークトポロジ情報を含むかどうかを判定する。ネットワークトポロジ情報を含む場合、ルーチンは、ブロック457に進んで、指示されたコンピュータネットワーク用のネットワークトポロジ情報を保存し、オプションとして続けて、その指示されたコンピュータネットワークをネットワークトポロジ情報に従って設定する。ネットワークトポロジ情報の設定は、別の箇所で詳述するとおり、例えば、指定されたトポロジ情報の一部である仮想ネットワーク装置の動作をシミュレートするために、コンピュータネットワークをサポートするノード通信マネージャモジュールおよび/または外部通信マネージャモジュールによって使用されるルーティング情報の設定を含むことができる。
【0075】
ブロック457の後、または代わりにブロック455で、ブロック405の情報がネットワークトポロジ情報を含んでいないと判定された場合、ルーチンは、ブロック460に進み、例えば、指示されたコンピュータネットワークが指定された数のコンピューティングノードを含むように設定されているが、指定された数に満たないコンピューティングノードが選択されて使用されている場合などに、ブロック405の指示が、コンピューティングノードの指示されたコンピュータネットワークへの追加の指示を含むかどうかを判定する。さらに、いくつかの実施形態では、クライアントは、別の箇所で詳述するとおり、コンピュータネットワークの使用が継続している後であっても、コンピュータネットワークのコンピューティングノード数の変更および/またはコンピュータネットワーク用のそのネットワークトポロジ情報の変更を含め、設定可能ネットワークサービスで提供中の既存のコンピュータネットワークを種々の方法で変更できる。ブロック460で、指示が1つまたは複数のコンピューティングノードの追加であると判定された場合、ルーチンは、ブロック462に進み、設定可能ネットワークサービスの利用可能なコンピューティングノードのグループから、指示されたコンピュータネットワークに追加する1つまたは複数のコンピューティングノードを選択する。別の箇所で詳述するとおり、かかるコンピューティングノードは、種々の方法で選択することができる。ブロック464では、選択されたコンピューティングノードは、その後、前述と同等の方法(例えば、適切なネットワークアドレス情報をそれらの選択されたコンピューティングノードと関連付ける、コンピュータネットワーク拡張用の任意の指定済みネットワークトポロジ情報および/または別のアクセス制限情報に従ってそれらの選択されたコンピューティングノードにアクセス権を設定する、など)で、コンピュータネットワークに追加される。
【0076】
ブロック464の後、または代わりにブロック460で、ブロック405での指示がコンピューティングノードの追加でない場合、ルーチンは、ブロック470に進み、ブロック405での指示が、指示されたコンピューティングネットワーク用の設定されたアクセスの、指示されたリモート資源サーバへの追加か否かを判定する。そうである場合、ルーチンは、ブロック475に進み、指示されたリモート資源サービスをアクセスするために、指示されたコンピュータネットワーク用にアクセス機構を設定するが、これは、例えば、指示されたコンピュータネットワーク用の1つまたは複数のネットワークアドレスをそのリモート資源サービスにマッピングする、コンピュータネットワークをサポートするノード通信マネージャモジュールおよび/または外部通信マネージャモジュールで使用されるルーティング情報を設定する、そのアクセス機構を使用する通信用の外部通信マネージャモジュールによって行われる動作を設定する、などの方法で行われる。ルーチンは、その後、ブロック478に進み、ブロック405で指示されたか、またはそうでなければ設定可能ネットワークサービスで自動的に決定された場合、リモート資源サービスが、指示されたコンピュータネットワークからアクセス可能になる資源用の特定の名前空間を持ち、さらに/またはその資源で使用する指示されたコンピュータネットワーク用の1つまたは複数の追加のアクセス制御インディケータを持つか否かを判定し、そうである場合、ルーチンは、ブロック480に進み、その名前空間情報および/またはアクセス制御インディケータ情報を、リモート資源サービス用の設定されたアクセス機構と関連付ける。
【0077】
ブロック480の後、または代わりに、ブロック478で名前空間および/もしくは追加のアクセス制御インディケータが使用されないと判定されたか、またはブロック470で、ブロック405での指示が指示されたリモート資源サービスへのアクセスを提供しないと判定された場合、ルーチンはブロック490に進み、オプションとして、1つまたは複数の指示された別の動作を適宜実行する。例えば、クライアント用に特定のコンピュータネットワークの設定を完了した後、ルーチンは、作成された新規のネットワーク拡張が属するリモートコンピュータネットワークなどの、リモート資源からのコンピュータネットワークへのアクセスを提供するための1つまたは複数の最後の手順をさらに実行してもよい。かかるアクセスの提供は、例えば、クライアントがコンピュータネットワークへアクセスできるようにするためのクライアントへの情報の提供(例えば、コンピュータネットワークへのVPN用の公的アクセス可能なネットワークアドレス)、リモートクライアントからの通信を受け付けるためのコンピュータネットワークの設定などを含むことができる。さらに、ルーチンは、適宜(例えば、定期的に、現在の状態が指定された閾値を超えたかまたは指定された条件の引き金を引いた場合)、さらに別の動作を実行できるが、これには、例えば、ネットワーク接続を確認するかまたは一部もしくは全てのコンピュータネットワーク用の一部もしくは全てのコンピュータノードの状態を確認する、リモートクライアントによる一部または全てのコンピュータネットワーク使用をモニタする、一部または全ての提供されるコンピュータネットワークによる内部の設定可能ネットワークサービス資源の使用をモニタする、設定可能ネットワークサービスでクライアントのアカウントを確立および保守する、クライアントからの自身のアカウントまたは自身の提供されるコンピュータネットワークに関する状態情報の要求に応答する、設定可能ネットワークサービスの使用に対するクライアントからの支払いを取得する、指示されたコンピュータネットワーク用のコンピューティングノードの数を減らす、指示されたコンピュータネットワークの一部である特定のコンピューティングノードを(例えば、1つまたは複数の実行プログラムを第1の地理的位置にあるコンピューティングノードから第2の地理的位置にある新しいコンピューティングノードに移動することにより)変更する、などがある。ブロック490の後、ルーチンはブロック495に進み、続行するかどうかを判定する(例えば、終了するための明示的な指示が受信されるまで)。続行すると判定された場合、ルーチンはブロック405に戻り、続行しない場合は、ブロック499に進んで終了する。
【0078】
図5は、ノード通信マネージャ(Node Communication Manager)ルーチン500の一実施形態例の流れ図である。このルーチンは、例えば、
図2のCNSノード通信マネージャモジュール209a、209d、および250の実行によって提供される可能性があり、例えば、少なくともいくつかの実施形態において、提供されるコンピュータネットワークの関連したコンピューティングノード間での通信の制御などを目的とする。ルーチン500は、少なくともいくつかの実施形態では、設定可能ネットワークサービスで提供されるコンピューティングノードの1つまたは複数と各々関連付けられた設定可能ネットワークサービスの多数のノード通信マネージャモジュールの各々によって実行される可能性があり、さらにノード通信マネージャモジュールの各々は、(例えば、別の仮想マシンコンピューティングノードが実行する物理ホストコンピューティングシステム用の仮想マシンモニタハイパーバイザの一部として、提供されるコンピュータネットワークの1つまたは複数のコンピューティングノード間での通信を制御するスタンドアロンのプロキシコンピューティングシステムまたは別のコンピューティングシステムとして、など)種々の方法によって提供される可能性がある。具体的には、例示した実施形態では、ノード通信マネージャモジュールは、設定可能ネットワークサービスにより設定可能ネットワークサービスの種々のコンピューティングノードの相互接続に使用される1つまたは複数の基礎となる物理基板ネットワークの上に重ねられた仮想ネットワークを使用して、クライアントへのコンピュータネットワークの提供を容易にするが、別の実施形態では、提供されるコンピュータネットワークは仮想ネットワークおよび/またはオーバーレイネットワーク以外の形をとることができる。さらに、別の箇所で詳述するとおり、ノード通信マネージャモジュールは、例示した実施形態では、例えば、シミュレートされた仮想または実在しないネットワーキング装置機能の実装、または存在しているかかるネットワーキング装置に一致する方法での通信の処理、などの方法により、提供されるコンピュータネットワーク用に指定されたネットワークトポロジ情報に従って機能を提供するが、別の実施形態では、提供されるコンピュータネットワーク用のネットワークトポロジ情報は、代わりに(例えば、ネットワークトポロジに対応する実際の物理ネットワーキング装置の使用など)別の方法で提供してもよい。
【0079】
例示した実施形態のルーチンは、ブロック505から始まり、ここではノード通信または別のメッセージの指示が受信される。ルーチンは、ブロック510に進み、指示されたメッセージのタイプを判定し、それに応じて進む。具体的には、指示されたメッセージが、ルーチンが対応する通信マネージャモジュールに関連付けられた1つまたは複数の宛先コンピューティングノードを対象とした入力ノード通信であると判定された場合、ルーチンはブロック515に進み、入力ノード通信用に1つまたは複数の対象とする宛先コンピューティングノードを決定する。例えば、入力通信は、1つまたは複数の基礎となる基板ネットワークを経由して、ノード通信マネージャモジュールに向けられる可能性があり、さらに基板ネットワークを経由して送信された通信のヘッダまたは別の部分は、仮想の提供されるコンピュータネットワークの一部である宛先コンピューティングノードの仮想ネットワークアドレスに関する情報を含むことができるか、そうでなければ宛先コンピューティングノードを指示してもよい。以降でブロック525に関して説明するとおり、基板ネットワーク経由での入力通信の処理は、宛先コンピューティングノードが属する提供されるコンピュータネットワークに適した方法(例えば、宛先およびソースコンピューティングノード用に仮想ネットワークアドレスを使用するように通信のヘッダを再設定する方法など)での通信の変更を追加で含むことができる。
【0080】
ブロック515の後、ルーチンはブロック520に進んで、入力通信が、対象とする宛先コンピューティングノードに対して許容可能であることを確認する。別の箇所で詳述するとおり、入力通信は、許容可能か許容可能でないかを種々の方法で判定されるが、これには、例えば、指定された別のコンピューティングノード(例えば、同一の提供されるコンピュータネットワークの一部である別のコンピューティングノード)からの通信のみが許可されるよう、および/または(例えば、通信が、提供されるコンピュータネットワークのコンピューティングノードの1つからそれらのコンピューティングシステムに送信された別の通信への応答である場合に限り、別のコンピューティングシステムからの少なくともいくつかの通信に対して)指定されたタイプの通信のみが許可されるように、ファイアウォール機能または別のアクセス制御を提供する方法などがある。前述したとおり、通信が許容されるか否かの判定は、少なくともいくつかは、ルーチンが対応するノード通信マネージャモジュール用に事前に指定された設定情報に基づいて行われる可能性があり、例えば、宛先コンピューティングノードおよび/またはそれらの宛先コンピューティングノードが属する提供されるコンピュータネットワークに固有の方法で(例えば、宛先コンピューティングノードが属する提供されるコンピュータネットワーク用に指定されたネットワークトポロジ情報および/またはその提供されるコンピュータネットワーク用に指定された別のアクセス制限情報に基づいて)行われる。さらに、宛先コンピューティングノードが属する提供されるコンピュータネットワーク用にオーバーレイ仮想ネットワークが使用される実施形態では、入力通信の確認は、例えば、通信が送信者とされる人によって実際に送信されたことを確認する目的で、通信が最初の送信コンピューティングノードで送信された後、設定可能ネットワークサービスによって入力通信に含められるオーバーレイネットワークおよび/または基板ネットワークに関する情報に一部は基づいて行われる可能性がある。
【0081】
入力通信が許容されると判定された場合、入力通信はブロック525で、例えば、ノード通信マネージャモジュールと宛先コンピューティングノードとの間の1つまたは複数の接続または通信リンクを経由して通信を転送することにより、1つまたは複数の通信用の宛先ノードに提供される。基礎となる基板ネットワークを経由して入力通信が送信された実施形態では、入力通信はまず、提供されるコンピュータネットワークと一致するように、例えば、提供されるコンピュータネットワークと一致する方法(例えば、宛先およびソースコンピューティングノード用に提供されるコンピュータネットワークに対応する仮想ネットワークアドレスの使用)で入力通信のヘッダを再設定することにより、変更される。また、ここでは図示していないが、ブロック520で通信が許容されないと判定された場合、ルーチンは、例えば、送信コンピューティングノードに対していかなる指示もない出力ノード通信をドロップする、エラーメッセージを送信コンピューティングノードに返す、出力通信を許容されるように変更しようと試みる、など、様々な処置をとることができる。
【0082】
代わりにブロック510で、ブロック505で指示されたメッセージが、ルーチンが対応するノード通信マネージャモジュールによって管理される提供されるコンピュータネットワークの関連したコンピューティングノードからの出力ノード通信であると判定された場合、ルーチンは、代わりに530に進み、例えば、ブロック520に関して以前説明したのと同様の方法などで、出力通信が許容されるか否かをまず確認する。別の箇所で詳述するとおり、出力通信が許容されるか否かの判定は、送信コンピューティングノードが属する提供されるコンピュータネットワーク用に指定されたネットワークトポロジ情報および/またはその提供されるコンピュータネットワーク用に指定された別のアクセス制限情報などに基づき、種々の実施形態において種々の方法で行うことができる。例示した実施形態では、提供されるコンピュータネットワークは仮想オーバーレイネットワークであって、コンピューティングノード間の通信は、実際には1つまたは複数の基礎となる基板ネットワークを経由して送信される。このため、ブロック530の後、ルーチンは、ブロック535に進み、別の箇所で詳述するとおり、出力送信用の1つまたは複数の宛先コンピューティングノードまたは別の宛先コンピューティングシステムに対応する1つまたは複数の基板宛先ネットワークアドレス(例えば、それらの宛先コンピューティングノード用の通信を管理する1つまたは複数のリモートノード通信マネージャモジュール、外部の宛先コンピューティングシステム用の通信を管理する外部通信マネージャモジュール、などに対する)を決定する。ルーチンはその後、ブロック540に進み、決定された基板宛先ネットワークアドレスを使用して、出力ノード通信を、対象とする宛先に転送する。ブロック525に関しての説明と同様の方法で、基礎となる基板ネットワーク経由でのノード通信の転送は、別の箇所で詳述するとおり、基板ネットワークに一致するように出力通信の変更を含むことができ、これは、例えば、基板ネットワークに一致する方法で出力通信のヘッダを再設定する(例えば、決定された基板宛先ネットワークアドレスを使用する、さらに/または宛先およびソースコンピューティングノード用の仮想ネットワークアドレスに関する情報を含める)ことにより行う。
【0083】
代わりにブロック510で、ブロック505でもう1つ別のタイプの指示されたメッセージが受信されたと判定された場合、ルーチンは代わりにブロック590に進み、1つまたは複数の指示された動作を適宜実行する。例えば、別のタイプのメッセージは、
図4の設定可能ネットワークサービスマネージャルーチン400(例えば、ルーチン500の本インスタンスに対応する1つまたは複数の提供されるコンピュータネットワーク用に、ルーチン500によって使用されるルーティング情報または別の設定情報を指定するため)、別のノード通信マネージャルーチン(例えば、提供されるコンピュータネットワーク用の設定情報を伝播するため)などからの設定情報または別の管理メッセージを含む可能性がある。同様に、ある状況では、ルーチンはブロック590で、例えば、もう1つ別のノード通信マネージャモジュールまたは設定可能ネットワークサービスマネージャモジュールから情報を受信した後、かかる情報をピアツーピア方式で分散するために、提供されるコンピュータネットワーク用の設定情報を別のノード通信マネージャモジュールに送信するための動作を行うことができる。別の動作には、少なくともいくつかの実施形態および状況では、各種の管理またはハウスキーピング処理の動作を含むことができ、例えば、一部または全てのコンピュータネットワーク用の一部または全てのコンピューティングノードの状態を確認する、一部または全てのコンピュータネットワークのリモートクライアントによる使用をモニタする、一部または全ての提供されるコンピュータネットワークによる内部の設定可能ネットワークサービス資源の使用をモニタする、などがある。ブロック525、540、または590の後、ルーチンはブロック595に進み、続行するかどうかを判定する(例えば、終了する明示的な指示が受信されるまで)。続行すると判定された場合、ルーチンはブロック505に進み、続行しない場合は、ブロック599に進んで終了する。
【0084】
このように、ルーチン500は、設定可能ネットワークサービスによって提供されるコンピュータネットワークの一部であるコンピューティングノード間での様々なタイプの通信を管理する。ルーチンの本実施形態例では別個に示していないが、ルーチン500は、例えば、通信のセッションまたは別の連続を開始するために、事前に送信された通信に対する1つまたは複数の応答を許可するように、少なくともいくつかの通信用に追加の設定を実行することができる。従って、例えば、提供されるコンピュータネットワークの特定のコンピューティングノードは、少なくともいくつかの別のコンピューティングシステム(例えば、外部のコンピューティングシステム)からの通信を受け入れないように設定することができるが、その通信が、最初はその特定のコンピューティングノードから送信された通信に対する応答である場合、それら別のコンピューティングシステムからの通信を許可することができる。そのため、ブロック520での判定はさらに、入力通信が、ブロック530〜540に関して処理された以前の出力通信に対する応答かどうかに一部基づいてもよい。
【0085】
図6は、外部通信マネージャ(External Communication Manager)ルーチン600の一実施形態の流れ図である。このルーチンは、例えば、
図2の外部通信マネージャモジュール270の実行によって提供される可能性があり、例えば、データセンタまたは設定可能ネットワークサービスによって制御されるコンピューティングノードの別のグループに出入りする通信(例えば、その制御されたコンピューティングノードのグループとそれら制御されたコンピューティングノードの外部位置(例えば、クライアントのリモート位置、リモート資源サービス、およびインターネットまたは別の公衆網上の一般にアクセス可能な別の場所など)にある別のコンピューティングシステムとの間で)を管理する。別の箇所で詳述するとおり、例示した実施形態において1つまたは複数の外部通信マネージャモジュールは、例えば、クライアントによって自身の提供されるコンピュータネットワーク用に指定されたか、および/または設定可能ネットワークサービスによって自身の提供されるコンピュータネットワーク用に指定されたファイアウォールおよび別のアクセス制限情報に一致する方法で通信を処理するなど、提供されるコンピュータネットワーク用に指定されたアクセス制限情報および特定のリモート資源サービスのアクセス用に指定された設定情報に従って機能を提供する。さらに、例示した実施形態では、設定可能ネットワークサービスで提供されるコンピュータネットワークは、その設定可能ネットワークサービスで提供されるコンピューティングノードを相互接続する1つまたは複数の基礎となる物理基板ネットワークを使用する仮想オーバーレイネットワークであるが、別の実施形態では、提供されるコンピュータネットワークは、別の方法で(例えば、仮想ネットワークおよび/またはオーバーレイネットワークを使用せずに)実装してもよい。
【0086】
例示した実施形態のルーチンは、ブロック605から始まり、ここで、提供されるコンピュータネットワークのコンピューティングノードとの間の通信またはもう1つ別のメッセージの指示を受信する。ブロック605の後、ルーチンはブロック610で、受信された指示されたメッセージのタイプを判定し、それに応じて進む。具体的には、指示されたメッセージが、設定可能ネットワークサービスによって制御されたコンピューティングノードへの着信であって、提供されるコンピュータネットワーク上の1つまたは複数の宛先コンピューティングノードを対象としている場合(例えば、そのクライアントのためにコンピュータネットワークが提供されるクライアントのリモート位置からVPN接続を経由して、インターネット経由で外部コンピューティングシステムから、など)、ルーチンはブロック615へ進む。ブロック615で、ルーチンはまず、入力通信がクライアントのVPN接続を経由して送信されたか否かを判定し、送信された場合はブロック620に進み、オプションとして通信の解読またはそうでなければ復号を行う(例えば、設定可能ネットワークサービスの別のソフトウェアがVPN接続を経由して受信された通信のかかる管理をまだ処理していない場合)。別の実施形態では、例えば、設定可能ネットワークサービスの別のソフトウェアおよび/またはハードウェアが、ブロック605で受信される前に、VPN接続を経由して受信されたかかる通信を管理する場合、ブロック615および620は実行されない可能性がある。ブロック620の後、または代わりにブロック615で、入力通信がVPN接続を経由して受信されていないと判定された場合、ルーチンはブロック625に進む。
【0087】
ブロック625〜629は、
図5のブロック530〜540と同様の方法で実行される。具体的には、ブロック625で、ルーチンはまず、例えば、少なくともいくつかは宛先コンピューティングノードが属する提供されるコンピュータネットワーク用に指定されたネットワークトポロジ情報に基づき、さらに/またはその提供されるコンピュータネットワーク用の別のアクセス制限情報に基づいて、入力通信が許容可能であるか否かを確認する。通信が許容可能であると確認された場合、ルーチンはブロック627に進み、宛先コンピューティングノードに対応する1つまたは複数の宛先基板ネットワークアドレスを決定する。ブロック629で、ルーチンは次に、基板ネットワーク上の決定済み宛先ネットワークアドレスに通信を転送し、例えば、
図5のブロック515〜525に関して以前説明したとおり、最終的には1つまたは複数のノード通信マネージャモジュールで処理される。前述したとおり、通信がブロック625で許容可能であると確認されない場合、例えば、通信をドロップするなど、代わりに別の様々な処置が取られる。また、別の箇所で詳述するとおり、基板ネットワーク上での通信の転送は、その基板ネットワークと一致する1つまたは複数の方法での通信の変更を含むことができる。さらに、ここでは例示していないが、少なくともいくつかの実施形態では、ルーチンは、制御されたコンピューティングノードのグループへの入力(例えば、公衆網からプライベートネットワークへの)通信と一致する別の機能、例えば、ネットワークアドレス変換(NAT)および/またはポートアドレス変換(PAT)の提供、設定可能ネットワークサービス用の一般的なファイアウォールまたはプロキシまたは別のセキュリティ機能の提供など、を実行することができる。
【0088】
代わりにブロック610で、指示されたメッセージが提供されるコンピュータネットワークのコンピューティングノードへの入力通信ではないが、代わりに、提供されるコンピュータネットワークのコンピューティングノードから内部の基板ネットワークを介して受信される通信であって、1つまたは複数の外部宛先コンピューティングシステムへの出力(例えば、クライアントのリモートコンピュータネットワークまたはクライアントの別のリモートコンピューティングシステムへのVPN接続経由、公的アクセス可能システムへのインターネット経由など)であると判定された場合、ルーチンはブロック630へ進む。ブロック630、635、および645は、
図5のブロック515〜525と同様の方法で実行される。具体的には、ブロック630で、ルーチンは、例えば、基板ネットワーク経由で受信した通信内の情報に基づいて、出力通信用に1つまたは複数のリモート位置にある1つまたは複数の指示された宛先コンピューティングシステムを決定する。ブロック635で、ルーチンは次に、前述と同様の方法で(例えば、送信コンピューティングノードが属する提供されるコンピュータネットワーク用に指定されたネットワークトポロジ情報および/またはアクセス制限情報を考慮して)、通信が許容可能か否かを判定する。ブロック635の後、ルーチンはブロック640に進み、出力通信が、例えば、クライアントのリモートコンピュータネットワークの一部として、VPN接続を経由して1つまたは複数のリモートクライアントコンピューティングシステムへ送信されているか否かを判定する。VPN接続の場合、ルーチンは、ブロック642に進み、オプションとして通信をVPN接続用に暗号化またはそうでなければ符号化し(例えば、設定可能ネットワークサービスの別のソフトウェアおよび/またはハードウェアがVPN接続経由で送信された通信のかかる管理を処理しない場合)、その後、VPN接続経由で通信を決定済み宛先コンピューティングシステムに転送する。別の実施形態では、VPN接続を保守する別個のソフトウェアおよび/またはハードウェアが代わりにかかる動作を実行することができる。代わりにブロック640で、出力通信がVPN接続経由で送信されていないと判定された場合、ルーチンは代わりにブロック645に進み、インターネットまたは別の公衆網を介して、通信を決定済み宛先コンピューティングシステムに転送する。前述したとおり、ルーチンは、基板ネットワーク経由で受信するかかる通信を、外部に転送される前に、例えば、通信が通る予定のコンピュータネットワークと一致する方法で出力通信のヘッダを再設定するなど、さらに変更することができる。また、ここでは例示していないが、少なくともいくつかの実施形態において、ルーチンは、制御されたコンピューティングノードのグループからの出力(例えば、プライベートから公衆網への)通信と一致する別の機能、例えば、ネットワークアドレス変換(NAT)および/またはポートアドレス変換(PAT)の提供、設定可能ネットワークサービス用の一般的なファイアウォールまたはプロキシまたは別のセキュリティ機能の提供など、を実行することができる。
【0089】
代わりにブロック610で、指示されたメッセージが、提供されるコンピュータネットワーク上のコンピューティングノードからその提供されるコンピュータネットワーク用の設定されたアクセス機構を持つリモート資源サービスへのアクセスであると判定された場合、ルーチンは代わりにブロック650に進み、リモート資源サービスアクセス(Remote Resource Service Access)ルーチンを実行するが、このルーチンの一実施形態例については
図7に関して詳述する。そうでない場合、ルーチンはブロック690に進み、例えば、別の受信されたメッセージまたは受信された情報に応じて、1つまたは複数の指示された別の動作を適宜実行する。かかる指示された別の動作は、
図5のブロック590に関して詳述したとおり、様々な形をとることができる。例えば、別のタイプのメッセージは、
図4の設定可能ネットワークサービスマネージャモジュール400から(例えば、1つまたは複数の提供されるコンピュータネットワーク用にルーチン600で使用されるルーティング情報または別の設定情報を指定するため)、ノード通信マネージャルーチンから(例えば、提供されるコンピュータネットワーク用の設定情報を伝播するため)、などの設定情報または別の管理メッセージを含むことができる。同様にある状況では、ルーチンはブロック690で、例えば、別のノード通信マネージャモジュールまたは設定可能ネットワークサービスマネージャモジュールから情報を受信した後、ピアツーピア方式でかかる通信を分散するために、提供されるコンピュータネットワーク用の設定情報をノード通信マネージャに送信するための動作を行うことができる。別の動作も同様に、少なくともいくつかの実施形態および状況では、各種の管理またはハウスキーピング処理の動作を含むことができ、例えば、一部または全てのコンピュータネットワーク用の一部または全てのコンピューティングノードの状態を確認する、一部または全てのコンピュータネットワークのリモートクライアントによる使用をモニタする、一部または全ての提供されるコンピュータネットワークによる内部の設定可能ネットワークサービス資源の使用をモニタする、などがある。
【0090】
ブロック629、642、645、650、または690の後、ルーチンはブロック695に進み、続行するか否かを判定する(例えば、終了するための明示的な指示が受信されるまで)。続行すると判定された場合、ルーチンはブロック605に戻り、続行しない場合は、ブロック699に進んで終了する。
【0091】
このように、ルーチン600は、設定可能ネットワークサービスによって提供されるコンピュータネットワークの一部であるコンピューティングノード間での様々なタイプの通信を管理する。このルーチンの本実施形態例には例示されていないが、ルーチン600は、例えば、通信のセッションまたは別の連続を開始するために、以前に送信された通信に対する1つまたは複数の応答を許可するように、少なくともいくつかの通信用に追加の設定を実できることが理解されよう。従って、例えば、特定の提供されるコンピュータネットワークは、いかなる外部コンピューティングシステムも、そのコンピュータネットワークのコンピューティングノードへの通信を開始するのを防ぐように設定することができるが、かかる外部コンピューティングシステムが、最初はそのコンピュータネットワークのコンピューティングノードからその外部コンピューティングシステムへ送信された通信に応答するのを許可することができる。そのため、ブロック625での判定が、入力通信が、ブロック630〜645に関して処理された以前の出力通信に対する応答であるか否かにさらに一部基づいてもよい。同様に、ブロック650に関して詳述したように、リモート資源サービスにアクセスするために開始された通信に対するリモート資源サービスからの応答は、ブロック615〜629に関してのように、許容されるように設定できるか、または代わりに別の方法で設定できる。
【0092】
図7は、リモート資源サービスアクセス(Remote Resource Service Access)ルーチン700の一実施形態例の流れ図である。このルーチンは、
図6のブロック650の実行によって開始される場合、例えば、
図2の外部通信マネージャモジュール270の実行によって提供される可能性がある。ルーチンは、提供されるコンピュータネットワークのコンピューティングノードにより、リモート資源サービスに対して行われた通信、具体的には、例えば、
図4Bのブロック475〜480に関連して、提供されるコンピュータネットワークが専用アクセスを提供するために事前に設定されたリモート資源サービスに対して行われた通信を管理する。別の箇所で詳述するとおり、少なくともいくつかの実施形態では、提供されるコンピュータネットワークは、特定のリモート資源サービスに対する専用アクセスを提供するように(例えば、リモート資源サービスを表すために、その提供されるコンピュータネットワーク上の1つまたは複数のネットワークアドレスを割り当てることにより)設定でき、基板物理ネットワークは、対応する通信を、外部通信を管理する外部通信マネージャモジュールに転送するように設定できる(外部通信マネージャモジュールを、それら転送された通信を適宜管理するように設定して)。
【0093】
例示した実施形態では、ルーチンはブロック705から始まり、ここで、提供されるコンピュータネットワーク上のコンピューティングノードから、そのコンピュータネットワーク用に設定されたアクセス機構が提供されているリモート資源サービスへの通信の指示が、例えば、通信用に使用されたネットワークアドレスに基づいて、受信される。ルーチンは次にブロック710に進み、ここで、通信用に使用されたアクセス機構用に以前に指定された設定情報を検索する。ブロック715で、ルーチンはその後、例えば、検索した設定情報に基づいて、通信が対象とする宛先リモート資源サービスを決定する。
【0094】
ブロック715の後、ルーチンは725に進み、
図5のブロック520および530、ならびに
図6のブロック625および635に関して説明したのと同様の方法で、通信が許容可能か否かを判定する。さらに、判定は、少なくともいくつかの状況および実施形態では、ある設定されたアクセス機構に関してあるタイプの通信のみを許可するため、使用されたアクセス機構用に検索された設定情報に基づいてさらに行われる可能性がある。通信が許容可能と判定された場合、ルーチンは次にブロック730に進み、オプションとして、使用されたアクセス機構用の以前の設定に基づく方法で通信を変更する。例えば、別の箇所で詳述するとおり、アクセス機構は、リモート資源サービスで使用された特定の名前空間に対応するためや、リモート資源サービスによる認証の目的で、通信を送信するコンピューティングノードの提供されるコンピュータネットワークに関する情報またはコンピューティングノードの位置に関する別の情報を含むため等に、通信を変更するように設定される可能性がある。
【0095】
ルーチンはその後、ブロック735に進み、オプションとして、決定済みリモート資源サービスに固有の方法で、通信用に追加の認証関連動作を実行する。例えば、別の箇所で詳述するとおり、少なくともいくつかのリモート資源サービスは、設定可能ネットワークサービスに属しているか、またはそうでなければ、設定可能ネットワークサービスが、公衆網を介してリモート資源サービスと通信する未認証のリクエスタに提供されていない特権的な方法で、リモート資源サービスにアクセスするのを許可する可能性がある。そうであれば、ルーチンは、例えば、通信が信頼されるかまたはそうでなければ既知のリクエスタから送信されているとリモート資源サービスが判定できるようにする認証関連動作を実行できるが、これは、例えば、設定可能ネットワークサービスに対応する識別子を含むように通信を変更することによって(例えば、設定可能ネットワークサービスとリモート資源サービスとの間の事前のやりとりに基づき、変更済み通信の一部として識別子に基づくデジタル署名を含むこと等により)実行できる。
【0096】
ブロック735の後、ルーチンは次にブロック745に進み、オプションとして、通信の暗号化またはそうでなければ決定済みリモート資源サービスへの安全な接続(例えば、特定の関連するリモート資源サービスとのVPN接続、リモート資源サービスへの専用プライベート回線または別の通信リンク、など)にアクセスし、通信を決定済みリモート資源サービスに転送する。転送中の通信は、例えば、インターネットまたは1つもしくは複数の別の公衆網を介して送信することができるか、または代わりにいくつかの実施形態において、プライベート通信リンクまたは別の安全な接続を経由して送信することができる。ブロック745の後、ルーチンはブロック799に進んで終了する。
【0097】
図8は、VPN作成実行(VPN Creation Fulfillment)ルーチン800の流れ図である。ルーチンは、設定可能ネットワークサービスの実施形態によって提供されるリモートアクセス確立APIのクライアント起動に起因する、
図4Aのブロック425の実行に基づいて開始される場合、例えば、設定可能ネットワークサービスマネージャモジュールの実行によって提供される。
【0098】
例示した実施形態では、ルーチンはブロック805から始まり、ここで、クライアントのリモート位置(例えば、クライアントのリモートプライベートコンピュータネットワーク)からクライアント用の提供されるコンピュータネットワーク(例えば、クライアントのリモートプライベートコンピュータネットワーク用の設定可能ネットワークサービスによって提供されるネットワーク拡張)へのVPN接続を確立するためのクライアント要求の指示を受信する。少なくともいくつかの実施形態では、クライアントによるVPN接続の確立要求は、クライアントのリモート位置に提供される1つまたは複数の適切なネットワーキング装置および対応するソフトウェアおよび/または設定情報に関する注文の実行要求の一部であり、それによって、VPN接続がリモートのクライアント位置にある1つまたは複数のコンピューティングシステムから設定可能ネットワークサービスによってクライアント用に提供されるコンピュータネットワークに対して確立できるようにする。少なくともいくつかのかかる実施形態では、リモートアクセス確立APIの起動またはクライアントからの別の要求の開始の後、注文の実行は、クライアントによるいかなる追加の動作なしに、設定可能ネットワークサービスによって実行されるが、別の実施形態では、クライアントとのある追加のやりとりが、注文履行の一部として実行される(例えば、クライアントへのオプションの提示、クライアントからの追加情報の取得、クライアントからの支払い情報の取得、など)可能性がある。
【0099】
ブロック815で、ルーチンは次に、要求の実現に使用するクライアントに関する種々の情報を取得するが、それらは、例えば、ブロック805で受信された要求で供給されたか、以前クライアントから受信され、設定可能ネットワークサービスでクライアントのアカウントから検索されたか、ならびに/またはそのクライアントおよび/もしくは1つまたは複数の外部ソースから動的に取得された情報などの可能性がある。取得された情報は、例えば、ネットワーキング装置および別のアイテムを物理的に配達可能なクライアントの地理的位置に関する情報、電子情報を電子的に配信可能な電子通信アドレス、クライアントがブロック805で受信された要求に関連する料金の支払いに利用する支払い情報、など、種々の形態をとる可能性がある。さらに、リモートクライアント位置とクライアント用に提供されるコンピュータネットワークとの間でVPN接続を設定するのを支援するために、VPN接続開始のためにリモートクライアント位置から公的アクセス可能なネットワークアドレス(または対応する別の接続情報)、VPN接続の確立先である提供されるコンピュータネットワークの識別に使用する一意の識別子または別の情報など、種々の情報が取得される可能性がある。
【0100】
ブロック815の後、ルーチンはブロック825に進み、提供されるコンピュータネットワークへのVPN接続を確立するために、クライアントの1つまたは複数のリモートコンピューティングシステムで使用する1つまたは複数の適切なネットワーキング装置を決定する。別の箇所で詳述するとおり、適切なネットワーキング装置は、例えば、クライアント用に提供されるコンピュータネットワーク、クライアントのリモートコンピューティングシステム、および/または設定可能ネットワークサービス(例えば、設定可能ネットワークサービスの基板ネットワークまたは設定可能ネットワークサービスの別のインフラの一部として使用されたネットワーク装置に基づいて)に固有の情報などに基づき、種々の方法で決定することができる。さらに、適切なネットワーキング装置の決定は、例えば、設定可能ネットワークサービスにより自動的に決定され、かつ/または少なくともいくつかはクライアントからの情報に基づいて(例えば、ブロック805で受信された要求の一部としてクライアントによる選択に基づき、またはクライアントに提示された複数の選択肢からの選択など、別の方法でクライアントによる指定として)決定される、など、種々の実施形態において種々の方法で行われる可能性がある。
【0101】
ブロック825の後、ルーチンはブロック835に進み、クライアント用に提供されるコンピュータネットワークに接続するネットワーキング装置の準備で使用するネットワーキング装置を決定するための設定情報を生成するが、別の実施形態では、ルーチンは、第三者の団体(例えば、ブロック845で連絡をとる同一の小売業者)に設定情報を生成するように指示することができる。少なくともいくつかの実施形態では、決定されたネットワーキング装置用の設定情報は、設定されたネットワーキング装置の設定を完了するため、(例えば、特定の提供されるコンピュータネットワークに固有の方法でネットワーキング装置を設定するために、設定可能ネットワークサービスから追加の情報を取得することにより)設定されたネットワーク装置に設定可能ネットワークサービスとの連絡を開始させることができる。また、少なくともいくつかの実施形態では、決定されたネットワーキング装置用の設定情報は、例えば、提供されるコンピュータネットワークへのVPN接続を確立するために、設定されたネットワーキング装置にクライアントの提供されるコンピュータネットワークとの連絡を開始させることができる。生成された設定情報は、いくつかの実施形態では、決定されたネットワーキング装置のタイプ、および/または決定されたネットワーキング装置によるVPN接続の確立先である提供されるコンピュータネットワークに固有の可能性があり、さらに、設定情報の生成は、事前に準備された設定情報の検索、および/または新規設定情報の動的作成(例えば、事前に準備された設定情報が任意のネットワーキング装置および/または任意の提供されるコンピュータネットワーク用である場合などに、例えば、決定されたネットワーキング装置および/または提供されるコンピュータネットワークに固有の方法で事前に準備された設定情報を変更することによって)を含む可能性がある。生成された設定情報は、同様に、例えば、ハードウェア装置上で実行される設定されたソフトウェア、リモート位置で人間のオペレータで使用されるテキストの指示として、など、種々の形態をとる可能性がある。
【0102】
ブロック845で、ルーチンは次に、クライアントの1つまたは複数のリモートコンピューティングシステムでの使用のために決定済みネットワーキング装置をリモートクライアント位置に供給するため、小売業者への発注を開始し、そして、例示される実施形態では、さらに、ネットワーキング装置での使用のために生成された設定情報のクライアントへの供給を開始する。かかる実施形態では、生成された設定情報は、例えば、発注の一部として設定情報を送信する、ブロック835で設定情報を生成するように事前に小売業者に指示する、など、種々の方法で小売業者に提供できる。別の箇所で詳述するとおり、生成された設定情報は、次の1つまたは複数の方法を含め、種々の方法でクライアントに供給でき、つまり、生成された設定情報を物理的にクライアントに配達される物理装置可読ストレージ媒体(例えば、CD、DVD、USBメモリキーなど)に格納する、クライアントへの配達前に、生成された設定情報でネットワーキング装置を設定する(例えば、小売業者が使用する発送センターで生成された設定情報をネットワーキング装置にロードする)、生成された設定情報をクライアントに電子的に送信する、などの方法である。別の実施形態では、ネットワーキング装置および/または設定情報は、例えば、ネットワーキング装置および生成された設定情報の一方または両方を小売業者よりはむしろ設定可能ネットワークサービスで直接供給させる、ネットワーキング装置の供給に第1の小売業者を利用し、生成された設定情報の供給に異なる第2の小売業者を利用する、小売業者ではない1つまたは複数の第三者の団体を利用する、など、別の方法でクライアントに提供できる。ブロック845の後、ルーチンはブロック899に進み、戻る。
【0103】
いくつかの実施形態では、前述したルーチンによって提供される機能は、より多数のルーチンに分割したり、より少数のルーチンに統合したり、などの代替方法で提供できることを理解されよう。同様に、いくつかの実施形態では、例示されるルーチンは、例えば、例示される別のルーチンの各々が、かかる機能を欠いていたり含んでいたりする場合や、提供される機能の量が変更される場合などでも、ほぼ説明どおりの機能を提供することができる。また、種々の動作が、特定の方法(例えば、連続して、または、並行して)および/または特定の順序で実行されていると説明されることがあるが、当技術分野に精通した人であれば、別の実施形態では、その動作は別の順序および別の方法で実行できることを理解されよう。当技術分野に精通した人であれば、前述したデータ構造が、例えば、単一のデータ構造を複数のデータ構造に分割したり、複数のデータ構造を単一のデータ構造に統合したり、などの別の方法で構造化できることも理解されよう。同様に、いくつかの実施形態では、例示されたデータ構造は、例えば、例示された別のデータ構造の各々がかかる情報を欠いていたり含んでいたりする場合や、格納される情報の量やタイプが変更される場合などでも、ほぼ説明どおりの情報を格納することができる。
【0104】
第1項。設定可能ネットワークサービスのコンピューティングシステムがプライベートコンピュータネットワークにアクセスを提供する方法であって、
リモートユーザが、前記リモートユーザのリモートプライベートコンピュータネットワークへのネットワーク拡張を作成および設定できるようにする、前記設定可能ネットワークサービス用のプログラムによるインタフェースを提供することであって、前記設定可能ネットワークサービスが、前記作成されたネットワーク拡張を前記リモートユーザに提供する際に使用される複数のコンピューティングシステムを含むことと、
前記設定可能ネットワークサービスの前記コンピューティングシステムの制御下において、かつ、複数のリモートユーザの各々に対して、
ローカルプライベートネットワーク拡張を、前記ユーザのリモートプライベートコンピュータネットワークに対して作成および設定するための前記提供されるプログラマティクインタフェースを経由して前記リモートユーザによりプログラムによって提供される設定情報を受信することであって、前記プライベートネットワーク拡張が前記設定可能ネットワークサービスにより提供され、かつ前記複数のコンピューティングシステムのサブセットを含み、前記受信された設定情報が前記プライベートネットワーク拡張用のユーザによって特定されたネットワークトポロジ情報および前記複数のコンピューティングシステムに割り当てられる前記プライベートコンピュータネットワークの複数のネットワークアドレスのユーザによって特定されたサブセットを含み、前記受信された設定情報が前記ユーザの前記プライベートコンピュータネットワークの外部にあって、かつ前記プライベートネットワーク拡張の複数のコンピューティングシステムからアクセス可能であるリモート資源サービスの指示をさらに含むことと、
前記ユーザの前記プライベートコンピュータネットワークと前記ユーザの前記プライベートネットワーク拡張の前記複数のコンピューティングシステムとの間にプライベートアクセスを提供するため、前記ユーザの前記プライベートネットワーク拡張を自動的に設定することであって、前記設定が、前記プライベートネットワーク拡張と前記ユーザの前記プライベートコンピュータネットワークとの間での仮想プライベートネットワーク接続の確立および前記プライベートネットワーク拡張内の通信を前記特定されたネットワークトポロジ情報に従ってルーティングされるようにする設定を含むことと、
前記指示されたリモート資源サービス内の新規名前空間を表すために、前記プライベートネットワーク拡張用に一意の識別子を自動的に生成することであって、前記リモート資源サービスが複数のユーザにコンピューティング関連資源を提供し、前記表された名前空間が前記プライベートネットワーク拡張からのみアクセス可能な前記リモート資源サービスによって提供される1つまたは複数のコンピューティング関連資源を含むことと、
前記表された名前空間内の前記リモート資源サービスによって提供される前記1つまたは複数のコンピューティング関連資源への前記プライベートネットワーク拡張の前記複数のコンピューティングシステムからのアクセスを可能にするために、前記ユーザの前記プライベートネットワーク拡張を自動的に設定することであって、前記設定が、前記リモート資源サービスを表すようにネットワークアドレスの前記ユーザにより特定されたサブセットの1つへの割当ておよび前記一意の識別子の前記割当てられたネットワークアドレスとの関連付けを含み、前記割当てられたネットワークアドレス経由で前記リモート資源サービスに送信された通信が、前記表された名前空間の識別のために前記リモート資源サービスで使用される前記一意の識別子を含むように変更されることと、
前記提供されるネットワーク拡張の前記複数のコンピューティングシステムと前記ユーザの前記プライベートコンピュータネットワークとの間に前記プライベートアクセスを提供することと、
を含む方法。
【0105】
第2項。前記複数のユーザのうちの1ユーザに対して、
前記1ユーザ用の前記プライベートネットワーク拡張の前記複数のコンピューティングシステムを異なる通信間特性を持つ異なるグループに分割するため、前記受信された設定情報内の前記ネットワークトポロジ情報がさらに1つまたは複数のネットワーク装置を特定し、
前記受信された設定情報が、前記1ユーザ用の前記プライベートネットワーク拡張の前記複数のコンピューティングシステムが、前記ユーザの前記プライベートコンピュータネットワークの前記複数のネットワークアドレスの一部でないネットワークアドレスを持つコンピューティングシステムへのアクセスを許可されない、という指示をさらに含み、かつ、
前記1ユーザの前記プライベートコンピュータネットワークからの前記1ユーザ用の前記プライベートネットワーク拡張への前記プライベートアクセスを提供するための前記1ユーザの前記プライベートネットワーク拡張の自動設定は、前記特定された1つまたは複数のネットワーク装置をシミュレートするための仮想装置の作成および、前記1ユーザの前記プライベートコンピュータネットワークと前記1ユーザの前記プライベートコンピュータネットワークの外部の任意のコンピューティングシステムとの間の通信を防ぐための1つまたは複数の実際のネットワーキング装置の設定を含む、
第1項に記載の方法。
【0106】
第3項。前記設定可能ネットワークサービスが、公衆網を介して前記リモートユーザにアクセス可能であって、かつクラウドコンピューティング技術を用いて前記ネットワーク拡張を提供する有料サービスである方法であって、かつ
前記複数のリモートユーザが、前記設定可能ネットワークサービスによって前記ユーザに対して提供されている前記作成されたネットワーク拡張用の前記設定可能ネットワークサービスに対して支払いを行う前記設定可能ネットワークサービスの顧客である、
第2項に記載の方法。
【0107】
第4項。プライベートコンピュータネットワークへのアクセスを提供するためのコンピュータに実装された方法であって、
複数のクライアントが、前記複数のクライアントによって使用されるプライベートコンピュータネットワークを設定するために使用されるプログラムによるインタフェースを提供する設定可能ネットワークサービス用のコンピューティングシステムの制御下において、
第1のクライアントによって使用される第1のプライベートコンピュータネットワークを設定するための前記プログラムによるインタフェースを用いて、前記第1のクライアントによってプログラムによって提供される第1の情報を受信することであって、前記第1のプライベートコンピュータネットワークが、前記設定可能ネットワークサービスにより提供される複数のコンピューティングノードのグループを含み、前記複数のコンピューティングノードの各々が、前記第1のプライベートコンピュータネットワークで使用するために前記第1の情報に特定されている複数のネットワークアドレスのうちの少なくとも1つに関連付けられるように設定されていることと、
第1のプライベートコンピュータネットワークからネットワークアクセス可能なリモート資源サービス内の名前空間に関連付けられているコンピューティング関連資源のサブセットへのアクセスを設定するための第2の情報を取得することであって、前記第2の情報が、前記リモート資源サービス内の名前空間に関連付けられている識別子を含むことと、
前記複数のコンピューティングノードから前記リモート資源サービスによって提供されるコンピューティング関連資源の前記サブセットへのアクセスを可能にするように第1のプライベートコンピュータネットワークを自動的に設定することであって、前記設定が、前記識別子と前記リモート資源サービスを表す1つまたは複数の指示されたネットワークアドレスとの関連付けを含み、コンピューティング関連資源の前記サブセットをアクセスするために、前記指示されたネットワークアドレスを経由して前記リモート資源サービスに送信された通信が、前記名前空間を識別する際に前記リモート資源サービスによって使用される前記識別子の指示を含むように変更されることと、
前記第1のクライアントの1つまたは複数のリモートコンピューティングシステムから第1のプライベートコンピュータネットワークへのアクセス利用可能状態を開始することと、
を含む方法。
【0108】
第5項。前記第1のプライベートコンピュータネットワークが、複数のコンピューティングシステムを含む第1のクライアントのリモートプライベートコンピュータネットワークの拡張になるように設定されていて、前記特定された複数のネットワークアドレスが、前記リモートプライベートネットワークで使用される複数のプライベートネットワークアドレスのサブセットであって、第1のプライベートネットワークの前記自動設定が、前記第1のクライアントの前記リモートプライベートコンピュータネットワークの前記複数のコンピューティングシステムと前記第1のプライベートコンピュータネットワークの前記複数のコンピューティングノードとの間のプライベートアクセスをさらに可能にする、第4項に記載の方法。
【0109】
第6項。前記第1のクライアントの前記1つまたは複数のリモートコンピューティングシステムから前記第1のプライベートコンピュータネットワークへの前記アクセス利用可能状態の前記開始が、前記有効なプライベートアクセスを提供するための前記リモートプライベートコンピュータネットワークと前記第1のプライベートコンピュータネットワークとの安全な接続の確立を含む、第5項に記載の方法。
【0110】
第7項。前記第1のプライベートコンピュータネットワークが、前記設定可能ネットワークサービスによって提供される前記複数のコンピューティングノードと相互接続する前記設定可能ネットワークサービスの1つまたは複数の物理基板ネットワーク上に重なる仮想ネットワークとして前記設定可能ネットワークサービスによって提供される、第5項に記載の方法。
【0111】
第8項。前記第1の情報が、前記第1のプライベートコンピュータネットワークの前記複数のコンピューティングノード間での通信を制御するために前記第1のプライベートコンピュータネットワークの設定時に使用するために第1のクライアントによって特定される追加情報をさらに含み、かつ、前記方法が、前記特定された追加情報に従って前記複数のコンピューティングノード間の通信を許可および阻止するように第1のプライベートコンピュータネットワークの自動設定をさらに含む、第4項に記載の方法。
【0112】
第9項。前記特定された追加情報が、前記第1のプライベートコンピュータネットワークの一部である1つまたは複数のネットワーキング装置の少なくとも1つ、および共通の相互通信特性を共有する前記複数のコンピューティングノードの1つまたは複数のサブグループを指示するネットワークトポロジ情報を含む方法であって、前記ネットワークトポロジ情報が前記1つまたは複数のネットワーキング装置を指示する場合、前記第1のプライベートコンピュータネットワークの前記自動設定が、前記1つまたは複数のネットワーキング装置の存在をシミュレートするための前記設定可能ネットワークサービスの1つまたは複数のモジュールの設定を含む方法であって、前記ネットワークトポロジ情報が前記1つまたは複数のサブグループを指示する場合、前記第1のプライベートコンピュータネットワークの前記自動設定が、前記1つまたは複数のサブグループの存在をシミュレートするための前記設定可能ネットワークサービスの1つまたは複数のモジュールの設定を含む、第8項に記載の方法。
【0113】
第10項。前記第1の情報が、前記第1のプライベートコンピュータネットワークの設定に使用するために第1のクライアントによって特定される追加情報をさらに含む方法であって、前記追加情報が、前記第1のプライベートネットワーク用の前記複数のコンピューティングノード数のうちの1つまたは複数、前記複数のコンピューティングノードの少なくともいくつかが配置されている1つまたは複数の地理的位置、および前記第1のプライベートコンピュータネットワークの前記複数のコンピューティングノードと前記第1のプライベートコンピュータネットワークの外部にある別のコンピューティングシステムとの間の通信を制御する1つまたは複数のネットワークアクセス制限を含み、前記方法が、前記特定された第1の情報に基づき第1のプライベートコンピュータネットワーク用に前記複数のコンピューティングノードの自動選択と、前記特定された追加情報に従って第1のプライベートコンピュータネットワークの自動設定をさらに含む、第4項に記載の方法。
【0114】
第11項。第2の情報が、前記プログラムによるインタフェースを用いて前記第1のクライアントがプログラムで提供する前記第2の情報に少なくとも部分的に基づき取得され、前記提供される第2の情報が、前記名前空間用の前記関連付けられた識別子を含み、前記第2の情報の前記提供前に、コンピューティング関連資源の前記サブセットの少なくともいくつかが前記名前空間内の前記リモート資源サービスに存在し、前記方法が、前記リモート資源サービスから前記既存の少なくともいくつかのコンピューティング関連資源の1つまたは複数にアクセスするため、前記1つまたは複数のコンピューティングノードから前記指示されたネットワークアドレスに送信された1つまたは複数の通信の取得、および前記識別子の前記指示を含むために、前記取得した1つまたは複数の通信を変更後、前記取得した1つまたは複数の情報の前記リモート資源への転送をさらに含む、第4項に記載の方法。
【0115】
第12項。前記第2の情報に含まれる前記識別子の前記取得が、前記設定可能ネットワークサービスが前記第1のプライベートコンピュータネットワーク用の名前空間を作成するために前記リモート資源サービスと自動的にやりとりすることを含み、前記名前空間の前記作成が前記名前空間用の前記識別子の決定を含む方法であって、前記方法が、1つまたは複数の新規コンピューティング関連資源を前記リモート資源サービスから作成するため、前記複数のコンピューティングノードの1つまたは複数から前記指示されたネットワークアドレスに送信された1つまたは複数の通信の取得、および前記識別子の指示を含むため、前記取得された1つまたは複数の通信の変更後、前記取得された1つまたは複数の通信の前記リモート資源への転送をさらに含む、第4項に記載の方法。
【0116】
第13項。前記リモート資源サービスが、1つまたは複数の公衆網を経由してアクセス可能であって、前記複数のコンピューティングノードからコンピューティング関連資源の前記サブセットへのアクセスを可能にするための第1のプライベートコンピュータネットワークの前記設定が、前記指示されたネットワークアドレスに送信された通信を前記1つまたは複数の公衆網を経由して前記リモート資源サービスに転送するように、前記設定可能ネットワークサービスの1つまたは複数のモジュールの設定を含む、第4項に記載の方法。
【0117】
第14項。前記第1のプライベートコンピュータネットワークから、前記リモート資源サービス内の第2の別個の名前空間と関連付けられたコンピューティング関連資源の第2の別個のサブセットへのアクセスを設定するための第3の情報を取得し、前記第3の情報が、前記リモート資源サービス内の第2の名前空間と関連付けられた第2の別個の識別子を含み、かつ、前記第2の識別子を前記複数のネットワークアドレスの第2の1つに関連付けることにより、前記複数のコンピューティングノードからコンピューティング関連資源の第2のサブセットへのアクセスを可能にするため、前記第1のプライベートコンピュータネットワークを自動設定して、前記第2のネットワークアドレス経由で前記リモート資源サービスに送信された通信が、コンピューティング関連資源の第2のサブセットにアクセスするために、前記名前空間を識別するために前記リモート資源サービスで使用される前記第2の識別子の指示を含むように変更されるようにする、第4項に記載の方法。
【0118】
第15項。前記リモート資源サービス内の前記名前空間に関連付けられた前記コンピューティング関連資源が、データストレージサービスおよびプログラム実行サービスおよび非同期メッセージ受渡しサービスの少なくとも1つに対する資源を含む方法であって、
前記方法がさらに、前記リモート資源サービスの制御下において、
コンピューティング関連資源のサブセットの少なくともいくつかにアクセスするために、前記指示されたネットワークアドレス経由で前記第1のプライベートコンピュータネットワークの前記複数のコンピューティングノードから送信された通信を受信することであって、前記受信された通信が前記識別子の前記指示を含むことと、
前記指示された識別子に関連付けられた前記名前空間から前記少なくともいくつかのコンピューティング関連資源へのアクセスを提供することと、を含む、
第4項に記載の方法。
【0119】
第16項。前記複数のコンピューティングノードが、各々、前記設定可能ネットワークサービスの複数の物理コンピューティングシステムの1つをホストとした仮想マシンである方法であって、かつ前記第1のプライベートコンピュータネットワークの前記設定が、前記ホストされた仮想マシン用に通信を管理するように、1つまたは複数の前記物理コンピューティングシステム上で実行する1つまたは複数の仮想マシン通信マネージャモジュールの設定を含む、第4項に記載の方法。
【0120】
第17項。
前記複数のクライアントによって設定された前記プライベートコンピュータネットワークが、第1のプライベートコンピュータネットワークで使用するために特定された前記複数のネットワークアドレスの少なくとも1つと同一である前記1つまたは複数の別のクライアントによって特定された1つまたは複数のネットワークアドレスを持つ前記第1のクライアント以外の1つまたは複数のクライアント用の前記第1のプライベートコンピュータネットワーク以外の1つまたは複数の設定されたプライベートコンピュータネットワークを含む方法であって、かつ、前記設定可能ネットワークサービスが、それら同一ネットワークアドレスが、それら同一ネットワークアドレスの各々について、前記別のプライベートコンピュータネットワークの各々が、前記第1のプライベートコンピュータネットワーク用の前記ネットワークアドレスに対応するコンピューティングノードと別個の前記ネットワークアドレスに対応するコンピューティングノードを持つように、さらに管理する、第4項に記載の方法。
【0121】
第18項。前記第1のクライアントによる前記第1のプライベートコンピュータネットワークの設定が、前記第1のプライベートコンピュータネットワークで使用される前記第1の情報で特定される前記複数のネットワークアドレス用に、前記第1のクライアントが任意のネットワークアドレスを選択することの許可を含む、第4項に記載の方法。
【0122】
第19項。前記第1のクライアントにより前記プログラムによるインタフェースを用いてプログラムによって提供される前記第1の情報が、前記第1のクライアントのコンピューティング装置上に前記第1のクライアントに対して表示されるグラフィカルユーザインタフェースとの前記第1のクライアントの1つまたは複数のやりとりに基づいて受信される、第4項に記載の方法。
【0123】
第20項。内容が、設定可能ネットワークサービスのコンピューティングシステムがプライベートコンピュータネットワークへのアクセスを提供できるようにするコンピュータ可読媒体であって、前記提供を実行する方法が、
設定可能ネットワークサービスの複数のリモート顧客の各々に対して、
前記顧客のリモートプライベートネットワーク用のネットワーク拡張を前記顧客用に作成を開始し、かつ前記顧客の前記作成されたネットワーク拡張用に設定情報を特定するために、前記リモート顧客によってプログラムで行われた1つまたは複数の要求を受信することであって、前記設定情報が、前記顧客の前記作成されたネットワーク拡張用のネットワークトポロジ情報を含むことと、
前記顧客の前記作成されたネットワーク拡張の一部として使用される複数のコンピューティングノードを自動選択することであって、前記複数のコンピューティングノードが、前記設定可能ネットワークサービスで提供される複数のコンピューティングノードのサブセットであって、かつ前記顧客によって特定された前記設定情報に少なくとも部分的に基づいて選択されることと、
前記顧客の前記作成済みネットワーク拡張への前記顧客のプライベートアクセスを提供するために、前記顧客の前記作成済みネットワーク拡張が前記複数のコンピューティングノードを使用するように自動設定されることであって、前記プライベートアクセスが、前記複数のコンピューティングノードと前記顧客の前記リモートプライベートネットワークの1つまたは複数のコンピューティングシステムとの間の相互通信を可能にし、前記相互通信が、前記顧客によって特定された前記ネットワークトポロジ情報に従い前記作成済みネットワーク拡張経由でルーティングされることと、
前記顧客の前記作成済みネットワーク拡張への前記顧客の前記プライベートアクセスの提供を開始することと、を含む方法である、
コンピュータ可読媒体。
【0124】
第21項。前記設定可能ネットワークサービスが、要求を提供するために前記複数のリモート顧客によって使用されるプログラムによるインタフェースを提供し、前記複数の顧客の各々から受信された前記1つまたは複数の要求が、前記プログラムによるインタフェースを使用して提供され、かつ、前記1人または複数のリモート顧客の各々について、前記顧客によって特定された前記ネットワークトポロジ情報が、前記顧客用の前記作成済みネットワーク拡張で使用される複数のネットワークアドレスの指示を含み、前記複数のコンピューティングノードを使用するため、前記顧客用に前記作成済みネットワーク拡張の前記設定が、前記コンピューティングノードの前記指示されたネットワークアドレスの1つとの関連付けを含み、前記資源サービス用の前記アクセス機構が、前記資源サービスを表すために割当てられた前記作成済みネットワーク拡張用の前記複数のネットワークアドレスの1つを含む、第20項に記載のコンピュータ可読媒体。
【0125】
第22項。第1のネットワークアドレスが前記複数の顧客の少なくともいくつかの各々によって特定され、かつ、前記少なくともいくつかの顧客の前記作成済みネットワーク拡張の前記自動設定が、前記少なくともいくつかの顧客の前記作成済みネットワーク拡張用に区別した第1のネットワークアドレスの管理を含み、それら作成済みネットワーク拡張の各々が、前記第1のネットワークアドレスが割当てられた前記作成済みネットワーク拡張の一部である別個のコンピューティングノードを持つ、第21項に記載のコンピュータ可読媒体。
【0126】
第23項。前記複数のリモート顧客の少なくとも1人の各々について、前記1つまたは複数のプログラムで行われた要求が、前記顧客の、前記顧客に対して表示されたグラフイカルユーザインタフェースとの1つまたは複数のやりとりに基づいて受信され、かつ、前記複数のリモート顧客の少なくとももう1人の各々について、前記1つまたは複数のプログラムで行われた要求が、前記設定可能ネットワークサービスのプログラムによるインタフェースをプログラムで起動する前記顧客のコンピューティング装置上で実行しているソフトウェアから受信される、第20項に記載のコンピュータ可読媒体。
【0127】
第24項。前記方法が、1人または複数の前記複数のリモート顧客の各々について、
前記顧客用の前記作成済みネットワーク拡張から、前記作成済みネットワーク拡張および前記顧客の前記プライベートネットワークの外部にある資源サービスによって提供される1つまたは複数のコンピューティング関連資源へのアクセスを設定するための情報を取得することであって、前記情報が前記1つまたは複数のコンピューティング資源が関連付けられた前記資源サービス内の名前空間の識別子を含むことと、
前記作成済みネットワーク拡張を、前記顧客用に前記作成済みネットワーク拡張の前記複数のコンピューティングノードから、前記資源サービスで提供される前記1つまたは複数のコンピューティング関連資源へアクセスできるように自動的に設定することであって、前記設定が、前記1つまたは複数のコンピューティング関連資源にアクセスするため、前記作成済みネットワーク拡張から前記アクセス機構経由で前記資源サービスに送信された通信が、前記資源サービスで使用される前記名前空間識別子の指示を含むように自動的に変更されるような方法で、前記名前空間識別子を前記資源サービス用のアクセス機構と関連付けることと、
をさらに含む、第20項に記載のコンピュータ可読媒体。
【0128】
第25項。前記コンピュータ可読媒体が、前記内容および前記内容を含む生成された格納済みデータ信号を含むデータ送信媒体を格納するコンピューティングシステムのメモリの少なくとも1つであって、かつ、前記内容が、実行時に前記コンピューティングシステムに前記方法を実行させる命令である、第20項に記載のコンピュータ可読媒体。
【0129】
第26項。プライベートコンピュータネットワークへのアクセスを提供するように設定されたコンピューティングシステムであって、
1つまたは複数のメモリと、
リモートクライアントによる使用のために作成されたコンピュータネットワークを自動的に提供するように設定された設定可能ネットワークサービスマネージャモジュールと、を備え、前記設定可能ネットワークサービスマネージャモジュールが、複数のリモートクライアントの各々に対して、
前記クライアントによって使用するために作成されたコンピュータネットワークを設定するため、前記クライアントによってプログラムで提供される設定情報を受信することであって、前記設定情報が、前記クライアント用の前記作成済みコンピュータネットワークの一部として提供される複数のコンピューティングノードに関連する複数のネットワークアドレスの指示を含むことと、
前記受信された設定情報に従って前記クライアント用に前記作成済みコンピュータネットワークの一部として提供される複数のコンピューティングノードを作成することであって、前記設定が、前記複数のネットワークアドレスの少なくとも1つの前記複数のコンピューティングの各々への関連付けを含み、前記複数のコンピューティングノードが、クライアントのコンピュータネットワークで使用可能な複数のコンピューティングノードから選択されていることと、
前記クライアント用に前記作成済みコンピュータネットワークからネットワークアクセス可能資源サービスによって提供されている1つまたは複数の資源へのアクセスを設定するための追加情報を取得することであって、前記追加情報が前記資源サービスによって前記1つまたは複数の資源に関連付けられる識別子を含むことと、
前記複数のコンピューティングノードから、前記識別子に関連付けられるような方法で、前記資源サービスによって提供される前記1つまたは複数の資源へアクセスできるように、前記クライアント用の前記作成済みコンピュータネットワークを自動的に設定して、前記1つまたは複数の資源にアクセスするために、前記作成済みプライベートネットワークから前記資源サービスに送信された通信が、前記資源サービスで使用される前記識別子の指示を含むようにすることと、
前記クライアントに前記作成済みコンピュータネットワークの前記複数のコンピュータノードへのアクセスを提供することと、
を実行する、
コンピューティングシステム。
【0130】
第27項。前記設定可能ネットワークサービスマネージャモジュールが設定可能ネットワークサービスの一部であって、前記クライアントによる使用のために作成された前記コンピュータネットワークを設定するために、前記複数のリモートクライアントによる使用のためのプログラムによるインタフェースを提供し、前記作成済みコンピュータネットワークで使用可能な前記複数のコンピューティングノードが前記設定可能ネットワークサービスにより提供され、かつ前記複数のクライアントの少なくともいくつかの各々について、前記クライアントによりプログラムで提供される前記設定情報が、プログラムによるインタフェースを利用して提供され、前記クライアントによる使用のために設定されている前記作成済みコンピュータネットワーク用のネットワークトポロジ情報をさらに提供し、前記クライアントによる使用のために作成および設定されている前記コンピュータネットワークが、前記クライアントのリモートプライベートコンピュータネットワークへのプライベートコンピュータネットワーク拡張であって、さらに前記提供されるネットワークトポロジ情報に従って設定され、かつ、前記作成されたコンピュータネットワークの前記自動設定が、前記リモートプライベートコンピュータネットワークと前記プライベートコンピュータネットワーク拡張の複数のコンピューティングノードとの間のプライベートアクセスをさらに可能にする、第26項に記載のコンピューティングシステム。
【0131】
第28項。前記複数のクライアントの少なくともいくつかの各々について、前記クライアント用の前記作成済みコンピュータネットワーク用に設定されているアクセス先の前記1つまたは複数の資源を提供する前記ネットワークアクセス可能資源サービスが、前記作成済みコンピュータネットワークの一部でないリモート資源サービスであって、前記取得された追加情報に含まれる前記識別子が、前記リモート資源サービス内の前記クライアント用の名前空間に関連付けられた一意の識別子であって、前記クライアント用に前記作成済みコンピュータネットワークからアクセスされる前記1つまたは複数の資源が、前記クライアント用の前記関連する名前空間に格納され、かつ、前記識別子の前記指示を前記リモート資源サービスに送信された前記通信に含むための前記クライアント用に前記作成済みコンピュータネットワークの前記設定は、前記リモート資源サービスを表すための前記作成済みコンピュータネットワーク用の前記複数のネットワークアドレスの1つの割当てと、前記リモート資源サービスへ前記割当て済みネットワークアドレスを用いて送信された通信が、前記関連した名前空間の識別時に前記リモート資源サービスによる使用のために前記識別子を含むように変更されるような方法での前記識別子の前記割当て済みネットワークアドレスとの関連付けを含む、第26項に記載のコンピューティングシステム。
【0132】
第29項。前記設定可能ネットワークサービスマネージャモジュールが、前記コンピューティングシステムによる実行用のソフトウェア命令を含む、第26項に記載のコンピューティングシステム。
【0133】
第30項。
前記設定可能ネットワークサービスマネージャモジュールが、リモートクライアントによる使用のために作成されたコンピュータネットワークを自動的に提供するための方法から設定されるコンピューティングシステムであって、前記設定可能ネットワークサービスマネージャモジュールが、前記複数のリモートクライアントの各々に対して、
前記クライアントによる使用のために作成されたコンピュータネットワークを設定するため、前記クライアントによりプログラムで提供される設定情報を受信することであって、前記設定情報が、前記クライアント用に前記作成済みコンピュータネットワークの一部として提供される複数のコンピューティングノードに関連付けるための複数のネットワークアドレスの指示を含むことと、
前記受信された設定情報に従って前記クライアント用に前記作成済みコンピュータネットワークの一部として提供される複数のコンピューティングノードを設定することであって、前記設定が、前記複数のネットワークアドレスの少なくとも1つの前記複数のコンピューティングノードの各々との関連付けを含み、前記複数のコンピューティングノードが、クライアントのコンピュータネットワークで利用可能な複数のコンピューティングノードから選択されることと、
前記クライアント用に前記作成されたコンピュータネットワークから、ネットワークアクセス可能な資源サービスで提供される1つまたは複数の資源へのアクセスを設定するための追加情報を取得することであって、前記追加情報が、前記資源サービスによって前記1つまたは複数の資源に関連付けられた識別子を含むことと、
前記複数のコンピューティングノードから、前記資源サービスによって提供される前記1つまたは複数の資源へのアクセスを、前記識別子に関連付けられるような方法で可能にして、前記1つまたは複数の資源にアクセスするために前記作成済みプライベートネットワークから前記資源サービスに送信された通信が、前記資源サービスで使用される前記識別子の指示を含むようにするように、前記クライアント用の前記作成済みコンピュータネットワークを自動的に設定することと、
前記クライアントに前記作成済みコンピュータネットワークの前記複数のコンピューティングノードへのアクセスを提供することと、
を実行する、
第26項に記載のコンピューティングシステム。
【0134】
前述の説明から、本明細書中に具体的な実施形態が例示の目的で記載されているが、本発明の精神および範囲から逸脱することなく種々の変更を行うことが可能であることが理解されよう。従って、本発明は、添付の特許請求の範囲および本明細書に列挙された要素によることを除いて、限定されるものではない。また、本発明のある態様がある請求項の形で以降に提示されているが、発明者は、本発明の種々の態様を利用可能ないかなる請求項の形でも考慮する。例えば、本発明の一部の態様のみがコンピュータ可読媒体で具体化されているとして現在列挙されているが、別の態様も同様にそのように具体化することが可能である。