(57)【要約】【課題】マイグレーションによる通信の瞬断を抑制する。【解決手段】サーバとクライアント端末との間のパケットを監視する制御装置において、移行元のサーバと移行元のサーバの処理環境の移行先である移行先のサーバとからパケットを受信する受信部と、移行元のサーバと移行先のサーバとから受信された対応するパケットの受信時刻の差分が許容範囲内であるか否かを判定し、対応するパケットのうち移行先のサーバから受信されたパケットを廃棄する判定部と、受信時刻の差分が許容範囲内であると判定された場合に、移行元のサーバの処理を停止させる制御部と、移行元のサーバ又は移行先のサーバから受信されたパケットを送信する送信部と、備える制御装置である。【選択図】図７
2018005664.tif 000002
【特許請求の範囲】
【請求項１】
サーバとクライアント端末との間のパケットを監視する制御装置において、
移行元のサーバと前記移行元のサーバの処理環境の移行先である移行先のサーバとからパケットを受信する受信部と、
前記移行元のサーバと前記移行先のサーバとから受信された対応するパケットの受信時刻の差分が許容範囲内であるか否かを判定し、前記対応するパケットのうちの前記移行先のサーバから受信されたパケットを廃棄する判定部と、
前記受信時刻の差分が前記許容範囲内であると判定された場合に、前記移行元のサーバの処理を停止させる制御部と、
前記移行元のサーバ又は前記移行先のサーバから受信されたパケットを送信する送信部と、
を備える制御装置。
【請求項２】
前記受信部は、前記移行元のサーバから前記移行先のサーバへの処理環境の移行が実行中である場合には、前記移行元のサーバ及び前記移行先のサーバから受信したパケットを前記判定部に出力し、前記移行元のサーバから前記移行先のサーバへの処理環境の移行が実行中でない場合には、前記移行先のサーバから受信したパケットを前記送信部に出力する、
請求項１に記載の制御装置。
【請求項３】
前記判定部は、前記受信時刻の差分が前記許容範囲内であると判定した場合と、前記移行先のサーバから受信されたパケットの受信時刻が前記移行元のサーバから受信されたパケットよりも早い場合とに、前記移行元のサーバから前記移行先のサーバへの処理環境の移行が完了したことを通知する、
請求項１又は２に記載の制御装置。
【請求項４】
前記判定部は、前記移行元のサーバから受信されたパケットと前記移行先のサーバから受信されたパケットとが一致するか否かを判定し、一致すると判定した場合には、前記受信時刻の差分が許容範囲内であるか否かの判定を行う、
請求項１から３のいずれか一項に記載の制御装置。
【請求項５】
前記判定部は、前記移行元のサーバ及び前記移行先のサーバから受信されたパケットそれぞれについてハッシュ値を識別情報として算出し、前記移行元のサーバ及び前記移行先のサーバから受信されたパケットそれぞれの識別情報が一致するか否かを判定することで、前記移行元のサーバから受信されたパケットと前記移行先のサーバから受信されたパケットとが一致するか否かを判定する、
請求項４に記載の制御装置。
【請求項６】
前記移行元のサーバ宛てのパケットをバッファリングするバッファと、
前記バッファ内から出力された前記移行元のサーバ宛てのパケットの複製を生成し、複製されたパケットを移行先のサーバに出力する複製部
をさらに備える請求項１から５のいずれか一項に記載の制御装置。
【請求項７】
前記判定部は、前記受信時刻の差分に基づいて、前記バッファのバッファ量を設定する、
請求項６のいずれか一項に記載の制御装置。
【請求項８】
前記判定部は、前記受信時刻の差分が大きいほど前記バッファ量を大きく設定する、
請求項７に記載の制御装置。
【請求項９】
サーバ宛てのパケットを受信し、当該サーバについて他のサーバへの処理環境の移行が実行中である場合には、前記サーバ宛てのパケットを前記バッファに出力し、前記サーバから前記他のサーバへの処理環境の移行が実行中でない場合には、前記サーバ宛てのパケットを前記サーバに出力するパケット監視部を、
さらに備える請求項６から８のいずれか一項に記載の制御装置。
【請求項１０】
前記制御部は、前記移行元のサーバ宛てのパケットの単位時間当たりの受信量を監視し、前記移行元のサーバ宛てのパケットの単位時間当たりの受信量に応じて、前記移行先のサーバの起動を判定し、前記移行元のサーバから前記移行先のサーバへの処理環境の移行の開始を判定する、
請求項１から９のいずれか一項に記載の制御装置。
【請求項１１】
前記移行先のサーバは、仮想サーバであり、
前記制御部は、前記移行元のサーバ宛てのパケットの単位時間当たりの受信量に応じて、前記移行先の仮想サーバのコア数を決定する、
請求項１０に記載の制御装置。
【請求項１２】
サーバとクライアント端末との間のパケットを監視する制御装置と、
移行元のサーバと、
前記移行元のサーバの処理環境の移行先である移行先のサーバと、
を含む情報処理システムであって、
前記制御装置は、
前記移行元のサーバ及び前記移行先のサーバからパケットを受信する受信部と、
前記移行元のサーバと前記移行先のサーバとから受信された対応するパケットの受信時刻の差分が許容範囲内であるか否かを判定し、前記対応するパケットのうち前記移行先のサーバから受信されたパケットを廃棄する判定部と、
前記受信時刻の差分が前記許容範囲内であると判定された場合に、前記移行元のサーバの処理を停止させる制御部と、
前記移行元のサーバ又は前記移行先のサーバから受信されたパケットを送信する送信部と、を備える
情報処理システム。
【請求項１３】
サーバとクライアント端末との間のパケットを監視する制御装置において、
移行元のサーバと前記移行元のサーバの処理環境の移行先である移行先のサーバとからパケットを受信し、
前記移行元のサーバと前記移行先のサーバとから受信された対応するパケットの受信時刻の差分が許容範囲内であるか否かを判定し、前記対応するパケットのうち前記移行先のサーバから受信されたパケットを廃棄し、
前記受信時刻の差分が前記許容範囲内であると判定された場合に、前記移行元のサーバの処理を停止させ、
前記移行元のサーバ又は前記移行先のサーバから受信されたパケットを送信する、
制御方法。
【請求項１４】
サーバとクライアント端末との間のパケットを監視する制御装置に、
移行元のサーバと前記移行元のサーバの処理環境の移行先である移行先のサーバとからパケットを受信させ、
前記移行元のサーバと前記移行先のサーバとから受信された対応するパケットの受信時刻の差分が許容範囲内であるか否かを判定させ、前記対応するパケットのうち前記移行先のサーバから受信されたパケットを廃棄させ、
前記受信時刻の差分が前記許容範囲内であると判定された場合に、前記移行元のサーバの処理を停止させ、
前記移行元のサーバ又は前記移行先のサーバから受信されたパケットを送信させる、
ための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、情報処理システム、制御方法、及び、情報処理プログラムに関する。
【背景技術】
【０００２】
装置上で動作しているＯＳ（Operation System）やソフトウェア、当該ＯＳやソフトウェアの設定や状態、装置上で保持されているデータ等をそのまま他の装置に移行させることをマイグレーションと称する。サービスプロバイダでは、サービスを提供しているサーバ等のハードウェアのメンテナンスや部品の交換時にサービスを停止させないように、ＯＳやソフトウェアを別環境に移行させるライブマイグレーションが行われる。ライブマイグレーションでは、別環境への切替の際に、ダウンタイムが発生し、ミリ秒単位の通信の瞬断が発生する。瞬断とは、本明細書では、処理環境の切替によって通信できない期間が生じる現象を示す。処理環境とは、コンピュータのハードウェアの構成や設定、ＯＳなどソフトウェアの構成や設定、および、それら全体の組み合わせのことである。
【０００３】
別環境への切り替えの際の通信の瞬断時間は、ユーザ端末とのセッションの切断が判定される時間よりも短い為、ユーザ端末とのセッションは維持される。また、別環境への切り替えの際の通信の切断によりパケットロスが発生した場合でも、ユーザ端末における再送機能によって、通信内容への影響は少ない。したがって、ライブマイグレーションの環境の移行によるユーザへのサービス提供への影響は少ない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−４７９２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、インターネットなどのネットワークは、近年、高速化、且つ、大容量化しており、ライブマイグレーションによる通信の瞬断がミリ秒単位であっても、サービスに与える影響が大きくなる可能性がある。以降、本明細書では、マイグレーションと称する場合には、ライブマイグレーションを示すこととする。
【０００６】
本発明の一態様は、マイグレーションによる通信の瞬断を抑制する制御装置、情報処理システム、制御方法、及び、情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の態様の一つは、サーバとクライアント端末との間のパケットを監視する制御装置である。制御装置は、移行元のサーバと移行元のサーバの処理環境の移行先である移行先のサーバとからパケットを受信する受信部と、移行元のサーバと移行先のサーバとから受信された対応するパケットの受信時刻の差分が許容範囲内であるか否かを判定し、対応するパケットのうち移行先のサーバから受信されたパケットを廃棄する判定部と、受信時刻の差分が許容範囲内であると判定された場合に、移行元のサーバの処理を停止させる制御部と、移行元のサーバ又は移行先のサーバから受信されたパケットを送信する送信部と、を備える。
【発明の効果】
【０００８】
開示の制御装置、情報処理システム、制御方法、及び、情報処理プログラムによれば、
マイグレーションによる通信の瞬断を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、参考例の一つである情報処理システムのシステム構成の一例を示す図である。
【図２】図２は、参考例の他の一つとしての情報処理システムのシステム構成の一例を示す図である。
【図３】図３は、第１実施形態に係る情報処理システムのシステム構成の一例を示す図である。
【図４】図４は、第１実施形態に係る他の一つの情報処理システムのシステム構成の一例を示す図である。
【図５】図５は、情報処理システムにおけるスイッチのインタフェースカードのハードウェア構成の一例である。
【図６】図６は、情報処理システムにおける物理サーバのハードウェア構成の一例である。
【図７】図７は、パケット監視アクセラレータの機能構成の一例を示す図である。
【図８】図８は、マイグレーション元タイムスタンプリストの一例である。
【図９】図９は、パケット監視部の処理のフローチャートの一例である。
【図１０】図１０は、バッファ部の処理のフローチャートの一例である。
【図１１】図１１は、ミラー部の処理のフローチャートの一例である。
【図１２】図１２は、パケット振分部の処理のフローチャートの一例である。
【図１３Ａ】図１３Ａは、パケットチェック部の処理のフローチャートの一例である。
【図１３Ｂ】図１３Ｂは、パケットチェック部の処理のフローチャートの一例である。
【図１３Ｃ】図１３Ｃは、パケットチェック部の処理のフローチャートの一例である。
【発明を実施するための形態】
【００１０】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００１１】
＜参考例＞
図１は、参考例の一つである情報処理システムのシステム構成の一例を示す図である。図１に示される参考例である情報処理システムＰ１００Ａは、異なるサーバ間でマイグレーションが行われる例である。情報処理システムＰ１００Ａは、スイッチＰ３と、２台の物理サーバＰ２、スイッチＰ３とネットワークを介して接続するクライアント端末Ｐ４とを含む。各物理サーバＰ２は、それぞれ、仮想マシンＰ２１と仮想スイッチＰ２２とを備える。
【００１２】
仮想マシンＰ２１は、ソフトウェアによって仮想的に構築されたコンピュータであり、入力パケットに対して、仮想マシンＰ２１上で実行されているソフトウェアの所定の処理を行い、該処理の結果として、応答パケットを出力する。クライアント端末Ｐ４は、物理サーバＡ上で動作する仮想マシンＡとＴＣＰ（Transport Control Protocol）通信を行っている。例えば、マイグレーションは、物理サーバＡのメンテナンス、処理負荷の減増を契機に行われる。物理サーバＢ上で仮想マシンＢが起動され、スイッチＰ３の通信をマイグレーション元の仮想マシンＡから仮想マシンＢに切り替えることによって、物理サーバＡのマイグレーションは行われる。
【００１３】
より具体的には、マイグレーション先となる物理サーバＢは、マイグレーション元の仮
想マシンＡから仮想マシンＢにメモリをコピーし、仮想マシンＡを停止状態（サスペンド）し、仮想マシンＢを仮想マシンＡの停止時と同じ状態から起動（レジューム）する。このとき、仮想マシンＢは、Ｇｒａｔｕｉｔｏｕｓ  ＡＲＰをスイッチＰ３に送信し、スイッチ３上のＭＡＣ（Media Access Control）アドレステーブルを書き換える。これによって、仮想マシンＡとクライアント端末Ｐ４との通信の転送先を仮想マシンＡから仮想マシンＢへと切り替えることができる。
【００１４】
情報処理システムＰ１００Ａにおけるマイグレーションでは、マイグレーション先の仮想マシンＢが自身の起動処理の完了を判定し、マイグレーション元の仮想マシンＡをサスペンドしてからスイッチＰ３に対してＧｒａｔｕｉｔｏｕｓ  ＡＲＰを行う。仮想マシンＢがスイッチＰ３に対してＧｒａｔｕｉｔｏｕｓ  ＡＲＰを行っている間にも、スイッチＰ３には仮想マシンＡ宛てのパケットは届く。しかしながら、例えば、ＭＡＣアドレステーブルが書換途中であり、当該パケットが仮想マシンＡに転送された場合には、仮想マシンＡが停止している等により、当該パケットが処理されない可能性がある。このようにしてマイグレーションによる瞬断が発生する。
【００１５】
図２は、参考例の他の一つとしての情報処理システムのシステム構成の一例を示す図である。図２に示される参考例である情報処理システムＰ１００Ｂは、同一サーバ上でマイグレーションが行われる例である。情報処理システムＰ１００Ｂは、スイッチＰ３と、１台の物理サーバＰ２、スイッチＰ３とネットワークを介して接続するクライアント端末Ｐ４とを含む。物理サーバＰ２は、仮想マシンＡ、仮想マシンＢ、仮想スイッチＰ２２を備える。
【００１６】
情報処理システムＰ１００Ｂにおいても、情報処理システムＰ１００Ａと同様に、クライアント端末Ｐ４は、仮想マシンＡとＴＣＰ通信を行っており、例えば、物理サーバＰ２のメンテナンス、処理負荷の減増を契機にマイグレーションが行われる。物理サーバＰ２内で仮想マシンＢが起動され、仮想スイッチＰ２２の通信をマイグレーション元の仮想マシンＡから仮想マシンＢに切り替えることによって、物理サーバＰ２のマイグレーションは行われる。
【００１７】
情報処理システムＰ１００Ｂにおけるマイグレーションでも、移行先の仮想マシンＢが自身の起動処理の完了を判定し、仮想マシンＡをサスペンドしてから仮想スイッチＰ２２に対してＧｒａｔｕｉｔｏｕｓ  ＡＲＰを行う。仮想マシンＢが仮想スイッチＰ２２に対してＧｒａｔｕｉｔｏｕｓ  ＡＲＰを行っている間にも仮想マシンＡ宛てのパケットが届く。しかしながら、仮想スイッチＰ２２のＭＡＣアドレステーブルの書換途中であり、パケットが仮想マシンＡに転送された場合には、仮想マシンＡが停止している等によって、当該パケットは処理されない可能性がある。これによって、マイグレーションによる瞬断が発生する。
【００１８】
情報処理システムＰ１００Ａ、Ｐ１００Ｂのいずれにおいても、マイグレーションによる瞬断の時間は、１０ミリ秒単位であり、ＴＣＰのタイムアウト内であるため、クライアント端末Ｐ４とのコネクションは維持される。また、瞬断中に損失されたパケットは、クライアント端末Ｐ４のＴＣＰの再送機能によって再送処理が行われ、補完される。
【００１９】
しかしながら、ネットワークが高速化、大容量化すると、１０ミリ秒単位の瞬断中にロスされるデータ量も多くなる。例えば、１０ミリ秒の瞬断が発生した場合、１００Ｍｂｐｓの回線では最大約１Ｍビット、１Ｇの回線では最大約１０Ｍビット、１０Ｇの回線では最大約１００Ｍビットものデータが損失される。クライアント端末Ｐ４のセッションが、例えば、動画のストリーミングのセッション等、遅延に敏感なセッションである場合には、マイグレーションによる瞬断によって、クライアント端末Ｐ４のユーザに与える影響が
大きくなる可能性がある。
【００２０】
＜第１実施形態＞
第１実施形態では、パケット監視アクセラレータが、仮想マシンの起動及び停止を制御する。パケット監視アクセラレータは、マイグレーション先の仮想マシンの起動完了を、マイグレーション元の仮想マシンとマイグレーション先の仮想マシンとからの対応するパケットの受信時刻の差分に基づいて判定する。対応するパケットとは、受信時刻の比較対象となる、マイグレーション元の仮想マシンによって処理されたパケットと、マイグレーション先の仮想マシンによって処理されたパケットと、である。第１実施形態では、パケット監視アクセラレータは、クライアント端末からのパケットをコピーして、マイグレーション元及びマイグレーション先の仮想マシンに出力する。マイグレーション元及びマイグレーション先の仮想マシンは、同じ内容のパケットに対して同じ処理を実行して、処理の実行結果としてパケットをパケット監視アクセラレータに出力する。したがって、マイグレーション元及びマイグレーション先の仮想マシンとからの対応するパケットは、第１実施形態では、マイグレーション元及びマイグレーション先の仮想マシンによる同じパケットに対する同じ処理の実行結果としてのパケットである。
【００２１】
マイグレーション先の仮想マシンの起動完了を判定するまでの間は、パケット監視アクセラレータは、マイグレーション元の仮想マシンから受信したパケットを出力する。マイグレーション先の仮想マシンの起動完了を判定すると、パケット監視アクセラレータは、マイグレーション元の仮想マシンを停止し、マイグレーション先の仮想マシンから受信したパケットを出力する。これによって、パケット監視アクセラレータは、マイグレーションによる通信の瞬断を抑制する。
【００２２】
図３は、第１実施形態に係る情報処理システムのシステム構成の一例を示す図である。図３に示される情報処理システム１００Ａは、異なるサーバ間でマイグレーションが行われるシステムである。情報処理システム１００Ａは、２台の物理サーバ２、スイッチ３Ａ、スイッチ３Ａとネットワークを介して接続するクライアント端末４を備える。２台の物理サーバ２は、それぞれ、スイッチ３Ａと接続されている。なお、図３に示されるスイッチ３Ａと各物理サーバ２との接続は、データ通信を行うための回線であり、図示されていないが、スイッチ３Ａと各物理サーバ２とは、マイグレーションの制御のための回線でも接続されている。
【００２３】
２台の物理サーバ２は、物理サーバＡと物理サーバＢとである。これらの２台が区別されない場合には、物理サーバ２と表記される。物理サーバ２は、仮想マシン２１と仮想スイッチ２２とを備える。仮想マシン及び仮想スイッチについても、区別されない場合には、仮想マシン２１及び仮想スイッチ２２、と表記される。第１実施形態では、仮想マシンＡがマイグレーション元、仮想マシンＢがマイグレーション先と想定される。マイグレーション元の仮想マシンＡは、「移行元のサーバ」の一例である。マイグレーション先の仮想マシンＢは、「移行先のサーバ」の一例である。
【００２４】
異なる物理サーバ間でマイグレーションが行われる情報処理システム１００Ａでは、スイッチ３に、パケット監視アクセラレータ１が備えられる。スイッチ３に備えられるパケット監視アクセラレータ１は、「制御装置」の一例である。
【００２５】
図４は、第１実施形態に係る他の一つの情報処理システムのシステム構成の一例を示す図である。図４に示される情報処理システム１００Ｂは、同一の物理サーバ上でマイグレーションが行われる例である。情報処理システム１００Ｂは、１台の物理サーバ２Ｂ、スイッチ３、スイッチ３とネットワークを介して接続するクライアント端末４を備える。物理サーバ２Ｂは、スイッチ３と接続されている。なお、図４に示されるスイッチ３と物理
サーバ２Ｂとの接続は、データ通信を行うための回線であり、図示されていないが、スイッチ３と物理サーバ２とは、マイグレーションの制御のための回線でも接続されている。
【００２６】
第１実施形態では、物理サーバ２Ｂは、仮想マシンＡ、仮想マシンＢと、仮想スイッチに代えて、パケット監視アクセラレータ１と、を備える。仮想マシンについては、区別されない場合には、仮想マシン２１と表記される。第１実施形態では、仮想マシンＡがマイグレーション元、仮想マシンＢがマイグレーション先と想定される。情報処理システム１００Ｂにおいて、マイグレーション元の仮想マシンＡは、「移行元のサーバ」の一例である。マイグレーション先の仮想マシンＢは、「移行先のサーバ」の一例である。物理サーバ２Ｂに備えられるパケット監視アクセラレータ１は、「制御装置」の一例である。
【００２７】
第１実施形態では、図３に示される情報処理システム１００Ａ、図４に示される情報処理システム１００Ｂのどちらともが、適用システムとして想定される。
【００２８】
＜装置構成＞
図５は、情報処理システム１００Ａにおけるスイッチ３Ａのインタフェースカードのハードウェア構成の一例である。情報処理システム１００Ａでは、スイッチ３Ａにパケット監視アクセラレータ１が搭載されている。
【００２９】
スイッチ３Ａは、例えば、複数のインタフェースカードと、制御カードとを備える。いずれのインタフェースカードも同様のハードウェア構成を有する。インタフェースカードは、ハードウェア構成要素として、ＣＰＵ（Central Processing Unit）３０１、メモリ
３０２、ＮＩＣ（Network Interface Card）３０３、スイッチ（ＳＷ）部３０４を備え、これらはバスで接続されている。
【００３０】
ＮＩＣ  ３０３は、複数のインタフェースポート、ＰＨＹ／ＭＡＣ（PHYsical/Media Access Control）チップ、ＮＰＵ（Network Processing Unit）を備える。ＰＨＹ／ＭＡＣチップは、ネットワークインタフェースから入力された電気信号をビット列に変換し、ビット列からフレームを組み立てて、ＳＷ部３０４に出力する。ＮＰＵは、ネットワーク関連の処理を行うプロセッサである。
【００３１】
パケット監視アクセラレータ１は、仮想マシンを搭載する物理サーバ２に接続するインタフェースポートを有するインタフェースカードのＮＩＣ  ３０３に搭載される。パケット監視アクセラレータ１は、例えば、ＮＩＣ  ３０３に搭載されるＮＰＵのモジュールの一つであり、ＮＰＵ内のメモリに記録されるプログラムをＮＰＵ内のプロセッサが実行することによって達成される。または、パケット監視アクセラレータ１は、例えば、ＮＩＣ
３０３に搭載されるＦＰＧＡ（Field-Programmable Gate Array）によって実現されて
もよい。
【００３２】
スイッチ部３０４は、同一カード内のインタフェースポート間のスイッチング、カード間のスイッチングを行う。スイッチ部３０４は、図示されていないスイッチカードに接続している。他のカード内のインタフェースポートを出力先とするフレームは、スイッチ部３０４によってスイッチカードに転送され、スイッチカードから、出力先のインタフェースポートが存在するカードに転送される。
【００３３】
メモリ３０２は、例えば、ＲＡＭ（Random Access Memory）である。メモリ３０２は、用途によって、複数備えられていてもよい。例えば、パケットが一時的に格納されるパケット用メモリ、ＭＡＣテーブル等を格納するアドレス用メモリ、プログラムやデータ等を格納するメモリ、等である。メモリ３０２には、ＯＳ（Operating System）、アプリケーション等が格納されている。
【００３４】
ＣＰＵ  ３０１は、スイッチ部３０４からパケットの入力を受ける。ＣＰＵ  ３０１は、メモリ３０２に保持されたＯＳや様々なアプリケーションプログラムを実行することによって、様々な処理を実行する。
【００３５】
制御カードには、ＣＰＵ、メモリ等が搭載されている。制御カードは、各インタフェースカードの管理を行う。なお、スイッチ３のハードウェア構成は、図５に示されるものに限定されない。
【００３６】
図６は、情報処理システム１００Ｂにおける物理サーバ２Ｂのハードウェア構成の一例である。情報処理システム１００Ｂでは、パケット監視アクセラレータ１は、物理サーバ２Ｂに搭載される。物理サーバ２Ｂは、専用のコンピュータである。
【００３７】
物理サーバ２Ｂは、ＣＰＵ（Central Processing Unit）２０１、主記憶装置２０２、
入力装置２０３、出力装置２０４、補助記憶装置２０５、ＮＩＣ  ２０７を備える。また、これらはバス２０９により互いに接続されている。
【００３８】
入力装置２０３は、例えば、キーボード、マウス、操作ボタン、タッチパネル、キーパッド等である。入力装置２０３から入力されたデータは、ＣＰＵ  ２０１に出力される。出力装置２０４は、ＣＰＵ  ２０１の処理の結果を出力する。出力装置２０４は、ディスプレイ、プリンタを含む。
【００３９】
補助記憶装置２０５は、ＯＳ、様々なプログラムや、各プログラムの実行に際してＣＰＵ  ２０１が使用するデータを格納する。補助記憶装置２０５は、仮想マシン２１を実現するソフトウェア又はフレームワークを格納する。補助記憶装置２０５は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、フラッシュメモリ、又はハードディスクドライ
ブ（Hard Disk Drive）等の不揮発性のメモリである。
【００４０】
主記憶装置２０２は、ＣＰＵ  ２０１に、補助記憶装置２０５に格納されているプログラムをロードする記憶領域および作業領域を提供したり、バッファとして用いられたりする記憶装置である。主記憶装置２０２は、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭのような半導体メモリを含む。
【００４１】
ＣＰＵ  ２０１は、補助記憶装置２０５に保持されたＯＳや様々なアプリケーションプログラムを主記憶装置２０２にロードして実行することによって、様々な処理を実行する。ＣＰＵ  ２０１は、１つに限られず、複数備えられてもよい。ＣＰＵ  ２０１が、補助記憶装置２０５に格納されるソフトウェア又はフレームワークを実行することによって、物理サーバ２Ｂ上に仮想マシン２１が実装される。
【００４２】
ＮＩＣ  ２０７は、ネットワークとの情報の入出力を行うインタフェースポート、ＰＨＹ／ＭＡＣ回路、ＮＰＵ等を備える。パケット監視アクセラレータ１は、ＮＩＣ  ２０７に備えられるＮＰＵのモジュールの一つであり、ＮＰＵ内のメモリに記録されるプログラムをＮＰＵ内のプロセッサが実行することによって達成される。または、パケット監視アクセラレータ１は、ＮＩＣ  ２０７に搭載されるＦＰＧＡである。
【００４３】
なお、図６に示される物理サーバ２Ｂのハードウェア構成は、一例であり、上記に限られず、実施の形態に応じて適宜構成要素の省略や置換、追加が可能である。例えば、物理サーバ２Ｂは、可搬記録媒体駆動装置を備え、可搬記録媒体に記録されたプログラムを実行してもよい。可搬記録媒体は、例えば、ＳＤカード、ｍｉｎｉＳＤカード、ｍｉｃｒｏＳＤカード、ＵＳＢ（Universal Serial Bus）フラッシュメモリ、ＣＤ（Compact Disc）
、ＤＶＤ(Digital Versatile Disc)、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ、又はフラッシュメモリカードのような記録媒体である。
【００４４】
図７は、パケット監視アクセラレータ１の機能構成の一例を示す図である。パケット監視アクセラレータ１は、機能構成要素として、パケット監視部１１、バッファ部１２、ミラー部１３、セレクタ１４、パケット振分部１５、パケットチェック部１６、セレクタ１７を備える。これらの機能構成要素は、例えば、スイッチ３Ａ又は物理サーバ２ＢのＮＩＣに搭載されるＦＰＧＡにより実現される。または、これらの要素は、ＮＰＵのモジュールの一つとして実現される。
【００４５】
パケット監視部１１は、クライアント端末４からのパケットを受信し、パケットの流量を監視する。パケット監視部１１は、例えば、パケットの宛先ＩＰアドレス毎にパケットの流量を監視する。ただし、これに限られず、パケット監視部１１は、パケットの宛先ＩＰアドレス、宛先ポート番号、送信元ＩＰアドレス、送信元ポート番号等のうちの複数の組合せごとにパケットの流量を監視してもよい。
【００４６】
パケット監視部１１は、単位時間当たりのパケットの流量に基づいて、仮想マシン２１のマイグレーションの制御を行う。より具体的には、パケット監視部１１は、コア増加設定閾値、コア減少設定閾値を用いて、マイグレーション先の仮想マシンの起動及び当該仮想マシンのコア数を決定する。マイグレーション先の仮想マシンの起動の決定により、マイグレーションが開始される。
【００４７】
パケット監視部１１は、パケットの宛先の仮想マシン２１についてマイグレーションが実行されている間は、当該パケットをバッファ部１２に出力する。パケットの宛先の仮想マシン２１についてマイグレーションが実行されていない場合には、パケット監視部１１は、セレクタ１４を通じて、宛先の仮想マシン２１にパケットを出力する。パケット監視部１１の処理の詳細は後述される。
【００４８】
パケット監視部１１は、仮想マシン２１についてのマイグレーションについて、パケットチェック部１６からマイグレーション完了通知の入力を受ける。パケット監視部１１は、マイグレーション完了通知の入力を受けると、該当するマイグレーション元の仮想マシン２１に動作停止の指示を送信する。パケット監視部１１は、「制御部」の一例である。
【００４９】
バッファ部１２は、パケット監視部１１からパケットの入力を受ける。バッファ部１２は、宛先の仮想マシン２１毎にバッファを備えている。バッファ部１２が備えるバッファは、ＦＩＦＯ（First In First Out）キューである。バッファ部１２は、バッファに所定時間パケットを滞留させ、当該所定時間が経過すると、当該パケットをミラー部１３に出力する。
【００５０】
また、バッファ部１２は、パケットの滞留時間をパケットチェック部１６からの指示に従って設定する。パケットの滞留時間が長いほど、バッファのサイズは大きく設定される。バッファ部１２は、「バッファ」の一例である。
【００５１】
ミラー部１３は、バッファ部１２からパケットの入力を受ける。ミラー部１３は、入力されたパケットをコピーして、マイグレーション元の仮想マシン２１に転送されるパケットと、マイグレーション先の仮想マシン２１に転送されるパケットとを用意する。ミラー部１３は、それぞれのパケットに、仮想マシン２１を識別するための識別ヘッダを付与して、マイグレーション元の仮想マシン２１と、マイグレーション先の仮想マシン２１とに、セレクタ１４を通じて、出力する。ミラー部１３は、「複製部」の一例である。
【００５２】
例えば、各仮想マシン２１は、互いに異なるＶＬＡＮ（Virtual Local Area）に属し、パケット監視アクセラレータ１を搭載する装置は、それぞれのＶＬＡＮに接続するインタフェースを有している。仮想マシン２１が互いに異なるＶＬＡＮに属している場合には、ミラー部１３によってパケットに付与される識別ヘッダには、ＶＬＡＮ  ＩＤが含まれる。
【００５３】
また、例えば、パケット監視アクセラレータ１を搭載する装置は、各仮想マシン２１と通信トンネルを構築して接続されている。パケット監視アクセラレータ１を搭載する装置と各仮想マシン２１とが通信トンネルによって接続されている場合には、ミラー部１３によってパケットに付与される識別ヘッダには、トンネルＩＤが含まれる。
【００５４】
なお、マイグレーション元の仮想マシン２１とマイグレーション先の仮想マシン２１とは、異なる仮想マシンであって、それぞれへのパケットには、異なる識別ヘッダが付与される。
【００５５】
パケット振分部１５は、仮想マシン２１から、当該仮想マシン２１によって処理されたパケットの入力を受ける。パケット振分部１５は、パケットの送信元の仮想マシン２１についてマイグレーションが実行中である場合には、当該パケットをパケットチェック部１６に出力する。パケットの送信元の仮想マシン２１についてマイグレーションが実行中でない場合には、当該パケットをネットワーク側へ、セレクタ１７を通じて、出力する。
【００５６】
パケット振分部１５は、例えば、マイグレーション元の仮想マシン２１とマイグレーション先の仮想マシン２１との対応についての情報を、他の機能構成要素と共有して、保持している。また、仮想マシン２１からのパケットには識別ヘッダが付与されている。したがって、パケット振分部１５は、パケットに付与されている識別ヘッダに基づいて、マイグレーション中の仮想マシン２１からのパケットか否かを判定する。
【００５７】
また、パケット振分部１５は、パケットチェック部１６からマイグレーション完了通知の入力を受ける。マイグレーション完了通知の入力を受けると、パケット振分部１５は、該当する仮想マシン２１からのパケットの出力先を、パケットチェック部１６からセレクタ１７に切り替える。パケット振分部１５は、「受信部」の一例である。
【００５８】
パケットチェック部１６は、パケット振分部１７から、マイグレーション元の仮想マシン２１によって処理されたパケットと、マイグレーション先の仮想マシン２１によって処理されたパケットと、の入力を受ける。パケットチェック部１６は、入力されたパケットから識別ヘッダを除去する。また、パケットチェック部１６は、入力されたパケットについて、受信時刻のタイムスタンプを取得する。また、パケットチェック部１６は、入力されたパケットについて、パケット識別子を求める。パケット識別子は、例えば、ハッシュ計算により算出されハッシュ値である。
【００５９】
パケットチェック部１６は、マイグレーション元タイムスタンプリストを保持している。マイグレーション元タイムスタンプリストは、マイグレーション元の仮想マシン２１によって処理されたパケットの受信時刻を記録するリストである。パケットチェック部１６は、マイグレーション元の仮想マシン２１からのパケットの、パケット識別子とタイムスタンプとを、マイグレーション元タイムスタンプリストに格納する。
【００６０】
パケットチェック部１６は、マイグレーション先の仮想マシン２１によって処理されたパケットについて、マイグレーション元タイムスタンプリストを参照して、マイグレーション元の仮想マシン２１からのパケットの受信時刻との差分を取得する。以降、マイグレーション元の仮想マシン２１からのパケットの受信時刻とマイグレーション先の仮想マシ
ン２１からのパケットの受信時刻との差分を、単に、受信時刻の差分、と称する。
【００６１】
マイグレーション先の仮想マシン２１の起動処理中は、起動処理と並行してパケットの処理が行われるため、起動処理が完了している状態に比べると、応答時間が長くなる。すなわち、マイグレーション先の仮想マシン２１の起動処理中は、受信時刻の差分が大きくなる。マイグレーション先の仮想マシン２１の起動処理が完了すると、マイグレーション先の仮想マシン２１は、より多くのリソースをパケットの処理に割り当てられるので、受信時刻の差分はほぼなくなる。あるいは、マイグレーション先の仮想マシン２１の起動処理が完了すると、マイグレーション元の仮想マシン２１からのパケットよりもマイグレーション先の仮想マシン２１からのパケット方が先に入力される。
【００６２】
したがって、受信時刻の差分が一致するとみなせる許容範囲内である場合には、マイグレーション先の仮想マシン２１の起動処理が完了したとみなすことができる。パケットチェック部１６は、受信時刻の差分が許容範囲内となった場合に、マイグレーションの完了通知を、パケット監視部１１とパケット振分部１５とに通知する。受信時刻の差分が許容範囲内であるか否かは、例えば、所定の閾値を用いて判定される。所定の閾値は、例えば、１０μ秒である。ただし、受信時刻の差分についての閾値は、１０μ秒に限定されず、例えば、マイグレーション先の仮想マシン２１とマイグレーション元の仮想マシン２１との性能差に応じた値に設定されてもよい。
【００６３】
パケットチェック部１６は、マイグレーション先の仮想マシン２１からのパケットを廃棄し、マイグレーション元の仮想マシン２１からのパケットをセレクタ１７に出力する。なお、パケット識別子はハッシュ値である。そのため、マイグレーション先の仮想マシン２１からのパケットとパケット識別子が一致するエントリが、マイグレーション元タイムスタンプリストにあることによって、マイグレーション元及びマイグレーション先の仮想マシン２１からのパケットが一致していることが担保される。
【００６４】
また、パケットチェック部１６は、受信時刻の差分に基づいて、バッファ部１２のパケット滞留時間を設定する。パケットチェック部１６は、受信時刻の差分が大きければ大きいほどバッファ部１２のパケット滞留時間を長く設定し、受信時刻の差分が小さければ小さいほどバッファ部１２のパケット滞留時間を短く設定する。より具体的には、パケットチェック部１６は、受信時刻の差分に係数を乗じて、バッファ部１２のバッファ量を算出する。パケットの滞留時間とバッファ量とは、パケットの滞留時間が長いほどバッファ量も大きくなるという関係であるので、バッファ部１２のバッファ量Ｂｕｆｆｅｒ（ｂｙｔｅ）として求められる。以下の数式は、バッファ部１２のバッファ量の算出式である。バッファリング係数は、例えば、マイグレーション先及び／又はマイグレーション元の仮想マシン２１の性能に応じて設定される。パケットチェック部１６は、バッファ部１２に、算出したバッファ量を通知する。
【数１】
2018005664.tif 000003
【００６５】
マイグレーション元の仮想マシン２１は、起動処理を行っていないので、パケットの入力後すぐに当該パケットに対する処理を開始することができる。一方、マイグレーション先の仮想マシン２１は、起動処理を行っているので、パケットの入力後当該パケットに対
する処理が起動処理によって待機させられる可能性がある。そのため、マイグレーション先の仮想マシン２１によるパケットに対する処理は、マイグレーション元の仮想マシン２１によるパケットに対する処理から遅れて開始される可能性がある。
【００６６】
マイグレーション元の仮想マシン２１宛てのパケットをバッファ部１２にバッファリングすることによって、マイグレーション元及びマイグレーション先の仮想マシン２１のパケットに対する処理の開始時点を一致させるようにすることができる。また、受信時刻の差に応じてバッファ部１２の設定バッファ量を設定することによって、受信時刻の差が大きい場合にはバッファ部１２にパケットがバッファリングされる時間も長くなる。受信時刻の差が大きいことは、マイグレーション先の仮想マシン２１が起動処理に時間がかかっていることが示される。この場合、バッファ部１２の設定バッファ量を大きくすることによって、マイグレーション先の仮想マシン２１へのパケット入力を遅らせ、その分、マイグレーション先の仮想マシン２１に起動処理をよりすすめさせることができる。結果として、マイグレーション先の仮想マシン２１の起動処理の完了を早めることができる。パケットチェック部１６は、「判定部」の一例である。
【００６７】
セレクタ１４、セレクタ１７は、２つの入力経路と１つの出力経路を有し、いずれかの経路から入力されたパケットを出力経路から出力する。セレクタ１４は、入力経路として、ミラー部１３からの入力経路と、パケット監視部１１からの入力経路とを有する。セレクタ１４は、出力経路として、仮想マシン２１への経路を有する。セレクタ１７は、入力経路として、パケットチェック部１７からの経路と、パケット振分部１５からの経路と、を有する。セレクタ１７は、出力経路として、ネットワークへの経路を有する。セレクタ１７は、「送信部」の一例である。
【００６８】
以上より、マイグレーションの実行中でない仮想マシン２１に係るパケットは、パケット監視部１１、セレクタ１４、パケット振分部１５、セレクタ１７の順で、パケット監視アクセラレータ１を通過する。マイグレーションが実行中の仮想マシン２１に係るパケットは、パケット監視部１１、バッファ部１２、ミラー部１３、セレクタ１４、パケット振分部１５、パケットチェック部１６、セレクタ１７の順で、パケット監視アクセラレータ１を通過する。
【００６９】
図８は、マイグレーション元タイムスタンプリストの一例である。マイグレーション元タイムスタンプリストは、マイグレーション元の仮想マシン２１からのパケットの受信タイムスタンプの記録を保持する。マイグレーション元タイムスタンプリストは、例えば、パケット監視アクセラレーション１が搭載されるＮＰＵに備えられるメモリに格納されている。
【００７０】
マイグレーション元タイムスタンプリストのエントリには、例えば、受信パケット識別子、受信タイムスタンプ上位、受信タイムスタンプ下位の項目が含まれる。「受信パケット識別子」の項目には、マイグレーション元の仮想マシン２１からの受信パケットのパケット識別子が格納される。例えば、パケット識別子は、ハッシュ計算によって求められる４ビットのハッシュ値である。ただし、ハッシュ値の長さは、４ビットに限定されない。パケット識別子をハッシュ値として求めることによって、マイグレーション元タイムスタンプリストの検索時間を短縮させることができる。また、パケット識別子が一致する場合には、パケットのデータが一致していることが担保される。
【００７１】
「受信タイムスタンプ上位」の項目には、受信タイムスタンプの小数点より前の値が格納される。「受信タイムスタンプ下位」の項目には、受信タイプスタンプの小数点以下の値が格納される。「受信タイムスタンプ上位」、「受信タイムスタンプ下位」の項目のいずれも、単位は、秒（ｓ）である。
【００７２】
ただし、マイグレーション元タイムスタンプリストのエントリの項目は、図７に示されるものに限定されず、実施の形態によって、適宜変更可能である。パケット識別子は、パケットの「識別情報」の一例である。
【００７３】
＜処理の流れ＞
図９は、パケット監視部１１の処理のフローチャートの一例である。パケット監視部１１は、パケットを受信すると、図９に示される処理を開始する。
【００７４】
ＯＰ１１では、パケット監視部１１は、クライアント端末４からのパケットを受信する。ＯＰ１２では、パケット監視部１１は、受信パケットの宛先の仮想マシン２１についてマイグレーションが実行中であるか否かを判定する。この判定は、例えば、他の機能構成と共有する、マイグレーション元の仮想マシン２１とマイグレーション先の仮想マシン２１との対応についての情報に基づいて行われる。
【００７５】
受信パケットの宛先の仮想マシン２１についてマイグレーションの実行中である場合には（ＯＰ１２：ＹＥＳ）、処理がＯＰ２０に進む。受信パケットの宛先の仮想マシン２１についてマイグレーションの実行中でない場合には（ＯＰ１２：ＮＯ）、処理がＯＰ１３に進む。
【００７６】
ＯＰ１３では、パケット監視部１１は、当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数増加閾値より大きいか否かを判定する。当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数増加閾値より大きい場合には（ＯＰ１３：ＹＥＳ）、処理がＯＰ１４に進む。当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数増加閾値以下である場合には（ＯＰ１３：ＮＯ）、処理がＯＰ１５に進む。
【００７７】
ＯＰ１４の処理は、当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数増加閾値より大きい場合の処理である。ＯＰ１４では、パケット監視部１１は、マイグレーション先となる新たに起動する仮想マシン２１のコア数を、マイグレーション元となる既存の仮想マシン２１のコア数より増加させた数に設定する。コア数の増加分は、予め固定値で設定されていてもよいし、単位時間当たりのパケット受信量に基づいて決定されてもよい。
【００７８】
ＯＰ１５〜ＯＰ１７の処理は、当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数増加閾値以下である場合の処理である。ＯＰ１５では、パケット監視部１１は、当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数減少閾値より大きいか否かを判定する。当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数減少閾値より大きい場合には（ＯＰ１５：ＹＥＳ）、処理がＯＰ１６に進む。当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数減少閾値以下である場合には（ＯＰ１５：ＮＯ）、処理がＯＰ１７に進む。
【００７９】
ＯＰ１６の処理は、当該仮想マシン２１宛ての単位時間当たりのパケット受信量がコア数増加閾値以下であり、且つ、コア数減少閾値より大きい場合の処理である。ＯＰ１６では、パケット監視部１１は、セレクタ１４にパケットを出力する。パケットは、セレクタ１４を通じて、宛先の仮想マシン２１に出力される。その後、図９に示される処理が終了する。
【００８０】
ＯＰ１７では、パケット監視部１１は、マイグレーション先となる新たに起動する仮想マシン２１のコア数を、マイグレーション元となる既存の仮想マシン２１のコア数より減少させた数に設定する。コア数の減少分は、予め固定値で設定されていてもよいし、単位
時間当たりのパケット受信量に基づいて決定されてもよい。
【００８１】
ＯＰ１８では、パケット監視部１１は、新たな仮想マシン２１を搭載する物理サーバ２に対して、起動指示を送信する。起動指示には、コア数の設定も含まれる。ＯＰ１９では、パケット監視部１１は、既存の仮想マシン２１を搭載する物理サーバ２に対して、マイグレーションの開始指示を送信する。
【００８２】
ＯＰ２０では、パケット監視部１１は、バッファ部１２にパケットを出力する。その後、図９に示される処理が終了する。
【００８３】
図１０は、バッファ部１２の処理のフローチャートの一例である。図１０に示される処理は、バッファ部１２にパケットが入力されると開始される。
【００８４】
ＯＰ３１では、バッファ部１２にパケットを受信する。ＯＰ３２では、バッファ部１２は、現在のバッファ量に受信パケットのサイズを加算した値が設定バッファ量未満であるか否かを判定する。現在のバッファ量に受信パケットのサイズを加算した値が設定バッファ量未満である場合には（ＯＰ３２：ＹＥＳ）、処理がＯＰ３３に進む。現在のバッファ量に受信パケットのサイズを加算した値が設定バッファ量より大きい場合には（ＯＰ３２：ＮＯ）、処理がＯＰ３４に進む。
【００８５】
ＯＰ３３の処理は、現在のバッファ量に受信パケットのサイズを加算した値が設定バッファ量未満である場合の処理である。ＯＰ３３では、バッファ部１２は、受信パケットをバッファリングする。
【００８６】
ＯＰ３４の処理は、現在のバッファ量に受信パケットのサイズを加算した値が設定バッファ量より大きい場合の処理である。ＯＰ３４では、バッファ部１２は、バッファリングされているパケットのうち、最も古いパケットをミラー部１３に出力する。
【００８７】
ＯＰ３５では、バッファ部１２には、バッファ量を、現在のバッファ量に受信パケットのサイズを加算した値に更新する。その後、図１０に示される処理が終了する。
【００８８】
図１１は、ミラー部１３の処理のフローチャートの一例である。図１１に示される処理は、ミラー部１３にパケットが入力されると開始される。
【００８９】
ＯＰ４１では、ミラー部１３は、パケットを受信する。ＯＰ４２では、ミラー部１３は、受信パケットのコピーを作成して、２つのパケットを取得する（パケットミラーリング）。ＯＰ４３では、ミラー部１３は、２つのパケットのうち１つのパケットにマイグレーション元の仮想マシン２１の識別ヘッダを付与し、もう一つのパケットにマイグレーション先の仮想マシン２１の識別ヘッダを付与する。ＯＰ４４では、ミラー部１３は、２つのパケットを、セレクタ１４に出力する。２つのパケットのうち１つのパケットはマイグレーション元の仮想マシン２１に出力される。もう一つのパケットは、マイグレーション先の仮想マシン２１に出力される。その後、図１１に示される処理が終了する。
【００９０】
図１２は、パケット振分部１５の処理のフローチャートの一例である。図１２に示される処理は、パケット振分部１５にパケットが入力されると開始される。
【００９１】
ＯＰ５１では、パケット振分部１５は、仮想マシン２１による処理結果としてのパケットを受信する。仮想マシン２１による処理結果としてのパケットには、仮想マシン２１によって、当該パケットに対応する入力パケットと同じ識別ヘッダが付与されている。
【００９２】
ＯＰ５２では、パケット振分部１５は、受信パケットの送信元の仮想マシン２１について、マイグレーションが実行中であるか否かを判定する。受信パケットの送信元の仮想マシン２１について、マイグレーションが実行中であるか否かは、例えば、他の機能構成要素と共有するマイグレーション元及びマイグレーション先の仮想マシンの対応付けに関する情報に基づいて判定される。または、例えば、図８のＯＰ１９において、パケット監視部１１がマイグレーション開始通知をパケット振分部１５にも通知するようにし、パケット振分部１５は、マイグレーション開始通知及びマイグレーション完了通知に基づいて判定してもよい。
【００９３】
受信パケットの送信元の仮想マシン２１について、マイグレーションが実行中である場合には（ＯＰ５２：ＹＥＳ）、処理がＯＰ５３に進む。受信パケットの送信元の仮想マシン２１について、マイグレーションが実行中でない場合には（ＯＰ５２：ＮＯ）、処理がＯＰ５４に進む。
【００９４】
ＯＰ５３の処理は、受信パケットの送信元の仮想マシン２１について、マイグレーションが実行中である場合の処理である。ＯＰ５３では、パケット振分部１５は、受信パケットをパケットチェック部１６に出力する。その後、図１２に示される処理が終了する。
【００９５】
ＯＰ５４の処理は、受信パケットの送信元の仮想マシン２１について、マイグレーションが実行中でない場合の処理である。ＯＰ５４では、パケット振分部１５は、セレクタ１７に受信パケットを出力する。受信パケットは、ネットワークへ出力される。その後、図１２に示される処理が終了する。
【００９６】
図１３Ａ、図１３Ｂ、及び、図１３Ｃは、パケットチェック部１６の処理のフローチャートの一例である。図１３Ａの処理は、パケットチェック部１６にパケットが入力されると開始される。
【００９７】
ＯＰ６１では、パケットチェック部１６は、パケットを受信する。ＯＰ６２では、パケットチェック部１６は、受信パケットから識別ヘッダを除去する。ＯＰ６３では、パケットチェック部１６は、受信パケットのタイムスタンプを取得する。ＯＰ６４では、パケットチェック部１６は、受信パケットからパケット識別子を算出する。次に、処理が図１３ＢのＯＰ７１に進む。
【００９８】
ＯＰ７１では、パケットチェック部１６は、受信パケットがマイグレーション元（移行元）の仮想マシン２１からのパケットであるか否かを判定する。受信パケットがマイグレーション元の仮想マシン２１からのパケットである場合には（ＯＰ７１：ＹＥＳ）、処理がＯＰ７２に進む。受信パケットがマイグレーション元の仮想マシン２１からのパケットである場合には（ＯＰ７１：ＮＯ）、処理がＯＰ７４に進む。
【００９９】
ＯＰ７２、ＯＰ７３は、受信パケットがマイグレーション元の仮想マシン２１からのパケットである場合の処理である。ＯＰ７２では、パケットチェック部１６は、受信パケットについて、マイグレーション元タイムスタンプリスト（移行元ＴＳリスト）にエントリを登録し、マイグレーション元タイムスタンプリストを更新する。
【０１００】
ＯＰ７３では、パケットチェック部１６は、受信パケットをセレクタ１７に出力する。パケットは、セレクタ１７からネットワークに出力される。その後、図１３Ｂに示される処理が終了する。
【０１０１】
ＯＰ７４以降の処理は、受信パケットがマイグレーション先の仮想マシン２１からのパケットである場合の処理である。ＯＰ７４では、パケットチェック部１６は、マイグレー
ション元タイムスタンプリストを、受信パケットのパケット識別子で検索する。
【０１０２】
ＯＰ７５では、パケットチェック部１６は、マイグレーション元タイムスタンプリストに受信パケットのパケット識別子と一致するエントリがあるか否かを判定する。マイグレーション元タイムスタンプリストに受信パケットのパケット識別子と一致するエントリがある場合には（ＯＰ７５：ＹＥＳ）、処理がＯＰ７６に進む。マイグレーション元タイムスタンプリストに受信パケットのパケット識別子と一致するエントリがない場合には（ＯＰ７５：ＮＯ）、処理が図１３ＣのＯＰ８１に進む。
【０１０３】
ＯＰ７６〜ＯＰ８０の処理は、マイグレーション元タイムスタンプリストに受信パケトのパケット識別子と一致するエントリがある場合の処理である。マイグレーション元タイムスタンプリストに受信パケットのパケット識別子と一致するエントリがあることは、マイグレーション元の仮想マシン２１からの受信パケットと同一のパケットがすでに受信されていることが示される。
【０１０４】
ＯＰ７６では、パケットチェック部１６は、マイグレーション元タイムスタンプリストの受信パケットのパケット識別子と一致するエントリの受信時刻のタイムスタンプと、受信パケットの受信時刻のタイムスタンプとの差分が許容範囲内であるか否かを判定する。受信時刻の差分が許容範囲内である場合には（ＯＰ７６：ＹＥＳ）、処理がＯＰ７９に進む。受信時刻の差分が許容範囲外である場合に（ＯＰ７６：ＮＯ）、処理がＯＰ７７に進む。
【０１０５】
ＯＰ７７、ＯＰ７８の処理は、受信時刻の差分が許容範囲外である場合の処理である。受信時刻の差分が許容範囲外であることによって、マイグレーション先の仮想マシン２１の起動処理が終了していないことが示される。
【０１０６】
ＯＰ７７では、パケットチェック部１６は、受信時刻の差分（ＴＳ差分）に応じて、バッファ部１２の設定バッファ量を設定する。受信時刻の差分が大きいほど、設定バッファ量が大きくなり、受信時刻の差分が小さいほど設定バッファ量が小さくなるように、設定バッファ量は設定される。第１実施形態では、バッファ部１２の設定バッファ量は、受信時刻の差分にバッファリング係数を乗じて算出される。ＯＰ７８では、パケットチェック部１６は、バッファ部１２に設定バッファ量を通知する。
【０１０７】
ＯＰ７９は、受信時刻の差分が許容範囲内である場合の処理である。受信時刻の差分が許容範囲内であることによって、マイグレーション先の仮想マシン２１の起動処理が完了したことを示される。
【０１０８】
ＯＰ７９では、パケットチェック部１６は、パケット監視部１１とパケット振分部１５とに、マイグレーション完了通知を出力する。
【０１０９】
ＯＰ８０では、パケットチェック部１６は、受信パケットを廃棄する。なお、ＯＰ８０において、受信パケットとは、マイグレーション先の仮想マシン２１からのパケットである。その後、図１３Ｂに示される処理が終了する。
【０１１０】
図１３ＣのＯＰ８１〜ＯＰ８４は、マイグレーション元タイムスタンプリストに受信パケトのパケット識別子と一致するエントリがない場合の処理である。マイグレーション元タイムスタンプリストに受信パケットのパケット識別子と一致するエントリがないことは、マイグレーション元の仮想マシン２１からの受信パケットと同一のパケットがまだ受信されていないことを示す。または、例えば、エラー等によって、マイグレーション元の仮想マシン２１からの受信パケットとマイグレーション先の仮想マシン２１からの受信パケ
ットとが一致しないことが示される。
【０１１１】
ＯＰ８１では、パケットチェック部１６は、マイグレーション元の仮想マシン２１からのパケットの到着を待機する。ＯＰ８２では、パケットチェック部１６は、ＯＰ６１で受信したパケットのパケット識別子と一致するパケット識別子を有するパケットを受信したか否かを判定する。
【０１１２】
ＯＰ６１で受信したパケットのパケット識別子と一致するパケット識別子を有するパケットを受信した場合には（ＯＰ８２：ＹＥＳ）、処理がＯＰ８３に進む。ＯＰ６１で受信したパケットのパケット識別子と一致するパケット識別子を有するパケットを受信していない場合には（ＯＰ８２：ＮＯ）、処理がＯＰ８４に進む。
【０１１３】
ＯＰ８３の処理は、ＯＰ６１で受信したパケットのパケット識別子と一致するパケット識別子を有するパケットを受信した場合の処理である。ＯＰ６１で受信したパケットのパケット識別子と一致するパケット識別子を有するパケットを受信することは、マイグレーション先の仮想マシン２１からのパケットを、マイグレーション元の仮想マシン２１からのパケットよりも先に受信したことを示す。マイグレーション元の仮想マシン２１からのパケットよりも先にマイグレーション先の仮想マシン２１からのパケットを受信することは、マイグレーション先の仮想マシン２１の起動処理が完了していることが示される。
【０１１４】
ＯＰ８３では、パケットチェック部１６は、マイグレーション完了通知をパケット監視部１１及びパケット振分部１５に通知する。
【０１１５】
ＯＰ８４では、パケットチェック部１６は、ＯＰ６１で受信したパケットを廃棄する。その後、図１３Ｃに示される処理が終了する。
【０１１６】
なお、図９から図１３Ｃのフローチャートはいずれも一例であり、処理の実行順等は、実施の形態によって適宜変更可能である。
【０１１７】
＜第１実施形態の作用効果＞
パケット監視アクセラレータ１は、マイグレーション先の仮想マシン２１とマイグレーション元の仮想マシン２１との双方から、同じパケットに対する同じ処理の結果としてのパケットを受信する。パケット監視アクセラレータ１は、マイグレーション先の仮想マシン２１とマイグレーション元の仮想マシン２１との双方からのパケットの受信時刻の差分が許容範囲外である間は、マイグレーション元の仮想マシン２１からのパケットを出力する。一方、パケット監視アクセラレータ１は、受信時刻の差分が許容範囲外である間は、マイグレーション元の仮想マシン２１からのパケットを出力せずに廃棄する。受信時刻の差分が許容範囲内となる場合に、パケット監視アクセラレータ１は、マイグレーション元の仮想マシン２１の動作停止指示を送信する。以降、パケット監視アクセラレータ１は、マイグレーション先の仮想マシン２１からのパケットを受信し、クライアント端末４に転送する。
【０１１８】
受信時刻の差分が許容範囲内になることによって、マイグレーション先の仮想マシン２１の起動処理が完了したことが示される。したがって、第１実施形態のパケット監視アクセラレータ１は、マイグレーション先の仮想マシン２１の起動処理が完了するまでは、マイグレーション元の仮想マシン２１から受信したパケットをクライアント端末４に出力する。マイグレーション先の仮想マシン２１の起動処理が完了すると、パケット監視アクセラレータ１は、マイグレーション先の仮想マシンから受信したパケットをクライアント端末４に出力する。これによって、マイグレーション先の仮想マシンの起動処理が完了してから、クライアント端末４に送信されるパケットが、マイグレーション元の仮想マシン２
１からのパケットからマイグレーション先の仮想マシンからのパケットに切り替わる。第１実施形態では、マイグレーションによるクライアント端末４と仮想マシン２１との通信の瞬断を抑制することができる。
【０１１９】
パケット監視アクセラレータ１のパケット監視部１１及びパケット振分部１５は、マイグレーション実行中の場合とマイグレーション実行中でない場合とで、パケットの出力先を切り替える。マイグレーション実行中でない場合には、パケット監視アクセラレータ１は、仮想マシン２１宛てのパケットを通過させるので、余計な処理を行わずに済む。また、パケット監視部１１及びパケット振分部１５のパケットの切替は、パケットチェック部１６からのマイグレーション完了通知を受けて行われる。そのため、マイグレーション先の仮想マシンの起動処理が完了してから、クライアント端末４に送信されるパケットが、マイグレーション元の仮想マシン２１からのパケットからマイグレーション先の仮想マシンからのパケットに切り替わることになる。第１実施形態では、マイグレーションによるクライアント端末４と仮想マシン２１との通信の瞬断を抑制することができる。
【０１２０】
パケットチェック部１６は、マイグレーション元の仮想マシン２１からのパケットよりも先にマイグレーション先の仮想マシン２１からのパケットが到着した場合には、マイグレーション完了通知をパケット監視部１１及びパケット振分部１５に通知する。例えば、マイグレーション元の仮想マシン２１よりもマイグレーション先の仮想マシン２１の方がコア数が多い場合には、同じ処理を行った場合、マイグレーション先の仮想マシン２１の方が処理に係る時間が短くなる。これによって、マイグレーション先の仮想マシン２１からのパケットが先に到着することがある。したがって、マイグレーション元の仮想マシン２１からのパケットよりも先にマイグレーション先の仮想マシン２１からのパケットが到着することによって、マイグレーション先の仮想マシン２１の起動処理が完了したことを判定することができる。
【０１２１】
パケットチェック部１６は、マイグレーション元の仮想マシン２１からの受信パケットについてパケット識別子を取得し、マイグレーション元タイムスタンプリストの検索キーとする。パケットチェック部１６は、マイグレーション先の仮想マシン２１からの受信パケットのパケット識別子を取得し、当該パケット識別子を検索キーとして、マイグレーション元タイムスタンプリストを検索する。マイグレーション先の仮想マシン２１からの受信パケットのパケット識別子に合致するエントリがマイグレーション元タイムスタンプリストに存在する場合は、マイグレーション元及びマイグレーション先の仮想マシン２１からのパケットが一致することが示される。これによって、マイグレーション先の仮想マシン２１が、正しく動作していることを担保することができる。また、マイグレーション元の仮想マシン２１とマイグレーション先の仮想マシン２１とが同じパケットに対して同じ処理を行っていることが担保され、マイグレーション先の仮想マシン２１の起動処理の完了をより適正に判定することができる。
【０１２２】
また、第１実施形態では、パケット識別子として、パケットから算出されるハッシュ値が用いられる。ハッシュ値のサイズは、例えば、４ビット等であり、パケットのサイズに比べて小さい。そのため、パケット識別子としてハッシュ値を用いることによって、マイグレーション元タイムスタンプリストの検索処理に係る処理負荷を軽減することができる。
【０１２３】
パケット監視アクセラレータ１は、クライアント端末４からの受信パケットをバッファ部１２にバッファリングしてから、ミラー部１２によって複製して、マイグレーション元及びマイグレーション先の仮想マシン２１に送信する。仮想マシン２１宛てのパケットをバッファリングすることによって、マイグレーション元及びマイグレーション先の仮想マシン２１それぞれにおいて、パケットに対する処理の開始時点を近づけることができる。
受信時刻の差分は、マイグレーション元及びマイグレーション先の仮想マシン２１それぞれにおけるパケットに対する処理に係る時間の差分を反映する。そのため、マイグレーション元及びマイグレーション先の仮想マシン２１それぞれにおいて、パケットに対する処理の開始時点が同期することによって、より正確にマイグレーション先の仮想マシン２１の起動処理の完了を判定することができる。
【０１２４】
また、パケットチェック部１６は、バッファ部１２の設定バッファ量を受信時刻の差分に基づいて決定する。バッファ部１２の設定バッファ量は、受信時刻の差分が大きいほど大きく設定される。受信時刻の差分が大きいことは、起動処理にマイグレーション先の仮想マシン２１のリソースが費やされパケットの処理が遅れていることが示される。受信時刻の差分が大きいほどバッファ部１２の設定バッファ量を大きく設定することによって、マイグレーション元及びマイグレーション先の仮想マシン２１へのパケットの入力が遅くなり、その分、マイグレーション先の仮想マシン２１は起動処理を行うことができる。これによって、マイグレーション先の仮想マシン２１の起動処理の完了を早めることができる。
【０１２５】
第１実施形態では、パケット監視部１１は、単位時間当たりのパケットの受信量に基づいて、マイグレーションの開始を判定する。これによって、マイグレーションの開始を、パケット監視アクセラレータ１が自律的に行うことができる。
【０１２６】
また、パケットチェック部１６は、単位時間当たりのパケットの受信量に基づいて、マイグレーション先の仮想マシン２１のコア数を決定する。これによって、より柔軟に通信状況に応じてマイグレーションを行うことができる。
【０１２７】
＜その他＞
第１実施形態では、仮想マシン２１間でマイグレーションを行う場合を例として説明されたが、物理マシン間でのマイグレーション、物理マシンと仮想マシン間のマイグレーションについても、第１実施形態の技術を適用することが可能である。
【０１２８】
また、第１実施形態では、受信時刻の比較対象として対応するパケットとして、マイグレーション元とマイグレーション先との仮想マシンによる同じ内容のパケットに対する同じ処理の実行結果としてのパケットが用いられる。受信時刻の比較対象として対応するパケットは、これに限定されない。例えば、マイグレーション元とマイグレーション先との仮想マシンは、異なる処理を行っていてもよい。この場合、マイグレーション元とマイグレーション先との仮想マシンのそれぞれの処理に掛かる時間の差分を考慮して、受信時刻の差分の許容範囲が設定されることによって、マイグレーション元及びマイグレーション先の仮想マシンからのパケットを比較することができる。また、例えば、受信時刻の比較対象として対応するパケットとして、マイグレーション元とマイグレーション先との仮想マシンとで、異なる内容のパケットに対して行われた処理の実行結果としてのパケットが用いられてもよい。すなわち、マイグレーション元とマイグレーション先とで処理の開始タイミングがほぼ同じである場合の処理の実行結果としてのパケットであれば、受信時刻の差分の許容範囲を適宜設定することによって、受信時刻の比較対象として対応するパケットとして用いることができる。
【０１２９】
＜記録媒体＞
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１３０】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる非一時的な記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスク、ＲＯＭ（リードオンリーメモリ）等がある。さらに、ＳＳＤ（Solid State Drive）は、コンピュータ等から取り外し可能な記録媒体としても、コ
ンピュータ等に固定された記録媒体としても利用可能である。
【符号の説明】
【０１３１】
１        パケット監視アクセラレータ
２、２Ｂ        物理サーバ
３        スイッチ
４        クライアント端末
１１      パケット監視部
１２      バッファ部
１３      ミラー部
１４、１７      セレクタ
１５      パケット振分部
１６      パケットチェック部
２０７、３０３      ＮＩＣ
【図１】
2018005664.tif 000004
【図２】
2018005664.tif 000005
【図３】
2018005664.tif 000006
【図４】
2018005664.tif 000007
【図５】
2018005664.tif 000008
【図６】
2018005664.tif 000009
【図７】
2018005664.tif 000010
【図８】
2018005664.tif 000011
【図９】
2018005664.tif 000012
【図１０】
2018005664.tif 000013
【図１１】
2018005664.tif 000014
【図１２】
2018005664.tif 000015
【図１３Ａ】
2018005664.tif 000016
【図１３Ｂ】
2018005664.tif 000017
【図１３Ｃ】
2018005664.tif 000018