(57)【要約】【課題】ミラーパケットが失われる確率を低減すること。【解決手段】ミラーパケット制御装置１００は、モニタＶＭ１０２の識別情報と、モニタＶＭ１０２にミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を有する。第１サーバ１１０は、モニタＶＭ１０２の識別情報と、自装置からモニタＶＭ１０２に通じるポートの識別情報とを対応付けて表す第２対応情報を有する。モニタＶＭ１０２が、第２サーバ１２０からミラーパケット制御装置１００へ移動される。ミラーパケット制御装置１００は、他装置から自装置へのモニタＶＭ１０２の移動完了の通知を検出したことに応じて、第１対応情報を参照し、自装置へ移動完了したモニタＶＭ１０２にミラーパケットを送信する送信元を特定する。ミラーパケット制御装置１００は、特定した送信元が有する第２対応情報を削除させる削除指示を、特定した送信元に送信する。【選択図】図１
2019075691.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信する、
処理を実行させることを特徴とするミラーパケット制御プログラム。
【請求項２】
前記コンピュータに、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す第３対応情報の削除指示を受け付けたことに応じて、前記第３対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記第３対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記第３対応情報を更新する、
処理を実行させることを特徴とする請求項１に記載のミラーパケット制御プログラム。
【請求項３】
前記コンピュータに、
自装置の仮想スイッチに接続された第１仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第２仮想マシンの停止状態を検出し、
前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第１仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
処理を実行させることを特徴とする請求項２に記載のミラーパケット制御プログラム。
【請求項４】
前記削除指示は、自装置に移動完了した前記仮想マシンの識別情報を含み、前記第２対応情報のうち、前記送信元から自装置に移動完了した前記仮想マシンへのポートの識別情報についての削除指示である、ことを特徴とする請求項１〜３のいずれか一つに記載のミラーパケット制御プログラム。
【請求項５】
コンピュータが、
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信する、
処理を実行することを特徴とするミラーパケット制御方法。
【請求項６】
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信する、
制御部を有することを特徴とするミラーパケット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置に関する。
【背景技術】
【０００２】
従来、仮想スイッチが有する特定のポートを通じてターゲットＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）にパケットが送受信される際、ターゲットＶＭに送受信されるパケットを複製したミラーパケットを生成して、別のポートを通じてモニタＶＭに転送するポートミラーリングの技術がある。
【０００３】
先行技術としては、例えば、主回線側のリンクアップを検知した際、冗長回線側のポートが瞬時にリンクダウン動作し、さらにリンクアップと同時に、同一ネットワーク全体へＧＡＲＰ（Ｇｒａｔｕｉｔｏｕｓ  Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）パケットを送信するものがある。また、例えば、複数の仮想マシン間を流れるパケットからミラーリングされたパケットを収集し、トラフィック・経路情報を分析した結果、物理サーバと仮想マシンとの対応関係に変更があったことを認識した場合、監視装置へ構成情報の取得を指示する技術がある。また、例えば、単一ネットワークまたは複数ネットワーク上に存在するネットワークトラフィックをキャプチャする技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３１０９０３号公報
【特許文献２】特開２０１２−４７８１号公報
【特許文献３】特表２００８−５２６１０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、サーバ間でモニタＶＭが移動された場合に、モニタＶＭがミラーパケットを受信することができず、ミラーパケットが失われてしまうことがある。例えば、モニタＶＭの移動後に、仮想スイッチが移動前のモニタＶＭに通じるポートに対してミラーパケットを送信してしまい、ミラーパケットがモニタＶＭに受信されずに失われることがある。
【０００６】
１つの側面では、本発明は、ミラーパケットが失われる確率を低減することができるミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信するミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置が提案される。
【発明の効果】
【０００８】
一態様によれば、ミラーパケットが失われる確率を低減することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるミラーパケット制御方法の一実施例を示す説明図である。
【図２】図２は、ポートミラーリングシステム２００の一例を示す説明図である。
【図３】図３は、ミラーパケット制御装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、トンネルポート管理テーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、ミラーパケット用経路管理テーブル５００の記憶内容の一例を示す説明図である。
【図６】図６は、ミラーポート管理テーブル６００の記憶内容の一例を示す説明図である。
【図７】図７は、モニタ管理テーブル７００の記憶内容の一例を示す説明図である。
【図８】図８は、ミラーパケット制御装置１００の機能的構成例を示すブロック図である。
【図９】図９は、ポートミラーリングシステム２００のモジュール構成例を示す説明図である。
【図１０】図１０は、ポートミラーリングシステム２００の動作例１を示す説明図（その１）である。
【図１１】図１１は、ポートミラーリングシステム２００の動作例１を示す説明図（その２）である。
【図１２】図１２は、ポートミラーリングシステム２００の動作例１を示す説明図（その３）である。
【図１３】図１３は、ポートミラーリングシステム２００の動作例１を示す説明図（その４）である。
【図１４】図１４は、動作例１におけるミラーパケット用経路学習処理手順の一例を示すフローチャート（その１）である。
【図１５】図１５は、動作例１におけるミラーパケット用経路学習処理手順の一例を示すフローチャート（その２）である。
【図１６】図１６は、動作例１におけるモニタ管理テーブル作成処理手順の一例を示すフローチャートである。
【図１７】図１７は、動作例１におけるライブマイグレーション完了検出処理手順の一例を示すフローチャートである。
【図１８】図１８は、動作例１における再学習通知パケット送信処理手順の一例を示すフローチャートである。
【図１９】図１９は、動作例１におけるミラーパケット用経路管理テーブル削除処理手順の一例を示すフローチャートである。
【図２０】図２０は、ポートミラーリングシステム２００の動作例２を示す説明図（その１）である。
【図２１】図２１は、ポートミラーリングシステム２００の動作例２を示す説明図（その２）である。
【図２２】図２２は、動作例２における再学習通知パケット送信処理手順の一例を示すフローチャートである。
【図２３】図２３は、動作例２におけるミラーパケット用経路管理テーブル削除処理手順の一例を示すフローチャートである。
【図２４】図２４は、ＶＭ状態管理テーブル２４００の記憶内容の一例を示す説明図である。
【図２５】図２５は、リングバッファ管理テーブル２５００の記憶内容の一例を示す説明図である。
【図２６】図２６は、ミラーパケットバッファ２６００の記憶内容の一例を示す説明図である。
【図２７】図２７は、ポートミラーリングシステム２００の動作例３を示す説明図（その１）である。
【図２８】図２８は、ポートミラーリングシステム２００の動作例３を示す説明図（その２）である。
【図２９】図２９は、ポートミラーリングシステム２００の動作例３を示す説明図（その３）である。
【図３０】図３０は、ポートミラーリングシステム２００の動作例３を示す説明図（その４）である。
【図３１】図３１は、ポートミラーリングシステム２００の動作例３を示す説明図（その５）である。
【図３２】図３２は、動作例３における全体処理手順の一例を示すフローチャートである。
【図３３】図３３は、動作例３における状態管理処理手順の一例を示すフローチャートである。
【図３４】図３４は、動作例３における割り込み設定処理手順の一例を示すフローチャートである。
【図３５】図３５は、動作例３における割り込み解除処理手順の一例を示すフローチャートである。
【図３６】図３６は、動作例３における割り込み処理手順の一例を示すフローチャートである。
【図３７】図３７は、動作例３におけるパケット処理手順の一例を示すフローチャートである。
【図３８】図３８は、動作例３におけるミラーリング処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかるミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置の実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかるミラーパケット制御方法の一実施例）
図１は、実施の形態にかかるミラーパケット制御方法の一実施例を示す説明図である。図１において、ミラーパケット制御装置１００は、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を動作させるコンピュータである。
【００１２】
ミラーパケット制御装置１００で動作するＶＭは、例えば、ポートミラーリングにより、第１ＶＭからミラーパケットを送信される第２ＶＭである。以下の説明では、第１ＶＭを「ターゲットＶＭ」と表記する場合がある。また、以下の説明では、第２ＶＭを「モニタＶＭ」と表記する場合がある。
【００１３】
ここで、ポートミラーリングは、例えば、ターゲットＶＭを動作させるコンピュータが有する仮想スイッチにより実現される。例えば、仮想スイッチは、仮想スイッチからターゲットＶＭへのポートを通じて送受信されるパケットを複製したミラーパケットを、仮想スイッチからモニタＶＭへのポートを通じて転送する。
【００１４】
しかしながら、モニタＶＭがライブマイグレーションを行った場合、モニタＶＭがミラーパケットを受信することができなくなることがある。ライブマイグレーションは、ＶＭをコンピュータ間で移動させるマイグレーションの１種である。ライブマイグレーションは、ＶＭを移動する際、ＶＭが停止する時間の低減化を図る。
【００１５】
例えば、モニタＶＭがライブマイグレーションを行った場合、仮想スイッチは、モニタＶＭが移動したことを検出することができない。このため、仮想スイッチは、モニタＶＭが移動した後も、移動前のモニタＶＭに通じるポートからミラーパケットを送信してしまい、ミラーパケットは、モニタＶＭが受信することができずに失われてしまう。また、モニタＶＭは、ミラーパケットが生成されたことを検出することができず、ミラーパケットについて再送要求することも困難である。
【００１６】
これに対し、仮想スイッチが、一定時間ごとに、モニタＶＭを動作させているコンピュータを調査し、ミラーパケットを送信するポートを更新する場合が考えられる。例えば、仮想スイッチが、一定時間ごとに、モニタＶＭへのミラーパケットをすべてのポートから送信し、ミラーパケットに対する応答を受信したポートを、モニタＶＭに通じるポートとして記憶する。
【００１７】
しかしながら、この場合であっても、モニタＶＭがミラーパケットを受信することができなくなることがある。例えば、モニタＶＭが移動してから、モニタＶＭを動作させているコンピュータを調査するまでの期間では、仮想スイッチは、移動前のモニタＶＭに通じるポートからミラーパケットを送信してしまう。また、モニタＶＭが移動しなくても、仮想スイッチが、一定時間ごとに、モニタＶＭを動作させているコンピュータを調査するため、処理負荷の増大化を招いてしまう。
【００１８】
このほか、仮想スイッチが、モニタＶＭがライブマイグレーションを行ったことに応じて、仮想基盤からＬ２ネットワークに流されるＧＡＲＰパケットを検出した場合に、モニタＶＭが移動したことを検出するようにすることが考えられる。
【００１９】
しかしながら、ＧＡＲＰパケットは、仮想スイッチに、モニタＶＭを動作させているコンピュータを調査させるためのパケットではない。そして、モニタＶＭとターゲットＶＭとが同じＬ２ネットワークに属していなければ、仮想スイッチは、ＧＡＲＰパケットを検出することができない。このため、仮想スイッチは、モニタＶＭが移動した後も、移動前のモニタＶＭに通じるポートからミラーパケットを送信してしまうことがある。
【００２０】
そこで、本実施の形態では、自装置に移動してきたモニタＶＭにミラーパケットを送信する送信元を特定し、特定した送信元に登録されたモニタＶＭに通じるポートの情報を削除させるミラーパケット制御方法について説明する。これによれば、本実施の形態は、モニタＶＭにミラーパケットを送信する送信元が、モニタＶＭに通じるポートの情報を更新するように仕向けて、ミラーパケットが失われることを防止することができる。
【００２１】
図１（ａ）の例では、ミラーパケット制御装置１００と第１サーバ１１０と第２サーバ１２０とは、通信可能に接続されている。ミラーパケット制御装置１００は、モニタＶＭ１０２の識別情報と、モニタＶＭ１０２にミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を有する。第１対応情報は、例えば、図７に後述するモニタ管理テーブル７００である。ミラーパケット制御装置１００において、ホストＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）ｎが実行されている。ホストＯＳｎは、仮想スイッチを有する。仮想スイッチは、例えば、ＯＶＳ（Ｏｐｅｎ  ｖＳｗｉｔｃｈ）ｎである。仮想スイッチは、ＯＶＳでなくてもよい。
【００２２】
また、第１サーバ１１０は、モニタＶＭ１０２の識別情報と、自装置からモニタＶＭ１０２に通じるポートの識別情報とを対応付けて表す第２対応情報を有する。第２対応情報は、例えば、図５に後述するミラーパケット用経路管理テーブル５００である。第１サーバ１１０において、ホストＯＳ１が実行されている。ホストＯＳ１において、ターゲットＶＭ１０１が実行されている。ホストＯＳ１は、ＯＶＳ１を有する。ＯＶＳ１は、ターゲットＶＭ１０１に対するパケットの送受信を制御する。
【００２３】
ＯＶＳ１は、例えば、ターゲットＶＭ１０１に対して送受信されるパケットを複製したミラーパケットを、すべてのポートに対して出力する。そして、ＯＶＳ１は、ミラーパケットに対する応答に基づいて、モニタＶＭ１０２に通じるポートを特定し、第２対応情報を生成する。その後、ＯＶＳ１は、生成した第２対応情報を参照し、ターゲットＶＭ１０１に対して送受信されるパケットを複製したミラーパケットを、モニタＶＭ１０２に通じるポートに出力する。
【００２４】
また、第２サーバ１２０は、ホストＯＳ２を実行する。ホストＯＳ２において、モニタＶＭ１０２が実行されている。ホストＯＳ２は、ＯＶＳ２を有する。ＯＶＳ２は、モニタＶＭ１０２に対するパケットの送受信を制御する。次に、図１（ｂ）の説明に移行し、モニタＶＭ１０２がライブマイグレーションにより第２サーバ１２０から移動された場合について説明する。
【００２５】
図１（ｂ）の例では、モニタＶＭ１０２が、ライブマイグレーションにより、第２サーバ１２０からミラーパケット制御装置１００へ移動される。ここで、モニタＶＭ１０２が移動した後、第２対応情報が更新されなければ、ＯＶＳ１は、ターゲットＶＭ１０１に対して送受信されるパケットを複製したミラーパケットを、第２サーバ１２０に通じるポートに出力してしまう可能性がある。このため、ミラーパケットは、モニタＶＭ１０２に受信されずに失われてしまう。
【００２６】
そこで、ミラーパケット制御装置１００において、ＯＶＳｎは、他装置から自装置へのモニタＶＭ１０２の移動完了の通知を検出したことに応じて、第１対応情報を参照し、自装置へ移動完了したモニタＶＭ１０２にミラーパケットを送信する送信元を特定する。ＯＶＳｎは、例えば、モニタＶＭ１０２にミラーパケットを送信する送信元として第１サーバ１１０を特定する。
【００２７】
そして、ＯＶＳｎは、特定した送信元が有する第２対応情報を削除させる削除指示を、特定した送信元に送信する。ＯＶＳｎは、第２対応情報の削除指示を、特定した第１サーバ１１０に送信する。これにより、ＯＶＳｎは、モニタＶＭ１０２の移動前後で、ミラーパケットを出力するポートが変化した可能性があり、ミラーパケットが失われる原因になりうる第２対応情報を削除させることができる。
【００２８】
一方で、第１サーバ１１０において、ＯＶＳ１は、第２対応情報の削除指示を受け付けたことに応じて、第２対応情報を削除する。次に、ＯＶＳ１は、第２対応情報の削除後、モニタＶＭ１０２にミラーパケットを送信する際、すべてのポートに対してミラーパケットを出力する。そして、ＯＶＳ１は、ミラーパケットに対する応答に基づいて、モニタＶＭ１０２に通じるポートを特定し、第２対応情報を生成し直す。
【００２９】
これにより、ミラーパケット制御装置１００は、第１サーバ１１０が第２対応情報を生成し直すように仕向けることができる。このため、ミラーパケット制御装置１００は、第１サーバ１１０のＯＶＳ１が、移動前のモニタＶＭ１０２に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
【００３０】
ここでは、ミラーパケット制御装置１００が、ミラーパケットを受信する場合について説明したが、これに限らない。例えば、ミラーパケット制御装置１００が、ミラーパケットを送信する場合があってもよい。具体的には、ミラーパケット制御装置１００が、第１サーバ１１０としても動作可能である場合があってもよい。
【００３１】
この場合、さらに、ミラーパケット制御装置１００が、ミラーパケットを送信する際に、ミラーパケットを一旦退避させることが可能である場合があってもよい。ミラーパケットを一旦退避させることが可能である場合については、図２７〜図３１を用いて動作例３に後述する。
【００３２】
モニタＶＭ１０２が、ターゲットＶＭ１０１になる場合があってもよい。例えば、ターゲットＶＭ１０１に送受信されるパケットを複製したミラーパケットを受信するモニタＶＭ１０２が、他のモニタＶＭ１０２に対応するターゲットＶＭ１０１となる場合があってもよい。
【００３３】
（ポートミラーリングシステム２００の一例）
次に、図２を用いて、図１に示したミラーパケット制御装置１００を適用した、ポートミラーリングシステム２００の一例について説明する。
【００３４】
図２は、ポートミラーリングシステム２００の一例を示す説明図である。図２において、ポートミラーリングシステム２００は、複数のミラーパケット制御装置１００と、管理装置２０１とを含む。
【００３５】
ポートミラーリングシステム２００において、それぞれのミラーパケット制御装置１００と、管理装置２０１とは、有線または無線のネットワークを介して接続される。ネットワークは、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。それぞれのミラーパケット制御装置１００は、フルメッシュのオーバーレイネットワークを形成する。
【００３６】
ミラーパケット制御装置１００は、図１に示したように、自装置に移動してきたモニタＶＭ１０２にミラーパケットを送信する送信元を特定し、特定した送信元に登録されたモニタＶＭ１０２に通じるポートの情報を削除させるコンピュータである。また、ミラーパケット制御装置１００は、ターゲットＶＭ１０１を実行し、ポートミラーリングを実現し、図１に示した第１サーバ１１０として動作可能であってもよい。また、ミラーパケット制御装置１００は、移動前のモニタＶＭ１０２を実行し、図１に示した第２サーバ１２０として動作可能であってもよい。
【００３７】
それぞれのミラーパケット制御装置１００が有する仮想スイッチは、例えば、ＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を介して接続される。以下の説明では、それぞれのミラーパケット制御装置１００を区別する場合には「ミラーパケット制御装置１００−ｉ」と表記する場合がある。ｉは、１〜ｎの整数である。ｎは、ミラーパケット制御装置１００の数である。ミラーパケット制御装置１００は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。
【００３８】
管理装置２０１は、図９に後述する仮想マネージャ９１３やポートミラーマネージャ９１５を実行するコンピュータである。ポートミラーマネージャ９１５は、ターゲットＶＭ１０１について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタＶＭ１０２に送信するかを設定し、ポートミラーリングを管理する。管理装置２０１は、例えば、サーバやＰＣである。ここでは、管理装置２０１が、ミラーパケット制御装置１００とは異なる装置である場合について説明したが、これに限らない。例えば、管理装置２０１は、いずれかのミラーパケット制御装置１００と一体であってもよい。
【００３９】
（ミラーパケット制御装置１００のハードウェア構成例）
次に、図３を用いて、ミラーパケット制御装置１００のハードウェア構成例について説明する。
【００４０】
図３は、ミラーパケット制御装置１００のハードウェア構成例を示すブロック図である。図３において、ミラーパケット制御装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００４１】
ここで、ＣＰＵ３０１は、ミラーパケット制御装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００４２】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク３１０に接続され、ネットワーク３１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク３１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００４３】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御に従って記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、ミラーパケット制御装置１００から着脱可能であってもよい。
【００４４】
ミラーパケット制御装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、ミラーパケット制御装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を複数有していてもよい。また、ミラーパケット制御装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００４５】
（管理装置２０１のハードウェア構成例）
ここで、管理装置２０１のハードウェア構成例については、図３に示したミラーパケット制御装置１００のハードウェア構成例と同様であるため、説明を省略する。次に、ミラーパケット制御装置１００や管理装置２０１が記憶する各種テーブルの記憶内容について説明する。
【００４６】
（トンネルポート管理テーブル４００の記憶内容）
次に、図４を用いて、トンネルポート管理テーブル４００の記憶内容の一例について説明する。トンネルポート管理テーブル４００は、例えば、図３に示したミラーパケット制御装置１００のメモリ３０２や記録媒体３０５の記憶領域により実現される。
【００４７】
図４は、トンネルポート管理テーブル４００の記憶内容の一例を示す説明図である。図４に示すように、トンネルポート管理テーブル４００は、トンネルポートと、プロトコルと、ローカルＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）と、リモートＩＰとのフィールドを有する。トンネルポート管理テーブル４００は、トンネルポートごとに各フィールドに情報を設定することにより、トンネルポート管理情報がレコードとして記憶される。
【００４８】
トンネルポートのフィールドには、トンネルポートを識別するＩＤが設定される。プロトコルのフィールドには、トンネルポートに対してパケットを出力する際に用いられるプロトコルを識別する名前が設定される。ローカルＩＰのフィールドには、トンネルポートに割り振られたローカルＩＰアドレスが設定される。リモートＩＰのフィールドには、トンネルポートに割り振られたリモートＩＰアドレスが設定される。
【００４９】
トンネルポート管理テーブル４００は、ミラーパケット制御装置１００によって生成される。ミラーパケット制御装置１００は、トンネルポート管理テーブル４００を用いることにより、トンネルポートに対してパケットを出力する際に、いずれのプロトコルを用いるかを特定可能にすることができる。
【００５０】
（ミラーパケット用経路管理テーブル５００の記憶内容）
次に、図５を用いて、ミラーパケット用経路管理テーブル５００の記憶内容の一例について説明する。ミラーパケット用経路管理テーブル５００は、例えば、図３に示したミラーパケット制御装置１００のメモリ３０２や記録媒体３０５の記憶領域により実現される。
【００５１】
図５は、ミラーパケット用経路管理テーブル５００の記憶内容の一例を示す説明図である。図５に示すように、ミラーパケット用経路管理テーブル５００は、モニタＩＤと、宛先ポートとのフィールドを有する。ミラーパケット用経路管理テーブル５００は、モニタＶＭ１０２ごとに各フィールドに情報を設定することにより、ミラーパケット用経路管理情報がレコードとして記憶される。
【００５２】
モニタＩＤのフィールドには、モニタＶＭ１０２を識別するＩＤが設定される。モニタＶＭ１０２を識別するＩＤは、例えば、モニタＶＭ１０２のポートを識別するＩＤである。宛先ポートのフィールドには、ミラーパケットを送信する仮想スイッチにおいてモニタＶＭ１０２に通じる宛先ポートになるポートを識別するＩＤが設定される。
【００５３】
ミラーパケット用経路管理テーブル５００は、ミラーパケット制御装置１００によって生成され更新される。ミラーパケット制御装置１００は、ミラーパケット用経路管理テーブル５００を用いることにより、ミラーパケットを生成した際、いずれのポートがモニタＶＭ１０２に通じているかを特定することができる。このため、ミラーパケット制御装置１００は、モニタＶＭ１０２に通じるポートにミラーパケットを出力することができる。
【００５４】
（ミラーポート管理テーブル６００の記憶内容）
次に、図６を用いて、ミラーポート管理テーブル６００の記憶内容の一例について説明する。ミラーポート管理テーブル６００は、例えば、管理装置２０１の記憶領域により実現される。
【００５５】
図６は、ミラーポート管理テーブル６００の記憶内容の一例を示す説明図である。図６に示すように、ミラーポート管理テーブル６００は、ＩＤと、名前と、ミラーポートＩＤと、ポートミラー方向と、モニタＩＤとのフィールドを有する。ミラーポート管理テーブル６００は、ポートミラーリングによって複製されるパケットが流れるミラーポートごとに各フィールドに情報を設定することにより、ミラーポート管理情報がレコードとして記憶される。
【００５６】
ＩＤのフィールドには、レコードに割り振られたＩＤが設定される。名前のフィールドには、ポートミラーリングによって複製されるパケットが流れるミラーポートになるポートの名前が設定される。ミラーポートＩＤのフィールドには、ミラーポートを識別するＩＤが設定される。ポートミラー方向のフィールドには、ミラーポートをいずれの方向に流れるパケットを複製するかが設定される。モニタＩＤのフィールドには、ミラーパケットを受信するモニタＶＭ１０２を識別するＩＤが設定される。
【００５７】
ミラーポート管理テーブル６００は、管理装置２０１によって生成され更新される。管理装置２０１は、ミラーポート管理テーブル６００を用いることにより、いずれのポートを流れるパケットを複製してミラーパケットを生成するかを特定し、いずれのモニタＶＭ１０２にミラーパケットを送信するかを特定することができる。
【００５８】
（モニタ管理テーブル７００の記憶内容）
次に、図７を用いて、モニタ管理テーブル７００の記憶内容の一例について説明する。モニタ管理テーブル７００は、例えば、図３に示したミラーパケット制御装置１００のメモリ３０２や記録媒体３０５の記憶領域により実現される。
【００５９】
図７は、モニタ管理テーブル７００の記憶内容の一例を示す説明図である。図７に示すように、モニタ管理テーブル７００は、ＩＤと、名前と、ミラーポートＩＤと、ホストＩＤと、モニタＩＤとのフィールドを有する。モニタ管理テーブル７００は、ポートミラーリングによって複製されるパケットが流れるミラーポートごとに各フィールドに情報を設定することにより、モニタ管理情報がレコードとして記憶される。
【００６０】
ＩＤのフィールドには、レコードに割り振られたＩＤが設定される。名前のフィールドには、ポートミラーリングによって複製されるパケットが流れるミラーポートになるポートの名前が設定される。ミラーポートＩＤのフィールドには、ミラーポートを識別するＩＤが設定される。ホストＩＤのフィールドには、ミラーポートを有する演算装置を識別するＩＤが設定される。演算装置は、例えば、ミラーパケット制御装置１００である。演算装置を識別するＩＤは、例えば、演算装置のホストＯＳを識別するＩＤである。モニタＩＤのフィールドには、ミラーパケットを受信するモニタＶＭ１０２を識別するＩＤが設定される。
【００６１】
モニタ管理テーブル７００は、ミラーパケット制御装置１００によって生成され更新される。ミラーパケット制御装置１００は、モニタ管理テーブル７００を用いることにより、モニタＶＭ１０２にミラーパケットを送信する送信元になる他のミラーパケット制御装置１００を特定することができる。このため、ミラーパケット制御装置１００は、ミラーパケット用経路管理テーブル５００を更新することが好ましい他のミラーパケット制御装置１００を特定することができる。
【００６２】
（ミラーパケット制御装置１００の機能的構成例）
次に、図８を用いて、ミラーパケット制御装置１００の機能的構成例について説明する。
【００６３】
図８は、ミラーパケット制御装置１００の機能的構成例を示すブロック図である。ミラーパケット制御装置１００は、記憶部８００を含む。ミラーパケット制御装置１００は、取得部８０１と、第１検出部８０２と、特定部８０３と、第１送信部８０４とを含む。
【００６４】
ミラーパケット制御装置１００は、更新部８０５と、第２送信部８０６とを含む。ミラーパケット制御装置１００は、第２検出部８０７と、退避部８０８と、登録部８０９とを含む。ミラーパケット制御装置１００は、出力部８１０を含む。
【００６５】
記憶部８００は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。以下では、記憶部８００が、ミラーパケット制御装置１００に含まれる場合について説明するが、これに限らない。例えば、記憶部８００が、ミラーパケット制御装置１００とは異なる装置に含まれ、記憶部８００の記憶内容がミラーパケット制御装置１００から参照可能である場合があってもよい。
【００６６】
取得部８０１〜出力部８１０は、制御部となる機能である。取得部８０１〜出力部８１０は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００６７】
ミラーパケット制御装置１００は、例えば、他装置からミラーパケットを送信されるＶＭが自装置に移動してきた場合、取得部８０１と、第１検出部８０２と、特定部８０３と、第１送信部８０４とによって動作する。以下では、他装置からミラーパケットを送信されるＶＭが自装置に移動してきた場合における、取得部８０１と、第１検出部８０２と、特定部８０３と、第１送信部８０４との動作について説明する。
【００６８】
記憶部８００は、各機能部の処理に用いられる各種情報を記憶する。記憶部８００は、例えば、第１対応情報を記憶する。第１対応情報は、ＶＭの識別情報と、当該ＶＭにミラーパケットを送信する送信元の識別情報とを対応付けて表す対応情報である。ＶＭは、モニタＶＭ１０２である。送信元は、ミラーポートを有する演算装置である。演算装置は、例えば、ミラーパケット制御装置１００である。第１対応情報は、例えば、モニタＶＭ１０２の識別情報と、モニタＶＭ１０２にミラーパケットを送信する送信元になる演算装置の識別情報とを対応付けて表す。第１対応情報は、例えば、図７に示したモニタ管理テーブル７００である。
【００６９】
記憶部８００は、具体的には、他装置からミラーパケットを送信されるモニタＶＭ１０２が自装置に移動してきた場合のために、特定部８０３によって用いられる図７に示したモニタ管理テーブル７００を記憶する。これにより、記憶部８００は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
【００７０】
第１検出部８０２は、他装置から自装置へのモニタＶＭ１０２の移動完了の通知を検出する。通知は、例えば、ＧＡＲＰ（Ｇｒａｔｕｉｔｏｕｓ  Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）パケットである。第１検出部８０２は、例えば、仮想基盤からＧＡＲＰパケットを受信する。
【００７１】
これにより、第１検出部８０２は、他装置から自装置にモニタＶＭ１０２が移動してきたことを検出することができる。そして、第１検出部８０２は、自装置に移動してきたモニタＶＭ１０２にミラーパケットを送信する送信元が、モニタＶＭ１０２に通じるポートを正しく特定することができない状態である可能性があることを検出することができる。第１検出部８０２の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述するライブマイグレーション完了検出部などによって実現される。
【００７２】
特定部８０３は、第１検出部８０２が他装置から自装置へのモニタＶＭ１０２の移動完了の通知を検出したことに応じて、第１対応情報を参照し、自装置へ移動完了したモニタＶＭ１０２にミラーパケットを送信する送信元を特定する。特定部８０３は、図７に示したモニタ管理テーブル７００を参照し、自装置に移動してきたモニタＶＭ１０２のポートを識別するモニタＩＤに対応付けられたホストＩＤを特定する。
【００７３】
これにより、特定部８０３は、自装置に移動してきたモニタＶＭ１０２にミラーパケットを送信する、モニタＶＭ１０２に通じるポートを正しく特定することができない状態である可能性がある送信元を特定することができる。特定部８０３の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述する再学習通知パケット送信部などによって実現される。
【００７４】
第１送信部８０４は、特定部８０３が特定した送信元が有する第２対応情報の削除指示を、特定部８０３が特定した送信元に送信する。第２対応情報は、送信元からミラーパケットを送信されるモニタＶＭ１０２の識別情報と、送信元からモニタＶＭ１０２へのポートの識別情報とを対応付けて表す対応情報である。第２対応情報は、例えば、モニタＶＭ１０２の識別情報と、自装置からモニタＶＭ１０２に通じるポートの識別情報とを対応付けて表す。第２対応情報は、例えば、図５に示したミラーパケット用経路管理テーブル５００である。削除指示は、第２対応情報を削除させる指示である。第１送信部８０４は、削除指示を、特定部８０３が特定したホストＩＤが示す他のミラーパケット制御装置１００に送信する。
【００７５】
これにより、第１送信部８０４は、モニタＶＭ１０２に通じるポートを正しく特定することができない状態である可能性がある送信元に、第２対応情報を削除させ、第２対応情報を生成し直すように仕向けることができる。このため、第１送信部８０４は、送信元において、移動前のモニタＶＭ１０２に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
【００７６】
削除指示は、自装置に移動完了したモニタＶＭ１０２の識別情報を含み、第２対応情報のうち、送信元から自装置に移動完了したモニタＶＭ１０２へのポートの識別情報について削除させる指示であってもよい。これにより、第１送信部８０４は、送信元において第２対応情報を更新する際にかかる処理量の低減化を図ることができる。第１送信部８０４の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述する再学習通知パケット送信部などによって実現される。
【００７７】
また、ミラーパケット制御装置１００は、自装置からミラーパケットを送信する場合、取得部８０１と、更新部８０５と、第２送信部８０６とによって動作する。以下では、自装置からミラーパケットを送信する場合における、取得部８０１と、更新部８０５と、第２送信部８０６との動作について説明する。
【００７８】
記憶部８００は、各機能部の処理に用いられる各種情報を記憶する。記憶部８００は、例えば、第２対応情報を記憶する。記憶部８００は、具体的には、自装置からミラーパケットを送信する場合のために、更新部８０５によって更新され、第２送信部８０６によって用いられる、図５に示したミラーパケット用経路管理テーブル５００を記憶する。また、記憶部８００は、具体的には、図４に示したトンネルポート管理テーブル４００を記憶してもよい。これにより、記憶部８００は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
【００７９】
取得部８０１は、自装置が有する第２対応情報の削除指示を受け付ける。取得部８０１は、例えば、他のミラーパケット制御装置１００の第１送信部８０４から送信された削除指示を受信する。これにより、取得部８０１は、自装置が、モニタＶＭ１０２に通じるポートを正しく特定することができない状態である可能性があることを検出することができる。取得部８０１の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述する経路管理テーブルフラッシュ部などによって実現される。
【００８０】
更新部８０５は、自装置が有する第２対応情報の削除指示を受け付けたことに応じて、第２対応情報を削除する。更新部８０５は、例えば、削除指示を受け付けたことに応じて、ミラーパケット用経路管理テーブル５００を削除する。更新部８０５は、例えば、モニタＶＭ１０２の識別情報を含む削除指示を受け付けたことに応じて、ミラーパケット用経路管理テーブル５００のうち、削除指示に含まれるモニタＶＭ１０２の識別情報に対応するレコードを削除してもよい。
【００８１】
これにより、更新部８０５は、モニタＶＭ１０２に通じるポートを正しく特定することができない状態である可能性があるミラーパケット用経路管理テーブル５００を一旦削除することができる。更新部８０５の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述する経路管理テーブルフラッシュ部などによって実現される。
【００８２】
第２送信部８０６は、自装置からモニタＶＭ１０２にミラーパケットを送信する際、第２対応情報を参照し、モニタＶＭ１０２の識別情報に対応付けられた、自装置からモニタＶＭ１０２へのポートの識別情報があるか否かを判定する。第２送信部８０６は、自装置からモニタＶＭ１０２へのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じてミラーパケットを送信する。
【００８３】
これにより、第２送信部８０６は、いずれかのミラーパケット制御装置１００に実行されているモニタＶＭ１０２に、ミラーパケットが届くようにすることができ、モニタＶＭ１０２から応答が返ってくるようにすることができる。第２送信部８０６の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述するミラーパケット用経路学習部などによって実現される。
【００８４】
更新部８０５は、第２送信部８０６が送信したミラーパケットに対する応答に基づいて第２対応情報を更新する。更新部８０５は、例えば、ミラーパケットに対する応答を受信したポートを、モニタＶＭ１０２に通じるポートとして設定し、ミラーパケット用経路管理テーブル５００を更新する。
【００８５】
これにより、更新部８０５は、ミラーパケット用経路管理テーブル５００を生成し直し、モニタＶＭ１０２に通じるポートを正しく特定することができるようにすることができる。そして、更新部８０５は、移動前のモニタＶＭ１０２に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。更新部８０５の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述するミラーパケット用経路学習部などによって実現される。
【００８６】
第２送信部８０６は、自装置からモニタＶＭ１０２にミラーパケットを送信する際、第２対応情報を参照し、モニタＶＭ１０２の識別情報に対応付けられた、自装置からモニタＶＭ１０２へのポートの識別情報があるか否かを判定する。第２送信部８０６は、自装置からモニタＶＭ１０２へのポートの識別情報がある場合、自装置からモニタＶＭ１０２へのポートを通じてミラーパケットを送信する。
【００８７】
これにより、第２送信部８０６は、いずれかのミラーパケット制御装置１００に実行されているモニタＶＭ１０２に、ミラーパケットが届くようにすることができる。第２送信部８０６の動作は、具体的には、ポートミラーリングシステム２００においては、図９に後述するミラーパケット用経路学習部などによって実現される。
【００８８】
また、ミラーパケット制御装置１００は、自装置からミラーパケットを送信する際に、ミラーパケットを一旦退避させておく場合、取得部８０１と、第２検出部８０７と、退避部８０８と、登録部８０９と、第２送信部８０６とによって動作する。以下では、自装置からミラーパケットを送信する際に、ミラーパケットを一旦退避させておく場合における、取得部８０１と、第２検出部８０７と、退避部８０８と、登録部８０９と、第２送信部８０６との動作について説明する。
【００８９】
記憶部８００は、例えば、自装置からミラーパケットを送信する際に、ミラーパケットを一旦退避させておく場合のために、退避部８０８および登録部８０９によって用いられる、図２５および図２６に後述する各種テーブルを記憶する。これにより、記憶部８００は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
【００９０】
第２検出部８０７は、第１ＶＭについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される第２ＶＭの停止状態を検出する。第１ＶＭは、仮想スイッチに接続され、パケットの入出力が行われるＶＭである。第１ＶＭは、例えば、ターゲットＶＭ１０１である。
【００９１】
入出力バッファとは、ターゲットＶＭ１０１についてのパケットの入出力に用いられる記憶領域である。入出力バッファは、例えば、入力リングバッファと、出力リングバッファと、パケットバッファとの組み合わせである。入力リングバッファは、パケットの入力通知を記憶する記憶領域である。出力リングバッファは、パケットの出力通知を記憶する記憶領域である。パケットバッファは、入力または出力の対象になるパケットを記憶する記憶領域である。入力リングバッファと、出力リングバッファと、パケットバッファとについては、図２７に後述する。
【００９２】
第２ＶＭとは、仮想スイッチに接続され、ミラーパケットが出力されるＶＭである。第２ＶＭは、例えば、仮想スイッチに直接接続されていなくてもよい。第２ＶＭは、仮想スイッチのいずれかのポートから通じる他の仮想スイッチに接続されてもよい。第２ＶＭは、例えば、モニタＶＭ１０２である。
【００９３】
第２検出部８０７は、例えば、第２ＶＭが動作中の演算装置から他の演算装置にライブマイグレーションを開始したことに応じて、第２ＶＭの停止状態を検出する。演算装置は、例えば、ミラーパケット制御装置１００である。第２検出部８０７は、具体的には、モニタＶＭ１０２がライブマイグレーションを開始したとき、モニタＶＭ１０２が停止状態になったことを検出する。第２検出部８０７は、具体的には、管理装置２０１からモニタＶＭ１０２の状態を通知されることにより、モニタＶＭ１０２が停止状態になったことを検出してもよい。第２検出部８０７は、具体的には、モニタＶＭ１０２に対してポーリングを行うことにより、モニタＶＭ１０２が停止状態になったことを検出してもよい。
【００９４】
第２検出部８０７は、例えば、第２ＶＭが動作中の演算装置から他の演算装置にライブマイグレーションする場合において、動作中の演算装置から他の演算装置への第２ＶＭに関する情報の転送量を監視してもよい。そして、第２検出部８０７は、転送量が閾値を下回ったことに応じて、第２ＶＭの停止状態を検出する。これにより、第２検出部８０７は、モニタＶＭ１０２が停止中であり、ミラーパケットをモニタＶＭ１０２に送信すると、ミラーパケットが失われる可能性がある状態になったことを検出することができる。
【００９５】
第２検出部８０７は、第２ＶＭの停止状態の解除を検出する。第２検出部８０７は、例えば、モニタＶＭ１０２の停止状態の解除を検出する。第２検出部８０７は、具体的には、管理装置２０１からモニタＶＭ１０２の状態を通知されることにより、モニタＶＭ１０２が停止状態になったことを検出する。第２検出部８０７は、具体的には、モニタＶＭ１０２に対してポーリングを行うことにより、モニタＶＭ１０２の停止状態の解除を検出してもよい。
【００９６】
これにより、第２検出部８０７は、モニタＶＭ１０２が動作中であり、ミラーパケットをモニタＶＭ１０２に送信しても、ミラーパケットが失われない状態になったことを検出することができる。第２検出部８０７の動作は、具体的には、ポートミラーリングシステム２００においては、図２７に後述する割り込み設定部や割り込み解除部などによって実現される。
【００９７】
退避部８０８は、停止状態が検出されてから停止状態が解除されるまでの期間において第１ＶＭについての入出力の対象となるパケットについては入出力バッファとは異なる退避バッファに蓄積しておく。退避部８０８は、例えば、入出力バッファに一旦登録されたパケットを、仮想スイッチで読み出して転送してしまう前に、あるいは、ターゲットＶＭ１０１が読み出してしまう前に退避バッファに移動し、入出力バッファからは削除する。
【００９８】
退避部８０８は、仮想スイッチから第１ＶＭに入力されるパケットについて複製しない状態に設定された場合には、第２ＶＭの停止状態が検出されたことに応じて第１ＶＭを停止してもよい。退避部８０８は、例えば、ターゲットＶＭ１０１について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタＶＭ１０２に送信する設定であるかを判定する。そして、退避部８０８は、ターゲットＶＭ１０１について入力されるパケットを複製しなくてよい設定であれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットＶＭ１０１を停止する。
【００９９】
この場合、退避部８０８は、停止状態が検出されてから停止状態が解除されるまでの期間において第１ＶＭについての入出力の対象となるパケットについて退避バッファに蓄積しない。退避部８０８は、例えば、ターゲットＶＭ１０１についての入出力の対象となるパケットを、退避バッファに蓄積せず、入出力バッファに登録する。
【０１００】
これにより、退避部８０８は、モニタＶＭ１０２が停止状態である間、ターゲットＶＭ１０１に対してパケットの入出力が行われることを防止することができ、モニタＶＭ１０２にミラーパケットが送信されることを防止することができる。退避部８０８の動作は、具体的には、ポートミラーリングシステム２００においては、図２７に後述する割り込みハンドラなどによって実現される。
【０１０１】
登録部８０９は、停止状態が解除されると、退避バッファに蓄積しておいたパケットを、入出力バッファに登録する。登録部８０９は、例えば、退避バッファに蓄積した順序で、退避バッファに蓄積しておいたパケットを、入出力バッファに登録する。
【０１０２】
これにより、登録部８０９は、ターゲットＶＭ１０１に対するパケットの入出力を再開させ、ターゲットＶＭ１０１に対するパケットの入出力が再開したことに応じてモニタＶＭ１０２へのミラーパケットの送信も再開させることができる。また、登録部８０９は、入出力の順番を変えずに、ターゲットＶＭ１０１に対するパケットの入出力が行われるようにすることができる。登録部８０９の動作は、具体的には、ポートミラーリングシステム２００においては、図２７に後述するパケット処理部などによって実現される。
【０１０３】
第２送信部８０６は、入出力バッファに登録したパケットについて第１ＶＭに対して入出力を行うとともに、入出力バッファに登録したパケットを複製したミラーパケットを第２ＶＭに出力する。第２送信部８０６は、例えば、入出力バッファに登録し直されたパケットについてターゲットＶＭ１０１に対して入出力を行う。また、第２送信部８０６は、入出力バッファに登録し直されたパケットを複製したミラーパケットをモニタＶＭ１０２に送信する。
【０１０４】
これにより、第２送信部８０６は、モニタＶＭ１０２の停止状態が解除された後は、ターゲットＶＭ１０１に対して入出力バッファに登録し直されたパケットの入出力を行うことができる。そして、第２送信部８０６は、入出力バッファに登録し直されたパケットの入出力が行われたことに応じて、入出力バッファに登録し直されたパケットを複製したミラーパケットを、停止状態が解除されたモニタＶＭ１０２に送信することができる。第２送信部８０６の動作は、具体的には、ポートミラーリングシステム２００においては、図２７に後述するミラーパケット生成部などによって実現される。
【０１０５】
出力部８１０は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ３０３による外部装置への送信、または、メモリ３０２や記録媒体３０５などの記憶領域への記憶である。これにより、出力部８１０は、各機能部の処理結果を利用者に通知可能にし、ミラーパケット制御装置１００の管理や運用、例えば、ミラーパケット制御装置１００の設定値の更新などを支援することができる。このため、出力部８１０は、ミラーパケット制御装置１００の利便性の向上を図ることができる。
【０１０６】
ミラーパケット制御装置１００は、取得部８０１と、第１検出部８０２と、特定部８０３と、第１送信部８０４とを含まない場合があってもよい。また、ミラーパケット制御装置１００は、更新部８０５と、第２送信部８０６とを含まない場合があってもよい。また、ミラーパケット制御装置１００は、第２検出部８０７と、退避部８０８と、登録部８０９とを含まない場合があってもよい。
【０１０７】
（ポートミラーリングシステム２００のモジュール構成例）
次に、図９を用いて、図８に示した各機能部の動作を実現するためのポートミラーリングシステム２００のモジュール構成例について説明する。
【０１０８】
図９は、ポートミラーリングシステム２００のモジュール構成例を示す説明図である。以下の説明では、それぞれのミラーパケット制御装置１００−ｉが有するミラーパケット用経路管理テーブル５００を区別する場合、「ミラーパケット用経路管理テーブル５００−ｉ」と表記する場合がある。同様に、それぞれのミラーパケット制御装置１００−ｉが有するモニタ管理テーブル７００を区別する場合、「モニタ管理テーブル７００−ｉ」と表記する場合がある。
【０１０９】
図９の例では、管理装置２０１のハードウェア９１０において、管理装置２０１のハイパーバイザ９１１が実行されている。管理装置２０１のハイパーバイザ９１１において、ＯＳ９１２が実行されている。ＯＳ９１２において、仮想マネージャ９１３が実行されている。仮想マネージャ９１３は、モニタ管理テーブル作成部９１４を含む。
【０１１０】
モニタ管理テーブル作成部９１４は、モニタＶＭ９０２がライブマイグレーションされた後、仮想基盤に問い合わせ、仮想基盤からモニタＶＭ９０２のポートを識別するモニタＩＤを取得する。モニタ管理テーブル作成部９１４は、ミラーポート管理テーブル６００を参照し、取得したモニタＩＤと、モニタＩＤに対応するミラーポートＩＤとホストＩＤとを対応付けた、モニタ管理テーブル７００に追加されるレコードを生成する。モニタ管理テーブル作成部９１４は、生成したレコードをモニタＶＭ９０２が移動されるミラーパケット制御装置１００に送信する。モニタ管理テーブル作成部９１４は、具体的には、図１６に後述するモニタ管理テーブル作成処理を実行する。
【０１１１】
管理装置２０１のＯＳ９１２において、ポートミラーマネージャ９１５が実行されている。ポートミラーマネージャ９１５は、ミラーポート管理テーブル６００を有する。ポートミラーマネージャ９１５は、ポートミラーリングを制御する。管理装置２０１のハイパーバイザ９１１はなくてもよい。
【０１１２】
また、ミラーパケット制御装置１００−ｉのハードウェア９２０−ｉにおいて、ミラーパケット制御装置１００−ｉのハイパーバイザ９２１−ｉが実行されている。ミラーパケット制御装置１００−ｉのハイパーバイザ９２１−ｉにおいて、ミラーパケット制御装置１００−ｉのホストＯＳ９２２−ｉが実行されている。ミラーパケット制御装置１００−ｉのホストＯＳ９２２−ｉにおいて、ターゲットＶＭ９０１、または、モニタＶＭ９０２が実行可能である。
【０１１３】
ミラーパケット制御装置１００−ｉのホストＯＳ９２２−ｉは、仮想スイッチ９２３−ｉを含む。仮想スイッチ９２３−ｉは、ミラーパケット用経路学習部９２４−ｉと、ライブマイグレーション完了検出部９２５−ｉと、再学習通知パケット送信部９２６−ｉと、経路管理テーブルフラッシュ部９２７−ｉとを含む。仮想スイッチ９２３−ｉは、ミラーパケット用経路管理テーブル５００−ｉと、モニタ管理テーブル７００−ｉとを有する。
【０１１４】
ミラーパケット用経路学習部９２４−ｉは、ターゲットＶＭ９０１へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する。ミラーパケット用経路学習部９２４−ｉは、ミラーパケットの宛先になるモニタＶＭ９０２を示すモニタＩＤを取得可能であれば、モニタＩＤが示すポートを通じてミラーパケットを送信する。
【０１１５】
ミラーパケット用経路学習部９２４−ｉは、ミラーパケットの宛先になるモニタＶＭ９０２を示すモニタＩＤを取得可能でなければ、すべてのポートを通じてミラーパケットを送信する。ミラーパケット用経路学習部９２４−ｉは、送信したミラーパケットに対する返信パケットに基づいて、ミラーパケット用経路管理テーブル５００−ｉを更新する。ミラーパケット用経路学習部９２４−ｉは、具体的には、図１４および図１５に後述するミラーパケット用経路学習処理を実行する。
【０１１６】
ライブマイグレーション完了検出部９２５−ｉは、ＧＡＲＰパケットを監視し、ＧＡＲＰパケットを検出したことに応じて、ライブマイグレーションが完了したことを検出する。ライブマイグレーション完了検出部９２５−ｉは、ＧＡＲＰパケットを検出したＶＭのポートを識別するＩＤをモニタＩＤとして設定する。ライブマイグレーション完了検出部９２５−ｉは、モニタＩＤでモニタ管理テーブル７００−ｉを検索し、モニタＩＤに対応するミラーポートＩＤを取得する。ライブマイグレーション完了検出部９２５−ｉは、モニタＩＤと、ミラーポートＩＤとを、再学習通知パケット送信部９２６−ｉに指定して、図１８に後述する再学習通知パケット送信処理を実行させる。
【０１１７】
また、ライブマイグレーション完了検出部９２５−ｉは、ＧＡＲＰパケットを利用する方法とは異なる方法により、ライブマイグレーションが完了したことを検出してもよい。ＧＡＲＰパケットを利用する方法とは異なる方法については、具体的には、例えば、特開２０１４−１８２５９６号公報などを参照することができる。ライブマイグレーション完了検出部９２５−ｉは、具体的には、図１７に後述するライブマイグレーション完了検出処理を実行する。
【０１１８】
再学習通知パケット送信部９２６−ｉは、ミラーポートＩＤでモニタ管理テーブル７００−ｉを検索し、ミラーポートＩＤに対応するホストＩＤが示すホストＯＳに、再学習通知パケットを送信する。再学習通知パケット送信部９２６−ｉは、具体的には、図１８に後述する再学習通知パケット送信処理を実行する。
【０１１９】
経路管理テーブルフラッシュ部９２７−ｉは、再学習通知パケットを受信すると、ミラーパケット用経路管理テーブル５００−ｉを初期化する。経路管理テーブルフラッシュ部９２７−ｉは、具体的には、図１９に後述するミラーパケット用経路管理テーブル削除処理を実行する。
【０１２０】
図９において、（９−１）ポートミラーマネージャ９１５は、管理者９０３の操作入力によって、ライブマイグレーション指示を受け付けたとする。ポートミラーマネージャ９１５は、ライブマイグレーション指示を受け付けたため、モニタＶＭ９０２を、ミラーパケット制御装置１００−２からミラーパケット制御装置１００−ｎへとライブマイグレーションする。ここで、図１０〜図１３の説明に移行する。
【０１２１】
（ポートミラーリングシステム２００の動作例１）
次に、図１０〜図１３を用いて、ポートミラーリングシステム２００の動作例１について説明する。
【０１２２】
図１０〜図１３は、ポートミラーリングシステム２００の動作例１を示す説明図である。仮想マネージャ９１３は、ライブマイグレーションが完了すると、ＧＡＲＰパケット１０００を、モニタＶＭ９０２が移動したミラーパケット制御装置１００−ｎが属するＬ２ネットワークに対して送信する。ここで、図１０の説明に移行し、ＧＡＲＰパケット１０００のデータ構造について説明する。
【０１２３】
図１０に示すように、ＧＡＲＰパケット１０００は、ＥｔｈｅｒヘッダとＡＲＰパケットを含む。Ｅｔｈｅｒヘッダは、送信元ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）と、宛先ＭＡＣとのフィールドを含む。送信元ＭＡＣのフィールドには、送信元ＭＡＣアドレスが設定される。宛先ＭＡＣのフィールドには、宛先ＭＡＣアドレスが設定される。
【０１２４】
ＡＲＰパケットは、宛先ＩＰと、宛先ＭＡＣと、送信元ＩＰと、送信元ＭＡＣと、制御情報とのフィールドを含む。宛先ＩＰのフィールドには、ライブマイグレーションされたＶＭのＩＰアドレスが設定される。宛先ＭＡＣのフィールドには、宛先ＭＡＣアドレスが設定される。
【０１２５】
送信元ＩＰのフィールドには、ライブマイグレーションされたＶＭのＩＰアドレスが設定される。宛先ＩＰと送信元ＩＰとのフィールドに、共通して、ライブマイグレーションされたＶＭのＩＰアドレスが設定されることにより、ＧＡＲＰパケット１０００であることを示す。送信元ＭＡＣのフィールドには、送信元ＭＡＣアドレスが設定される。制御情報のフィールドには、制御情報が設定される。ここで、図１１の説明に移行する。
【０１２６】
図１１の例では、（１１−１）管理装置２０１において、モニタ管理テーブル作成部９１４は、モニタＶＭ９０２がライブマイグレーションされた後、モニタＶＭ９０２のポートを識別するモニタＩＤを取得する。
【０１２７】
次に、モニタ管理テーブル作成部９１４は、ミラーポート管理テーブル６００を参照し、取得したモニタＩＤと、モニタＩＤに対応するミラーポートＩＤとホストＩＤとを対応付けた、モニタ管理テーブル７００−ｎに追加されるレコードを生成する。そして、モニタ管理テーブル作成部９１４は、生成したレコードをモニタＶＭ９０２が移動されたミラーパケット制御装置１００−ｎに送信する。
【０１２８】
これにより、モニタ管理テーブル作成部９１４は、ミラーパケット制御装置１００−ｎが有するモニタ管理テーブル７００−ｎを最新の状態に更新することができ、モニタＶＭ９０２に対するミラーパケットの送信元を正しく特定可能にすることができる。
【０１２９】
（１１−２）ミラーパケット制御装置１００−ｎにおいて、ライブマイグレーション完了検出部９２５−ｎは、ＧＡＲＰパケット１０００を監視し、ＧＡＲＰパケット１０００を検出したＶＭのポートを識別するＩＤをモニタＩＤとして設定する。次に、ライブマイグレーション完了検出部９２５−ｎは、モニタＩＤでモニタ管理テーブル７００−ｎを検索し、モニタＩＤに対応するミラーポートＩＤを取得する。そして、ライブマイグレーション完了検出部９２５−ｎは、モニタＩＤと、ミラーポートＩＤとを、再学習通知パケット送信部９２６−ｎに出力する。
【０１３０】
これにより、ライブマイグレーション完了検出部９２５−ｎは、モニタＶＭ９０２にミラーパケットを送信する送信元が、モニタＶＭ９０２に通じるポートを正しく特定することができない状態である可能性があることを検出することができる。そして、ライブマイグレーション完了検出部９２５−ｎは、ミラーパケットの送信元において、ミラーパケット用経路管理テーブル５００を削除させることが好ましいタイミングであることを、再学習通知パケット送信部９２６−ｎに通知することができる。
【０１３１】
（１１−３）ミラーパケット制御装置１００−ｎにおいて、再学習通知パケット送信部９２６−ｎは、通知されたミラーポートＩＤでモニタ管理テーブル７００−ｎを検索し、ミラーポートＩＤに対応するホストＩＤが示すホストＯＳを取得する。そして、再学習通知パケット送信部９２６−ｎは、取得したホストＯＳに基づいて、モニタＶＭ９０２にミラーパケットを送信するミラーパケット制御装置１００−１に対して、図１２に後述する再学習通知パケット１２００を送信する。ここで、図１２の説明に移行し、再学習通知パケット１２００のデータ構造について説明する。
【０１３２】
図１２に示すように、再学習通知パケット１２００は、ヘッダとペイロードとを含む。ヘッダは、Ｅｔｈｅｒヘッダと、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ヘッダと、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）ヘッダとのフィールドを含む。Ｅｔｈｅｒヘッダのフィールドには、Ｅｔｈｅｒヘッダの内容が設定される。ＩＰヘッダのフィールドには、ＩＰヘッダの内容が設定される。ＴＣＰヘッダのフィールドには、ＴＣＰヘッダの内容が設定される。ヘッダの内容は、通常のパケットと同様であってもよい。ペイロードには、識別子が設定される。識別子は、再学習通知パケット１２００を、通常のパケットと区別可能にするための情報である。次に、図１３の説明に移行する。
【０１３３】
図１３の例では、（１３−１）ミラーパケット制御装置１００−１において、経路管理テーブルフラッシュ部９２７−１は、再学習通知パケット１２００を受信する。経路管理テーブルフラッシュ部９２７−１は、再学習通知パケット１２００を受信すると、再学習通知パケット１２００のペイロードを参照し、再学習通知パケット１２００であることを判定する。そして、経路管理テーブルフラッシュ部９２７−１は、ミラーパケット用経路管理テーブル５００−１を削除する。
【０１３４】
これにより、経路管理テーブルフラッシュ部９２７−１は、モニタＶＭ９０２に通じるポートを正しく特定することができない状態である可能性があるミラーパケット用経路管理テーブル５００−１を一旦削除することができる。
【０１３５】
（１３−２）ミラーパケット制御装置１００−１において、ミラーパケット用経路学習部９２４−１は、ターゲットＶＭ９０１へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する。次に、ミラーパケット用経路学習部９２４−１は、ミラーパケットを生成すると、ミラーパケット用経路管理テーブル５００−１を参照する。
【０１３６】
ここで、ミラーパケット用経路学習部９２４−１は、ミラーパケット用経路管理テーブル５００−１が削除されているため、すべてのポートを通じてミラーパケットを送信する。ミラーパケット用経路学習部９２４−１は、送信したミラーパケットに対する返信パケットに基づいて、ミラーパケット用経路管理テーブル５００−１を更新する。
【０１３７】
これにより、ミラーパケット用経路学習部９２４−１は、ミラーパケット用経路管理テーブル５００−１を生成し直し、モニタＶＭ９０２に通じるポートを正しく特定することができるようにすることができる。このように、ポートミラーリングシステム２００では、ミラーパケット制御装置１００−１が、移動前のモニタＶＭ９０２に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
【０１３８】
（動作例１におけるミラーパケット用経路学習処理手順）
次に、図１４および図１５を用いて、ミラーパケット制御装置１００−ｉのミラーパケット用経路学習部９２４−ｉが実行する、動作例１におけるミラーパケット用経路学習処理手順の一例について説明する。
【０１３９】
図１４および図１５は、動作例１におけるミラーパケット用経路学習処理手順の一例を示すフローチャートである。図１４において、ミラーパケット用経路学習部９２４−ｉは、ターゲットＶＭ９０１へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する（ステップＳ１４０１）。
【０１４０】
次に、ミラーパケット用経路学習部９２４−ｉは、ミラーパケットの宛先になるモニタＶＭ９０２を示すモニタＩＤを取得する（ステップＳ１４０２）。そして、ミラーパケット用経路学習部９２４−ｉは、ホストＯＳに問い合わせ、すべてのトンネルポートを特定する（ステップＳ１４０３）。
【０１４１】
次に、ミラーパケット用経路学習部９２４−ｉは、ミラーパケット用経路管理テーブル５００−ｉに、取得したモニタＩＤに対応するレコードがあるか否かを判定する（ステップＳ１４０４）。ここで、レコードがある場合（ステップＳ１４０４：Ｙｅｓ）、ミラーパケット用経路学習部９２４−ｉは、取得したモニタＩＤに対応するレコードに設定された宛先ポートＩＤが示すトンネルポートに、生成したミラーパケットを送信する（ステップＳ１４０５）。そして、ミラーパケット用経路学習部９２４−ｉは、ミラーパケット用経路学習処理を終了する。
【０１４２】
一方で、レコードがない場合（ステップＳ１４０４：Ｎｏ）、ミラーパケット用経路学習部９２４−ｉは、特定したすべてのトンネルポートに、生成したミラーパケットを送信する（ステップＳ１４０６）。そして、ミラーパケット用経路学習部９２４−ｉは、図１５のステップＳ１５０１の処理に移行する。
【０１４３】
図１５において、ミラーパケット用経路学習部９２４−ｉは、送信したミラーパケットに対する返信パケットを受信する（ステップＳ１５０１）。次に、ミラーパケット用経路学習部９２４−ｉは、返信パケットに基づいて、返信パケットの送信元になるモニタＶＭ９０２を示すモニタＩＤを取得する（ステップＳ１５０２）。そして、ミラーパケット用経路学習部９２４−ｉは、返信パケットを受信したトンネルポートを特定する（ステップＳ１５０３）。
【０１４４】
次に、ミラーパケット用経路学習部９２４−ｉは、取得したモニタＩＤと、特定したトンネルポートを示す宛先ポートＩＤとを対応付けて、ミラーパケット用経路管理テーブル５００−ｉに記憶する（ステップＳ１５０４）。そして、ミラーパケット用経路学習部９２４−ｉは、ミラーパケット用経路学習処理を終了する。
【０１４５】
（動作例１におけるモニタ管理テーブル作成処理手順）
次に、図１６を用いて、管理装置２０１のモニタ管理テーブル作成部９１４が実行する、動作例１におけるモニタ管理テーブル作成処理手順の一例について説明する。
【０１４６】
図１６は、動作例１におけるモニタ管理テーブル作成処理手順の一例を示すフローチャートである。図１６において、モニタ管理テーブル作成部９１４は、ＶＭＩＤと、移行元ホストと、移行先ホストとを指定する、ライブマイグレーション指示を待ち受ける（ステップＳ１６０１）。
【０１４７】
次に、モニタ管理テーブル作成部９１４は、ライブマイグレーション指示を受け付けたか否かを判定する（ステップＳ１６０２）。ここで、ライブマイグレーション指示を受け付けていない場合（ステップＳ１６０２：Ｎｏ）、モニタ管理テーブル作成部９１４は、ステップＳ１６０１の処理に戻る。
【０１４８】
一方で、ライブマイグレーション指示を受け付けた場合（ステップＳ１６０２：Ｙｅｓ）、モニタ管理テーブル作成部９１４は、ステップＳ１６０３の処理に移行する。ステップＳ１６０３では、モニタ管理テーブル作成部９１４は、ＶＭＩＤが示すＶＭがライブマイグレーションされた後、仮想基盤に問い合わせ、仮想基盤からＶＭＩＤが示すＶＭのポートを識別するＩＤを取得する（ステップＳ１６０３）。
【０１４９】
次に、モニタ管理テーブル作成部９１４は、ミラーポート管理テーブル６００のレコードを選択する（ステップＳ１６０４）。そして、モニタ管理テーブル作成部９１４は、選択したレコードのモニタＩＤが、取得したＩＤに対応するか否かを判定する（ステップＳ１６０５）。ここで、モニタＩＤが取得したＩＤに対応しない場合（ステップＳ１６０５：Ｎｏ）、モニタ管理テーブル作成部９１４は、ステップＳ１６０８の処理に移行する。
【０１５０】
一方で、モニタＩＤが取得したＩＤに対応する場合（ステップＳ１６０５：Ｙｅｓ）、モニタ管理テーブル作成部９１４は、選択したレコードのミラーポートＩＤに対応するホストＩＤを取得する（ステップＳ１６０６）。次に、モニタ管理テーブル作成部９１４は、モニタＩＤと、ミラーポートＩＤと、ホストＩＤとを対応付けた、モニタ管理テーブル７００に追加されるレコードを生成し、移行先ホストに送信する（ステップＳ１６０７）。そして、モニタ管理テーブル作成部９１４は、ステップＳ１６０８の処理に移行する。
【０１５１】
ステップＳ１６０８では、モニタ管理テーブル作成部９１４は、ミラーポート管理テーブル６００のすべてのレコードを選択したか否かを判定する（ステップＳ１６０８）。ここで、いずれかのレコードを選択していない場合（ステップＳ１６０８：Ｎｏ）、モニタ管理テーブル作成部９１４は、ステップＳ１６０４の処理に戻る。
【０１５２】
一方で、すべてのレコードを選択している場合（ステップＳ１６０８：Ｙｅｓ）、モニタ管理テーブル作成部９１４は、モニタ管理テーブル作成処理を終了する。これにより、モニタ管理テーブル作成部９１４は、ポートミラーリングシステム２００の最新の状態に対応するように、モニタ管理テーブル７００を更新することができる。
【０１５３】
（動作例１におけるライブマイグレーション完了検出処理手順）
次に、図１７を用いて、ミラーパケット制御装置１００−ｉのライブマイグレーション完了検出部９２５−ｉが実行する、動作例１におけるライブマイグレーション完了検出処理手順の一例について説明する。
【０１５４】
図１７は、動作例１におけるライブマイグレーション完了検出処理手順の一例を示すフローチャートである。図１７において、ライブマイグレーション完了検出部９２５−ｉは、ＧＡＲＰパケット１０００を監視する（ステップＳ１７０１）。
【０１５５】
次に、ライブマイグレーション完了検出部９２５−ｉは、ＧＡＲＰパケット１０００を検出したか否かを判定する（ステップＳ１７０２）。ここで、検出していない場合（ステップＳ１７０２：Ｎｏ）、ライブマイグレーション完了検出部９２５−ｉは、ステップＳ１７０１の処理に戻る。一方で、検出した場合（ステップＳ１７０２：Ｙｅｓ）、ライブマイグレーション完了検出部９２５−ｉは、ＧＡＲＰパケット１０００を検出したＶＭのポートを識別するＩＤをモニタＩＤとして設定し、ステップＳ１７０３の処理に移行する。
【０１５６】
ステップＳ１７０３では、ライブマイグレーション完了検出部９２５−ｉは、モニタＩＤでモニタ管理テーブル７００−ｉを検索し、モニタＩＤに対応するミラーポートＩＤを取得する（ステップＳ１７０３）。ここで、ライブマイグレーション完了検出部９２５−ｉは、ミラーポートＩＤを１以上取得したか否かを判定する（ステップＳ１７０４）。ミラーポートＩＤを取得していない場合（ステップＳ１７０４：Ｎｏ）、ライブマイグレーション完了検出部９２５−ｉは、ライブマイグレーション完了検出処理を終了する。
【０１５７】
一方で、ミラーポートＩＤを１以上取得している場合（ステップＳ１７０４：Ｙｅｓ）、ライブマイグレーション完了検出部９２５−ｉは、取得した１以上のミラーポートＩＤのいずれかのミラーポートＩＤを選択する（ステップＳ１７０５）。
【０１５８】
次に、ライブマイグレーション完了検出部９２５−ｉは、モニタＩＤと、選択したミラーポートＩＤとを指定して、図１８に後述する再学習通知パケット送信処理を、再学習通知パケット送信部９２６−ｉに実行させる（ステップＳ１７０６）。
【０１５９】
そして、ライブマイグレーション完了検出部９２５−ｉは、すべてのミラーポートＩＤを選択したか否かを判定する（ステップＳ１７０７）。ここで、いずれかのミラーポートＩＤを選択していない場合（ステップＳ１７０７：Ｎｏ）、ライブマイグレーション完了検出部９２５−ｉは、ステップＳ１７０５の処理に戻る。
【０１６０】
一方で、すべてのミラーポートＩＤを選択している場合（ステップＳ１７０７：Ｙｅｓ）、ライブマイグレーション完了検出部９２５−ｉは、モニタ管理テーブル７００−ｉを削除する（ステップＳ１７０８）。そして、ライブマイグレーション完了検出部９２５−ｉは、ライブマイグレーション完了検出処理を終了する。
【０１６１】
（動作例１における再学習通知パケット送信処理手順）
次に、図１８を用いて、ミラーパケット制御装置１００−ｉの再学習通知パケット送信部９２６−ｉが実行する、動作例１における再学習通知パケット送信処理手順の一例について説明する。
【０１６２】
図１８は、動作例１における再学習通知パケット送信処理手順の一例を示すフローチャートである。図１８において、再学習通知パケット送信部９２６−ｉは、ミラーポートＩＤでモニタ管理テーブル７００−ｉを検索し、ミラーポートＩＤに対応するホストＩＤを取得する（ステップＳ１８０１）。
【０１６３】
次に、再学習通知パケット送信部９２６−ｉは、再学習通知パケット１２００を生成する（ステップＳ１８０２）。そして、再学習通知パケット送信部９２６−ｉは、取得したホストＩＤが示すホストＯＳに、生成した再学習通知パケット１２００を送信する（ステップＳ１８０３）。
【０１６４】
次に、再学習通知パケット送信部９２６−ｉは、取得したホストＩＤが示すホストＯＳからＡｃｋを受信する（ステップＳ１８０４）。そして、再学習通知パケット送信部９２６−ｉは、再学習通知パケット送信処理を終了する。
【０１６５】
（動作例１におけるミラーパケット用経路管理テーブル削除処理手順）
次に、図１９を用いて、ミラーパケット制御装置１００−ｉの経路管理テーブルフラッシュ部９２７−ｉが実行する、動作例１におけるミラーパケット用経路管理テーブル削除処理手順の一例について説明する。
【０１６６】
図１９は、動作例１におけるミラーパケット用経路管理テーブル削除処理手順の一例を示すフローチャートである。図１９において、経路管理テーブルフラッシュ部９２７−ｉは、再学習通知パケット１２００を待ち受ける（ステップＳ１９０１）。
【０１６７】
次に、経路管理テーブルフラッシュ部９２７−ｉは、再学習通知パケット１２００を受信したか否かを判定する（ステップＳ１９０２）。ここで、再学習通知パケット１２００を受信していない場合（ステップＳ１９０２：Ｎｏ）、経路管理テーブルフラッシュ部９２７−ｉは、ステップＳ１９０１の処理に戻る。
【０１６８】
一方で、再学習通知パケット１２００を受信している場合（ステップＳ１９０２：Ｙｅｓ）、経路管理テーブルフラッシュ部９２７−ｉは、ミラーパケット用経路管理テーブル５００−ｉを初期化する（ステップＳ１９０３）。次に、経路管理テーブルフラッシュ部９２７−ｉは、Ａｃｋを返信する（ステップＳ１９０４）。そして、経路管理テーブルフラッシュ部９２７−ｉは、ミラーパケット用経路管理テーブル削除処理を終了する。
【０１６９】
（ポートミラーリングシステム２００の動作例２）
次に、図２０および図２１を用いて、ポートミラーリングシステム２００の動作例２について説明する。動作例１では、ミラーパケット制御装置１００が、削除指示を受け付けたことに応じて、ミラーポート用経路管理テーブル全体を削除する場合について説明した。
【０１７０】
これに対し、動作例２では、削除指示がモニタＩＤを含み、ミラーパケット制御装置１００が、削除指示を受け付けたことに応じて、ミラーポート用経路管理テーブルのいずれかのレコードを削除する場合について説明する。ここで、図２０および図２１の説明に移行する。
【０１７１】
図２０および図２１は、ポートミラーリングシステム２００の動作例２を示す説明図である。図２０の例では、ミラーパケット制御装置１００−ｎは、動作例１の（１１−１）、（１１−２）と同様に動作する。次に、ミラーパケット制御装置１００−ｎは、動作例１の（１１−３）に代わり、下記のように動作する。
【０１７２】
（２０−１）ミラーパケット制御装置１００−ｎにおいて、再学習通知パケット送信部９２６−ｎは、通知されたミラーポートＩＤでモニタ管理テーブル７００−ｎを検索し、ミラーポートＩＤに対応するホストＩＤが示すホストＯＳを取得する。次に、再学習通知パケット送信部９２６−ｎは、モニタＶＭ９０２に対応するモニタＩＤを含むように、図２１に後述する再学習通知パケット２１００を生成する。
【０１７３】
そして、再学習通知パケット送信部９２６−ｎは、取得したホストＯＳに基づいて、モニタＶＭ９０２にミラーパケットを送信するミラーパケット制御装置１００−１に対して、生成した再学習通知パケット２１００を送信する。ここで、図２１の説明に移行し、再学習通知パケット２１００のデータ構造について説明する。
【０１７４】
図２１に示すように、再学習通知パケット２１００は、ヘッダとペイロードとを含む。ヘッダの内容は、動作例１と同様である。ペイロードは、識別子と、モニタＩＤとのフィールドを含む。識別子は、再学習通知パケット２１００を、通常のパケットと区別可能にするための情報である。モニタＩＤは、ライブマイグレーションされたモニタＶＭ９０２に対応するモニタＩＤである。
【０１７５】
一方で、ミラーパケット制御装置１００−１は、動作例１の（１３−１）と（１３−２）とに代わり、下記のように動作する。
【０１７６】
ミラーパケット制御装置１００−１において、経路管理テーブルフラッシュ部９２７−１は、再学習通知パケット２１００を受信すると、再学習通知パケット２１００のペイロードを参照し、再学習通知パケット２１００であることを判定する。そして、経路管理テーブルフラッシュ部９２７−１は、再学習通知パケット２１００からモニタＩＤを取得し、ミラーパケット用経路管理テーブル５００−１のうち、取得したモニタＩＤに対応するレコードを削除する。
【０１７７】
これにより、経路管理テーブルフラッシュ部９２７−１は、ミラーパケット用経路管理テーブル５００−１のうち、削除しなくてもよいレコードについては削除しないようにすることができる。
【０１７８】
ミラーパケット制御装置１００−１において、ミラーパケット用経路学習部９２４−１は、ターゲットＶＭ９０１へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する。次に、ミラーパケット用経路学習部９２４−１は、ミラーパケットを生成すると、ミラーパケット用経路管理テーブル５００−１を参照する。
【０１７９】
ここで、ミラーパケット用経路学習部９２４−１は、ミラーパケット用経路管理テーブル５００−１に、モニタＶＭ９０２に対応するレコードがないため、すべてのポートを通じてミラーパケットを送信する。ミラーパケット用経路学習部９２４−１は、送信したミラーパケットに対する返信パケットに基づいて、ミラーパケット用経路管理テーブル５００−１を更新する。
【０１８０】
これにより、ミラーパケット用経路学習部９２４−１は、ミラーパケット用経路管理テーブル５００−１のうち、生成し直すことになるレコードの数の増大化を抑制することができ、処理量の低減化を図ることができる。
【０１８１】
（動作例２における再学習通知パケット送信処理手順）
次に、図２２を用いて、動作例２における再学習通知パケット送信処理手順の一例について説明する。
【０１８２】
図２２は、動作例２における再学習通知パケット送信処理手順の一例を示すフローチャートである。図２２において、再学習通知パケット送信部９２６−ｉは、ミラーポートＩＤでモニタ管理テーブル７００−ｉを検索し、ミラーポートＩＤに対応するホストＩＤを取得する（ステップＳ２２０１）。
【０１８３】
次に、再学習通知パケット送信部９２６−ｉは、再学習通知パケットを生成する（ステップＳ２２０２）。ここで、再学習通知パケット送信部９２６−ｉは、再学習通知パケットのペイロードに、モニタＩＤを埋め込む（ステップＳ２２０３）。そして、再学習通知パケット送信部９２６−ｉは、取得したホストＩＤが示すホストＯＳに、生成した再学習通知パケットを送信する（ステップＳ２２０４）。
【０１８４】
次に、再学習通知パケット送信部９２６−ｉは、取得したホストＩＤが示すホストＯＳからＡｃｋを受信する（ステップＳ２２０５）。そして、再学習通知パケット送信部９２６−ｉは、再学習通知パケット送信処理を終了する。
【０１８５】
（動作例２におけるミラーパケット用経路管理テーブル削除処理手順）
次に、図２３を用いて、動作例２におけるミラーパケット用経路管理テーブル削除処理手順の一例について説明する。
【０１８６】
図２３は、動作例２におけるミラーパケット用経路管理テーブル削除処理手順の一例を示すフローチャートである。図２３において、経路管理テーブルフラッシュ部９２７−ｉは、再学習通知パケットを待ち受ける（ステップＳ２３０１）。
【０１８７】
次に、経路管理テーブルフラッシュ部９２７−ｉは、再学習通知パケットを受信したか否かを判定する（ステップＳ２３０２）。ここで、再学習通知パケットを受信していない場合（ステップＳ２３０２：Ｎｏ）、経路管理テーブルフラッシュ部９２７−ｉは、ステップＳ２３０１の処理に戻る。
【０１８８】
一方で、再学習通知パケットを受信している場合（ステップＳ２３０２：Ｙｅｓ）、経路管理テーブルフラッシュ部９２７−ｉは、再学習通知パケットのペイロードからモニタＩＤを取得する（ステップＳ２３０３）。
【０１８９】
次に、経路管理テーブルフラッシュ部９２７−ｉは、ミラーパケット用経路管理テーブル５００−ｉのうち、取得したモニタＩＤに対応するレコードを削除する（ステップＳ２３０４）。次に、経路管理テーブルフラッシュ部９２７−ｉは、Ａｃｋを返信する（ステップＳ２３０５）。そして、経路管理テーブルフラッシュ部９２７−ｉは、ミラーパケット用経路管理テーブル削除処理を終了する。
【０１９０】
（ポートミラーリングシステム２００の動作例３）
次に、図２４〜図３１を用いて、ポートミラーリングシステム２００の動作例３について説明する。動作例１では、ミラーパケット制御装置１００が、ターゲットＶＭ９０１に対してパケットが送受信されたことに応じて、ミラーパケットを生成してモニタＶＭ９０２に送信する場合について説明した。
【０１９１】
これに対し、動作例３では、ミラーパケット制御装置１００が、モニタＶＭ９０２が停止状態であるか否かに応じて、ミラーパケットを一旦退避させることが可能である場合について説明する。
【０１９２】
例えば、モニタＶＭ９０２はライブマイグレーションされる際などに一時的に停止することがある。このため、モニタＶＭ９０２の停止中にターゲットＶＭ９０１が送信または受信したパケットを複製したミラーパケットは、モニタＶＭ９０２が受信することができずに失われてしまう。また、モニタＶＭ９０２は、ミラーパケットについて再送要求することも困難である。そこで、動作例３では、モニタＶＭ９０２の停止中にミラーパケットが送信されることを防止することにより、ミラーパケットが失われる確率を低減する。
【０１９３】
動作例３では、管理装置２０１は、図２４に後述するＶＭ状態管理テーブル２４００を記憶し、ミラーパケット制御装置１００は、図２５および図２６に後述する各種テーブルを記憶する。ここで、図２４〜図２６の説明に移行する。
【０１９４】
（ＶＭ状態管理テーブル２４００の記憶内容）
次に、図２４を用いて、ＶＭ状態管理テーブル２４００の記憶内容の一例について説明する。ＶＭ状態管理テーブル２４００は、例えば、管理装置２０１の記憶領域により実現される。
【０１９５】
図２４は、ＶＭ状態管理テーブル２４００の記憶内容の一例を示す説明図である。図２４に示すように、ＶＭ状態管理テーブル２４００は、ＶＭＩＤと、ホストＩＤと、状態とのフィールドを有する。ＶＭ状態管理テーブル２４００は、ＶＭごとに各フィールドに情報を設定することにより、ＶＭ状態管理情報がレコードとして記憶される。
【０１９６】
ＶＭＩＤのフィールドには、ＶＭを一意に識別する情報であるＶＭＩＤが設定される。ホストＩＤのフィールドには、ホストＯＳを一意に識別する情報であるホストＩＤが設定される。状態のフィールドには、ＶＭの状態が設定される。ＶＭの状態は、例えば、ＶＭが動作中であれば「ランニング（ＲＵＮＮＩＮＧ）」であり、ＶＭが停止中であれば「サスペンド（ＳＵＳＰＥＮＤＥＤ）」である。
【０１９７】
ＶＭ状態管理テーブル２４００は、管理装置２０１によって生成され更新される。管理装置２０１は、ＶＭ状態管理テーブル２４００を用いることにより、それぞれのミラーパケット制御装置１００におけるＶＭの状態を管理することができる。
【０１９８】
そして、管理装置２０１は、ＶＭ状態管理テーブル２４００を参照することにより、ターゲットＶＭ９０１を実行中であるミラーパケット制御装置１００に、モニタＶＭ９０２の状態がサスペンドになったことを通知することができる。また、管理装置２０１は、ＶＭ状態管理テーブル２４００を参照することにより、ターゲットＶＭ９０１を実行中であるミラーパケット制御装置１００に、モニタＶＭ９０２の状態がサスペンドからランニングに戻ったことを通知することができる。
【０１９９】
（リングバッファ管理テーブル２５００の記憶内容）
次に、図２５を用いて、リングバッファ管理テーブル２５００の記憶内容の一例について説明する。リングバッファ管理テーブル２５００は、例えば、図３に示したミラーパケット制御装置１００のメモリ３０２や記録媒体３０５の記憶領域により実現される。
【０２００】
ここで、リングバッファとは、いずれかのＶＭについてのパケットの入出力に用いられる記憶領域である。リングバッファは、例えば、入出力バッファに対応し、入出力バッファの一部となる記憶領域である。パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にあってもよい。
【０２０１】
図２５は、リングバッファ管理テーブル２５００の記憶内容の一例を示す説明図である。図２５に示すように、リングバッファ管理テーブル２５００は、ＶＭＩＤと、Ｇｕｅｓｔ  Ａｄｄｒと、Ｈｏｓｔ  Ａｄｄｒと、リングバッファサイズと、割り込み状態とのフィールドを有する。リングバッファ管理テーブル２５００は、ＶＭごとに各フィールドに情報を設定することにより、リングバッファ管理情報がレコードとして記憶される。
【０２０２】
ＶＭＩＤのフィールドには、ゲストＯＳとなるＶＭを一意に識別する情報であるＶＭＩＤが設定される。Ｇｕｅｓｔ  Ａｄｄｒのフィールドには、ゲストＯＳとなるＶＭがリングバッファを識別するためのアドレスであるＧｕｅｓｔ  Ａｄｄｒが設定される。Ｇｕｅｓｔ  Ａｄｄｒのフィールドには、パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にある場合には、それぞれのリングバッファに対応するＧｕｅｓｔ  Ａｄｄｒが設定されてもよい。
【０２０３】
Ｈｏｓｔ  Ａｄｄｒのフィールドには、ホストＯＳがリングバッファを識別するためのアドレスであるＨｏｓｔ  Ａｄｄｒが設定される。Ｈｏｓｔ  Ａｄｄｒのフィールドには、パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にある場合には、それぞれのリングバッファに対応するＨｏｓｔ  Ａｄｄｒが設定されてもよい。
【０２０４】
リングバッファサイズのフィールドには、ゲストＯＳとなるＶＭについてのリングバッファのサイズが設定される。リングバッファサイズのフィールドには、パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にある場合には、それぞれのリングバッファのサイズが設定されてもよい。割り込み状態のフィールドには、ゲストＯＳとなるＶＭについてのパケットの入出力に対して割り込みを行う状態であるか否かを示すフラグが設定される。割り込み状態は、例えば、割り込みを行う状態であれば「オン（ＯＮ）」であり、割り込みを行わない状態であれば「オフ（ＯＦＦ）」である。
【０２０５】
リングバッファ管理テーブル２５００は、ミラーパケット制御装置１００によって生成され更新される。ミラーパケット制御装置１００は、リングバッファ管理テーブル２５００を用いることにより、ＶＭに対応するリングバッファを管理することができる。そして、ミラーパケット制御装置１００は、リングバッファ管理テーブル２５００を参照して、リングバッファへの書き込みがあったときに割り込みを発生させるようにハイパーバイザに設定することができる。
【０２０６】
（ミラーパケットバッファ２６００の記憶内容）
次に、図２６を用いて、ミラーパケットバッファ２６００の記憶内容の一例について説明する。ミラーパケットバッファ２６００は、例えば、図３に示したミラーパケット制御装置１００のメモリ３０２や記録媒体３０５の記憶領域により実現される。
【０２０７】
図２６は、ミラーパケットバッファ２６００の記憶内容の一例を示す説明図である。図２６に示すように、ミラーパケットバッファ２６００は、連番と、ＶＭＩＤと、方向と、ａｄｄｒと、パケットサイズと、パケットと、送信受信通知とのフィールドを有する。ミラーパケットバッファ２６００は、パケットごとに各フィールドに情報を設定することにより、ミラーパケット制御情報がレコードとして記憶される。
【０２０８】
連番のフィールドには、レコードの番号である連番が設定される。ＶＭＩＤのフィールドには、ＶＭを一意に識別する情報であるＶＭＩＤが設定される。方向のフィールドには、ＶＭに対するパケットの通信方向が設定される。方向は、例えば、ＶＭにパケットを受信させる場合には「受信」であり、ＶＭからパケットが送信される場合には「送信」である。ａｄｄｒのフィールドには、パケットの宛先が設定される。パケットサイズのフィールドには、パケットのサイズが設定される。パケットのフィールドには、パケットの本体が設定される。送信受信通知のフィールドには、パケットの送信を要求する出力通知またはパケットの受信を要求する入力通知が設定される。
【０２０９】
ミラーパケットバッファ２６００は、ミラーパケット制御装置１００によって生成される。ミラーパケット制御装置１００は、モニタＶＭ９０２の停止中に、リングバッファからミラーパケットバッファ２６００にパケットを退避することができ、停止中のモニタＶＭ９０２にミラーパケットが送信されないようにすることができる。ミラーパケット制御装置１００は、具体的には、リングバッファにパケットを再び登録する際に用いられる情報を、ミラーパケットバッファ２６００に蓄積することができる。
【０２１０】
図２７〜図３１は、ポートミラーリングシステム２００の動作例３を示す説明図である。図２７に示すように、ポートミラーリングシステム２００のモジュール構成例に、新しいモジュールが追加される。図２７において、図９と同様のモジュールには、図９と同様の符号を付して説明を省略する。
【０２１１】
図２７の例では、管理装置２０１のポートミラーマネージャ９１５は、さらに、ポートミラー構成部２７１１と、ＶＭ状態管理部２７１２とを含む。ポートミラー構成部２７１１は、ターゲットＶＭ９０１について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタＶＭ９０２に送信するかを設定し、ポートミラーリングを管理する。ＶＭ状態管理部２７１２は、それぞれのミラーパケット制御装置１００におけるＶＭが停止状態であるか否かを監視し、それぞれのミラーパケット制御装置１００におけるＶＭの状態を管理する。
【０２１２】
ミラーパケット制御装置１００−ｉのホストＯＳ９２２−ｉは、バックエンドドライバ２７３５を含む。バックエンドドライバ２７３５は、ハイパーバイザ９２１−ｉが有する記憶領域にある入力リングバッファ２７３１と、出力リングバッファ２７３２と、パケットバッファ２７３３とに対するアクセスを制御する。入力リングバッファ２７３１は、ターゲットＶＭ９０１へ入力されるパケットについての入力通知を記憶する際に用いられる。出力リングバッファ２７３２は、ターゲットＶＭ９０１から出力されるパケットについての出力通知を記憶する際に用いられる。パケットバッファ２７３３は、ターゲットＶＭ９０１に入力または出力されるパケットを記憶する際に用いられる。
【０２１３】
ミラーパケット制御装置１００−ｉのホストＯＳ９２２−ｉは、バックエンドドライバ２７４５を含む。バックエンドドライバ２７４５は、ハイパーバイザ９２１−ｉが有する記憶領域にある入力リングバッファ２７４１と、出力リングバッファ２７４２と、パケットバッファ２７４３とに対するアクセスを制御する。入力リングバッファ２７４１は、モニタＶＭ９０２へ入力されるパケットについての入力通知を記憶する際に用いられる。出力リングバッファ２７４２は、モニタＶＭ９０２から出力されるパケットについての出力通知を記憶する際に用いられる。パケットバッファ２７４３は、モニタＶＭ９０２に入力または出力されるパケットを記憶する際に用いられる。
【０２１４】
ターゲットＶＭ９０１は、ハイパーバイザ９２１−ｉが有する記憶領域にある入力リングバッファ２７３１と、出力リングバッファ２７３２と、パケットバッファ２７３３とに対するアクセスを制御するフロントエンドドライバ２７３４を含む。モニタＶＭ９０２は、ハイパーバイザ９２１−ｉが有する記憶領域にある入力リングバッファ２７４１と、出力リングバッファ２７４２と、パケットバッファ２７４３とに対するアクセスを制御するフロントエンドドライバ２７４４を含む。
【０２１５】
仮想スイッチ９２３−ｉは、さらに、ミラーパケット生成部２７２１と、割り込み設定部２７２２と、割り込み解除部２７２３と、割り込みハンドラ２７２４と、パケット処理部２７２５とを含む。仮想スイッチ９２３−ｉは、さらに、リングバッファ管理テーブル２５００と、ミラーパケットバッファ２６００とを有する。
【０２１６】
ミラーパケット生成部２７２１は、バックエンドドライバ２７３５のパケットバッファ２７３３にパケットが書き込まれていれば、パケットを複製したミラーパケットをモニタＶＭ９０２へのポートに出力する。また、ミラーパケット生成部２７２１は、パケットを通常の宛先へのポートに出力する。ミラーパケット生成部２７２１は、具体的には、図３８に後述するミラーリング処理を実行する。
【０２１７】
割り込み設定部２７２２は、入力リングバッファ２７３１または出力リングバッファ２７３２への書き込みがあったときに割り込みを発生させるようにする。割り込み設定部２７２２は、例えば、入力リングバッファ２７３１または出力リングバッファ２７３２への書き込みがあったときに割り込みを発生させるように、ハイパーバイザ９２１−ｉに設定要求を送信する。割り込み設定部２７２２は、具体的には、図３４に後述する割り込み設定処理を実行する。
【０２１８】
割り込み解除部２７２３は、入力リングバッファ２７３１または出力リングバッファ２７３２への書き込みがあっても割り込みを発生させないようにする。割り込み解除部２７２３は、例えば、入力リングバッファ２７３１または出力リングバッファ２７３２への書き込みがあっても割り込みを発生させないように、ハイパーバイザ９２１−ｉに解除要求を送信する。割り込み解除部２７２３は、具体的には、図３５に後述する割り込み解除処理を実行する。
【０２１９】
割り込みハンドラ２７２４は、割り込みが発生した際に、入力リングバッファ２７３１または出力リングバッファ２７３２に記憶された入力通知または出力通知とパケットバッファ２７３３に格納されたパケットとをミラーパケットバッファ２６００に退避させる。割り込みハンドラ２７２４は、具体的には、図３６に後述する割り込み処理を実行する。
【０２２０】
パケット処理部２７２５は、ミラーパケットバッファ２６００から、入力リングバッファ２７３１または出力リングバッファ２７３２に入力通知または出力通知を戻し、パケットバッファ２７３３にパケットを戻す。パケット処理部２７２５は、具体的には、図３７に後述するパケット処理を実行する。次に、図２８〜図３１の説明に移行する。
【０２２１】
図２８において、ポートミラーマネージャ９１５は、管理者９０３の操作入力によって、ライブマイグレーション指示を受け付けたとする。ポートミラーマネージャ９１５は、ライブマイグレーション指示を受け付けたため、モニタＶＭ９０２に対する、ミラーパケット制御装置１００−１からミラーパケット制御装置１００−ｎへのライブマイグレーションを開始したとする。
【０２２２】
（２８−１）割り込み設定部２７２２は、モニタＶＭ９０２がライブマイグレーションを開始したことを検出すると、モニタＶＭ９０２が停止状態になったと判定する。割り込み設定部２７２２は、モニタＶＭ９０２が停止状態になったと判定すると、割り込み状態をオンに設定し、ハイパーバイザ９２１−１に割り込みを発生させるように設定する。
【０２２３】
（２８−２）仮想スイッチ９２３−１は、バックエンドドライバ２７３５を介して、入力する対象となるパケットをパケットバッファ２７３３に格納し、パケットを格納した記憶領域を示すアドレスを含む入力通知を入力リングバッファ２７３１に格納する。ハイパーバイザ９２１−１は、入力リングバッファ２７３１に入力通知が格納されたため、割り込みを発生させる。
【０２２４】
（２８−３）割り込みハンドラ２７２４は、モニタＶＭ９０２が停止状態であり、割り込みが発生したため、入力リングバッファ２７３１に格納された入力通知を取り出し、入力リングバッファ２７３１からは入力通知を削除する。そして、割り込みハンドラ２７２４は、入力通知に含まれるアドレスに基づいて、パケットバッファ２７３３に格納されたパケットを取り出し、パケットバッファ２７３３からはパケットを削除する。割り込みハンドラ２７２４は、取り出した入力通知と、取り出したパケットを対応付けて、ミラーパケットバッファ２６００に蓄積する。
【０２２５】
これにより、仮想スイッチ９２３−１は、パケットバッファ２７３３に一旦登録されたパケットを、ターゲットＶＭ９０１が読み出してしまう前に、ミラーパケットバッファ２６００に移動し、パケットバッファ２７３３からは削除することができる。結果として、仮想スイッチ９２３−１は、ターゲットＶＭ９０１にパケットが入力されることを一旦停止し、ターゲットＶＭ９０１にパケットが入力されたことに応じてミラーパケットがモニタＶＭ９０２に送信されることを防止することができる。仮想スイッチ９２３−１は、ターゲットＶＭ９０１から応答が送信されることも防止することができ、パケットの送信元に応答待ちさせることにより、パケットの送信元からターゲットＶＭ９０１にパケットが送信されることを一定時間停止させることができる。ここで、図２９の説明に移行する。
【０２２６】
図２９において、（２９−１）ターゲットＶＭ９０１は、フロントエンドドライバ２７３４を介して、出力する対象となるパケットをパケットバッファ２７３３に格納する。そして、ターゲットＶＭ９０１は、フロントエンドドライバ２７３４を介して、パケットを格納した記憶領域を示すアドレスを含む出力通知を出力リングバッファ２７３２に格納する。ハイパーバイザ９２１−１は、出力リングバッファ２７３２に出力通知が格納されたため、割り込みを発生させる。
【０２２７】
（２９−２）仮想スイッチ９２３−１の割り込みハンドラ２７２４は、モニタＶＭ９０２が停止状態であり、割り込みが発生したため、出力リングバッファ２７３２に格納された出力通知を取り出し、出力リングバッファ２７３２からは出力通知を削除する。そして、仮想スイッチ９２３−１の割り込みハンドラ２７２４は、出力通知に含まれるアドレスに基づいて、パケットバッファ２７３３に格納されたパケットを取り出し、パケットバッファ２７３３からはパケットを削除する。仮想スイッチ９２３−１の割り込みハンドラ２７２４は、取り出した出力通知と、取り出したパケットを対応付けて、ミラーパケットバッファ２６００に蓄積する。
【０２２８】
これにより、仮想スイッチ９２３−１は、パケットバッファ２７３３に一旦登録されたパケットを、仮想スイッチ９２３−１で読み出して転送してしまう前に、ミラーパケットバッファ２６００に移動し、パケットバッファ２７３３からは削除することができる。結果として、仮想スイッチ９２３−１は、ターゲットＶＭ９０１からパケットが出力されることを一旦停止し、ターゲットＶＭ９０１からパケットが出力されたことに応じてミラーパケットがモニタＶＭ９０２に送信されることを防止することができる。ここで、図３０の説明に移行する。
【０２２９】
図３０において、モニタＶＭ９０２は、ライブマイグレーションを完了し、停止状態が解除されたとする。（３０−１）割り込み解除部２７２３は、モニタＶＭ９０２のライブマイグレーションが完了したことを検出すると、モニタＶＭ９０２の停止状態が解除されたと判定する。割り込み解除部２７２３は、モニタＶＭ９０２の停止状態が解除されたと判定すると、割り込み状態をオフに設定し、ハイパーバイザ９２１−１に割り込みを発生させないように設定する。
【０２３０】
（３０−２）パケット処理部２７２５は、バックエンドドライバ２７３５を介して、ミラーパケットバッファ２６００に蓄積した入力通知を取り出して入力リングバッファ２７３１に戻す。そして、パケット処理部２７２５は、バックエンドドライバ２７３５を介して、ミラーパケットバッファ２６００に蓄積した入力通知に対応するパケットをパケットバッファ２７３３に戻す。
【０２３１】
また、パケット処理部２７２５は、バックエンドドライバ２７３５を介して、ミラーパケットバッファ２６００に蓄積した出力通知を取り出して出力リングバッファ２７３２に戻す。そして、パケット処理部２７２５は、バックエンドドライバ２７３５を介して、ミラーパケットバッファ２６００に蓄積した出力通知に対応するパケットをパケットバッファ２７３３に戻す。
【０２３２】
これにより、仮想スイッチ９２３−１は、入力リングバッファ２７３１への入力通知の登録、および、出力リングバッファ２７３２への出力通知の登録を再開することができ、ターゲットＶＭ９０１に対するパケットの入出力を再開することができる。ここで、図３１の説明に移行する。
【０２３３】
図３１において、（３１−１）ミラーパケット生成部２７２１は、ターゲットＶＭ９０１についてのパケットの入出力が行われたことに応じて、入出力が行われたパケットを複製したミラーパケットを生成する。そして、ミラーパケット生成部２７２１は、生成したミラーパケットを、ホストＯＳ９２２−ｎに移動され、ホストＯＳ９２２−ｎで実行中であり、停止状態が解除されたモニタＶＭ９０２に送信する。
【０２３４】
ミラーパケット生成部２７２１は、具体的には、ターゲットＶＭ９０１についてのパケットの入出力が行われたことに応じて、名称ｅｔｈ０が付与された、ミラーパケット制御装置１００−ｎに通じるポート３１０１にミラーパケットを出力する。一方で、ミラーパケット制御装置１００−ｎの仮想スイッチ９２３−ｎは、名称ｅｔｈ０が付与された、ミラーパケット制御装置１００−１に通じるポート３１０２からミラーパケットを入力される。
【０２３５】
ミラーパケット制御装置１００−ｎの仮想スイッチ９２３−ｎは、名称ｖｉｆ２．０が付与された、ホストＯＳ９２２−ｎに移動されて実行中であり、停止状態が解除されたモニタＶＭ９０２に通じるポート３１０３から、ミラーパケットを出力する。これにより、仮想スイッチ９２３−１は、ポートミラーリングを再開することができる。
【０２３６】
（動作例３における全体処理手順）
次に、図３２を用いて、動作例３における全体処理手順の一例について説明する。
【０２３７】
図３２は、動作例３における全体処理手順の一例を示すフローチャートである。図３２において、ミラーパケット制御装置１００は、モニタＶＭ９０２のライブマイグレーションにより、モニタＶＭ９０２がサスペンドしたことを検出する（ステップＳ３２０１）。
【０２３８】
次に、ミラーパケット制御装置１００は、退避バッファを用いてミラーパケットの送信を停止する（ステップＳ３２０２）。そして、ミラーパケット制御装置１００は、ライブマイグレーションの完了に応じて、動作例１や動作例２と同様に、ミラーパケット用経路管理テーブル５００を更新する（ステップＳ３２０３）。
【０２３９】
次に、ミラーパケット制御装置１００は、ミラーパケットの送信を再開する（ステップＳ３２０４）。そして、ミラーパケット制御装置１００は、全体処理を終了する。これにより、ミラーパケット制御装置１００は、ライブマイグレーションの実施中、ライブマイグレーションの実施後のいずれにおいても、ミラーパケットが失われる確率を低減することができる。ここで、ステップＳ３２０１，Ｓ３２０２，Ｓ３２０４の処理は、具体的には、図３３〜図３８に後述する各種処理によって実現される。
【０２４０】
（状態管理処理手順の一例）
次に、図３３を用いて、管理装置２０１のＶＭ状態管理部２７１２が実行する、動作例３における状態管理処理手順の一例について説明する。
【０２４１】
図３３は、動作例３における状態管理処理手順の一例を示すフローチャートである。図３３において、ＶＭ状態管理部２７１２は、仮想基盤から、モニタＶＭ９０２の状態を示す通知を受信する（ステップＳ３３０１）。次に、ＶＭ状態管理部２７１２は、受信した通知に基づいて、ＶＭ状態管理テーブル２４００を参照して、モニタＶＭ９０２の状態の変化を検出する（ステップＳ３３０２）。
【０２４２】
そして、ＶＭ状態管理部２７１２は、モニタＶＭ９０２の状態がサスペンドになったか否かを判定する（ステップＳ３３０３）。ここで、サスペンドになった場合（ステップＳ３３０３：Ｙｅｓ）、ＶＭ状態管理部２７１２は、ステップＳ３３０４の処理に移行する。ステップＳ３３０４にて、ＶＭ状態管理部２７１２は、サスペンドになったモニタＶＭ９０２のＶＭＩＤを割り込み設定部２７２２に出力し、割り込み設定部２７２２に図３４に後述する割り込み設定処理を実行させる（ステップＳ３３０４）。そして、ＶＭ状態管理部２７１２は、ステップＳ３３０６の処理に移行する。
【０２４３】
一方で、サスペンドではなくなった場合（ステップＳ３３０３：Ｎｏ）、ＶＭ状態管理部２７１２は、ステップＳ３３０５の処理に移行する。ステップＳ３３０５にて、ＶＭ状態管理部２７１２は、サスペンドではなくなったモニタＶＭ９０２のＶＭＩＤを割り込み解除部２７２３に出力し、割り込み解除部２７２３に図３５に後述する割り込み解除処理を実行させる（ステップＳ３３０５）。そして、ＶＭ状態管理部２７１２は、ステップＳ３３０６の処理に移行する。
【０２４４】
ステップＳ３３０６にて、ＶＭ状態管理部２７１２は、ＶＭ状態管理テーブル２４００を更新し（ステップＳ３３０６）、状態管理処理を終了する。これにより、ＶＭ状態管理部２７１２は、ミラーパケット制御装置１００におけるモニタＶＭ９０２の状態を管理することができる。
【０２４５】
（割り込み設定処理手順の一例）
次に、図３４を用いて、ミラーパケット制御装置１００の割り込み設定部２７２２が実行する、動作例３における割り込み設定処理手順の一例について説明する。
【０２４６】
図３４は、動作例３における割り込み設定処理手順の一例を示すフローチャートである。図３４において、割り込み設定部２７２２は、サスペンドになったモニタＶＭ９０２のＶＭＩＤの入力を受け付ける（ステップＳ３４０１）。次に、割り込み設定部２７２２は、リングバッファ管理テーブル２５００を参照して、入力リングバッファ２７３１および出力リングバッファ２７３２のＨｏｓｔ  Ａｄｄｒとサイズを取得する（ステップＳ３４０２）。そして、割り込み設定部２７２２は、入力リングバッファ２７３１または出力リングバッファ２７３２への書き込みがあったときに割り込みを発生させるように、ハイパーバイザ９２１−ｉに設定要求を送信する（ステップＳ３４０３）。
【０２４７】
次に、割り込み設定部２７２２は、リングバッファ管理テーブル２５００の割り込み状態のフィールドをオンに設定する（ステップＳ３４０４）。そして、割り込み設定部２７２２は、割り込み設定処理を終了する。これにより、割り込み設定部２７２２は、パケットバッファ２７３３に一旦登録されたパケットを、ターゲットＶＭ９０１が読み出してしまう前に、または、仮想スイッチ９２３−ｉで読み出して転送してしまう前に、割り込みを発生させるようにすることができる。
【０２４８】
（割り込み解除処理手順の一例）
次に、図３５を用いて、ミラーパケット制御装置１００の割り込み解除部２７２３が実行する、動作例３における割り込み解除処理手順の一例について説明する。
【０２４９】
図３５は、動作例３における割り込み解除処理手順の一例を示すフローチャートである。図３５において、割り込み解除部２７２３は、サスペンドではなくなったモニタＶＭ９０２のＶＭＩＤの入力を受け付ける（ステップＳ３５０１）。次に、割り込み解除部２７２３は、リングバッファ管理テーブル２５００を参照して、入力リングバッファ２７３１および出力リングバッファ２７３２のＨｏｓｔ  Ａｄｄｒとサイズを取得する（ステップＳ３５０２）。そして、割り込み解除部２７２３は、入力リングバッファ２７３１または出力リングバッファ２７３２への書き込みがあっても割り込みを発生させないように、ハイパーバイザ９２１−ｉに解除要求を送信する（ステップＳ３５０３）。
【０２５０】
次に、割り込み解除部２７２３は、リングバッファ管理テーブル２５００の割り込み状態のフィールドをオフに設定する（ステップＳ３５０４）。そして、割り込み解除部２７２３は、割り込み解除処理を終了する。これにより、割り込み解除部２７２３は、割り込みを発生させないようにして、仮想スイッチ９２３−ｉの性能低下を抑制することができる。
【０２５１】
（割り込み処理手順の一例）
次に、図３６を用いて、ミラーパケット制御装置１００の割り込みハンドラ２７２４が実行する、動作例３における割り込み処理手順の一例について説明する。
【０２５２】
図３６は、動作例３における割り込み処理手順の一例を示すフローチャートである。図３６において、割り込みハンドラ２７２４は、割り込みが発生したことを検出する（ステップＳ３６０１）。次に、割り込みハンドラ２７２４は、入力リングバッファ２７３１または出力リングバッファ２７３２から入力通知または出力通知を読み出す（ステップＳ３６０２）。そして、割り込みハンドラ２７２４は、読み出した入力通知または出力通知からパケットのアドレスとサイズを読み出して、パケットバッファ２７３３に格納されたパケットを読み出す（ステップＳ３６０３）。
【０２５３】
次に、割り込みハンドラ２７２４は、読み出したパケットについてのレコードを、ミラーパケットバッファ２６００に追加する（ステップＳ３６０４）。そして、割り込みハンドラ２７２４は、追加したレコードに、読み出した入力通知または出力通知と、読み出したパケットとを設定する（ステップＳ３６０５）。その後、割り込みハンドラ２７２４は、割り込み処理を終了する。これにより、割り込みハンドラ２７２４は、モニタＶＭ９０２が停止状態である間、ターゲットＶＭ９０１についてパケットの入出力が行われることを防止することができ、モニタＶＭ９０２にミラーパケットが送信されることを防止することができる。
【０２５４】
（パケット処理手順の一例）
次に、図３７を用いて、ミラーパケット制御装置１００のパケット処理部２７２５が実行する、動作例３におけるパケット処理手順の一例について説明する。
【０２５５】
図３７は、動作例３におけるパケット処理手順の一例を示すフローチャートである。図３７において、パケット処理部２７２５は、リングバッファ管理テーブル２５００の割り込み状態のフィールドがオンであるか否かを判定する（ステップＳ３７０１）。ここで、オンである場合（ステップＳ３７０１：Ｙｅｓ）、パケット処理部２７２５は、ステップＳ３７０１の処理に戻る。
【０２５６】
一方で、オンではない場合（ステップＳ３７０１：Ｎｏ）、パケット処理部２７２５は、ミラーパケットバッファ２６００にレコードがあるか否かを判定する（ステップＳ３７０２）。ここで、レコードがない場合（ステップＳ３７０２：Ｎｏ）、パケット処理部２７２５は、パケット処理を終了する。
【０２５７】
一方で、レコードがある場合（ステップＳ３７０２：Ｙｅｓ）、パケット処理部２７２５は、ミラーパケットバッファ２６００から、まだ読み出していないレコードを読み出す（ステップＳ３７０３）。このとき、パケット処理部２７２５は、ミラーパケットバッファ２６００の連番のフィールドを参照して、ミラーパケットバッファ２６００に格納された順番に、レコードを読み出してもよい。
【０２５８】
次に、パケット処理部２７２５は、読み出したレコードのパケットバッファ２７３３のアドレスに基づいて、パケットバッファ２７３３にパケットを書き込む（ステップＳ３７０４）。そして、パケット処理部２７２５は、パケットが送信対象であるか否かを判定する（ステップＳ３７０５）。ここで、送信対象である場合（ステップＳ３７０５：Ｙｅｓ）、パケット処理部２７２５は、出力リングバッファ２７３２に出力通知を書き込み（ステップＳ３７０６）、ステップＳ３７０８の処理に移行する。
【０２５９】
一方で、送信対象ではない場合（ステップＳ３７０５：Ｎｏ）、パケット処理部２７２５は、入力リングバッファ２７３１に入力通知を書き込み（ステップＳ３７０７）、ステップＳ３７０８の処理に移行する。ステップＳ３７０８にて、パケット処理部２７２５は、ミラーパケットバッファ２６００に、まだ読み出していないレコードがあるか否かを判定する（ステップＳ３７０８）。
【０２６０】
ここで、まだ読み出していないレコードがある場合（ステップＳ３７０８：Ｙｅｓ）、パケット処理部２７２５は、ステップＳ３７０２の処理に戻る。一方で、読み出していないレコードがない場合（ステップＳ３７０８：Ｎｏ）、パケット処理部２７２５は、パケット処理を終了する。これにより、パケット処理部２７２５は、ターゲットＶＭ９０１に対するパケットの入出力を再開させ、ターゲットＶＭ９０１に対するパケットの入出力が再開したことに応じてモニタＶＭ９０２へのミラーパケットの送信も再開させることができる。
【０２６１】
（ミラーリング処理手順の一例）
次に、図３８を用いて、ミラーパケット制御装置１００のミラーパケット生成部２７２１が実行する、動作例３におけるミラーリング処理手順の一例について説明する。
【０２６２】
図３８は、動作例３におけるミラーリング処理手順の一例を示すフローチャートである。図３８において、ミラーパケット生成部２７２１は、パケットバッファ２７３３にパケットが書き込まれているか否かを判定する（ステップＳ３８０１）。ここで、書き込まれていない場合（ステップＳ３８０１：Ｎｏ）、ミラーパケット生成部２７２１は、ステップＳ３８０１の処理に戻る。
【０２６３】
一方で、書き込まれている場合（ステップＳ３８０１：Ｙｅｓ）、ミラーパケット生成部２７２１は、入力リングバッファ２７３１または出力リングバッファ２７３２に入力通知または出力通知が書き込まれているか否かを判定する（ステップＳ３８０２）。ここで、書き込まれていない場合（ステップＳ３８０２：Ｎｏ）、ミラーパケット生成部２７２１は、ステップＳ３８０７の処理に移行する。
【０２６４】
一方で、書き込まれている場合（ステップＳ３８０２：Ｙｅｓ）、ミラーパケット生成部２７２１は、パケットの通信方向と、キャプチャ設定された通信方向とが一致するか否かを判定する（ステップＳ３８０３）。ここで、一致しない場合（ステップＳ３８０３：Ｎｏ）、ミラーパケット生成部２７２１は、ステップＳ３８０６の処理に移行する。
【０２６５】
一方で、一致する場合（ステップＳ３８０３：Ｙｅｓ）、ミラーパケット生成部２７２１は、パケットを複製したミラーパケットを生成する（ステップＳ３８０４）。次に、ミラーパケット生成部２７２１は、生成したミラーパケットを、モニタＶＭ９０２へのポートに出力する（ステップＳ３８０５）。そして、ミラーパケット生成部２７２１は、パケットを通常の宛先へのポートに出力する（ステップＳ３８０６）。
【０２６６】
次に、ミラーパケット生成部２７２１は、パケットバッファ２７３３にパケットが残っているか否かを判定する（ステップＳ３８０７）。ここで、残っている場合（ステップＳ３８０７：Ｙｅｓ）、ミラーパケット生成部２７２１は、ステップＳ３８０１の処理に戻る。
【０２６７】
一方で、残っていない場合（ステップＳ３８０７：Ｎｏ）、ミラーパケット生成部２７２１は、ミラーリング処理を終了する。これにより、ミラーパケット生成部２７２１は、ターゲットＶＭ９０１についてパケットバッファ２７３３に格納されたパケットの入出力を行うことができる。また、ミラーパケット生成部２７２１は、パケットバッファ２７３３に格納されたパケットを複製したミラーパケットを、モニタＶＭ９０２に送信することができる。
【０２６８】
以上説明したように、ミラーパケット制御装置１００によれば、モニタＶＭ９０２の移動完了の通知を検出したことに応じて、第１対応情報を参照し、自装置へ移動完了したモニタＶＭ９０２にミラーパケットを送信する送信元を特定することができる。ミラーパケット制御装置１００によれば、特定した送信元が有する第２対応情報の削除指示を、送信元に送信することができる。これにより、ミラーパケット制御装置１００は、モニタＶＭ９０２に通じるポートを正しく特定することができない状態である可能性がある送信元に、第２対応情報を削除させ、第２対応情報を生成し直すように仕向けることができる。このため、ミラーパケット制御装置１００は、送信元において、移動前のモニタＶＭ９０２に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
【０２６９】
ミラーパケット制御装置１００によれば、自装置が有する第２対応情報の削除指示を受け付けたことに応じて、第２対応情報を削除することができる。ミラーパケット制御装置１００によれば、自装置からモニタＶＭ９０２にミラーパケットを送信する際、第２対応情報がない場合、自装置から複数のポートのそれぞれのポートを通じてミラーパケットを送信することができる。ミラーパケット制御装置１００によれば、送信したミラーパケットに対する応答に基づいて第２対応情報を更新することができる。これにより、ミラーパケット制御装置１００は、自装置が有する第２対応情報を生成し直し、モニタＶＭ９０２に通じるポートを正しく特定することができるようにすることができ、ミラーパケットが失われる確率を低減することができる。
【０２７０】
ミラーパケット制御装置１００によれば、自装置からモニタＶＭ９０２にミラーパケットを送信する際、第２対応情報を参照し、自装置からモニタＶＭ９０２へのポートを通じてミラーパケットを送信することができる。これにより、ミラーパケット制御装置１００は、ミラーパケットが失われずに、モニタＶＭ９０２に受信されるようにすることができる。
【０２７１】
ミラーパケット制御装置１００によれば、自装置の仮想スイッチに接続されたモニタＶＭ９０２の停止状態を検出することができる。ミラーパケット制御装置１００によれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットＶＭ９０１についての入出力の対象となるパケットについては入出力バッファとは異なる退避バッファに蓄積することができる。ミラーパケット制御装置１００によれば、停止状態が解除されると、退避バッファに蓄積したパケットを、入出力バッファに登録することができる。これにより、ミラーパケット制御装置１００は、ライブマイグレーションの実施中、ライブマイグレーションの実施後のいずれにおいても、ミラーパケットが失われる確率を低減することができる。
【０２７２】
ミラーパケット制御装置１００によれば、自装置に移動完了したモニタＶＭ９０２の識別情報を含む、第２対応情報のうち、送信元から自装置に移動完了したモニタＶＭ９０２へのポートの識別情報についての削除指示を送信することができる。これにより、ミラーパケット制御装置１００は、送信元において第２対応情報を更新する際にかかる処理量の低減化を図ることができる。
【０２７３】
ミラーパケット制御装置１００によれば、ＧＡＲＰパケットを受信することができる。これにより、ミラーパケット制御装置１００は、仮想基盤に新たな機能を追加しなくても、他装置から自装置へのモニタＶＭ９０２の移動完了の通知を検出することができる。
【０２７４】
なお、本実施の形態で説明したミラーパケット制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したミラーパケット制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したミラーパケット制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２７５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２７６】
（付記１）コンピュータに、
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信する、
処理を実行させることを特徴とするミラーパケット制御プログラム。
【０２７７】
（付記２）前記コンピュータに、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す第３対応情報の削除指示を受け付けたことに応じて、前記第３対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記第３対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記第３対応情報を更新する、
処理を実行させることを特徴とする付記１に記載のミラーパケット制御プログラム。
【０２７８】
（付記３）前記コンピュータに、
自装置から仮想マシンにミラーパケットを送信する際、前記第３対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がある場合、自装置から当該仮想マシンへのポートを通じて当該ミラーパケットを送信する、
処理を実行させることを特徴とする付記２に記載のミラーパケット制御プログラム。
【０２７９】
（付記４）前記コンピュータに、
自装置の仮想スイッチに接続された第１仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第２仮想マシンの停止状態を検出し、
前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第１仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
処理を実行させることを特徴とする付記２または３に記載のミラーパケット制御プログラム。
【０２８０】
（付記５）前記削除指示は、自装置に移動完了した前記仮想マシンの識別情報を含み、前記第２対応情報のうち、前記送信元から自装置に移動完了した前記仮想マシンへのポートの識別情報についての削除指示である、ことを特徴とする付記１〜４のいずれか一つに記載のミラーパケット制御プログラム。
【０２８１】
（付記６）前記通知は、ＧＡＲＰ（Ｇｒａｔｕｉｔｏｕｓ  Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）パケットである、ことを特徴とする付記１〜５のいずれか一つに記載のミラーパケット制御プログラム。
【０２８２】
（付記７）コンピュータが、
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信する、
処理を実行することを特徴とするミラーパケット制御方法。
【０２８３】
（付記８）他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第１対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第２対応情報の削除指示を、前記送信元に送信する、
制御部を有することを特徴とするミラーパケット制御装置。
【０２８４】
（付記９）コンピュータに、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す対応情報の削除指示を受け付けたことに応じて、前記対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記対応情報を更新する、
処理を実行させることを特徴とするミラーパケット制御プログラム。
【０２８５】
（付記１０）コンピュータが、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す対応情報の削除指示を受け付けたことに応じて、前記対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記対応情報を更新する、
処理を実行することを特徴とするミラーパケット制御方法。
【０２８６】
（付記１１）自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す対応情報の削除指示を受け付けたことに応じて、前記対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記対応情報を更新する、
制御部を有することを特徴とするミラーパケット制御装置。
【符号の説明】
【０２８７】
１００  ミラーパケット制御装置
１０１，９０１  ターゲットＶＭ
１０２，９０２  モニタＶＭ
１１０  第１サーバ
１２０  第２サーバ
２００  ポートミラーリングシステム
２０１  管理装置
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  ネットワークＩ／Ｆ
３０４  記録媒体Ｉ／Ｆ
３０５  記録媒体
３１０  ネットワーク
４００  トンネルポート管理テーブル
５００  ミラーパケット用経路管理テーブル
６００  ミラーポート管理テーブル
７００  モニタ管理テーブル
８００  記憶部
８０１  取得部
８０２  第１検出部
８０３  特定部
８０４  第１送信部
８０５  更新部
８０６  第２送信部
８０７  第２検出部
８０８  退避部
８０９  登録部
８１０  出力部
９０３  管理者
９１０，９２０  ハードウェア
９１１，９２１  ハイパーバイザ
９１２  ＯＳ
９１３  仮想マネージャ
９１４  モニタ管理テーブル作成部
９１５  ポートミラーマネージャ
９２２  ホストＯＳ
９２３  仮想スイッチ
９２４  ミラーパケット用経路学習部
９２５  ライブマイグレーション完了検出部
９２６  再学習通知パケット送信部
９２７  経路管理テーブルフラッシュ部
１０００  ＧＡＲＰパケット
１２００，２１００  再学習通知パケット
２４００  ＶＭ状態管理テーブル
２５００  リングバッファ管理テーブル
２６００  ミラーパケットバッファ
２７１１  ポートミラー構成部
２７１２  ＶＭ状態管理部
２７２１  ミラーパケット生成部
２７２２  割り込み設定部
２７２３  割り込み解除部
２７２４  割り込みハンドラ
２７２５  パケット処理部
２７３１，２７４１  入力リングバッファ
２７３２，２７４２  出力リングバッファ
２７３３，２７４３  パケットバッファ
２７３４，２７４４  フロントエンドドライバ
２７３５，２７４５  バックエンドドライバ
３１０１〜３１０３  ポート
【図１】
2019075691.tif 000003
【図２】
2019075691.tif 000004
【図３】
2019075691.tif 000005
【図４】
2019075691.tif 000006
【図５】
2019075691.tif 000007
【図６】
2019075691.tif 000008
【図７】
2019075691.tif 000009
【図８】
2019075691.tif 000010
【図９】
2019075691.tif 000011
【図１０】
2019075691.tif 000012
【図１１】
2019075691.tif 000013
【図１２】
2019075691.tif 000014
【図１３】
2019075691.tif 000015
【図１４】
2019075691.tif 000016
【図１５】
2019075691.tif 000017
【図１６】
2019075691.tif 000018
【図１７】
2019075691.tif 000019
【図１８】
2019075691.tif 000020
【図１９】
2019075691.tif 000021
【図２０】
2019075691.tif 000022
【図２１】
2019075691.tif 000023
【図２２】
2019075691.tif 000024
【図２３】
2019075691.tif 000025
【図２４】
2019075691.tif 000026
【図２５】
2019075691.tif 000027
【図２６】
2019075691.tif 000028
【図２７】
2019075691.tif 000029
【図２８】
2019075691.tif 000030
【図２９】
2019075691.tif 000031
【図３０】
2019075691.tif 000032
【図３１】
2019075691.tif 000033
【図３２】
2019075691.tif 000034
【図３３】
2019075691.tif 000035
【図３４】
2019075691.tif 000036
【図３５】
2019075691.tif 000037
【図３６】
2019075691.tif 000038
【図３７】
2019075691.tif 000039
【図３８】
2019075691.tif 000040