特許第5744229号(P5744229)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

<>
  • 特許5744229-ネットワーク複製のための技法 図000002
  • 特許5744229-ネットワーク複製のための技法 図000003
  • 特許5744229-ネットワーク複製のための技法 図000004
  • 特許5744229-ネットワーク複製のための技法 図000005
  • 特許5744229-ネットワーク複製のための技法 図000006
  • 特許5744229-ネットワーク複製のための技法 図000007
  • 特許5744229-ネットワーク複製のための技法 図000008
  • 特許5744229-ネットワーク複製のための技法 図000009
  • 特許5744229-ネットワーク複製のための技法 図000010
  • 特許5744229-ネットワーク複製のための技法 図000011
  • 特許5744229-ネットワーク複製のための技法 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5744229
(24)【登録日】2015年5月15日
(45)【発行日】2015年7月8日
(54)【発明の名称】ネットワーク複製のための技法
(51)【国際特許分類】
   H04L 12/70 20130101AFI20150618BHJP
   H04L 12/24 20060101ALI20150618BHJP
【FI】
   H04L12/70 D
   H04L12/24
   H04L12/70 100Z
【請求項の数】12
【全頁数】27
(21)【出願番号】特願2013-546285(P2013-546285)
(86)(22)【出願日】2011年12月19日
(65)【公表番号】特表2014-504105(P2014-504105A)
(43)【公表日】2014年2月13日
(86)【国際出願番号】US2011065862
(87)【国際公開番号】WO2012087941
(87)【国際公開日】20120628
【審査請求日】2013年6月19日
(31)【優先権主張番号】12/973,744
(32)【優先日】2010年12月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】エリック ジェーソン ブランドワイン
(72)【発明者】
【氏名】スワミナサン シバサブラマニアン
(72)【発明者】
【氏名】ブラッドリー イー.マーシャル
(72)【発明者】
【氏名】テート アンドリュー サーテイン
【審査官】 衣鳩 文彦
(56)【参考文献】
【文献】 特開2007−082078(JP,A)
【文献】 特開2005−006235(JP,A)
【文献】 米国特許出願公開第2009/0300605(US,A1)
【文献】 濱口 毅 他,仮想ネットワークのライフサイクルを用いた管理手法,情報処理学会研究報告 平成21年度▲2▼ [CD−ROM] 情報処理学会研究報告 マルチメディア通信と分散処理(DPS) No.139,2009年 8月15日,p.1〜6
【文献】 谷内 康隆,クラウド時代の次世代データセンター オンデマンド仮想システムサービス,FUJITSU,2010年 5月10日,第61巻,第3号,p.291〜296
【文献】 サービスレベルマネジメント 障害の芽は設計時に摘む!運用局面の負担を1/100に削減,ネットワークコンピューティング,1999年 3月 1日,第11巻,第3号,p.64〜71
(58)【調査した分野】(Int.Cl.,DB名)
H04L 12/70
H04L 12/24
(57)【特許請求の範囲】
【請求項1】
ネットワーク複製のためのコンピュータ実施方法であって、
実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御の下で、
1つまたは複数の仮想デバイスを含み、1つまたは複数の物理ネットワークをオーバレイする、第1のネットワークを複製する旨の要求を受信するステップと、
前記要求の受信に応答して、それぞれが前記第1のネットワーク内のデバイスに対応する1または複数の仮想複製デバイスを作成するステップ、および前記第1のネットワークが前記1つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で、前記1つまたは複数の物理ネットワークをオーバレイするように複製ネットワーク内に前記作成された仮想複製デバイスを配置するステップと、
前記複製ネットワークへのアクセスを提供するステップとを含み、
前記1または複数の仮想複製デバイスを作成するステップは、
前記第1のネットワークの特定のデバイスについて、前記特定のデバイスがステートフルデバイスであるかどうかを識別するステップと、
前記特定のデバイスがステートフルデバイスであるものと決定された場合、
コピーオンライト(COW)オーバレイである浅いコピー、または、前記特定のデバイスについての完全なコピーである深いコピー、いずれかのコピータイプを指定するステップと、
前記特定のデバイスによって使用される1つまたは複数の記憶された状態表示から依存して動作する前記特定のデバイスのコピーを前記いずれかのコピータイプにより作成するステップと
を含む、コンピュータ実施方法。
【請求項2】
前記複製ネットワークへのアクセスを提供するステップが、
前記複製ネットワークのテストを実行するための命令を受信するステップと、
前記複製ネットワークの前記テストを実行するステップと、
前記テストの結果を提供するステップと
を含む、請求項1に記載のコンピュータ実施方法。
【請求項3】
前記第1のネットワークに関する1つまたは複数のネットワークイベントを記録するステップをさらに含み、
前記複製ネットワークへのアクセスを提供するステップが、前記記録された1つまたは複数のネットワークイベントを前記複製ネットワーク上で発生させるステップを含む、請求項1に記載のコンピュータ実施方法。
【請求項4】
前記1つまたは複数のネットワークイベントを記録するステップが前記第1のネットワークに影響を与える1つまたは複数のAPI呼出しを記録するステップを含み、前記記録された1つまたは複数のネットワークイベントを前記複製ネットワーク上で発生させるステップが、前記1つまたは複数のAPI呼出しを前記複製ネットワークに関連して実行させるステップを含む、請求項3に記載のコンピュータ実施方法。
【請求項5】
前記複製ネットワークへのアクセスを提供するステップが、
前記複製ネットワークを修正するステップと、
前記修正された複製ネットワーク上でテストを実行するステップと
を含む、請求項1に記載のコンピュータ実施方法。
【請求項6】
前記複製ネットワークを修正するステップが、前記複製ネットワークのうちの少なくとも1つのデバイスの容量を変更するステップと、前記複製ネットワークに対してパケット損失の変化を発生させるステップと、前記複製ネットワークにおける障害率の変化を発生させるステップと、1つまたは複数の仮想複製デバイスを、置換される1つまたは複数の仮想複製デバイスとは異なるように実行する別の仮想複製デバイスに置換するステップと、のうちの少なくとも1つを含む、請求項5に記載のコンピュータ実施方法。
【請求項7】
前記第1のネットワークの前記仮想デバイスのうちの少なくとも1つがテンプレートを使用して作成されたものであり、前記複数の仮想複製デバイスを作成するステップが、前記仮想デバイスのうちの前記少なくとも1つに対応する少なくとも1つの仮想複製デバイスを作成するために前記テンプレートを使用するステップを含む、請求項1に記載のコンピュータ実施方法。
【請求項8】
ネットワークを複製するように動作可能なコンピュータシステムであって、
1つまたは複数のプロセッサと、
前記1つまたは複数のプロセッサによって実行された場合、少なくとも、
1つまたは複数の仮想デバイスを含み、1つまたは複数の物理ネットワークをオーバレイする、第1のネットワークを複製する旨の要求を受信すること、
前記要求の受信に応答して、それぞれが前記第1のネットワーク内のデバイスに対応する1または複数の仮想複製デバイスを作成すること、および前記第1のネットワークが前記1つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で、前記1つまたは複数の物理ネットワークをオーバレイするように仮想複製ネットワーク内に前記作成されたデバイスを配置すること、ならびに
前記複製ネットワークへのアクセスを提供することを含み、
前記1または複数の仮想複製デバイスを作成することは、
前記第1のネットワークの特定のデバイスについて、前記特定のデバイスがステートフルデバイスであるかどうかを識別することと、
前記特定のデバイスがステートフルデバイスであるものと決定された場合、
コピーオンライト(COW)オーバレイである浅いコピー、または、前記特定のデバイスについての完全なコピーである深いコピー、いずれかのコピータイプを指定することと、
前記特定のデバイスによって使用される1つまたは複数の記憶された状態表示から依存して動作する前記特定のデバイスのコピーを前記いずれかのコピータイプにより作成することと
を前記コンピュータシステムに実行させる実行可能命令を含む、メモリと
を備える、コンピュータシステム。
【請求項9】
少なくとも前記作成された複数の仮想複製デバイスのサブセットが、前記第1のネットワーク内のデバイスのコピーオンライトオーバレイである、請求項に記載のコンピュータシステム。
【請求項10】
前記複製ネットワークへのアクセスを提供することが、
前記複製ネットワークのテストを実行するための命令を受信することと、
前記複製ネットワークの前記テストを実行することと、
前記テストの結果を提供することと
を含む、請求項に記載のコンピュータシステム。
【請求項11】
前記テストを実行するのに先立ち、前記複製ネットワークを修正することをさらに含む、請求項1に記載のコンピュータシステム。
【請求項12】
前記第1のネットワークが、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された1つまたは複数のデバイスを含む、請求項に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[背景技術]
(関連出願の相互参照)
本出願は、「Configuring Communications Between Computing Nodes」と題された2008年3月31日に出願した米国特許出願第12/060074号明細書の全開示を、すべての目的のために参照により組み込む。
【0002】
リモートコンピューティングサービスは、様々なユーザのためにネットワークを操作するためにしばしば使用される。例えば、ある組織が、互いに通信している複数のコンピューティングデバイスをリモートに動作させることができる。コンピューティングデバイスは、ルータ、スイッチ、ファイアウォールなどの様々なネットワークデバイスを利用して、組織のニーズに応じてネットワーク内に構成することができる。さらにコンピューティングデバイスおよびネットワークデバイスは、仮想および/または実際のコンピューティングデバイスを含むこともできる。たとえばある組織のネットワークは、1つまたは複数の仮想ネットワークデバイスによって互いに通信している複数の仮想マシンを含むことが可能であり、それによって実際のネットワークをオーバレイする(overlay)仮想ネットワークを形成する。コンピューティングデバイスは、仮想ネットワークのトポロジに従って通信するようにプログラミング可能であり、様々な技法を使用して、仮想ネットワークがオーバレイする実際のネットワーク全体にわたる通信の伝達が可能となる。
【0003】
いくつかの事例では、ネットワークまたは少なくともその一部を複製することが望ましい。たとえばある組織は、ネットワークを依然として機能させながらそのネットワークをテストすることを望む場合がある。同様にある組織は、実際にネットワークにストレスを与えることなしに、そのネットワーク上での様々なストレスをシミュレートすることを望む場合がある。組織は、そのネットワークへの修正がどのように機能できるかをテストすることを望むか、またはネットワーク障害などの1つもしくは複数のイベントを引き起こしたイベントを再作成することを望む場合がある。概して、ネットワークの複製がなぜ有用であるかについては、様々な理由がある。しかしながらネットワーク複製は、困難かつ時間のかかるプロセスである可能性があり、通常は、古いネットワークの複製となる新しいネットワークを構成するかなりの介入が必要である。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願第12/060074号明細書
【図面の簡単な説明】
【0005】
図1】様々な実施形態が実装可能な環境を示す図である。
図2図1に示された環境の様々な構成要素を利用可能な環境を示す図である。
図3図2の環境の一部をより詳細に示す図である。
図4】実施形態に従った、ネットワークの複製を要求するためのプロセスの例を示す流れ図である。
図5】実施形態に従った、ネットワークを複製するための命令の受信に応答して、ネットワークを複製するためのプロセスの例を示す流れ図である。
図6】実施形態に従った、ネットワークを複製するためのプロセスの例を示す流れ図である。
図7】実施形態に従った、複製ネットワークに関するオブジェクトのコピーを作成するためのプロセスの例を示す流れ図である。
図8】実施形態に従った、ネットワークオブジェクトの浅い(shallow)コピーの作成を示すタイムライン図である。
図9】実施形態に従った、ネットワークオブジェクトの深い(deep)コピーの作成を示すタイムライン図である。
図10】実施形態に従った、複製ネットワークの使用例を示す流れ図である。
図11】実施形態に従った、複製ネットワークの別の使用例を示す流れ図である。
【発明を実施するための形態】
【0006】
本明細書で説明および提案される技法は、ネットワーク複製などのプロセスに有用なシステムおよび方法を含む。ある実施形態では、ネットワークの少なくとも一部を複製する旨の要求が受信され、要求に応答してネットワークの少なくともその部分が複製される。要求はネットワーク管理者などの、ネットワークにリモートにアクセスするユーザによって開始可能である。ネットワークのアクセスは、ユーザが自分のネットワークにアクセスできるようにするために提供された、ウェブサービスレイヤの様々なアプリケーションプログラミングインターフェース(API)を介することができる。例として、ネットワークは、ユーザ(および/またはユーザに関連付けられた組織)に代わり、ネットワークを動作するために使用されるコンピューティングリソースを提供する別の組織によって動作可能である。例として、コンピューティングリソースは、1つまたは複数のデータセンタ内に配置すること、およびウェブサービスのAPIを使用するユーザによってリモートにアクセスすることが可能であるが、他の技術も使用可能である。ネットワーク複製のために、1つまたは複数のAPIが提供可能である。さらに、1つまたは複数のデータセンタを使用して、自分のネットワークにリモートにアクセスできる他のユーザのネットワークを実装することもできる。コンピューティングリソースは、コンピューティングデバイス、記憶デバイス、スイッチ、ルータ、ゲートウェイ、ハブ、ならびに以下で説明されるいくつかのデバイス、概してネットワーク環境内での使用に好適な任意のデバイスを含む、ネットワークの動作に使用可能な他のデバイスを含むことができる。
【0007】
ある実施形態では、複製されるネットワークは仮想オーバレイネットワークである。ある実施形態では、複製されるネットワークは、物理デバイスのネットワークをオーバレイする1つまたは複数の仮想デバイスのネットワークを備える。物理デバイスは、1つまたは複数のハブ、スイッチ、ルータ、ゲートウェイ、ファイアウォール、サーバ、記憶デバイス、および/またはネットワーク環境での使用が可能な1つまたは複数の他のデバイスを含むことができる。同様に仮想デバイスは、1つまたは複数の仮想ハブ、仮想スイッチ、仮想ルータ、仮想ゲートウェイ、仮想ファイアウォール、仮想サーバ、仮想記憶デバイス、および/またはネットワーク環境での使用が可能な1つまたは複数の他のデバイスを含むことができる。本明細書で使用され、文脈から明らかな場合、仮想デバイスは「仮想」という単語を用いずに言い表すことが可能である。仮想ネットワークを備えるデバイスセットと、仮想ネットワークによってオーバレイされる物理ネットワークを備えるデバイスセットとの間には、1対1の対応が存在しない場合がある。例として、1つの物理デバイスを使用して複数の仮想デバイスを実装することができる。たとえば1つのコンピューティングデバイスを使用して複数の仮想マシンを実装することができる。他の例として、複数の物理デバイスを使用して単一の仮想デバイスを実装することができる。たとえば仮想記憶デバイスは、複数の物理記憶デバイスによって実装可能である。さらに、複数の仮想デバイスは単一の物理デバイスによって実装可能であり、複数の物理デバイスを使用して単一の仮想デバイスを実装することができるが、いくつかの仮想デバイスは単一の物理デバイスによって実装可能である。たとえば仮想記憶ボリュームは、単一の物理記憶デバイスによって実装可能である。
【0008】
ある実施形態では、要求を出すユーザには、ネットワークがどのように複製可能であるかに関する1つまたは複数のパラメータを指定するための機会が提供される。一実施形態では、ユーザは、1つまたは複数のサブネットワークなどのネットワークの1つまたは複数の部分を、コピーするために識別することができる。さらに、ユーザのネットワーク内のデバイスは、様々な特徴でタグ付けすることができる。デバイス用のタグは、ネットワーク内でのデバイスの目的(デバイスを使用してサポートするアプリケーションのタイプなど)に関連すること、デバイスの任意の態様に全体として関連すること、またはデバイスの特徴に対して明らかな関係を有さないことが可能である。ある実施形態では、ユーザは1つまたは複数のタグを、複製ネットワークへの包含または複製ネットワークからの除外に関する条件として指定することができる。たとえばユーザは、「製造」とタグ付けされたデバイスのみを複製ネットワーク内に含めるものと指定することができる。
【0009】
他のパラメータは、コピーされることになるネットワークに対する複製ネットワーク内のオブジェクトの忠実度に関連することが可能である。たとえば、コピーされることになるネットワークが仮想マシンを含む場合、ユーザは、複製仮想マシンに関する要件を指定するための様々なオプションを有することができる。たとえばユーザは、マシンに対して低い忠実度を指定することが可能であり、それによって複製ネットワークは単に対応する仮想マシンを有するのみとすることができる。ユーザは、対応する仮想マシンの機能が元の仮想マシンと様々な度合で合致する、より高い忠実度を指定することができる。たとえばユーザは、処理機能、使用可能なブロック記憶、および/または様々なソフトウェアアプリケーションの実行能力を、最低限に備えた状態で複製仮想マシンを実装するものと指定することができる。同様にユーザは、たとえば複製仮想マシンが特定のプロセッサモデルを使用するマシン上に実装されるものとする、非常に高い忠実度を指定することができる。概して、複製ネットワークオブジェクトが、複製されているオブジェクトにいかに密接に合致するかに関連する任意のタイプの特徴を、コピーの忠実度を指定するためにユーザに提供することができる。指定可能なパラメータの別の例として、ユーザは、複製ネットワーク内の対応するデバイスに使用されるべきである、ネットワーク内のデバイスの様々なインターネットプロトコルアドレスを指定することができる。
【0010】
ある実施形態では、ユーザは、コピーされることになるネットワーク内のデバイスに関する少なくとも1つのコピータイプを指定することも可能である。一実施形態では、ユーザは、コピーされることになるネットワーク内で「浅い」または「深い」コピーなどのコピータイプを指定することが可能であるが、選択のために他のタイプのコピーも提供可能である。ネットワークオブジェクトの浅いコピーの場合、オブジェクトの新しいインスタンスを宣言することができる。新しいインスタンスが動作し、必要に応じて、コピーの前に元のオブジェクトの状態に関する情報を取り出すことができる。ネットワークオブジェクトの浅いコピーは、たとえば、ネットワークオブジェクトのコピーオンライト(COW)オーバレイとすることができる。ネットワークオブジェクトの深いコピーの場合、複製コピーのためにオブジェクトの状態に関する情報を含むメモリのストアの完全なコピーを実行し、別のソースからコピーする前に元のオブジェクトの状態に関する情報を取り出す必要なしに、複製コピーを独立に動作させることができる。
【0011】
前述のように、ある実施形態では、ユーザがネットワークをコピーする要求を出した場合、この要求に応答してネットワークがコピーされ、ネットワークへのアクセスがユーザに提供される。ネットワークのコピーは、コピーされているネットワーク1つまたは複数の仮想デバイスに対応する、1つまたは複数の仮想複製デバイスを作成することを含むことができる。コピーされているネットワークの仮想デバイスを作成および/または動作するために使用される仮想化または他の技術を使用して、対応する複製デバイスを作成および動作することも可能である。さらに、コピーされているネットワーク内のデバイスを作成するために使用される任意のテンプレートを使用して、複製デバイスを作成することも可能である。言い換えれば、デバイスおよびそれらの複製デバイスは、共通のテンプレートから作成可能である。ネットワークのコピーは、ユーザによって指定された任意のパラメータに一致するように実行される。指定されたパラメータは、コピーされているネットワーク全体、および/またはコピーされている個別のネットワークオブジェクトに、適用可能である。いくつかの実施形態では、ユーザは、コピーされることになる各ネットワークオブジェクトおよび/またはコピーされることになるネットワークオブジェクトのサブセットに対して、異なるパラメータを指定することができる。
【0012】
複製ネットワークへのアクセス提供は、様々な方法で実行可能である。概して、ネットワーク管理者などのユーザは、様々な方法および様々な目的で複製ネットワークを動作させることができる。一例としてユーザは、テストの目的で複製ネットワークに様々なストレスを印加することができる。ユーザは、ネットワークイベントを記録し、それらのイベントを複製ネットワーク内で討論の(forensic)ためにリプレイすることも可能である。別の例として、ユーザは、追加の容量を提供するため、または概して、複製ネットワークの追加のコンピューティングリソースを使用可能にするために、コピーされているネットワークに関連して複製ネットワークを使用することができる。ユーザは、コピーされたネットワークを修正することがその性能にどのように影響を与えるかをテストするなどのために、複製ネットワークを修正することも可能である。追加の例を含む様々な実施形態に関する詳細が、以下の段落でより詳細に説明される。
【0013】
図1は、様々な実施形態に従った態様を実装するための環境100の例を示す。理解されるように、説明のためにウェブベースの環境が使用されているが、適切であれば、様々な実施形態を実装するために異なる環境が使用可能である。当該環境は、電子クライアントデバイス102を含み、このデバイスは、適切なネットワーク104を介して要求、メッセージ、または情報を送信および受信するように、ならびに情報をデバイスのユーザに返送するように動作可能な、任意の適切なデバイスを含むことが可能である。こうしたクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダなどが含まれる。ネットワークは、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワーク、もしくは任意の他のこうしたネットワーク、またはそれらの組合せを含む、任意の適切なネットワークを含むことができる。こうしたシステムに使用される構成要素は、選択されるネットワークおよび/または環境のタイプに少なくとも部分的に依存可能である。こうしたネットワークを介した通信のためのプロトコルおよび構成要素はよく知られており、本明細書では詳細に考察しない。ネットワークを介した通信は、有線または無線の接続およびそれらの組合せによって実行可能である。この例では、ネットワークはインターネットを含み、環境は要求を受信し、それに応答してコンテンツを提供するためのウェブサーバ106を含むが、当業者であれば、他のネットワークの場合、同様の目的を処理する代替デバイスが使用可能であることを理解されよう。
【0014】
例示の環境は、少なくとも1つのアプリケーションサーバ108およびデータストア110を含む。連結されるかまたはその他の方法で構成可能であり、適切なデータストアからデータを取得するなどのタスクを実行するために対話可能である、いくつかのアプリケーションサーバ、レイヤ、または他の要素、プロセス、もしくは構成要素が存在可能であることを理解されたい。本明細書で使用される場合、「データストア」という用語は、任意の標準、分散型、またはクラスタ型の環境において、任意の組合せおよび数のデータサーバ、データベース、データ記憶デバイス、およびデータ記憶媒体を含むことが可能な、データの記憶、アクセス、および取り出しが可能な任意のデバイスまたはデバイスの組合せを指す。アプリケーションサーバは、クライアントデバイスに関する1つまたは複数のアプリケーションの態様を実行し、アプリケーションに関する大部分のデータアクセスおよびビジネス論理を処理するために、必要に応じてデータストアと統合するための、任意の適切なハードウェアおよびソフトウェアを含むことができる。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに転送されることになるテキスト、グラフィックス、オーディオ、および/またはビデオなどのコンテンツを生成することが可能であり、これをウェブサーバによって、この例ではHTML、XML、または他の適切な構造化言語の形でユーザに提供することができる。すべての要求および応答の処理、ならびにクライアントデバイス102とアプリケーションサーバ108との間でのコンテンツの送達は、ウェブサーバによって処理可能である。本明細書で考察される構造化コードは、本明細書の他の場所で考察されるような任意の適切なデバイスまたはホストマシン上で実行可能であるため、このウェブサーバおよびアプリケーションサーバは必須ではなく単なる例示の構成要素であることを理解されたい。
【0015】
データストア110は、特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベース、または他のデータ記憶機構および媒体を含むことができる。たとえば図示されたデータストアは、製造データ112およびユーザ情報116を記憶するための機構を含み、これを使用して製造側のコンテンツに対処することができる。データストアは、ログデータ114を記憶するための機構を含むようにも示されており、これは報告、分析、または他のこうした目的に使用することができる。適切であるものとして上記で列挙した機構のいずれか、またはデータストア110内の追加の機構内に記憶することが可能な、ページイメージ情報およびアクセス権情報などのデータストア内に記憶することが必要な可能性のある、多くの他の態様が存在可能であることを理解されたい。データストア110は、それに関連付けられた論理を介してアプリケーションサーバ108から命令を受信し、それに応答してデータの取得、更新、またはその他の処理を実行するように、動作可能である。一例では、ユーザはある種のアイテムに関する検索要求を提出する場合がある。この場合、データストアは、ユーザの識別を検証するためにユーザ情報にアクセスする可能性があり、カタログ詳細情報にアクセスしてそのタイプのアイテムに関する情報を取得することが可能である。その後、ユーザがユーザデバイス102上でブラウザを介して見ることができるウェブページ上に列挙された結果内など、情報をユーザに戻すことが可能である。対象の特定アイテムに関する情報は、ブラウザの専用ページまたはウィンドウ内で見ることができる。
【0016】
各サーバは、典型的には、そのサーバの一般的な管理および動作に関する実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、また典型的には、サーバのプロセッサによって実行された場合、サーバがその所期の機能を実行できるようにする命令を記憶するコンピュータ読取り可能媒体を含むことになる。オペレーティングシステムおよびサーバの一般的な機能に関する好適な実装は知られているかまたは市販されており、当業者によって、特に本明細書における開示に鑑みて、容易に実装される。
【0017】
一実施形態における環境は、1つまたは複数のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されたいくつかのコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら当業者であれば、こうしたシステムが、図1に示されたよりも少ないかまたは多い数の構成要素を有するシステム内で、等しく良好に動作可能であることを理解されよう。したがって、図1内のシステム100の描写は本来例示的なものであり、本開示の範囲を限定するものと解釈されるべきではない。
【0018】
図2は、図1に示された1つまたは複数の構成要素を使用可能にし、本開示の様々な実施形態を実施するために使用可能な、環境200の例示を提供する。図2に示された環境200では、複数の顧客内部ネットワーク202は、リモートコンピューティングサービスプロバイダネットワーク204と通信可能に接続される。図2は複数の顧客内部ネットワーク202を示しているが、本開示の実施形態は、内部に存在する顧客内部ネットワーク202が1つまたはゼロの環境内で実装可能である。図2に示された実施形態に戻ると、顧客内部ネットワーク202は、たとえば、リモートコンピューティングサービスプロバイダのリモートコンピューティングサービスを利用する組織のイントラネットとすることができる。例として、顧客は、他のアプリケーション用のリモートコンピューティングサービスプロバイダネットワーク204を使用するサービスとして提供されるコンピューティングリソースを使用しながら、顧客の動作中に使用される様々なアプリケーションを実行するためにそれ自体の内部ネットワークを利用可能である。
【0019】
ある実施形態では、リモートコンピューティングサービスプロバイダネットワーク204はリモートコンピューティングサービスプロバイダによって動作されるデータセンタ内に実装される。データセンタは、内部で様々なコンピューティングリソースが利用される設備とすることができる。コンピューティングリソースは、コンピューティングデバイス、記憶デバイス、ルータなどのネットワークデバイス、スイッチ、ファイアウォールなど、概してコンピューティングデバイスのネットワークに関連して使用可能な任意のデバイスを含む。リモートコンピューティングサービスプロバイダネットワーク204は、通信ネットワークを介して互いに通信する複数のデータセンタを用いて実装可能である。たとえばリモートコンピューティングサービスプロバイダは、様々な地理的位置にあるデータセンタのネットワークを動作させることができる。図に示されるように、リモートコンピューティングサービスプロバイダネットワーク204は、この例では対応する顧客に代わって動作されるネットワークである、1つまたは複数の顧客リモートネットワーク206を含む。顧客の様々な動作は、リモート顧客ネットワーク206を使用して動作可能である。たとえば顧客は、外部動作(ウェブサイトまたは他の情報リソースを公衆または顧客の組織外部の他のユーザに提供するためのサーバおよびデータストアのネットワークの動作など)のために顧客リモートネットワーク206を利用しながら、内部動作(会計、人的資源、電子メールなど)のために顧客内部ネットワーク202を利用することができる。概して顧客は、顧客内部ネットワーク202および/または顧客リモートネットワーク206を任意の好適な目的で利用することができる。顧客リモートネットワーク206のうちの1つまたは複数は、すべての目的のために参照により本明細書に組み込まれ、2008年3月31日に出願した特許文献1、名称「Configuring Communications Between Computing Nodes」に従って説明されるような、仮想オーバレイネットワークとすることができる。
【0020】
ある実施形態では、リモートコンピューティングサービスプロバイダネットワーク204は、複数のアプリケーションプログラミングインターフェース(API)210を有するウェブサービスレイヤ208を含む。ウェブサービスレイヤ208は、ウェブサービス呼出しを受信し、1つまたは複数の他のコンピュータシステムに対して要求に基づくアクションを実行するように命じることなどによって適宜応答するように動作可能な、コンピュータシステム内に実装可能である。ウェブサービス呼出しは、様々な理由でユーザに提供された様々なウェブサービスAPI 210を使用して実行可能である。たとえば1つのAPIは、本開示の様々な実施形態に従って説明されるようなネットワーク複製を目的とすることができる。他のAPIは、仮想コンピューティングインスタンスを提供する、他の方法でネットワークを構成する、概して、APIを利用するユーザに代わってコンピューティングリソースをリモートに動作するなどの、他の目的とすることができる。さらに、ウェブサービスAPIは例示の目的で提供されているが、様々な実施形態に従って、コンピューティングリソースをリモートまたはローカルのいずれかで動作する任意の方法を使用することが可能である。
【0021】
図3は、図2に関連して上記で示された環境200の副次環境とすることが可能な、環境300の例示を示す。図3に示されるように、環境300は、特定の顧客に適用される場合の環境200の一部を示す。この例では、顧客は、内部で顧客リモートネットワーク306が顧客に代わりリモートコンピューティングサービスプロバイダ304によって動作される、リモートコンピューティングサービスプロバイダネットワーク304にアクセスする、それ自体の顧客内部ネットワーク302を有する。図3では、顧客はいくつかのサブネットワーク308を有するように示されているが、顧客はネットワークを1つだけ有すること、または図に示されるよりも多くのサブネットワークを有することが可能である。
【0022】
ある実施形態では、顧客リモートネットワーク306は複数の顧客サブネットワーク308を含む。ある実施形態では、顧客サブネットワークのうちの1つまたは複数が、リモートコンピューティングサービスプロバイダによって動作されるネットワークのオーバレイネットワークである。示された例示の実施形態では、顧客は、ルータ310および仮想私設ネットワーク(VPN)ゲートウェイ312を通じ、インターネットを介するセキュアVPN接続314を介して、様々なサブネットワーク308にアクセスすることができるが、顧客サブネットワーク308にアクセスする他の方法も使用可能である。ある実施形態では、顧客はその顧客内部ネットワーク302からインターネットを介するセキュアVPN接続を確立し、ウェブサービス呼出しを通じて顧客サブネットワーク308と対話するが、顧客に代わって動作する様々なコンピューティングデバイスと通信する他の方法も使用可能である。ある実施形態では、顧客内部ネットワーク302のサーバは暗号化された情報をVPNゲートウェイ312に送り、VPNゲートウェイ312はこの情報を復号し、復号された命令をルータ310に渡す。その後ルータ310は復号された情報を適切な顧客サブネットワーク308に伝送する。いずれかの顧客サブネットワーク308からの情報を、顧客内部ネットワーク302によって送信されたいずれかの命令に応答するか否かにかかわらず、ルータ310に送信することが可能であり、ルータ310はこの情報をVPNゲートウェイ312に渡し、VPNゲートウェイ312はこの情報を暗号化し、セキュアVPN接続314を介してこの情報を顧客内部ネットワーク302に送信する。
【0023】
図3は様々な実施形態に従い、情報のフローに関する特定の構成を例示的に示しているが、環境300または他の実施形態に他の構成も使用可能である。概して、コンピューティングデバイス間で情報を交換する任意の好適な方法が使用可能である。さらに、図3には、例示の目的でVPNゲートウェイ312およびルータ310などのいくつかのデバイスが含まれているが、通信用に他のデバイスが使用可能である。さらに、図3に示された環境300は簡略化されており、図示された以外の他のデバイスを環境300または他の実施形態に含めることができる。可能なデバイスには、スイッチ、サーバ、ファイアウォール、データストア、ハブ、他のゲートウェイなどが含まれるが、これらに限定されない。
【0024】
前述のように、本開示の様々な実施形態は動的なネットワーク複製を提供する。したがって図4は、1つまたは複数のネットワークをコピーするために顧客による使用が可能な、プロセス400の例示の実施形態を示す。プロセス400の一部(または本明細書で説明される任意の他のプロセス、もしくはそれらの変形形態および/または組合せ)は、実行可能命令で構成された1つまたは複数のコンピュータシステムの制御の下で実行可能であり、1つまたは複数のプロセッサ上でまとめて実行するコード(たとえば実行可能命令、1つもしくは複数のコンピュータプログラム、または1つもしくは複数のアプリケーション)として、ハードウェアによって、またはそれらの組合せで実装可能である。コードは、たとえば1つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ読取り可能記憶媒体上に記憶可能である。
【0025】
ある実施形態では、ユーザはコピー予定のネットワークを選択する402。コピー予定のネットワークの選択は、任意の好適な様式で達成可能である。たとえばリモートコンピューティングサービスプロバイダを含むある実施形態では、顧客のネットワーク管理者または他のユーザは、顧客に代わりリモートコンピューティングサービスプロバイダによって動作されているネットワークをユーザが選択できるようにする、時には管理コンソールと呼ばれるインターフェースを利用することができる。インターフェースは、リモートコンピューティングサービスプロバイダによってウェブページとして顧客に提供可能であるか、または顧客のコンピューティングデバイス上で実行するアプリケーションとすることが可能である。選択されるネットワークは、より大きなネットワークのサブネットワーク、サブネットワークの集まり、または概して、互いに通信するコンピューティングリソースの任意の集まりとすることができる。
【0026】
ある実施形態では、コピーされることになるネットワークを介してより多くの制御を有するために、ユーザには1つまたは複数のフィルタを適用するための機能が提供される。ある実施形態では、顧客のネットワーク内の様々なデバイスが1つまたは複数の割り当てられたタグを有する。タグは自動的に割り当て可能であるか、またはユーザによる割り当てが可能である。たとえば、デバイスにはデバイスタイプタグがタグ付け可能であり、これはたとえばデバイスをサーバ、記憶デバイス、スイッチ、または任意の他のタイプのデバイスであるものとして識別することができる。ある実施形態では、ユーザはユーザ自身のタグを提供することもできる。たとえば、顧客があるサブネットワークを別のサブネットワークとは異なる目的で使用する場合、ユーザは各デバイスに目的に対応するタグをタグ付けすることができる。1つのサブネットワーク内のデバイスは、たとえばデバイスを製造に使用されるサブネットワークの一部として識別するタグを有することが可能であり、別のサブネットワーク内の他のデバイスは、デバイスを課金などの他の目的に使用されるサブネットワークの一部として識別するタグを有することが可能である。別の例として、記憶デバイスは、デバイスを1次記憶デバイスまたはバックアップ記憶デバイスのいずれかであるとして識別するタグで、タグ付けすることができる。概して、フィルタリング用に任意のタイプのタグを使用することができる。さらにデバイスは、複数のタグを有することが可能であり、別々のサブネットワーク内のデバイスは、同じタグのうちの1つまたは複数を共有することができる。フィルタは、選択されたネットワーク内のデバイスによって利用されるインターネットプロトコル(IP)アドレスに、少なくとも部分的に基づくことも可能である。したがってある実施形態では、ユーザがコピーされることになるネットワークを選択した場合、ユーザは自分が選択されたネットワークに適用したい任意のフィルタを選択する404。
【0027】
さらに、ある実施形態では、選択されたネットワーク内の1つまたは複数のネットワークオブジェクトに対して所望の分解能を選択する機能406が、ユーザに提供される。ユーザによって選択された分解能を使用して、ネットワークのコピーがコピーされているネットワークといかに密接に合致すべきであるかを決定することができる。ユーザによって選択可能な分解能の特徴は、(図8および図9に関連してより詳細に説明されるような)コピーが浅いかまたは深いかなどの特徴、ネットワークオブジェクト上にインストールされたソフトウェア、ネットワークオブジェクトのメモリ(揮発性および/または不揮発性)、処理機能、ならびにプロセッサモデル、製造業者などの特定のハードウェアの特徴を含むことができる。例として、低分解能コピーに関心のあるユーザは、同じ様式でまとめてネットワーク化された同様のデバイスのコピーをユーザ自身が望む旨を指定することができる。高分解能コピーに関心のあるユーザは、あるデバイスがある量のメモリを有すべきである、特定のハードウェアデバイスを含むべきである、それらにインストールされた特定のソフトウェアを有すべきであるなどを、指定することができる。
【0028】
ある実施形態では、ユーザがコピー分解能を選択する場合、ユーザによって指定された分解能に従い、ユーザによって指定された任意のフィルタに従って、選択されたネットワークをコピーするようにユーザ自身が命令を送信することができる408。コピーされることになるネットワークがリモートコンピューティングサービスプロバイダによって動作される実施形態では、命令を送信することは、通信ネットワークを介して命令を送信するために、リモートコンピューティングサービスプロバイダによって提供されるウェブサービスを呼び出すことを含むことができる。命令を送信する他の方法は、様々な実施形態に従って使用可能である。
【0029】
図4は特定の順序で実行される様々なステップを示しているが、変形形態は本開示の範囲内にあるものとみなされる。たとえばある実施形態では、ネットワーク選択、フィルタ選択、およびコピー分解能選択は任意の順序で実行可能であり、1つまたは複数のステップは同時に実行可能である。他の変形形態は、本開示の範囲内にあるものとみなされる。
【0030】
図5は、ネットワークをコピーするためのプロセス500の例示を提供する。プロセス500は、図4に関連して示された実施形態に従って生成されたネットワークをコピーする旨の命令の受信に応答して実行することができる。ある実施形態では、コピー命令が受信される502。命令は、ネットワークの識別子、コピーされることになるコンピューティングデバイスのリスト、または任意の好適な様式などによって、コピーされることになるネットワークを識別することができる。コピー命令に応答して、ある実施形態では、ある実施形態に従ってネットワークのマッピングにアクセスされる504。ある実施形態では、ネットワークのマッピングは、1つまたは複数のファイル、またはコピーされることになるネットワークのコンピューティングデバイスが互いにどのように接続されるかを示す他の情報の集まりである。
【0031】
マッピングにアクセスされた場合、ある実施形態では、複製ネットワークに対して新しいマッピングが生成される。新しいマッピングは、ネットワークオブジェクトおよびそれらの互いの関係のリストなどの集まりを含むことができる。新しいマッピングの生成は、任意のユーザ選択フィルタおよび/または他の基準を元のマッピングに適用することによって達成可能である。新しいマッピングが生成されると、その新しいマッピングに従ってネットワークオブジェクトが作成される。ある実施形態では、フィルタまたは他の基準が適用されない場合など、新しいマッピングが生成されず、元のマッピングを使用して複製ネットワークを作成できることがある。ある実施形態では、新しいマッピングが生成された場合、以下でより詳細に説明されるように、新しいマッピングに従ってネットワークオブジェクトが作成される508。概して、ネットワーク内のネットワークオブジェクト間の関係に従って、コピーされているネットワークに対応するネットワークオブジェクトが作成される。
【0032】
図6は、ある実施形態に従って複製ネットワークへのアクセスを作成および提供するためのプロセス600の例示に関する流れ図である。プロセス600の一部は、図5に関連して上記で説明されたプロセス500の一部に対応するものとすることができる。ある実施形態では、前述の様式などでコピー命令が受信される602。ある実施形態に従って、ネットワーク構成データストアが検査され604、ネットワークオブジェクトツリーがフェッチされる606。ネットワーク構成データストアは、コピーされることになるネットワークのネットワークオブジェクトがリモートコンピューティングサービスプロバイダによって持続される、データストアとすることができる。ある実施形態では、ネットワークオブジェクトツリーは、ネットワークのオブジェクトおよびオブジェクト間の関係を含むグラフである。ツリーは任意の好適なノードをルートとすることができる。
【0033】
ネットワークオブジェクトツリーがフェッチされると606、ある実施形態では、いずれかのフィルタがネットワークオブジェクトツリーに適用されるかどうかが決定される608。フィルタがネットワークに適用されることが決定された場合、ネットワークオブジェクトリストを生成するために、ネットワークオブジェクトツリー内のオブジェクトにフィルタが適用される608。たとえばユーザが、複製ネットワークは1つまたは複数の特定のタグを備えるネットワークオブジェクトのみを有するべきであるものと指定した場合、その1つまたは複数のタグを有するオブジェクトが識別され、ネットワークオブジェクトのリスト(または他の集まり)に追加される。同様に、ユーザが、あるIPアドレスのみが複製ネットワーク内に含まれることになるよう指定した場合、こうしたネットワークオブジェクトのみがリストに追加される。概して、ユーザが指定する任意の基準が使用され、ある実施形態に従って、ネットワークオブジェクトのリストにどのオブジェクトが追加されるかが決定される。
【0034】
任意の適用可能フィルタが適用されるか、またはフィルタが適用されない場合、ある実施形態に従って、ネットワークオブジェクトの有向非巡回グラフ(DAG)が生成される612。ある実施形態では、ネットワークオブジェクトのDAGは、そのノードが複製ネットワークに関して作成されることになるネットワークオブジェクトであり、そのエッジが依存性に従って方向を有する、グラフである。DAGは接続されたグラフであっても、そうでなくてもよい。例としてある実施形態では、仮想コンピューティングインスタンス用のブロック記憶デバイスを作成せずに、仮想コンピューティングインスタンスを作成することはできない。したがってある実施形態では、ブロック記憶デバイスから記憶用にブロック記憶デバイスを利用する仮想コンピューティングインスタンスへのDAG内のエッジは、ブロック記憶デバイスを表すノードから仮想コンピューティングインスタンスへの方向を有することになる。本例示は例示の目的でDAGを使用するが、様々な実施形態に従って、ネットワークの複製に関するいずれのプランも使用可能である。
【0035】
DAGが構築されると、ある実施形態では、DAG内の第1のネットワークオブジェクトに関するコピー動作が呼び出される614。第1のネットワークオブジェクトは、いかなるエッジも向けられない任意のノードなどの、DAG内のノードによって表される任意の好適なネットワークオブジェクトとすることができる。ある実施形態では、コピー動作の呼出しはあるアクションを起こすことを含み、その結果、ネットワークオブジェクトのコピーが作成されることになる。したがって、コピー動作の呼出しは、ネットワークオブジェクトコピーに対する充分なコンピューティングリソースの割振りおよびそれに応じたリソースの構成を含むことができる。たとえばネットワークオブジェクトが仮想データ記憶ボリュームである場合、1つまたは複数の物理記憶デバイスをボリュームに割り振ることが可能であり、物理記憶デバイスはボリュームを処理するように構成可能である。複数の物理記憶デバイスが同じ仮想ボリュームを処理する場合、複数の物理記憶デバイスを処理するサーバは同様に割振りおよび構成されることが可能である。概して、任意のコンピューティングリソースを好適な様式で割り振り、構成することができる。
【0036】
DAG内の第1のネットワークオブジェクトに対するコピー動作が呼び出されると、コピーされることになる他のオブジェクトが残っているかどうかが決定される616。コピーされることになるオブジェクトが残っている場合、DAGは他のノードへとトラバースされ、DAG内の次のネットワークオブジェクトに対するコピー動作が呼び出される618。このDAGをトラバースするプロセスおよびコピーされることになる他のオブジェクトが残っているかどうかの決定は、DAGが完全にトラバースされるまで続行可能である。DAGが完全にトラバースされた場合、ある実施形態では、ある実施形態に従ってコピーされたオブジェクトからなる複製ネットワークへのアクセスが提供される620。複製ネットワークへのアクセスの提供は、顧客の1人または複数のユーザに、ネットワークの動作を指示するため、ネットワークを構成するため、またはその他の方法でウェブサービスを使用してネットワークにアクセスするためなどの機能を提供することを、含むことができる。
【0037】
図7は、ある実施形態に従ってネットワークオブジェクトをコピーするためのプロセス700の例示を示す。プロセス700は、たとえば図6に関連して説明されたコピー動作の呼出し時に実行可能である。ある実施形態では、オブジェクトがコピーされる場合、ある実施形態に従ってオブジェクトタイプが識別される702。オブジェクトタイプは、ネットワーク環境内で使用可能な様々なオブジェクトタイプのうちの1つとすることができる。例には、マシン、記憶デバイス、ルータ、スイッチ、ファイアウォールなどが含まれる。ある実施形態では、オブジェクトタイプが識別されると、オブジェクトがステートレス(stateless)であるかどうかが決定される704。オブジェクトがネットワーク内で動作する際にその構成が変化しないオブジェクトの場合、そのオブジェクトはステートレスとすることができる。受信した各要求をいずれの以前の要求にも依存せず無関係であるものとして扱うサーバは、ステートレスオブジェクトとすることができる。同様に、その構成が変化しないスイッチもステートレスとすることができる。ある実施形態では、ステートレスでないオブジェクトはステートフル(stateful)であり、すなわちそれらの構成は動作中に変化する。その動作がネットワーク内で起こされた以前のアクションに依存するサーバは、たとえばステートレスではない。同様に、データが書込みおよび/または削除されるとその構成が変化する記憶ボリュームは、ステートレスではない。
【0038】
オブジェクトがステートレスの場合、複製オブジェクトは即時に作成可能である706。たとえば、オブジェクトをエミュレートするように、オブジェクトに関してリソースを提供および構成することができる。しかしながら、オブジェクトがステートレスでない場合、オブジェクトをコピーするためにより複雑なプロセスが必要な場合がある。たとえば、コピータイプに関する決定を実行することができる708。ある実施形態では、コピーは浅いかまたは深いという2つのタイプのうちの1つとすることが可能であるが、他のタイプのコピーも実行可能である。オブジェクトの浅いコピーとは、ある実施形態では、元のオブジェクトの少なくとも初期には不完全なコピーであるオブジェクトである。レイジー(lazy)コピーとは、浅いコピーの一種である。浅いコピーの場合、オブジェクトコピーの状態に関する情報は、その情報が元のオブジェクトの動作によって変更されることになるまで、元のオブジェクトから入手可能であり、その時点で変更される前に情報をオブジェクトコピーにコピーすることができる。その一例が、記憶ボリュームのコピーオンライト(COW)オーバレイである。COWオーバレイが開始された場合、データのブロックに関する書込み動作が要求されるまで、COWオーバレイに関するデータのブロックを元の記憶ボリューム内に記憶することができる。データのブロックに関する書込み動作が要求された場合、ブロックはCOWオーバレイにコピーされた後、元の記憶ボリュームに対して実行される。このように、即時および初期に使用可能なコピーを作成することができる。仮想マシンなどの任意のステートフルオブジェクト、概して、動作中にその状態が変化する任意のオブジェクトに対して、同様のタイプのコピーが作成可能である。
【0039】
これに対して、深いコピーは、コピーが作成されるとコピーの動作中に元のオブジェクトを参照する必要がないような、オブジェクトの完全なコピーとすることができる。例として、記憶ボリュームの深いコピーは、コピーが作成される前に元のボリューム内に記憶されたいずれのデータにもコピーを介してアクセス可能なように、記憶ボリューム内のすべてのデータを新しいボリューム内に確実にコピーすることによって作成可能である。仮想マシンおよび他のステートフルオブジェクトの深いコピーも作成可能である。このようにして、コピーは元のオブジェクトから完全に独立できることになる。
【0040】
ある実施形態では、コピータイプが浅いコピーであるものと決定された場合、オブジェクトは休止される710。オブジェクトが休止されると、オブジェクトオーバレイが複製オブジェクトとして作成され712、元のオブジェクトの動作が再開される714。しかしながら、コピーが深いコピーであるものと決定された場合、オブジェクトの深いコピーが適宜作成される。たとえばオブジェクトが休止され716、オブジェクトのメモリ状態をコピーすることが可能である718。ある実施形態では、コピーされたメモリ状態は、複製オブジェクトを作成するために使用され720、元のオブジェクトの動作が再開される722。
【0041】
図8および図9は、様々な実施形態に従って、それぞれネットワークオブジェクトの浅いコピーおよび深いコピーをどのように作成するかの例示を提供する。図8から見ると、この図はタイムラインおよびタイムラインに関するオブジェクトの状態を示している。ネットワークオブジェクト802は、通常の動作過程において動作され、オブジェクトがその一部であるネットワークを複製する要求が受信される。ある実施形態では、ネットワークの複製は前述の様式などで進行する。ネットワーク複製中のある時点で、ネットワークオブジェクト802は休止される。休止されたネットワークオブジェクト804のオーバレイが宣言され、休止されたネットワークオブジェクト804が再開される。図に示されるように、ネットワークオブジェクトが再開される場合、ネットワークオブジェクトおよびネットワークオブジェクトオーバレイの両方が共通の状態、すなわち休止されたネットワークオブジェクトの状態から進行する。ネットワークオブジェクトオーバレイの動作が、ネットワーク複製に先立ってネットワークオブジェクトの状態に関する情報を必要とする場合、こうした情報は休止されたネットワークオブジェクトの状態の記憶から取得可能である。同様に、ネットワークオブジェクトオーバレイがCOWオーバレイである場合など、またはネットワークトラフィックが比較的軽い時間中などの別の都合の良い時間に、必要に応じてデータをネットワークオブジェクトオーバレイに書き込むことが可能である。
【0042】
図9に進むと、この図も同様に、タイムラインおよびタイムラインに関するオブジェクトの状態を示している。ネットワークオブジェクト902は、通常の動作過程において動作され、オブジェクトがその一部であるネットワークを複製する要求が受信される。ある実施形態では、ネットワークの複製は前述の様式などで進行する。ネットワーク複製中のある時点で、ネットワークオブジェクト902は休止される。休止されたネットワークオブジェクト904に関する情報が、休止されたネットワークオブジェクトのコピー906を生成するためにコピーされる。たとえば、休止されたネットワークオブジェクト904の状態に関するすべての情報を複製し、別の位置に記憶することができる。ネットワークオブジェクト902が仮想記憶ボリュームである例では、仮想記憶ボリューム内に記憶された情報は、仮想記憶ボリュームを記憶するために使用された1つもしくは複数の物理記憶デバイスとは異なる1つもしくは複数の物理記憶デバイスに、または1つもしくは複数の同じ記憶デバイス上の少なくとも異なる位置に、コピーすることができる。ある実施形態では、休止されたネットワークオブジェクトのコピーが作成されると、休止されたネットワークオブジェクト904は再開される。その後、ネットワークオブジェクトおよびネットワークオブジェクトのコピーは、別々かつ独立に進行する。
【0043】
図8および図9は、それぞれ浅いコピーおよび深いコピーが作成可能な様式の例を示しているが、他の方法も使用可能である。例として、オブジェクトの状態を元のオブジェクトおよび複製オブジェクトの両方に対する基本として使用することができる。言い換えれば、コピーされたオブジェクトは、コピー後、前述のように必要に応じてコピー時点でのオブジェクトの状態に関する記憶された情報を参照しながら、複製オブジェクトが動作するのと同様に動作可能である。別の例として、コピーが作成される場合、データの整合性を保証するために充分な注意が払われていれば、ネットワークオブジェクトを休止する必要のない技法が使用可能である。たとえば、複製プロセス中のネットワークオブジェクトに対する変更を記録および反映するための注意が払われている場合、休止は不要な可能性がある。概して、浅いか深いかにかかわらず、ネットワークオブジェクトをコピーするためのいずれの技法も、本開示の様々な実施形態に従って使用可能である。
【0044】
図10は、本開示の様々な実施形態を活用するために使用可能なプロセス1000の例を示している。たとえばプロセス1000は、ネットワーク上で生じる様々なイベントを調査するために討論上で使用することができる。ある実施形態では、ネットワークイベントは記録される1002。ネットワークイベントは、デバイス間での情報の転送、APIを使用して行われる管理上の変更を含むネットワークに対する管理上の変更、ネットワーク自動スケーリングイベント、読取り、書込み、または削除動作などのデータセット上での動作などを含むが、これらに限定されない、ネットワークに関連して発生する任意のイベントとすることができる。ネットワークイベントの記録は、イベントが少なくとも部分的に再構築可能なように、イベントに対応する情報を記録することを含むことができる。イベントは様々な方法で記録可能である。たとえばある実施形態では、リモートコンピューティングサービスプロバイダの顧客は、API呼出しによって決定されるように、様々な方法で顧客のネットワークに影響を与えるAPI呼出しを実行することができる。これらの顧客開始API呼出し(または概して、コピーされているネットワークに影響を与える任意のAPI呼出し)を記録することができる。別の例として、前述の特許文献1に記載されている実施形態に関連して使用される本開示の実施形態は、ネットワークを通じて移動するパケットを記録することが可能な1つまたは複数のシステムを通じてネットワーク通信をルーティングすること、ならびにパケットに関する情報をルーティングすることを含むことができる。図10は、プロセス1000における個別のステップとしてネットワークイベントを記録することを示しているが、記録すること(概して、様々な開示されたプロセスおよびそれらの変形形態の他のアクション)は、他のアクションの実行中に連続して、および/または例示された順序とは異なる順序で、実行可能である。
【0045】
ある実施形態では、特定のネットワークイベントが検出される。たとえばネットワーク管理者は、ネットワークが毎日同時刻などの一定の時間に明らかに異常に挙動することを通知することができる。1つまたは複数のアプリケーションは、著しく長い待ち時間、多量のトラフィックボリューム、またはネットワーク内の1つもしくは複数のデバイスの性能に関する他の特徴などの、ネットワーク性能における1つまたは複数の異常を検出することができる。検出可能な他のネットワークイベントは、自動スケーリングイベント、デバイス誤動作などを含む。概して、任意のタイプの特定のネットワークイベント、またはイベントの組合せを検出する、任意の方法が使用可能である。特定のネットワークイベントが検出された場合、ある実施形態に従って複製ネットワークを作成することができる1006。たとえばネットワーク管理者は、ネットワーク管理コンソールのインターフェースを使用して、ネットワークを複製する旨の要求を提出することができる。複製ネットワークは、要求に応答して作成可能である1006。ネットワークの複製は、前述のように実行可能であり、要求によって指定される様々なコピータイプ、分解能、および他の基準を考慮に入れることができる。複製ネットワークは、元のネットワークにおけるすべてのオブジェクトを含むこと、または異なる量を有することが可能である。
【0046】
ある実施形態では、複製ネットワークが作成される場合、イベントの分析を可能にするために複製ネットワーク上で1回または複数回、記録されたネットワークイベントをリプレイすることができる1008。たとえばイベントは、検出されたネットワークイベントの原因を識別するために、または単にネットワーク機能をさらに理解するために、複製ネットワーク上でリプレイおよび記録することができる。このように、元のネットワークが通常の動作を続行できるように、ネットワーク動作に関する分析を複製ネットワーク上で実行することができる。言い換えれば、元のネットワークが通常の動作を実行できるようにしながら、複製ネットワークを分析に使用することが可能であり、それによってネットワーク性能に対する支障を最小限にしながらのネットワーク分析が可能となる。
【0047】
図11は、本開示の様々な実施形態を活用するために使用可能な別のプロセス1100を示す。たとえばプロセス1100を使用して、ある変更が行われた場合にネットワークがどのように動作することになるかを、実際に変更が行われる前にネットワーク管理者が研究することができる。ある実施形態では、ネットワークを複製する旨の命令が受信される1102。ネットワークを複製する旨の命令は、上記の説明に従って受信可能である。ネットワークを複製する旨の命令が受信された場合、前述のような様式で複製ネットワークが作成される1104。
【0048】
複製ネットワークを用いると、ネットワーク管理者または他のユーザは様々な目的で複製ネットワークを修正することができる1106。たとえば複製ネットワークの修正は、ネットワーク内でのデバイスの再構成、ネットワークへのデバイスの追加および/またはネットワークからのデバイスの除去、ネットワークの様々なデバイス間の帯域幅の増加などを含むことができる。ある実施形態では、複製ネットワークの修正時に、修正された複製ネットワークを使用することができる。たとえば修正された複製ネットワークは、様々なストレス下でネットワークがどのように応答できるかのシミュレーション1108に使用可能である。たとえばユーザは、ネットワークにストレスを与えるためにネットワーク内の様々なデバイスに要求を送信し、修正された複製ネットワークがどのようにそのストレスに対処できるかを測定することが可能である。たとえばユーザは、ネットワークにストレスを与えて、修正された複製ネットワークが、追加のストレスに対処するために修正された複製ネットワークの1つまたは複数の部分を自動スケーリングするかどうかを決定することができる。概してユーザは、修正された複製ネットワークに対して様々な負荷を生成させることができる。負荷は、情報にアクセスすること、情報を記憶すること、1つまたは複数のデータストアに記憶された情報を修正すること、実行されることになる計算を実行することなどの要求、サーバへの複数の同時接続、ならびに概してネットワークによって実行可能な任意のアクションを含むことができる。
【0049】
さらに、図10および図11に関連して説明されるプロセスの一部と本明細書で説明される他のプロセスの一部を組み合わせることも可能である。たとえばネットワークイベントを記録した後、実行されたいずれかの修正がネットワーク性能を向上させたかどうかを決定できるように、修正された複製ネットワーク上でのシミュレーションに使用することが可能である。本開示の趣旨の範囲内にあるものとする他の変形形態も企図される。
【0050】
条項
第1条
ネットワーク複製のためのコンピュータ実装方法であって、
実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御の下で、
顧客によってリモートに提供される命令に少なくとも部分的に基づいて、第1のネットワークを動作することであり、第1のネットワークが1つまたは複数の物理ネットワークをオーバレイする構成内に複数の仮想ネットワークデバイスを含む、動作すること、
顧客から第1のネットワークを複製する旨のウェブサービス要求を受信すること、
ウェブサービス要求に応答して、
第1のネットワークに関する構成情報をデータストアから取り出すこと、
取り出された構成情報からネットワーク複製プランを生成すること、
ネットワーク複製プランに従って複数の仮想複製デバイスを作成することであり、それぞれの仮想複製デバイスが第1のネットワークのデバイスに対応する、作成すること、
ネットワーク複製プランに従って、第1のネットワークが1つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で1つまたは複数の物理ネットワークをオーバレイする複製ネットワーク内で、作成された仮想複製デバイスを構成すること、および
顧客によってリモートに提供される命令に少なくとも部分的に基づいて、複製ネットワークを動作すること、
を含む、コンピュータ実装方法。
【0051】
第2条
第1のネットワークが、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された1つまたは複数のデバイスを含む、第1条に記載のコンピュータ実装方法。
【0052】
第3条
仮想複製デバイスのうちの1つまたは複数が、第1のネットワークの1つまたは複数の対応するデバイスによって使用される1つまたは複数の記憶された状態表示から依存して動作する、第1条に記載のコンピュータ実装方法。
【0053】
第4条
仮想複製デバイスのうちの1つまたは複数が、第1のネットワークの対応するデバイスの完全なコピーである、第1条に記載のコンピュータ実装方法。
【0054】
第5条
第1のネットワークがより大きなネットワークのサブネットワークであり、第1のネットワークを複製する旨の要求を受信することが1つまたは複数のフィルタリング基準を受信することを含み、方法が第1のネットワークを決定するためにより大きなネットワークに対して1つまたは複数のフィルタリング基準を適用することをさらに含む、第1条に記載のコンピュータ実装方法。
【0055】
第6条
第1のネットワークの仮想ネットワークデバイスのうちの少なくとも1つがテンプレートを使用して作成されたものであり、複数の仮想複製デバイスを作成することが、仮想ネットワークデバイスのうちの当該少なくとも1つに対応する少なくとも1つの仮想複製デバイスを作成するためにテンプレートを使用することを含む、第1条に記載のコンピュータ実装方法。
【0056】
第7条
ネットワーク複製のためのコンピュータ実装方法であって、
実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御の下で、
1つまたは複数の仮想デバイスを含み、1つまたは複数の物理ネットワークをオーバレイする、第1のネットワークを複製する旨の要求を受信すること、
要求の受信に応答して、それぞれが第1のネットワーク内のデバイスに対応する複数の仮想複製デバイスを作成すること、および第1のネットワークが1つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で、1つまたは複数の物理ネットワークをオーバレイするように複製ネットワーク内に作成された仮想複製デバイスを配置すること、ならびに
複製ネットワークへのアクセスを提供すること、
を含む、コンピュータ実装方法。
【0057】
第8条
複製ネットワークへのアクセスを提供することが、
複製ネットワークのテストを実行するための命令を受信すること、
複製ネットワークのテストを実行すること、および
テストの結果を提供すること、
を含む、第7条に記載のコンピュータ実装方法。
【0058】
第9条
第1のネットワークに関する1つまたは複数のネットワークイベントを記録することをさらに含み、
複製ネットワークへのアクセスを提供することが、記録された1つまたは複数のネットワークイベントを複製ネットワーク上で発生させることを含む、
第7条に記載のコンピュータ実装方法。
【0059】
第10条
1つまたは複数のネットワークイベントを記録することが第1のネットワークに影響を与える1つまたは複数のAPI呼出しを記録することを含み、記録された1つまたは複数のネットワークイベントを複製ネットワーク上で発生させることが、1つまたは複数のAPI呼出しを複製ネットワークに関連して実行させることを含む、第9条に記載のコンピュータ実装方法。
【0060】
第11条
複製ネットワークへのアクセスを提供することが、
複製ネットワークを修正すること、および
修正された複製ネットワーク上でテストを実行すること
を含む、第7条に記載のコンピュータ実装方法。
【0061】
第12条
複製ネットワークを修正することが、
複製ネットワークのうちの少なくとも1つのデバイスの容量を変更すること、複製ネットワークに対してパケット損失の変化を発生させること、複製ネットワークにおける障害率の変化を発生させること、および1つまたは複数の仮想複製デバイスを、置換される1つまたは複数の仮想複製デバイスとは異なるように実行する別の仮想複製デバイスに置換すること、のうちの少なくとも1つを含む、第11条に記載のコンピュータ実装方法。
【0062】
第13条
第1のネットワークの仮想ネットワークデバイスのうちの少なくとも1つがテンプレートを使用して作成されたものであり、複数の仮想複製デバイスを作成することが、仮想ネットワークデバイスのうちの当該少なくとも1つに対応する少なくとも1つの仮想複製デバイスを作成するためにテンプレートを使用することを含む、第7条に記載のコンピュータ実装方法。
【0063】
第14条
複数のデバイスを作成することが、
第1のネットワークの特定のデバイスについて、特定のデバイスがステートフルデバイスであるかどうかを識別すること、および
特定のデバイスがステートフルデバイスであるものと決定された場合、特定のデバイスによって使用される1つまたは複数の記憶された状態表示から依存して動作する特定のデバイスのコピーを作成すること、
を含む、第7条に記載のコンピュータ実装方法。
【0064】
第15条
1つまたは複数のコンピュータ読取り可能記憶媒体であって、1つまたは複数のコンピュータシステムによって実行された場合、少なくとも
1つまたは複数の仮想デバイスを含み、1つまたは複数の物理ネットワークをオーバレイする、第1のネットワークを複製する旨の要求を受信すること、
要求の受信に応答して、第1のネットワークと整合するトポロジを使用して1つまたは複数の物理ネットワークをオーバレイし、それぞれが第1のネットワークの1つまたは複数の仮想デバイスのうちの1つに対応する1つまたは複数の仮想複製デバイスを含む、複製ネットワークを作成すること、および
複製ネットワークへのアクセスを提供すること、
を1つまたは複数のコンピュータシステムにまとめて実行させる命令が、その上にまとめて記憶された、1つまたは複数のコンピュータ読取り可能記憶媒体。
【0065】
第16条
複製ネットワークへのアクセスを提供することが、
複製ネットワークのテストを実行するための命令を受信すること、
複製ネットワークのテストを実行すること、および
テストの結果を提供すること、
を含む、第15条に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
【0066】
第17条
命令が、少なくとも
第1のネットワークに関する1つまたは複数のネットワークイベントを記録することを、さらに1つまたは複数のコンピュータシステムにまとめて実行させ、
複製ネットワークへのアクセスを提供することが、記録された1つまたは複数のネットワークイベントを複製ネットワーク上で発生させることを含む、
第15条に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
【0067】
第18条
複製ネットワークを作成することが、第1のネットワークの1つまたは複数の仮想デバイスのセットの識別子と同一の識別子を有するように、少なくとも複製仮想デバイスのサブセットを構成することを含む、第15条に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
【0068】
第19条
識別子がインターネットプロトコルアドレスである、第15条に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
【0069】
第20条
ネットワークを複製するように動作可能なコンピュータシステムであって、
1つまたは複数のプロセッサと、
1つまたは複数のプロセッサによって実行された場合、少なくとも、
1つまたは複数の仮想デバイスを含み、1つまたは複数の物理ネットワークをオーバレイする、第1のネットワークを複製する旨の要求を受信すること、
要求の受信に応答して、それぞれが第1のネットワーク内のデバイスに対応する複数の仮想複製デバイスを作成すること、および第1のネットワークが1つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で、1つまたは複数の物理ネットワークをオーバレイするように仮想複製ネットワーク内に作成されたデバイスを配置すること、ならびに
複製ネットワークへのアクセスを提供すること、
をコンピュータシステムに実行させる実行可能命令を含む、メモリと、
を備える、コンピュータシステム。
【0070】
第21条
少なくとも作成された複数の仮想複製デバイスのサブセットが、第1のネットワーク内のデバイスのコピーオンライトオーバレイである、第20条に記載のコンピュータシステム。
【0071】
第22条
複製ネットワークへのアクセスを提供することが、
複製ネットワークのテストを実行するための命令を受信すること、
複製ネットワークのテストを実行すること、および
テストの結果を提供すること、
を含む、第20条に記載のコンピュータシステム。
【0072】
第23条
テストを実行するのに先立ち、複製ネットワークを修正することをさらに含む、第22条に記載のコンピュータシステム。
【0073】
第24条
第1のネットワークが、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された1つまたは複数のデバイスを含む、第20条に記載のコンピュータシステム。
【0074】
第25条
ネットワーク複製のコンピュータ実装方法であって、
実行可能命令によって構成される1つまたは複数のコンピュータシステムの制御の下で、
1つまたは複数の物理ネットワークをオーバレイする第1のネットワークを複製する旨の要求を受信すること、ならびに
要求の受信に応答して、
複数の仮想デバイスを作成すること、および複数の仮想デバイスが、第1のネットワークが1つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で1つまたは複数の物理ネットワークをオーバレイするような様式で、互いに通信可能に接続されるように、仮想ネットワーク内に複数のデバイスを構成すること
を含み、複数のデバイスが、第1のネットワークの1つまたは複数のデバイスに対応する1つまたは複数の仮想デバイスを含む、コンピュータ実装方法。
【0075】
第26条
要求を受信することが、第1のネットワークの1つまたは複数のデバイスに対する忠実度を指定する情報を受信することを含み、
新しい仮想ネットワークを作成することが、指定された忠実度に従って1つまたは複数の複製仮想デバイスを作成することを含む、
第25条に記載のコンピュータ実装方法。
【0076】
第27条
要求がユーザからリモートに受信され、
複数の仮想デバイスを作成することが、1人または複数の他のユーザのための1つまたは複数の他のネットワークが内部で動作される設備内で実行される、
第25条に記載のコンピュータ実装方法。
【0077】
第28条
第1のネットワークを複製する旨の要求を受信することが1つまたは複数のフィルタリング基準を受信することを含み、方法が当該少なくとも第1のネットワークのサブセットを決定するためにより大きなネットワークに対して1つまたは複数のフィルタリング基準を適用することをさらに含む、第25条に記載のコンピュータ実装方法。
【0078】
第29条
第1のネットワークが仮想オーバレイネットワークである、第25条に記載のコンピュータ実装方法。
【0079】
様々な実施形態は、いくつかの場合、1つまたは複数のユーザコンピュータ、コンピューティングデバイス、またはいくつかのアプリケーションのうちのいずれかを動作するように使用可能な処理デバイスを含むことが可能な、多種多様な動作環境内でさらに実装可能である。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどのいくつかの汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行し、いくつかのネットワーキングプロトコルおよびメッセージングプロトコルをサポートすることが可能な、セルラ式、無線、およびハンドヘルドのデバイスのうちのいずれかを含むことができる。こうしたシステムは、開発およびデータベース管理などの目的で様々の市販のオペレーティングシステムおよび他の知られたアプリケーションのいずれかを実行する、いくつかのワークステーションを含むことも可能である。これらのデバイスは、ダミー端末、シンクライアント(thin−client)、ゲームシステム、およびネットワークを介して通信可能な他のデバイスなどの、他の電子デバイスを含むことも可能である。
【0080】
ほとんどの実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalkなどの、様々な市販のプロトコルのいずれかを使用する通信をサポートするための、当業者によく知られた少なくとも1つのネットワークを利用する。たとえばネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想私設ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそれらの任意の組合せとすることができる。
【0081】
ウェブサーバを利用する実施形態では、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Java(登録商標)サーバ、およびビジネスアプリケーションサーバを含む、様々なサーバまたは中間層アプリケーションのいずれかを実行することができる。サーバは、Java(登録商標)(R)、C、C#、もしくはC++などの任意のプログラミング言語、またはPerl、Python、もしくはTCLなどの任意のスクリプト言語、ならびにそれらの組合せで作成された、1つまたは複数のスクリプトまたはプログラムとして実装可能な、1つまたは複数のウェブアプリケーションを実行することなどにより、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行することも可能である。サーバは、Oracle(R)、Microsoft(R)、Sybase(R)、およびIBM(R)から市販されているものを限定なしに含む、データベースサーバを含むことも可能である。
【0082】
環境は、前述のように、多様なデータストアならびに他のメモリおよび記憶媒体を含むことができる。これらは、1つまたは複数のコンピュータに対してローカルな(および/または内部に常駐した)、あるいはネットワーク全体にわたってコンピュータのいずれかまたはすべてからリモートの、記憶媒体上などの、様々な位置に常駐可能である。実施形態の特定のセットでは、情報は当業者によく知られたストレージエリアネットワーク(「SAN」)内に常駐可能である。同様に、コンピュータ、サーバ、または他のネットワークデバイスに寄与する機能を実行するために必要な任意のファイルは、適宜、ローカルおよび/またはリモートに記憶可能である。システムがコンピュータ化されたデバイスを含む場合、それぞれのこうしたデバイスは、バスを介して電気的に結合可能なハードウェア要素を含むことが可能であり、この要素は、たとえば少なくとも1つの中央処理ユニット(CPU)、少なくとも1つの入力デバイス(たとえばマウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、および少なくとも1つの出力デバイス(たとえばディスプレイデバイス、プリンタ、またはスピーカ)を含む。こうしたシステムは、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ(「RAM」)または読取り専用メモリ(「ROM」」などのソリッドステート記憶デバイスなどの、1つまたは複数の記憶デバイス、ならびに取外し可能媒体デバイス、メモリカード、フラッシュカードなどを含むことも可能である。
【0083】
こうしたデバイスは、前述のように、コンピュータ読取り可能記憶媒体リーダ、通信デバイス(たとえばモデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)、および作業メモリを含むことも可能である。コンピュータ読取り可能記憶媒体リーダは、リモート、ローカル、固定、および/または取外し可能の記憶デバイスを表す、コンピュータ読取り可能記憶媒体、ならびにコンピュータ読取り可能情報を一時的および/またはより永続的に含む、記憶する、伝送する、および取り出すための記憶媒体に、接続するか、またはそれらを受け取るように構成可能である。システムおよび様々なデバイスは、典型的には、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステムおよびアプリケーションプログラムを含む、少なくとも1つの作業メモリデバイス内に配置された、いくつかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含むことにもなる。代替的な実施形態は、上記からの多数の変形形態を有することが可能であることを理解されたい。たとえば、ハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、またはその両方内で、カスタマイズされたハードウェアを使用すること、および/または特定の要素を実装することも可能である。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続も採用可能である。
【0084】
コードまたはコードの一部を含めるための記憶媒体およびコンピュータ読取り可能媒体は、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶デバイスを含む、コンピュータ読取り可能命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の、記憶および/または伝送用の任意の方法または技術で実装された、揮発性および不揮発性媒体、取外し可能および取外し不能媒体などであるがこれらに限定されない記憶媒体および通信媒体、あるいは所望の情報を記憶するために使用可能な、かつシステムデバイスによるアクセスが可能な、任意の他の媒体を含む、当分野で知られているかまたは使用されている任意の適切な媒体を含むことができる。当業者であれば、本明細書で提供された開示および教示に基づき、様々な実施形態を実装するための他の手段および/または方法を理解されよう。
【0085】
したがって本明細書および図面は、限定的ではなく例示的な意味であるとみなされる。しかしながら、特許請求の範囲に示された本発明のより広義な趣旨および範囲から逸脱することなく、本明細書および図面に対する様々な修正および変更が実行可能であることは明白であろう。
【0086】
他の変形形態は本開示の趣旨の範囲内にある。したがって、開示された技法は様々な修正形態および代替の構成が可能であるが、そのうちのある例示の実施形態が図面に示されており、上記で詳細に説明された。しかしながら、本発明を開示された特定の形式に限定することは意図されておらず、反対に、添付の特許請求の範囲に定義された本発明の趣旨および範囲内にあるすべての修正形態、代替の構成、および等価物をカバーするよう意図されていることを理解されたい。
【0087】
開示された実施形態を記述する文脈での(特に以下の特許請求の範囲の文脈での)の用語「a」および「an」および「the」および同様の指示対象の使用は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、単数形および複数形の両方をカバーするものと解釈されるものである。用語「comprising(備える、含む)」、「having(有する)」、「including(含む)」、および「containing(含む、含める)」は、別段に記載されていない限り、オープンエンドの(すなわち「含むが限定されない」ことを意味する)用語として解釈されるものである。用語「接続された」は、たとえ何らかの介入が存在していても、部分的または全体的に含まれる、接続される、または互いに接合されるとして解釈されるものである。本明細書での値の範囲の列挙は、本明細書で別段に指示されていない限り、範囲内にあるそれぞれ別の値を個別に指す省略方法として働くことが単に意図されており、それぞれ別の値は、あたかも本明細書で個別に列挙されているかのように本明細書に組み込まれている。本明細書に記載されたすべての方法は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、任意の好適な順序で実行可能である。本明細書で提供された任意およびすべての例または例示の言い回し(たとえば「などの」)は、本発明の実施形態を単により良く明らかにすることが意図されており、別段に請求されていない限り、本発明の範囲に限定を課すものではない。本明細書内のいかなる言い回しも、本発明の実施に不可欠ないずれかの非請求要素を示すものと解釈されるべきではない。
【0088】
本明細書では、本発明を実施するための発明者等に知られた最良の方法を含む、本開示の好ましい実施形態が記述されている。当業者であれば、前述の説明を読むことでそれらの好ましい実施形態の変形形態が明らかとなろう。発明者等は、こうした変形形態が適切であれば当業者等が採用するものと予期し、発明者等は、本明細書で具体的に記載された以外の方法で本発明が実施されることを意図している。したがって本発明は、適用可能な法律によって許可された場合、添付の特許請求の範囲に記載された対象のすべての修正形態および等価物を含む。さらに、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、すべての可能な変形形態における前述の要素の任意の組合せが本発明によって包含される。
【0089】
本明細書に記載された出版物、特許出願、および特許を含むすべての参照文献は、それぞれの参照文献が個別および具体的に参照により組み込まれるものと示され、さらにその全文が本明細書に示されるのと同程度に、参照により本書に組み込まれている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11