JP6708007B2 - ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置 - Google Patents

ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置 Download PDF

Info

Publication number
JP6708007B2
JP6708007B2 JP2016122109A JP2016122109A JP6708007B2 JP 6708007 B2 JP6708007 B2 JP 6708007B2 JP 2016122109 A JP2016122109 A JP 2016122109A JP 2016122109 A JP2016122109 A JP 2016122109A JP 6708007 B2 JP6708007 B2 JP 6708007B2
Authority
JP
Japan
Prior art keywords
packet
input
output
buffer
mirror
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016122109A
Other languages
English (en)
Other versions
JP2017227998A (ja
Inventor
鈴木 和宏
和宏 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016122109A priority Critical patent/JP6708007B2/ja
Priority to US15/608,445 priority patent/US20170366638A1/en
Publication of JP2017227998A publication Critical patent/JP2017227998A/ja
Application granted granted Critical
Publication of JP6708007B2 publication Critical patent/JP6708007B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Description

本発明は、ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置に関する。
従来、仮想スイッチが有する特定のポートを通じてターゲットVM(Virtual Machine)にパケットが送受信される際、ターゲットVMに送受信されるパケットを複製したミラーパケットを生成して、別のポートを通じてモニタVMに転送するポートミラーリングの技術がある。
先行技術としては、例えば、メモリコピー済の領域に対するメモリ書込みは、メモリコピー先の計算機にも書込み、メモリコピー中の領域に対するメモリ書込みは、メモリコピーのためのメモリ書込みとマージするものがある。また、例えば、複数の仮想マシン間を流れるパケットからミラーリングされたパケットを収集し、トラフィック・経路情報を分析した結果、物理サーバと仮想マシンとの対応関係に変更があったことを認識した場合、監視装置へ構成情報の取得を指示する技術がある。
特開2011−221945号公報 特開2012−4781号公報
しかしながら、上述した従来技術では、モニタVMがミラーパケットを受信することができない場合がある。例えば、モニタVMはライブマイグレーションを行う際に一時的に停止することがあり、モニタVMの停止中にターゲットVMが送信または受信したパケットを複製したミラーパケットは、モニタVMが受信することができずに失われてしまう。
1つの側面では、本発明は、ミラーパケットが失われる確率を低減することができるミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置を提供することを目的とする。
本発明の一側面によれば、仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録するミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置が提案される。
本発明の一態様によれば、ミラーパケットが失われる確率を低減することができるという効果を奏する。
図1は、実施の形態にかかるミラーパケット制御方法の一実施例を示す説明図である。 図2は、ポートミラーリングシステム200の一例を示す説明図である。 図3は、ミラーパケット制御装置100のハードウェア構成例を示すブロック図である。 図4は、VM状態管理テーブル400の記憶内容の一例を示す説明図である。 図5は、リングバッファ管理テーブル500の記憶内容の一例を示す説明図である。 図6は、ミラーパケットバッファ600の記憶内容の一例を示す説明図である。 図7は、ミラーパケット制御装置100の機能的構成例を示すブロック図である。 図8は、ポートミラーリングシステム200のモジュール構成例を示す説明図である。 図9は、ポートミラーリングシステム200の動作例1を示す説明図(その1)である。 図10は、ポートミラーリングシステム200の動作例1を示す説明図(その2)である。 図11は、ポートミラーリングシステム200の動作例1を示す説明図(その3)である。 図12は、ポートミラーリングシステム200の動作例1を示す説明図(その4)である。 図13は、状態管理処理手順の一例を示すフローチャートである。 図14は、割り込み設定処理手順の一例を示すフローチャートである。 図15は、割り込み解除処理手順の一例を示すフローチャートである。 図16は、割り込み処理手順の一例を示すフローチャートである。 図17は、パケット処理手順の一例を示すフローチャートである。 図18は、ミラーリング処理手順の一例を示すフローチャートである。 図19は、モニタVM802の停止時の動作の流れの一例を示すシーケンス図である。 図20は、モニタVM802の停止解除時の動作の流れの一例を示すシーケンス図である。 図21は、ポートミラーリングシステム200の動作例2を示す説明図である。 図22は、判定処理手順の一例を示すフローチャートである。 図23は、ポートミラーリングシステム200の動作例3を示す説明図である。 図24は、状態判定処理手順の一例を示すフローチャートである。
以下に、図面を参照して、本発明にかかるミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置の実施の形態を詳細に説明する。
(実施の形態にかかるミラーパケット制御方法の一実施例)
図1は、実施の形態にかかるミラーパケット制御方法の一実施例を示す説明図である。ここで、ミラーパケット制御装置100は、仮想スイッチを有し、ポートミラーリングを実現するコンピュータである。
ここで、例えば、仮想スイッチが、仮想スイッチから第1仮想マシンへのポートを通じて送受信されるパケットを複製したミラーパケットを、仮想スイッチから第2仮想マシンへのポートを通じて転送する場合が考えられる。以下の説明では、第1仮想マシンを「ターゲットVM」と表記する場合がある。また、以下の説明では、第2仮想マシンを「モニタVM」と表記する場合がある。
しかしながら、この場合、モニタVMがミラーパケットを受信することができないことがある。例えば、モニタVMはライブマイグレーションを行う際などに一時的に停止することがあり、モニタVMの停止中にターゲットVMが送信または受信したパケットを複製したミラーパケットは、モニタVMが受信することができずに失われてしまう。また、モニタVMは、ミラーパケットについて再送要求することも困難である。
これに対し、下記(a)や(b)に示すようにして、モニタVMにミラーパケットが受信されやすくする場合が考えられる。しかしながら、この場合であっても、モニタVMがミラーパケットを受信することができなかったり、仮想スイッチの性能低下を招いてしまったりすることがあり、好ましくない。
(a)例えば、モニタVMがライブマイグレーションを行っている間は、ターゲットVMをサスペンドしておく場合が考えられる。この場合、モニタVMがライブマイグレーションを行っている間にターゲットVMからパケットが送信されることについて抑制することができ、ターゲットVMから送信されるパケットを複製したミラーパケットが送信されることについて抑制することができる。しかしながら、この場合、モニタVMがライブマイグレーションを行っている間に、ターゲットVMへとパケットが送信されることについては抑制することができない。このため、ターゲットVMへと送信されるパケットを複製したミラーパケットが停止中のモニタVMに送信されてしまい、ミラーパケットはモニタVMが受信することができずに失われることがある。
(b)例えば、仮想スイッチからターゲットVMへのポートを通じて送受信されるパケットを一旦退避バッファに保存し、仮想スイッチからターゲットVMへのポートを通じて退避バッファから取り出したパケットを送受信する場合が考えられる。しかしながら、この場合、常にパケットが退避バッファに一旦保存されることになり、仮想スイッチからターゲットVMへのポートを通じてパケットを送受信する際にかかる時間の増大化を招き、仮想スイッチの性能低下を招くことがある。
そこで、本実施の形態では、仮想スイッチの性能低下を抑制しつつ、モニタVMの停止中にミラーパケットが送信されることを防止することにより、ミラーパケットが失われる確率を低減することができるミラーパケット制御方法について説明する。
図1の例では、ミラーパケット制御装置100のハードウェア110において、ハイパーバイザ120が実行されている。ハイパーバイザ120において、ホストOS(Operating System)130が実行されている。ホストOS130において、ターゲットVM101とモニタVM102が実行されている。
ホストOS130は、仮想スイッチ140を含む。ホストOS130は、ハイパーバイザ120が有する記憶領域にあって、ターゲットVM101についてのパケットの入出力に用いられる入出力バッファ170へのアクセスを制御するバックエンドドライバ171を含む。また、ホストOS130は、ハイパーバイザ120が有する記憶領域にあって、モニタVM102についてのパケットの入出力に用いられる入出力バッファ180へのアクセスを制御するバックエンドドライバ181を含む。
ターゲットVM101は、ハイパーバイザ120が有する記憶領域にあって、ターゲットVM101についてのパケットの入出力に用いられる入出力バッファ170へのアクセスを制御するフロントエンドドライバ172を含む。モニタVM102は、ハイパーバイザ120が有する記憶領域にあって、モニタVM102についてのパケットの入出力に用いられる入出力バッファ180へのアクセスを制御するフロントエンドドライバ182を含む。バックエンドドライバとフロントエンドドライバとは、併せてPV(Para Virtual)ドライバと呼ばれる。仮想スイッチ140は、ミラーパケット生成部150を含む。仮想スイッチ140は、退避バッファ160を有する。
仮想スイッチ140は、入出力バッファ170を介してターゲットVM101についてのパケットの入出力が行われるように制御する。仮想スイッチ140は、例えば、ホストOS130内のバックエンドドライバ171と、ターゲットVM101内のフロントエンドドライバ172との協調動作によって、ターゲットVM101についてのパケットの入出力が行われるようにする。
仮想スイッチ140は、具体的には、入出力バッファにパケットを登録することにより、ターゲットVM101にパケットを入力する。また、仮想スイッチ140は、ターゲットVM101により入出力バッファに登録されたパケットを取り出すことにより、ターゲットVM101からパケットを出力する。登録とは、入出力バッファに、パケットおよびパケットの入出力通知を記憶することである。
これにより、仮想スイッチ140は、ターゲットVM101に通じるポートを実現する。図1の例では、ターゲットVM101に通じるポートは、名称vif1.0が付与される。図1の例では、ターゲットVM101において仮想スイッチ140に通じるポートは、名称eth0が付与される。仮想スイッチ140は、同様に、モニタVM102に通じるポートを実現する。図1の例では、モニタVM102に通じるポートは、名称vif2.0が付与される。図1の例では、モニタVM102において仮想スイッチ140に通じるポートは、名称eth0が付与される。異なるVMにおけるポートの名称は重複してもよい。
ミラーパケット生成部150は、入出力バッファ170に登録されたパケットの入出力が行われたことに応じて、入出力バッファ170に登録されたパケットを複製したミラーパケットを、モニタVM102に送信する。このため、ミラーパケット生成部150は、モニタVM102が停止状態であっても、入出力バッファ170に登録されたパケットの入出力が行われてしまうと、ミラーパケットをモニタVM102に送信してしまう可能性がある。
そこで、図1の例では、仮想スイッチ140は、モニタVM102が停止状態である間は、入出力バッファ170にパケットが登録されたままにならないように制御し、モニタVM102が停止状態から解除された後に入出力バッファ170にパケットを登録し直す。
(1−1)仮想スイッチ140は、モニタVM102の停止状態を検出する。停止状態とは、モニタVM102がパケットを受信することができない状態である。停止状態は、例えば、モニタVM102がライブマイグレーションを完了する直前に一時的に遷移する状態である。停止状態は、モニタVM102がライブマイグレーションを行う場合以外における状態であってもよい。これによれば、仮想スイッチ140は、モニタVM102が停止中であり、入出力バッファ170に登録されたパケットを複製したミラーパケットをモニタVM102に送信すると、ミラーパケットが失われる可能性がある状態になったことを検出することができる。
(1−2)仮想スイッチ140は、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットVM101についての入出力の対象となるパケットについては、入出力バッファ170とは異なる退避バッファ160に蓄積する。停止状態の解除は、例えば、モニタVM102がライブマイグレーションを完了することによって行われる。仮想スイッチ140は、例えば、入出力バッファ170に一旦登録されたパケットを、読み出して転送してしまう前に、あるいは、ターゲットVM101が読み出してしまう前に退避バッファ160に移動しておき、入出力バッファ170からは削除する。
これによれば、仮想スイッチ140は、入出力バッファ170に登録されたパケットについてターゲットVM101に対して入出力が行われてしまうことを防止することができる。そして、仮想スイッチ140は、ミラーパケット生成部150が入出力バッファ170に登録されたパケットを複製したミラーパケットを、停止状態であるモニタVM102に送信してしまうことを防止することができる。
(1−3)仮想スイッチ140は、停止状態が解除されると、退避バッファ160に蓄積しておいたパケットを、入出力バッファ170に登録し直す。また、仮想スイッチ140は、停止状態が解除されてからターゲットVM101についての入出力の対象となるパケットについては、入出力バッファ170に登録する。これによれば、仮想スイッチ140は、ターゲットVM101に対するパケットの入出力を再開させ、ターゲットVM101に対するパケットの入出力が再開したことに応じてモニタVM102へのミラーパケットの送信も再開させることができる。
これにより、仮想スイッチ140は、モニタVM102が停止状態でなければ、ターゲットVM101に対して入出力バッファ170に登録されたパケットの入出力を行うことができ、性能低下を抑制することができる。そして、仮想スイッチ140は、モニタVM102が停止状態になれば、ミラーパケットを停止中のモニタVM102に送信してしまうことを防止し、ミラーパケットがモニタVM102に受信されず失われる確率を低減することができる。
また、仮想スイッチ140は、モニタVM102の停止状態が解除された後は、ターゲットVM101に対して入出力バッファ170に登録し直されたパケットの入出力を行うことができる。そして、仮想スイッチ140は、入出力バッファ170に登録し直されたパケットの入出力が行われたことに応じて、入出力バッファ170に登録し直されたパケットを複製したミラーパケットを、停止状態が解除されたモニタVM102に送信することができる。
(ポートミラーリングシステム200の一例)
次に、図2を用いて、図1に示したミラーパケット制御装置100を適用した、ポートミラーリングシステム200の一例について説明する。
図2は、ポートミラーリングシステム200の一例を示す説明図である。図2において、ポートミラーリングシステム200は、複数のミラーパケット制御装置100と、管理装置201とを含む。ポートミラーリングシステム200において、複数のミラーパケット制御装置100と、管理装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。
ミラーパケット制御装置100は、図1に示したように、モニタVM102が停止状態である間にはミラーパケットがモニタVM102に送信されないように制御しつつ、ポートミラーリングを実現するコンピュータである。ミラーパケット制御装置100は、例えば、サーバである。それぞれのミラーパケット制御装置100が有する仮想スイッチ140は、例えば、VLAN(Virtual Local Area Network)を介して接続される。以下の説明では、それぞれのミラーパケット制御装置100を区別する場合には「ミラーパケット制御装置100−i」と表記する場合がある。iは、1〜nの整数である。nは、ミラーパケット制御装置100の数である。
管理装置201は、ポートミラーマネージャを実行するコンピュータである。ポートミラーマネージャは、例えば、それぞれのミラーパケット制御装置100におけるVMが停止状態であるか否かを監視し、それぞれのミラーパケット制御装置100におけるVMの状態を管理する。ポートミラーマネージャは、例えば、ターゲットVM101について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタVM102に送信するかを設定し、ポートミラーリングを管理する。管理装置201は、例えば、サーバである。ここでは、管理装置201が、ミラーパケット制御装置100とは異なる装置である場合について説明したが、これに限らない。例えば、管理装置201は、いずれかのミラーパケット制御装置100と一体であってもよい。
(ミラーパケット制御装置100のハードウェア構成例)
次に、図3を用いて、図2に示したポートミラーリングシステム200に含まれるミラーパケット制御装置100のハードウェア構成例について説明する。
図3は、ミラーパケット制御装置100のハードウェア構成例を示すブロック図である。図3において、ミラーパケット制御装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、ディスクドライブ304と、ディスク305と、記録媒体I/F306とを有する。また、各構成部は、バス300によってそれぞれ接続される。
ここで、CPU301は、ミラーパケット制御装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。各種プログラムは、例えば、実施の形態にかかるミラーパケット制御プログラムを含んでもよい。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータに対するデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
ディスクドライブ304は、CPU301の制御に従ってディスク305に対するデータのリード/ライトを制御する。ディスクドライブ304は、例えば、磁気ディスクドライブである。ディスク305は、ディスクドライブ304の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク305は、例えば、磁気ディスク、光ディスクなどである。
記録媒体I/F306は、外部の記録媒体310に接続され、外部の記録媒体310と内部のインターフェースを司り、外部の記録媒体310に対するデータの入出力を制御する。記録媒体I/F306は、例えば、USB(Universal Serial Bus)ポートである。外部の記録媒体310は、例えば、USBメモリである。外部の記録媒体310は、実施の形態にかかるミラーパケット制御プログラムを記憶してもよい。
ミラーパケット制御装置100は、上述した構成部のほか、例えば、SSD(Solid State Drive)、半導体メモリ、キーボード、マウス、ディスプレイなどを有してもよい。また、ミラーパケット制御装置100は、ディスクドライブ304およびディスク305の代わりに、SSDおよび半導体メモリなどを有していてもよい。
(管理装置201のハードウェア構成例)
ここで、管理装置201のハードウェア構成例については、図3に示したミラーパケット制御装置100のハードウェア構成例と同様であるため、説明を省略する。
(VM状態管理テーブル400の記憶内容)
次に、図4を用いて、VM状態管理テーブル400の記憶内容の一例について説明する。VM状態管理テーブル400は、例えば、管理装置201の記憶領域により実現される。
図4は、VM状態管理テーブル400の記憶内容の一例を示す説明図である。図4に示すように、VM状態管理テーブル400は、VMIDと、ホストIDと、状態とのフィールドを有する。VM状態管理テーブル400は、VMごとに各フィールドに情報を設定することにより、VM状態管理情報がレコードとして記憶される。
VMIDのフィールドには、VMを一意に識別する情報であるVMIDが設定される。ホストIDのフィールドには、ホストOSを一意に識別する情報であるホストIDが設定される。状態のフィールドには、VMの状態が設定される。VMの状態は、例えば、VMが動作中であれば「ランニング(RUNNING)」であり、VMが停止中であれば「サスペンド(SUSPENDED)」である。
VM状態管理テーブル400は、管理装置201によって生成され更新される。管理装置201は、VM状態管理テーブル400を用いることにより、それぞれのミラーパケット制御装置100におけるVMの状態を管理することができる。そして、管理装置201は、VM状態管理テーブル400を参照することにより、ターゲットVM101を実行中であるミラーパケット制御装置100に、モニタVM102の状態がサスペンドになったことを通知することができる。また、管理装置201は、VM状態管理テーブル400を参照することにより、ターゲットVM101を実行中であるミラーパケット制御装置100に、モニタVM102の状態がサスペンドからランニングに戻ったことを通知することができる。
(リングバッファ管理テーブル500の記憶内容)
次に、図5を用いて、リングバッファ管理テーブル500の記憶内容の一例について説明する。リングバッファ管理テーブル500は、例えば、図3に示したミラーパケット制御装置100のメモリ302やディスク305の記憶領域により実現される。
ここで、リングバッファとは、いずれかのVMについてのパケットの入出力に用いられる記憶領域である。リングバッファは、例えば、図1に示した入出力バッファ170に対応し、図1に示した入出力バッファ170の一部となる記憶領域である。パケットの入力に用いられる入力リングバッファと、パケットの出力に用いられる出力リングバッファとが別々にあってもよい。
図5は、リングバッファ管理テーブル500の記憶内容の一例を示す説明図である。図5に示すように、リングバッファ管理テーブル500は、VMIDと、Guest Addrと、Host Addrと、リングバッファサイズと、割り込み状態とのフィールドを有する。リングバッファ管理テーブル500は、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)」である。
リングバッファ管理テーブル500は、ミラーパケット制御装置100によって生成され更新される。ミラーパケット制御装置100は、リングバッファ管理テーブル500を用いることにより、VMに対応するリングバッファを管理することができる。そして、ミラーパケット制御装置100は、リングバッファ管理テーブル500を参照して、リングバッファへの書き込みがあったときに割り込みを発生させるようにハイパーバイザ120に設定することができる。
(ミラーパケットバッファ600の記憶内容)
次に、図6を用いて、ミラーパケットバッファ600の記憶内容の一例について説明する。ミラーパケットバッファ600は、例えば、図3に示したミラーパケット制御装置100のメモリ302やディスク305の記憶領域により実現される。
図6は、ミラーパケットバッファ600の記憶内容の一例を示す説明図である。図6に示すように、ミラーパケットバッファ600は、連番と、VMIDと、方向と、addrと、パケットサイズと、パケットと、送信受信通知とのフィールドを有する。ミラーパケットバッファ600は、パケットごとに各フィールドに情報を設定することにより、ミラーパケット制御情報がレコードとして記憶される。
連番のフィールドには、レコードの番号である連番が設定される。VMIDのフィールドには、VMを一意に識別する情報であるVMIDが設定される。方向のフィールドには、VMに対するパケットの通信方向が設定される。方向は、例えば、VMにパケットを受信させる場合には「受信」であり、VMからパケットが送信される場合には「送信」である。addrのフィールドには、パケットの宛先が設定される。パケットサイズのフィールドには、パケットのサイズが設定される。パケットのフィールドには、パケットの本体が設定される。送信受信通知のフィールドには、パケットの送信を要求する出力通知またはパケットの受信を要求する入力通知が設定される。
ミラーパケットバッファ600は、ミラーパケット制御装置100によって生成される。ミラーパケット制御装置100は、モニタVM102の停止中に、リングバッファからミラーパケットバッファ600にパケットを退避することができ、停止中のモニタVM102にミラーパケットが送信されないようにすることができる。ミラーパケット制御装置100は、具体的には、リングバッファにパケットを再び登録する際に用いられる情報を、ミラーパケットバッファ600に蓄積することができる。
(ミラーパケット制御装置100の機能的構成例)
次に、図7を用いて、ミラーパケット制御装置100の機能的構成例について説明する。図7は、ミラーパケット制御装置100の機能的構成例を示すブロック図である。ミラーパケット制御装置100は、検出部701と、退避部702と、登録部703と、出力部704とを含む。
検出部701〜出力部704は、制御部となる機能であり、例えば、図3に示したメモリ302やディスク305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、図3に示したメモリ302やディスク305などの記憶領域に記憶される。
検出部701は、第1仮想マシンについての入出力に用いられる入出力バッファ170に登録されたパケットを複製したミラーパケットが出力される第2仮想マシンの停止状態を検出する。第1仮想マシンとは、仮想スイッチ140に接続され、パケットの入出力が行われるVMである。第1仮想マシンは、例えば、ターゲットVM101である。
入出力バッファ170とは、ターゲットVM101についてのパケットの入出力に用いられる記憶領域である。入出力バッファ170は、例えば、入力リングバッファと、出力リングバッファと、パケットバッファとの組み合わせである。入力リングバッファは、パケットの入力通知を記憶する記憶領域である。出力リングバッファは、パケットの出力通知を記憶する記憶領域である。パケットバッファは、入力または出力の対象になるパケットを記憶する記憶領域である。入力リングバッファと、出力リングバッファと、パケットバッファとについては、図8に後述する。
第2仮想マシンとは、仮想スイッチ140に接続され、ミラーパケットが出力されるVMである。第2仮想マシンは、例えば、仮想スイッチ140に直接接続されていなくてもよい。第2仮想マシンは、仮想スイッチ140のいずれかのポートから通じる他の仮想スイッチ140に接続されてもよい。第2仮想マシンは、例えば、モニタVM102である。
検出部701は、例えば、第2仮想マシンが動作中の演算装置から他の演算装置にライブマイグレーションを開始したことに応じて、第2仮想マシンの停止状態を検出する。演算装置は、例えば、ミラーパケット制御装置100である。検出部701は、具体的には、モニタVM102がライブマイグレーションを開始したとき、モニタVM102が停止状態になったことを検出する。検出部701は、具体的には、管理装置201からモニタVM102の状態を通知されることにより、モニタVM102が停止状態になったことを検出してもよい。検出部701は、具体的には、モニタVM102に対してポーリングを行うことにより、モニタVM102が停止状態になったことを検出してもよい。
検出部701は、例えば、第2仮想マシンが動作中の演算装置から他の演算装置にライブマイグレーションする場合において、動作中の演算装置から他の演算装置への第2仮想マシンに関する情報の転送量を監視してもよい。そして、検出部701は、転送量が閾値を下回ったことに応じて、第2仮想マシンの停止状態を検出する。これにより、検出部701は、モニタVM102が停止中であり、ミラーパケットをモニタVM102に送信すると、ミラーパケットが失われる可能性がある状態になったことを検出することができる。
検出部701は、第2仮想マシンの停止状態の解除を検出する。検出部701は、例えば、モニタVM102の停止状態の解除を検出する。検出部701は、具体的には、管理装置201からモニタVM102の状態を通知されることにより、モニタVM102が停止状態になったことを検出する。検出部701は、具体的には、モニタVM102に対してポーリングを行うことにより、モニタVM102の停止状態の解除を検出してもよい。
これにより、検出部701は、モニタVM102が動作中であり、ミラーパケットをモニタVM102に送信しても、ミラーパケットが失われない状態になったことを検出することができる。検出部701の動作は、具体的には、ポートミラーリングシステム200においては、図8に後述する割り込み設定部や割り込み解除部、または、図23に後述するVM状態判定部などによって実現される。
退避部702は、停止状態が検出されてから停止状態が解除されるまでの期間において第1仮想マシンについての入出力の対象となるパケットについては入出力バッファ170とは異なる退避バッファ160に蓄積しておく。退避部702は、例えば、入出力バッファ170に一旦登録されたパケットを、仮想スイッチ140で読み出して転送してしまう前に、あるいは、ターゲットVM101が読み出してしまう前に退避バッファ160に移動し、入出力バッファ170からは削除する。
退避部702は、仮想スイッチ140から第1仮想マシンに入力されるパケットについて複製しない状態に設定された場合には、第2仮想マシンの停止状態が検出されたことに応じて第1仮想マシンを停止してもよい。退避部702は、例えば、ターゲットVM101について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタVM102に送信する設定であるかを判定する。そして、退避部702は、ターゲットVM101について入力されるパケットを複製しなくてよい設定であれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットVM101を停止する。
この場合、退避部702は、停止状態が検出されてから停止状態が解除されるまでの期間において第1仮想マシンについての入出力の対象となるパケットについて退避バッファ160に蓄積しない。退避部702は、例えば、ターゲットVM101についての入出力の対象となるパケットを、退避バッファ160に蓄積せず、入出力バッファ170に登録する。
これにより、退避部702は、モニタVM102が停止状態である間、ターゲットVM101に対してパケットの入出力が行われることを防止することができ、モニタVM102にミラーパケットが送信されることを防止することができる。退避部702の動作は、具体的には、ポートミラーリングシステム200においては、図8に後述する割り込みハンドラなどによって実現される。
登録部703は、停止状態が解除されると、退避バッファ160に蓄積しておいたパケットを、入出力バッファ170に登録する。登録部703は、例えば、退避バッファ160に蓄積した順序で、退避バッファ160に蓄積しておいたパケットを、入出力バッファ170に登録する。
これにより、登録部703は、ターゲットVM101に対するパケットの入出力を再開させ、ターゲットVM101に対するパケットの入出力が再開したことに応じてモニタVM102へのミラーパケットの送信も再開させることができる。また、登録部703は、入出力の順番を変えずに、ターゲットVM101に対するパケットの入出力が行われるようにすることができる。登録部703の動作は、具体的には、ポートミラーリングシステム200においては、図8に後述するパケット処理部などによって実現される。
出力部704は、入出力バッファ170に登録したパケットについて第1仮想マシンに対して入出力を行うとともに、入出力バッファ170に登録したパケットを複製したミラーパケットを第2仮想マシンに出力する。出力部704は、例えば、入出力バッファ170に登録し直されたパケットについてターゲットVM101に対して入出力を行う。また、出力部704は、入出力バッファ170に登録し直されたパケットを複製したミラーパケットをモニタVM102に送信する。
これにより、出力部704は、モニタVM102の停止状態が解除された後は、ターゲットVM101に対して入出力バッファ170に登録し直されたパケットの入出力を行うことができる。そして、出力部704は、入出力バッファ170に登録し直されたパケットの入出力が行われたことに応じて、入出力バッファ170に登録し直されたパケットを複製したミラーパケットを、停止状態が解除されたモニタVM102に送信することができる。出力部704の動作は、具体的には、ポートミラーリングシステム200においては、図8に後述するミラーパケット生成部などによって実現される。
(ポートミラーリングシステム200のモジュール構成例)
次に、図8を用いて、図7に示した各機能部の動作を実現するためのポートミラーリングシステム200のモジュール構成例について説明する。
図8は、ポートミラーリングシステム200のモジュール構成例を示す説明図である。図8の例では、管理装置201のハードウェア810において、管理装置201のハイパーバイザ811が実行されている。管理装置201のハイパーバイザ811において、ポートミラーマネージャ812が実行されている。ポートミラーマネージャ812は、ポートミラー構成部813と、VM状態管理部814とを含む。ポートミラーマネージャ812は、VM状態管理テーブル400を有する。また、管理装置201のハイパーバイザ811はなくてもよい。
ポートミラー構成部813は、ターゲットVM801について入力されるパケットおよび出力されるパケットのうち、いずれのパケットを複製してモニタVM802に送信するかを設定し、ポートミラーリングを管理する。VM状態管理部814は、それぞれのミラーパケット制御装置100におけるVMが停止状態であるか否かを監視し、それぞれのミラーパケット制御装置100におけるVMの状態を管理する。
また、ミラーパケット制御装置100−1のハードウェア820において、ミラーパケット制御装置100−1のハイパーバイザ821が実行されている。ミラーパケット制御装置100−1のハイパーバイザ821において、ミラーパケット制御装置100−1のホストOS822が実行されている。ミラーパケット制御装置100−1のホストOS822において、ターゲットVM801と、モニタVM802とが実行されている。
ミラーパケット制御装置100−1のホストOS822は、ハイパーバイザ821が有する記憶領域にある入力リングバッファ831と、出力リングバッファ832と、パケットバッファ833とに対するアクセスを制御するバックエンドドライバ835を含む。入力リングバッファ831は、ターゲットVM801へ入力されるパケットについての入力通知を記憶する際に用いられる。出力リングバッファ832は、ターゲットVM801から出力されるパケットについての出力通知を記憶する際に用いられる。パケットバッファ833は、ターゲットVM801に入力または出力されるパケットを記憶する際に用いられる。
ミラーパケット制御装置100−1のホストOS822は、ハイパーバイザ821が有する記憶領域にある入力リングバッファ841と、出力リングバッファ842と、パケットバッファ843とに対するアクセスを制御するバックエンドドライバ845を含む。入力リングバッファ841は、モニタVM802へ入力されるパケットについての入力通知を記憶する際に用いられる。出力リングバッファ842は、モニタVM802から出力されるパケットについての出力通知を記憶する際に用いられる。パケットバッファ843は、モニタVM802に入力または出力されるパケットを記憶する際に用いられる。
ターゲットVM801は、ハイパーバイザ821が有する記憶領域にある入力リングバッファ831と、出力リングバッファ832と、パケットバッファ833とに対するアクセスを制御するフロントエンドドライバ834を含む。モニタVM802は、ハイパーバイザ821が有する記憶領域にある入力リングバッファ841と、出力リングバッファ842と、パケットバッファ843とに対するアクセスを制御するフロントエンドドライバ844を含む。
ミラーパケット制御装置100−1のホストOS822は、仮想スイッチ823を含む。仮想スイッチ823は、ミラーパケット生成部824と、割り込み設定部825と、割り込み解除部826と、割り込みハンドラ827と、パケット処理部828とを含む。仮想スイッチ823は、リングバッファ管理テーブル500と、ミラーパケットバッファ600とを有する。
ミラーパケット生成部824は、バックエンドドライバ835のパケットバッファ833にパケットが書き込まれていれば、パケットを複製したミラーパケットをモニタVM802へのポートに出力する。また、ミラーパケット生成部824は、パケットを通常の宛先へのポートに出力する。ミラーパケット生成部824は、具体的には、図18に後述するミラーリング処理を実行する。
割り込み設定部825は、入力リングバッファ831または出力リングバッファ832への書き込みがあったときに割り込みを発生させるようにする。割り込み設定部825は、例えば、入力リングバッファ831または出力リングバッファ832への書き込みがあったときに割り込みを発生させるように、ハイパーバイザ821に設定要求を送信する。割り込み設定部825は、具体的には、図14に後述する割り込み設定処理を実行する。
割り込み解除部826は、入力リングバッファ831または出力リングバッファ832への書き込みがあっても割り込みを発生させないようにする。割り込み解除部826は、例えば、入力リングバッファ831または出力リングバッファ832への書き込みがあっても割り込みを発生させないように、ハイパーバイザ821に解除要求を送信する。割り込み解除部826は、具体的には、図15に後述する割り込み解除処理を実行する。
割り込みハンドラ827は、割り込みが発生した際に、入力リングバッファ831または出力リングバッファ832に記憶された入力通知または出力通知と、パケットバッファ833に格納されたパケットとをミラーパケットバッファ600に退避させる。割り込みハンドラ827は、具体的には、図16に後述する割り込み処理を実行する。
パケット処理部828は、ミラーパケットバッファ600から、入力リングバッファ831または出力リングバッファ832に入力通知または出力通知を戻し、パケットバッファ833にパケットを戻す。パケット処理部828は、具体的には、図17に後述するパケット処理を実行する。
また、ミラーパケット制御装置100−2のハードウェア850において、ミラーパケット制御装置100−2のハイパーバイザ851が実行されている。ミラーパケット制御装置100−2のハイパーバイザ851において、ミラーパケット制御装置100−2のホストOS852が実行されている。ミラーパケット制御装置100−2のホストOS852は、ミラーパケット制御装置100−1のホストOS822で実行されているモニタVM802のライブマイグレーション先になる。ミラーパケット制御装置100−2のホストOS852は、仮想スイッチ823を含む。
(ポートミラーリングシステム200の動作例1)
次に、図9〜図12を用いて、ポートミラーリングシステム200の動作例1について説明する。
図9〜図12は、ポートミラーリングシステム200の動作例1を示す説明図である。図9において、モニタVM802は、管理者803の操作入力によって、ライブマイグレーションを開始したとする。
(9−1)割り込み設定部825は、モニタVM802がライブマイグレーションを開始したことを検出すると、モニタVM802が停止状態になったと判定する。割り込み設定部825は、モニタVM802が停止状態になったと判定すると、割り込み状態をオンに設定し、ハイパーバイザ821に割り込みを発生させるように設定する。
(9−2)仮想スイッチ823は、バックエンドドライバを介して、入力する対象となるパケットをパケットバッファ833に格納し、パケットを格納した記憶領域を示すアドレスを含む入力通知を入力リングバッファ831に格納する。ハイパーバイザ821は、入力リングバッファ831に入力通知が格納されたため、割り込みを発生させる。
(9−3)割り込みハンドラ827は、モニタVM802が停止状態であり、割り込みが発生したため、入力リングバッファ831に格納された入力通知を取り出し、入力リングバッファ831からは入力通知を削除する。そして、割り込みハンドラ827は、入力通知に含まれるアドレスに基づいて、パケットバッファ833に格納されたパケットを取り出し、パケットバッファ833からはパケットを削除する。割り込みハンドラ827は、取り出した入力通知と、取り出したパケットを対応付けて、ミラーパケットバッファ600に蓄積する。
これにより、仮想スイッチ823は、パケットバッファ833に一旦登録されたパケットを、ターゲットVM801が読み出してしまう前に、ミラーパケットバッファ600に移動し、パケットバッファ833からは削除することができる。結果として、仮想スイッチ823は、ターゲットVM801にパケットが入力されることを一旦停止し、ターゲットVM801にパケットが入力されたことに応じてミラーパケットがモニタVM802に送信されることを防止することができる。また、仮想スイッチ823は、ターゲットVM801から応答が送信されることも防止することができ、パケットの送信元に応答待ちさせることにより、パケットの送信元からターゲットVM801にパケットが送信されることを一定時間停止させることができる。ここで、図10の説明に移行する。
図10において、(10−1)ターゲットVM801は、フロントエンドドライバ834を介して、出力する対象となるパケットをパケットバッファ833に格納する。そして、ターゲットVM801は、フロントエンドドライバ834を介して、パケットを格納した記憶領域を示すアドレスを含む出力通知を出力リングバッファ832に格納する。ハイパーバイザ821は、出力リングバッファ832に出力通知が格納されたため、割り込みを発生させる。
(10−2)仮想スイッチ823の割り込みハンドラ827は、モニタVM802が停止状態であり、割り込みが発生したため、出力リングバッファ832に格納された出力通知を取り出し、出力リングバッファ832からは出力通知を削除する。そして、仮想スイッチ823の割り込みハンドラ827は、出力通知に含まれるアドレスに基づいて、パケットバッファ833に格納されたパケットを取り出し、パケットバッファ833からはパケットを削除する。仮想スイッチ823の割り込みハンドラ827は、取り出した出力通知と、取り出したパケットを対応付けて、ミラーパケットバッファ600に蓄積する。
これにより、仮想スイッチ823は、パケットバッファ833に一旦登録されたパケットを、仮想スイッチ823で読み出して転送してしまう前に、ミラーパケットバッファ600に移動し、パケットバッファ833からは削除することができる。結果として、仮想スイッチ823は、ターゲットVM801からパケットが出力されることを一旦停止し、ターゲットVM801からパケットが出力されたことに応じてミラーパケットがモニタVM802に送信されることを防止することができる。ここで、図11の説明に移行する。
図11において、モニタVM802は、ライブマイグレーションを終了し、停止状態が解除されたとする。(11−1)割り込み解除部826は、モニタVM802のライブマイグレーションが終了したことを検出すると、モニタVM802の停止状態が解除されたと判定する。割り込み解除部826は、モニタVM802の停止状態が解除されたと判定すると、割り込み状態をオフに設定し、ハイパーバイザ821に割り込みを発生させないように設定する。
(11−2)パケット処理部828は、バックエンドドライバ835を介して、ミラーパケットバッファ600に蓄積した入力通知を取り出して入力リングバッファ831に戻す。そして、パケット処理部828は、バックエンドドライバ835を介して、ミラーパケットバッファ600に蓄積した入力通知に対応するパケットをパケットバッファ833に戻す。
また、パケット処理部828は、バックエンドドライバ835を介して、ミラーパケットバッファ600に蓄積した出力通知を取り出して出力リングバッファ832に戻す。そして、パケット処理部828は、バックエンドドライバ835を介して、ミラーパケットバッファ600に蓄積した出力通知に対応するパケットをパケットバッファ833に戻す。
これにより、仮想スイッチ823は、入力リングバッファ831への入力通知の登録、および、出力リングバッファ832への出力通知の登録を再開することができ、ターゲットVM801に対するパケットの入出力を再開することができる。ここで、図12の説明に移行する。
図12において、(12−1)ミラーパケット生成部824は、ターゲットVM801についてのパケットの入出力が行われたことに応じて、入出力が行われたパケットを複製したミラーパケットを生成する。そして、ミラーパケット生成部824は、生成したミラーパケットを、ホストOS852に移動され、ホストOS852で実行中であり、停止状態が解除されたモニタVM802に送信する。
ミラーパケット生成部824は、具体的には、ターゲットVM801についてのパケットの入出力が行われたことに応じて、名称eth0が付与された、ミラーパケット制御装置100−2に通じるポート1201にミラーパケットを出力する。一方で、ミラーパケット制御装置100−2の仮想スイッチ1210は、名称eth0が付与された、ミラーパケット制御装置100−1に通じるポート1202からミラーパケットを入力される。
ミラーパケット制御装置100−2の仮想スイッチ1210は、名称vif2.0が付与された、ホストOS852に移動され、ホストOS852で実行中であり、停止状態が解除されたモニタVM802に通じるポート1203から、ミラーパケットを出力する。これにより、仮想スイッチ823は、ポートミラーリングを再開することができる。
(状態管理処理手順の一例)
次に、図13を用いて、VM状態管理部814が実行する状態管理処理手順の一例について説明する。
図13は、状態管理処理手順の一例を示すフローチャートである。図13において、VM状態管理部814は、仮想基盤から、モニタVM802の状態を示す通知を受信する(ステップS1301)。次に、VM状態管理部814は、受信した通知に基づいて、VM状態管理テーブル400を参照して、モニタVM802の状態の変化を検出する(ステップS1302)。
そして、VM状態管理部814は、モニタVM802の状態がサスペンドになったか否かを判定する(ステップS1303)。ここで、サスペンドになった場合(ステップS1303:Yes)、VM状態管理部814は、ステップS1304の処理に移行する。ステップS1304にて、VM状態管理部814は、サスペンドになったモニタVM802のVMIDを割り込み設定部825に出力し、割り込み設定部825に図14に後述する割り込み設定処理を実行させる(ステップS1304)。そして、VM状態管理部814は、ステップS1306の処理に移行する。
一方で、サスペンドではなくなった場合(ステップS1303:No)、VM状態管理部814は、ステップS1305の処理に移行する。ステップS1305にて、VM状態管理部814は、サスペンドではなくなったモニタVM802のVMIDを割り込み解除部826に出力し、割り込み解除部826に図15に後述する割り込み解除処理を実行させる(ステップS1305)。そして、VM状態管理部814は、ステップS1306の処理に移行する。ステップS1306にて、VM状態管理部814は、VM状態管理テーブル400を更新し(ステップS1306)、状態管理処理を終了する。これにより、VM状態管理部814は、ミラーパケット制御装置100におけるモニタVM802の状態を管理することができる。
(割り込み設定処理手順の一例)
次に、図14を用いて、割り込み設定部825が実行する割り込み設定処理手順の一例について説明する。
図14は、割り込み設定処理手順の一例を示すフローチャートである。図14において、割り込み設定部825は、サスペンドになったモニタVM802のVMIDの入力を受け付ける(ステップS1401)。次に、割り込み設定部825は、リングバッファ管理テーブル500を参照して、入力リングバッファ831および出力リングバッファ832のHost Addrとサイズを取得する(ステップS1402)。そして、割り込み設定部825は、入力リングバッファ831または出力リングバッファ832への書き込みがあったときに割り込みを発生させるように、ハイパーバイザ821に設定要求を送信する(ステップS1403)。
次に、割り込み設定部825は、リングバッファ管理テーブル500の割り込み状態のフィールドをオンに設定する(ステップS1404)。そして、割り込み設定部825は、割り込み設定処理を終了する。これにより、割り込み設定部825は、パケットバッファ833に一旦登録されたパケットを、ターゲットVM801が読み出してしまう前に、あるいは、仮想スイッチ823で読み出して転送してしまう前に、割り込みを発生させるようにすることができる。
(割り込み解除処理手順の一例)
次に、図15を用いて、割り込み解除部826が実行する割り込み解除処理手順の一例について説明する。
図15は、割り込み解除処理手順の一例を示すフローチャートである。図15において、割り込み解除部826は、サスペンドではなくなったモニタVM802のVMIDの入力を受け付ける(ステップS1501)。次に、割り込み解除部826は、リングバッファ管理テーブル500を参照して、入力リングバッファ831および出力リングバッファ832のHost Addrとサイズを取得する(ステップS1502)。そして、割り込み解除部826は、入力リングバッファ831または出力リングバッファ832への書き込みがあっても割り込みを発生させないように、ハイパーバイザ821に解除要求を送信する(ステップS1503)。
次に、割り込み解除部826は、リングバッファ管理テーブル500の割り込み状態のフィールドをオフに設定する(ステップS1504)。そして、割り込み解除部826は、割り込み解除処理を終了する。これにより、割り込み解除部826は、割り込みを発生させないようにして、仮想スイッチ823の性能低下を抑制することができる。
(割り込み処理手順の一例)
次に、図16を用いて、割り込みハンドラ827が実行する割り込み処理手順の一例について説明する。
図16は、割り込み処理手順の一例を示すフローチャートである。図16において、割り込みハンドラ827は、割り込みが発生したことを検出する(ステップS1601)。次に、割り込みハンドラ827は、入力リングバッファ831または出力リングバッファ832から入力通知または出力通知を読み出す(ステップS1602)。そして、割り込みハンドラ827は、読み出した入力通知または出力通知からパケットのアドレスとサイズを読み出して、パケットバッファ833に格納されたパケットを読み出す(ステップS1603)。
次に、割り込みハンドラ827は、読み出したパケットについてのレコードを、ミラーパケットバッファ600に追加する(ステップS1604)。そして、割り込みハンドラ827は、追加したレコードに、読み出した入力通知または出力通知と、読み出したパケットとを設定する(ステップS1605)。その後、割り込みハンドラ827は、割り込み処理を終了する。これにより、割り込みハンドラ827は、モニタVM802が停止状態である間、ターゲットVM801についてパケットの入出力が行われることを防止することができ、モニタVM802にミラーパケットが送信されることを防止することができる。
(パケット処理手順の一例)
次に、図17を用いて、パケット処理部828が実行するパケット処理手順の一例について説明する。
図17は、パケット処理手順の一例を示すフローチャートである。図17において、パケット処理部828は、リングバッファ管理テーブル500の割り込み状態のフィールドがオンであるか否かを判定する(ステップS1701)。ここで、オンである場合(ステップS1701:Yes)、パケット処理部828は、ステップS1701の処理に戻る。
一方で、オンではない場合(ステップS1701:No)、パケット処理部828は、ミラーパケットバッファ600にレコードがあるか否かを判定する(ステップS1702)。ここで、レコードがない場合(ステップS1702:No)、パケット処理部828は、パケット処理を終了する。
一方で、レコードがある場合(ステップS1702:Yes)、パケット処理部828は、ミラーパケットバッファ600から、まだ読み出していないレコードを読み出す(ステップS1703)。このとき、パケット処理部828は、ミラーパケットバッファ600の連番のフィールドを参照して、ミラーパケットバッファ600に格納された順番に、レコードを読み出してもよい。
次に、パケット処理部828は、読み出したレコードのパケットバッファ833のアドレスに基づいて、パケットバッファ833にパケットを書き込む(ステップS1704)。そして、パケット処理部828は、パケットが送信対象であるか否かを判定する(ステップS1705)。ここで、送信対象である場合(ステップS1705:Yes)、パケット処理部828は、出力リングバッファ832に出力通知を書き込み(ステップS1706)、ステップS1708の処理に移行する。
一方で、送信対象ではない場合(ステップS1705:No)、パケット処理部828は、入力リングバッファ831に入力通知を書き込み(ステップS1707)、ステップS1708の処理に移行する。ステップS1708にて、パケット処理部828は、ミラーパケットバッファ600に、まだ読み出していないレコードがあるか否かを判定する(ステップS1708)。
ここで、まだ読み出していないレコードがある場合(ステップS1708:Yes)、パケット処理部828は、ステップS1702の処理に戻る。一方で、読み出していないレコードがない場合(ステップS1708:No)、パケット処理部828は、パケット処理を終了する。これにより、パケット処理部828は、ターゲットVM801に対するパケットの入出力を再開させ、ターゲットVM801に対するパケットの入出力が再開したことに応じてモニタVM802へのミラーパケットの送信も再開させることができる。
(ミラーリング処理手順の一例)
次に、図18を用いて、ミラーパケット生成部824が実行するミラーリング処理手順の一例について説明する。
図18は、ミラーリング処理手順の一例を示すフローチャートである。図18において、ミラーパケット生成部824は、パケットバッファ833にパケットが書き込まれているか否かを判定する(ステップS1801)。ここで、書き込まれていない場合(ステップS1801:No)、ミラーパケット生成部824は、ステップS1801の処理に戻る。
一方で、書き込まれている場合(ステップS1801:Yes)、ミラーパケット生成部824は、入力リングバッファ831または出力リングバッファ832に入力通知または出力通知が書き込まれているか否かを判定する(ステップS1802)。ここで、書き込まれていない場合(ステップS1802:No)、ミラーパケット生成部824は、ステップS1807の処理に移行する。
一方で、書き込まれている場合(ステップS1802:Yes)、ミラーパケット生成部824は、パケットの通信方向と、キャプチャ設定された通信方向とが一致するか否かを判定する(ステップS1803)。ここで、一致しない場合(ステップS1803:No)、ミラーパケット生成部824は、ステップS1806の処理に移行する。
一方で、一致する場合(ステップS1803:Yes)、ミラーパケット生成部824は、パケットを複製したミラーパケットを生成する(ステップS1804)。次に、ミラーパケット生成部824は、生成したミラーパケットを、モニタVM802へのポートに出力する(ステップS1805)。そして、ミラーパケット生成部824は、パケットを通常の宛先へのポートに出力する(ステップS1806)。
次に、ミラーパケット生成部824は、パケットバッファ833にパケットが残っているか否かを判定する(ステップS1807)。ここで、残っている場合(ステップS1807:Yes)、ミラーパケット生成部824は、ステップS1801の処理に戻る。
一方で、残っていない場合(ステップS1807:No)、ミラーパケット生成部824は、ミラーリング処理を終了する。これにより、ミラーパケット生成部824は、ターゲットVM801についてパケットバッファ833に格納されたパケットの入出力を行うことができる。また、ミラーパケット生成部824は、パケットバッファ833に格納されたパケットを複製したミラーパケットを、モニタVM802に送信することができる。
(モニタVM802の停止時の動作の流れの一例)
次に、図19を用いて、ポートミラーリングシステム200におけるモニタVM802の停止時の動作の流れの一例について説明する。
図19は、モニタVM802の停止時の動作の流れの一例を示すシーケンス図である。図19において、管理者803は、モニタVM802のVMIDを含むライブマイグレーション要求を、仮想基盤1900に入力する(ステップS1901)。仮想基盤1900は、ライブマイグレーション要求の入力を受け付けると、モニタVM802のVMIDを含むモニタVM802の状態通知を、VM状態管理部814に入力する(ステップS1902)。
VM状態管理部814は、モニタVM802のサスペンドを検出する(ステップS1903)。VM状態管理部814は、モニタVM802のサスペンドを検出すると、モニタVM802のVMIDを含む割り込みの設定要求を、割り込み設定部825に出力する(ステップS1904)。
割り込み設定部825は、割り込みの設定要求の入力を受け付けると、割り込みの設定要求をハイパーバイザ821に入力する(ステップS1905)。ハイパーバイザ821は、割り込みの設定要求の入力を受け付けると、割り込みの設定を行う(ステップS1906)。これにより、ミラーパケット制御装置100は、ミラーパケットが失われる確率を低減することができる。
(モニタVM802の停止解除時の動作の流れの一例)
次に、図20を用いて、ポートミラーリングシステム200におけるモニタVM802の停止解除時の動作の流れの一例について説明する。
図20は、モニタVM802の停止解除時の動作の流れの一例を示すシーケンス図である。図20において、仮想基盤1900は、モニタVM802のライブマイグレーションの完了を検出する(ステップS2001)。仮想基盤1900は、モニタVM802のライブマイグレーションの完了を検出すると、モニタVM802のVMIDを含むモニタVM802の状態通知を、VM状態管理部814に入力する(ステップS2002)。
VM状態管理部814は、モニタVM802のサスペンドの解除を検出する(ステップS2003)。VM状態管理部814は、モニタVM802のサスペンドの解除を検出すると、モニタVM802のVMIDを含む割り込みの解除要求を、割り込み解除部826に出力する(ステップS2004)。
割り込み解除部826は、割り込みの解除要求の入力を受け付けると、割り込みの解除要求をハイパーバイザ821に入力する(ステップS2005)。ハイパーバイザ821は、割り込みの解除要求の入力を受け付けると、割り込みの設定を解除する(ステップS2006)。これにより、ミラーパケット制御装置100は、ポートミラーリングを再開することができる。
(ポートミラーリングシステム200の動作例2)
次に、図21を用いて、ポートミラーリングシステム200の動作例2について説明する。動作例1では、仮想スイッチ823が、ターゲットVM801に入力されるパケットも、ターゲットVM801から出力されるパケットも複製して、複製したミラーパケットをモニタVM802に送信する場合について説明した。
これに対し、動作例2では、仮想スイッチ823が、ターゲットVM801に入力されるパケットを複製しなくてもよい場合と、ターゲットVM801に入力されるパケットを複製する場合とにおいて、異なる動作を行う場合について説明する。
図21は、ポートミラーリングシステム200の動作例2を示す説明図である。図21において、ポートミラーマネージャ812は、さらに、判定部2101を有する。判定部2101は、管理者803によってキャプチャ設定された通信方向を取得する。キャプチャ設定は、ミラーパケットを生成する対象とするパケットの通信方向の設定である。
判定部2101は、例えば、キャプチャ設定された通信方向が、ターゲットVM801から出力される方向を示す「送信」であれば、ターゲットVM801をサスペンドする。一方で、判定部2101は、例えば、キャプチャ設定された通信方向が、ターゲットVM801に入力される方向を示す「受信」であれば、動作例1と同様に、仮想スイッチ823に処理させる。同様に、判定部2101は、例えば、キャプチャ設定された通信方向が、ターゲットVM801に入出力される方向を示す「送受信」であれば、動作例1と同様に、仮想スイッチ823に処理させる。
これにより、管理装置201は、モニタVM802がライブマイグレーションを行っている間は、ターゲットVM801をサスペンドし、ターゲットVM801からパケットが送信されることを抑制することができる。このため、管理装置201は、ターゲットVM801から送信されるパケットを複製したミラーパケットが停止中のモニタVM802に送信されることを防止し、ミラーパケットがモニタVM802に受信されずに失われることを防止することができる。
(判定処理手順の一例)
次に、図22を用いて、判定部2101が実行する判定処理手順の一例について説明する。
図22は、判定処理手順の一例を示すフローチャートである。図22において、判定部2101は、管理者803によってキャプチャ設定された通信方向を取得する(ステップS2201)。次に、判定部2101は、キャプチャ設定された通信方向が送信であるか否かを判定する(ステップS2202)。ここで、送信ではない場合(ステップS2202:No)、判定部2101は、VM状態管理部814に状態管理処理を実行させ(ステップS2203)、判定処理を終了する。
一方で、送信である場合(ステップS2202:Yes)、判定部2101は、モニタVM802の状態がサスペンドであるか否かを判定する(ステップS2204)。ここで、サスペンドである場合(ステップS2204:Yes)、判定部2101は、ターゲットVM801のサスペンド要求を、仮想基盤1900に出力し(ステップS2205)、判定処理を終了する。
一方で、サスペンドではない場合(ステップS2204:No)、判定部2101は、ターゲットVM801のサスペンド解除要求を、仮想基盤1900に出力し(ステップS2206)、判定処理を終了する。これにより、判定部2101は、ターゲットVM801を停止させ、ミラーパケットが失われる確率を低減することができる。
(ポートミラーリングシステム200の動作例3)
次に、図23を用いて、ポートミラーリングシステム200の動作例3について説明する。動作例1では、仮想スイッチ823が、モニタVM802がライブマイグレーションを開始したことに応じて、モニタVM802が停止状態になったと判定する場合について説明した。
これに対し、動作例3では、仮想スイッチ823が、モニタVM802についてのネットワークの転送量を監視し、ネットワークの転送量が閾値を下回ったことに応じて、モニタVM802が停止状態になったと判定する場合について説明する。
図23は、ポートミラーリングシステム200の動作例3を示す説明図である。図23において、ホストOS822は、さらに、VM状態判定部2301を有する。VM状態判定部2301は、モニタVM802についてのネットワークの転送量を監視する。そして、VM状態判定部2301は、ネットワークの転送量が閾値を下回った場合、モニタVM802が停止状態であると判定して、割り込み設定部825に通知する。割り込み設定部825は、VM状態判定部2301によってモニタVM802が停止状態であると判定された場合、動作例1と同様の処理を行うため、説明を省略する。
その後、VM状態判定部2301は、モニタVM802についてのGARP(Gratuitous Address Resolution Protocol)を監視する。そして、VM状態判定部2301は、GARPが検出された場合、モニタVM802の停止状態が解除されたと判定して、割り込み解除部826に通知する。割り込み解除部826は、VM状態判定部2301によってモニタVM802が停止状態であると判定された場合、動作例1と同様の処理を行うため、説明を省略する。
これにより、仮想スイッチ823は、モニタVM802が停止状態である期間を精度よく判定することができる。結果として、仮想スイッチ823は、モニタVM802が停止状態であると判定される期間が長くなることに応じて、ターゲットVM801についてのパケットの入出力が行われない期間も長くなってしまうことを抑制することができる。
(状態判定処理手順の一例)
次に、図24を用いて、VM状態判定部2301が実行する状態判定処理手順の一例について説明する。
図24は、状態判定処理手順の一例を示すフローチャートである。図24において、VM状態判定部2301は、モニタVM802のライブマイグレーションの開始通知の入力を受け付ける(ステップS2401)。次に、VM状態判定部2301は、モニタVM802についてのネットワークの転送量を監視する(ステップS2402)。
そして、VM状態判定部2301は、ネットワークの転送量が閾値を下回ったか否かを判定する(ステップS2403)。ここで、閾値以上である場合(ステップS2403:No)、VM状態判定部2301は、ステップS2402の処理に戻る。
一方で、閾値を下回った場合(ステップS2403:Yes)、VM状態判定部2301は、モニタVM802が停止状態であると判定する(ステップS2404)。次に、VM状態判定部2301は、モニタVM802についてのGARPを監視する(ステップS2405)。
そして、VM状態判定部2301は、GARPが検出されたか否かを判定する(ステップS2406)。ここで、GARPが検出されない場合(ステップS2406:No)、VM状態判定部2301は、ステップS2405の処理に戻る。
一方で、GARPが検出された場合(ステップS2406:Yes)、VM状態判定部2301は、モニタVM802の停止状態が解除されたと判定する(ステップS2407)。そして、VM状態判定部2301は、状態判定処理を終了する。これにより、VM状態判定部2301は、モニタVM802が停止状態である期間を、精度よく特定することができる。
以上説明したように、ミラーパケット制御装置100によれば、仮想スイッチ823に接続されたモニタVM802の停止状態を検出することができる。また、ミラーパケット制御装置100によれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットVM801についての入出力の対象となるパケットについては退避バッファに蓄積しておくことができる。また、ミラーパケット制御装置100によれば、停止状態が解除されると、退避バッファに蓄積しておいたパケットを、仮想スイッチ823に接続されたターゲットVM801についての入出力に用いられる入出力バッファに登録することができる。これにより、ミラーパケット制御装置100は、モニタVM802が停止状態である間、ターゲットVM801に対してパケットの入出力が行われることを防止することができ、モニタVM802にミラーパケットが送信されることを防止することができる。
また、ミラーパケット制御装置100によれば、入出力バッファに登録したパケットについてターゲットVM801に対して入出力を行うとともに、入出力バッファに登録したパケットを複製したミラーパケットをモニタVM802に出力することができる。これにより、ミラーパケット制御装置100は、ポートミラーリングを再開することができる。
また、ミラーパケット制御装置100によれば、退避バッファに蓄積した順序で、退避バッファに蓄積しておいたパケットを、入出力バッファに登録することができる。これにより、ミラーパケット制御装置100は、入出力の順番を変えずに、ターゲットVM801に対するパケットの入出力が再開されるようにすることができる。
また、ミラーパケット制御装置100によれば、モニタVM802が動作中の演算装置から他の演算装置にライブマイグレーションを開始したことに応じて、モニタVM802の停止状態を検出することができる。これにより、ミラーパケット制御装置100は、モニタVM802が停止中である期間を特定可能になる。
また、ミラーパケット制御装置100によれば、動作中の演算装置から他の演算装置へのモニタVM802に関する情報の転送量が閾値を下回ったことに応じて、モニタVM802の停止状態を検出することができる。これにより、ミラーパケット制御装置100は、モニタVM802が停止中である期間を、精度よく特定可能になる。
また、ミラーパケット制御装置100によれば、ターゲットVM801に入力されるパケットについて複製しない状態に設定された場合には、モニタVM802の停止状態が検出されたことに応じてターゲットVM801を停止することができる。また、この場合には、ミラーパケット制御装置100によれば、停止状態が検出されてから停止状態が解除されるまでの期間においてターゲットVM801についての入出力の対象となるパケットについて退避バッファに蓄積しないようにすることができる。これにより、ミラーパケット制御装置100は、モニタVM802が停止状態である間、ターゲットVM801に対してパケットの入出力が行われることを防止することができ、モニタVM802にミラーパケットが送信されることを防止することができる。
なお、本実施の形態で説明したミラーパケット制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ミラーパケット制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ミラーパケット制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
処理を実行させることを特徴とするミラーパケット制御プログラム。
(付記2)前記コンピュータに、
前記入出力バッファに登録したパケットについて前記第1仮想マシンに対して入出力を行うとともに、前記入出力バッファに登録したパケットを複製したミラーパケットを前記第2仮想マシンに出力する、処理を実行させることを特徴とする付記1に記載のミラーパケット制御プログラム。
(付記3)前記登録する処理は、
前記退避バッファに蓄積した順序で、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、ことを特徴とする付記1または2に記載のミラーパケット制御プログラム。
(付記4)前記検出する処理は、
前記第2仮想マシンが動作中の演算装置から他の演算装置にライブマイグレーションを開始したことに応じて、前記第2仮想マシンの停止状態を検出する、ことを特徴とする付記1〜3のいずれか一つに記載のミラーパケット制御プログラム。
(付記5)前記検出する処理は、
前記第2仮想マシンが動作中の演算装置から他の演算装置にライブマイグレーションする場合において、前記動作中の演算装置から前記他の演算装置への前記第2仮想マシンに関する情報の転送量が閾値を下回ったことに応じて、前記第2仮想マシンの停止状態を検出する、ことを特徴とする付記1〜3のいずれか一つに記載のミラーパケット制御プログラム。
(付記6)前記コンピュータに、
前記第1仮想マシンに入力されるパケットについて複製しない状態に設定された場合には、前記第2仮想マシンの停止状態が検出されたことに応じて前記第1仮想マシンを停止する、処理を実行させ、
前記蓄積する処理は、
前記第1仮想マシンに入力されるパケットについて複製しない状態に設定された場合には、前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについて前記退避バッファに蓄積しない、ことを特徴とする付記1〜5のいずれか一つに記載のミラーパケット制御プログラム。
(付記7)コンピュータが、
仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
処理を実行することを特徴とするミラーパケット制御方法。
(付記8)仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
制御部を有することを特徴とするミラーパケット制御装置。
100 ミラーパケット制御装置
101,801 ターゲットVM
102,802 モニタVM
110,810,820,850 ハードウェア
120,811,821,851 ハイパーバイザ
130,822,852 ホストOS
140,823 仮想スイッチ
150,824 ミラーパケット生成部
160 退避バッファ
170,180 入出力バッファ
171,181,835,845 バックエンドドライバ
172,182 フロントエンドドライバ
200 ポートミラーリングシステム
201 管理装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 ディスクドライブ
305 ディスク
306 記録媒体I/F
400 VM状態管理テーブル
500 リングバッファ管理テーブル
600 ミラーパケットバッファ
701 検出部
702 退避部
703 登録部
704 出力部
803 管理者
812 ポートミラーマネージャ
813 ポートミラー構成部
814 VM状態管理部
825 割り込み設定部
826 割り込み解除部
827 割り込みハンドラ
828 パケット処理部
831,841 入力リングバッファ
832,842 出力リングバッファ
833,843 パケットバッファ
2101 判定部
2301 VM状態判定部

