(57)【要約】  データセンタ内の第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する方法及び装置を提供する。仮想マシンマネジャは、仮想ネットワーク内の少なくとも１つのホストに、仮想マシンのカスタマアドレスをマイグレートされた仮想マシンのプロバイダアドレスにマッピングする更新マッピングポリシを配信しても良い。更新マッピングポリシは、仮想ネットワーク内のホストがマイグレートされた仮想マシンと通信することを可能にする。更新マッピングポリシは、シャドウポリシであり得る。シャドウポリシは、仮想マシンのライブマイグレーションが完了する前に仮想マシンマネジャにより仮想ネットワーク内のホストへ送信され、トリガされるまで受信ホストにより非アクティブ状態のままにされる。仮想マシンマネジャは、ライブマイグレーションが完了すると、仮想ネットワーク内のホストにシャドウポリシをアクティブにするよう通知する。
2014525204.tif 000002
【特許請求の範囲】
【請求項１】
第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する方法であって、
仮想マシンマネジャにより、前記仮想マシンが前記第１のホストから前記第２のホストへマイグレートされると決定するステップと、
前記仮想マシンマネジャにより、前記仮想マシンを有する仮想ネットワーク内の第３のホストへ、前記仮想マシンのカスタマアドレスを前記第２のホストにある前記のマイグレートされた仮想マシンのプロバイダアドレスにマッピングする更新マッピングポリシを送信するステップと、
を有する方法。
【請求項２】
前記更新マッピングポリシを送信するステップは、前記仮想マシンのライブマイグレーションが完了する前に、シャドウマッピングポリシを送信するステップを有する、請求項１に記載の方法。
【請求項３】
前記更新マッピングポリシを送信するステップは、前記第１のホストによる要求に応答して、前記第３のホストへ前記更新マッピングポリシを送信するステップを有する、請求項１に記載の方法。
【請求項４】
前記更新マッピングポリシを送信するステップは、前記第３のホストによる要求に応答して、前記第３のホストへ前記更新マッピングポリシを送信するステップを有する、請求項１に記載の方法。
【請求項５】
前記第１のホストが前記第１のホストにある前記仮想マシン宛のパケットを受信し、前記の受信したパケットを前記第２のホストにある前記マイグレートされた仮想マシンへ転送するステップ、を更に有する請求項１に記載の方法。
【請求項６】
コンピューティング装置により実行されると請求項１に記載の方法を実行させるコンピュータ実行可能命令をエンコードされたコンピュータ可読記憶媒体。
【請求項７】
第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する方法であって、
第３のホストにより、前記仮想マシンのカスタマアドレスを前記第２のホストにある前記のマイグレートされた仮想マシンのプロバイダアドレスにマッピングするシャドウマッピングポリシを受信するステップと、
前記第３のホストにより、前記シャドウマッピングポリシがアクティブにされるまで、前記仮想マシンと通信するために現在のマッピングポリシを使用するステップと、
前記第３のホストにより、前記前記シャドウマッピングポリシがアクティブにされた後、前記仮想マシンと通信するために前記シャドウマッピングポリシを使用するステップと、
を有する方法。
【請求項８】
前記第３のホストにより、前記シャドウマッピングポリシに適合するパケットを受信し、前記シャドウマッピングポリシに適合するパケットの受信に応答して、前記シャドウマッピングポリシをアクティブにするステップ、を更に有する請求項７に記載の方法。
【請求項９】
コンピューティング装置により実行されると請求項７に記載の方法を実行させるコンピュータ実行可能命令をエンコードされたコンピュータ可読記憶媒体。
【請求項１０】
データセンタ内の第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する仮想マシンマネジャであって、
処理装置と、命令をエンコードされた記憶装置と、を有し、前記命令は、前記処理装置により実行されると、前記処理装置に、
前記仮想マシンが前記第１のホストから前記第２のホストへマイグレートされると決定し、
前記仮想マシンを含む仮想ネットワーク内の少なくとも１つの第３のホストへ、前記仮想マシンのカスタマアドレスを前記第２のホストにある前記のマイグレートされた仮想マシンのプロバイダアドレスにマッピングする更新マッピングポリシを送信する、
よう動作させる、仮想マシンマネジャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１のホストシステムから第２のホストシステムへの仮想マシンのライブマイグレーションに関し、より詳細には、仮想マシンのライブマイグレーション中及びそれに続くパケットロスを制限する方法及び装置に関する。
【背景技術】
【０００２】
データセンタは、高速スイッチ及びルータにより相互接続される数百又は数千台ものサーバを有し得る。クラウドデータセンタは、複数の顧客に、ウェブアプリケーション、電子メールサービス、検索エンジンサービス等のような種々のサービスを提供し得る。近年、データセンタは、データセンタハブへの企業ITの大規模合併、及びクラウドコンピューティングサービスプロバイダの出現を伴うコンピュータ関係の変容に遭遇している。
【０００３】
仮想マシン（Virtual  machine：VM）技術は、１又は複数のオペレーティングシステム、又は仮想マシンを１つの物理的ホストシステムで同時に動作させる。仮想マシン技術の利点は、広く認識されてきている。中でも、単一のホストシステムで複数の仮想マシンを動作させることは有利である。
【０００４】
ライブマイグレーションは、動作中の仮想マシンを、あるホストシステムから別のホストシステムへ、該仮想マシンで動作中のオペレーティングシステムの重大な中断無しに転送させる。ライブマイグレーションの目標は、動作中の仮想マシンの重大な中断を回避することである。しかしながら、特定のパケットロスがライブマイグレーション中に許容可能である。
【０００５】
仮想マシンのライブマイグレーションには多くの理由が存在する。これらは、現在仮想マシンをホスティング中のホストシステムでの負荷の増大、ホストシステム内の障害の発生、計画された又は計画されていないメンテナンスによる仮想マシンをホスティングするホストシステムの非可用性を含む。
【０００６】
ライブマイグレーション中、マイグレーションされる仮想マシンと他の仮想マシンとの間のアクティブなコネクションが維持されることが望ましい。仮想ネットワークでは、各カスタマアドレスはプロバイダアドレスにマッピングされ、マイグレーション中の仮想マシンのプロバイダアドレスの変更は、他の仮想マシンが古いアドレスマッピングを有するために、パケット落ちを生じさせる。時間期間に渡るパケットロスは、タイムアウトによるコネクション断を生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、データセンタ内の第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する方法及び装置を提供する。幾つかの実施形態では、仮想マシンマネジャは、仮想ネットワーク内の少なくとも１つのホストに、仮想マシンのカスタマアドレスをマイグレートされた仮想マシンのプロバイダアドレスにマッピングする更新マッピングポリシを効率的に分散する。更新マッピングポリシは、仮想ネットワーク内のホストがマイグレートされた仮想マシンと通信できるようにする。
【課題を解決するための手段】
【０００８】
幾つかの実施形態では、更新マッピングポリシは、シャドウポリシである。シャドウポリシは、仮想マシンのライブマイグレーションが完了する前に、仮想マシンマネジャにより仮想ネットワーク内のホストへ送信され、トリガされるまで受信側ホストにより非アクティブな状態に維持される。仮想マシンマネジャは、ライブマイグレーションが完了すると、仮想ネットワーク内のホストにシャドウポリシをアクティブにするよう通知しても良い。
【０００９】
シャドウポリシを受信するホストは、シャドウポリシがアクティブになるまで、仮想マシンと通信するために現在のマッピングポリシを用い、シャドウポリシがアクティブになった後に、仮想マシンと通信するためにシャドウポリシを用いる。幾つかの場合には、シャドウポリシは、ライブマイグレーションが完了したという通知を仮想マシンマネジャから受信するのに応答して、アクティブになる。他の場合には、ホストは、マイグレートされた仮想マシンからシャドウポリシに適合するパケットを受信するのに応答して、シャドウポリシをアクティブにする。
【００１０】
更なる実施形態では、第１のホストは、仮想ネットワーク内の全てのホストが更新マッピングポリシを受信するまで、転送ポリシに従って仮想マシン宛のパケットを転送する。第１のホストが仮想ネットワーク内の全てのホストが更新マッピングポリシを受信したという通知を受信すると、転送ポリシが非アクティブにされる。
【００１１】
更なる実施形態では、第１のホストは、仮想マシンマネジャに、第３のホストから古いマッピングポリシに従って送信されたパケットを受信するのに応答して更新マッピングポリシを第３のホストへ送信するよう要求しても良い。上述の実施形態は、「レイジー（lazy）プッシュ」技術に従って反応型ポリシ更新を実行する。
【００１２】
更なる実施形態では、第３のホストは、仮想マシンマネジャに、現在のマッピングポリシに適合しないパケットをマイグレートされた仮想マシンから受信するのに応答して、更新マッピングポリシを送信するよう要求しても良い。上述の実施形態は、「レイジー（lazy）プル」技術に従って反応型ポリシ更新を実行する。
【００１３】
更なる実施形態では、第１のホストは、仮想ネットワーク内の１又は複数の他のホストへ更新マッピングポリシを直接送信しても良い。更新マッピングポリシは、更新マッピングポリシに適合しないパケットを受信するのに応答して又は仮想ネットワーク内の他のホストの中の１つにより要求されると、第１のホストにより送信されても良い。
【００１４】
本発明の一態様によると、第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する方法が提供される。方法は、仮想マシンマネジャにより、仮想マシンが第１のホストから第２のホストへマイグレートされると決定するステップと、仮想マシンマネジャにより、該仮想マシンを有する仮想ネットワーク内の少なくとも１つの第３のホストに、前記仮想マシンのカスタマアドレスを前記第２のホストにあるマイグレートされた仮想マシンのプロバイダアドレスにマッピングする更新マッピングポリシを送信するステップと、を有する。
【００１５】
本発明の別の態様によると、第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する方法が提供される。方法は、第３のホストにより、仮想マシンのカスタマアドレスを第２のホストにあるマイグレートされた仮想マシンのプロバイダアドレスにマッピングするシャドウマッピングポリシを受信するステップと、前記第３のホストにより、前記シャドウマッピングポリシがアクティブになるまで、前記仮想マシンと通信するために現在のマッピングポリシを用いるステップと、前記第３のホストにより、前記シャドウマッピングポリシがアクティブになった後に前記仮想マシンと通信するために前記シャドウマッピングポリシを用いるステップと、を有する。
【００１６】
本発明の更なる態様によると、データセンタ内の第１のホストから第２のホストへの仮想マシンのライブマイグレーションを制御する仮想マシンマネジャが提供される。仮想マシンマネジャは、処理装置と符号化された命令を有する記憶装置とを有する。前記命令は、前記処理装置により実行されると、仮想マシンが第１のホストから第２のホストへマイグレートされると決定し、前記仮想マシンを有する仮想ネットワーク内の少なくとも１つの第３のホストに、前記仮想マシンのカスタマアドレスを前記第２のホストにあるマイグレートされる仮想マシンのプロバイダアドレスにマッピングする更新マッピングポリシを送信するよう構成される。
【図面の簡単な説明】
【００１７】
本発明の良好な理解のために、参照することにより本願明細書に組み込まれる添付の図面を参照する。
【図１】仮想マシンのライブマイグレーションを説明する、データセンタの概略ブロック図である。
【図２】ライブマイグレーションの簡略線図である。
【図３】マッピングポリシの更新を説明する、ライブマイグレーションの簡略線図である。
【図４】前方パケット配信を説明する、データセンタの概略ブロック図である。
【図５】前方パケット配信を説明するフローチャートである。
【図６】逆方向トンネリングを説明する、データセンタの概略ブロック図である。
【図７】逆方向トンネリングを説明するフローチャートである。
【図８】シャドウマッピングポリシの使用を説明する、データセンタの概略ブロック図である。
【図９】シャドウマッピングポリシを提供するときに仮想マシンマネジャにより実行される処理のフローチャートである。
【図１０】シャドウマッピングポリシを利用するときに第３のホストにより実行される処理のフローチャートである。
【図１１】レイジープッシュ技術に従う反応型ポリシ更新を説明する、データセンタの概略ブロック図である。
【図１２】レイジープッシュ技術に従う反応型ポリシ更新を説明するフローチャートである。
【図１３】レイジープル技術に従う反応型ポリシ更新を説明する、データセンタの概略ブロック図である。
【図１４】レイジープッシュ技術に従う反応型ポリシ更新を説明するフローチャートである。
【図１５】ホストと仮想マシンの概略ブロック図である。
【図１６】コンピューティング装置の一実施形態の概略ブロック図である。
【発明を実施するための形態】
【００１８】
図１は、本発明の特徴を組み込むデータセンタの概略ブロック図を示す。データセンタ１０は、データセンタネットワークにより相互接続される第１のホスト１２、第２のホスト１４及び第３のホスト１６を有しても良い。本願明細書で用いるように、用語「ホスト」は、物理的装置、例えば図１６に示し後述するような通常サーバ又は他のコンピューティング装置を表す。データセンタ１０は、仮想マシンマネジャ２２を更に有する。仮想マシンマネジャ２２のタスクには、後述の仮想マシンのライブマイグレーションの制御が含まれる。
【００１９】
データセンタ１０内の各ホストは、１又は複数の仮想マシン（virtual  machine：VM）をホスティングしても良い。VMは、他の仮想マシンと独立にアプリケーションを動作できる完全なオペレーティングシステムを有しても良い。図１に示すように、第１のホスト１２は仮想マシン３０、３２、３４をホスティングし、第２のホスト１４はライブマイグレーション後に仮想マシン３０ｍをホスティングし、第３のホスト１６は仮想マシン４０、４２、４４をホスティングする。後述するように、仮想マシン３０は、ライブマイグレーションにより第１のホスト１２から第２のホスト１４へ転送される。
【００２０】
データセンタ１０内の各ホストは、データパケットをホスト内の仮想マシンへ及びそれからルーティングするスイッチを有しても良い。単一の仮想マシンの場合には、スイッチは必要ない。各仮想マシンは、該仮想マシンが存在するホストを介した外部通信のためのネットワークアダプタを有しても良い。各ホストは、ライブマイグレーションを制御し、マッピングポリシテーブルを更新し、及び後述のようにパケットを転送し、また本発明と関係のない他のタスクのためのソフトウェアを更に有する。
【００２１】
図１の例では、仮想マシン３０、３２、４０は、第１の仮想ネットワークの一部であり又は独立したグループであり、仮想マシン３４、４２、４４は第２の仮想ネットワークの一部であり又は独立したグループである。２つの仮想ネットワークは、データセンタの２つの異なる顧客（カスタマ）に対応しても良く、２つの仮想ネットワークの仮想マシンが同一のホストによりホスティングされ得る場合でも互いに隔離される。
【００２２】
図１に更に示すように、各仮想マシンは、カスタマアドレスAA（アプリケーションアドレス）及びプロバイダアドレスＬＡ（ロケーションアドレス）に関連付けられる。カスタマアドレスAAは仮想マシンのIPアドレスに対応し、プロバイダアドレスLAは複数のホストのうちの１つの中の仮想マシンの物理位置に対応する。プロバイダアドレスＬＡは、ライブマイグレーションの結果変化するが、カスタマアドレスAAは固定されたままである。したがって、例えば、第１のホスト１２内の仮想マシン３２は、カスタマアドレスAA２及びプロバイダアドレスＬＡ２を有する。異なる仮想ネットワーク内の２以上の仮想マシンは同じカスタマアドレスAAを有し得るが、各仮想マシンのプロバイダアドレスLAはユニークである。カスタマアドレスAA２及びプロバイダアドレスLA２は、一緒に、仮想マシン３２のためのマッピングポリシを定めるアドレス対AA２：LA２を形成する。マッピングポリシは、後述のように仮想ネットワーク内の仮想マシン間の通信で用いられる。
【００２３】
仮想マシンに対する多数のマッピングポリシは、グループ化されて、図１に示す仮想ネットワークポリシ５０のような仮想ネットワークポリシを形成する。ポリシ５０は、第１のホスト１２内に存在し、仮想マシン３０、３２、４０を有し他の仮想マシン（図示しない）を有しても良い第１の仮想ネットワークと関連付けられる。ポリシ５０内の各エントリは、仮想マシンのカスタマアドレスAA及びプロバイダアドレスＬＡを有するマッピングポリシを含む。仮想ネットワークポリシ内の各エントリは、必要に応じて追加情報を有しても良い。図１に更に示すように、第２のホスト１４は仮想ネットワークポリシ５２を有し、第３のホスト１６は仮想ネットワークポリシ５４を有し、仮想マシンマネジャ２２は仮想ネットワークポリシ５６を有する。ライブマイグレーションが無いとき、ポリシ５０、５２、５４は、現在のマッピング情報を有する。ライブマイグレーションと関連するポリシの更新を以下に議論する。理解されるべきことに、各仮想ネットワークポリシは、テーブルのようなマッピング情報を含む任意の構造を有しても良い。
【００２４】
上述のように、仮想ネットワークポリシ５０は、第１の仮想ネットワーク内の各仮想マシンのためのマッピングポリシを有する。追加仮想ネットワークポリシは、追加仮想ネットワークに対応する。例えば、第１のホスト１２内の及び第３のホスト１６内の別個のポリシは、仮想マシン３４、４２、４４を含む第２の仮想ネットワークのためのマッピングポリシを有する。
【００２５】
図１に更に示すように、仮想マシン３０は、ライブマイグレーションにより、矢印４８により示すように第１のホスト１２から第２のホスト１４へ転送され、マイグレートされた仮想マシン３０ｍになる。ライブマイグレーションは、動作中の仮想マシンを、あるホストシステムから別のホストシステムへ、該仮想マシンの動作の重大な中断無しに転送させる。ライブマイグレーションは、仮想マシンマネジャ２２により制御されても良い。
【００２６】
図２は、ライブマイグレーションの簡略線図である。時間６０において、マイグレーション要求が行われる。ライブマイグレーションは、マイグレーション設定、ゲストメモリ転送及び状態転送を有する。ライブマイグレーション技術の詳細は従来知られているので詳細は記載しない。図２の上の線６２により示すように、マイグレーション設定及びゲストメモリ転送中、仮想マシン３０は、第１のホスト１２（ソースホスト）で動作している。状態転送中、仮想マシンの動作は中断される。次に、図２の下の線６４により示すように、マイグレートされた仮想マシン３０ｍは第２のホスト１４（ターゲットホスト）で動作する。時間６６で、ライブマイグレーションは完了する。
【００２７】
仮想マシンがターゲットホストで動作しているとき、線６４により示すように、仮想マシンはパケットを送信及び受信できる。しかしながら、仮想ネットワーク内の一部又は全部のホストは、期限切れの又は古いマッピングポリシを有し得る。特に、図１の例では、マイグレートされた仮想マシン３０ｍのカスタマアドレスAA１は変更されないままであるが、マイグレートされた仮想マシン３０ｍのプロバイダアドレスLAはプロバイダアドレスLA１からプロバイダアドレスLA１８に変化する。仮想マシン３０ｍの新しいプロバイダアドレスLA１８は、パケットロスを回避するために、仮想ネットワークの各ホストのポリシテーブルに反映されなければならない。一例では、第３のホスト１６内の仮想マシン４０は、ポリシテーブル５４内の古いマッピングポリシを用いてプロバイダアドレスLA１にある仮想マシン３０へパケットを送信しようとし得る。後述するようにパケット転送が存在しないために、パケットは失われる。別の例では、マイグレートされた仮想マシン３０ｍにより物理アドレスＬＡ１８から第３のホスト内の仮想マシン４０へ送信されたパケットは、受信パケットがポリシテーブル５４内の古いマッピングポリシに適合しないので、第３のホストにより廃棄され得る。
【００２８】
したがって、仮想ネットワーク内の各ホスト内のマッピングポリシは、ライブマイグレーションを反映するために更新される。図３に示すように、現在のマッピングポリシは、少なくとも時間６６でライブマイグレーションが完了するまで、ライブマイグレーション中、施行されたままである。時間６６でライブマイグレーションが完了すると、更新マッピングポリシが施行され得る。しかしながら、ネットワーク遅延及び他の要因により、ライブマイグレーションが完了して直ぐにポリシ更新を完了することはできない。したがって、古いポリシ期間７０を経て、その間にポリシ更新が実行される時間７２でポリシ更新が完了すると、通常動作が再開できる。パケットロスを制限するために、古いポリシ期間７０の長さは制限されることが望ましい。
【００２９】
図１の例では、第１のホスト１２は、ライブマイグレーションのソースホストと考えられ、第２のホスト１４はターゲットホストと考えられても良い。理解されるべきことに、仮想マシンは１回より多いライブマイグレーションを行われても良く、異なる仮想マシンが異なる時間にライブマイグレーションを行われても良い。仮想ネットワーク内のホスト内のマッピングポリシは、各ライブマイグレーションを反映するために更新される。仮想マシンマネジャ２２内の仮想ネットワークポリシ５６の更新は、矢印５８により示される。ここで、マッピングポリシＡＡ１：ＬＡ１は、更新マッピングポリシＡＡ１：ＬＡ１８により置き換えられる。
【００３０】
図４は、仮想マシン３０のライブマイグレーションに続く前方パケット配信を説明する、データセンタ１０の概略ブロック図である。図４では、第２の仮想ネットワークの仮想マシンは、簡単のため省略されている。図５は、前方パケット配信の処理のフローチャートである。図４で、第１のホスト１２の仮想ネットワークポリシ５０、第２のホスト１４の仮想ネットワークポリシ５２、及び仮想マシンマネジャ２２の仮想ネットワークポリシ５６は、第１のホスト１２から第２のホスト１４への仮想マシン３０のライブマイグレーションを反映するために更新されているとする。第３のホスト１６内の仮想ネットワークポリシは古い。つまり、仮想マシン３０のライブマイグレーションを反映するために更新されていない。
【００３１】
図５を参照すると、動作１００で、第１のホスト１２から第２のホスト１４への仮想マシン３０のライブマイグレーションが実行される。動作１０２で、第３のホスト１６内の仮想マシン４０は、仮想マシン３０へパケットを送信する（図４の矢印（１））。仮想マシン４０は、仮想マシン３０のカスタマアドレスAA１を用いる。パケットは、カスタマアドレスAA３にある仮想マシンがカスタマアドレスAA１にある仮想マシンへパケットを送信していることを示すアドレスフィールドを有する。第３のホスト１６は、ポリシテーブル５４の古いマッピングポリシに従って、仮想マシン３０のカスタマアドレスをプロバイダアドレスLA１に変換する。パケットは、プロバイダアドレスLA４にある仮想マシンがプロバイダアドレLA１にある仮想マシンへパケットを送信していることを示すアドレスフィールドを有する。パケットは、再びポリシテーブル５４の古いマッピングポリシに従って、第３のホスト１６から第１のホスト１２へ送信される（図４の矢印（２））。古いマッピングポリシは、第１のホスト１２から第２のホスト１４への仮想マシン３０のマイグレーションを反映していない。
【００３２】
動作１０４で、第１のホスト１２は、第３のホスト１６から受信したパケットを、古いマッピングポリシに従って送信されているとして認識する。それに応じて、第１のホスト１２は、受信したパケットのアドレスフィールドを変更して、マイグレートされた仮想マシン３０ｍのプロバイダアドレスＬＡ１８を反映し、マッピングポリシが更新されるまで有効な転送ポリシを用いて受信したパケットを第２のホスト１４に転送する（図４の矢印（３））。動作１０８で、第２のホスト１４は、受信したパケットの宛先アドレスを変換し、該パケットをマイグレートされた仮想マシン３０ｍへルーティングする（図４の矢印（４））。仮想マシン３０ｍにより受信されたパケットのアドレスフィールドは、該パケットがカスタマアドレスＡＡ３を有する仮想マシン４０から受信されたことを示す。
【００３３】
動作１１０で、第１のホスト１２は、更新マッピングポリシが仮想ネットワーク内の全てのホストにより受信されたかどうかを決定する。これは、例えば、仮想マシンマネジャ２２から受信した通知に基づき決定されても良い。仮想ネットワーク内の全てのホストが更新されるまで、第１のホスト１２はマイグレートされた仮想マシン３０ｍ宛のパケットを転送し続ける。パケットは、第３のホスト１６から又は仮想ネットワーク内の他のホスト（図示しない）から受信されても良い。動作１１２で、仮想ネットワーク内の全てのホストが更新マッピングポリシを受信すると、転送ポリシは第１のホスト１２により使用を停止される。
【００３４】
図６は、データセンタ１０の概略ブロック図であり、ライブマイグレーションに続く逆トンネリングによる転送を説明する。図６のデータセンタ１０の構成要素は、図４に示したデータセンタ１０の構成要素に対応する。図７に逆トンネリングのフロー図を示す。第１のホスト１２、第２のホスト１４、及び仮想マシンマネジャ２２は、第１のホスト１２から第２のホスト１４への仮想マシン３０ｍのマイグレーションを反映するマッピングポリシを更新したとする。第３のホスト１６の仮想ネットワークポリシ５４の中のマッピングポリシは、古く、仮想マシン３０ｍのマイグレーションを反映していない。
【００３５】
動作１５０で、第１のホスト１２及び第２のホスト１４は、仮想マシン３０が第１のホスト１２から第２のホスト１４へ毎グレートされたと決定する。しかしながら、第１のホスト１２及び第２のホスト１４は、仮想ネットワーク内の全てのホストにあるマッピングポリシが更新されたという通知を受信していない。動作１５２で、マイグレートされた仮想マシン３０ｍは、第３のホスト１６内の仮想マシン４０へパケットを送信する（図６の矢印（１））。パケットのアドレスフィールドは、該パケットがマイグレートされた仮想マシン３０ｍのカスタマアドレスＡＡ１から仮想マシン４０のカスタマアドレスＡＡ３へアドレス指定されていることを示す。動作１５４で、第２のホスト１４は、マイグレートされた仮想マシン３０ｍのプロバイダアドレスＬＡ１８とライブマイグレーション前の仮想マシン３０ｍのプロバイダアドレスＬＡ１を加算する。したがって、パケットは、第２のホスト１４により、全ての仮想ネットワークポリシが更新されるまで有効な逆トンネリングポリシを用いて、プロバイダアドレスＬＡ１にある第１のホスト１２へ送信される（図６の矢印（２））。
【００３６】
動作１５６で、第１のホスト１２は、第２のホスト１４から受信したパケットの宛先アドレスを変換して、仮想マシン３０ｍのカスタマアドレスＡＡ１から仮想マシン４０のカスタマアドレスＡＡ３へ（図６の矢印（３））アドレス指定されたパケットを提供する。次に、パケットは、古いマッピングポリシを用いて宛先アドレスへルーティングされる（図６の矢印（４））。特に、パケットのアドレスフィールドは、仮想マシン３０の古いプロバイダアドレスＬＡ１及び仮想マシン４０のプロバイダアドレスＬＡ４を反映するために変更される。パケットは、第１のホスト１２から第３のホスト１６へ送信され（図６の矢印（５））、仮想ネットワークポリシ５４の中の古いマッピングポリシに適合すると認識される。次に、パケットは、第３のホスト１６により仮想マシン４０へ配信される（図６の矢印（６））。第３のホスト１６により受信されたパケットは、古いマッピングポリシに従って第１のホスト１２内の仮想マシン３０から受信され受け付けられるように見える。これに対し、第３のホスト１６により受信されたパケットが第２のホスト１４内の物理アドレスＬＡ１８から受信された場合、パケットは、次に有効になる古いマッピングポリシに整合しないとして廃棄され得る。
【００３７】
動作１５８で、第１のホスト１２及び第２のホスト１４は、更新マッピングポリシが仮想ネットワーク内の全てのホストにより受信されたかどうかを決定する。これは、例えば、仮想マシンマネジャ２２から受信した通知に基づき決定されても良い。仮想ネットワーク内のすべてのホストが更新マッピングポリシを受信するまで、処理は動作１５２へ戻り、逆トンネリング動作を続ける。第１のホスト１２及び第２のホスト１４が更新マッピングポリシが全てのホストにより受信されたと決定した場合、動作１６０で逆トンネリングポリシは非アクティブにされる。
【００３８】
図８は、データセンタ１０の概略ブロック図であり、シャドウマッピングポリシの使用を説明する。図８のデータセンタ１０の構成要素は、図４に示したデータセンタ１０の構成要素に対応する。図９に、仮想マシンマネジャ２２によるシャドウマッピングポリシの使用のフロー図を示す。図１０に、第３のホスト１６によるシャドウマッピングポリシの使用のフロー図を示す。
【００３９】
図９に戻ると、仮想マシンマネジャ２２による動作を示す。動作２００で、仮想マシンマネジャ２２は、第１のホスト１２から第２のホスト１４への仮想マシン３０のライブマイグレーションの必要性を決定する。幾つかの実施形態では、仮想マシンマネジャ２２は、第１のホスト１２及び第２のホスト１４に、仮想マシン３０のライブマイグレーションを実行するよう指示する。他の実施形態では、ライブマイグレーションは、第１のホスト１２及び第２のホスト１４の制御下で実行されても良い。いずれの場合にも、仮想マシンマネジャ２２は、ライブマイグレーションの開始及びライブマイグレーションの完了を含むがこれらに限定されない、マイグレーション中のイベントに気付く。
【００４０】
動作２０２で、仮想マシンマネジャ２２は、シャドウマッピングポリシを、仮想マシン３０を含む仮想ネットワーク内のホストへ送信する（図８の矢印（１））。シャドウマッピングポリシは、仮想ネットワークの外部にあるホストには送信されない。シャドウマッピングポリシは、簡単のため「シャドウポリシ」と呼ばれ、仮想マシン３０のカスタマアドレスＡＡとライブマイグレーション完了後の仮想マシン３０のプロバイダアドレスＬＡとの間のマッピングを定めるマッピングポリシである。図８の例では、シャドウポリシ１９０は、カスタマアドレスＡＡ１及びプロバイダアドレスＬＡ１８を含み、ＡＡ１：ＬＡ１８として記す。シャドウポリシ１９０は、仮想ネットワークへ送信されるとき、各ホストにより格納されるがトリガされるまで使用されないシャドウポリシであるとして、仮想マシンマネジャ２２により識別される。例えば、シャドウポリシは、ポリシがシャドウポリシであることを示すシャドウポリシフラグを有しても良い。各ホストは、シャドウポリシを格納し、格納したシャドウポリシを非アクティブであると識別する。
【００４１】
動作２０４で、仮想マシンマネジャ２２は、第１のホスト１２及び第２のホスト１４に、仮想マシン３０のライブマイグレーションを実行するよう指示する（図８の矢印（２））。動作２０６で、第１のホスト１２及び第２のホスト１４は、図２に示し上述したように、仮想マシン３０のライブマイグレーションを実行する（図８の矢印（３）及び（４））。仮想マシンマネジャ２２によるライブマイグレーションの制御の程度は、本発明の範囲内で様々に変化し得る。
【００４２】
ステップ２０８で、仮想マシンマネジャ２２は、仮想マシン３０のライブマイグレーションが完了したという通知を受信する（図８の矢印（５））。完了は、図３の時間６６に対応する。ライブマイグレーションが完了するまで、仮想ネットワーク内の各ホストは、仮想マシン３０と通信するために自身の現在のマッピングポリシを用い、シャドウポリシ１９０を非アクティブ状態に維持する。
【００４３】
動作２１０で、仮想マシンマネジャ２２は、仮想ネットワーク内のホストへ通知を送信してシャドウマッピングポリシ１９０をトリガする（図８の矢印（６））。シャドウマッピングポリシ１９０をトリガする通知を受信すると、各ホストは、マイグレートされた仮想マシン３０ｍと通信するために、現在のマッピングポリシの使用を中断し、シャドウポリシを使い始める。ライブマイグレーションが失敗した場合、仮想マシンマネジャ２２は、仮想ネットワーク内のホストに該失敗を通知しても良い。ホストは、シャドウポリシを除去し、現在のマッピングポリシを使い続ける。
【００４４】
望ましくは、ライブマイグレーションの完了前に、動作２０２で、仮想マシンマネジャ２２はシャドウポリシを仮想ネットワーク内のホストへ送信する。これは、ライブマイグレーションの完了後比較的迅速に、シャドウポリシをトリガさせる。理解されるべきことに、シャドウポリシは、仮想マシンの新しい物理アドレスがマイグレートされていることに気付いた後、いつでも、仮想マシンマネジャ２２により仮想ネットワーク内のホストへ送信できる。
【００４５】
図１０に、シャドウポリシを使用する際に、第３のホスト１６により実行される処理を示す。動作２５０で、第３のホスト１６は、仮想マシンマネジャ２２からシャドウポリシ１９０を受信する。上述のように、シャドウポリシ１９０は、カスタマアドレスＡＡ１及びライブマイグレーション後の仮想マシン３０のプロバイダアドレスＬＡ１８を有する。シャドウポリシ１９０は、ライブマイグレーションの完了後にマイグレートされた仮想マシン３０ｍとの通信を可能にする。シャドウポリシ１９０は、第３のホスト１６により、例えば仮想ネットワークポリシ５４に格納されるが、非アクティブであると識別される。
【００４６】
動作２５２で、第３のホスト１６は、仮想マシン３０を第１のホスト１２内のプロバイダアドレスＬＡ１にマッピングする現在のマッピングポリシを用いて仮想マシン３０との通信を続ける。この最中に仮想マシン４０により仮想マシン３０へ送信されるパケットは、上述のように第１のホスト１２により転送され得る。
【００４７】
動作２５４で、第３のホスト１６は、シャドウポリシ１９０をアクティブにするトリガを受信する。幾つかの例では、シャドウポリシ１９０をアクティブにするトリガは、仮想マシンマネジャ２２から受信され得る。トリガは、仮想マシンマネジャ２２からのシャドウポリシ１９０をアクティブにするための通知の形式であり得る。他の例では、シャドウポリシ１９０は、第３のホスト１６がシャドウポリシ１９０に適合するパケットを受信したときに自動的にアクティブにされる。シャドウポリシ１９０が存在しないとき、パケットは廃棄されるが、シャドウポリシは受信したパケットを受け入れることを可能にする。これらの例では、受信したパケットは、いわゆる反応型活性化（reactive  activation）でシャドウポリシをアクティブにするトリガとして機能する。つまり、ホストは、シャドウポリシをアクティブにし且つ今や古くなった現在のマッピングポリシを非アクティブにすることにより、シャドウポリシに適合する受信パケットに反応する。トリガが受信されない場合には、シャドウポリシの有効時間の経過により、第３のホスト１６からシャドウポリシを除去させる。この例では、第３のホスト１６は、現在のマッピングポリシを使い続ける。
【００４８】
シャドウポリシは、反応型活性化により又は仮想マシンマネジャ２２による通知に応答して、アクティブにされても良い。反応型活性化は、仮想マシンマネジャ２２による通知をあまりタイムクリティカルにしない。さらに、転送ポリシは、ソースホストがシャドウポリシをアクティブにすると、ソースホストと宛先ホストとの間の特定の経路のためにもはや必要ない。逆トンネリングポリシは、シャドウポリシの反応型活性化を妨げ得るので、通常、シャドウポリシと共に使用されない。マイグレートされた仮想マシンから特定のホストへのパケットトラフィックがある場合、シャドウポリシは、マイグレートされた仮想マシンからのパケットの受信に応答して、該ホストにより自動的にアクティブにされる。それにより、パケットロスを回避し、仮想マシンマネジャ２２による通知の必要を除去する。マイグレートされた仮想マシンから特定のホストへのパケットトラフィックがない場合、仮想マシンマネジャは、該ホストがそれ自身のシャドウポリシをアクティブするという通知を送信できる。しかしながら、この通知は、パケットトラフィックが存在しないときにはタイムクリティカルではない。
【００４９】
動作２５６で、第３のホスト１６は、仮想マシン３０の現在のマッピングポリシをシャドウポリシ１９０に置き換える。第３のホスト１６は、マイグレートされた仮想マシン３０ｍに関して、現在のマッピングポリシを実質的に非アクティブにし、シャドウマッピングポリシをアクティブにする。動作２５８で、第３のホスト１６は、アクティブにしたシャドウポリシを用いてマイグレートされた仮想マシン３０ｍと通信する。
【００５０】
シャドウポリシメカニズムは、特定の仮想ネットワーク若しくは独立グループに参加している、又はライブマイグレーション後に該仮想ネットワーク内参加する全てのホストで確立される。仮想ネットワーク内で１又は複数の仮想マシンをホスティングする各ホストは、カスタマアドレスをプロバイダアドレスに関連付ける現在のポリシを既に有する。これらのホストの各々は、カスタマアドレスをマイグレートされた仮想マシンの新しいプロバイダアドレスに関連付けるシャドウポリシを提供されるが、まだ施行しない。シャドウポリシは、手動又は自動で、トリガされ現在のポリシを置き換えることができる。シャドウポリシは、アクティブではない場合に特定の間隔の後に終了する有効期間（time-to-live：ＴＴＬ）を有しても良い。シャドウポリシは、新しいホスト、マイグレートされる仮想マシンを受信するホストにも与えられる。新しいホストの場合には、新しいホストが未だ仮想ネットワークのメンバをホスティングしていないので、シャドウポリシは既存のポリシを置き換えなくても良い。
【００５１】
以下にシャドウポリシの特別な例を説明する。第１の特別な例では、マイグレートされる仮想マシンは、対象の仮想ネットワーク内のソースホスト（第１のホスト１２）にある仮想マシンのみである。マイグレーション後、ソースホストは、もはや仮想ネットワーク内に仮想マシンを有しない。現在のポリシが満了するとき、ソースホストはもはや該仮想ネットワークのためのポリシを必要としないので、現在のポリシはシャドウポリシにより直接置き換えられない。第２の特別な例は、シャドウポリシが新しいホストに適用されるときに生じる。この例では、シャドウポリシは、シャドウイングすべき現在のポリシを有しない。シャドウポリシは、単にトリガされると施行される。
【００５２】
シャドウポリシがライブマイグレーションのソースホスト（第１のホスト１２）に適用されると、転送ポリシが生成される。転送ポリシの目的は、古い物理アドレスにある仮想マシン宛の新しい物理アドレスのパケットトラフィックを転送することである。これは、ライブマイグレーションに続いて到達可能性のギャップが生じないことを保証する。転送ポリシは、ソースホストにあるシャドウポリシの一部であっても良い。転送ポリシは、シャドウポリシがソースホスト内でトリガされると直ぐに有効になり、仮想ネットワーク内の全てのホストがシャドウポリシをアクティブにするまで有効のままである。
【００５３】
ライブマイグレーションのような迅速な遷移が生じるとき、ソースホストは処理の一部として通知される。ターゲットホスト（第２のホスト１４）は、ソースホストからパケットを受信し始め、シャドウポリシを直ちにアクティブにできる。例えば仮想マシン４０とマイグレートされた仮想マシン３０ｍとの間の通信の結果、パケットは、ソースホストからターゲットホストへ転送される。
【００５４】
応答がマイグレートされた仮想マシン３０ｍから仮想マシン４０へ送信されるとき、パケットは、新しいプロバイダアドレスＬＡ１８から送信元へ（逆トンネリングを用いないで）送信される。仮想マシン４０の第３のホスト１６がインバウンドパケットを受信するとき、プロバイダアドレスＬＡ１８にある仮想マシン３０からのパケットを許容するアクティブなポリシが存在しない。代わりに、第３のホスト１６は、プロバイダアドレスＬＡ１からのパケットを許容するポリシを有する。しかしながら、シャドウポリシは、プロバイダアドレスＬＡ１８にあるマイグレートされた仮想マシン３０ｍからのパケットを許容する。このパケットの受信は、現在のポリシを置き換えるためにシャドウポリシを自動的にトリガする。仮想マシン４０から仮想マシン３０への後続のパケットは、マイグレートされた仮想マシン３０ｍの新しいプロバイダアドレスＬＡ１８を用いる。この自動ポリシ置換は、アクティブな会話中の転送ポリシの使用を最小限にするので、ネットワーク利用、輻輳及び潜在的なエラーを低減する。
【００５５】
全てのポリシ置換が自動でなくても良い。ＵＤＰアナウンスメントのような一方向の通信パターンもある。応答メッセージの欠落は、自動置換を不可能にする。また、幾つかの仮想マシンペアはモノローグ又は対話に関与しないので、自動置換は不可能である。この例では、仮想マシンマネジャ２２は、ライブマイグレーションが完了した後に、ポリシ置換をトリガできる。このトリガは、タイムクリティカルではなく、交互（staggered）であり得る。シャドウポリシが仮想ネットワークの全てのホストにある現在のポリシを置き換えると、転送ポリシは非アクティブにできる。
【００５６】
図１１、１２に、本発明の更なる実施形態によるポリシの更新を示す。図１１は、データセンタ１２の概略ブロック図であり、レイジープッシュ技術に従う反応型ポリシ更新を説明する。図１１のデータセンタ１０の構成要素は、簡単のためにデータセンタネットワーク構造２０が省略されている点を除いて、図４に示したデータセンタ１０の構成要素に対応する。図１２に、レイジープッシュ技術に従う反応型ポリシ更新のフロー図を示す。第１のホスト１２、第２のホスト１４、及び仮想マシンマネジャ２２は、第１のホスト１２から第２のホスト１４への仮想マシン３０ｍのマイグレーションを反映するマッピングポリシを更新したとする。第３のホスト１６のポリシテーブル５４の中のマッピングポリシは、古く、仮想マシン３０のマイグレーションを反映していない。
【００５７】
動作３００で、第１のホスト１２から第２のホスト１４への仮想マシン３０のライブマイグレーションが完了したと決定される。動作３０２で、第３のホスト１６内の仮想マシン４０は、ポリシテーブル５４内の古いマッピングポリシを用いて仮想マシン３０宛のパケットを送信する（図１１の矢印（１））。動作３０４で、第１のホスト１２は、第３のホスト１６内の仮想マシン４０から送信された仮想マシン３０宛のパケットを受信する（図１１の矢印（２））。しかしながら、仮想マシン３０は第２のホスト１４へマイグレートされている。第１のホスト１２は、図４、５に関して上述したように、パケットの転送を実行しても良い。
【００５８】
動作３０６で、第１のホスト１２は、仮想マシンマネジャ２２に古いポリシイベントを通知する。つまり、古いマッピングポリシに従って第３のホスト１６からパケットを受信する（図１１の矢印（３））。動作３０８で、仮想マシンマネジャ２２は、第３のホスト１６自身のマッピングポリシを更新してマイグレートされた仮想マシン３０ｍを反映させるために、第３のホスト１６へポリシ更新を送信する（図１１の矢印（４））。動作３１０で、第３のホスト１６は、自身のマッピングポリシを更新し、その後、更新したマッピングポリシに従ってマイグレートされた仮想マシン３０ｍと通信する。
【００５９】
図１３は、データセンタ１０の概略ブロック図であり、レイジープル技術に従う反応型ポリシ更新を説明する。図１３のデータセンタ１０の構成要素は、簡単のためにデータセンタネットワーク構造２０が省略されている点を除いて、図４に示したデータセンタ１０の構成要素に対応する。第１のホスト１２、第２のホスト１４、及び仮想マシンマネジャ２２は、第１のホスト１２から第２のホスト１４への仮想マシン３０ｍのマイグレーションを反映するマッピングポリシを更新したとする。第３のホスト１６のポリシテーブル５４の中のマッピングポリシは、古く、仮想マシン３０のマイグレーションを反映していない。
【００６０】
動作３５０で、第１のホスト１２から第２のホスト１４への仮想マシン３０のライブマイグレーションが完了したと決定される。動作３５２で、第２のホスト１４内のマイグレートされた仮想マシン３０ｍは、更新マッピングポリシを用いて、第３のホスト１６内の仮想マシン４０へパケットを送信する（図１３の矢印（１））。動作３５４で、第３のホスト１６は、第２のホスト１４内のマイグレートされた仮想マシン３０ｍからパケットを受信する（図１３の矢印（２））。
【００６１】
動作３５６で、第３のホスト１６は、入来するパケットがポリシテーブル５４内のマッピングポリシに適合しないと認識する。次に、第３のホスト１６は、仮想マシンマネジャ２２に、古いポリシイベントを通知する（図１３の矢印（３））。動作３５８で、仮想マシンマネジャ２２は、第３のホスト１６へ、マイグレートされた仮想マシン３０ｍについてのポリシ更新を送信する（図１３の矢印（４））。動作３６０で、第３のホスト１６は、マイグレートされた仮想マシン３０ｍについてのマッピングポリシポリシを更新し、その後、更新したマッピングポリシに従ってマイグレートされた仮想マシン３０ｍからのパケットを受け付ける。
【００６２】
本発明は、あるプロバイダアドレスから別のプロバイダアドレスへの仮想マシンのライブマイグレーションに関連して説明された。しかしながら、本発明は、あるプロバイダアドレスから別のプロバイダアドレスへの仮想マシンのいかなる迅速な遷移に関連して利用されても良い。
【００６３】
図１５は、本発明の実施形態による第１のホスト１２及び仮想マシン３０の概略図である。第１のホスト１２は、仮想化モジュール４００、ＶＭスイッチ４０２、記憶装置４０４、物理ＮＩＣ（Network  interface  card）４０６を有しても良い。仮想マシン３０は、ＶＭ  ＮＩＣ４２０、ＩＰ（Internet  Protocol）モジュール４２２、ＴＣＰ（Transmission  Control  Protocol）モジュール４２４、ユーザアプリケーション４３０を有しても良い。
【００６４】
仮想化モジュール４００は、上述のように仮想マシンへ及び仮想マシンからの通信を制御し、記憶装置４０４に含まれる仮想ネットワークポリシの実装及び更新、シャドウポリシの実装及びシャドウポリシのアクティブ化、転送ポリシの実装、逆トンネリングポリシの実装、レイジープッシュ技術の実装、及びレイジープル技術の実装のうちの１又は複数を含むが、これらに限定されない。記憶装置４０４は、１又は複数の仮想ネットワークポリシを有する。また、ＶＭスイッチ４０２は、パケットを仮想マシン３０及び第１のホスト１２によりホスティングされる他の仮想マシンへ及びそれらからルーティングする。理解されるべきことに、本発明の範囲内で、第１のホスト１２は異なる構成を有しても良く、データセンタ１０内の他のホストは同じ又は異なる構成を有しても良い。
【００６５】
本発明は、多数の他の汎用目的の又は特定目的のコンピューティングシステム環境又は構成で動作可能である。本発明と共に使用するのに適するコンピューティングシステム、環境及び／又は構成の良く知られた例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド若しくはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、セットトップボックス、プログラマブル消費者電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上述のシステム若しくは装置のうちの任意のものを含む分散型コンピューティング環境、等を含むが、これらに限定されない。
【００６６】
本発明は、コンピュータにより実行されるプログラムモジュールのようなコンピュータ実行可能命令の一般的文脈で説明されても良い。概して、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。本発明は、タスクが通信ネットワークを通じて接続されるリモート処理装置により実行される分散型コンピューティング環境で実施されても良い。分散型コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカル及びリモートの両方のコンピュータ記憶媒体に置かれても良い。
【００６７】
図１６を参照すると、本発明を実施する例示的なシステムは、コンピュータ１０１０の形式の汎用コンピューティング装置を有する。図１６のコンピューティング装置は、ホスト、仮想マシンマネジャ２２及び本願明細書に記載の任意の他のコンピューティング装置を実装するために用いることができる。コンピュータ１０１０のコンポーネントは、処理ユニット１０２０、システムメモリ１０３０、及びシステムメモリを含む種々のシステムコンポーネントを処理ユニット１０２１に結合するシステムバス１０２０を有し得るが、これらに限定されない。システムバス１０２１は、メモリバス又はメモリ制御部、周辺バス、及び種々のバスアーキテクチャのうちの任意のものを用いるローカルバスを含む複数種類のバス構造のうちの任意のものであっても良い。例として、限定ではなく、このようなアーキテクチャは、ＩＳＡ（Industry  Standard  Architecture）バス、ＭＣＡ（Micro  Channel  Architecture）バス、ＥＩＳＡ（Enhanced  ISA）バス、ＶＥＳＡ（Video  Electronics  Standards  Association）ローカルバス、Mezzanineバスとしても知られているＰＣＩ（Peripheral  Component  Interconnect）バスを含む。
【００６８】
コンピュータ１０１０は、通常、種々のコンピュータ可読媒体を有する。コンピュータ可読媒体は、コンピュータ１０１０によりアクセス可能な任意の利用可能な媒体であり、揮発性及び不揮発性媒体並びに取り外し可能及び非取り外し可能媒体の両方を含む。例として、限定ではなく、コンピュータ可読媒体は、コンピュータ記憶媒体を有しても良い。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータのような情報を記憶する方法又は技術で実装される揮発性及び不揮発性、取り外し可能及び非取り外し可能媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital  versatile  disk）又は他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を格納するために用いることができコンピュータ１０１０によりアクセスできる任意の他の媒体を含むがこれらに限定されない。上述の組合せも、コンピュータ可読記憶媒体の範囲に包含されるべきである。
【００６９】
システムメモリ１０３０は、ＲＯＭ（read  only  memory）１０３１及びＲＡＭ（random  access  memory）１０３２のような、揮発性メモリ及び／又は不揮発性メモリの形式のコンピュータ記憶媒体を含む。ＢＩＯＳ（basic  input/output  system）１０３３は、起動中のような、コンピュータ１０１０内の要素間の情報転送を助ける基本ルーチンを含み、通常、ＲＯＭ１０３１に格納される。ＲＡＭ１０３２は、通常、処理ユニット１０２０により直ちにアクセス可能な及び／又はそれにより現在動作中のデータ及び／又はプログラムモジュールを有する。例として、限定ではなく、図１６は、オペレーティングシステム１０３４、アプリケーションプログラム１０３５、他のプログラムモジュール１０３６、及びプログラムデータ１０３７を示す。
【００７０】
コンピュータ１０１０は、他の取り外し可能／非取り外し可能な、揮発性／不揮発性コンピュータ記憶媒体を有しても良い。単なる例として、図１６は、非取り外し可能不揮発性磁気媒体からリードし及びそれにライトするハードディスクドライブ１０４０、取り外し可能不揮発性磁気ディスク１０５２からリードし又はそれにライトする磁気ディスクドライブ１０５１、及びＣＤ  ＲＯＭ若しくは他の光学媒体のような取り外し可能不揮発性光ディスク１０５６からリードし又はそれにライトする光ディスクドライブ１０５５を示す。例示的な動作環境で使用可能な、他の取り外し可能／非取り外し可能な揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、ＤＶＤ（digital  versatile  disk）、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭ、等を有するが、これらに限定されない。ハードディスクドライブ１０４１は、通常、インタフェース１０４０のような非取り外し可能メモリインタフェースを通じてシステムバス１０２１に接続される。磁気ディスクドライブ１０５１及び光ディスクドライブ１０５５は、通常、インタフェース１０５０のような取り外し可能メモリインタフェースによりシステムバス１０２１に接続される。
【００７１】
上述の及び図１６に示したドライブ及びそれらの関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータ１０１０のための他のデータの記憶を提供する。例えば、図１６では、ハードディスクドライブ１０４１は、オペレーティングシステム１０４４、アプリケーションプログラム１０４５、他のプログラムモジュール１０４６、及びプログラムデータ１０４７を格納するとして示される。留意すべきことに、これらのコンポーネントは、オペレーティングシステム１０３４、アプリケーションプログラム１０３５、他のプログラムモジュール１０３６、及びプログラムデータ１０３７と同じか又は異なり得る。オペレーティングシステム１０４４、アプリケーションプログラム１０４５、他のプログラムモジュール１０４６、及びプログラムデータ１０４７は、少なくともそれらが異なるコピーであることを示すために、ここで異なる番号が与えられる。
【００７２】
ユーザは、キーボード１０６２及び通常マウス、トラックボール又はタッチパッドと称されるポインティング装置１０６１のような入力装置を通じて、コンピュータ１０１０にコマンド及び情報を入力しても良い。他の入力装置は、マイクロフォン１０６３、ジョイスティック、タブレット１０６４、パラボラアンテナ、スキャナ、等を有しても良い。上述の及び他の入力装置は、システムバス１０２０に結合されるユーザ入力インタフェース１０６０を通じて、処理ユニット８２０に接続される場合が多く、パラレルポート、ゲームポート又はＵＳＢ（universal  serial  bus）ポートのような他のインタフェース及びバス構造により接続されなくても良い。モニタ１０９１又は他の種類のディスプレイ装置は、ビデオインタフェース１０９０のようなインタフェースを介してシステムバス１０２１にも接続される。モニタに加えて、コンピュータは、スピーカ１０９７及びプリンタ１０９６のような、出力周辺機器インタフェース１０９５を通じて接続され得る他の周辺出力装置を有しても良い。
【００７３】
コンピュータ１０１０は、遠隔コンピュータ１０８０のような１又は複数のリモートコンピュータへの論理コネクションを用いてネットワーク環境で動作しても良い。リモートコンピュータ１０８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア装置又は他の一般的なネットワークノードであって良く、通常、コンピュータ１０１０に関して上述した要素の多く又は全てを有する。しかしながら、メモリ記憶装置１０８１のみを図１５に示す。図１６に示す論理接続は、ＬＡＮ（local  area  network）１０７１及びＷＡＮ（wide  area  network）１０７３、並びに例えばアンテナを備えた無線インタフェース１０９８を介した無線リンクを含むが、他のネットワークを有しても良い。このようなネットワーク環境は、職場、企業規模のコンピュータネットワーク、イントラネット及びインターネットで一般的である。無線インタフェース１０９８はシステムバス１０２１に直接接続されると示されるが、無線インタフェース１０９８はネットワークインタフェース１０７０を介してシステムバス１０２１に接続されても良いことが理解される。
【００７４】
ＬＡＮネットワーク環境で用いられるとき、コンピュータ１０１０は、ネットワークインタフェース又はアダプタ１０７０を通じて、ＬＡＮ１０７１に接続される。ＷＡＮネットワーク環境で用いられるとき、コンピュータ１０１０は、通常、モデム１０７２又はインターネットのようなＷＡＮ１０７３を介して通信を確立する他の手段を有する。内蔵又は外付けであって良いモデム１０７２は、ユーザ入力インタフェース１０６０又は他の適切なメカニズムを介してシステムバス１０２１に接続されても良い。ネットワーク環境では、コンピュータ１０１０に関連して示されたプログラムモジュール又はその部分は、遠隔メモリ記憶装置に格納されても良い。例として、限定ではなく、図１６は、リモートアプリケーションプログラム１０８５がメモリ装置１０８１に存在するとして示す。理解されるべきことに、図示のネットワーク接続は例であり、コンピュータ間の通信リンクを確立する他の手段を用いることが出来る。
【００７５】
したがって、本発明の少なくとも１つの実施形態の幾つかの態様を記載したが、理解されるべきことに、当業者には種々の変形、修正及び改良が直ちに生じるだろう。
【００７６】
このような代替、変更及び改良は、本開示の一部であると考えられ、本発明の精神及び範囲内に包含される。したがって、前述の説明及び図面は、単なる例である。
【００７７】
本発明の上述の実施形態は、種々の方法のうちの任意の方法で実施することができる。例えば、実施形態は、ハードウェア、ソフトウェア又はそれらの組み合わせで実施されても良い。ソフトウェアで実施されるとき、単一のコンピュータで又は複数のコンピュータ間で分散して提供されるかに関わらず、ソフトウェアコードは、任意の適切なプロセッサ又はプロセッサの集合で実行できる。このようなプロセッサは、集積回路として実装され、集積回路コンポーネント内に１又は複数のプロセッサを有しても良い。しかしながら、プロセッサは、任意の適切な形態の回路を用いて実装されても良い。
【００７８】
さらに、理解されるべきことに、コンピュータは、ラック搭載コンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、又はタブレットコンピュータのような多数の形態のうちの任意の形態で実施されても良い。さらに、コンピュータは、一般的にコンピュータとして考えられないが適切な処理能力を有する、ＰＤＡ（Personal  Digital  Assistant）、スマートフォン又は任意の他の適切なポータブル若しくは固定電子機器を含む装置内に実装されても良い。
【００７９】
また、コンピュータは、１又は複数の入力及び出力装置を有しても良い。これらの相対は、特にユーザインタフェースを提示するために用いることができる。ユーザインタフェースを提供するために用いることができる出力装置の例は、出力の視覚的提示のためのプリンタ又はディスプレイスクリーン、及び出力の聴覚的提示のためのスピーカ又は他の音響生成装置を含む。ユーザインタフェースのために用いることができる入力装置の例は、キーボード、並びにマウス、タッチパッド及び離散化タブレットのようなポインティング装置を含む。別の例として、コンピュータは、音声認識を通じて又は他の可聴形式で入力情報を受信しても良い。
【００８０】
このようなコンピュータは、ローカルエリアネットワーク又は企業ネットワーク若しくはインターネットのようなワイドエリアネットワークを含む１又は複数のネットワークにより任意の適切な形式で相互接続されても良い。このようなネットワークは、任意の適切な技術基づき、任意の適切なプロトコルに従って動作し、無線ネットワーク、有線ネットワーク又は光ファイバネットワークを有しても良い。
【００８１】
また、本願明細書で概説した種々の方法又は処理は、種々のオペレーティングシステム若しくはプラットフォームのうちの任意の１つを用いる１又は複数のプロセッサで実行可能なソフトウェアとして符号化されても良い。さらに、このようなソフトウェアは、多数の適切なプログラミング言語及び／又はプログラミング若しくはスクリプティングツールのうちの任意のものを用いて書かれても良く、フレームワーク若しくは仮想マシンで実行される実行可能機械言語コード若しくは中間コードとしてコンパイルされても良い。
【００８２】
これに関して、本発明は、１又は複数のプログラムをエンコードされたコンピュータ可読記憶媒体（又は複数のコンピュータ可読媒体）（例えば、コンピュータメモリ、１又は複数のフロッピディスク、ＣＤ（compact  disc）、光ディスク、ＤＶＤ（digital  video  disk）、磁気テープ、フラッシュメモリ、ＦＰＧＡ（Field  Programmable  Gate  Array）若しくは他の半導体素子内の回路構成、又は他の非一時的有形コンピュータ記憶媒体）として実施されても良く、該プログラムは、１又は複数のコンピュータ又は他のプロセッサで実行されると、上述の本発明の種々の実施形態を実施する方法を実行する。１又は複数のコンピュータ可読記憶媒体は持ち運び可能であり、上述の本発明の種々の態様を実施するために、該コンピュータ可読記憶媒体に格納された１又は複数のプログラムが１又は複数の異なるコンピュータ若しくは他のプロセッサにロードできる。本願明細書で用いられるように、用語「非一時的コンピュータか独記憶媒体」は、製造物（つまり、製品）又は機械として考えられるコンピュータ可読媒体のみを含む。代替又は追加で、本発明は、コンピュータ可読記憶媒体以外の、伝搬する信号のようなコンピュータ可読媒体として実施されても良い。
【００８３】
用語「プログラム」又は「ソフトウェア」は、本願明細書では、上述の本発明の種々の態様を実施するためにコンピュータ又は他のプロセッサをプログラミングするために用いることができる任意の種類のコンピュータコード又はコンピュータ実行可能命令セットを表すために総称的に用いられる。さらに、理解されるべきことに、この実施形態の一態様によると、実行されると本発明の方法を実行する１又は複数のコンピュータプログラムは、単一のコンピュータ又はプロセッサに存在する必要はなく、本発明の種々の態様を実施するために多数の異なるコンピュータ又はプロセッサの間でモジュラ形式で分散されても良い。
【００８４】
コンピュータ実行可能命令は、プログラムモジュールのような、１又は複数のコンピュータ又は他の装置により実行される多くの形式であっても良い。概して、プログラムモジュールは、特定のタスクを実行し又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、等を含む。通常、プログラムモジュールの機能は、種々の実施形態で必要に応じて結合され又は分散されても良い。
【００８５】
また、データ構造は、任意の適切な形式でコンピュータ可読媒体に格納されても良い。説明を簡単にするために、データ構造は、該データ構造内の位置を通じて関連するフィールドを有するとして示された。このような関係は、フィールド間の関係を伝達するコンピュータ可読媒体内の位置を有するフィールドに記憶を割り当てることにより達成されても良い。しかしながら、データ構造内の情報間の関係を確立するために、ポインタ、タグ又はデータ要素間の関係を確立する他のメカニズムの使用を含む任意の適切なメカニズムが用いられても良い。
【００８６】
本発明の種々の態様は、単独で、組合せで、又は上述の実施形態で詳細に議論されていない種々の構成で用いられることができるので、それらの用途は以上に説明された又は図面に記載されたコンポーネントの詳細事項及び構成に限定されない。例えば、一実施形態で説明した態様は、任意の方法で他の実施形態で説明した態様と組合せることができる。
【００８７】
また、本発明は、一例を提供した方法として実施されても良い。この方法の一部として実行される動作は、任意の適切な方法で順序付けられても良い。したがって、実施形態は、図示した順序と異なる順序で動作が実行されることも想定しており、説明のための実施形態では順次的動作として示していても、幾つかの動作を同時に実行することも含む。
【００８８】
請求項の要素を修飾するための請求項における「第１」、「第２」、「第３」等のような序数の使用は、それ自体がある請求項の要素の他者に対する優先度、先行若しくは順序、又は方法が実行される時間的順序を示すものではなく、請求項の要素を区別するために特定の名称を有する１つの請求項の要素を（序数の使用以外は）同じ名称を有する別の要素から区別するために単にラベルとして用いられる。
【００８９】
また、本願明細書で用いられる表現及び用語は、説明を目的としており、限定として見なされるべきではない。「含む、有する（including、comprising、having、containing、involving）」及びそれらの変形は、以降に列挙される項目及びそれらの等価物、並びに追加の項目を包含することを意味する。
【図１】
2014525204.tif 000003
【図２】
2014525204.tif 000004
【図３】
2014525204.tif 000005
【図４】
2014525204.tif 000006
【図５】
2014525204.tif 000007
【図６】
2014525204.tif 000008
【図７】
2014525204.tif 000009
【図８】
2014525204.tif 000010
【図９】
2014525204.tif 000011
【図１０】
2014525204.tif 000012
【図１１】
2014525204.tif 000013
【図１２】
2014525204.tif 000014
【図１３】
2014525204.tif 000015
【図１４】
2014525204.tif 000016
【図１５】
2014525204.tif 000017
【図１６】
2014525204.tif 000018
【国際調査報告】
2014525204.tif 000019
2014525204.tif 000020