(57)【特許請求の範囲】
【請求項１】
ネットワーク複製のためのコンピュータにより実行される方法であって、
実行可能命令で構成された１または複数のコンピュータシステムの制御の下、
顧客によってリモートに提供される命令に少なくとも部分的に基づいて、第１のネットワークを動作させるステップであって、前記第１のネットワークは、１または複数の物理ネットワークをオーバレイする構成において、複数の仮想ネットワークデバイスを含む、ステップと、
前記顧客から、前記第１のネットワークを複製するウェブサービス要求を受信するステップと、
前記ウェブサービス要求に応答して、
前記第１のネットワークに関する構成情報を、データストアから取り出すステップと、
前記取り出された構成情報から、ネットワーク複製プランを生成するステップと、
前記ネットワーク複製プランに従って、複数の仮想複製デバイスを作成するステップであって、前記仮想複製デバイスの各々は、前記第１のネットワークのデバイスに対応する、ステップと、
前記ネットワーク複製プランに従って、前記第１のネットワークが前記１または複数の物理ネットワークをオーバレイする方式と同様の形式で、前記１または複数の物理ネットワークをオーバレイする複製ネットワークにおいて、前記作成された仮想複製デバイスを構成するステップと、
前記顧客によってリモートに提供される命令に少なくとも部分的に基づいて、前記複製ネットワークを動作させるステップと
を備えたことを特徴とする方法。
【請求項２】
前記第１のネットワークは、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された１または複数のデバイスを含んでいることを特徴とする請求項１に記載の方法。
【請求項３】
前記仮想複製デバイスの１または複数は、前記第１のネットワークの１または複数の対応するデバイスによって使用される１または複数の記憶された状態表示に依存して動作することを特徴とする請求項１に記載の方法。
【請求項４】
前記仮想複製デバイスの１または複数は、前記第１のネットワークの対応するデバイスの完全な複製であることを特徴とする請求項１に記載の方法。
【請求項５】
前記第１のネットワークは、より大規模なネットワークのサブネットワークであり、前記第１のネットワークを複製する前記要求を受信するステップは、１または複数のフィルタリング基準を受信することを含み、前記方法は、前記１または複数のフィルタリング基準を、前記より大規模なネットワークに適用して、前記第１のネットワークを判定するステップをさらに備えていることを特徴とする請求項１に記載の方法。
【請求項６】
前記第１のネットワークの前記仮想ネットワークデバイスの少なくとも１つは、テンプレートを使用して作成されたものであり、および、前記複数の仮想複製デバイスを作成するステップは、前記テンプレートを使用して、前記仮想ネットワークデバイスの前記少なくとも１つに対応する少なくとも１つの仮想複製デバイスを作成することを含んでいることを特徴とする請求項１に記載の方法。
【請求項７】
ネットワーク複製するように動作可能なコンピュータシステムであって、
１または複数のプロセッサと、
実行可能命令を含むメモリと
を備え、前記実行可能命令は前記１または複数のプロセッサにより実行されると、前記コンピュータシステムに
顧客によってリモートに提供される命令に少なくとも部分的に基づいて、第１のネットワークを動作させることであって、前記第１のネットワークは、１または複数の物理ネットワークをオーバレイする構成において、複数の仮想ネットワークデバイスを含む、ことと、
前記顧客から、前記第１のネットワークを複製するウェブサービス要求を受信することと、
前記ウェブサービス要求に応答して、
前記第１のネットワークに関する構成情報を、データストアから取り出すことと、
前記取り出された構成情報から、ネットワーク複製プランを生成することと、
前記ネットワーク複製プランに従って、複数の仮想複製デバイスを作成することであって、前記仮想複製デバイスの各々は、前記第１のネットワークのデバイスに対応する、ことと、
前記ネットワーク複製プランに従って、前記第１のネットワークが前記１または複数の物理ネットワークをオーバレイする方式と同様の形式で、前記１または複数の物理ネットワークをオーバレイする複製ネットワークにおいて、前記作成された仮想複製デバイスを構成することと、
前記顧客によってリモートに提供される命令に少なくとも部分的に基づいて、前記複製ネットワークを動作させることと
を行わせることを特徴とするコンピュータシステム。
【請求項８】
前記第１のネットワークは、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された１または複数のデバイスを含んでいることを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
前記仮想複製デバイスの１または複数は、前記第１のネットワークの１または複数の対応するデバイスによって使用される１または複数の記憶された状態表示に依存して動作することを特徴とする請求項７に記載のコンピュータシステム。
【請求項１０】
前記仮想複製デバイスの１または複数は、前記第１のネットワークの対応するデバイスの完全な複製であることを特徴とする請求項７に記載のコンピュータシステム。
【請求項１１】
前記第１のネットワークは、より大規模なネットワークのサブネットワークであり、前記第１のネットワークを複製する前記要求を受信することは、１または複数のフィルタリング基準を受信することを含み、前記実行可能命令は、前記１または複数のフィルタリング基準を前記より大規模なネットワークに適用して、前記第１のネットワークを判定することを、前記コンピュータシステムにさらに行わせることを特徴とする請求項７に記載のコンピュータシステム。
【請求項１２】
前記第１のネットワークの前記仮想ネットワークデバイスの少なくとも１つは、テンプレートを使用して作成されており、および、前記複数の仮想複製デバイスを作成することは、前記テンプレートを使用して、前記仮想ネットワークデバイスの前記少なくとも１つに対応する少なくとも１つの仮想複製デバイスを作成することを含んでいることを特徴とする請求項７に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、ネットワークを複製する技術に関する。
【背景技術】
【０００２】
本出願は、「Configuring Communications Between Computing Nodes」と題された２００８年３月３１日に出願した米国特許出願第１２／０６００７４号明細書の全開示を、すべての目的のために参照により組み込む。
【０００３】
リモートコンピューティングサービスは、様々なユーザのためにネットワークを操作するためにしばしば使用される。例えば、ある組織が、互いに通信している複数のコンピューティングデバイスをリモートに動作させることができる。コンピューティングデバイスは、ルータ、スイッチ、ファイアウォールなどの様々なネットワークデバイスを利用して、組織のニーズに応じてネットワーク内に構成することができる。さらにコンピューティングデバイスおよびネットワークデバイスは、仮想および／または実際のコンピューティングデバイスを含むこともできる。たとえばある組織のネットワークは、１つまたは複数の仮想ネットワークデバイスによって互いに通信している複数の仮想マシンを含むことが可能であり、それによって実際のネットワークをオーバレイする（ｏｖｅｒｌａｙ）仮想ネットワークを形成する。コンピューティングデバイスは、仮想ネットワークのトポロジに従って通信するようにプログラミング可能であり、様々な技法を使用して、仮想ネットワークがオーバレイする実際のネットワーク全体にわたる通信の伝達が可能となる。
【０００４】
いくつかの事例では、ネットワークまたは少なくともその一部を複製することが望ましい。たとえばある組織は、ネットワークを依然として機能させながらそのネットワークをテストすることを望む場合がある。同様にある組織は、実際にネットワークにストレスを与えることなしに、そのネットワーク上での様々なストレスをシミュレートすることを望む場合がある。組織は、そのネットワークへの修正がどのように機能できるかをテストすることを望むか、またはネットワーク障害などの１つもしくは複数のイベントを引き起こしたイベントを再作成することを望む場合がある。概して、ネットワークの複製がなぜ有用であるかについては、様々な理由がある。しかしながらネットワーク複製は、困難かつ時間のかかるプロセスである可能性があり、通常は、古いネットワークの複製となる新しいネットワークを構成するかなりの介入が必要である。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願第１２／０６００７４号明細書
【図面の簡単な説明】
【０００６】
【図１】様々な実施形態が実装可能な環境を示す図である。
【図２】図１に示された環境の様々な構成要素を利用可能な環境を示す図である。
【図３】図２の環境の一部をより詳細に示す図である。
【図４】実施形態に従った、ネットワークの複製を要求するためのプロセスの例を示す流れ図である。
【図５】実施形態に従った、ネットワークを複製するための命令の受信に応答して、ネットワークを複製するためのプロセスの例を示す流れ図である。
【図６】実施形態に従った、ネットワークを複製するためのプロセスの例を示す流れ図である。
【図７】実施形態に従った、複製ネットワークに関するオブジェクトのコピーを作成するためのプロセスの例を示す流れ図である。
【図８】実施形態に従った、ネットワークオブジェクトの浅い（ｓｈａｌｌｏｗ）コピーの作成を示すタイムライン図である。
【図９】実施形態に従った、ネットワークオブジェクトの深い（ｄｅｅｐ）コピーの作成を示すタイムライン図である。
【図１０】実施形態に従った、複製ネットワークの使用例を示す流れ図である。
【図１１】実施形態に従った、複製ネットワークの別の使用例を示す流れ図である。
【発明を実施するための形態】
【０００７】
本明細書で説明および提案される技法は、ネットワーク複製などのプロセスに有用なシステムおよび方法を含む。ある実施形態では、ネットワークの少なくとも一部を複製する旨の要求が受信され、要求に応答してネットワークの少なくともその部分が複製される。要求はネットワーク管理者などの、ネットワークにリモートにアクセスするユーザによって開始可能である。ネットワークのアクセスは、ユーザが自分のネットワークにアクセスできるようにするために提供された、ウェブサービスレイヤの様々なアプリケーションプログラミングインターフェース（ＡＰＩ）を介することができる。例として、ネットワークは、ユーザ（および／またはユーザに関連付けられた組織）に代わり、ネットワークを動作するために使用されるコンピューティングリソースを提供する別の組織によって動作可能である。例として、コンピューティングリソースは、１つまたは複数のデータセンタ内に配置すること、およびウェブサービスのＡＰＩを使用するユーザによってリモートにアクセスすることが可能であるが、他の技術も使用可能である。ネットワーク複製のために、１つまたは複数のＡＰＩが提供可能である。さらに、１つまたは複数のデータセンタを使用して、自分のネットワークにリモートにアクセスできる他のユーザのネットワークを実装することもできる。コンピューティングリソースは、コンピューティングデバイス、記憶デバイス、スイッチ、ルータ、ゲートウェイ、ハブ、ならびに以下で説明されるいくつかのデバイス、概してネットワーク環境内での使用に好適な任意のデバイスを含む、ネットワークの動作に使用可能な他のデバイスを含むことができる。
【０００８】
ある実施形態では、複製されるネットワークは仮想オーバレイネットワークである。ある実施形態では、複製されるネットワークは、物理デバイスのネットワークをオーバレイする１つまたは複数の仮想デバイスのネットワークを備える。物理デバイスは、１つまたは複数のハブ、スイッチ、ルータ、ゲートウェイ、ファイアウォール、サーバ、記憶デバイス、および／またはネットワーク環境での使用が可能な１つまたは複数の他のデバイスを含むことができる。同様に仮想デバイスは、１つまたは複数の仮想ハブ、仮想スイッチ、仮想ルータ、仮想ゲートウェイ、仮想ファイアウォール、仮想サーバ、仮想記憶デバイス、および／またはネットワーク環境での使用が可能な１つまたは複数の他のデバイスを含むことができる。本明細書で使用され、文脈から明らかな場合、仮想デバイスは「仮想」という単語を用いずに言い表すことが可能である。仮想ネットワークを備えるデバイスセットと、仮想ネットワークによってオーバレイされる物理ネットワークを備えるデバイスセットとの間には、１対１の対応が存在しない場合がある。例として、１つの物理デバイスを使用して複数の仮想デバイスを実装することができる。たとえば１つのコンピューティングデバイスを使用して複数の仮想マシンを実装することができる。他の例として、複数の物理デバイスを使用して単一の仮想デバイスを実装することができる。たとえば仮想記憶デバイスは、複数の物理記憶デバイスによって実装可能である。さらに、複数の仮想デバイスは単一の物理デバイスによって実装可能であり、複数の物理デバイスを使用して単一の仮想デバイスを実装することができるが、いくつかの仮想デバイスは単一の物理デバイスによって実装可能である。たとえば仮想記憶ボリュームは、単一の物理記憶デバイスによって実装可能である。
【０００９】
ある実施形態では、要求を出すユーザには、ネットワークがどのように複製可能であるかに関する１つまたは複数のパラメータを指定するための機会が提供される。一実施形態では、ユーザは、１つまたは複数のサブネットワークなどのネットワークの１つまたは複数の部分を、コピーするために識別することができる。さらに、ユーザのネットワーク内のデバイスは、様々な特徴でタグ付けすることができる。デバイス用のタグは、ネットワーク内でのデバイスの目的（デバイスを使用してサポートするアプリケーションのタイプなど）に関連すること、デバイスの任意の態様に全体として関連すること、またはデバイスの特徴に対して明らかな関係を有さないことが可能である。ある実施形態では、ユーザは１つまたは複数のタグを、複製ネットワークへの包含または複製ネットワークからの除外に関する条件として指定することができる。たとえばユーザは、「製造」とタグ付けされたデバイスのみを複製ネットワーク内に含めるものと指定することができる。
【００１０】
他のパラメータは、コピーされることになるネットワークに対する複製ネットワーク内のオブジェクトの忠実度に関連することが可能である。たとえば、コピーされることになるネットワークが仮想マシンを含む場合、ユーザは、複製仮想マシンに関する要件を指定するための様々なオプションを有することができる。たとえばユーザは、マシンに対して低い忠実度を指定することが可能であり、それによって複製ネットワークは単に対応する仮想マシンを有するのみとすることができる。ユーザは、対応する仮想マシンの機能が元の仮想マシンと様々な度合で合致する、より高い忠実度を指定することができる。たとえばユーザは、処理機能、使用可能なブロック記憶、および／または様々なソフトウェアアプリケーションの実行能力を、最低限に備えた状態で複製仮想マシンを実装するものと指定することができる。同様にユーザは、たとえば複製仮想マシンが特定のプロセッサモデルを使用するマシン上に実装されるものとする、非常に高い忠実度を指定することができる。概して、複製ネットワークオブジェクトが、複製されているオブジェクトにいかに密接に合致するかに関連する任意のタイプの特徴を、コピーの忠実度を指定するためにユーザに提供することができる。指定可能なパラメータの別の例として、ユーザは、複製ネットワーク内の対応するデバイスに使用されるべきである、ネットワーク内のデバイスの様々なインターネットプロトコルアドレスを指定することができる。
【００１１】
ある実施形態では、ユーザは、コピーされることになるネットワーク内のデバイスに関する少なくとも１つのコピータイプを指定することも可能である。一実施形態では、ユーザは、コピーされることになるネットワーク内で「浅い」または「深い」コピーなどのコピータイプを指定することが可能であるが、選択のために他のタイプのコピーも提供可能である。ネットワークオブジェクトの浅いコピーの場合、オブジェクトの新しいインスタンスを宣言することができる。新しいインスタンスが動作し、必要に応じて、コピーの前に元のオブジェクトの状態に関する情報を取り出すことができる。ネットワークオブジェクトの浅いコピーは、たとえば、ネットワークオブジェクトのコピーオンライト（ＣＯＷ）オーバレイとすることができる。ネットワークオブジェクトの深いコピーの場合、複製コピーのためにオブジェクトの状態に関する情報を含むメモリのストアの完全なコピーを実行し、別のソースからコピーする前に元のオブジェクトの状態に関する情報を取り出す必要なしに、複製コピーを独立に動作させることができる。
【００１２】
前述のように、ある実施形態では、ユーザがネットワークをコピーする要求を出した場合、この要求に応答してネットワークがコピーされ、ネットワークへのアクセスがユーザに提供される。ネットワークのコピーは、コピーされているネットワーク１つまたは複数の仮想デバイスに対応する、１つまたは複数の仮想複製デバイスを作成することを含むことができる。コピーされているネットワークの仮想デバイスを作成および／または動作するために使用される仮想化または他の技術を使用して、対応する複製デバイスを作成および動作することも可能である。さらに、コピーされているネットワーク内のデバイスを作成するために使用される任意のテンプレートを使用して、複製デバイスを作成することも可能である。言い換えれば、デバイスおよびそれらの複製デバイスは、共通のテンプレートから作成可能である。ネットワークのコピーは、ユーザによって指定された任意のパラメータに一致するように実行される。指定されたパラメータは、コピーされているネットワーク全体、および／またはコピーされている個別のネットワークオブジェクトに、適用可能である。いくつかの実施形態では、ユーザは、コピーされることになる各ネットワークオブジェクトおよび／またはコピーされることになるネットワークオブジェクトのサブセットに対して、異なるパラメータを指定することができる。
【００１３】
複製ネットワークへのアクセス提供は、様々な方法で実行可能である。概して、ネットワーク管理者などのユーザは、様々な方法および様々な目的で複製ネットワークを動作させることができる。一例としてユーザは、テストの目的で複製ネットワークに様々なストレスを印加することができる。ユーザは、ネットワークイベントを記録し、それらのイベントを複製ネットワーク内で討論の（ｆｏｒｅｎｓｉｃ）ためにリプレイすることも可能である。別の例として、ユーザは、追加の容量を提供するため、または概して、複製ネットワークの追加のコンピューティングリソースを使用可能にするために、コピーされているネットワークに関連して複製ネットワークを使用することができる。ユーザは、コピーされたネットワークを修正することがその性能にどのように影響を与えるかをテストするなどのために、複製ネットワークを修正することも可能である。追加の例を含む様々な実施形態に関する詳細が、以下の段落でより詳細に説明される。
【００１４】
図１は、様々な実施形態に従った態様を実装するための環境１００の例を示す。理解されるように、説明のためにウェブベースの環境が使用されているが、適切であれば、様々な実施形態を実装するために異なる環境が使用可能である。当該環境は、電子クライアントデバイス１０２を含み、このデバイスは、適切なネットワーク１０４を介して要求、メッセージ、または情報を送信および受信するように、ならびに情報をデバイスのユーザに返送するように動作可能な、任意の適切なデバイスを含むことが可能である。こうしたクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子ブックリーダなどが含まれる。ネットワークは、イントラネット、インターネット、セルラネットワーク、ローカルエリアネットワーク、もしくは任意の他のこうしたネットワーク、またはそれらの組合せを含む、任意の適切なネットワークを含むことができる。こうしたシステムに使用される構成要素は、選択されるネットワークおよび／または環境のタイプに少なくとも部分的に依存可能である。こうしたネットワークを介した通信のためのプロトコルおよび構成要素はよく知られており、本明細書では詳細に考察しない。ネットワークを介した通信は、有線または無線の接続およびそれらの組合せによって実行可能である。この例では、ネットワークはインターネットを含み、環境は要求を受信し、それに応答してコンテンツを提供するためのウェブサーバ１０６を含むが、当業者であれば、他のネットワークの場合、同様の目的を処理する代替デバイスが使用可能であることを理解されよう。
【００１５】
例示の環境は、少なくとも１つのアプリケーションサーバ１０８およびデータストア１１０を含む。連結されるかまたはその他の方法で構成可能であり、適切なデータストアからデータを取得するなどのタスクを実行するために対話可能である、いくつかのアプリケーションサーバ、レイヤ、または他の要素、プロセス、もしくは構成要素が存在可能であることを理解されたい。本明細書で使用される場合、「データストア」という用語は、任意の標準、分散型、またはクラスタ型の環境において、任意の組合せおよび数のデータサーバ、データベース、データ記憶デバイス、およびデータ記憶媒体を含むことが可能な、データの記憶、アクセス、および取り出しが可能な任意のデバイスまたはデバイスの組合せを指す。アプリケーションサーバは、クライアントデバイスに関する１つまたは複数のアプリケーションの態様を実行し、アプリケーションに関する大部分のデータアクセスおよびビジネス論理を処理するために、必要に応じてデータストアと統合するための、任意の適切なハードウェアおよびソフトウェアを含むことができる。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに転送されることになるテキスト、グラフィックス、オーディオ、および／またはビデオなどのコンテンツを生成することが可能であり、これをウェブサーバによって、この例ではＨＴＭＬ、ＸＭＬ、または他の適切な構造化言語の形でユーザに提供することができる。すべての要求および応答の処理、ならびにクライアントデバイス１０２とアプリケーションサーバ１０８との間でのコンテンツの送達は、ウェブサーバによって処理可能である。本明細書で考察される構造化コードは、本明細書の他の場所で考察されるような任意の適切なデバイスまたはホストマシン上で実行可能であるため、このウェブサーバおよびアプリケーションサーバは必須ではなく単なる例示の構成要素であることを理解されたい。
【００１６】
データストア１１０は、特定の態様に関するデータを記憶するための、いくつかの別々のデータテーブル、データベース、または他のデータ記憶機構および媒体を含むことができる。たとえば図示されたデータストアは、製造データ１１２およびユーザ情報１１６を記憶するための機構を含み、これを使用して製造側のコンテンツに対処することができる。データストアは、ログデータ１１４を記憶するための機構を含むようにも示されており、これは報告、分析、または他のこうした目的に使用することができる。適切であるものとして上記で列挙した機構のいずれか、またはデータストア１１０内の追加の機構内に記憶することが可能な、ページイメージ情報およびアクセス権情報などのデータストア内に記憶することが必要な可能性のある、多くの他の態様が存在可能であることを理解されたい。データストア１１０は、それに関連付けられた論理を介してアプリケーションサーバ１０８から命令を受信し、それに応答してデータの取得、更新、またはその他の処理を実行するように、動作可能である。一例では、ユーザはある種のアイテムに関する検索要求を提出する場合がある。この場合、データストアは、ユーザの識別を検証するためにユーザ情報にアクセスする可能性があり、カタログ詳細情報にアクセスしてそのタイプのアイテムに関する情報を取得することが可能である。その後、ユーザがユーザデバイス１０２上でブラウザを介して見ることができるウェブページ上に列挙された結果内など、情報をユーザに戻すことが可能である。対象の特定アイテムに関する情報は、ブラウザの専用ページまたはウィンドウ内で見ることができる。
【００１７】
各サーバは、典型的には、そのサーバの一般的な管理および動作に関する実行可能プログラム命令を提供するオペレーティングシステムを含むことになり、また典型的には、サーバのプロセッサによって実行された場合、サーバがその所期の機能を実行できるようにする命令を記憶するコンピュータ読取り可能媒体を含むことになる。オペレーティングシステムおよびサーバの一般的な機能に関する好適な実装は知られているかまたは市販されており、当業者によって、特に本明細書における開示に鑑みて、容易に実装される。
【００１８】
一実施形態における環境は、１つまたは複数のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されたいくつかのコンピュータシステムおよび構成要素を利用する、分散型コンピューティング環境である。しかしながら当業者であれば、こうしたシステムが、図１に示されたよりも少ないかまたは多い数の構成要素を有するシステム内で、等しく良好に動作可能であることを理解されよう。したがって、図１内のシステム１００の描写は本来例示的なものであり、本開示の範囲を限定するものと解釈されるべきではない。
【００１９】
図２は、図１に示された１つまたは複数の構成要素を使用可能にし、本開示の様々な実施形態を実施するために使用可能な、環境２００の例示を提供する。図２に示された環境２００では、複数の顧客内部ネットワーク２０２は、リモートコンピューティングサービスプロバイダネットワーク２０４と通信可能に接続される。図２は複数の顧客内部ネットワーク２０２を示しているが、本開示の実施形態は、内部に存在する顧客内部ネットワーク２０２が１つまたはゼロの環境内で実装可能である。図２に示された実施形態に戻ると、顧客内部ネットワーク２０２は、たとえば、リモートコンピューティングサービスプロバイダのリモートコンピューティングサービスを利用する組織のイントラネットとすることができる。例として、顧客は、他のアプリケーション用のリモートコンピューティングサービスプロバイダネットワーク２０４を使用するサービスとして提供されるコンピューティングリソースを使用しながら、顧客の動作中に使用される様々なアプリケーションを実行するためにそれ自体の内部ネットワークを利用可能である。
【００２０】
ある実施形態では、リモートコンピューティングサービスプロバイダネットワーク２０４はリモートコンピューティングサービスプロバイダによって動作されるデータセンタ内に実装される。データセンタは、内部で様々なコンピューティングリソースが利用される設備とすることができる。コンピューティングリソースは、コンピューティングデバイス、記憶デバイス、ルータなどのネットワークデバイス、スイッチ、ファイアウォールなど、概してコンピューティングデバイスのネットワークに関連して使用可能な任意のデバイスを含む。リモートコンピューティングサービスプロバイダネットワーク２０４は、通信ネットワークを介して互いに通信する複数のデータセンタを用いて実装可能である。たとえばリモートコンピューティングサービスプロバイダは、様々な地理的位置にあるデータセンタのネットワークを動作させることができる。図に示されるように、リモートコンピューティングサービスプロバイダネットワーク２０４は、この例では対応する顧客に代わって動作されるネットワークである、１つまたは複数の顧客リモートネットワーク２０６を含む。顧客の様々な動作は、リモート顧客ネットワーク２０６を使用して動作可能である。たとえば顧客は、外部動作（ウェブサイトまたは他の情報リソースを公衆または顧客の組織外部の他のユーザに提供するためのサーバおよびデータストアのネットワークの動作など）のために顧客リモートネットワーク２０６を利用しながら、内部動作（会計、人的資源、電子メールなど）のために顧客内部ネットワーク２０２を利用することができる。概して顧客は、顧客内部ネットワーク２０２および／または顧客リモートネットワーク２０６を任意の好適な目的で利用することができる。顧客リモートネットワーク２０６のうちの１つまたは複数は、すべての目的のために参照により本明細書に組み込まれ、２００８年３月３１日に出願した特許文献１、名称「Configuring Communications Between Computing Nodes」に従って説明されるような、仮想オーバレイネットワークとすることができる。
【００２１】
ある実施形態では、リモートコンピューティングサービスプロバイダネットワーク２０４は、複数のアプリケーションプログラミングインターフェース（ＡＰＩ）２１０を有するウェブサービスレイヤ２０８を含む。ウェブサービスレイヤ２０８は、ウェブサービス呼出しを受信し、１つまたは複数の他のコンピュータシステムに対して要求に基づくアクションを実行するように命じることなどによって適宜応答するように動作可能な、コンピュータシステム内に実装可能である。ウェブサービス呼出しは、様々な理由でユーザに提供された様々なウェブサービスＡＰＩ  ２１０を使用して実行可能である。たとえば１つのＡＰＩは、本開示の様々な実施形態に従って説明されるようなネットワーク複製を目的とすることができる。他のＡＰＩは、仮想コンピューティングインスタンスを提供する、他の方法でネットワークを構成する、概して、ＡＰＩを利用するユーザに代わってコンピューティングリソースをリモートに動作するなどの、他の目的とすることができる。さらに、ウェブサービスＡＰＩは例示の目的で提供されているが、様々な実施形態に従って、コンピューティングリソースをリモートまたはローカルのいずれかで動作する任意の方法を使用することが可能である。
【００２２】
図３は、図２に関連して上記で示された環境２００の副次環境とすることが可能な、環境３００の例示を示す。図３に示されるように、環境３００は、特定の顧客に適用される場合の環境２００の一部を示す。この例では、顧客は、内部で顧客リモートネットワーク３０６が顧客に代わりリモートコンピューティングサービスプロバイダ３０４によって動作される、リモートコンピューティングサービスプロバイダネットワーク３０４にアクセスする、それ自体の顧客内部ネットワーク３０２を有する。図３では、顧客はいくつかのサブネットワーク３０８を有するように示されているが、顧客はネットワークを１つだけ有すること、または図に示されるよりも多くのサブネットワークを有することが可能である。
【００２３】
ある実施形態では、顧客リモートネットワーク３０６は複数の顧客サブネットワーク３０８を含む。ある実施形態では、顧客サブネットワークのうちの１つまたは複数が、リモートコンピューティングサービスプロバイダによって動作されるネットワークのオーバレイネットワークである。示された例示の実施形態では、顧客は、ルータ３１０および仮想私設ネットワーク（ＶＰＮ）ゲートウェイ３１２を通じ、インターネットを介するセキュアＶＰＮ接続３１４を介して、様々なサブネットワーク３０８にアクセスすることができるが、顧客サブネットワーク３０８にアクセスする他の方法も使用可能である。ある実施形態では、顧客はその顧客内部ネットワーク３０２からインターネットを介するセキュアＶＰＮ接続を確立し、ウェブサービス呼出しを通じて顧客サブネットワーク３０８と対話するが、顧客に代わって動作する様々なコンピューティングデバイスと通信する他の方法も使用可能である。ある実施形態では、顧客内部ネットワーク３０２のサーバは暗号化された情報をＶＰＮゲートウェイ３１２に送り、ＶＰＮゲートウェイ３１２はこの情報を復号し、復号された命令をルータ３１０に渡す。その後ルータ３１０は復号された情報を適切な顧客サブネットワーク３０８に伝送する。いずれかの顧客サブネットワーク３０８からの情報を、顧客内部ネットワーク３０２によって送信されたいずれかの命令に応答するか否かにかかわらず、ルータ３１０に送信することが可能であり、ルータ３１０はこの情報をＶＰＮゲートウェイ３１２に渡し、ＶＰＮゲートウェイ３１２はこの情報を暗号化し、セキュアＶＰＮ接続３１４を介してこの情報を顧客内部ネットワーク３０２に送信する。
【００２４】
図３は様々な実施形態に従い、情報のフローに関する特定の構成を例示的に示しているが、環境３００または他の実施形態に他の構成も使用可能である。概して、コンピューティングデバイス間で情報を交換する任意の好適な方法が使用可能である。さらに、図３には、例示の目的でＶＰＮゲートウェイ３１２およびルータ３１０などのいくつかのデバイスが含まれているが、通信用に他のデバイスが使用可能である。さらに、図３に示された環境３００は簡略化されており、図示された以外の他のデバイスを環境３００または他の実施形態に含めることができる。可能なデバイスには、スイッチ、サーバ、ファイアウォール、データストア、ハブ、他のゲートウェイなどが含まれるが、これらに限定されない。
【００２５】
前述のように、本開示の様々な実施形態は動的なネットワーク複製を提供する。したがって図４は、１つまたは複数のネットワークをコピーするために顧客による使用が可能な、プロセス４００の例示の実施形態を示す。プロセス４００の一部（または本明細書で説明される任意の他のプロセス、もしくはそれらの変形形態および／または組合せ）は、実行可能命令で構成された１つまたは複数のコンピュータシステムの制御の下で実行可能であり、１つまたは複数のプロセッサ上でまとめて実行するコード（たとえば実行可能命令、１つもしくは複数のコンピュータプログラム、または１つもしくは複数のアプリケーション）として、ハードウェアによって、またはそれらの組合せで実装可能である。コードは、たとえば１つまたは複数のプロセッサによって実行可能な複数の命令を備えるコンピュータプログラムの形で、コンピュータ読取り可能記憶媒体上に記憶可能である。
【００２６】
ある実施形態では、ユーザはコピー予定のネットワークを選択する４０２。コピー予定のネットワークの選択は、任意の好適な様式で達成可能である。たとえばリモートコンピューティングサービスプロバイダを含むある実施形態では、顧客のネットワーク管理者または他のユーザは、顧客に代わりリモートコンピューティングサービスプロバイダによって動作されているネットワークをユーザが選択できるようにする、時には管理コンソールと呼ばれるインターフェースを利用することができる。インターフェースは、リモートコンピューティングサービスプロバイダによってウェブページとして顧客に提供可能であるか、または顧客のコンピューティングデバイス上で実行するアプリケーションとすることが可能である。選択されるネットワークは、より大きなネットワークのサブネットワーク、サブネットワークの集まり、または概して、互いに通信するコンピューティングリソースの任意の集まりとすることができる。
【００２７】
ある実施形態では、コピーされることになるネットワークを介してより多くの制御を有するために、ユーザには１つまたは複数のフィルタを適用するための機能が提供される。ある実施形態では、顧客のネットワーク内の様々なデバイスが１つまたは複数の割り当てられたタグを有する。タグは自動的に割り当て可能であるか、またはユーザによる割り当てが可能である。たとえば、デバイスにはデバイスタイプタグがタグ付け可能であり、これはたとえばデバイスをサーバ、記憶デバイス、スイッチ、または任意の他のタイプのデバイスであるものとして識別することができる。ある実施形態では、ユーザはユーザ自身のタグを提供することもできる。たとえば、顧客があるサブネットワークを別のサブネットワークとは異なる目的で使用する場合、ユーザは各デバイスに目的に対応するタグをタグ付けすることができる。１つのサブネットワーク内のデバイスは、たとえばデバイスを製造に使用されるサブネットワークの一部として識別するタグを有することが可能であり、別のサブネットワーク内の他のデバイスは、デバイスを課金などの他の目的に使用されるサブネットワークの一部として識別するタグを有することが可能である。別の例として、記憶デバイスは、デバイスを１次記憶デバイスまたはバックアップ記憶デバイスのいずれかであるとして識別するタグで、タグ付けすることができる。概して、フィルタリング用に任意のタイプのタグを使用することができる。さらにデバイスは、複数のタグを有することが可能であり、別々のサブネットワーク内のデバイスは、同じタグのうちの１つまたは複数を共有することができる。フィルタは、選択されたネットワーク内のデバイスによって利用されるインターネットプロトコル（ＩＰ）アドレスに、少なくとも部分的に基づくことも可能である。したがってある実施形態では、ユーザがコピーされることになるネットワークを選択した場合、ユーザは自分が選択されたネットワークに適用したい任意のフィルタを選択する４０４。
【００２８】
さらに、ある実施形態では、選択されたネットワーク内の１つまたは複数のネットワークオブジェクトに対して所望の分解能を選択する機能４０６が、ユーザに提供される。ユーザによって選択された分解能を使用して、ネットワークのコピーがコピーされているネットワークといかに密接に合致すべきであるかを決定することができる。ユーザによって選択可能な分解能の特徴は、（図８および図９に関連してより詳細に説明されるような）コピーが浅いかまたは深いかなどの特徴、ネットワークオブジェクト上にインストールされたソフトウェア、ネットワークオブジェクトのメモリ（揮発性および／または不揮発性）、処理機能、ならびにプロセッサモデル、製造業者などの特定のハードウェアの特徴を含むことができる。例として、低分解能コピーに関心のあるユーザは、同じ様式でまとめてネットワーク化された同様のデバイスのコピーをユーザ自身が望む旨を指定することができる。高分解能コピーに関心のあるユーザは、あるデバイスがある量のメモリを有すべきである、特定のハードウェアデバイスを含むべきである、それらにインストールされた特定のソフトウェアを有すべきであるなどを、指定することができる。
【００２９】
ある実施形態では、ユーザがコピー分解能を選択する場合、ユーザによって指定された分解能に従い、ユーザによって指定された任意のフィルタに従って、選択されたネットワークをコピーするようにユーザ自身が命令を送信することができる４０８。コピーされることになるネットワークがリモートコンピューティングサービスプロバイダによって動作される実施形態では、命令を送信することは、通信ネットワークを介して命令を送信するために、リモートコンピューティングサービスプロバイダによって提供されるウェブサービスを呼び出すことを含むことができる。命令を送信する他の方法は、様々な実施形態に従って使用可能である。
【００３０】
図４は特定の順序で実行される様々なステップを示しているが、変形形態は本開示の範囲内にあるものとみなされる。たとえばある実施形態では、ネットワーク選択、フィルタ選択、およびコピー分解能選択は任意の順序で実行可能であり、１つまたは複数のステップは同時に実行可能である。他の変形形態は、本開示の範囲内にあるものとみなされる。
【００３１】
図５は、ネットワークをコピーするためのプロセス５００の例示を提供する。プロセス５００は、図４に関連して示された実施形態に従って生成されたネットワークをコピーする旨の命令の受信に応答して実行することができる。ある実施形態では、コピー命令が受信される５０２。命令は、ネットワークの識別子、コピーされることになるコンピューティングデバイスのリスト、または任意の好適な様式などによって、コピーされることになるネットワークを識別することができる。コピー命令に応答して、ある実施形態では、ある実施形態に従ってネットワークのマッピングにアクセスされる５０４。ある実施形態では、ネットワークのマッピングは、１つまたは複数のファイル、またはコピーされることになるネットワークのコンピューティングデバイスが互いにどのように接続されるかを示す他の情報の集まりである。
【００３２】
マッピングにアクセスされた場合、ある実施形態では、複製ネットワークに対して新しいマッピングが生成される。新しいマッピングは、ネットワークオブジェクトおよびそれらの互いの関係のリストなどの集まりを含むことができる。新しいマッピングの生成は、任意のユーザ選択フィルタおよび／または他の基準を元のマッピングに適用することによって達成可能である。新しいマッピングが生成されると、その新しいマッピングに従ってネットワークオブジェクトが作成される。ある実施形態では、フィルタまたは他の基準が適用されない場合など、新しいマッピングが生成されず、元のマッピングを使用して複製ネットワークを作成できることがある。ある実施形態では、新しいマッピングが生成された場合、以下でより詳細に説明されるように、新しいマッピングに従ってネットワークオブジェクトが作成される５０８。概して、ネットワーク内のネットワークオブジェクト間の関係に従って、コピーされているネットワークに対応するネットワークオブジェクトが作成される。
【００３３】
図６は、ある実施形態に従って複製ネットワークへのアクセスを作成および提供するためのプロセス６００の例示に関する流れ図である。プロセス６００の一部は、図５に関連して上記で説明されたプロセス５００の一部に対応するものとすることができる。ある実施形態では、前述の様式などでコピー命令が受信される６０２。ある実施形態に従って、ネットワーク構成データストアが検査され６０４、ネットワークオブジェクトツリーがフェッチされる６０６。ネットワーク構成データストアは、コピーされることになるネットワークのネットワークオブジェクトがリモートコンピューティングサービスプロバイダによって持続される、データストアとすることができる。ある実施形態では、ネットワークオブジェクトツリーは、ネットワークのオブジェクトおよびオブジェクト間の関係を含むグラフである。ツリーは任意の好適なノードをルートとすることができる。
【００３４】
ネットワークオブジェクトツリーがフェッチされると６０６、ある実施形態では、いずれかのフィルタがネットワークオブジェクトツリーに適用されるかどうかが決定される６０８。フィルタがネットワークに適用されることが決定された場合、ネットワークオブジェクトリストを生成するために、ネットワークオブジェクトツリー内のオブジェクトにフィルタが適用される６０８。たとえばユーザが、複製ネットワークは１つまたは複数の特定のタグを備えるネットワークオブジェクトのみを有するべきであるものと指定した場合、その１つまたは複数のタグを有するオブジェクトが識別され、ネットワークオブジェクトのリスト（または他の集まり）に追加される。同様に、ユーザが、あるＩＰアドレスのみが複製ネットワーク内に含まれることになるよう指定した場合、こうしたネットワークオブジェクトのみがリストに追加される。概して、ユーザが指定する任意の基準が使用され、ある実施形態に従って、ネットワークオブジェクトのリストにどのオブジェクトが追加されるかが決定される。
【００３５】
任意の適用可能フィルタが適用されるか、またはフィルタが適用されない場合、ある実施形態に従って、ネットワークオブジェクトの有向非巡回グラフ（ＤＡＧ）が生成される６１２。ある実施形態では、ネットワークオブジェクトのＤＡＧは、そのノードが複製ネットワークに関して作成されることになるネットワークオブジェクトであり、そのエッジが依存性に従って方向を有する、グラフである。ＤＡＧは接続されたグラフであっても、そうでなくてもよい。例としてある実施形態では、仮想コンピューティングインスタンス用のブロック記憶デバイスを作成せずに、仮想コンピューティングインスタンスを作成することはできない。したがってある実施形態では、ブロック記憶デバイスから記憶用にブロック記憶デバイスを利用する仮想コンピューティングインスタンスへのＤＡＧ内のエッジは、ブロック記憶デバイスを表すノードから仮想コンピューティングインスタンスへの方向を有することになる。本例示は例示の目的でＤＡＧを使用するが、様々な実施形態に従って、ネットワークの複製に関するいずれのプランも使用可能である。
【００３６】
ＤＡＧが構築されると、ある実施形態では、ＤＡＧ内の第１のネットワークオブジェクトに関するコピー動作が呼び出される６１４。第１のネットワークオブジェクトは、いかなるエッジも向けられない任意のノードなどの、ＤＡＧ内のノードによって表される任意の好適なネットワークオブジェクトとすることができる。ある実施形態では、コピー動作の呼出しはあるアクションを起こすことを含み、その結果、ネットワークオブジェクトのコピーが作成されることになる。したがって、コピー動作の呼出しは、ネットワークオブジェクトコピーに対する充分なコンピューティングリソースの割振りおよびそれに応じたリソースの構成を含むことができる。たとえばネットワークオブジェクトが仮想データ記憶ボリュームである場合、１つまたは複数の物理記憶デバイスをボリュームに割り振ることが可能であり、物理記憶デバイスはボリュームを処理するように構成可能である。複数の物理記憶デバイスが同じ仮想ボリュームを処理する場合、複数の物理記憶デバイスを処理するサーバは同様に割振りおよび構成されることが可能である。概して、任意のコンピューティングリソースを好適な様式で割り振り、構成することができる。
【００３７】
ＤＡＧ内の第１のネットワークオブジェクトに対するコピー動作が呼び出されると、コピーされることになる他のオブジェクトが残っているかどうかが決定される６１６。コピーされることになるオブジェクトが残っている場合、ＤＡＧは他のノードへとトラバースされ、ＤＡＧ内の次のネットワークオブジェクトに対するコピー動作が呼び出される６１８。このＤＡＧをトラバースするプロセスおよびコピーされることになる他のオブジェクトが残っているかどうかの決定は、ＤＡＧが完全にトラバースされるまで続行可能である。ＤＡＧが完全にトラバースされた場合、ある実施形態では、ある実施形態に従ってコピーされたオブジェクトからなる複製ネットワークへのアクセスが提供される６２０。複製ネットワークへのアクセスの提供は、顧客の１人または複数のユーザに、ネットワークの動作を指示するため、ネットワークを構成するため、またはその他の方法でウェブサービスを使用してネットワークにアクセスするためなどの機能を提供することを、含むことができる。
【００３８】
図７は、ある実施形態に従ってネットワークオブジェクトをコピーするためのプロセス７００の例示を示す。プロセス７００は、たとえば図６に関連して説明されたコピー動作の呼出し時に実行可能である。ある実施形態では、オブジェクトがコピーされる場合、ある実施形態に従ってオブジェクトタイプが識別される７０２。オブジェクトタイプは、ネットワーク環境内で使用可能な様々なオブジェクトタイプのうちの１つとすることができる。例には、マシン、記憶デバイス、ルータ、スイッチ、ファイアウォールなどが含まれる。ある実施形態では、オブジェクトタイプが識別されると、オブジェクトがステートレス（ｓｔａｔｅｌｅｓｓ）であるかどうかが決定される７０４。オブジェクトがネットワーク内で動作する際にその構成が変化しないオブジェクトの場合、そのオブジェクトはステートレスとすることができる。受信した各要求をいずれの以前の要求にも依存せず無関係であるものとして扱うサーバは、ステートレスオブジェクトとすることができる。同様に、その構成が変化しないスイッチもステートレスとすることができる。ある実施形態では、ステートレスでないオブジェクトはステートフル（ｓｔａｔｅｆｕｌ）であり、すなわちそれらの構成は動作中に変化する。その動作がネットワーク内で起こされた以前のアクションに依存するサーバは、たとえばステートレスではない。同様に、データが書込みおよび／または削除されるとその構成が変化する記憶ボリュームは、ステートレスではない。
【００３９】
オブジェクトがステートレスの場合、複製オブジェクトは即時に作成可能である７０６。たとえば、オブジェクトをエミュレートするように、オブジェクトに関してリソースを提供および構成することができる。しかしながら、オブジェクトがステートレスでない場合、オブジェクトをコピーするためにより複雑なプロセスが必要な場合がある。たとえば、コピータイプに関する決定を実行することができる７０８。ある実施形態では、コピーは浅いかまたは深いという２つのタイプのうちの１つとすることが可能であるが、他のタイプのコピーも実行可能である。オブジェクトの浅いコピーとは、ある実施形態では、元のオブジェクトの少なくとも初期には不完全なコピーであるオブジェクトである。レイジー（ｌａｚｙ）コピーとは、浅いコピーの一種である。浅いコピーの場合、オブジェクトコピーの状態に関する情報は、その情報が元のオブジェクトの動作によって変更されることになるまで、元のオブジェクトから入手可能であり、その時点で変更される前に情報をオブジェクトコピーにコピーすることができる。その一例が、記憶ボリュームのコピーオンライト（ＣＯＷ）オーバレイである。ＣＯＷオーバレイが開始された場合、データのブロックに関する書込み動作が要求されるまで、ＣＯＷオーバレイに関するデータのブロックを元の記憶ボリューム内に記憶することができる。データのブロックに関する書込み動作が要求された場合、ブロックはＣＯＷオーバレイにコピーされた後、元の記憶ボリュームに対して実行される。このように、即時および初期に使用可能なコピーを作成することができる。仮想マシンなどの任意のステートフルオブジェクト、概して、動作中にその状態が変化する任意のオブジェクトに対して、同様のタイプのコピーが作成可能である。
【００４０】
これに対して、深いコピーは、コピーが作成されるとコピーの動作中に元のオブジェクトを参照する必要がないような、オブジェクトの完全なコピーとすることができる。例として、記憶ボリュームの深いコピーは、コピーが作成される前に元のボリューム内に記憶されたいずれのデータにもコピーを介してアクセス可能なように、記憶ボリューム内のすべてのデータを新しいボリューム内に確実にコピーすることによって作成可能である。仮想マシンおよび他のステートフルオブジェクトの深いコピーも作成可能である。このようにして、コピーは元のオブジェクトから完全に独立できることになる。
【００４１】
ある実施形態では、コピータイプが浅いコピーであるものと決定された場合、オブジェクトは休止される７１０。オブジェクトが休止されると、オブジェクトオーバレイが複製オブジェクトとして作成され７１２、元のオブジェクトの動作が再開される７１４。しかしながら、コピーが深いコピーであるものと決定された場合、オブジェクトの深いコピーが適宜作成される。たとえばオブジェクトが休止され７１６、オブジェクトのメモリ状態をコピーすることが可能である７１８。ある実施形態では、コピーされたメモリ状態は、複製オブジェクトを作成するために使用され７２０、元のオブジェクトの動作が再開される７２２。
【００４２】
図８および図９は、様々な実施形態に従って、それぞれネットワークオブジェクトの浅いコピーおよび深いコピーをどのように作成するかの例示を提供する。図８から見ると、この図はタイムラインおよびタイムラインに関するオブジェクトの状態を示している。ネットワークオブジェクト８０２は、通常の動作過程において動作され、オブジェクトがその一部であるネットワークを複製する要求が受信される。ある実施形態では、ネットワークの複製は前述の様式などで進行する。ネットワーク複製中のある時点で、ネットワークオブジェクト８０２は休止される。休止されたネットワークオブジェクト８０４のオーバレイが宣言され、休止されたネットワークオブジェクト８０４が再開される。図に示されるように、ネットワークオブジェクトが再開される場合、ネットワークオブジェクトおよびネットワークオブジェクトオーバレイの両方が共通の状態、すなわち休止されたネットワークオブジェクトの状態から進行する。ネットワークオブジェクトオーバレイの動作が、ネットワーク複製に先立ってネットワークオブジェクトの状態に関する情報を必要とする場合、こうした情報は休止されたネットワークオブジェクトの状態の記憶から取得可能である。同様に、ネットワークオブジェクトオーバレイがＣＯＷオーバレイである場合など、またはネットワークトラフィックが比較的軽い時間中などの別の都合の良い時間に、必要に応じてデータをネットワークオブジェクトオーバレイに書き込むことが可能である。
【００４３】
図９に進むと、この図も同様に、タイムラインおよびタイムラインに関するオブジェクトの状態を示している。ネットワークオブジェクト９０２は、通常の動作過程において動作され、オブジェクトがその一部であるネットワークを複製する要求が受信される。ある実施形態では、ネットワークの複製は前述の様式などで進行する。ネットワーク複製中のある時点で、ネットワークオブジェクト９０２は休止される。休止されたネットワークオブジェクト９０４に関する情報が、休止されたネットワークオブジェクトのコピー９０６を生成するためにコピーされる。たとえば、休止されたネットワークオブジェクト９０４の状態に関するすべての情報を複製し、別の位置に記憶することができる。ネットワークオブジェクト９０２が仮想記憶ボリュームである例では、仮想記憶ボリューム内に記憶された情報は、仮想記憶ボリュームを記憶するために使用された１つもしくは複数の物理記憶デバイスとは異なる１つもしくは複数の物理記憶デバイスに、または１つもしくは複数の同じ記憶デバイス上の少なくとも異なる位置に、コピーすることができる。ある実施形態では、休止されたネットワークオブジェクトのコピーが作成されると、休止されたネットワークオブジェクト９０４は再開される。その後、ネットワークオブジェクトおよびネットワークオブジェクトのコピーは、別々かつ独立に進行する。
【００４４】
図８および図９は、それぞれ浅いコピーおよび深いコピーが作成可能な様式の例を示しているが、他の方法も使用可能である。例として、オブジェクトの状態を元のオブジェクトおよび複製オブジェクトの両方に対する基本として使用することができる。言い換えれば、コピーされたオブジェクトは、コピー後、前述のように必要に応じてコピー時点でのオブジェクトの状態に関する記憶された情報を参照しながら、複製オブジェクトが動作するのと同様に動作可能である。別の例として、コピーが作成される場合、データの整合性を保証するために充分な注意が払われていれば、ネットワークオブジェクトを休止する必要のない技法が使用可能である。たとえば、複製プロセス中のネットワークオブジェクトに対する変更を記録および反映するための注意が払われている場合、休止は不要な可能性がある。概して、浅いか深いかにかかわらず、ネットワークオブジェクトをコピーするためのいずれの技法も、本開示の様々な実施形態に従って使用可能である。
【００４５】
図１０は、本開示の様々な実施形態を活用するために使用可能なプロセス１０００の例を示している。たとえばプロセス１０００は、ネットワーク上で生じる様々なイベントを調査するために討論上で使用することができる。ある実施形態では、ネットワークイベントは記録される１００２。ネットワークイベントは、デバイス間での情報の転送、ＡＰＩを使用して行われる管理上の変更を含むネットワークに対する管理上の変更、ネットワーク自動スケーリングイベント、読取り、書込み、または削除動作などのデータセット上での動作などを含むが、これらに限定されない、ネットワークに関連して発生する任意のイベントとすることができる。ネットワークイベントの記録は、イベントが少なくとも部分的に再構築可能なように、イベントに対応する情報を記録することを含むことができる。イベントは様々な方法で記録可能である。たとえばある実施形態では、リモートコンピューティングサービスプロバイダの顧客は、ＡＰＩ呼出しによって決定されるように、様々な方法で顧客のネットワークに影響を与えるＡＰＩ呼出しを実行することができる。これらの顧客開始ＡＰＩ呼出し（または概して、コピーされているネットワークに影響を与える任意のＡＰＩ呼出し）を記録することができる。別の例として、前述の特許文献１に記載されている実施形態に関連して使用される本開示の実施形態は、ネットワークを通じて移動するパケットを記録することが可能な１つまたは複数のシステムを通じてネットワーク通信をルーティングすること、ならびにパケットに関する情報をルーティングすることを含むことができる。図１０は、プロセス１０００における個別のステップとしてネットワークイベントを記録することを示しているが、記録すること（概して、様々な開示されたプロセスおよびそれらの変形形態の他のアクション）は、他のアクションの実行中に連続して、および／または例示された順序とは異なる順序で、実行可能である。
【００４６】
ある実施形態では、特定のネットワークイベントが検出される。たとえばネットワーク管理者は、ネットワークが毎日同時刻などの一定の時間に明らかに異常に挙動することを通知することができる。１つまたは複数のアプリケーションは、著しく長い待ち時間、多量のトラフィックボリューム、またはネットワーク内の１つもしくは複数のデバイスの性能に関する他の特徴などの、ネットワーク性能における１つまたは複数の異常を検出することができる。検出可能な他のネットワークイベントは、自動スケーリングイベント、デバイス誤動作などを含む。概して、任意のタイプの特定のネットワークイベント、またはイベントの組合せを検出する、任意の方法が使用可能である。特定のネットワークイベントが検出された場合、ある実施形態に従って複製ネットワークを作成することができる１００６。たとえばネットワーク管理者は、ネットワーク管理コンソールのインターフェースを使用して、ネットワークを複製する旨の要求を提出することができる。複製ネットワークは、要求に応答して作成可能である１００６。ネットワークの複製は、前述のように実行可能であり、要求によって指定される様々なコピータイプ、分解能、および他の基準を考慮に入れることができる。複製ネットワークは、元のネットワークにおけるすべてのオブジェクトを含むこと、または異なる量を有することが可能である。
【００４７】
ある実施形態では、複製ネットワークが作成される場合、イベントの分析を可能にするために複製ネットワーク上で１回または複数回、記録されたネットワークイベントをリプレイすることができる１００８。たとえばイベントは、検出されたネットワークイベントの原因を識別するために、または単にネットワーク機能をさらに理解するために、複製ネットワーク上でリプレイおよび記録することができる。このように、元のネットワークが通常の動作を続行できるように、ネットワーク動作に関する分析を複製ネットワーク上で実行することができる。言い換えれば、元のネットワークが通常の動作を実行できるようにしながら、複製ネットワークを分析に使用することが可能であり、それによってネットワーク性能に対する支障を最小限にしながらのネットワーク分析が可能となる。
【００４８】
図１１は、本開示の様々な実施形態を活用するために使用可能な別のプロセス１１００を示す。たとえばプロセス１１００を使用して、ある変更が行われた場合にネットワークがどのように動作することになるかを、実際に変更が行われる前にネットワーク管理者が研究することができる。ある実施形態では、ネットワークを複製する旨の命令が受信される１１０２。ネットワークを複製する旨の命令は、上記の説明に従って受信可能である。ネットワークを複製する旨の命令が受信された場合、前述のような様式で複製ネットワークが作成される１１０４。
【００４９】
複製ネットワークを用いると、ネットワーク管理者または他のユーザは様々な目的で複製ネットワークを修正することができる１１０６。たとえば複製ネットワークの修正は、ネットワーク内でのデバイスの再構成、ネットワークへのデバイスの追加および／またはネットワークからのデバイスの除去、ネットワークの様々なデバイス間の帯域幅の増加などを含むことができる。ある実施形態では、複製ネットワークの修正時に、修正された複製ネットワークを使用することができる。たとえば修正された複製ネットワークは、様々なストレス下でネットワークがどのように応答できるかのシミュレーション１１０８に使用可能である。たとえばユーザは、ネットワークにストレスを与えるためにネットワーク内の様々なデバイスに要求を送信し、修正された複製ネットワークがどのようにそのストレスに対処できるかを測定することが可能である。たとえばユーザは、ネットワークにストレスを与えて、修正された複製ネットワークが、追加のストレスに対処するために修正された複製ネットワークの１つまたは複数の部分を自動スケーリングするかどうかを決定することができる。概してユーザは、修正された複製ネットワークに対して様々な負荷を生成させることができる。負荷は、情報にアクセスすること、情報を記憶すること、１つまたは複数のデータストアに記憶された情報を修正すること、実行されることになる計算を実行することなどの要求、サーバへの複数の同時接続、ならびに概してネットワークによって実行可能な任意のアクションを含むことができる。
【００５０】
さらに、図１０および図１１に関連して説明されるプロセスの一部と本明細書で説明される他のプロセスの一部を組み合わせることも可能である。たとえばネットワークイベントを記録した後、実行されたいずれかの修正がネットワーク性能を向上させたかどうかを決定できるように、修正された複製ネットワーク上でのシミュレーションに使用することが可能である。本開示の趣旨の範囲内にあるものとする他の変形形態も企図される。
【００５１】
条項
第１条
ネットワーク複製のためのコンピュータ実装方法であって、
実行可能命令によって構成される１つまたは複数のコンピュータシステムの制御の下で、
顧客によってリモートに提供される命令に少なくとも部分的に基づいて、第１のネットワークを動作することであり、第１のネットワークが１つまたは複数の物理ネットワークをオーバレイする構成内に複数の仮想ネットワークデバイスを含む、動作すること、
顧客から第１のネットワークを複製する旨のウェブサービス要求を受信すること、
ウェブサービス要求に応答して、
第１のネットワークに関する構成情報をデータストアから取り出すこと、
取り出された構成情報からネットワーク複製プランを生成すること、
ネットワーク複製プランに従って複数の仮想複製デバイスを作成することであり、それぞれの仮想複製デバイスが第１のネットワークのデバイスに対応する、作成すること、
ネットワーク複製プランに従って、第１のネットワークが１つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で１つまたは複数の物理ネットワークをオーバレイする複製ネットワーク内で、作成された仮想複製デバイスを構成すること、および
顧客によってリモートに提供される命令に少なくとも部分的に基づいて、複製ネットワークを動作すること、
を含む、コンピュータ実装方法。
【００５２】
第２条
第１のネットワークが、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された１つまたは複数のデバイスを含む、第１条に記載のコンピュータ実装方法。
【００５３】
第３条
仮想複製デバイスのうちの１つまたは複数が、第１のネットワークの１つまたは複数の対応するデバイスによって使用される１つまたは複数の記憶された状態表示から依存して動作する、第１条に記載のコンピュータ実装方法。
【００５４】
第４条
仮想複製デバイスのうちの１つまたは複数が、第１のネットワークの対応するデバイスの完全なコピーである、第１条に記載のコンピュータ実装方法。
【００５５】
第５条
第１のネットワークがより大きなネットワークのサブネットワークであり、第１のネットワークを複製する旨の要求を受信することが１つまたは複数のフィルタリング基準を受信することを含み、方法が第１のネットワークを決定するためにより大きなネットワークに対して１つまたは複数のフィルタリング基準を適用することをさらに含む、第１条に記載のコンピュータ実装方法。
【００５６】
第６条
第１のネットワークの仮想ネットワークデバイスのうちの少なくとも１つがテンプレートを使用して作成されたものであり、複数の仮想複製デバイスを作成することが、仮想ネットワークデバイスのうちの当該少なくとも１つに対応する少なくとも１つの仮想複製デバイスを作成するためにテンプレートを使用することを含む、第１条に記載のコンピュータ実装方法。
【００５７】
第７条
ネットワーク複製のためのコンピュータ実装方法であって、
実行可能命令によって構成される１つまたは複数のコンピュータシステムの制御の下で、
１つまたは複数の仮想デバイスを含み、１つまたは複数の物理ネットワークをオーバレイする、第１のネットワークを複製する旨の要求を受信すること、
要求の受信に応答して、それぞれが第１のネットワーク内のデバイスに対応する複数の仮想複製デバイスを作成すること、および第１のネットワークが１つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で、１つまたは複数の物理ネットワークをオーバレイするように複製ネットワーク内に作成された仮想複製デバイスを配置すること、ならびに
複製ネットワークへのアクセスを提供すること、
を含む、コンピュータ実装方法。
【００５８】
第８条
複製ネットワークへのアクセスを提供することが、
複製ネットワークのテストを実行するための命令を受信すること、
複製ネットワークのテストを実行すること、および
テストの結果を提供すること、
を含む、第７条に記載のコンピュータ実装方法。
【００５９】
第９条
第１のネットワークに関する１つまたは複数のネットワークイベントを記録することをさらに含み、
複製ネットワークへのアクセスを提供することが、記録された１つまたは複数のネットワークイベントを複製ネットワーク上で発生させることを含む、
第７条に記載のコンピュータ実装方法。
【００６０】
第１０条
１つまたは複数のネットワークイベントを記録することが第１のネットワークに影響を与える１つまたは複数のＡＰＩ呼出しを記録することを含み、記録された１つまたは複数のネットワークイベントを複製ネットワーク上で発生させることが、１つまたは複数のＡＰＩ呼出しを複製ネットワークに関連して実行させることを含む、第９条に記載のコンピュータ実装方法。
【００６１】
第１１条
複製ネットワークへのアクセスを提供することが、
複製ネットワークを修正すること、および
修正された複製ネットワーク上でテストを実行すること
を含む、第７条に記載のコンピュータ実装方法。
【００６２】
第１２条
複製ネットワークを修正することが、
複製ネットワークのうちの少なくとも１つのデバイスの容量を変更すること、複製ネットワークに対してパケット損失の変化を発生させること、複製ネットワークにおける障害率の変化を発生させること、および１つまたは複数の仮想複製デバイスを、置換される１つまたは複数の仮想複製デバイスとは異なるように実行する別の仮想複製デバイスに置換すること、のうちの少なくとも１つを含む、第１１条に記載のコンピュータ実装方法。
【００６３】
第１３条
第１のネットワークの仮想ネットワークデバイスのうちの少なくとも１つがテンプレートを使用して作成されたものであり、複数の仮想複製デバイスを作成することが、仮想ネットワークデバイスのうちの当該少なくとも１つに対応する少なくとも１つの仮想複製デバイスを作成するためにテンプレートを使用することを含む、第７条に記載のコンピュータ実装方法。
【００６４】
第１４条
複数のデバイスを作成することが、
第１のネットワークの特定のデバイスについて、特定のデバイスがステートフルデバイスであるかどうかを識別すること、および
特定のデバイスがステートフルデバイスであるものと決定された場合、特定のデバイスによって使用される１つまたは複数の記憶された状態表示から依存して動作する特定のデバイスのコピーを作成すること、
を含む、第７条に記載のコンピュータ実装方法。
【００６５】
第１５条
１つまたは複数のコンピュータ読取り可能記憶媒体であって、１つまたは複数のコンピュータシステムによって実行された場合、少なくとも
１つまたは複数の仮想デバイスを含み、１つまたは複数の物理ネットワークをオーバレイする、第１のネットワークを複製する旨の要求を受信すること、
要求の受信に応答して、第１のネットワークと整合するトポロジを使用して１つまたは複数の物理ネットワークをオーバレイし、それぞれが第１のネットワークの１つまたは複数の仮想デバイスのうちの１つに対応する１つまたは複数の仮想複製デバイスを含む、複製ネットワークを作成すること、および
複製ネットワークへのアクセスを提供すること、
を１つまたは複数のコンピュータシステムにまとめて実行させる命令が、その上にまとめて記憶された、１つまたは複数のコンピュータ読取り可能記憶媒体。
【００６６】
第１６条
複製ネットワークへのアクセスを提供することが、
複製ネットワークのテストを実行するための命令を受信すること、
複製ネットワークのテストを実行すること、および
テストの結果を提供すること、
を含む、第１５条に記載の１つまたは複数のコンピュータ読取り可能記憶媒体。
【００６７】
第１７条
命令が、少なくとも
第１のネットワークに関する１つまたは複数のネットワークイベントを記録することを、さらに１つまたは複数のコンピュータシステムにまとめて実行させ、
複製ネットワークへのアクセスを提供することが、記録された１つまたは複数のネットワークイベントを複製ネットワーク上で発生させることを含む、
第１５条に記載の１つまたは複数のコンピュータ読取り可能記憶媒体。
【００６８】
第１８条
複製ネットワークを作成することが、第１のネットワークの１つまたは複数の仮想デバイスのセットの識別子と同一の識別子を有するように、少なくとも複製仮想デバイスのサブセットを構成することを含む、第１５条に記載の１つまたは複数のコンピュータ読取り可能記憶媒体。
【００６９】
第１９条
識別子がインターネットプロトコルアドレスである、第１５条に記載の１つまたは複数のコンピュータ読取り可能記憶媒体。
【００７０】
第２０条
ネットワークを複製するように動作可能なコンピュータシステムであって、
１つまたは複数のプロセッサと、
１つまたは複数のプロセッサによって実行された場合、少なくとも、
１つまたは複数の仮想デバイスを含み、１つまたは複数の物理ネットワークをオーバレイする、第１のネットワークを複製する旨の要求を受信すること、
要求の受信に応答して、それぞれが第１のネットワーク内のデバイスに対応する複数の仮想複製デバイスを作成すること、および第１のネットワークが１つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で、１つまたは複数の物理ネットワークをオーバレイするように仮想複製ネットワーク内に作成されたデバイスを配置すること、ならびに
複製ネットワークへのアクセスを提供すること、
をコンピュータシステムに実行させる実行可能命令を含む、メモリと、
を備える、コンピュータシステム。
【００７１】
第２１条
少なくとも作成された複数の仮想複製デバイスのサブセットが、第１のネットワーク内のデバイスのコピーオンライトオーバレイである、第２０条に記載のコンピュータシステム。
【００７２】
第２２条
複製ネットワークへのアクセスを提供することが、
複製ネットワークのテストを実行するための命令を受信すること、
複製ネットワークのテストを実行すること、および
テストの結果を提供すること、
を含む、第２０条に記載のコンピュータシステム。
【００７３】
第２３条
テストを実行するのに先立ち、複製ネットワークを修正することをさらに含む、第２２条に記載のコンピュータシステム。
【００７４】
第２４条
第１のネットワークが、サーバ、記憶ボリューム、スイッチ、ハブ、ファイアウォール、ブリッジ、およびゲートウェイからなるグループから選択された１つまたは複数のデバイスを含む、第２０条に記載のコンピュータシステム。
【００７５】
第２５条
ネットワーク複製のコンピュータ実装方法であって、
実行可能命令によって構成される１つまたは複数のコンピュータシステムの制御の下で、
１つまたは複数の物理ネットワークをオーバレイする第１のネットワークを複製する旨の要求を受信すること、ならびに
要求の受信に応答して、
複数の仮想デバイスを作成すること、および複数の仮想デバイスが、第１のネットワークが１つまたは複数の物理ネットワークをオーバレイする様式と同様の様式で１つまたは複数の物理ネットワークをオーバレイするような様式で、互いに通信可能に接続されるように、仮想ネットワーク内に複数のデバイスを構成すること
を含み、複数のデバイスが、第１のネットワークの１つまたは複数のデバイスに対応する１つまたは複数の仮想デバイスを含む、コンピュータ実装方法。
【００７６】
第２６条
要求を受信することが、第１のネットワークの１つまたは複数のデバイスに対する忠実度を指定する情報を受信することを含み、
新しい仮想ネットワークを作成することが、指定された忠実度に従って１つまたは複数の複製仮想デバイスを作成することを含む、
第２５条に記載のコンピュータ実装方法。
【００７７】
第２７条
要求がユーザからリモートに受信され、
複数の仮想デバイスを作成することが、１人または複数の他のユーザのための１つまたは複数の他のネットワークが内部で動作される設備内で実行される、
第２５条に記載のコンピュータ実装方法。
【００７８】
第２８条
第１のネットワークを複製する旨の要求を受信することが１つまたは複数のフィルタリング基準を受信することを含み、方法が当該少なくとも第１のネットワークのサブセットを決定するためにより大きなネットワークに対して１つまたは複数のフィルタリング基準を適用することをさらに含む、第２５条に記載のコンピュータ実装方法。
【００７９】
第２９条
第１のネットワークが仮想オーバレイネットワークである、第２５条に記載のコンピュータ実装方法。
【００８０】
様々な実施形態は、いくつかの場合、１つまたは複数のユーザコンピュータ、コンピューティングデバイス、またはいくつかのアプリケーションのうちのいずれかを動作するように使用可能な処理デバイスを含むことが可能な、多種多様な動作環境内でさらに実装可能である。ユーザデバイスまたはクライアントデバイスは、標準オペレーティングシステムを実行するデスクトップまたはラップトップコンピュータなどのいくつかの汎用パーソナルコンピュータ、ならびにモバイルソフトウェアを実行し、いくつかのネットワーキングプロトコルおよびメッセージングプロトコルをサポートすることが可能な、セルラ式、無線、およびハンドヘルドのデバイスのうちのいずれかを含むことができる。こうしたシステムは、開発およびデータベース管理などの目的で様々の市販のオペレーティングシステムおよび他の知られたアプリケーションのいずれかを実行する、いくつかのワークステーションを含むことも可能である。これらのデバイスは、ダミー端末、シンクライアント（ｔｈｉｎ−ｃｌｉｅｎｔ）、ゲームシステム、およびネットワークを介して通信可能な他のデバイスなどの、他の電子デバイスを含むことも可能である。
【００８１】
ほとんどの実施形態は、ＴＣＰ／ＩＰ、ＯＳＩ、ＦＴＰ、ＵＰｎＰ、ＮＦＳ、ＣＩＦＳ、およびＡｐｐｌｅＴａｌｋなどの、様々な市販のプロトコルのいずれかを使用する通信をサポートするための、当業者によく知られた少なくとも１つのネットワークを利用する。たとえばネットワークは、ローカルエリアネットワーク、ワイドエリアネットワーク、仮想私設ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、およびそれらの任意の組合せとすることができる。
【００８２】
ウェブサーバを利用する実施形態では、ウェブサーバは、ＨＴＴＰサーバ、ＦＴＰサーバ、ＣＧＩサーバ、データサーバ、Ｊａｖａ（登録商標）サーバ、およびビジネスアプリケーションサーバを含む、様々なサーバまたは中間層アプリケーションのいずれかを実行することができる。サーバは、Ｊａｖａ（登録商標）（Ｒ）、Ｃ、Ｃ＃、もしくはＣ＋＋などの任意のプログラミング言語、またはＰｅｒｌ、Ｐｙｔｈｏｎ、もしくはＴＣＬなどの任意のスクリプト言語、ならびにそれらの組合せで作成された、１つまたは複数のスクリプトまたはプログラムとして実装可能な、１つまたは複数のウェブアプリケーションを実行することなどにより、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行することも可能である。サーバは、Ｏｒａｃｌｅ（Ｒ）、Ｍｉｃｒｏｓｏｆｔ（Ｒ）、Ｓｙｂａｓｅ（Ｒ）、およびＩＢＭ（Ｒ）から市販されているものを限定なしに含む、データベースサーバを含むことも可能である。
【００８３】
環境は、前述のように、多様なデータストアならびに他のメモリおよび記憶媒体を含むことができる。これらは、１つまたは複数のコンピュータに対してローカルな（および／または内部に常駐した）、あるいはネットワーク全体にわたってコンピュータのいずれかまたはすべてからリモートの、記憶媒体上などの、様々な位置に常駐可能である。実施形態の特定のセットでは、情報は当業者によく知られたストレージエリアネットワーク（「ＳＡＮ」）内に常駐可能である。同様に、コンピュータ、サーバ、または他のネットワークデバイスに寄与する機能を実行するために必要な任意のファイルは、適宜、ローカルおよび／またはリモートに記憶可能である。システムがコンピュータ化されたデバイスを含む場合、それぞれのこうしたデバイスは、バスを介して電気的に結合可能なハードウェア要素を含むことが可能であり、この要素は、たとえば少なくとも１つの中央処理ユニット（ＣＰＵ）、少なくとも１つの入力デバイス（たとえばマウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、および少なくとも１つの出力デバイス（たとえばディスプレイデバイス、プリンタ、またはスピーカ）を含む。こうしたシステムは、ディスクドライブ、光記憶デバイス、およびランダムアクセスメモリ（「ＲＡＭ」）または読取り専用メモリ（「ＲＯＭ」」などのソリッドステート記憶デバイスなどの、１つまたは複数の記憶デバイス、ならびに取外し可能媒体デバイス、メモリカード、フラッシュカードなどを含むことも可能である。
【００８４】
こうしたデバイスは、前述のように、コンピュータ読取り可能記憶媒体リーダ、通信デバイス（たとえばモデム、ネットワークカード（無線または有線）、赤外線通信デバイスなど）、および作業メモリを含むことも可能である。コンピュータ読取り可能記憶媒体リーダは、リモート、ローカル、固定、および／または取外し可能の記憶デバイスを表す、コンピュータ読取り可能記憶媒体、ならびにコンピュータ読取り可能情報を一時的および／またはより永続的に含む、記憶する、伝送する、および取り出すための記憶媒体に、接続するか、またはそれらを受け取るように構成可能である。システムおよび様々なデバイスは、典型的には、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステムおよびアプリケーションプログラムを含む、少なくとも１つの作業メモリデバイス内に配置された、いくつかのソフトウェアアプリケーション、モジュール、サービス、または他の要素を含むことにもなる。代替的な実施形態は、上記からの多数の変形形態を有することが可能であることを理解されたい。たとえば、ハードウェア、ソフトウェア（アプレットなどのポータブルソフトウェアを含む）、またはその両方内で、カスタマイズされたハードウェアを使用すること、および／または特定の要素を実装することも可能である。さらに、ネットワーク入力／出力デバイスなどの他のコンピューティングデバイスへの接続も採用可能である。
【００８５】
コードまたはコードの一部を含めるための記憶媒体およびコンピュータ読取り可能媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶デバイスを含む、コンピュータ読取り可能命令、データ構造、プログラムモジュール、もしくは他のデータなどの情報の、記憶および／または伝送用の任意の方法または技術で実装された、揮発性および不揮発性媒体、取外し可能および取外し不能媒体などであるがこれらに限定されない記憶媒体および通信媒体、あるいは所望の情報を記憶するために使用可能な、かつシステムデバイスによるアクセスが可能な、任意の他の媒体を含む、当分野で知られているかまたは使用されている任意の適切な媒体を含むことができる。当業者であれば、本明細書で提供された開示および教示に基づき、様々な実施形態を実装するための他の手段および／または方法を理解されよう。
【００８６】
したがって本明細書および図面は、限定的ではなく例示的な意味であるとみなされる。しかしながら、特許請求の範囲に示された本発明のより広義な趣旨および範囲から逸脱することなく、本明細書および図面に対する様々な修正および変更が実行可能であることは明白であろう。
【００８７】
他の変形形態は本開示の趣旨の範囲内にある。したがって、開示された技法は様々な修正形態および代替の構成が可能であるが、そのうちのある例示の実施形態が図面に示されており、上記で詳細に説明された。しかしながら、本発明を開示された特定の形式に限定することは意図されておらず、反対に、添付の特許請求の範囲に定義された本発明の趣旨および範囲内にあるすべての修正形態、代替の構成、および等価物をカバーするよう意図されていることを理解されたい。
【００８８】
開示された実施形態を記述する文脈での（特に以下の特許請求の範囲の文脈での）の用語「ａ」および「ａｎ」および「ｔｈｅ」および同様の指示対象の使用は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、単数形および複数形の両方をカバーするものと解釈されるものである。用語「ｃｏｍｐｒｉｓｉｎｇ（備える、含む）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、および「ｃｏｎｔａｉｎｉｎｇ（含む、含める）」は、別段に記載されていない限り、オープンエンドの（すなわち「含むが限定されない」ことを意味する）用語として解釈されるものである。用語「接続された」は、たとえ何らかの介入が存在していても、部分的または全体的に含まれる、接続される、または互いに接合されるとして解釈されるものである。本明細書での値の範囲の列挙は、本明細書で別段に指示されていない限り、範囲内にあるそれぞれ別の値を個別に指す省略方法として働くことが単に意図されており、それぞれ別の値は、あたかも本明細書で個別に列挙されているかのように本明細書に組み込まれている。本明細書に記載されたすべての方法は、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、任意の好適な順序で実行可能である。本明細書で提供された任意およびすべての例または例示の言い回し（たとえば「などの」）は、本発明の実施形態を単により良く明らかにすることが意図されており、別段に請求されていない限り、本発明の範囲に限定を課すものではない。本明細書内のいかなる言い回しも、本発明の実施に不可欠ないずれかの非請求要素を示すものと解釈されるべきではない。
【００８９】
本明細書では、本発明を実施するための発明者等に知られた最良の方法を含む、本開示の好ましい実施形態が記述されている。当業者であれば、前述の説明を読むことでそれらの好ましい実施形態の変形形態が明らかとなろう。発明者等は、こうした変形形態が適切であれば当業者等が採用するものと予期し、発明者等は、本明細書で具体的に記載された以外の方法で本発明が実施されることを意図している。したがって本発明は、適用可能な法律によって許可された場合、添付の特許請求の範囲に記載された対象のすべての修正形態および等価物を含む。さらに、本明細書で別段に指示されていない限り、または文脈と明らかに矛盾していない限り、すべての可能な変形形態における前述の要素の任意の組合せが本発明によって包含される。
【００９０】
本明細書に記載された出版物、特許出願、および特許を含むすべての参照文献は、それぞれの参照文献が個別および具体的に参照により組み込まれるものと示され、さらにその全文が本明細書に示されるのと同程度に、参照により本書に組み込まれている。
【図１】
0005937724.tif 000002
【図２】
0005937724.tif 000003
【図３】
0005937724.tif 000004
【図４】
0005937724.tif 000005
【図５】
0005937724.tif 000006
【図６】
0005937724.tif 000007
【図７】
0005937724.tif 000008
【図８】
0005937724.tif 000009
【図９】
0005937724.tif 000010
【図１０】
0005937724.tif 000011
【図１１】
0005937724.tif 000012