Claims (7)

  1. コンピュータに、
    仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
    前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
    前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
    処理を実行させることを特徴とするミラーパケット制御プログラム。
  2. 前記コンピュータに、
    前記入出力バッファに登録したパケットについて前記第1仮想マシンに対して入出力を行うとともに、前記入出力バッファに登録したパケットを複製したミラーパケットを前記第2仮想マシンに出力する、処理を実行させることを特徴とする請求項1に記載のミラーパケット制御プログラム。
  3. 前記登録する処理は、
    前記退避バッファに蓄積した順序で、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、ことを特徴とする請求項1または2に記載のミラーパケット制御プログラム。
  4. 前記検出する処理は、
    前記第2仮想マシンが動作中の演算装置から他の演算装置にライブマイグレーションする場合において、前記第2仮想マシンのライブマイグレーションの開始通知の入力を受け付けた後、前記動作中の演算装置から前記他の演算装置への前記第2仮想マシンに関する情報の転送量が閾値を下回ったことに応じて、前記第2仮想マシンの停止状態を検出する、ことを特徴とする請求項1〜3のいずれか一つに記載のミラーパケット制御プログラム。
  5. 前記コンピュータに、
    前記第1仮想マシンに入力されるパケットについて複製しない状態に設定された場合には、前記第2仮想マシンの停止状態が検出されたことに応じて前記第1仮想マシンを停止する、処理を実行させ、
    前記蓄積する処理は、
    前記第1仮想マシンに入力されるパケットについて複製しない状態に設定された場合には、前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについて前記退避バッファに蓄積しない、ことを特徴とする請求項1〜4のいずれか一つに記載のミラーパケット制御プログラム。
  6. コンピュータが、
    仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
    前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
    前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バ
    ッファに登録する、
    処理を実行することを特徴とするミラーパケット制御方法。
  7. 仮想スイッチに接続された第1仮想マシンについての入出力に用いられる入出力バッファに登録されたパケットを複製したミラーパケットが出力される、前記仮想スイッチに接続された第2仮想マシンの停止状態を検出し、
    前記停止状態が検出されてから前記停止状態が解除されるまでの期間において前記第1仮想マシンについての入出力の対象となるパケットについては前記入出力バッファとは異なる退避バッファに蓄積し、
    前記停止状態が解除されると、前記退避バッファに蓄積したパケットを、前記入出力バッファに登録する、
    制御部を有することを特徴とするミラーパケット制御装置。
