(57)【特許請求の範囲】
【請求項１】
仮想化ネットワークデバイスによるライブ移行を容易にするための方法であって、
前記仮想化ネットワークデバイスによってパケットをソースホスト上の移行ゲストに送信し、前記ソースホストによって前記パケットをターゲットホストに転送するステップと、
前記移行を開始する前に、前記移行を前記移行ゲストに通知するステップと、
前記通知に応じて、前記移行ゲストの状態を変更するステップと、
前記ソースホストを介して、前記ターゲットホスト上の前記移行ゲストからパケットを受信するステップと、
前記仮想化ネットワークデバイスによって、前記ソースホストから前記ターゲットホストへの前記移行ゲストの移行が完了したか否かを判定するステップと、
前記移行が完了したと判定された場合、前記仮想化ネットワークデバイスからのパケットを前記ターゲットホスト上の前記移行ゲストに直接に送信するステップとを含み、
前記移行ゲストの移行が完了したか否かを判定するステップは、
前記仮想化ネットワークデバイスにおいて、前記ターゲットホスト上の前記移行ゲストから１つ以上のパケットを直接に受信するステップと、
前記受信した１つ以上のパケットに基づいて、移行が完了したことを確認するステップとを含む、方法。
【請求項２】
前記仮想化ネットワークデバイスで、ネットワークコントローラからトークンを受信するステップをさらに含み、
前記パケットを前記ターゲットホスト上の前記移行ゲストに直接に送信するステップは、前記受信したトークンを用いて、送出パスを認証および指定するステップを含む、請求項１に記載の方法。
【請求項３】
前記仮想化ネットワークデバイスからのルックアップ要求を前記ネットワークコントローラに送信するステップをさらに含み、
前記トークンは、前記ルックアップ要求に応じて、前記仮想化ネットワークデバイスで受信される、請求項２に記載の方法。
【請求項４】
ネットワークにおけるライブ移行のためのシステムであって、
ソースホストと、
前記ソースホスト上で動作する移行ゲストと、
前記ソースホストと通信するターゲットホストと、
前記ソースホスト上の前記移行ゲストと通信する他の仮想化ネットワークデバイスとを備え、
前記ソースホストは、前記他の仮想化ネットワークデバイスから受信したトラフィックを前記ターゲットホストに転送し、前記ターゲットホストから受信したトラフィックを前記他の仮想化ネットワークデバイスに転送するように構成され、
前記移行ゲストは、前記移行を開始する前に、前記移行の通知を受け、
前記移行ゲストは、前記通知に応じて、その状態を変更するように構成され、
前記ターゲットホストは、前記移行ゲストの移行が完了した時に、パケットを前記他の仮想化ネットワークデバイスに直接に送信するように構成され、
前記他の仮想化ネットワークデバイスは、前記ターゲットホストからパケットを直接に受信した時間を判定し、それに応じて、パケットを前記ターゲットホスト上の前記移行ゲストに直接に送信するように構成される、システム。
【請求項５】
ネットワークコントローラをさらに備え、
前記ネットワークコントローラは、前記ターゲットホスト上の前記移行ゲストと直接通信するために、前記他の仮想化ネットワークデバイスにトークンを提供するように構成される、請求項４に記載のシステム。
【請求項６】
前記トークンは、前記他の仮想化ネットワークデバイスからの送出パスを認証および指定するために使用される、請求項５に記載のシステム。
【請求項７】
前記移行ゲストは、既存の接続をキープし、将来の処理要求を拒否するモードに移行する、請求項４に記載のシステム。
【請求項８】
前記移行ゲストは、別のシステムと通信し、
前記通信によって、前記別のシステムは、前記移行の間に、将来の処理要求を前記ネットワーク上の他のリソースに導く、請求項４に記載のシステム。
【請求項９】
前記ソースホストは、前記移行が完了した後、前記他の仮想化ネットワークデバイスから受信したトラフィックを前記ターゲットホストに転送するためのルール、または前記ターゲットホストから受信したトラフィックを前記他の仮想化ネットワークデバイスに転送するためのルールを転送テーブルから削除するように構成される、請求項４〜８のいずれか１項に記載のシステム。
【請求項１０】
前記ソースホストは、前記移行が完了した後、前記転送テーブルから前記ルールを削除する前に所定の時間で待機する、請求項９に記載のシステム。
【請求項１１】
前記ソースホストおよび前記ターゲットホストの少なくとも一方は、前記移行のためのネットワーク再プログラミングが完了した通知を受信し、
トラフィックを転送するための前記ルールは、前記通知に応じて削除される、請求項９に記載のシステム。
【請求項１２】
ライブ移行がソースホスト上の移行ゲストに通知された後に、前記ソースホスト上の前記移行ゲストによって前記移行ゲストをソースホストからターゲットホストに移行する指示を受信するステップと、
前記指示の受信に応じて、所定の行動を取るステップと、
前記移行ゲストを前記ソースホストから前記ターゲットホストにコピーするステップと、
他のネットワークデバイスから前記ソースホスト上の前記移行ゲストのために受信したトラフィックを前記ターゲットホストに転送するステップと、
前記ターゲットホストから前記移行ゲストのために受信したトラフィックを前記他のネットワークデバイスに転送するステップとを含み、
前記所定の行動を取るステップは、前記移行ゲストの状態を変更するステップを含み、
前記状態を変更するステップは、新しいタスクを受け入れることなく既存のタスクを完了するモードに、前記移行ゲストを移行するステップを含む、方法。
【請求項１３】
前記移行ゲストを前記モードに移行するステップは、
前記移行中に別のタスクがサービス要求を提供することを可能にするステップ、または、
負荷分散プールから前記移行ゲストを削除するステップ、
をさらに含む、請求項１２に記載の方法。
【請求項１４】
請求項１〜３、１２または１３のいずれかに記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１４年６月２０日に出願された米国特許出願第１４／３１０４９２号の継続出願であり、その開示が参照により本明細書に組み込まれる。
【背景技術】
【０００２】
背景
ライブ移行とは、仮想マシンの接続性、ネットワークの接続および仮想マシンの正常性状態報告を維持しながら、動作している仮想マシンを１つのホストマシンから別のホストマシンに移動させる行為である。移行中に、例えば、メモリをコピーするために仮想マシンを一時停止することによって、または仮想マシンと新しいホストとの接続を設立することによって、性能に影響を与える可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
本開示の一態様は、仮想化ネットワークデバイスによるライブ移行を容易にする方法を提供する。この方法は、仮想化ネットワークデバイスによって、パケットをソースホスト上の移行ゲストに送信し、ソースホストによってパケットをターゲットホストに転送するステップと、ソースホストを介して、ターゲットホスト上の移行ゲストからパケットを受信するステップと、仮想化ネットワークデバイスによって、移行元ホストから移行先ホストへの移行ゲストの移行が完了したか否かを判定するステップと、移行が完了したと判定された場合、パケットを仮想化ネットワークデバイスからターゲットホスト上の移行ゲストに直接に送信するステップとを含む。移行ゲストの移行が完了したか否かを判定するステップは、仮想化ネットワークデバイスにおいて、ターゲットホスト上のゲストから１つ以上のパケットを直接に受信するステップと、受信した１つ以上のパケットに基づいて、移行が完了したことを確認するステップとを含む。
【０００４】
本開示の別の態様は、システムを提供する。このシステムは、ソースホストと、ソースホスト上で動作する移行ゲストと、ソースホストと通信するターゲットホストと、ソースホスト上の移行ゲストと通信する他の仮想化ネットワークデバイスとを備える。ソースホストは、他のネットワークデバイスから受信したトラフィックをターゲットホストに転送し、ターゲットホストから受信したトラフィックを他のネットワークデバイスに転送するように構成される。ターゲットホストは、移行ゲストの移行が完了したに、パケットを他のネットワークデバイスに直接に送信するように構成される。他のネットワークデバイスは、ターゲットホストからパケットを直接に受信した時間を判定し、それに応じて、パケットをターゲットホスト上の移行ゲストに直接に送信するように構成される。システムは、ターゲットホスト上の移行ゲストと直接通信するために、他の仮想化ネットワークデバイスにトークンを提供するように構成されたネットワークコントローラをさらに備える。いくつかの例において、移行ゲストは、移行を開始する前に移行の通知を受け、通知に応じてその状態を変更するように構成されてもよい。例えば、移行ゲストは、既存の接続をキープし、将来の処理要求を拒否するモードに移行することができる。別の例として、移行ゲストは、別のシステムと通信することができ、その通信によって、別のシステムは、移行の間に、将来の処理要求をネットワーク上の他のリソースに導くことができる。
【０００５】
本開示のさらに別の態様は、方法を提供する。この方法は、ソースホスト上の移行ゲストによって、ソースホストから移行ゲストをターゲットホストに移行する指示を受信するステップを含む。移行ゲストは、指示の受信に応じて、所定の作動を取る。さらに、移行ゲストは、ソースからターゲットにコピーされる。ソースホストは、他のネットワークデバイスから受信したトラフィックをターゲットホストに転送し、ターゲットホストから受信したトラフィックを他のネットワークデバイスに転送する。
【図面の簡単な説明】
【０００６】
【図１】本開示の態様に係る例示的なシステムを示す図である。
【図２】本開示の態様に係る図１のシステムの構成要素を示すブロック図である。
【図３】本開示の態様に係る別の例示的なシステムを示す図である。
【図４】本開示の態様に係る図３のシステムの構成要素を示すブロック図である。
【図５】本開示の態様に係る例示的な方法を示すフロー図である。
【図６】本開示の態様に係る別の例示的な方法を示すフロー図である。
【発明を実施するための形態】
【０００７】
詳細な説明
概要
本開示は、仮想化ネットワークスタックをライブ移行するためのシステムおよび方法を提供する。
【０００８】
ライブ移行は、第１仮想化または非仮想化ネットワークコンピューティングデバイスと移行される仮想ネットワークスタックとの間のネットワーク接続を中断せず、移行を行う。第１仮想化または非仮想化ネットワークコンピューティングデバイスは、仮想マシン、スイッチ、ホスト、または任意のネットワークデバイスであってもよい。仮想ネットワークスタックは、仮想マシン、Ｌｉｎｕｘ（登録商標）コンテナ、または他の種類の仮想ネットワークスタックであってもよい。以下の例において、第１仮想化または非仮想化ネットワークコンピューティングデバイスは、第１デバイスと呼ばれ、移行される仮想ネットワークスタックは、仮想マシンと呼ばれる。これらの例は、限定的ではないことを理解すべきである。さらに、理解すべきことは、これらの例は、単なる例示であり、記載された概念は、さまざまなシナリオに適用されてもよいことである。例えば、複数の第１デバイスは、以下に説明する技術を用いて、移行される仮想マシンと通信することができる。
【０００９】
第１デバイスは、ソースホスト上に位置する仮想マシンと通信する。第１デバイスは、移行中に、継続してソースホスト上の仮想マシンと通信する。移行が完了するまで、ソース仮想マシンおよびターゲット仮想マシンは、一時的に保存（proxy）されたトラフィックの転送（例えば、双方向転送または一方向転送）を行う。例えば、ソース仮想マシンは、第１デバイスからのすべての入来トラフィックを一時的に保存し、保存されたトラフィックをターゲット仮想マシンに転送する。ターゲット仮想マシンは、一時的に保存された入力トラフィックを受け入れ、同様に、ソース仮想マシンを介してすべての送出トラフィックを一時的に保存するように構成されている。このような双方向転送は、仮想マシンをソースからターゲットに移行する時点から、ネットワーク上の関連ノードが再プログラムされるまで、継続的に行うことができる。集中型の仮想ネットワークプログラミングコントローラは、仮想マシンがターゲットホストに移行されたことを第１デバイスに通知し、その結果、第１デバイスは、ターゲットホスト上の仮想マシンとの通信を再開することができる。さらに、コントローラは、その変更をネットワークの他のマシンに通知することもできる。
【００１０】
一例によれば、ソースにおいてすべてのトラフィックを一時的に保存し、双方向転送を行うことの代わりにまたはそれに加えて、コントローラおよびターゲットホストの両方と通信する「他の」仮想マシン（ＶＭ）が、シームレスな移行を容易にする。例えば、ターゲットＶＭホストは、コントローラと通信することによって、ネットワークの更新を申し込む。コントローラは、ターゲットホスト上の仮想マシンと直接通信するためのトークンを別のＶＭに提供する。他の仮想マシン、ソースホストおよびターゲットホストは、例えば、仮想マシンがターゲットホストに移送された時点から、ネットワークが更新されるまで、三者間ルーティングを行うことができる。例えば、他の仮想マシンは、ターゲットＶＭホストから入来パケットを受信するまで、ソースＶＭホストにトラフィックを送信し、このトラフィックは、ターゲットＶＭホストに転送される。この時点で、他の仮想マシンは、コントローラから受信したトークンを用いて、送出パスを認証および指定して、ターゲットホスト上の仮想マシンにパケットを直接に送信する。別の例として、他のＶＭホストは、認識されていない送信元からパケットを受信する場合、パケットをターゲット仮想マシンに直接に送信するように切り替えることができるように、コントローラに照会する。
【００１１】
上記のいずれの例において、ソースホストからターゲットホストへの平滑な移行をサポートするために、ネットワークデバイスに、例えば「他の」仮想マシンのソースおよび／またはホストに、１つ以上のルールをインストールすることができる。これらのルールは、例えばコントローラによってインストールされてもよい。ルールは、移行の特定段階、例えば、ブラウンアウト（すなわち、移行先が開始され、ソースホストからターゲットホストに仮想マシンの状態を移行している状態）、ブラックアウト（すなわち、ターゲット上でＶＭの再開を用意するために、仮想マシンを一時停止し、残りのＶＭ状態をソースからターゲットに移動することができる状態）、ポストブラックアウト（すなわち、移行が完了して、ターゲットがすべての処理を行う状態）、およびキャンセル（すなわち、移行に関連するすべての設定を削除する状態）に対応して設けることができる。
【００１２】
ブラウンアウトの間に、仮想マシンは、ソースホスト上に位置する。移行元は、他の仮想マシン（ＶＭ）に対して、トラフィックの送受信を行うことができる。また、任意の他の仮想マシンも、移行元からトラフィックを受信することができるが、移行元にトラフィックの送信しかできない。同様に、コントローラは、移行元の転送テーブルを変更し、トラフィックを転送するために、移行テーブルを移行元にインストールする。ソースホストとターゲットホストの両方は、ローカルで動作しているホストエージェントプロセスまたはネットワークの再プログラミングを支援する仮想マシンマネージャプロセスの一部として動作しているホストエージェントプロセスを有する。移行元のホストエージェントを作動して、トラフィックのローカル転送から移行先への転送をスイッチングすることができる。
【００１３】
ブラックアウトの間に、ソースからターゲットに移行する必要のあるネットワーク状態（例えば、ステートフルファイアウォール状態）は、すべて移行される。移行元のホストエージェントのみが、スイッチングに関与している。コントローラは、何もする必要がない。いくつかの実現例において、スイッチングは、ブラックアウト期間の開始時に行われてもよい。他の実現例において、ブラックアウトの前にまたはブラックアウト中に移行が取り消ることに備えて、トラフィックは、ポストブラックアウトにならないと、転送されない。
【００１４】
ポストブラックアウトの間に、コントローラは、移行先に指向するルートを提供する。さらに、移行元からのトラフィックは、引き続き移行先に転送される。例えば、ソースホストおよびターゲットホストは、双方向転送、単方向転送、または三者間ルーティングを行うことができる。その結果、移行転送フローを除いて、移行元上の殆どのフローは、アンインストールされる。さらに、三者間ルーティングの場合、ソースホストを介したトラフィックの転送とは対照的に、移行先からの応答は、第１デバイスに直接に送信され、第１デバイスは、ターゲットホスト上の仮想マシンと直接に通信することができる。
【００１５】
キャンセルは、移行を取り消すときに行われる。例えば、ブラックアウトまたはブラックアウトの期間中に、ターゲットホストがクラッシュするまたは他のイベントに遭遇することによって、移行が取り消される可能性がある。キャンセル中、コントローラは、移行のために設定されたすべてのフローを削除する。例えば、ソースホストまたはターゲットホストのいずれかからパケットを受信するように第１デバイスを有効にする第１デバイス上のルールは、ソースに対応するルールのみをサポートするように再プログラムされる。ターゲットホスト上のすべてのネットワークプログラムが削除され、ソースホスト上の転送に関連するすべてのプログラムも削除される。
【００１６】
いくつかの例によれば、すべての仮想マシン状態が転送される前に、ターゲットで実行を開始することによって、ブラックアウトの期間を減縮することができる。例えば、ブラウンアウト段階中に、仮想マシンの状態を予めコピーし、その後のブラックアウト中に、仮想マシンのタスクの実行をターゲットホストに転送し、残りの状態を転送してもよく、転送しなくてもよい。また、ブラックアウトの後、残りの状態をコピーするポストコピーブラウンアウト段階を設けてもよい。
【００１７】
本開示の一態様は、間近に迫っているライブ移行をゲスト仮想マシンに公開することによって、ゲスト仮想マシンに行動を取らせることができる。そのような行動の１つは、移行前に、ゲスト仮想マシンの正常性状態を変更することである。例えば、ゲスト仮想マシンは、「レイムダック」状態に移行することができる。この状態において、ゲスト仮想マシンは、既に進行中のタスクを完了するが、新しいタスクまたは接続を受け入れないように、他のシステムと通信する。したがって、ゲスト仮想マシンは、例えば、負荷分散プールから自身を削除し、既存の接続をキープすることができる。これによって、ネットワーク全体の負荷分散が容易になり、オンラインゲームシステムのようなブラックアウト遅延に敏感な取引先にとって特に役立つことができる。
【００１８】
例示的なシステム
図１は、動作しているゲストをソースホストからターゲットホストに移行する例示的なシステム１００を示している。図示のように、ネットワークコンピューティングデバイス１２０、ソースホスト１３０、およびターゲットホスト１６０は、ネットワーク１５０の構成要素である。ネットワークは、ネットワーク１５０内の１つ以上のデバイスと通信するネットワークコントローラ１８０をさらに含む。
【００１９】
ネットワーク１５０は、マザーボード上に設けられた周辺装置またはさまざまなシステム要素を相互接続するためのバックプレーンを含むデータセンタ、負荷分散サーバファーム、または任意の他の種類のコンピューティング環境であってもよい。ネットワーク１５０および介在ノードは、さまざまな構成およびプロトコルを含む。プロトコルとしては、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、広域ネットワーク、ローカルネットワーク、１つ以上の企業に独自の通信プロトコルを使用するプライベートネットワーク、イーサネット（登録商標）、（８０２．１１、８０２．１１ｂ、ｇ、ｎ、または他の標準の）ＷｉＦｉ（登録商標）およびＨＴＴＰ、並びに上述もののさまざまな組み合わせを含むことができる。
【００２０】
ネットワークコントローラ１８０は、ネットワーク１５０の各ノードに直接的にまたは間接的に接続されてもよく、ノード間の接続を確立するためにまたは特定のノードに情報を提供するために使用されてもよい。例えば、ネットワークコントローラ１８０は、１つのノードから別のノードへの情報の転送を容易にするように、ネットワーク更新を提供するために使用することができる。いくつかの例において、ネットワークコントローラ１８０は、ネットワーク１５０のトポロジ、またはネットワーク１５０に接続され得る他のさまざまなネットワークの各々のトポロジに関する情報を格納および処理することができる。ネットワークコントローラ１８０は、例えば、従来のネットワークインタフェイスコントローラ（ＮＩＣ）であってもよく、専用のネットワークインタフェイスコントローラであってもよい。ＮＩＣは、例えば、拡張カード、マザーボード、イーサネットチップまたは他の媒体を介して、ネットワークに実装されてもよく、ネットワークに接続されてもよい。
【００２１】
ネットワークコンピューティングデバイス１２０は、仮想化コンピューティングデバイスであってもよく、非仮想化コンピューティングデバイスであってもよい。例えば、ネットワークコンピューティングデバイス１２０は、中央処理装置（ＣＰＵ）、仮想マシン、Ｌｉｎｕｘ（登録商標）コンテナ、ルータ、スイッチ、またはパケットを送受信することができる任意のネットワークデバイスであってもよい。ネットワークコンピューティングデバイス１２０は、例えば、有線接続または無線接続によって、ソースホスト１３０およびゲスト１１０と通信することができる。
【００２２】
ソースホスト１３０は、ゲスト１１０をホストすることができる任意の種類のコンピューティングデバイスまたはコンピューティングシステムであってもよい。例えば、ソースホスト１３０は、１つ以上の仮想マシンまたは他のゲストがその上で動作しているハイパーバイザ（図示せず）を含んでもよい。ゲスト１１０のみが図１に示されているが、任意の時間に複数のゲストがソースホスト１３０上で動作してもよいことを理解すべきである。いくつかの例において、ソースホスト１３０は、例えばネスト仮想化環境において、仮想化されてもよい。例えば、ソースホスト１３０は、仮想マシン、Ｌｉｎｕｘコンテナなどであってもよい。
【００２３】
ソースホスト１３０と同様に、ターゲットホスト１６０は、ゲスト１１０をホストすることができる任意の種類のコンピューティングデバイスであってもよい。いくつかの例において、ターゲットホストは、仮想化されてもよい。
【００２４】
ライブ移行を開始するために、ターゲットホスト１６０は、ソースホスト１３０上の仮想マシンマネージャ（ＶＭＭ）と通信する。例えば、ターゲットホスト１６０上でＶＭＭのタスクを開始することができる。このようなタスクは、ソースホスト１３０上のＶＭＭと通信することができ、例えば、認証を実行する。その後、ゲスト１１０の仕様および状態をソースホスト１３０からターゲットホスト１６０に転送するブラックアウト段階を開始してもよい。
【００２５】
いくつかの例によれば、ゲスト１１０は、間近に迫っている移行に関する情報が（例えば、ターゲット１６０またはソース１３０によって）通知されたことに応じて、所定の行動を取ることができる。そのような行動の一例は、状態、例えば正常性状態を変更することである。例えば、ゲスト１１０は、「レイムダック」状態に移行することができ、その状態は、正常性状態または不正常性状態などの他の状態に加えて、認識されることができる。レイムダック状態において、ゲスト１１０は、既存の接続をキープし、負荷分散プールから自身を削除することができる。例えば、ゲスト１１０は、保留中のタスクを完了することができるが、新しいタスクを受け入れない。
【００２６】
ゲスト１１０をターゲットホスト１６０に移動する際に、ネットワークコンピューティングデバイス１２０とゲスト１１０との間の通信は、例えばソースホスト１３０を介して維持されることができる。ソースホスト１３０は、例えば、ネットワークコンピューティングデバイス１２０とターゲットホスト１６０との間の双方向転送エージェントとして機能することができる。ターゲットホスト１６０は、ソース１３０上のゲスト１１０から一時的に保存された入来トラフィックを受信し、ソース１３０を介して送出トラフィックを一時的に保存するように構成される。
【００２７】
移行が完了すると、ターゲット１６０およびソース１３０の少なくとも一方は、ネットワークコントローラ１８０に通知することができる。次に、ネットワークコントローラ１８０は、ゲスト１１０の物理ホストＩＰアドレスをターゲット１６０上の新しい位置に対応するように変更することができる。したがって、ゲスト１１０と通信したいクライアントは、パケットを適切な物理ホストマシンに送信することができる。さらに、いくつかの例において、ネットワークコントローラ１８０は、ネットワーク１５０内のネットワークコンピューティングデバイス１２０および他のコンピューティングデバイスに、ゲスト１１０の場所変更を通知することができる。例えば、コントローラ１８０は、ゲスト１１０の新しいアドレスをネットワークデバイスに提供することができる。これによって、ネットワークコンピューティングデバイス１２０および他のデバイスは、ターゲットホスト１６０上のゲスト１１０との直接通信を再開することができる。
【００２８】
一旦ネットワークデバイス１２０がターゲット１６０上のゲスト１１０と通信し始めると、ソース１３０は、終了し、ターゲット１６０は、入来転送構成および送出転送構成を破棄することができる。例えば、ソース１３０およびターゲット１６０上の転送ルールを削除してもよい。一例によれば、ソース１３０およびターゲット１６０は、転送ルールを削除する前に、ソース１３０を介して転送されたトラフィックがゼロに減少した後、所定の時間、例えば１分間で待機することができる。この待機時間は、ターゲット１６０上のゲスト１１０の新しいアドレスを用いて、ネットワークデバイスを更新するタイミングの変動に適応することができる。別の例によれば、フィードバックに基づくメカニズムを使用する。具体的には、ターゲット１６０に対する変更をすべてのクライアントに通知したことが明確に分かる場合に限り、転送を停止する。
【００２９】
図２は、ソース１３０およびコントローラ１８０を含むシステム１００の特定の構成要素を示すブロック図である。
【００３０】
ソース１３０は、メモリ１３２と、メモリ１３２と通信する１つ以上のプロセッサ１３９とを含む。メモリ１３２は、プロセッサ１３９によってアクセス可能な情報を記憶する。その情報は、プロセッサ１３９によって実行可能な命令１３８を含む。メモリはさらに、データ１３４を含む。プロセッサは、これらのデータを検索、操作または記憶することができる。メモリは、プロセッサによってアクセス可能な情報を記憶することができる任意の種類のもの、例えばハードドライブ、メモリカード、ＲＯＭ、ＲＡＭ、ＤＶＤ、ＣＤ−ＲＯＭ、書き込み可能なメモリ、および読み出し専用メモリなどであってもよい。
【００３１】
プロセッサ１３９は、市販の中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）などの任意の従来のプロセッサであってもよい。代替的に、プロセッサは、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、または他のハードウェアに基づくプロセッサなどの専用部品であってもよい。別の例として、プロセッサ１３９は、量子コンピュータであってもよい。
【００３２】
メモリ１３２は、命令１３８に従ってプロセッサによって検索、操作または記憶され得るデータ１３４を含む。システムおよび方法は、具体的なデータ構造によって制限されない。例えば、データは、コンピュータレジスタに記憶されてもよく、複数の異なるフィールドおよびレコード、またはＸＭＬ文書を有するテーブルとして、関係データベース内に記憶されてもよい。データは、バイナリ値、ＡＳＣＩＩまたはユニコードなどを含むがこれらに限定されないコンピュータ可読フォーマットにフォーマットされてもよい。さらに、データ１３４は、関連情報を識別するのに十分な数字、記述テキスト、専用コード、ポインタまたは他のメモリ（他のネットワーク場所を含む）に格納されたデータへの参照などの情報、または関連データを計算するために、関数に利用される情報を含むことができる。
【００３３】
命令１３８は、プロセッサ１３９によって直接に実行される任意の命令セット（例えば、機械コード）または間接に実行される任意の命令セット（例えば、スクリプト）であってもよい。よって、「命令」、「ステップ」および「プログラム」という用語は、本明細書において交換可能に使用されてもよい。これらの命令は、プロセッサによる直接処理のためにオブジェクトコード形式で格納されてもよく、または必要に応じて翻訳されまたは事前にコンパイルされるスクリプトまたは独立のソースコードモジュールの集合を含む他のコンピュータ言語で格納されてもよい。
【００３４】
命令１３８は、例えば、移行先からゲストの移行に関連する情報を受信するために、プロセッサによって実行されてもよい。いくつかの例において、ゲストは、情報の受信に応じて、行動を取ることができる。例えば、ゲスト１１０は、自身の正常性状態を「レイムダック」状態に変更することによって、自身の状態を更新することができる。「レイムダック」状態において、ゲストは、新しいタスクを受け入れず、保留中のタスクを完了することができる。命令１３８は、さらに、ネットワークデバイス１２０とターゲット１６０との間の双方向転送の処理を規定することができる。例えば、データ１３４は、移行する予定のネットワークデバイス１２０から受信され、移行ゲスト１１０に転送されるトラフィックを処理するための、およびターゲット１６０から受信され、ネットワークデバイス１２０に転送されるトラフィックを処理するための１つ以上の転送ルールを有するフローテーブルを含むことができる。命令１３８は、さらに、移行が完了した後、接続の取り消しを規定することができる。例えば、ソース１３０は、移行が完了した後、トラフィックが少なくなるまで、所定の時間で待機してから、フローテーブルから双方向転送ルールを削除することができる。別の例として、移行されたゲスト１１０と通信しているすべてのネットワークデバイスがターゲット１６０と通信するようにスイッチングされたことを確認してから、ソース１３０上に設けられた転送ルールは、取り消されてもよい。
【００３５】
図２は、プロセッサ１３９およびメモリ１３２が同一のブロックにあることを機能的に示しているが、理解すべきことは、プロセッサおよびメモリは、実際に、同一の物理的なハウジングに格納されているまたは格納されていない複数のプロセッサおよびメモリを含むことができる。例えば、命令およびデータの一部は、取り外し可能なＣＤ−ＲＯＭに格納され、他の部分は、読み取り専用のコンピュータチップに格納されてもよい。命令およびデータの一部または全部は、プロセッサ１３９から物理的に離れており、プロセッサ１３９によってアクセス可能な場所に格納されてもよい。同様に、プロセッサ１３９は、実際に、並列に動作するまたは動作しないプロセッサの集合体を含むことができる。いくつかの例において、メモリ１３２および／または１つ以上のプロセッサ１３９は、ハイパーバイザの一部であってもよい。
【００３６】
ソース１３０と同様に、コントローラ１８０は、メモリ１８２と、１つ以上のプロセッサ１８９とを含む。１つ以上のプロセッサ１８９は、ソースのプロセッサ１３９に関連して上述した形態のいずれかをとることもできる。メモリ１８２は、データ１８４と、命令１８８とを含む。メモリ１８２は、任意の種類であってもよく、ソースのメモリ１３２に関連して上述した機能のいずれかを含むことができる。命令１８８は、ライブ移行の完了の検出、およびターゲットホスト上のゲストのアドレスの更新を規定する。ライブ移行の完了の検出は、例えば、ソース１３０およびターゲット１６０の一方から、移行が完了したことを示す通知を受信することを含むことができる。アドレスの更新は、移行を準備するためにターゲットおよびソースをプログラミングし、ソースおよびターゲットを認識するように残りのネットワークをプログラミングすることを含むことができる。命令１８８は、ネットワークデバイス１２０などの他のネットワークデバイスに、ライブ移行が完了したことを通知することを規定することができる。通知には、ターゲット上のゲストの更新されたアドレスをネットワーク装置に提供することを含むことができる。
【００３７】
図３は、別の例示的なシステム３００を示している。図１のシステム１００と同様に、システム３００は、複数の接続されたネットワーク要素、例えば、ソース３３０、ターゲット３６０およびコントローラ３８０を含むことができる。ソース３３０、ターゲット３６０およびコントローラ３８０は、図１〜２に関連して上述したソース１３０、ターゲット１６０およびコントローラ１８０と同様であってもよい。
【００３８】
システム３００は、「他の」ゲスト３２５をさらに含むことができる。「他の」ゲスト３２５は、「他の」ホスト３２０に存在しており、ソース３３０、ターゲット３６０およびコントローラ３８０に通信可能に接続される。上述のように、他のホスト３２０は、ソース３３０およびターゲット３６０と共に、三者間ルーティングを行うことができる。この三者間ルーティングは、例えば、上記の図１に記載の双方向転送に代えてまたはそれに加えて、行うことができる。ソースホストおよびターゲットホストと同様に、他のホストは、任意の種類の仮想化または非仮想化ネットワークデバイスであってもよい。１つの他のホストおよび１つの他のゲストのみが示されているが、複数の他のホストおよび複数のゲストを実装することもできる。
【００３９】
この例において、ターゲットホスト３６０は、ネットワーク更新を申し込むために、例えば図示の通信３４２を介してコントローラ３８０と通信する。コントローラは、ルックアップ要求３４４に応じて、図示の通信３４６で示されたトークンを他のホスト３２０に提供する。このトークンは、ターゲットホスト３６０上のゲスト３１０と直接通信するために利用されてもよい。
【００４０】
図３の例は、ルックアップ要求３４４を発行することを示しているが、他の例において、転送を行う前に、ターゲットホスト３６０上の移行ゲスト３１０と通信するためのフローを他のホストにプッシュすることができる。例えば、ブラウンアウトおよび／またはブラックアウト中に、フローを他のホストにプッシュすることができる。
【００４１】
他のゲスト３２５は、トラフィック３５２をソースホスト３３０に送信し、送信されたトラフィックは、通信３５４で示されるように、ターゲットホスト３６０に転送される。ソースホスト３３０は、他のゲスト３２５がターゲットホスト３６０から入来パケット（３５６で示される）を受信するまで、トラフィック３５４を転送し続ける。他のゲスト３２５は、ターゲットホスト３６０上のゲスト３１０からパケット３５６を受信すると、通信３５８によって表されるように、ターゲット３６０上のゲスト３１０と直接通信を開始する。例えば、他のホスト３２０は、コントローラ３８０から受信したトークンを用いて、他のゲスト３２５からターゲットホスト３６０上のゲスト３１０までの送出パスを認証および指定する。これによって、他のゲスト３２５は、ゲスト３１０の新しい位置を「学習」し、ターゲット３６０上のゲスト３１０から最初の入来パケットを受信した後、ターゲット３６０上のゲスト３１０と直接通信するように自動的に切り替えることができる。
【００４２】
図４は、他のゲスト３２０を示す例示的なブロック図である。上述したように、他のゲスト３２５は、仮想マシンであってもよく、任意の仮想化ネットワーク要素であってもよい。他のゲスト３２０は、ネットワーク内の任意のホスト装置に存在するハイパーバイザ上で動作することができる。
【００４３】
他のゲスト３２５は、データ４２４および命令４２８を含むメモリ４２２と、１つ以上のプロセッサ４２９とを含む。これらの構成要素は、図２に関連して上述したメモリおよびプロセッサと同様であってもよい。命令４２８は、ターゲットホスト上のゲストと通信するためのトークンの受信と、ソースホスト上のゲストにトラフィックの送信、およびターゲットホスト上のゲストからの入来パケットの検出を規定することができる。入来パケットが検出されると、命令４２８は、受信したトークンを用いて、送出パスを認証および指定し、指定された送出パスに沿ってパケットをターゲットホスト上のゲストに直接に送信することをさらに規定することができる。
【００４４】
例示的な方法
図５は、仮想化ネットワークスタックをソースからターゲットにライブ移行するための方法５００を示す例示的なフロー図を提供する。理解すべきことは、以下の方法に含まれる操作は、記載された順序で正確に行う必要がないことである。むしろ、さまざまな動作を異なる順序でまたは同時に処理してもよく、動作を追加または省略してもよい。
【００４５】
ブロック５１０において、ターゲットは、移行に関する情報をソースに送信する。例えば、ターゲットホスト上で仮想マシンマネージャ（ＶＭＭ）を起動して、ライブ移行を開始することができる。ターゲットＶＭＭは、移行を開始するために、ソースＶＭＭと通信することができる。他の例によれば、通信は、ターゲットホストによって開始されてもよく、および／またはソースホストまたはソースゲストに向けられてもよい。さらなる例は、ソースがターゲットと通信すること、第三者のデバイスがソースおよびターゲットの両方に通信すること、または移行を開始するための他の任意のメカニズムを含む。
【００４６】
ブロック５２０において、ソースは、ターゲットから情報を受信する。例えば、ソースホスト、ソースＶＭＭおよび／またはソースゲストは、情報を受信することができる。いくつかの例において、この情報は、移行される予定のゲストへの通知として機能してもよい。
【００４７】
いくつかの例において、ソースホスト上のゲストは、間近に迫っている移行の通知を受けたことに応じて、行動を取ることができる。そのような行動の１つは、レイムダックモードに移行することなど、自身の正常性状態を変更することである。
【００４８】
ブロック５４０において、ソースは、別のゲスト、別のホストまたは他のデバイスなどの仮想化または非仮想化ネットワークデバイスから受信したトラフィックをターゲットに転送する。例えば、ネットワークコントローラは、トラフィックを転送するために、ソース上のフローテーブルに転送ルールをインストールすることができる。同様に、ターゲットは、転送されたトラフィックを受信し、ネットワークデバイスに指定された送出トラフィックをソースに転送することができる（ブロック５５０）。このように、ソースは、ターゲットから転送されたトラフィックを受信し、受信したトラフィックをネットワークデバイスに提供することができる。
【００４９】
ブロック５６０において、移行が完了したか否かを判定することができる。例えば、ソースからターゲットへのゲストの移しが完了したときに、またはネットワークデバイスがターゲットホスト上のゲストと通信するように更新されたときに、移行が完了したとみなされる。一例によれば、ソースホストは、ゲストがターゲットホストに移行されたことを検出することができる。別の例として、ソースは、例えばネットワークコントローラから、移行完了の通知を受けてもよい。移行がまだ完了していない場合、ソースは、ネットワークデバイスとターゲット間の転送を引き続き行う。
【００５０】
ブロック５６０において、移行が完了したと判定された場合、ブロック５５０における処理は、ターゲットホスト上で再開され、ターゲットホスト上のゲストは、ネットワークデバイスからパケットを直接に受信する。例えば、コントローラは、ターゲットホスト上のゲストの更新されたアドレスをネットワークデバイスに提供することによって、直接通信を可能にすることができる。
【００５１】
図６は、「他の」ゲストによって促進された仮想化ネットワークスタックをライブ移行するための方法６００を示す別の例示的なフロー図を提供する。図５の方法５００と同様に、方法６００に含まれる動作を異なる順序でまたは同時に処理してもよく、動作を追加または省略してもよい。
【００５２】
ブロック６１０において、他のゲストは、ターゲットホスト上の移行ゲストと通信するためのトークンを受信する。トークンは、例えばルックアップ要求に応じて、ネットワークコントローラから受けられてもよい。トークンは、ターゲットへの送出パスを認証および指定することができる。例えば、トークンを用いて、ターゲットから直接に受信したパケットを認証することができ、ターゲットに直接に送出されるパケットを認証することができ、およびターゲットから他のゲストへの入来パス上のパケットを認証することができる。
【００５３】
ブロック６２０において、他のゲストは、ネットワークトラフィックをソースホスト上の移行ゲストに送信する。そのトラフィックは、ソースで受信され（ブロック６３０）、ターゲットに転送される（ブロック６４０）。
【００５４】
ブロック６５０において、ターゲットは、ソースから転送されたトラフィックを受信すると共に、他のゲストに指定された送出トラフィックをソースに転送する。
【００５５】
ブロック６６０において、他のゲストは、ターゲットホスト上の移行ゲストから入来パケットを受信したか否かを判定する。受信していない場合、ソースおよびターゲットは、他のゲストとの間のトラフィックを転送し続ける。しかしながら、他のゲストがターゲットから入来パケットを受信すると、他のゲストにとって、移行が完了したことに関する知らせである可能性がある。
【００５６】
したがって、ブロック６７０において、他のゲストは、ターゲット上の移行ゲストにパケットを直接に送信する。例えば、他のゲストは、ネットワークコントローラから受信したトークンを用いて、通信用の送出パスを認証および指定する。
【００５７】
方法６００は、よりシームレスな移行を提供することができる。これにより、移行が完了した後、他のゲストがターゲット上のゲストにパケットを送信し始めることができる。例えば、他のゲストは、ターゲットへの送出パスを設定するためのトークンをコントローラから既に受信しているため、移行が完了した後、コントローラからの更新を待つ必要がない。
【００５８】
前述の技術は、ゲストに与える影響を最小限にして、ゲスト仮想マシンの活動しているプロセスをソースホストからターゲットホストに移動することができるため、さらに有利である。ゲストプロセスは、遅延または中止されなくてもよく、最小限に遅延または中止されてもよい。さらに、移行ゲストを間近に迫っているライブ移行に公開し、移行ゲストがそれに応じて行動を取るようにすることも有利である。例えば、移行ゲストをレイムダックモードにすると、負荷分散操作に与える影響が最小限に抑えられ、アプリケーションの継続的な実行が可能である。このことは、ブラックアウト遅延に敏感なアプリケーションにとって特に有利である。
【００５９】
特許請求の範囲によって規定された主題から逸脱することなく、上述した特徴のこれらのおよび他の変形および組み合わせを利用することができるため、例示的な態様の前述の説明は、特許請求の範囲によって規定された主題を限定するものではなく、特許請求の範囲によって規定された主題を例示するものであると理解すべきである。また、理解すべきことは、本明細書に記載された例示（および「〜のような」、「例えば」および「含む」などの表現）は、特許請求された主題を特定の実施例に限定するものとして解釈すべきではなく、これらの例示は、多くの可能な態様のうち一部のみを説明することを意図している。
【図１】
0006534399.tif 000002
【図２】
0006534399.tif 000003
【図３】
0006534399.tif 000004
【図４】
0006534399.tif 000005
【図５】
0006534399.tif 000006
【図６】
0006534399.tif 000007