以下に、図面を参照して、本発明にかかるミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置の実施の形態を詳細に説明する。
(実施の形態にかかるミラーパケット制御方法の一実施例)
図1は、実施の形態にかかるミラーパケット制御方法の一実施例を示す説明図である。図1において、ミラーパケット制御装置100は、VM(Virtual Machine)を動作させるコンピュータである。
ミラーパケット制御装置100で動作するVMは、例えば、ポートミラーリングにより、第1VMからミラーパケットを送信される第2VMである。以下の説明では、第1VMを「ターゲットVM」と表記する場合がある。また、以下の説明では、第2VMを「モニタVM」と表記する場合がある。
ここで、ポートミラーリングは、例えば、ターゲットVMを動作させるコンピュータが有する仮想スイッチにより実現される。例えば、仮想スイッチは、仮想スイッチからターゲットVMへのポートを通じて送受信されるパケットを複製したミラーパケットを、仮想スイッチからモニタVMへのポートを通じて転送する。
しかしながら、モニタVMがライブマイグレーションを行った場合、モニタVMがミラーパケットを受信することができなくなることがある。ライブマイグレーションは、VMをコンピュータ間で移動させるマイグレーションの1種である。ライブマイグレーションは、VMを移動する際、VMが停止する時間の低減化を図る。
例えば、モニタVMがライブマイグレーションを行った場合、仮想スイッチは、モニタVMが移動したことを検出することができない。このため、仮想スイッチは、モニタVMが移動した後も、移動前のモニタVMに通じるポートからミラーパケットを送信してしまい、ミラーパケットは、モニタVMが受信することができずに失われてしまう。また、モニタVMは、ミラーパケットが生成されたことを検出することができず、ミラーパケットについて再送要求することも困難である。
これに対し、仮想スイッチが、一定時間ごとに、モニタVMを動作させているコンピュータを調査し、ミラーパケットを送信するポートを更新する場合が考えられる。例えば、仮想スイッチが、一定時間ごとに、モニタVMへのミラーパケットをすべてのポートから送信し、ミラーパケットに対する応答を受信したポートを、モニタVMに通じるポートとして記憶する。
しかしながら、この場合であっても、モニタVMがミラーパケットを受信することができなくなることがある。例えば、モニタVMが移動してから、モニタVMを動作させているコンピュータを調査するまでの期間では、仮想スイッチは、移動前のモニタVMに通じるポートからミラーパケットを送信してしまう。また、モニタVMが移動しなくても、仮想スイッチが、一定時間ごとに、モニタVMを動作させているコンピュータを調査するため、処理負荷の増大化を招いてしまう。
このほか、仮想スイッチが、モニタVMがライブマイグレーションを行ったことに応じて、仮想基盤からL2ネットワークに流されるGARPパケットを検出した場合に、モニタVMが移動したことを検出するようにすることが考えられる。
しかしながら、GARPパケットは、仮想スイッチに、モニタVMを動作させているコンピュータを調査させるためのパケットではない。そして、モニタVMとターゲットVMとが同じL2ネットワークに属していなければ、仮想スイッチは、GARPパケットを検出することができない。このため、仮想スイッチは、モニタVMが移動した後も、移動前のモニタVMに通じるポートからミラーパケットを送信してしまうことがある。
そこで、本実施の形態では、自装置に移動してきたモニタVMにミラーパケットを送信する送信元を特定し、特定した送信元に登録されたモニタVMに通じるポートの情報を削除させるミラーパケット制御方法について説明する。これによれば、本実施の形態は、モニタVMにミラーパケットを送信する送信元が、モニタVMに通じるポートの情報を更新するように仕向けて、ミラーパケットが失われることを防止することができる。
図1(a)の例では、ミラーパケット制御装置100と第1サーバ110と第2サーバ120とは、通信可能に接続されている。ミラーパケット制御装置100は、モニタVM102の識別情報と、モニタVM102にミラーパケットを送信する送信元の識別情報とを対応付けて表す第1対応情報を有する。第1対応情報は、例えば、図7に後述するモニタ管理テーブル700である。ミラーパケット制御装置100において、ホストOS(Operating System)nが実行されている。ホストOSnは、仮想スイッチを有する。仮想スイッチは、例えば、OVS(Open vSwitch)nである。仮想スイッチは、OVSでなくてもよい。
また、第1サーバ110は、モニタVM102の識別情報と、自装置からモニタVM102に通じるポートの識別情報とを対応付けて表す第2対応情報を有する。第2対応情報は、例えば、図5に後述するミラーパケット用経路管理テーブル500である。第1サーバ110において、ホストOS1が実行されている。ホストOS1において、ターゲットVM101が実行されている。ホストOS1は、OVS1を有する。OVS1は、ターゲットVM101に対するパケットの送受信を制御する。
OVS1は、例えば、ターゲットVM101に対して送受信されるパケットを複製したミラーパケットを、すべてのポートに対して出力する。そして、OVS1は、ミラーパケットに対する応答に基づいて、モニタVM102に通じるポートを特定し、第2対応情報を生成する。その後、OVS1は、生成した第2対応情報を参照し、ターゲットVM101に対して送受信されるパケットを複製したミラーパケットを、モニタVM102に通じるポートに出力する。
また、第2サーバ120は、ホストOS2を実行する。ホストOS2において、モニタVM102が実行されている。ホストOS2は、OVS2を有する。OVS2は、モニタVM102に対するパケットの送受信を制御する。次に、図1(b)の説明に移行し、モニタVM102がライブマイグレーションにより第2サーバ120から移動された場合について説明する。
図1(b)の例では、モニタVM102が、ライブマイグレーションにより、第2サーバ120からミラーパケット制御装置100へ移動される。ここで、モニタVM102が移動した後、第2対応情報が更新されなければ、OVS1は、ターゲットVM101に対して送受信されるパケットを複製したミラーパケットを、第2サーバ120に通じるポートに出力してしまう可能性がある。このため、ミラーパケットは、モニタVM102に受信されずに失われてしまう。
そこで、ミラーパケット制御装置100において、OVSnは、他装置から自装置へのモニタVM102の移動完了の通知を検出したことに応じて、第1対応情報を参照し、自装置へ移動完了したモニタVM102にミラーパケットを送信する送信元を特定する。OVSnは、例えば、モニタVM102にミラーパケットを送信する送信元として第1サーバ110を特定する。
そして、OVSnは、特定した送信元が有する第2対応情報を削除させる削除指示を、特定した送信元に送信する。OVSnは、第2対応情報の削除指示を、特定した第1サーバ110に送信する。これにより、OVSnは、モニタVM102の移動前後で、ミラーパケットを出力するポートが変化した可能性があり、ミラーパケットが失われる原因になりうる第2対応情報を削除させることができる。
一方で、第1サーバ110において、OVS1は、第2対応情報の削除指示を受け付けたことに応じて、第2対応情報を削除する。次に、OVS1は、第2対応情報の削除後、モニタVM102にミラーパケットを送信する際、すべてのポートに対してミラーパケットを出力する。そして、OVS1は、ミラーパケットに対する応答に基づいて、モニタVM102に通じるポートを特定し、第2対応情報を生成し直す。
これにより、ミラーパケット制御装置100は、第1サーバ110が第2対応情報を生成し直すように仕向けることができる。このため、ミラーパケット制御装置100は、第1サーバ110のOVS1が、移動前のモニタVM102に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
ここでは、ミラーパケット制御装置100が、ミラーパケットを受信する場合について説明したが、これに限らない。例えば、ミラーパケット制御装置100が、ミラーパケットを送信する場合があってもよい。具体的には、ミラーパケット制御装置100が、第1サーバ110としても動作可能である場合があってもよい。
この場合、さらに、ミラーパケット制御装置100が、ミラーパケットを送信する際に、ミラーパケットを一旦退避させることが可能である場合があってもよい。ミラーパケットを一旦退避させることが可能である場合については、図27~図31を用いて動作例3に後述する。
モニタVM102が、ターゲットVM101になる場合があってもよい。例えば、ターゲットVM101に送受信されるパケットを複製したミラーパケットを受信するモニタVM102が、他のモニタVM102に対応するターゲットVM101となる場合があってもよい。
(ポートミラーリングシステム200の一例)
次に、図2を用いて、図1に示したミラーパケット制御装置100を適用した、ポートミラーリングシステム200の一例について説明する。
図2は、ポートミラーリングシステム200の一例を示す説明図である。図2において、ポートミラーリングシステム200は、複数のミラーパケット制御装置100と、管理装置201とを含む。
ポートミラーリングシステム200において、それぞれのミラーパケット制御装置100と、管理装置201とは、有線または無線のネットワークを介して接続される。ネットワークは、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。それぞれのミラーパケット制御装置100は、フルメッシュのオーバーレイネットワークを形成する。
ミラーパケット制御装置100は、図1に示したように、自装置に移動してきたモニタVM102にミラーパケットを送信する送信元を特定し、特定した送信元に登録されたモニタVM102に通じるポートの情報を削除させるコンピュータである。また、ミラーパケット制御装置100は、ターゲットVM101を実行し、ポートミラーリングを実現し、図1に示した第1サーバ110として動作可能であってもよい。また、ミラーパケット制御装置100は、移動前のモニタVM102を実行し、図1に示した第2サーバ120として動作可能であってもよい。
それぞれのミラーパケット制御装置100が有する仮想スイッチは、例えば、VLAN(Virtual Local Area Network)を介して接続される。以下の説明では、それぞれのミラーパケット制御装置100を区別する場合には「ミラーパケット制御装置100-i」と表記する場合がある。iは、1~nの整数である。nは、ミラーパケット制御装置100の数である。ミラーパケット制御装置100は、例えば、サーバやPC(Personal Computer)である。
管理装置201は、図9に後述する仮想マネージャ913やポートミラーマネージャ915を実行するコンピュータである。ポートミラーマネージャ915は、ターゲットVM101について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタVM102に送信するかを設定し、ポートミラーリングを管理する。管理装置201は、例えば、サーバやPCである。ここでは、管理装置201が、ミラーパケット制御装置100とは異なる装置である場合について説明したが、これに限らない。例えば、管理装置201は、いずれかのミラーパケット制御装置100と一体であってもよい。
(ミラーパケット制御装置100のハードウェア構成例)
次に、図3を用いて、ミラーパケット制御装置100のハードウェア構成例について説明する。
図3は、ミラーパケット制御装置100のハードウェア構成例を示すブロック図である。図3において、ミラーパケット制御装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、ミラーパケット制御装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ネットワークI/F303は、通信回線を通じてネットワーク310に接続され、ネットワーク310を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク310と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303には、例えば、モデムやLANアダプタなどを採用することができる。
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、ミラーパケット制御装置100から着脱可能であってもよい。
ミラーパケット制御装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、ミラーパケット制御装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、ミラーパケット制御装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
(管理装置201のハードウェア構成例)
ここで、管理装置201のハードウェア構成例については、図3に示したミラーパケット制御装置100のハードウェア構成例と同様であるため、説明を省略する。次に、ミラーパケット制御装置100や管理装置201が記憶する各種テーブルの記憶内容について説明する。
(トンネルポート管理テーブル400の記憶内容)
次に、図4を用いて、トンネルポート管理テーブル400の記憶内容の一例について説明する。トンネルポート管理テーブル400は、例えば、図3に示したミラーパケット制御装置100のメモリ302や記録媒体305の記憶領域により実現される。
図4は、トンネルポート管理テーブル400の記憶内容の一例を示す説明図である。図4に示すように、トンネルポート管理テーブル400は、トンネルポートと、プロトコルと、ローカルIP(Internet Protocol)と、リモートIPとのフィールドを有する。トンネルポート管理テーブル400は、トンネルポートごとに各フィールドに情報を設定することにより、トンネルポート管理情報がレコードとして記憶される。
トンネルポートのフィールドには、トンネルポートを識別するIDが設定される。プロトコルのフィールドには、トンネルポートに対してパケットを出力する際に用いられるプロトコルを識別する名前が設定される。ローカルIPのフィールドには、トンネルポートに割り振られたローカルIPアドレスが設定される。リモートIPのフィールドには、トンネルポートに割り振られたリモートIPアドレスが設定される。
トンネルポート管理テーブル400は、ミラーパケット制御装置100によって生成される。ミラーパケット制御装置100は、トンネルポート管理テーブル400を用いることにより、トンネルポートに対してパケットを出力する際に、いずれのプロトコルを用いるかを特定可能にすることができる。
(ミラーパケット用経路管理テーブル500の記憶内容)
次に、図5を用いて、ミラーパケット用経路管理テーブル500の記憶内容の一例について説明する。ミラーパケット用経路管理テーブル500は、例えば、図3に示したミラーパケット制御装置100のメモリ302や記録媒体305の記憶領域により実現される。
図5は、ミラーパケット用経路管理テーブル500の記憶内容の一例を示す説明図である。図5に示すように、ミラーパケット用経路管理テーブル500は、モニタIDと、宛先ポートとのフィールドを有する。ミラーパケット用経路管理テーブル500は、モニタVM102ごとに各フィールドに情報を設定することにより、ミラーパケット用経路管理情報がレコードとして記憶される。
モニタIDのフィールドには、モニタVM102を識別するIDが設定される。モニタVM102を識別するIDは、例えば、モニタVM102のポートを識別するIDである。宛先ポートのフィールドには、ミラーパケットを送信する仮想スイッチにおいてモニタVM102に通じる宛先ポートになるポートを識別するIDが設定される。
ミラーパケット用経路管理テーブル500は、ミラーパケット制御装置100によって生成され更新される。ミラーパケット制御装置100は、ミラーパケット用経路管理テーブル500を用いることにより、ミラーパケットを生成した際、いずれのポートがモニタVM102に通じているかを特定することができる。このため、ミラーパケット制御装置100は、モニタVM102に通じるポートにミラーパケットを出力することができる。
(ミラーポート管理テーブル600の記憶内容)
次に、図6を用いて、ミラーポート管理テーブル600の記憶内容の一例について説明する。ミラーポート管理テーブル600は、例えば、管理装置201の記憶領域により実現される。
図6は、ミラーポート管理テーブル600の記憶内容の一例を示す説明図である。図6に示すように、ミラーポート管理テーブル600は、IDと、名前と、ミラーポートIDと、ポートミラー方向と、モニタIDとのフィールドを有する。ミラーポート管理テーブル600は、ポートミラーリングによって複製されるパケットが流れるミラーポートごとに各フィールドに情報を設定することにより、ミラーポート管理情報がレコードとして記憶される。
IDのフィールドには、レコードに割り振られたIDが設定される。名前のフィールドには、ポートミラーリングによって複製されるパケットが流れるミラーポートになるポートの名前が設定される。ミラーポートIDのフィールドには、ミラーポートを識別するIDが設定される。ポートミラー方向のフィールドには、ミラーポートをいずれの方向に流れるパケットを複製するかが設定される。モニタIDのフィールドには、ミラーパケットを受信するモニタVM102を識別するIDが設定される。
ミラーポート管理テーブル600は、管理装置201によって生成され更新される。管理装置201は、ミラーポート管理テーブル600を用いることにより、いずれのポートを流れるパケットを複製してミラーパケットを生成するかを特定し、いずれのモニタVM102にミラーパケットを送信するかを特定することができる。
(モニタ管理テーブル700の記憶内容)
次に、図7を用いて、モニタ管理テーブル700の記憶内容の一例について説明する。モニタ管理テーブル700は、例えば、図3に示したミラーパケット制御装置100のメモリ302や記録媒体305の記憶領域により実現される。
図7は、モニタ管理テーブル700の記憶内容の一例を示す説明図である。図7に示すように、モニタ管理テーブル700は、IDと、名前と、ミラーポートIDと、ホストIDと、モニタIDとのフィールドを有する。モニタ管理テーブル700は、ポートミラーリングによって複製されるパケットが流れるミラーポートごとに各フィールドに情報を設定することにより、モニタ管理情報がレコードとして記憶される。
IDのフィールドには、レコードに割り振られたIDが設定される。名前のフィールドには、ポートミラーリングによって複製されるパケットが流れるミラーポートになるポートの名前が設定される。ミラーポートIDのフィールドには、ミラーポートを識別するIDが設定される。ホストIDのフィールドには、ミラーポートを有する演算装置を識別するIDが設定される。演算装置は、例えば、ミラーパケット制御装置100である。演算装置を識別するIDは、例えば、演算装置のホストOSを識別するIDである。モニタIDのフィールドには、ミラーパケットを受信するモニタVM102を識別するIDが設定される。
モニタ管理テーブル700は、ミラーパケット制御装置100によって生成され更新される。ミラーパケット制御装置100は、モニタ管理テーブル700を用いることにより、モニタVM102にミラーパケットを送信する送信元になる他のミラーパケット制御装置100を特定することができる。このため、ミラーパケット制御装置100は、ミラーパケット用経路管理テーブル500を更新することが好ましい他のミラーパケット制御装置100を特定することができる。
(ミラーパケット制御装置100の機能的構成例)
次に、図8を用いて、ミラーパケット制御装置100の機能的構成例について説明する。
図8は、ミラーパケット制御装置100の機能的構成例を示すブロック図である。ミラーパケット制御装置100は、記憶部800を含む。ミラーパケット制御装置100は、取得部801と、第1検出部802と、特定部803と、第1送信部804とを含む。
ミラーパケット制御装置100は、更新部805と、第2送信部806とを含む。ミラーパケット制御装置100は、第2検出部807と、退避部808と、登録部809とを含む。ミラーパケット制御装置100は、出力部810を含む。
記憶部800は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部800が、ミラーパケット制御装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部800が、ミラーパケット制御装置100とは異なる装置に含まれ、記憶部800の記憶内容がミラーパケット制御装置100から参照可能である場合があってもよい。
取得部801~出力部810は、制御部となる機能である。取得部801~出力部810は、具体的には、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
ミラーパケット制御装置100は、例えば、他装置からミラーパケットを送信されるVMが自装置に移動してきた場合、取得部801と、第1検出部802と、特定部803と、第1送信部804とによって動作する。以下では、他装置からミラーパケットを送信されるVMが自装置に移動してきた場合における、取得部801と、第1検出部802と、特定部803と、第1送信部804との動作について説明する。
記憶部800は、各機能部の処理に用いられる各種情報を記憶する。記憶部800は、例えば、第1対応情報を記憶する。第1対応情報は、VMの識別情報と、当該VMにミラーパケットを送信する送信元の識別情報とを対応付けて表す対応情報である。VMは、モニタVM102である。送信元は、ミラーポートを有する演算装置である。演算装置は、例えば、ミラーパケット制御装置100である。第1対応情報は、例えば、モニタVM102の識別情報と、モニタVM102にミラーパケットを送信する送信元になる演算装置の識別情報とを対応付けて表す。第1対応情報は、例えば、図7に示したモニタ管理テーブル700である。
記憶部800は、具体的には、他装置からミラーパケットを送信されるモニタVM102が自装置に移動してきた場合のために、特定部803によって用いられる図7に示したモニタ管理テーブル700を記憶する。これにより、記憶部800は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
第1検出部802は、他装置から自装置へのモニタVM102の移動完了の通知を検出する。通知は、例えば、GARP(Gratuitous Address Resolution Protocol)パケットである。第1検出部802は、例えば、仮想基盤からGARPパケットを受信する。
これにより、第1検出部802は、他装置から自装置にモニタVM102が移動してきたことを検出することができる。そして、第1検出部802は、自装置に移動してきたモニタVM102にミラーパケットを送信する送信元が、モニタVM102に通じるポートを正しく特定することができない状態である可能性があることを検出することができる。第1検出部802の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述するライブマイグレーション完了検出部などによって実現される。
特定部803は、第1検出部802が他装置から自装置へのモニタVM102の移動完了の通知を検出したことに応じて、第1対応情報を参照し、自装置へ移動完了したモニタVM102にミラーパケットを送信する送信元を特定する。特定部803は、図7に示したモニタ管理テーブル700を参照し、自装置に移動してきたモニタVM102のポートを識別するモニタIDに対応付けられたホストIDを特定する。
これにより、特定部803は、自装置に移動してきたモニタVM102にミラーパケットを送信する、モニタVM102に通じるポートを正しく特定することができない状態である可能性がある送信元を特定することができる。特定部803の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述する再学習通知パケット送信部などによって実現される。
第1送信部804は、特定部803が特定した送信元が有する第2対応情報の削除指示を、特定部803が特定した送信元に送信する。第2対応情報は、送信元からミラーパケットを送信されるモニタVM102の識別情報と、送信元からモニタVM102へのポートの識別情報とを対応付けて表す対応情報である。第2対応情報は、例えば、モニタVM102の識別情報と、自装置からモニタVM102に通じるポートの識別情報とを対応付けて表す。第2対応情報は、例えば、図5に示したミラーパケット用経路管理テーブル500である。削除指示は、第2対応情報を削除させる指示である。第1送信部804は、削除指示を、特定部803が特定したホストIDが示す他のミラーパケット制御装置100に送信する。
これにより、第1送信部804は、モニタVM102に通じるポートを正しく特定することができない状態である可能性がある送信元に、第2対応情報を削除させ、第2対応情報を生成し直すように仕向けることができる。このため、第1送信部804は、送信元において、移動前のモニタVM102に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
削除指示は、自装置に移動完了したモニタVM102の識別情報を含み、第2対応情報のうち、送信元から自装置に移動完了したモニタVM102へのポートの識別情報について削除させる指示であってもよい。これにより、第1送信部804は、送信元において第2対応情報を更新する際にかかる処理量の低減化を図ることができる。第1送信部804の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述する再学習通知パケット送信部などによって実現される。
また、ミラーパケット制御装置100は、自装置からミラーパケットを送信する場合、取得部801と、更新部805と、第2送信部806とによって動作する。以下では、自装置からミラーパケットを送信する場合における、取得部801と、更新部805と、第2送信部806との動作について説明する。
記憶部800は、各機能部の処理に用いられる各種情報を記憶する。記憶部800は、例えば、第2対応情報を記憶する。記憶部800は、具体的には、自装置からミラーパケットを送信する場合のために、更新部805によって更新され、第2送信部806によって用いられる、図5に示したミラーパケット用経路管理テーブル500を記憶する。また、記憶部800は、具体的には、図4に示したトンネルポート管理テーブル400を記憶してもよい。これにより、記憶部800は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
取得部801は、自装置が有する第2対応情報の削除指示を受け付ける。取得部801は、例えば、他のミラーパケット制御装置100の第1送信部804から送信された削除指示を受信する。これにより、取得部801は、自装置が、モニタVM102に通じるポートを正しく特定することができない状態である可能性があることを検出することができる。取得部801の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述する経路管理テーブルフラッシュ部などによって実現される。
更新部805は、自装置が有する第2対応情報の削除指示を受け付けたことに応じて、第2対応情報を削除する。更新部805は、例えば、削除指示を受け付けたことに応じて、ミラーパケット用経路管理テーブル500を削除する。更新部805は、例えば、モニタVM102の識別情報を含む削除指示を受け付けたことに応じて、ミラーパケット用経路管理テーブル500のうち、削除指示に含まれるモニタVM102の識別情報に対応するレコードを削除してもよい。
これにより、更新部805は、モニタVM102に通じるポートを正しく特定することができない状態である可能性があるミラーパケット用経路管理テーブル500を一旦削除することができる。更新部805の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述する経路管理テーブルフラッシュ部などによって実現される。
第2送信部806は、自装置からモニタVM102にミラーパケットを送信する際、第2対応情報を参照し、モニタVM102の識別情報に対応付けられた、自装置からモニタVM102へのポートの識別情報があるか否かを判定する。第2送信部806は、自装置からモニタVM102へのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じてミラーパケットを送信する。
これにより、第2送信部806は、いずれかのミラーパケット制御装置100に実行されているモニタVM102に、ミラーパケットが届くようにすることができ、モニタVM102から応答が返ってくるようにすることができる。第2送信部806の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述するミラーパケット用経路学習部などによって実現される。
更新部805は、第2送信部806が送信したミラーパケットに対する応答に基づいて第2対応情報を更新する。更新部805は、例えば、ミラーパケットに対する応答を受信したポートを、モニタVM102に通じるポートとして設定し、ミラーパケット用経路管理テーブル500を更新する。
これにより、更新部805は、ミラーパケット用経路管理テーブル500を生成し直し、モニタVM102に通じるポートを正しく特定することができるようにすることができる。そして、更新部805は、移動前のモニタVM102に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。更新部805の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述するミラーパケット用経路学習部などによって実現される。
第2送信部806は、自装置からモニタVM102にミラーパケットを送信する際、第2対応情報を参照し、モニタVM102の識別情報に対応付けられた、自装置からモニタVM102へのポートの識別情報があるか否かを判定する。第2送信部806は、自装置からモニタVM102へのポートの識別情報がある場合、自装置からモニタVM102へのポートを通じてミラーパケットを送信する。
これにより、第2送信部806は、いずれかのミラーパケット制御装置100に実行されているモニタVM102に、ミラーパケットが届くようにすることができる。第2送信部806の動作は、具体的には、ポートミラーリングシステム200においては、図9に後述するミラーパケット用経路学習部などによって実現される。
また、ミラーパケット制御装置100は、自装置からミラーパケットを送信する際に、ミラーパケットを一旦退避させておく場合、取得部801と、第2検出部807と、退避部808と、登録部809と、第2送信部806とによって動作する。以下では、自装置からミラーパケットを送信する際に、ミラーパケットを一旦退避させておく場合における、取得部801と、第2検出部807と、退避部808と、登録部809と、第2送信部806との動作について説明する。
記憶部800は、例えば、自装置からミラーパケットを送信する際に、ミラーパケットを一旦退避させておく場合のために、退避部808および登録部809によって用いられる、図25および図26に後述する各種テーブルを記憶する。これにより、記憶部800は、各機能部の処理に用いられる各種情報を、各機能部に参照可能にすることができる。
第2検出部807は、第1VMについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される第2VMの停止状態を検出する。第1VMは、仮想スイッチに接続され、パケットの入出力が行われるVMである。第1VMは、例えば、ターゲットVM101である。
入出力バッファとは、ターゲットVM101についてのパケットの入出力に用いられる記憶領域である。入出力バッファは、例えば、入力リングバッファと、出力リングバッファと、パケットバッファとの組み合わせである。入力リングバッファは、パケットの入力通知を記憶する記憶領域である。出力リングバッファは、パケットの出力通知を記憶する記憶領域である。パケットバッファは、入力または出力の対象になるパケットを記憶する記憶領域である。入力リングバッファと、出力リングバッファと、パケットバッファとについては、図27に後述する。
第2VMとは、仮想スイッチに接続され、ミラーパケットが出力されるVMである。第2VMは、例えば、仮想スイッチに直接接続されていなくてもよい。第2VMは、仮想スイッチのいずれかのポートから通じる他の仮想スイッチに接続されてもよい。第2VMは、例えば、モニタVM102である。
第2検出部807は、例えば、第2VMが動作中の演算装置から他の演算装置にライブマイグレーションを開始したことに応じて、第2VMの停止状態を検出する。演算装置は、例えば、ミラーパケット制御装置100である。第2検出部807は、具体的には、モニタVM102がライブマイグレーションを開始したとき、モニタVM102が停止状態になったことを検出する。第2検出部807は、具体的には、管理装置201からモニタVM102の状態を通知されることにより、モニタVM102が停止状態になったことを検出してもよい。第2検出部807は、具体的には、モニタVM102に対してポーリングを行うことにより、モニタVM102が停止状態になったことを検出してもよい。
第2検出部807は、例えば、第2VMが動作中の演算装置から他の演算装置にライブマイグレーションする場合において、動作中の演算装置から他の演算装置への第2VMに関する情報の転送量を監視してもよい。そして、第2検出部807は、転送量が閾値を下回ったことに応じて、第2VMの停止状態を検出する。これにより、第2検出部807は、モニタVM102が停止中であり、ミラーパケットをモニタVM102に送信すると、ミラーパケットが失われる可能性がある状態になったことを検出することができる。
第2検出部807は、第2VMの停止状態の解除を検出する。第2検出部807は、例えば、モニタVM102の停止状態の解除を検出する。第2検出部807は、具体的には、管理装置201からモニタVM102の状態を通知されることにより、モニタVM102が停止状態になったことを検出する。第2検出部807は、具体的には、モニタVM102に対してポーリングを行うことにより、モニタVM102の停止状態の解除を検出してもよい。
これにより、第2検出部807は、モニタVM102が動作中であり、ミラーパケットをモニタVM102に送信しても、ミラーパケットが失われない状態になったことを検出することができる。第2検出部807の動作は、具体的には、ポートミラーリングシステム200においては、図27に後述する割り込み設定部や割り込み解除部などによって実現される。
退避部808は、停止状態が検出されてから停止状態が解除されるまでの期間において第1VMについての入出力の対象となるパケットについては入出力バッファとは異なる退避バッファに蓄積しておく。退避部808は、例えば、入出力バッファに一旦登録されたパケットを、仮想スイッチで読み出して転送してしまう前に、あるいは、ターゲットVM101が読み出してしまう前に退避バッファに移動し、入出力バッファからは削除する。
退避部808は、仮想スイッチから第1VMに入力されるパケットについて複製しない状態に設定された場合には、第2VMの停止状態が検出されたことに応じて第1VMを停止してもよい。退避部808は、例えば、ターゲットVM101について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタVM102に送信する設定であるかを判定する。そして、退避部808は、ターゲットVM101について入力されるパケットを複製しなくてよい設定であれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットVM101を停止する。
この場合、退避部808は、停止状態が検出されてから停止状態が解除されるまでの期間において第1VMについての入出力の対象となるパケットについて退避バッファに蓄積しない。退避部808は、例えば、ターゲットVM101についての入出力の対象となるパケットを、退避バッファに蓄積せず、入出力バッファに登録する。
これにより、退避部808は、モニタVM102が停止状態である間、ターゲットVM101に対してパケットの入出力が行われることを防止することができ、モニタVM102にミラーパケットが送信されることを防止することができる。退避部808の動作は、具体的には、ポートミラーリングシステム200においては、図27に後述する割り込みハンドラなどによって実現される。
登録部809は、停止状態が解除されると、退避バッファに蓄積しておいたパケットを、入出力バッファに登録する。登録部809は、例えば、退避バッファに蓄積した順序で、退避バッファに蓄積しておいたパケットを、入出力バッファに登録する。
これにより、登録部809は、ターゲットVM101に対するパケットの入出力を再開させ、ターゲットVM101に対するパケットの入出力が再開したことに応じてモニタVM102へのミラーパケットの送信も再開させることができる。また、登録部809は、入出力の順番を変えずに、ターゲットVM101に対するパケットの入出力が行われるようにすることができる。登録部809の動作は、具体的には、ポートミラーリングシステム200においては、図27に後述するパケット処理部などによって実現される。
第2送信部806は、入出力バッファに登録したパケットについて第1VMに対して入出力を行うとともに、入出力バッファに登録したパケットを複製したミラーパケットを第2VMに出力する。第2送信部806は、例えば、入出力バッファに登録し直されたパケットについてターゲットVM101に対して入出力を行う。また、第2送信部806は、入出力バッファに登録し直されたパケットを複製したミラーパケットをモニタVM102に送信する。
これにより、第2送信部806は、モニタVM102の停止状態が解除された後は、ターゲットVM101に対して入出力バッファに登録し直されたパケットの入出力を行うことができる。そして、第2送信部806は、入出力バッファに登録し直されたパケットの入出力が行われたことに応じて、入出力バッファに登録し直されたパケットを複製したミラーパケットを、停止状態が解除されたモニタVM102に送信することができる。第2送信部806の動作は、具体的には、ポートミラーリングシステム200においては、図27に後述するミラーパケット生成部などによって実現される。
出力部810は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部810は、各機能部の処理結果を利用者に通知可能にし、ミラーパケット制御装置100の管理や運用、例えば、ミラーパケット制御装置100の設定値の更新などを支援することができる。このため、出力部810は、ミラーパケット制御装置100の利便性の向上を図ることができる。
ミラーパケット制御装置100は、取得部801と、第1検出部802と、特定部803と、第1送信部804とを含まない場合があってもよい。また、ミラーパケット制御装置100は、更新部805と、第2送信部806とを含まない場合があってもよい。また、ミラーパケット制御装置100は、第2検出部807と、退避部808と、登録部809とを含まない場合があってもよい。
(ポートミラーリングシステム200のモジュール構成例)
次に、図9を用いて、図8に示した各機能部の動作を実現するためのポートミラーリングシステム200のモジュール構成例について説明する。
図9は、ポートミラーリングシステム200のモジュール構成例を示す説明図である。以下の説明では、それぞれのミラーパケット制御装置100-iが有するミラーパケット用経路管理テーブル500を区別する場合、「ミラーパケット用経路管理テーブル500-i」と表記する場合がある。同様に、それぞれのミラーパケット制御装置100-iが有するモニタ管理テーブル700を区別する場合、「モニタ管理テーブル700-i」と表記する場合がある。
図9の例では、管理装置201のハードウェア910において、管理装置201のハイパーバイザ911が実行されている。管理装置201のハイパーバイザ911において、OS912が実行されている。OS912において、仮想マネージャ913が実行されている。仮想マネージャ913は、モニタ管理テーブル作成部914を含む。
モニタ管理テーブル作成部914は、モニタVM902がライブマイグレーションされた後、仮想基盤に問い合わせ、仮想基盤からモニタVM902のポートを識別するモニタIDを取得する。モニタ管理テーブル作成部914は、ミラーポート管理テーブル600を参照し、取得したモニタIDと、モニタIDに対応するミラーポートIDとホストIDとを対応付けた、モニタ管理テーブル700に追加されるレコードを生成する。モニタ管理テーブル作成部914は、生成したレコードをモニタVM902が移動されるミラーパケット制御装置100に送信する。モニタ管理テーブル作成部914は、具体的には、図16に後述するモニタ管理テーブル作成処理を実行する。
管理装置201のOS912において、ポートミラーマネージャ915が実行されている。ポートミラーマネージャ915は、ミラーポート管理テーブル600を有する。ポートミラーマネージャ915は、ポートミラーリングを制御する。管理装置201のハイパーバイザ911はなくてもよい。
また、ミラーパケット制御装置100-iのハードウェア920-iにおいて、ミラーパケット制御装置100-iのハイパーバイザ921-iが実行されている。ミラーパケット制御装置100-iのハイパーバイザ921-iにおいて、ミラーパケット制御装置100-iのホストOS922-iが実行されている。ミラーパケット制御装置100-iのホストOS922-iにおいて、ターゲットVM901、または、モニタVM902が実行可能である。
ミラーパケット制御装置100-iのホストOS922-iは、仮想スイッチ923-iを含む。仮想スイッチ923-iは、ミラーパケット用経路学習部924-iと、ライブマイグレーション完了検出部925-iと、再学習通知パケット送信部926-iと、経路管理テーブルフラッシュ部927-iとを含む。仮想スイッチ923-iは、ミラーパケット用経路管理テーブル500-iと、モニタ管理テーブル700-iとを有する。
ミラーパケット用経路学習部924-iは、ターゲットVM901へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する。ミラーパケット用経路学習部924-iは、ミラーパケットの宛先になるモニタVM902を示すモニタIDを取得可能であれば、モニタIDが示すポートを通じてミラーパケットを送信する。
ミラーパケット用経路学習部924-iは、ミラーパケットの宛先になるモニタVM902を示すモニタIDを取得可能でなければ、すべてのポートを通じてミラーパケットを送信する。ミラーパケット用経路学習部924-iは、送信したミラーパケットに対する返信パケットに基づいて、ミラーパケット用経路管理テーブル500-iを更新する。ミラーパケット用経路学習部924-iは、具体的には、図14および図15に後述するミラーパケット用経路学習処理を実行する。
ライブマイグレーション完了検出部925-iは、GARPパケットを監視し、GARPパケットを検出したことに応じて、ライブマイグレーションが完了したことを検出する。ライブマイグレーション完了検出部925-iは、GARPパケットを検出したVMのポートを識別するIDをモニタIDとして設定する。ライブマイグレーション完了検出部925-iは、モニタIDでモニタ管理テーブル700-iを検索し、モニタIDに対応するミラーポートIDを取得する。ライブマイグレーション完了検出部925-iは、モニタIDと、ミラーポートIDとを、再学習通知パケット送信部926-iに指定して、図18に後述する再学習通知パケット送信処理を実行させる。
また、ライブマイグレーション完了検出部925-iは、GARPパケットを利用する方法とは異なる方法により、ライブマイグレーションが完了したことを検出してもよい。GARPパケットを利用する方法とは異なる方法については、具体的には、例えば、特開2014-182596号公報などを参照することができる。ライブマイグレーション完了検出部925-iは、具体的には、図17に後述するライブマイグレーション完了検出処理を実行する。
再学習通知パケット送信部926-iは、ミラーポートIDでモニタ管理テーブル700-iを検索し、ミラーポートIDに対応するホストIDが示すホストOSに、再学習通知パケットを送信する。再学習通知パケット送信部926-iは、具体的には、図18に後述する再学習通知パケット送信処理を実行する。
経路管理テーブルフラッシュ部927-iは、再学習通知パケットを受信すると、ミラーパケット用経路管理テーブル500-iを初期化する。経路管理テーブルフラッシュ部927-iは、具体的には、図19に後述するミラーパケット用経路管理テーブル削除処理を実行する。
図9において、(9-1)ポートミラーマネージャ915は、管理者903の操作入力によって、ライブマイグレーション指示を受け付けたとする。ポートミラーマネージャ915は、ライブマイグレーション指示を受け付けたため、モニタVM902を、ミラーパケット制御装置100-2からミラーパケット制御装置100-nへとライブマイグレーションする。ここで、図10~図13の説明に移行する。
(ポートミラーリングシステム200の動作例1)
次に、図10~図13を用いて、ポートミラーリングシステム200の動作例1について説明する。
図10~図13は、ポートミラーリングシステム200の動作例1を示す説明図である。仮想マネージャ913は、ライブマイグレーションが完了すると、GARPパケット1000を、モニタVM902が移動したミラーパケット制御装置100-nが属するL2ネットワークに対して送信する。ここで、図10の説明に移行し、GARPパケット1000のデータ構造について説明する。
図10に示すように、GARPパケット1000は、EtherヘッダとARPパケットを含む。Etherヘッダは、送信元MAC(Media Access Control)と、宛先MACとのフィールドを含む。送信元MACのフィールドには、送信元MACアドレスが設定される。宛先MACのフィールドには、宛先MACアドレスが設定される。
ARPパケットは、宛先IPと、宛先MACと、送信元IPと、送信元MACと、制御情報とのフィールドを含む。宛先IPのフィールドには、ライブマイグレーションされたVMのIPアドレスが設定される。宛先MACのフィールドには、宛先MACアドレスが設定される。
送信元IPのフィールドには、ライブマイグレーションされたVMのIPアドレスが設定される。宛先IPと送信元IPとのフィールドに、共通して、ライブマイグレーションされたVMのIPアドレスが設定されることにより、GARPパケット1000であることを示す。送信元MACのフィールドには、送信元MACアドレスが設定される。制御情報のフィールドには、制御情報が設定される。ここで、図11の説明に移行する。
図11の例では、(11-1)管理装置201において、モニタ管理テーブル作成部914は、モニタVM902がライブマイグレーションされた後、モニタVM902のポートを識別するモニタIDを取得する。
次に、モニタ管理テーブル作成部914は、ミラーポート管理テーブル600を参照し、取得したモニタIDと、モニタIDに対応するミラーポートIDとホストIDとを対応付けた、モニタ管理テーブル700-nに追加されるレコードを生成する。そして、モニタ管理テーブル作成部914は、生成したレコードをモニタVM902が移動されたミラーパケット制御装置100-nに送信する。
これにより、モニタ管理テーブル作成部914は、ミラーパケット制御装置100-nが有するモニタ管理テーブル700-nを最新の状態に更新することができ、モニタVM902に対するミラーパケットの送信元を正しく特定可能にすることができる。
(11-2)ミラーパケット制御装置100-nにおいて、ライブマイグレーション完了検出部925-nは、GARPパケット1000を監視し、GARPパケット1000を検出したVMのポートを識別するIDをモニタIDとして設定する。次に、ライブマイグレーション完了検出部925-nは、モニタIDでモニタ管理テーブル700-nを検索し、モニタIDに対応するミラーポートIDを取得する。そして、ライブマイグレーション完了検出部925-nは、モニタIDと、ミラーポートIDとを、再学習通知パケット送信部926-nに出力する。
これにより、ライブマイグレーション完了検出部925-nは、モニタVM902にミラーパケットを送信する送信元が、モニタVM902に通じるポートを正しく特定することができない状態である可能性があることを検出することができる。そして、ライブマイグレーション完了検出部925-nは、ミラーパケットの送信元において、ミラーパケット用経路管理テーブル500を削除させることが好ましいタイミングであることを、再学習通知パケット送信部926-nに通知することができる。
(11-3)ミラーパケット制御装置100-nにおいて、再学習通知パケット送信部926-nは、通知されたミラーポートIDでモニタ管理テーブル700-nを検索し、ミラーポートIDに対応するホストIDが示すホストOSを取得する。そして、再学習通知パケット送信部926-nは、取得したホストOSに基づいて、モニタVM902にミラーパケットを送信するミラーパケット制御装置100-1に対して、図12に後述する再学習通知パケット1200を送信する。ここで、図12の説明に移行し、再学習通知パケット1200のデータ構造について説明する。
図12に示すように、再学習通知パケット1200は、ヘッダとペイロードとを含む。ヘッダは、Etherヘッダと、IP(Internet Protocol)ヘッダと、TCP(Transmission Control Protocol)ヘッダとのフィールドを含む。Etherヘッダのフィールドには、Etherヘッダの内容が設定される。IPヘッダのフィールドには、IPヘッダの内容が設定される。TCPヘッダのフィールドには、TCPヘッダの内容が設定される。ヘッダの内容は、通常のパケットと同様であってもよい。ペイロードには、識別子が設定される。識別子は、再学習通知パケット1200を、通常のパケットと区別可能にするための情報である。次に、図13の説明に移行する。
図13の例では、(13-1)ミラーパケット制御装置100-1において、経路管理テーブルフラッシュ部927-1は、再学習通知パケット1200を受信する。経路管理テーブルフラッシュ部927-1は、再学習通知パケット1200を受信すると、再学習通知パケット1200のペイロードを参照し、再学習通知パケット1200であることを判定する。そして、経路管理テーブルフラッシュ部927-1は、ミラーパケット用経路管理テーブル500-1を削除する。
これにより、経路管理テーブルフラッシュ部927-1は、モニタVM902に通じるポートを正しく特定することができない状態である可能性があるミラーパケット用経路管理テーブル500-1を一旦削除することができる。
(13-2)ミラーパケット制御装置100-1において、ミラーパケット用経路学習部924-1は、ターゲットVM901へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する。次に、ミラーパケット用経路学習部924-1は、ミラーパケットを生成すると、ミラーパケット用経路管理テーブル500-1を参照する。
ここで、ミラーパケット用経路学習部924-1は、ミラーパケット用経路管理テーブル500-1が削除されているため、すべてのポートを通じてミラーパケットを送信する。ミラーパケット用経路学習部924-1は、送信したミラーパケットに対する返信パケットに基づいて、ミラーパケット用経路管理テーブル500-1を更新する。
これにより、ミラーパケット用経路学習部924-1は、ミラーパケット用経路管理テーブル500-1を生成し直し、モニタVM902に通じるポートを正しく特定することができるようにすることができる。このように、ポートミラーリングシステム200では、ミラーパケット制御装置100-1が、移動前のモニタVM902に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
(動作例1におけるミラーパケット用経路学習処理手順)
次に、図14および図15を用いて、ミラーパケット制御装置100-iのミラーパケット用経路学習部924-iが実行する、動作例1におけるミラーパケット用経路学習処理手順の一例について説明する。
図14および図15は、動作例1におけるミラーパケット用経路学習処理手順の一例を示すフローチャートである。図14において、ミラーパケット用経路学習部924-iは、ターゲットVM901へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する(ステップS1401)。
次に、ミラーパケット用経路学習部924-iは、ミラーパケットの宛先になるモニタVM902を示すモニタIDを取得する(ステップS1402)。そして、ミラーパケット用経路学習部924-iは、ホストOSに問い合わせ、すべてのトンネルポートを特定する(ステップS1403)。
次に、ミラーパケット用経路学習部924-iは、ミラーパケット用経路管理テーブル500-iに、取得したモニタIDに対応するレコードがあるか否かを判定する(ステップS1404)。ここで、レコードがある場合(ステップS1404:Yes)、ミラーパケット用経路学習部924-iは、取得したモニタIDに対応するレコードに設定された宛先ポートIDが示すトンネルポートに、生成したミラーパケットを送信する(ステップS1405)。そして、ミラーパケット用経路学習部924-iは、ミラーパケット用経路学習処理を終了する。
一方で、レコードがない場合(ステップS1404:No)、ミラーパケット用経路学習部924-iは、特定したすべてのトンネルポートに、生成したミラーパケットを送信する(ステップS1406)。そして、ミラーパケット用経路学習部924-iは、図15のステップS1501の処理に移行する。
図15において、ミラーパケット用経路学習部924-iは、送信したミラーパケットに対する返信パケットを受信する(ステップS1501)。次に、ミラーパケット用経路学習部924-iは、返信パケットに基づいて、返信パケットの送信元になるモニタVM902を示すモニタIDを取得する(ステップS1502)。そして、ミラーパケット用経路学習部924-iは、返信パケットを受信したトンネルポートを特定する(ステップS1503)。
次に、ミラーパケット用経路学習部924-iは、取得したモニタIDと、特定したトンネルポートを示す宛先ポートIDとを対応付けて、ミラーパケット用経路管理テーブル500-iに記憶する(ステップS1504)。そして、ミラーパケット用経路学習部924-iは、ミラーパケット用経路学習処理を終了する。
(動作例1におけるモニタ管理テーブル作成処理手順)
次に、図16を用いて、管理装置201のモニタ管理テーブル作成部914が実行する、動作例1におけるモニタ管理テーブル作成処理手順の一例について説明する。
図16は、動作例1におけるモニタ管理テーブル作成処理手順の一例を示すフローチャートである。図16において、モニタ管理テーブル作成部914は、VMIDと、移行元ホストと、移行先ホストとを指定する、ライブマイグレーション指示を待ち受ける(ステップS1601)。
次に、モニタ管理テーブル作成部914は、ライブマイグレーション指示を受け付けたか否かを判定する(ステップS1602)。ここで、ライブマイグレーション指示を受け付けていない場合(ステップS1602:No)、モニタ管理テーブル作成部914は、ステップS1601の処理に戻る。
一方で、ライブマイグレーション指示を受け付けた場合(ステップS1602:Yes)、モニタ管理テーブル作成部914は、ステップS1603の処理に移行する。ステップS1603では、モニタ管理テーブル作成部914は、VMIDが示すVMがライブマイグレーションされた後、仮想基盤に問い合わせ、仮想基盤からVMIDが示すVMのポートを識別するIDを取得する(ステップS1603)。
次に、モニタ管理テーブル作成部914は、ミラーポート管理テーブル600のレコードを選択する(ステップS1604)。そして、モニタ管理テーブル作成部914は、選択したレコードのモニタIDが、取得したIDに対応するか否かを判定する(ステップS1605)。ここで、モニタIDが取得したIDに対応しない場合(ステップS1605:No)、モニタ管理テーブル作成部914は、ステップS1608の処理に移行する。
一方で、モニタIDが取得したIDに対応する場合(ステップS1605:Yes)、モニタ管理テーブル作成部914は、選択したレコードのミラーポートIDに対応するホストIDを取得する(ステップS1606)。次に、モニタ管理テーブル作成部914は、モニタIDと、ミラーポートIDと、ホストIDとを対応付けた、モニタ管理テーブル700に追加されるレコードを生成し、移行先ホストに送信する(ステップS1607)。そして、モニタ管理テーブル作成部914は、ステップS1608の処理に移行する。
ステップS1608では、モニタ管理テーブル作成部914は、ミラーポート管理テーブル600のすべてのレコードを選択したか否かを判定する(ステップS1608)。ここで、いずれかのレコードを選択していない場合(ステップS1608:No)、モニタ管理テーブル作成部914は、ステップS1604の処理に戻る。
一方で、すべてのレコードを選択している場合(ステップS1608:Yes)、モニタ管理テーブル作成部914は、モニタ管理テーブル作成処理を終了する。これにより、モニタ管理テーブル作成部914は、ポートミラーリングシステム200の最新の状態に対応するように、モニタ管理テーブル700を更新することができる。
(動作例1におけるライブマイグレーション完了検出処理手順)
次に、図17を用いて、ミラーパケット制御装置100-iのライブマイグレーション完了検出部925-iが実行する、動作例1におけるライブマイグレーション完了検出処理手順の一例について説明する。
図17は、動作例1におけるライブマイグレーション完了検出処理手順の一例を示すフローチャートである。図17において、ライブマイグレーション完了検出部925-iは、GARPパケット1000を監視する(ステップS1701)。
次に、ライブマイグレーション完了検出部925-iは、GARPパケット1000を検出したか否かを判定する(ステップS1702)。ここで、検出していない場合(ステップS1702:No)、ライブマイグレーション完了検出部925-iは、ステップS1701の処理に戻る。一方で、検出した場合(ステップS1702:Yes)、ライブマイグレーション完了検出部925-iは、GARPパケット1000を検出したVMのポートを識別するIDをモニタIDとして設定し、ステップS1703の処理に移行する。
ステップS1703では、ライブマイグレーション完了検出部925-iは、モニタIDでモニタ管理テーブル700-iを検索し、モニタIDに対応するミラーポートIDを取得する(ステップS1703)。ここで、ライブマイグレーション完了検出部925-iは、ミラーポートIDを1以上取得したか否かを判定する(ステップS1704)。ミラーポートIDを取得していない場合(ステップS1704:No)、ライブマイグレーション完了検出部925-iは、ライブマイグレーション完了検出処理を終了する。
一方で、ミラーポートIDを1以上取得している場合(ステップS1704:Yes)、ライブマイグレーション完了検出部925-iは、取得した1以上のミラーポートIDのいずれかのミラーポートIDを選択する(ステップS1705)。
次に、ライブマイグレーション完了検出部925-iは、モニタIDと、選択したミラーポートIDとを指定して、図18に後述する再学習通知パケット送信処理を、再学習通知パケット送信部926-iに実行させる(ステップS1706)。
そして、ライブマイグレーション完了検出部925-iは、すべてのミラーポートIDを選択したか否かを判定する(ステップS1707)。ここで、いずれかのミラーポートIDを選択していない場合(ステップS1707:No)、ライブマイグレーション完了検出部925-iは、ステップS1705の処理に戻る。
一方で、すべてのミラーポートIDを選択している場合(ステップS1707:Yes)、ライブマイグレーション完了検出部925-iは、モニタ管理テーブル700-iを削除する(ステップS1708)。そして、ライブマイグレーション完了検出部925-iは、ライブマイグレーション完了検出処理を終了する。
(動作例1における再学習通知パケット送信処理手順)
次に、図18を用いて、ミラーパケット制御装置100-iの再学習通知パケット送信部926-iが実行する、動作例1における再学習通知パケット送信処理手順の一例について説明する。
図18は、動作例1における再学習通知パケット送信処理手順の一例を示すフローチャートである。図18において、再学習通知パケット送信部926-iは、ミラーポートIDでモニタ管理テーブル700-iを検索し、ミラーポートIDに対応するホストIDを取得する(ステップS1801)。
次に、再学習通知パケット送信部926-iは、再学習通知パケット1200を生成する(ステップS1802)。そして、再学習通知パケット送信部926-iは、取得したホストIDが示すホストOSに、生成した再学習通知パケット1200を送信する(ステップS1803)。
次に、再学習通知パケット送信部926-iは、取得したホストIDが示すホストOSからAckを受信する(ステップS1804)。そして、再学習通知パケット送信部926-iは、再学習通知パケット送信処理を終了する。
(動作例1におけるミラーパケット用経路管理テーブル削除処理手順)
次に、図19を用いて、ミラーパケット制御装置100-iの経路管理テーブルフラッシュ部927-iが実行する、動作例1におけるミラーパケット用経路管理テーブル削除処理手順の一例について説明する。
図19は、動作例1におけるミラーパケット用経路管理テーブル削除処理手順の一例を示すフローチャートである。図19において、経路管理テーブルフラッシュ部927-iは、再学習通知パケット1200を待ち受ける(ステップS1901)。
次に、経路管理テーブルフラッシュ部927-iは、再学習通知パケット1200を受信したか否かを判定する(ステップS1902)。ここで、再学習通知パケット1200を受信していない場合(ステップS1902:No)、経路管理テーブルフラッシュ部927-iは、ステップS1901の処理に戻る。
一方で、再学習通知パケット1200を受信している場合(ステップS1902:Yes)、経路管理テーブルフラッシュ部927-iは、ミラーパケット用経路管理テーブル500-iを初期化する(ステップS1903)。次に、経路管理テーブルフラッシュ部927-iは、Ackを返信する(ステップS1904)。そして、経路管理テーブルフラッシュ部927-iは、ミラーパケット用経路管理テーブル削除処理を終了する。
(ポートミラーリングシステム200の動作例2)
次に、図20および図21を用いて、ポートミラーリングシステム200の動作例2について説明する。動作例1では、ミラーパケット制御装置100が、削除指示を受け付けたことに応じて、ミラーポート用経路管理テーブル全体を削除する場合について説明した。
これに対し、動作例2では、削除指示がモニタIDを含み、ミラーパケット制御装置100が、削除指示を受け付けたことに応じて、ミラーポート用経路管理テーブルのいずれかのレコードを削除する場合について説明する。ここで、図20および図21の説明に移行する。
図20および図21は、ポートミラーリングシステム200の動作例2を示す説明図である。図20の例では、ミラーパケット制御装置100-nは、動作例1の(11-1)、(11-2)と同様に動作する。次に、ミラーパケット制御装置100-nは、動作例1の(11-3)に代わり、下記のように動作する。
(20-1)ミラーパケット制御装置100-nにおいて、再学習通知パケット送信部926-nは、通知されたミラーポートIDでモニタ管理テーブル700-nを検索し、ミラーポートIDに対応するホストIDが示すホストOSを取得する。次に、再学習通知パケット送信部926-nは、モニタVM902に対応するモニタIDを含むように、図21に後述する再学習通知パケット2100を生成する。
そして、再学習通知パケット送信部926-nは、取得したホストOSに基づいて、モニタVM902にミラーパケットを送信するミラーパケット制御装置100-1に対して、生成した再学習通知パケット2100を送信する。ここで、図21の説明に移行し、再学習通知パケット2100のデータ構造について説明する。
図21に示すように、再学習通知パケット2100は、ヘッダとペイロードとを含む。ヘッダの内容は、動作例1と同様である。ペイロードは、識別子と、モニタIDとのフィールドを含む。識別子は、再学習通知パケット2100を、通常のパケットと区別可能にするための情報である。モニタIDは、ライブマイグレーションされたモニタVM902に対応するモニタIDである。
一方で、ミラーパケット制御装置100-1は、動作例1の(13-1)と(13-2)とに代わり、下記のように動作する。
ミラーパケット制御装置100-1において、経路管理テーブルフラッシュ部927-1は、再学習通知パケット2100を受信すると、再学習通知パケット2100のペイロードを参照し、再学習通知パケット2100であることを判定する。そして、経路管理テーブルフラッシュ部927-1は、再学習通知パケット2100からモニタIDを取得し、ミラーパケット用経路管理テーブル500-1のうち、取得したモニタIDに対応するレコードを削除する。
これにより、経路管理テーブルフラッシュ部927-1は、ミラーパケット用経路管理テーブル500-1のうち、削除しなくてもよいレコードについては削除しないようにすることができる。
ミラーパケット制御装置100-1において、ミラーパケット用経路学習部924-1は、ターゲットVM901へのポートを通じてパケットが送受信されたことに応じて、パケットを複製したミラーパケットを生成する。次に、ミラーパケット用経路学習部924-1は、ミラーパケットを生成すると、ミラーパケット用経路管理テーブル500-1を参照する。
ここで、ミラーパケット用経路学習部924-1は、ミラーパケット用経路管理テーブル500-1に、モニタVM902に対応するレコードがないため、すべてのポートを通じてミラーパケットを送信する。ミラーパケット用経路学習部924-1は、送信したミラーパケットに対する返信パケットに基づいて、ミラーパケット用経路管理テーブル500-1を更新する。
これにより、ミラーパケット用経路学習部924-1は、ミラーパケット用経路管理テーブル500-1のうち、生成し直すことになるレコードの数の増大化を抑制することができ、処理量の低減化を図ることができる。
(動作例2における再学習通知パケット送信処理手順)
次に、図22を用いて、動作例2における再学習通知パケット送信処理手順の一例について説明する。
図22は、動作例2における再学習通知パケット送信処理手順の一例を示すフローチャートである。図22において、再学習通知パケット送信部926-iは、ミラーポートIDでモニタ管理テーブル700-iを検索し、ミラーポートIDに対応するホストIDを取得する(ステップS2201)。
次に、再学習通知パケット送信部926-iは、再学習通知パケットを生成する(ステップS2202)。ここで、再学習通知パケット送信部926-iは、再学習通知パケットのペイロードに、モニタIDを埋め込む(ステップS2203)。そして、再学習通知パケット送信部926-iは、取得したホストIDが示すホストOSに、生成した再学習通知パケットを送信する(ステップS2204)。
次に、再学習通知パケット送信部926-iは、取得したホストIDが示すホストOSからAckを受信する(ステップS2205)。そして、再学習通知パケット送信部926-iは、再学習通知パケット送信処理を終了する。
(動作例2におけるミラーパケット用経路管理テーブル削除処理手順)
次に、図23を用いて、動作例2におけるミラーパケット用経路管理テーブル削除処理手順の一例について説明する。
図23は、動作例2におけるミラーパケット用経路管理テーブル削除処理手順の一例を示すフローチャートである。図23において、経路管理テーブルフラッシュ部927-iは、再学習通知パケットを待ち受ける(ステップS2301)。
次に、経路管理テーブルフラッシュ部927-iは、再学習通知パケットを受信したか否かを判定する(ステップS2302)。ここで、再学習通知パケットを受信していない場合(ステップS2302:No)、経路管理テーブルフラッシュ部927-iは、ステップS2301の処理に戻る。
一方で、再学習通知パケットを受信している場合(ステップS2302:Yes)、経路管理テーブルフラッシュ部927-iは、再学習通知パケットのペイロードからモニタIDを取得する(ステップS2303)。
次に、経路管理テーブルフラッシュ部927-iは、ミラーパケット用経路管理テーブル500-iのうち、取得したモニタIDに対応するレコードを削除する(ステップS2304)。次に、経路管理テーブルフラッシュ部927-iは、Ackを返信する(ステップS2305)。そして、経路管理テーブルフラッシュ部927-iは、ミラーパケット用経路管理テーブル削除処理を終了する。
(ポートミラーリングシステム200の動作例3)
次に、図24~図31を用いて、ポートミラーリングシステム200の動作例3について説明する。動作例1では、ミラーパケット制御装置100が、ターゲットVM901に対してパケットが送受信されたことに応じて、ミラーパケットを生成してモニタVM902に送信する場合について説明した。
これに対し、動作例3では、ミラーパケット制御装置100が、モニタVM902が停止状態であるか否かに応じて、ミラーパケットを一旦退避させることが可能である場合について説明する。
例えば、モニタVM902はライブマイグレーションされる際などに一時的に停止することがある。このため、モニタVM902の停止中にターゲットVM901が送信または受信したパケットを複製したミラーパケットは、モニタVM902が受信することができずに失われてしまう。また、モニタVM902は、ミラーパケットについて再送要求することも困難である。そこで、動作例3では、モニタVM902の停止中にミラーパケットが送信されることを防止することにより、ミラーパケットが失われる確率を低減する。
動作例3では、管理装置201は、図24に後述するVM状態管理テーブル2400を記憶し、ミラーパケット制御装置100は、図25および図26に後述する各種テーブルを記憶する。ここで、図24~図26の説明に移行する。
(VM状態管理テーブル2400の記憶内容)
次に、図24を用いて、VM状態管理テーブル2400の記憶内容の一例について説明する。VM状態管理テーブル2400は、例えば、管理装置201の記憶領域により実現される。
図24は、VM状態管理テーブル2400の記憶内容の一例を示す説明図である。図24に示すように、VM状態管理テーブル2400は、VMIDと、ホストIDと、状態とのフィールドを有する。VM状態管理テーブル2400は、VMごとに各フィールドに情報を設定することにより、VM状態管理情報がレコードとして記憶される。
VMIDのフィールドには、VMを一意に識別する情報であるVMIDが設定される。ホストIDのフィールドには、ホストOSを一意に識別する情報であるホストIDが設定される。状態のフィールドには、VMの状態が設定される。VMの状態は、例えば、VMが動作中であれば「ランニング(RUNNING)」であり、VMが停止中であれば「サスペンド(SUSPENDED)」である。
VM状態管理テーブル2400は、管理装置201によって生成され更新される。管理装置201は、VM状態管理テーブル2400を用いることにより、それぞれのミラーパケット制御装置100におけるVMの状態を管理することができる。
そして、管理装置201は、VM状態管理テーブル2400を参照することにより、ターゲットVM901を実行中であるミラーパケット制御装置100に、モニタVM902の状態がサスペンドになったことを通知することができる。また、管理装置201は、VM状態管理テーブル2400を参照することにより、ターゲットVM901を実行中であるミラーパケット制御装置100に、モニタVM902の状態がサスペンドからランニングに戻ったことを通知することができる。
(リングバッファ管理テーブル2500の記憶内容)
次に、図25を用いて、リングバッファ管理テーブル2500の記憶内容の一例について説明する。リングバッファ管理テーブル2500は、例えば、図3に示したミラーパケット制御装置100のメモリ302や記録媒体305の記憶領域により実現される。
ここで、リングバッファとは、いずれかのVMについてのパケットの入出力に用いられる記憶領域である。リングバッファは、例えば、入出力バッファに対応し、入出力バッファの一部となる記憶領域である。パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にあってもよい。
図25は、リングバッファ管理テーブル2500の記憶内容の一例を示す説明図である。図25に示すように、リングバッファ管理テーブル2500は、VMIDと、Guest Addrと、Host Addrと、リングバッファサイズと、割り込み状態とのフィールドを有する。リングバッファ管理テーブル2500は、VMごとに各フィールドに情報を設定することにより、リングバッファ管理情報がレコードとして記憶される。
VMIDのフィールドには、ゲストOSとなるVMを一意に識別する情報であるVMIDが設定される。Guest Addrのフィールドには、ゲストOSとなるVMがリングバッファを識別するためのアドレスであるGuest Addrが設定される。Guest Addrのフィールドには、パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にある場合には、それぞれのリングバッファに対応するGuest Addrが設定されてもよい。
Host Addrのフィールドには、ホストOSがリングバッファを識別するためのアドレスであるHost Addrが設定される。Host Addrのフィールドには、パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にある場合には、それぞれのリングバッファに対応するHost Addrが設定されてもよい。
リングバッファサイズのフィールドには、ゲストOSとなるVMについてのリングバッファのサイズが設定される。リングバッファサイズのフィールドには、パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にある場合には、それぞれのリングバッファのサイズが設定されてもよい。割り込み状態のフィールドには、ゲストOSとなるVMについてのパケットの入出力に対して割り込みを行う状態であるか否かを示すフラグが設定される。割り込み状態は、例えば、割り込みを行う状態であれば「オン(ON)」であり、割り込みを行わない状態であれば「オフ(OFF)」である。
リングバッファ管理テーブル2500は、ミラーパケット制御装置100によって生成され更新される。ミラーパケット制御装置100は、リングバッファ管理テーブル2500を用いることにより、VMに対応するリングバッファを管理することができる。そして、ミラーパケット制御装置100は、リングバッファ管理テーブル2500を参照して、リングバッファへの書き込みがあったときに割り込みを発生させるようにハイパーバイザに設定することができる。
(ミラーパケットバッファ2600の記憶内容)
次に、図26を用いて、ミラーパケットバッファ2600の記憶内容の一例について説明する。ミラーパケットバッファ2600は、例えば、図3に示したミラーパケット制御装置100のメモリ302や記録媒体305の記憶領域により実現される。
図26は、ミラーパケットバッファ2600の記憶内容の一例を示す説明図である。図26に示すように、ミラーパケットバッファ2600は、連番と、VMIDと、方向と、addrと、パケットサイズと、パケットと、送信受信通知とのフィールドを有する。ミラーパケットバッファ2600は、パケットごとに各フィールドに情報を設定することにより、ミラーパケット制御情報がレコードとして記憶される。
連番のフィールドには、レコードの番号である連番が設定される。VMIDのフィールドには、VMを一意に識別する情報であるVMIDが設定される。方向のフィールドには、VMに対するパケットの通信方向が設定される。方向は、例えば、VMにパケットを受信させる場合には「受信」であり、VMからパケットが送信される場合には「送信」である。addrのフィールドには、パケットの宛先が設定される。パケットサイズのフィールドには、パケットのサイズが設定される。パケットのフィールドには、パケットの本体が設定される。送信受信通知のフィールドには、パケットの送信を要求する出力通知またはパケットの受信を要求する入力通知が設定される。
ミラーパケットバッファ2600は、ミラーパケット制御装置100によって生成される。ミラーパケット制御装置100は、モニタVM902の停止中に、リングバッファからミラーパケットバッファ2600にパケットを退避することができ、停止中のモニタVM902にミラーパケットが送信されないようにすることができる。ミラーパケット制御装置100は、具体的には、リングバッファにパケットを再び登録する際に用いられる情報を、ミラーパケットバッファ2600に蓄積することができる。
図27~図31は、ポートミラーリングシステム200の動作例3を示す説明図である。図27に示すように、ポートミラーリングシステム200のモジュール構成例に、新しいモジュールが追加される。図27において、図9と同様のモジュールには、図9と同様の符号を付して説明を省略する。
図27の例では、管理装置201のポートミラーマネージャ915は、さらに、ポートミラー構成部2711と、VM状態管理部2712とを含む。ポートミラー構成部2711は、ターゲットVM901について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタVM902に送信するかを設定し、ポートミラーリングを管理する。VM状態管理部2712は、それぞれのミラーパケット制御装置100におけるVMが停止状態であるか否かを監視し、それぞれのミラーパケット制御装置100におけるVMの状態を管理する。
ミラーパケット制御装置100-iのホストOS922-iは、バックエンドドライバ2735を含む。バックエンドドライバ2735は、ハイパーバイザ921-iが有する記憶領域にある入力リングバッファ2731と、出力リングバッファ2732と、パケットバッファ2733とに対するアクセスを制御する。入力リングバッファ2731は、ターゲットVM901へ入力されるパケットについての入力通知を記憶する際に用いられる。出力リングバッファ2732は、ターゲットVM901から出力されるパケットについての出力通知を記憶する際に用いられる。パケットバッファ2733は、ターゲットVM901に入力または出力されるパケットを記憶する際に用いられる。
ミラーパケット制御装置100-iのホストOS922-iは、バックエンドドライバ2745を含む。バックエンドドライバ2745は、ハイパーバイザ921-iが有する記憶領域にある入力リングバッファ2741と、出力リングバッファ2742と、パケットバッファ2743とに対するアクセスを制御する。入力リングバッファ2741は、モニタVM902へ入力されるパケットについての入力通知を記憶する際に用いられる。出力リングバッファ2742は、モニタVM902から出力されるパケットについての出力通知を記憶する際に用いられる。パケットバッファ2743は、モニタVM902に入力または出力されるパケットを記憶する際に用いられる。
ターゲットVM901は、ハイパーバイザ921-iが有する記憶領域にある入力リングバッファ2731と、出力リングバッファ2732と、パケットバッファ2733とに対するアクセスを制御するフロントエンドドライバ2734を含む。モニタVM902は、ハイパーバイザ921-iが有する記憶領域にある入力リングバッファ2741と、出力リングバッファ2742と、パケットバッファ2743とに対するアクセスを制御するフロントエンドドライバ2744を含む。
仮想スイッチ923-iは、さらに、ミラーパケット生成部2721と、割り込み設定部2722と、割り込み解除部2723と、割り込みハンドラ2724と、パケット処理部2725とを含む。仮想スイッチ923-iは、さらに、リングバッファ管理テーブル2500と、ミラーパケットバッファ2600とを有する。
ミラーパケット生成部2721は、バックエンドドライバ2735のパケットバッファ2733にパケットが書き込まれていれば、パケットを複製したミラーパケットをモニタVM902へのポートに出力する。また、ミラーパケット生成部2721は、パケットを通常の宛先へのポートに出力する。ミラーパケット生成部2721は、具体的には、図38に後述するミラーリング処理を実行する。
割り込み設定部2722は、入力リングバッファ2731または出力リングバッファ2732への書き込みがあったときに割り込みを発生させるようにする。割り込み設定部2722は、例えば、入力リングバッファ2731または出力リングバッファ2732への書き込みがあったときに割り込みを発生させるように、ハイパーバイザ921-iに設定要求を送信する。割り込み設定部2722は、具体的には、図34に後述する割り込み設定処理を実行する。
割り込み解除部2723は、入力リングバッファ2731または出力リングバッファ2732への書き込みがあっても割り込みを発生させないようにする。割り込み解除部2723は、例えば、入力リングバッファ2731または出力リングバッファ2732への書き込みがあっても割り込みを発生させないように、ハイパーバイザ921-iに解除要求を送信する。割り込み解除部2723は、具体的には、図35に後述する割り込み解除処理を実行する。
割り込みハンドラ2724は、割り込みが発生した際に、入力リングバッファ2731または出力リングバッファ2732に記憶された入力通知または出力通知とパケットバッファ2733に格納されたパケットとをミラーパケットバッファ2600に退避させる。割り込みハンドラ2724は、具体的には、図36に後述する割り込み処理を実行する。
パケット処理部2725は、ミラーパケットバッファ2600から、入力リングバッファ2731または出力リングバッファ2732に入力通知または出力通知を戻し、パケットバッファ2733にパケットを戻す。パケット処理部2725は、具体的には、図37に後述するパケット処理を実行する。次に、図28~図31の説明に移行する。
図28において、ポートミラーマネージャ915は、管理者903の操作入力によって、ライブマイグレーション指示を受け付けたとする。ポートミラーマネージャ915は、ライブマイグレーション指示を受け付けたため、モニタVM902に対する、ミラーパケット制御装置100-1からミラーパケット制御装置100-nへのライブマイグレーションを開始したとする。
(28-1)割り込み設定部2722は、モニタVM902がライブマイグレーションを開始したことを検出すると、モニタVM902が停止状態になったと判定する。割り込み設定部2722は、モニタVM902が停止状態になったと判定すると、割り込み状態をオンに設定し、ハイパーバイザ921-1に割り込みを発生させるように設定する。
(28-2)仮想スイッチ923-1は、バックエンドドライバ2735を介して、入力する対象となるパケットをパケットバッファ2733に格納し、パケットを格納した記憶領域を示すアドレスを含む入力通知を入力リングバッファ2731に格納する。ハイパーバイザ921-1は、入力リングバッファ2731に入力通知が格納されたため、割り込みを発生させる。
(28-3)割り込みハンドラ2724は、モニタVM902が停止状態であり、割り込みが発生したため、入力リングバッファ2731に格納された入力通知を取り出し、入力リングバッファ2731からは入力通知を削除する。そして、割り込みハンドラ2724は、入力通知に含まれるアドレスに基づいて、パケットバッファ2733に格納されたパケットを取り出し、パケットバッファ2733からはパケットを削除する。割り込みハンドラ2724は、取り出した入力通知と、取り出したパケットを対応付けて、ミラーパケットバッファ2600に蓄積する。
これにより、仮想スイッチ923-1は、パケットバッファ2733に一旦登録されたパケットを、ターゲットVM901が読み出してしまう前に、ミラーパケットバッファ2600に移動し、パケットバッファ2733からは削除することができる。結果として、仮想スイッチ923-1は、ターゲットVM901にパケットが入力されることを一旦停止し、ターゲットVM901にパケットが入力されたことに応じてミラーパケットがモニタVM902に送信されることを防止することができる。仮想スイッチ923-1は、ターゲットVM901から応答が送信されることも防止することができ、パケットの送信元に応答待ちさせることにより、パケットの送信元からターゲットVM901にパケットが送信されることを一定時間停止させることができる。ここで、図29の説明に移行する。
図29において、(29-1)ターゲットVM901は、フロントエンドドライバ2734を介して、出力する対象となるパケットをパケットバッファ2733に格納する。そして、ターゲットVM901は、フロントエンドドライバ2734を介して、パケットを格納した記憶領域を示すアドレスを含む出力通知を出力リングバッファ2732に格納する。ハイパーバイザ921-1は、出力リングバッファ2732に出力通知が格納されたため、割り込みを発生させる。
(29-2)仮想スイッチ923-1の割り込みハンドラ2724は、モニタVM902が停止状態であり、割り込みが発生したため、出力リングバッファ2732に格納された出力通知を取り出し、出力リングバッファ2732からは出力通知を削除する。そして、仮想スイッチ923-1の割り込みハンドラ2724は、出力通知に含まれるアドレスに基づいて、パケットバッファ2733に格納されたパケットを取り出し、パケットバッファ2733からはパケットを削除する。仮想スイッチ923-1の割り込みハンドラ2724は、取り出した出力通知と、取り出したパケットを対応付けて、ミラーパケットバッファ2600に蓄積する。
これにより、仮想スイッチ923-1は、パケットバッファ2733に一旦登録されたパケットを、仮想スイッチ923-1で読み出して転送してしまう前に、ミラーパケットバッファ2600に移動し、パケットバッファ2733からは削除することができる。結果として、仮想スイッチ923-1は、ターゲットVM901からパケットが出力されることを一旦停止し、ターゲットVM901からパケットが出力されたことに応じてミラーパケットがモニタVM902に送信されることを防止することができる。ここで、図30の説明に移行する。
図30において、モニタVM902は、ライブマイグレーションを完了し、停止状態が解除されたとする。(30-1)割り込み解除部2723は、モニタVM902のライブマイグレーションが完了したことを検出すると、モニタVM902の停止状態が解除されたと判定する。割り込み解除部2723は、モニタVM902の停止状態が解除されたと判定すると、割り込み状態をオフに設定し、ハイパーバイザ921-1に割り込みを発生させないように設定する。
(30-2)パケット処理部2725は、バックエンドドライバ2735を介して、ミラーパケットバッファ2600に蓄積した入力通知を取り出して入力リングバッファ2731に戻す。そして、パケット処理部2725は、バックエンドドライバ2735を介して、ミラーパケットバッファ2600に蓄積した入力通知に対応するパケットをパケットバッファ2733に戻す。
また、パケット処理部2725は、バックエンドドライバ2735を介して、ミラーパケットバッファ2600に蓄積した出力通知を取り出して出力リングバッファ2732に戻す。そして、パケット処理部2725は、バックエンドドライバ2735を介して、ミラーパケットバッファ2600に蓄積した出力通知に対応するパケットをパケットバッファ2733に戻す。
これにより、仮想スイッチ923-1は、入力リングバッファ2731への入力通知の登録、および、出力リングバッファ2732への出力通知の登録を再開することができ、ターゲットVM901に対するパケットの入出力を再開することができる。ここで、図31の説明に移行する。
図31において、(31-1)ミラーパケット生成部2721は、ターゲットVM901についてのパケットの入出力が行われたことに応じて、入出力が行われたパケットを複製したミラーパケットを生成する。そして、ミラーパケット生成部2721は、生成したミラーパケットを、ホストOS922-nに移動され、ホストOS922-nで実行中であり、停止状態が解除されたモニタVM902に送信する。
ミラーパケット生成部2721は、具体的には、ターゲットVM901についてのパケットの入出力が行われたことに応じて、名称eth0が付与された、ミラーパケット制御装置100-nに通じるポート3101にミラーパケットを出力する。一方で、ミラーパケット制御装置100-nの仮想スイッチ923-nは、名称eth0が付与された、ミラーパケット制御装置100-1に通じるポート3102からミラーパケットを入力される。
ミラーパケット制御装置100-nの仮想スイッチ923-nは、名称vif2.0が付与された、ホストOS922-nに移動されて実行中であり、停止状態が解除されたモニタVM902に通じるポート3103から、ミラーパケットを出力する。これにより、仮想スイッチ923-1は、ポートミラーリングを再開することができる。
(動作例3における全体処理手順)
次に、図32を用いて、動作例3における全体処理手順の一例について説明する。
図32は、動作例3における全体処理手順の一例を示すフローチャートである。図32において、ミラーパケット制御装置100は、モニタVM902のライブマイグレーションにより、モニタVM902がサスペンドしたことを検出する(ステップS3201)。
次に、ミラーパケット制御装置100は、退避バッファを用いてミラーパケットの送信を停止する(ステップS3202)。そして、ミラーパケット制御装置100は、ライブマイグレーションの完了に応じて、動作例1や動作例2と同様に、ミラーパケット用経路管理テーブル500を更新する(ステップS3203)。
次に、ミラーパケット制御装置100は、ミラーパケットの送信を再開する(ステップS3204)。そして、ミラーパケット制御装置100は、全体処理を終了する。これにより、ミラーパケット制御装置100は、ライブマイグレーションの実施中、ライブマイグレーションの実施後のいずれにおいても、ミラーパケットが失われる確率を低減することができる。ここで、ステップS3201,S3202,S3204の処理は、具体的には、図33~図38に後述する各種処理によって実現される。
(状態管理処理手順の一例)
次に、図33を用いて、管理装置201のVM状態管理部2712が実行する、動作例3における状態管理処理手順の一例について説明する。
図33は、動作例3における状態管理処理手順の一例を示すフローチャートである。図33において、VM状態管理部2712は、仮想基盤から、モニタVM902の状態を示す通知を受信する(ステップS3301)。次に、VM状態管理部2712は、受信した通知に基づいて、VM状態管理テーブル2400を参照して、モニタVM902の状態の変化を検出する(ステップS3302)。
そして、VM状態管理部2712は、モニタVM902の状態がサスペンドになったか否かを判定する(ステップS3303)。ここで、サスペンドになった場合(ステップS3303:Yes)、VM状態管理部2712は、ステップS3304の処理に移行する。ステップS3304にて、VM状態管理部2712は、サスペンドになったモニタVM902のVMIDを割り込み設定部2722に出力し、割り込み設定部2722に図34に後述する割り込み設定処理を実行させる(ステップS3304)。そして、VM状態管理部2712は、ステップS3306の処理に移行する。
一方で、サスペンドではなくなった場合(ステップS3303:No)、VM状態管理部2712は、ステップS3305の処理に移行する。ステップS3305にて、VM状態管理部2712は、サスペンドではなくなったモニタVM902のVMIDを割り込み解除部2723に出力し、割り込み解除部2723に図35に後述する割り込み解除処理を実行させる(ステップS3305)。そして、VM状態管理部2712は、ステップS3306の処理に移行する。
ステップS3306にて、VM状態管理部2712は、VM状態管理テーブル2400を更新し(ステップS3306)、状態管理処理を終了する。これにより、VM状態管理部2712は、ミラーパケット制御装置100におけるモニタVM902の状態を管理することができる。
(割り込み設定処理手順の一例)
次に、図34を用いて、ミラーパケット制御装置100の割り込み設定部2722が実行する、動作例3における割り込み設定処理手順の一例について説明する。
図34は、動作例3における割り込み設定処理手順の一例を示すフローチャートである。図34において、割り込み設定部2722は、サスペンドになったモニタVM902のVMIDの入力を受け付ける(ステップS3401)。次に、割り込み設定部2722は、リングバッファ管理テーブル2500を参照して、入力リングバッファ2731および出力リングバッファ2732のHost Addrとサイズを取得する(ステップS3402)。そして、割り込み設定部2722は、入力リングバッファ2731または出力リングバッファ2732への書き込みがあったときに割り込みを発生させるように、ハイパーバイザ921-iに設定要求を送信する(ステップS3403)。
次に、割り込み設定部2722は、リングバッファ管理テーブル2500の割り込み状態のフィールドをオンに設定する(ステップS3404)。そして、割り込み設定部2722は、割り込み設定処理を終了する。これにより、割り込み設定部2722は、パケットバッファ2733に一旦登録されたパケットを、ターゲットVM901が読み出してしまう前に、または、仮想スイッチ923-iで読み出して転送してしまう前に、割り込みを発生させるようにすることができる。
(割り込み解除処理手順の一例)
次に、図35を用いて、ミラーパケット制御装置100の割り込み解除部2723が実行する、動作例3における割り込み解除処理手順の一例について説明する。
図35は、動作例3における割り込み解除処理手順の一例を示すフローチャートである。図35において、割り込み解除部2723は、サスペンドではなくなったモニタVM902のVMIDの入力を受け付ける(ステップS3501)。次に、割り込み解除部2723は、リングバッファ管理テーブル2500を参照して、入力リングバッファ2731および出力リングバッファ2732のHost Addrとサイズを取得する(ステップS3502)。そして、割り込み解除部2723は、入力リングバッファ2731または出力リングバッファ2732への書き込みがあっても割り込みを発生させないように、ハイパーバイザ921-iに解除要求を送信する(ステップS3503)。
次に、割り込み解除部2723は、リングバッファ管理テーブル2500の割り込み状態のフィールドをオフに設定する(ステップS3504)。そして、割り込み解除部2723は、割り込み解除処理を終了する。これにより、割り込み解除部2723は、割り込みを発生させないようにして、仮想スイッチ923-iの性能低下を抑制することができる。
(割り込み処理手順の一例)
次に、図36を用いて、ミラーパケット制御装置100の割り込みハンドラ2724が実行する、動作例3における割り込み処理手順の一例について説明する。
図36は、動作例3における割り込み処理手順の一例を示すフローチャートである。図36において、割り込みハンドラ2724は、割り込みが発生したことを検出する(ステップS3601)。次に、割り込みハンドラ2724は、入力リングバッファ2731または出力リングバッファ2732から入力通知または出力通知を読み出す(ステップS3602)。そして、割り込みハンドラ2724は、読み出した入力通知または出力通知からパケットのアドレスとサイズを読み出して、パケットバッファ2733に格納されたパケットを読み出す(ステップS3603)。
次に、割り込みハンドラ2724は、読み出したパケットについてのレコードを、ミラーパケットバッファ2600に追加する(ステップS3604)。そして、割り込みハンドラ2724は、追加したレコードに、読み出した入力通知または出力通知と、読み出したパケットとを設定する(ステップS3605)。その後、割り込みハンドラ2724は、割り込み処理を終了する。これにより、割り込みハンドラ2724は、モニタVM902が停止状態である間、ターゲットVM901についてパケットの入出力が行われることを防止することができ、モニタVM902にミラーパケットが送信されることを防止することができる。
(パケット処理手順の一例)
次に、図37を用いて、ミラーパケット制御装置100のパケット処理部2725が実行する、動作例3におけるパケット処理手順の一例について説明する。
図37は、動作例3におけるパケット処理手順の一例を示すフローチャートである。図37において、パケット処理部2725は、リングバッファ管理テーブル2500の割り込み状態のフィールドがオンであるか否かを判定する(ステップS3701)。ここで、オンである場合(ステップS3701:Yes)、パケット処理部2725は、ステップS3701の処理に戻る。
一方で、オンではない場合(ステップS3701:No)、パケット処理部2725は、ミラーパケットバッファ2600にレコードがあるか否かを判定する(ステップS3702)。ここで、レコードがない場合(ステップS3702:No)、パケット処理部2725は、パケット処理を終了する。
一方で、レコードがある場合(ステップS3702:Yes)、パケット処理部2725は、ミラーパケットバッファ2600から、まだ読み出していないレコードを読み出す(ステップS3703)。このとき、パケット処理部2725は、ミラーパケットバッファ2600の連番のフィールドを参照して、ミラーパケットバッファ2600に格納された順番に、レコードを読み出してもよい。
次に、パケット処理部2725は、読み出したレコードのパケットバッファ2733のアドレスに基づいて、パケットバッファ2733にパケットを書き込む(ステップS3704)。そして、パケット処理部2725は、パケットが送信対象であるか否かを判定する(ステップS3705)。ここで、送信対象である場合(ステップS3705:Yes)、パケット処理部2725は、出力リングバッファ2732に出力通知を書き込み(ステップS3706)、ステップS3708の処理に移行する。
一方で、送信対象ではない場合(ステップS3705:No)、パケット処理部2725は、入力リングバッファ2731に入力通知を書き込み(ステップS3707)、ステップS3708の処理に移行する。ステップS3708にて、パケット処理部2725は、ミラーパケットバッファ2600に、まだ読み出していないレコードがあるか否かを判定する(ステップS3708)。
ここで、まだ読み出していないレコードがある場合(ステップS3708:Yes)、パケット処理部2725は、ステップS3702の処理に戻る。一方で、読み出していないレコードがない場合(ステップS3708:No)、パケット処理部2725は、パケット処理を終了する。これにより、パケット処理部2725は、ターゲットVM901に対するパケットの入出力を再開させ、ターゲットVM901に対するパケットの入出力が再開したことに応じてモニタVM902へのミラーパケットの送信も再開させることができる。
(ミラーリング処理手順の一例)
次に、図38を用いて、ミラーパケット制御装置100のミラーパケット生成部2721が実行する、動作例3におけるミラーリング処理手順の一例について説明する。
図38は、動作例3におけるミラーリング処理手順の一例を示すフローチャートである。図38において、ミラーパケット生成部2721は、パケットバッファ2733にパケットが書き込まれているか否かを判定する(ステップS3801)。ここで、書き込まれていない場合(ステップS3801:No)、ミラーパケット生成部2721は、ステップS3801の処理に戻る。
一方で、書き込まれている場合(ステップS3801:Yes)、ミラーパケット生成部2721は、入力リングバッファ2731または出力リングバッファ2732に入力通知または出力通知が書き込まれているか否かを判定する(ステップS3802)。ここで、書き込まれていない場合(ステップS3802:No)、ミラーパケット生成部2721は、ステップS3807の処理に移行する。
一方で、書き込まれている場合(ステップS3802:Yes)、ミラーパケット生成部2721は、パケットの通信方向と、キャプチャ設定された通信方向とが一致するか否かを判定する(ステップS3803)。ここで、一致しない場合(ステップS3803:No)、ミラーパケット生成部2721は、ステップS3806の処理に移行する。
一方で、一致する場合(ステップS3803:Yes)、ミラーパケット生成部2721は、パケットを複製したミラーパケットを生成する(ステップS3804)。次に、ミラーパケット生成部2721は、生成したミラーパケットを、モニタVM902へのポートに出力する(ステップS3805)。そして、ミラーパケット生成部2721は、パケットを通常の宛先へのポートに出力する(ステップS3806)。
次に、ミラーパケット生成部2721は、パケットバッファ2733にパケットが残っているか否かを判定する(ステップS3807)。ここで、残っている場合(ステップS3807:Yes)、ミラーパケット生成部2721は、ステップS3801の処理に戻る。
一方で、残っていない場合(ステップS3807:No)、ミラーパケット生成部2721は、ミラーリング処理を終了する。これにより、ミラーパケット生成部2721は、ターゲットVM901についてパケットバッファ2733に格納されたパケットの入出力を行うことができる。また、ミラーパケット生成部2721は、パケットバッファ2733に格納されたパケットを複製したミラーパケットを、モニタVM902に送信することができる。
以上説明したように、ミラーパケット制御装置100によれば、モニタVM902の移動完了の通知を検出したことに応じて、第1対応情報を参照し、自装置へ移動完了したモニタVM902にミラーパケットを送信する送信元を特定することができる。ミラーパケット制御装置100によれば、特定した送信元が有する第2対応情報の削除指示を、送信元に送信することができる。これにより、ミラーパケット制御装置100は、モニタVM902に通じるポートを正しく特定することができない状態である可能性がある送信元に、第2対応情報を削除させ、第2対応情報を生成し直すように仕向けることができる。このため、ミラーパケット制御装置100は、送信元において、移動前のモニタVM902に通じるポートに対してミラーパケットを送信してしまうことを防止することができ、ミラーパケットが失われることを防止することができる。
ミラーパケット制御装置100によれば、自装置が有する第2対応情報の削除指示を受け付けたことに応じて、第2対応情報を削除することができる。ミラーパケット制御装置100によれば、自装置からモニタVM902にミラーパケットを送信する際、第2対応情報がない場合、自装置から複数のポートのそれぞれのポートを通じてミラーパケットを送信することができる。ミラーパケット制御装置100によれば、送信したミラーパケットに対する応答に基づいて第2対応情報を更新することができる。これにより、ミラーパケット制御装置100は、自装置が有する第2対応情報を生成し直し、モニタVM902に通じるポートを正しく特定することができるようにすることができ、ミラーパケットが失われる確率を低減することができる。
ミラーパケット制御装置100によれば、自装置からモニタVM902にミラーパケットを送信する際、第2対応情報を参照し、自装置からモニタVM902へのポートを通じてミラーパケットを送信することができる。これにより、ミラーパケット制御装置100は、ミラーパケットが失われずに、モニタVM902に受信されるようにすることができる。
ミラーパケット制御装置100によれば、自装置の仮想スイッチに接続されたモニタVM902の停止状態を検出することができる。ミラーパケット制御装置100によれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットVM901についての入出力の対象となるパケットについては入出力バッファとは異なる退避バッファに蓄積することができる。ミラーパケット制御装置100によれば、停止状態が解除されると、退避バッファに蓄積したパケットを、入出力バッファに登録することができる。これにより、ミラーパケット制御装置100は、ライブマイグレーションの実施中、ライブマイグレーションの実施後のいずれにおいても、ミラーパケットが失われる確率を低減することができる。
ミラーパケット制御装置100によれば、自装置に移動完了したモニタVM902の識別情報を含む、第2対応情報のうち、送信元から自装置に移動完了したモニタVM902へのポートの識別情報についての削除指示を送信することができる。これにより、ミラーパケット制御装置100は、送信元において第2対応情報を更新する際にかかる処理量の低減化を図ることができる。
ミラーパケット制御装置100によれば、GARPパケットを受信することができる。これにより、ミラーパケット制御装置100は、仮想基盤に新たな機能を追加しなくても、他装置から自装置へのモニタVM902の移動完了の通知を検出することができる。
なお、本実施の形態で説明したミラーパケット制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明したミラーパケット制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明したミラーパケット制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第1対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第2対応情報の削除指示を、前記送信元に送信する、
処理を実行させることを特徴とするミラーパケット制御プログラム。
(付記2)前記コンピュータに、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す第3対応情報の削除指示を受け付けたことに応じて、前記第3対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記第3対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記第3対応情報を更新する、
処理を実行させることを特徴とする付記1に記載のミラーパケット制御プログラム。
(付記3)前記コンピュータに、
自装置から仮想マシンにミラーパケットを送信する際、前記第3対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がある場合、自装置から当該仮想マシンへのポートを通じて当該ミラーパケットを送信する、
処理を実行させることを特徴とする付記2に記載のミラーパケット制御プログラム。
(付記4)前記コンピュータに、
自装置の仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
処理を実行させることを特徴とする付記2または3に記載のミラーパケット制御プログラム。
(付記5)前記削除指示は、自装置に移動完了した前記仮想マシンの識別情報を含み、前記第2対応情報のうち、前記送信元から自装置に移動完了した前記仮想マシンへのポートの識別情報についての削除指示である、ことを特徴とする付記1~4のいずれか一つに記載のミラーパケット制御プログラム。
(付記6)前記通知は、GARP(Gratuitous Address Resolution Protocol)パケットである、ことを特徴とする付記1~5のいずれか一つに記載のミラーパケット制御プログラム。
(付記7)コンピュータが、
他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第1対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第2対応情報の削除指示を、前記送信元に送信する、
処理を実行することを特徴とするミラーパケット制御方法。
(付記8)他装置から自装置への仮想マシンの移動完了の通知を検出したことに応じて、仮想マシンの識別情報と、当該仮想マシンにミラーパケットを送信する送信元の識別情報とを対応付けて表す第1対応情報を参照し、自装置へ移動完了した前記仮想マシンにミラーパケットを送信する送信元を特定し、
特定した前記送信元が有する、前記送信元からミラーパケットを送信される仮想マシンの識別情報と、前記送信元から当該仮想マシンへのポートの識別情報とを対応付けて表す第2対応情報の削除指示を、前記送信元に送信する、
制御部を有することを特徴とするミラーパケット制御装置。
(付記9)コンピュータに、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す対応情報の削除指示を受け付けたことに応じて、前記対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記対応情報を更新する、
処理を実行させることを特徴とするミラーパケット制御プログラム。
(付記10)コンピュータが、
自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す対応情報の削除指示を受け付けたことに応じて、前記対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記対応情報を更新する、
処理を実行することを特徴とするミラーパケット制御方法。
(付記11)自装置が有する、自装置からミラーパケットを送信される仮想マシンの識別情報と、自装置から当該仮想マシンへのポートの識別情報とを対応付けて表す対応情報の削除指示を受け付けたことに応じて、前記対応情報を削除し、
自装置から仮想マシンにミラーパケットを送信する際、前記対応情報を参照し、当該仮想マシンの識別情報に対応付けられた、自装置から当該仮想マシンへのポートの識別情報がない場合、自装置から複数のポートのそれぞれのポートを通じて当該ミラーパケットを送信し、送信した当該ミラーパケットに対する応答に基づいて前記対応情報を更新する、
制御部を有することを特徴とするミラーパケット制御装置。