JP2016122109A 2016-06-20 2016-06-20 ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置 Active JP6708007B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016122109A JP6708007B2 (ja) 2016-06-20 2016-06-20 ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置
US15/608,445 US20170366638A1 (en) 2016-06-20 2017-05-30 Method of controlling a virtual machine, information processing apparatus and non-transitory computer-readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016122109A JP6708007B2 (ja) 2016-06-20 2016-06-20 ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置

Publications (2)

Publication Number Publication Date
JP2017227998A JP2017227998A (ja) 2017-12-28
JP6708007B2 true JP6708007B2 (ja) 2020-06-10

Family

ID=60660954

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016122109A Active JP6708007B2 (ja) 2016-06-20 2016-06-20 ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置

Country Status (2)

Country Link
US (1) US20170366638A1 (ja)
JP (1) JP6708007B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10491502B2 (en) * 2016-06-29 2019-11-26 Nicira, Inc. Software tap for traffic monitoring in virtualized environment
JP7003562B2 (ja) * 2017-10-16 2022-01-20 富士通株式会社 ミラーパケット制御プログラム、ミラーパケット制御方法、およびミラーパケット制御装置
JP2022143255A (ja) * 2021-03-17 2022-10-03 東芝テック株式会社 プリンタ及び情報処理システム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5754764A (en) * 1994-02-22 1998-05-19 National Semiconductor Corp. Combination of input output circuitry and local area network systems
JP5594049B2 (ja) * 2010-10-18 2014-09-24 富士通株式会社 仮想計算機移動方法、コンピュータ及びプログラム
US8924560B2 (en) * 2010-11-29 2014-12-30 At&T Intellectual Property I, L.P. Optimized game server relocation environment
US9860309B2 (en) * 2014-12-22 2018-01-02 Vmware, Inc. Hybrid cloud network monitoring system for tenant use
US9372631B1 (en) * 2014-12-24 2016-06-21 Infinidat Ltd. Managing volume updates received during an execution of a volume migration process

Also Published As

Publication number Publication date
JP2017227998A (ja) 2017-12-28
US20170366638A1 (en) 2017-12-21

Similar Documents

Publication Publication Date Title
US8458284B2 (en) Systems and methods for efficient live application migration within bandwidth constrained networks
JP6740911B2 (ja) ポート切替プログラム、ポート切替方法、および情報処理装置
JP5268469B2 (ja) 高可用システム及び実行状態制御方法
JP6246923B2 (ja) 管理サーバ、計算機システム及び方法
US10620877B2 (en) Managing a collection of data
JP5391277B2 (ja) ストレージシステム及びストレージシステムの処理効率向上方法
JP6708007B2 (ja) ミラーパケット制御プログラム、ミラーパケット制御方法およびミラーパケット制御装置
JP2010026814A (ja) 資源転送システム、資源転送方法、情報処理装置及びコンピュータプログラム
US11861390B1 (en) Transparent disk caching for virtual machines
JP2014182653A (ja) ログ管理システム、ログ管理方法、画像形成装置およびその制御方法、並びにプログラム
US20130332932A1 (en) Command control method
JP2016045930A (ja) 管理システム、及び、管理システムの制御方法
US20180267831A1 (en) Information processing apparatus, stage-out processing method and recording medium recording job management program
US20100235549A1 (en) Computer and input/output control method
JP6287308B2 (ja) レプリケーション制御システム、レプリケーション制御方法、及び、レプリケーション制御プログラム
JP6341030B2 (ja) 情報処理システム、情報処理システムの制御方法及び制御プログラム
US20130013871A1 (en) Information processing system and data processing method
KR102137217B1 (ko) 비대칭 파일 시스템의 데이터 복제 방법
US10503722B2 (en) Log management apparatus and log management method
JP3473394B2 (ja) ホスト間資源共有排他制御装置及び方法及び記録媒体
JP6149454B2 (ja) 管理方法、管理プログラム及び情報処理装置
JP5731665B2 (ja) 計算機システム及び複製制御方法
JP2012181803A (ja) トランザクション管理システム、管理装置、サーバ装置、トランザクション管理方法、及びプログラム
JP2014206871A (ja) 制御方法、制御装置、制御プログラム、および記録媒体
JP2008210325A (ja) 管理サーバ、ファイル管理方法およびそのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200504

R150 Certificate of patent or registration of utility model

Ref document number: 6708007

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150