JP2013137650A - 情報処理装置および通信制御方法 - Google Patents

情報処理装置および通信制御方法 Download PDF

Info

Publication number
JP2013137650A
JP2013137650A JP2011288106A JP2011288106A JP2013137650A JP 2013137650 A JP2013137650 A JP 2013137650A JP 2011288106 A JP2011288106 A JP 2011288106A JP 2011288106 A JP2011288106 A JP 2011288106A JP 2013137650 A JP2013137650 A JP 2013137650A
Authority
JP
Japan
Prior art keywords
virtual machine
port number
packet
guest
destination
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.)
Granted
Application number
JP2011288106A
Other languages
English (en)
Other versions
JP5784482B2 (ja
Inventor
Hiroshi Nakajima
宏 中嶋
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011288106A priority Critical patent/JP5784482B2/ja
Priority to US13/608,362 priority patent/US9086907B2/en
Publication of JP2013137650A publication Critical patent/JP2013137650A/ja
Application granted granted Critical
Publication of JP5784482B2 publication Critical patent/JP5784482B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/443OS processes, e.g. booting an STB, implementing a Java virtual machine in an STB or power management in an STB
    • H04N21/4437Implementing a Virtual Machine [VM]
    • 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/45595Network integration; Enabling network access in virtual machine instances

Abstract

【課題】MACアドレスの数を抑制すること。
【解決手段】第1仮想マシンによって、第1仮想マシン内の第1OSによって割り当てられた第1ポート番号を第2仮想マシンに通知し、第1仮想マシンによって、第1MACアドレスを示す送信元MACアドレスを含むヘッダ、および第1ポート番号以外のポート番号を示す送信元ポート番号を含むヘッダを含む送信パケットをネットワークに送信し、
第2仮想マシンによって、第1MACアドレスを示す送信元MACアドレスを含むヘッダ、および第1ポート番号を示す送信元ポート番号を含むヘッダを含む送信パケットをネットワークに送信し、第1MACアドレスを示す宛先MACアドレスを含むヘッダ、および宛先ポート番号を含むヘッダを含む受信パケットをネットワークを介して受信した場合に、受信パケット内の宛先ポート番号が示すポート番号に応じて、受信パケットを第1仮想マシンまたは第2仮想マシンに振り分ける。
【選択図】 図17

Description

本発明の実施形態は、複数の仮想マシンを実行する情報処理装置および通信制御方法に関する。
従来の複数の仮想マシンを実行するコンピュータは、各仮想マシン毎の仮想LAN−I/Fにそれぞれ異なるMACアドレスを割り当て、そのI/F同士を仮想ブリッジまたは仮想スイッチで仮想的に接続し、その間で、送受信のMACアドレスで送受信先のI/Fを振り分ける。1つの物理LAN−IFから受信したパケットは、そのパケットの宛先MACアドレスがブロードキャストの場合には、すべての仮想マシンのLAN−I/Fに受信し、ユニキャストの場合には、同じMACアドレスを持つ仮想マシンのLAN−I/Fに受信させるようにしていた。
MACアドレスをすべて異なるようにセットするため、予め指定されたMACアドレスを設定しておくか、動的に生成する場合には、指定された範囲から選択して採るようにしていた。そのため、各仮想マシンのMACアドレスで一意に決まったIPアドレスもそれぞれ異なることになり、クライアントPCを仮想化する場合、複数のMACアドレスと複数のIPアドレスが必要であった。そのため、クライアントPCが多く存在するとIPアドレスが不足する。
MACアドレスを複数持ち、代表のIPアドレスを1つで共有し、内部でローカルなIPアドレスを割り当てて使用する、アドレス変換方式の場合には、アドレス変換に対応できないプロトコルなどがあり、使用できるネットワークプロトコルに制限が発生していた。
特開2008−299791号公報 特開2009−211640号公報 特開2008−225655号公報
コンピュータ(情報処理装置)で複数の仮想マシンを実行する場合、コンピュータで使用されるMACアドレスとIPアドレスの数を抑制することが望まれている。
本発明の目的は、複数の仮想マシンを実行する場合、使用されるMACアドレスとIPアドレスの数を抑制することが可能な情報処理装置および通信制御方法を提供することにある。
実施形態によれば、情報処理装置は、ハイパーバイザ上で第1の仮想マシンおよび第2の仮想マシンを実行する。前記第1の仮想マシンは、前記第1の仮想マシン内の第1のオペレーティングシステムによって割り当てられた第1のポート番号を前記第2の仮想マシンに通知する通知手段と、第1のMACアドレスを示す送信元MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および前記第1のポート番号以外のポート番号を示す送信元ポート番号と宛先ポート番号とを含むTCP/UDPヘッダを含む送信パケットをネットワークに送信する第1の送信手段とを具備する。前記第2の仮想マシンは、前記第1のMACアドレスを示す送信元MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および前記第1のポート番号を示す送信元ポート番号を含むTCP/UDPヘッダを含む送信パケットをネットワークに送信する第2の送信手段を具備する。前記情報処理装置は、前記第1のMACアドレスを示す宛先MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および宛先ポート番号を含むTCP/UDPヘッダを含む受信パケットを前記ネットワークを介して受信した場合に、前記受信パケット内の宛先ポート番号が示すポート番号に応じて、前記受信パケットを前記第1の仮想マシンまたは前記第2の仮想マシンに振り分ける振分手段を具備する。
実施形態のシステム構成の一例を示すブロック図。 クライアントコンピュータのソフトウェア構成の一例を示すブロック図。 仮想ディスクの構成の一例を示すブロック図。 仮想マシンマネージャの状態遷移の一例を示す図 セットアップモード時のクライアントコンピュータの構成および動作の説明に用いる図。 ログイン前のクライアントコンピュータの構成および動作の説明に用いる図。 ユーザのログイン時のクライアントコンピュータの構成および動作の説明に用いる図。 ログインユーザの切り替え時のクライアントコンピュータの構成および動作の説明に用いる図。 システム全体の動作を説明するためのシーケンス図。 システム全体の動作を説明するためのシーケンス図。 システム全体の動作を説明するためのシーケンス図。 システム全体の動作を説明するためのシーケンス図。 管理エージェントの動作の一例を示すフローチャート。 メモリ内のデータの差分データの作成の説明に用いる図。 クライアントコンピュータ内でのパケットデータの流れの一例を示す図。 ネットワーク内に流れるパケットの構造の一例を示す図。 ポートスイッチの構成の一例を示す図。 ポートスイッチが管理するテーブルの構造の一例を示す図。 パケット送信時のポートスイッチの動作の一例を示すフローチャート。 パケット受信時のポートスイッチの動作の一例を示すフローチャート。 クライアントコンピュータ内のパケットデータの送受信時の処理の一例を示すシーケンス図。 クライアントコンピュータ内のパケットデータの送受信時の処理の一例を示すシーケンス図。
図1は、システム構成を示すブロック図である。
システムは、クライアントコンピュータ(クライアントPC)100、管理サーバ201、配信サーバ202、Network Attached Storage(NAS)220等から構成されている。
管理サーバ201および配信サーバ202に、システムプール210が接続されている。システムプール210内には、ゲスト仮想マシンのディスクイメージファイルが保存されている。ディスクイメージファイルは、配信サーバ202を経由して、クライアントコンピュータに転送される。管理サーバ201は、各クライアントに対応するディスクイメージファイルの管理、設定を行う。
クライアントコンピュータ100内では、ハイパーバイザ(仮想化ソフトウェア)101によってハードウェアが仮想化され、ハイパーバイザ101上で複数の仮想マシンが動作する。このシステムでは、ゲスト仮想マシン(デスクトップOS、アプリ)と仮想マシン制御ドメインの仮想マシン制御用のOSが同時実行する。
クライアントコンピュータ100内のストレージ(HDDまたはSDD)131内には、配信サーバ202から配信されたディスクイメージファイルが格納される。LANコントローラ132に接続されたネットワークには、ファイルサーバ(NAS)220が接続される。ファイルサーバ(NAS)220には、各ユーザが更新したアプリケーションのデータ、設定値が保存される。
また、NAS220内には、SYS−USER−Aファイル221A、SYS−USER−Bファイル221B、MEM−USER−Aファイル222A、MEM−USER−Bファイル222Bが格納されている。SYS−USER−Aファイル221AおよびMEM−USER−Aファイル222Aは、ゲスト仮想マシン120のユーザAの使用環境を再現するためのファイルである。また、SYS−USER−Bファイル221BおよびMEM−USER−Bファイル222Bは、ゲスト仮想マシン120のユーザBの使用環境を再現するためのファイルである。使用するユーザに応じて、SYS−USER−Aファイル221AおよびMEM−USER−Aファイル222A、またはSYS−USER−Bファイル221BおよびMEM−USER−Bファイル222Bがクライアントコンピュータ100に転送される。
I/Oデバイスの仮想化にはいくつかの手法があるが、本装置では、パススルー・モデルを用いて、I/Oデバイスを仮想化する。パススルー・モデルでは、仮想マシンモニタがI/Oデバイスを直接仮想マシンに割り当てることができる。例えば、仮想マシンごとに専用のSCSIカードやネットワーク・カードなどを用意し、それらを1つずつ仮想マシンに割り当てる。また、デバイスマネージャは、PCIデバイスの初期化制御を行う。
次に、図2を参照して、クライアントコンピュータ100のソフトウェア構成を説明する。
ハイパーバイザ101上で、仮想マシン制御ドメイン110およびゲスト仮想マシン120が動作する。
ハイパーバイザ101は、CPU231のリソースを調停し、スケジューラ105によるスケジューリングに従って、CPU231のリソースを仮想CPUとして、各ドメイン(仮想マシン制御ドメインおよびゲスト仮想マシン)に配分する。メモリ102のリソースは、ハイパーバイザ101内で動作するメモリマネージャ104によって、各ドメインのOSに割り当てられる。ディスクコントローラ236とLANコントローラ132を除いたGPU(Graphics Processing Unit)233、USBコントローラ(USB Cont.)234やAudio、USB、IEEE1394などのデバイスの場合、ゲスト仮想マシン120内のゲストOS121は、ドライバ124,125等によって、デバイスのI/Oに直接アクセスできる(パススルー方式)。ディスクコントローラ236とLANコントローラ132の場合、ゲスト仮想マシン内のゲストOS121は、フロントエンド仮想ドライバ126経由で、仮想マシン制御ドメイン110のバックエンドドライバ112にアクセスする(サービスVM方式)。バックエンドドライバ112は、制御ドメインOS111のアクセスとゲストOS121のアクセスとの調停をとって、ディスクコントローラ236およびLANコントローラ132にアクセスする。この時、ゲストOS121から見えるディスクは1つであるが、ゲストOSは複数の仮想ディスクファイルで構成された仮想ディスクをディスクとして利用する(図3)。
図3は、仮想ディスクの構成の一例を示すブロック図である。例えば、図3に示すように、仮想ディスクは、マスター(原本)になる基本仮想ディスクファイル301と、基本仮想ディスクファイル301が示すデータに対する変更箇所及び変更されたデータを示す差分情報を格納するシステム差分仮想ディスクファイル302,ユーザ差分仮想ディスクファイル303とから構成される。本実施形態では、差分仮想ディスクファイルが使用される。例えば、ユーザ差分仮想ディスクファイル303に、書き込みデータが格納される。
ゲストOS121上で動作するゲスト仮想マシン管理エージェントプログラム(以下、管理エージェントと記す)123が、ゲスト仮想マシン120の状態を監視する。
管理エージェント123は、ハイパーバイザ101内で動作するI/Oマネージャ103経由で制御ドメイン110内の仮想マシンマネージャ(VMマネージャ)118と通信する。仮想マシンマネージャ118は、ハイパーバイザ101のコントロールI/Fを使用して、ゲスト仮想マシン120の起動、終了、スリープ復帰などの指示を行うことができる。制御ドメイン110の仮想ACPI117は、ゲストOS121からの電源コントロール(ACPI)に対して、直接クライアントコンピュータ100のACPIを制御市内。仮想ACPI117は、ゲスト仮想マシン120のドメイン内のみの電源制御となるように動作する。例えば、ゲストOS121をスリープした場合、ゲストOS121上でのみスリープ状態となり、ハイパーバイザ101、制御ドメインOS111は通常の状態で動作する。
このクライアントコンピュータ100では、いくつかのモード(状態)がある。以下に、クライアントコンピュータ100のモードについて説明する。
1.配信イメージ受信モード:配信サーバ202から基本仮想ディスクファイル301および差分仮想ディスクファイル302,303を受信して、基本仮想ディスクファイル301および差分仮想ディスクファイル302,303をクライアントコンピュータ100のストレージ131に保存するモード。
2.セットアップモード:ストレージ131に保存したディスクイメージファイルをゲストOS121として起動し、ユーザがログイン可能な状態までのセットアップ(ドライバのインストール、設定)を行う。
3.運用モード:ユーザがゲストOS121にログインして実行している状態。
4.ユーザ切り替えモード:ユーザのアカウントが変わり、仮想マシンを切り替えている状態。
5.ゲストOS保存モード:ゲストOS121の環境が使用していたメモリ(RAM)の内容をNAS220に保存する状態。
図4を参照して、上述したモードの遷移を説明する。
仮想マシンマネージャ118は、開始すると初期状態(INIT)となる。ここで、非運用モードの通知を受けると、待機状態となる(WAIT)。待機時、仮想マシンマネージャ118は、管理サーバ201へモード確認要求を送信する。送信してからT1時間経過するまでに、管理サーバ201からの応答が無ければ、仮想マシンマネージャ118は、再度管理サーバ201へのモード確認要求を送信する。
モード確認要求に応じて管理サーバ201から配信受信モードであることが指示されれば、「配信受信モード」に移行する。そして、仮想マシンマネージャ118は、イメージ送信開始要求を配信サーバに送信する。仮想マシンマネージャ118は、配信サーバからデータを受信すると、ストレージ131にイメージファイルを格納する。必要があれば、仮想マシンマネージャ118は、次のイメージファイルをストレージに格納するためのデータの送信要求を、配信サーバに対して送信する。配信サーバから送信完了が通知されたら、仮想マシンマネージャ118は、イメージファイルをハイパーバイザ101に登録する。そして、仮想マシンマネージャ118は、配信受信モードの終了を管理サーバ201に通知し、待機状態(WAIT)となる。管理サーバ201は、セットアップモードに移行するよう指示する。
管理サーバ201からセットアップモードの通知を受信した場合、「セットアップモード」に移行する。仮想マシンマネージャ118は、セットアップモード開始通知を管理サーバ201に送信する。仮想マシンマネージャ118は、ハイパーバイザ101にゲスト仮想マシンの起動要求を発行する。
セットアップモードの場合、仮想マシンマネージャ118は、T2時間毎にゲストOSのセットアップ状態を確認する。ゲストOSのセットアップ状態が、セットアップの終了を確認したら、仮想マシンマネージャ118は、管理サーバ201にセットアップの終了を通知し、システムをシャットダウンする。
図5を参照して、セットアップモード時の処理について説明する。配信サーバ202から基本仮想ディスクファイル301を各クライアントコンピュータ100に配布する。同じ基本仮想ディスクファイル(SYS−COM)301が、各クライアントコンピュータ100のストレージ131に保存される。
各クライアントコンピュータ100は、配信イメージの受信後、セットアップモードとなる。各クライアントコンピュータ100は、ストレージ131から基本仮想ディスクファイル(SYS−COM)301を読み出して仮想マシンを起動する。この時、仮想ディスク127には、配信された基本仮想ディスクファイル301のほかに、さらに1段の空のシステム差分仮想ディスクファイル(SYS−DIFF)302をストレージ131内に作成して、差分仮想ディスクファイル(SYS−DIFF)302が仮想ディスク127に組み込まれる。これによりゲスト仮想マシンからの仮想ディスク127への書き込みは、すべてその空のシステム差分仮想ディスクファイル(SYS−DIFF)302に対して行われる。
ゲストOS121が起動すると、最初のクライアントコンピュータ100上での起動であるため、ドライバのインストール、ネットワーク等の設定が行われる。また、各クライアント個別ID(マシン名等)の設定も行われる。システム差分仮想ディスクファイル(SYS−DIFF)302は、各クライアント毎に用意される。各システム差分仮想ディスクファイル(SYS−DIFF)302には、対応するクライアントで用いられるデータが格納されることになる。
セットアップが終了すると、ゲスト仮想マシン管理エージェント123が、セットアップの終了を認識する。ゲスト仮想マシン管理エージェント123は、セットアップが終了した旨を、仮想マシン制御ドメイン110の仮想マシンマネージャ118に通知する。そして、ゲスト仮想マシン管理エージェント123は、ゲストOS121に対してスリープ要求を発行する。
ゲストOS121は、ACPIに準拠したOSPM(OS Directed Power Management)モジュールを有している。ゲストOS121が、ゲスト仮想マシン管理エージェント123からスリープ(S3:Suspend to RAM)の要求を受けると、ゲストOS121内のOSPMモジュールが、物理レイヤ230の各種デバイスをそれらデバイスに対応するデバイスドライバによってD3状態(停止状態)にする。
OSPMモジュールは、すべてのデバイスが停止になったことを確認すると、ゲスト仮想マシン120の仮想BIOSに対して、システムをS3(スリープ)に移行するようI/Oを出力する。例えば、特定のI/Oアドレスに対してアクセスを行うことによって(例えばこの特定のI/Oアドレスに対する出力命令を発行することによって)、OSPMモジュールは、仮想BIOSにS3(スリープ)状態へ移行するように指示する。
仮想環境の場合、このI/O(例えば、特定のI/Oアドレスに対してアクセス)は、ハイパーバイザ101のI/Oマネージャ103によって捕捉される。I/Oマネージャ103は、補足したI/Oを制御ドメインOS111上のI/Oエミュレータ116に渡す。渡されたI/OがACPIのI/Oアドレスであるので、I/Oエミュレータ116は、渡されたI/Oを仮想ACPIの処理に通知する。そこで、仮想マシンマネージャ118(VM Manager)は、ゲスト仮想マシンがS3(スリープ)状態に移行したことを認識し、ゲストOSが使用していた(ゲスト仮想マシンに割り当てられていた)メモリ(RAM)202Aのデータを保存するように、ゲストメモリコントローラ(GuestMemCnt)119に対して指示する。
ゲストメモリコントローラ119は、ゲストOS121が使用していたメモリ(RAM)202Aをページ(4KB)またはスーパページ(2MB)単位に抜き出し、ストレージ131内にイメージファイル(MEM−COM)411として保存する。保存後、仮想マシンマネージャ118は、ハイパーバイザ101に対して、ゲスト仮想マシン120の終了を指示し、システムをシャットダウンさせ、セットアップは終了する。この時、管理サーバ201にはセットアップモードの完了を通知、運用モードにセットする。
ユーザが、仮想化環境がセットアップ済みのクライアントコンピュータ100の電源を投入し起動した後(INIT)、セットされたモードが運用モードであれば、仮想マシンマネージャ118は、「運用モード」になる。
図6を用いて、運用モードについて、説明する。運用モードでは、クライアントコンピュータ100はハイパーバイザ101の起動、制御ドメインOS111の起動を行う。そして、図6に示すように、制御ドメインOS111上で仮想マシンマネージャ118が起動し、配信された基本仮想ディスクファイル(SYS−COM)301とセットアップ時に保存したシステム差分仮想ディスクファイル(SYS−DIFF)302とを仮想ディスク127としてハイパーバイザに割り当てる。そして、仮想マシンマネージャ118は、さらにデータが格納されていない仮想ディスクファイル(SYS−USER−NULL)を仮想ディスク127に設定する。
仮想マシンマネージャ118は、ゲスト仮想マシンを起動するためにゲストドメインの生成をハイパーバイザ101に指示する。そして、仮想マシンマネージャ118は、ゲストメモリコントローラ(GuestMemCntl)119に対して、ゲスト仮想マシン120に割り当てられるゲストメモリ(RAM)に、セットアップ時に保存されたMEM−COMファイル411に基づいて、データをリストアするように指示する。ハイパーバイザ101は、MEM−COMファイル411の保存時と同じアドレスにデータをマッピングして、ゲストOSからメモリ内のデータを使用できるように、メモリの記憶領域をゲスト仮想マシンにゲストメモリ(RAM)202Aとして割り当てる。ゲストメモリコントローラ119は、割り当てたメモリの記憶領域にMEM−COMファイル411に基づいてデータをリストアする。リストア完了後、仮想マシンマネージャ118は、S0(通電動作)状態への復帰をゲスト仮想マシンに指示する。
これにより、ゲストOS121は、セットアップモードの最後の状態に戻り、画面上にはログイン入力画面が表示される。
ユーザは、自分のアカウントIDとパスワードを入力してログインしようとする。ゲストOS121は、このログイン時に入力されたIDとパスワードを元に指定された認証を行い、認証がとれたならば、ログオン処理に入る。
ゲスト仮想マシン120のゲスト仮想マシン管理エージェント123は、このログオンイベントを受信し、ユーザIDを仮想マシンマネージャ118に送信し、直ちにS3(スリープ)状態に入るようゲストOS121に指示する。ゲストOS121は、セットアップ時と同じ様に各デバイスをD3(停止)状態にし、S3(スリープ)状態に移行するようI/Oを出力する。
運用モード時に、管理エージェント123からログアウトまたは環境の保存イベントを示す情報を受信すると、仮想マシンマネージャ118は、保存モードになる。保存モードでは、クライアントコンピュータ100がS3(スリープ)状態に移行すると、ゲスト仮想マシンに割り当てられているメモリの記憶領域のデータを、仮想マシン制御ドメイン110に割り当てられているストレージ131の記憶領域に保存する。仮想マシンマネージャ118は、MEM−COMファイル411とメモリ202内のデータとの差分を抽出し、変更位置および変更データを示す差分情報を生成する。仮想マシンマネージャ118は、生成された差分情報をNAS220に保存する。
仮想マシンマネージャ118は、NAS220からSYS−USER−Aファイル221Aを取得し、SYS−USER−Aファイル221Aに含まれる差分情報と仮想ディスクファイル(SYS−USER−NULL)403に含まれる差分情報とを比較する。そして、SYS−USER−Aファイル221Aの作成時から変更された新たな変更位置および変更データを示すデータを含むように、SYS−USER−Aファイル221Aを更新する。そして、仮想マシンマネージャ118は、仮想ディスクファイル(SYS−USER−NULL)403の中身を空にする。そして、仮想マシンマネージャ118は、S3状態からS0(通電動作)状態への復帰をゲスト仮想マシンに指示する。そして、仮想マシンマネージャ118は「運用モード」に戻る。
図7を参照して、保存モード時の動作を説明する。
ログイン中に、保存の指示またはログアウトの指示を検出すると、ゲスト仮想マシン管理エージェント123はそれらの指示を検出し、ゲストドメインをS3(スリーブ)状態にする。そして、図7に示すように、S3(スリーブ)状態になったところで、仮想マシンマネージャ118は、現在のRAMの内容(MEM−USER−Aファイル202B)とセットアップ時の内容(MEM−COMファイル411)とを比較し、ページあるいはスーパページ単位で差分をとる。仮想マシンマネージャ118は、変更位置および変更データを示す差分情報をMEM−USER−Aファイル222AとしてNAS220に保存し、NAS220内のMEM−USER−Aファイル222Aを更新する。MEM−USER−Bファイル222Bも同様に保存されたものである。
仮想マシンマネージャ118は、仮想ディスクファイルを構成するSYS−USER−NULLファイル403をSYS−USER−Aファイル221AとしてNAS220に格納し、NAS220内のSYS−USER−Aファイル221Aを更新する。
SYS−USER−Aファイル221AおよびMEM−USER−Aファイル222Aが更新された後、仮想マシンマネージャ118は、先ほどのユーザID情報から、そのユーザの差分ディスクファイル(SYS−USER−B)と差分メモリデータファイル(MEM−USER−B)を、ネットワーク上のNAS220から取得できるよう設定する。
管理エージェント123からログインイベントを受信したら、仮想マシンマネージャ118は運用モードからユーザ切替モードになる。クライアントコンピュータ100がS3(スリープ)状態に移行すると、仮想マシンマネージャ118は、配信サーバ202から基本仮想ディスクファイル301、システム差分仮想ディスクファイル302、および基本メモリイメージファイル411を受信し、NASからログインするユーザに対応する差分メモリイメージファイルおよびユーザ差分仮想ディスクファイルを受信する。そして、仮想マシンマネージャ118は、メモリ202の記憶領域にデータをリストアし、イメージファイルをクライアントコンピュータ100のストレージ131に格納する。そして、仮想マシンマネージャ118は、S3状態からS0(通電動作)状態への復帰をゲスト仮想マシン120に指示する。そして、仮想マシンマネージャ118は「運用モード」に戻る。
図8を参照して、「ユーザ切替モード」時の処理を説明する。以下では、ユーザBの使用環境を再現する場合について説明する。
仮想マシンマネージャ118は、MEM−USER−Bファイル222Bと、クライアントコンピュータ100にあるMEM−COMファイル441とを結合したデータを生成する。ゲストメモリコントローラ119は、生成されたデータをゲスト仮想マシン120に割り当てられたメモリ202Cに配置(リストア)する。また、SYS−USER−NULLファイル403としてSYS−USER−Bファイル221Bが用いられる。リストア終了後、仮想マシンマネージャ118は、ハイパーバイザ101にドメインのS0(復帰)を指示して、ゲストOSを復帰させる。
ログイン中に画面が変わって、ユーザBのデスクトップ環境が表示された後、ユーザBは、作業を開始できる。
コンピュータが運用モードで起動してからのユーザの切替の動作を、図9〜図12のシーケンス図を参照して説明する。
図9において、クライアントコンピュータ100の電源がオンされると、ハイパーバイザ101が実行される。ハイパーバイザ101は、VM制御ドメインOS111を起動する(1.1)。制御ドメインOS111は、仮想マシンマネージャ118を起動する。仮想マシンマネージャ118は、ゲストメモリコントローラ119を起動する(1.1.1)。仮想マシンマネージャ118は、基本仮想ディスクファイル301およびシステム差分仮想ディスクファイル302をストレージ131から参照し、基本仮想ディスクファイル301およびシステム差分仮想ディスクファイル302から構成される仮想ディスクを制御ドメインOS111に設定する(1.1.1.2)。仮想マシンマネージャ118は、ハイパーバイザ101に仮想マシンを実行するためのドメインの生成を指示する(1.1.1.3)。ハイパーバイザ101は、ドメインを生成する(1.1.1.3.1)。
仮想マシンマネージャ118は、I/Oエミュレータ116を起動する(1.1.1.4)。仮想マシンマネージャ118は、ゲストメモリコントローラ119にメモリ202に共通データのリストアを指示する。ゲストメモリコントローラ119は、ハイパーバイザ101が管理する、メモリ119の物理アドレスと仮想マシンで管理される仮想メモリの論理アドレスとの変換テーブルの論理アドレスに対して、MEM−COMファイル411の保存時と同じ論理アドレスをマッピングする(1.1.1.5.1)。ゲストメモリコントローラ119は、MEM−COMファイル411に基づいて、メモリ202にデータを格納する(1.1.1.5.2)。
仮想マシンマネージャ118は、ハイパーバイザ101にS0状態への復帰を指示する(1.1.1.6)。ハイパーバイザ101は、ゲストOS121に対してS0状態への復帰を指示する(1.1.1.6.1)。ゲストOS121は、S0状態への復帰処理を開始する(1.1.1.6.1.1)。管理エージェント123は、ゲストOSがS3状態に復帰したら、仮想マシンマネージャ118に復帰処理が完了したことを通知する(1.1.1.6.1.1.1)。ゲストOS121は、ストレージ131にアクセスする場合、VM制御ドメインOS111上のバックエンドドライバ112にアクセス要求を発行する(1.1.1.6.1.1.2)。ここまでの説明した処理によって、コンピュータは、図6に示す状態になる。
図10において、オペレータがログインすると(2)、ゲストOS121がユーザ認証を行う(2.1)ゲストOS121は、ログインイベントを受信した旨を管理エージェント123に通知する(2.1.1)。管理エージェント123は、ゲストOS121にS3状態への移行を要求する(3)。ゲストOS121のOSPMは、パススルーしている各種I/OデバイスとI/Oエミュレータ116に対して、デバイスのD3状態への移行を指示する(3.1)。
ゲストOS121のOSPMは、全てのデバイスが停止状態になったことを確認すると、仮想BIOSに対して、システムをS3状態に移行するようI/Oを出力する。ゲストOS121からのI/Oへの出力は、I/Oエミュレータ116によって捕捉される(3.2)。I/Oエミュレータ116は、ハイパーバイザ101に対して、ゲストOS121が稼働しているドメインをS3状態に移行するように指示する(3.2.1)。
仮想マシンマネージャ118は、ドメインの状態を取得する(4)。ドメインがS3状態に移行したら、仮想マシンマネージャ118は、ゲストOSが稼働していた仮想マシンに割り当てられていたメモリの記憶領域に格納されていたデータの保存をゲストメモリコントローラに指示する(5)。先に図7を参照して説明したように、ゲストメモリコントローラは、仮想マシンに割り当てられていたメモリの記憶領域に格納されていたデータと、MEM−COMファイル411が示すデータとの差分を抽出する(5.1)。抽出された差分データと、差分データの格納位置とを示す差分情報を例えばNAS220に格納する(5.2)。
仮想マシンマネージャ118は、ドメインの終了をハイパーバイザ101に指示する(6)。ハイパーバイザ101は、ドメインを終了させる(6.1)。仮想マシンマネージャ118は、I/Oエミュレータ116を終了させる(7)。
図11において、仮想マシンマネージャ118は、MEM−COMファイル411およびログインユーザに対応するMEM−USERファイルを用いてメモリ内のデータのリストアを行うようにゲストメモリコントローラに指示する(8)。
仮想マシンマネージャ118は、ハイパーバイザ101に仮想マシンを実行するためのドメインの生成を指示する(9)。ハイパーバイザ101は、ドメインを生成する(9.1)。
先に図8を用いて説明したように、仮想マシンマネージャ118は、基本仮想ディスクファイル301、システム差分仮想ディスクファイル(SYS−DIFF)302、およびユーザ差分仮想ディスクファイル(SYS−USERファイル)303に基づいてゲスト仮想マシンを実行するための仮想ディスクをハイパーバイザに設定し、ゲスト仮想マシンを起動させる(10)。仮想マシンマネージャ118は、I/Oエミュレータ116を起動する(11)。
ゲストメモリコントローラ119は、MEM−COMファイル411とログインユーザに対応するMEM−USERファイルとの読み出し要求をVM制御ドメインOS111に発行する(8.1)。ゲストメモリコントローラは、ハイパーバイザ101が管理する、メモリの物理アドレスと仮想マシンで管理される仮想メモリの論理アドレスとの変換テーブルの論理アドレスに対して、MEM−COMファイルの保存時と同じ論理アドレスをマッピングする(8.2)。ゲストメモリコントローラは、MEM−COMファイル411およびMEM−USERファイルに基づいて、メモリ202にデータを格納する(8.3)。
仮想マシンマネージャ118は、ハイパーバイザ101にオペレーティングシステムのS0状態への復帰を指示する(12)。ハイパーバイザ101は、ゲストOS121に対してS0状態への復帰を指示する(12.1)。ゲストOS121は、S0状態への復帰処理を開始する(12.1.1)。管理エージェント123は、ゲストOS121がS3状態に復帰したら、仮想マシンマネージャ118に復帰処理が完了したことを通知する(12.1.1.1)。
図12において、S0状態に復帰すると、オペレータが操作を開始する(13)。ゲストOSは、ストレージにアクセスする場合、VM制御ドメインOS111上のバックエンドドライバにアクセス要求を発行する(13.1)。
オペレータがログアウトの操作を行うと(14)、ゲストOS121がログアウトイベントを管理エージェント123に送信する。管理エージェント123は、ログアウトイベントを受信した旨を仮想マシンマネージャ118に通知する。
管理エージェント123は、ゲストOSにS3状態への移行を要求する(15)。ゲストOSは、I/Oエミュレータ116に対して、デバイスのD3状態への移行を指示する(15.1)。
ゲストOS121は、全てのデバイスが停止状態になったことを確認すると、仮想BIOSに対して、システムをS3状態に移行するようI/Oを出力する。ゲストOSからのI/Oへの出力は、I/Oエミュレータ116によって補足される(15.2)。I/Oエミュレータ116は、ハイパーバイザ101に対して、ゲストOSが稼働しているドメイン(ゲスト仮想マシン)をS3状態に移行するように指示する(15.2.1)。
仮想マシンマネージャ118は、ドメインの状態を取得する(16)。ドメインがS3状態に移行したら、仮想マシンマネージャ118は、ゲストOS121が稼働していた仮想マシンに割り当てられていたメモリの記憶領域に格納されていたデータの保存をゲストメモリコントローラに指示する(17)。ゲストメモリコントローラ119は、仮想マシンに割り当てられていたメモリの記憶領域に格納されていたデータとと、MEM−COMファイルが示すデータとの差分を抽出する(17.1)。抽出された差分データに基づいて、MEM−USERファイルを更新する(17.2)。
仮想マシンマネージャ118は、ハイパーバイザ101にドメインの終了を指示する(18)。ハイパーバイザ101は、仮想マシンマネージャ118からの指示に応じて、ドメインを終了する(18.1)。そして、仮想マシンマネージャ118は、I/Oエミュレータ116を終了する(19)。
次に、図13のフローチャートを参照して運用モード時の管理エージェント123の動作を説明する。
管理エージェント123は、ゲストOSからのイベントを待っている(ステップB901)。イベントを受信したら、管理エージェント123は、ログインイベントであるかを判定する(ステップB902)。ログインイベントであると判定した場合(ステップB902のYes)、管理エージェント123は、ログインイベントを受信した旨を仮想マシンマネージャ118に通知する(ステップB905)。ログインイベントでは無いと判定した場合(ステップB902のNo)、管理エージェント123は、ログアウトイベントであるかを判定する(ステップB903)。ログアウトイベントであると判定した場合(ステップB903のYes)、管理エージェント123は、ログアウトイベントを受信した旨を仮想マシンマネージャ118に通知する(ステップB906)。ログアウトイベントでは無いと判定した場合(ステップB903のNo)、管理エージェント123は、デスクトップ環境の保存指示ベントであるかを判定する(ステップB904)。デスクトップ環境の保存指示イベントであると判定した場合(ステップB904のYes)、管理エージェント123は、デスクトップ環境の保存指示イベントを受信した旨を仮想マシンマネージャ118に通知する(ステップB907)。ステップB905、B906、B907の後、管理エージェント123は、オペレーティングシステムのOSPMにS3状態への移行を要求する(ステップB908)。オペレーティングシステムは、各デバイスをD3状態に遷移させ、ACPIのI/OにS3状態を設定する(ステップB909)。
図14は、メモリの差分データの作成を説明するための図である。ゲスト仮想マシンが1つ(制御ドメインOS111は除く)である場合には、ゲスト仮想マシンの使用するメモリ領域は、セットアップ時と同等になる。ハイパーバイザ101には、分断されたメモリ領域のブロックのマッピング情報(物理アドレスとサイズ)を有する。マッピング情報は、ユーザログイン後の状態もセットアップ時と同じであるため、差分をとることができる。通常、ゲストOSが固定で使用するメモリの記憶領域とアプリケーションが動的に使用するメモリ記憶領域とがある。固定で使用される記憶領域は内容の変化がないことが多い。したがって、それらの領域のセットアップ時の差分を取ることによって、保存するメモリ量が減少する。
このコンピュータによれば、ゲスト仮想マシン内で動作するゲストOSにログアウトが要求された場合に、ゲストOSに通常状態からスリープ状態への移行を要求し、ゲストOSがスリープ状態に移行した場合に、ゲストOSが使用するメモリの記憶領域内のデータを示すメモリイメージファイルを作成し、ゲスト仮想マシンの起動が要求された場合に、メモリイメージファイルの作成時の仮想マシンに割り当てられていた記憶装置の記憶領域内のデータを示すディスクイメージファイルをハイパーバイザに設定し、メモリイメージファイルに基づいて、仮想マシンに割り当てられたメモリの第2の記憶領域に第1の記憶領域に格納されていたデータを復元し、第2の記憶領域にデータが復元された場合、オペレーティングシステムをスリープ状態から通常状態へ復帰させることをハイパーバイザに要求することで、ゲスト仮想マシンの起動時やログインユーザの切り替え時に、ゲスト仮想マシンが使用できるようになるまでに待つ時間を短縮することが可能になります。
ところで、上述した図2のゲストOS上で動作する管理エージェント123は、ゲスト仮想マシン120の状態を監視する。管理エージェント123は、ハイパーバイザ101のI/Oマネージャ経由で制御ドメイン内の仮想マシンマネージャと通信ができるようになっている。この管理エージェント123は、起動時に、ゲストOS121に対して予め指定された数の通信ポートの開放(オープン)を要求する。管理エージェント123は、要求に応じてゲストOS121から割り当てられたポートのポート番号を、制御ドメインOS111上で動作する仮想マシンマネージャ118に通知する。仮想マシンマネージャ118は、制御ドメインOS111に通知されたポート番号を送信元ポート番号として使用するよう要求する。制御ドメインOS111は、要求に応じて送信元ポート番号の制限を行う。
図15は、クライアントコンピュータ内でのパケットデータの流れを示している。制御ドメイン110のネットワークドライバ113が、LANコントローラ235で受信したパケットを受信処理する。受信したパケットは制御ドメインOS111内のポートスイッチ1001に送られる。ポートスイッチ1001は、パケットがゲスト仮想マシン120の受信パケットであるかを判定する。ゲスト仮想マシン120の受信パケットであると判定した場合、パケットが、バックエンドドライバ112およびハイパーバイザ101を経由して、ゲスト仮想マシン120内のフロントエンド仮想ドライバ126に送信される。フロントエンド仮想ドライバ126が受信したパケットは、ゲストOS121によって処理され、データがゲスト仮想マシン内のアプリケーションに渡される。
逆に、ゲスト仮想マシン120から送信されたパケットは、ゲスト仮想マシン120内のフロントエンド仮想ドライバ126およびハイパーバイザ101を経由して、制御ドメインOS111のバックエンドドライバ112に渡される。そして、パケットは、制御ドメインOS111のポートスイッチ1001を経由して実際のネットワークのデバイスに送信される。
図16は、ネットワーク内に流れるパケットの構造を示す。このパケットは、LANで使用されているIEEE802.3のMACヘッダとTCP/IPプロトコルで規定され、トランスポート層のプロトコルがTCP/UDPの場合のものである。パケットは、MACヘッダ1110、IPヘッダ1120、TCP/UDPヘッダ1130、データ1140等を含む。
MACヘッダ1110は、送信元MACアドレス1111、および宛先MACアドレス1112等を含む。IPヘッダ1120は、トランスポート層のプロトコルを示すプロトコル番号1121、送信元IPアドレス1122、および宛先IPアドレス1113等を含む。TCP/UDPヘッダ1130は、送信元ポート番号1131、宛先ポート番号11132を含む。
次に、図17を参照して、ポートスイッチ1001の構成を説明する。ポートスイッチ1001は、送信パケット解析部1201、テーブル検索/登録部1202、送信処理部1203、受信処理部1204、受信パケット解析部1205、テーブル検索/ポート判定部1206、受信通知/パケットデータ引渡部1207、およびタイマ部1208等を有する。
制御ドメイン110およびゲスト仮想マシン120は、それぞれ仮想のLAN−I/Fとして制御ドメインOS−I/F1211、ゲストOS−I/F1212を有する。それぞれのLAN−I/F1211、1212からの送信パケットは、送信パケット解析部1201に送られる。
また、ポートスイッチ1001は、テーブル1209を管理する。図18を参照して、テーブル1209の構造を説明する。I/F番号には、仮想マシンのLAN−I/F番号が入力される(0以上の整数)。ポート番号には、パケット送信時には送信元ポート番号(SP)を入力される。パケット受信時には宛先ポート番号(DP)と送信元ポート番号(SP)とが一致するかが確認される。プロトコル番号は、パケット送信時のプロトコル番号が入力される。パケット受信時には、受信のプロトコル番号と一致する、パケット送信時のプロトコル番号があるか検索される。
タイマ部1208により各エントリ毎の生存時間が一定時間ごとに減算され、0になった時点でそのエントリは無効、削除される。生存時間の初期値として“−1”にしたエントリは、タイマ部1208による減算はされず、無効とはならず残る。これは、予めそのポート番号を宛先ポート番号(DP)として持つパケットを受信するためである。通常はクライアント側から通信を開始することで、各エントリは登録されるが、通信の起動がクライアント外からである場合には、ポートスイッチ1001で制御ドメインOS側に受信することができないため、予め生存時間を−1としたエントリをセットし、そのエントリは必ず残るようにする。これにより、通信の起動がクライアント外からである場合でも正常に通信できるようになる。
送信パケット解析部1201は、パケットがTCP/IPパケットであるかを判定する。パケットがTCP/IPパケットであれば、テーブル検索/登録部1202は、プロトコル番号、送信元ポート番号(SP)、および宛先ポート番号(DP)を取り出す。テーブル検索/登録部1202は、取り出されたプロトコル番号および送信元ポート番号(SP)と一致するエントリをテーブル1209から検索する。TCP/IPパケット以外であれば、パケット解析部は、テーブル1209内のエントリを検索せずに、パケットを送信処理部1203に渡す。
取り出されたプロトコル番号および送信元ポート番号(SP)と一致するエントリがなければ、テーブル検索/登録部1202は、プロトコル番号と送信元ポート番号(SP)、受信した仮想LAN−I/F番号を新規のエントリに登録する。テーブル1209内に既にエントリがあれば、テーブル検索/登録部1202は、そのエントリの生存時間をデフォルト値に再設定して、パケットを送信処理部1203に渡す。送信処理部1203は送信処理を実行し、パケットをLANコントローラ235に送信する。LANコントローラ235は、LANポート(LAN-PHY)1221に接続されたネットワーク上に存在するデバイスにデータを送信する。
次に、データの受信について説明する。ネットワークケーブルが接続されるLANポート(LAN-PHY)1221に接続されたネットワーク上に存在するデバイスから送信されたデータをLANコントローラ235が受信する。LANコントローラ235は、受信したパケットを受信処理部1204に渡す。受信処理部1204は、データ内からパケットを取り出す。受信パケット解析部1205は、取り出されたパケットがTCP/IPパケットであれば、プロトコル番号、送信元ポート番号(SP)、および宛先ポート番号(DP)を取り出す。テーブル検索/ポート判定部1206は、テーブル1209から取り出されたプロトコル番号および宛先ポート番号(DP)と一致するエントリを検索する。テーブル1209内に一致するエントリがあれば、テーブル検索/ポート判定部1206は、受信通知/パケットデータ引渡部1207にそのエントリのポート番号のLAN−I/Fに対して受信通知を行うように指示する。一致するエントリがなければ、受信通知/パケットデータ引渡部1207にゲスト仮想マシンのLAN−I/Fに対して受信通知とパケットデータの引渡しを行うように指示する。受信したパケットがTCP/IP以外であるならば、受信通知/パケットデータ引渡部1207によってゲスト仮想マシンのゲストOS−I/F1212に受信させる。特にARP(Address Resolution Protoco、アドレス解決プロトコル)パケット(IPアドレスとMACアドレスの対応付けを行うプロトコル)ならば受信通知/パケットデータ引渡部1207によって全ポートに受信させる。これにより、適切なポート番号によって、MACアドレス、IPアドレスが同じLAN−I/Fであっても適切な仮想マシンのLAN−I/Fに受信できるようになる。
タイマ部1208は、テーブル1209の各エントリの生存時間を一定間隔おきに減算し、0になった時点でそのエントリを削除する。
図19のフローチャートを参照して、パケット送信時のポートスイッチ1001の動作を説明する。
送信パケット解析部1201は、送信されるパケットが、TCP/IPパケットであるかを判定する(ステップB1401)。TCP/IPパケットであると判定した場合(ステップB1401のYes)、テーブル検索/登録部1202は、パケットからプロトコル番号、送信元ポート番号(SP)、および宛先ポート番号(DP)を取り出す(ステップB1402)。テーブル検索/登録部1202は、送信要求元の仮想LAN−I/F番号、プロトコル番号、送信元ポート番号(SP)を有するエントリがテーブル1209内に登録されているかを判定する(ステップB1403)。
登録されていると判定した場合(ステップB1403ののYes)、登録されているエントリ内の生存時間をデフォルト値に設定する(ステップB1404)。
登録されていないと判定した場合(ステップB1403ののNo)、テーブル検索/登録部1202が、送信要求元の仮想LAN−I/F番号、プロトコル番号、送信元ポート番号(SP)、生存時間を有するエントリをテーブル1209に設定する(ステップB1406)。
TCP/IPパケットではないと判定された場合(ステップB1401のNo)、およびステップB1404、B1405の後、送信処理部1203が、LANコントローラに対して、パケットの送信を要求する(ステップB1405)。
次に、図20を参照して、パケット受信時のポートスイッチ1001の動作を説明する。
受信パケット解析部1205は、受信したパケットがARPパケットであるかを判定する(ステップB1501)。ARPパケットであると判定した場合(ステップB1501のYes)、受信通知/パケットデータ引渡部1207が全ポートにパケットを渡す(ステップB1508)。ARPパケットではないと判定した場合(ステップB1501のNo)、受信パケット解析部1205は、パケットが、TCP/IPパケットであるかを判定する(ステップB1502)。TCP/IPパケットではないと判定した場合(ステップB1502のNo)、受信通知/パケットデータ引渡部1207がゲストOS−I/F1212にパケットを引き渡す(ステップB1509)。
TCP/IPパケットであると判定した場合(ステップB1503のYes)、テーブル検索/ポート判定部1206は、パケットからプロトコル番号、送信元ポート番号(SP)、および宛先ポート番号(DP)を取り出す(ステップB1503)。テーブル検索/登録部1202は、プロトコル番号、宛先ポート番号(DP)を有するエントリがテーブル1209内を検索する(ステップB1504)。
検索の結果、登録されているエントリがない場合(ステップB1505のNo)、受信通知/パケットデータ引渡部1207は、パケットをゲストOS−I/F1212に渡す(ステップB1510)。登録されているエントリがあった場合(ステップB1505のYes)、テーブル検索/ポート判定部1206は、登録済みのエントリの生存時間をデフォルト値に再設定する(ステップB1506)。受信通知/パケットデータ引渡部1207は、ポート番号に対応する送信元I/Fにパケットを渡す(ステップB1507)。
図21,図22のシーケンス図を参照して、クライアントコンピュータ内のパケットデータの送受信時の処理を説明する。
まず、ゲストOS121が起動すると、管理エージェント123も起動する。他の仮想マシンが使用するポート番号を自ゲストマシン内の他の通信アプリケーションやサービスが使用しないよう、管理エージェント123は、設定された数の複数のポートのオープンをゲストOSに対して要求し、ゲストOS121からポート番号を割り当ててもらう(1〜3)。このオープンしたポートはこのゲストOS121および管理エージェント123からは使用せず、ゲストOS121はポートをオープンするのみとする。そうすることで、このゲストOS121上の通信アプリケーションやサービスが使用することはできなくなる。
管理エージェント123は、仮想マシンマネージャ118にゲストOS121から割り当てられたポートのポート番号を通知する(4)。仮想マシンマネージャ118は、通知されたポート番号を送信元ポート番号として使用するよう要求する(4.1)。仮想マシンマネージャ118は、ポートの開放を要求する(5)。仮想マシンマネージャ118は、データを送信する場合、制御ドメインOS111にデータを送信する旨を通知し(6)、仮想マシンマネージャ118は制御ドメインOS111にデータを送信する(7)。制御ドメインOS111は、ポートスイッチ1001にパケットを送信する(7.1)。ポートスイッチ1001は、テーブル1209にパケットの送信に用いられたポートの番号を登録する(7.1.1)。ポートスイッチ1001は、LANコントローラ235にパケットの送信を要求する(7.1.2)。LANコントローラ235は、パケットを送信する(7.1.2.1)。
LANコントローラ235がパケットを受信した場合(8)、LANコントローラ235は、パケットをポートスイッチ1001に渡す(8.1)。ポートスイッチ1001は、テーブル1209からパケットに含まれるプロトコル番号、宛先ポート番号(DP)を有するエントリを検索する(8.1.1)。パケットに含まれるプロトコル番号および宛先ポート番号(DP)を有するエントリがテーブル1209内にあり、エントリに含まれるポート番号が制御ドメインOS−I/F1211に対応していれば(8.1.1.1)、ポートスイッチ1001は、パケットを制御ドメインOS111に送る(8.1.1.2)。制御ドメインOS111は、仮想マシンマネージャにパケットを渡す(9)。
LANコントローラ235がパケットを受信した場合(10)、LANコントローラ235は、パケットをポートスイッチ1001に渡す(10.1)。ポートスイッチ1001は、テーブル1209からパケットに含まれるプロトコル番号、宛先ポート番号(DP)を有するエントリを検索する(10.1.1)。パケットに含まれるプロトコル番号および宛先ポート番号(DP)を有するエントリがテーブル1209内にあり、エントリに含まれるポート番号がゲストOS−I/F1212に対応している、あるいはプロトコル番号および宛先ポート番号(DP)を有するエントリがテーブル1209内にない場合(10.1.1.1)、ポートスイッチ1001は、パケットをゲストOS121に送る(10.1.1.2)。
制御ドメインOS111がパケットの返信があった場合(11)、ポートスイッチ1001は、送信要求元の仮想LAN−I/F番号、プロトコル番号、送信元ポート番号(SP)、生存時間を有するエントリをテーブル1209に設定する(11.1)。そして、ポートスイッチ1001は、、LANコントローラ235にパケットの送信を要求する(11.2)。LANコントローラは、パケットを送信する(11.2.1)。
以上説明した、通信方法によれば、ゲストOS121から管理エージェント123に割り当てられた複数のポート番号を、制御ドメイン110の仮想マシンマネージャ118に通知し、制御ドメインOS111の使用可能なポート番号の範囲を、管理エージェント123から通知された範囲の番号に設定する。これにより、制御ドメインOS111上の通信サービスは、このポート番号の範囲のなかで使用されることとなる。これにより、ゲスト仮想マシン120と制御ドメイン110とのポート番号の衝突はなくなる。後は、各マシンから通信が起動され、そのパケットを前述のポートスイッチ1001によって、受信パケットを適切な仮想マシンのLAN−I/Fに受信させることで、同じMACアドレス、同じIPアドレスを持つLAN−I/Fが存在しても通信が可能となる。
管理エージェント123のポート予約と、ポートスイッチ1001により、仮想マシン毎に異なるMACアドレスを割り当てる必要がなくグローバルMACアドレスを1つ割り当て、それに割り当てられる使用IPアドレスも1つになる。
また、セキュリティのためにMACアドレスフィルタリングを行っているネットワーク環境においても、クライアントPCのMACアドレスの許可のみで、使用できるようになった。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100…クライアントコンピュータ、101…ハイパーバイザ、102…メモリ、110…仮想マシン制御ドメイン、111…制御ドメインOS、112…バックエンドドライバ、113…ネットワークドライバ、118…仮想マシンマネージャ、120…ゲスト仮想マシン、121…ゲストOS、123…ゲスト仮想マシン管理エージェントプログラム、235…LANコントローラ、1001…ポートスイッチ、1201…送信パケット解析部、1202…登録部、1203…送信処理部、1204…受信処理部、1205…受信パケット解析部、1206…ポート判定部、1207…パケットデータ引渡部、1208…タイマ部。

Claims (6)

  1. ハイパーバイザ上で第1の仮想マシンおよび第2の仮想マシンを実行する情報処理装置であって、
    前記第1の仮想マシンは、
    前記第1の仮想マシン内の第1のオペレーティングシステムによって割り当てられた第1のポート番号を前記第2の仮想マシンに通知する通知手段と、
    第1のMACアドレスを示す送信元MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および前記第1のポート番号以外のポート番号を示す送信元ポート番号と宛先ポート番号とを含むTCP/UDPヘッダを含む送信パケットをネットワークに送信する第1の送信手段と
    を具備し、
    前記第2の仮想マシンは、
    前記第1のMACアドレスを示す送信元MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および前記第1のポート番号を示す送信元ポート番号を含むTCP/UDPヘッダを含む送信パケットをネットワークに送信する第2の送信手段
    を具備し、
    前記情報処理装置は、
    前記第1のMACアドレスを示す宛先MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および宛先ポート番号を含むTCP/UDPヘッダを含む受信パケットを前記ネットワークを介して受信した場合に、前記受信パケット内の宛先ポート番号が示すポート番号に応じて、前記受信パケットを前記第1の仮想マシンまたは前記第2の仮想マシンに振り分ける振分手段
    を具備する
    情報処理装置。
  2. ネットワークと通信を行い、前記第1のMACアドレスを示すMACアドレスが割り当てられているネットワークコントローラを更に具備する請求項1に記載の情報処理装置。
  3. 前記振分手段は、
    前記第1の送信手段または前記第2の送信手段から送信された第1の送信パケットに含まれる第1の送信元ポート番号を示すポート番号と、前記第1の送信パケットに含まれるプロトコル値を示す第1のプロトコル値、前記第1の送信元ポート番号に応じた前記第1の仮想マシンまたは前記第2の仮想マシンを示す仮想マシン情報とを含むエントリを送受信情報テーブルに登録する登録手段と、
    前記受信パケットに含まれる宛先ポート番号と一致する送信元ポート番号と、前記第1のプロトコル値と一致するプロトコル値とを含む第1のエントリが前記情報内にあるかを判定する判定手段と、
    前記第1のエントリがあると判定した場合、前記第1のエントリに含まれる送信元情報に基づいた送信先に前記受信パケットを送信し、前記第1のエントリがないと判定した場合、前記第1の送信手段に前記受信パケットを送信する送信手段とを具備する
    請求項1に記載の情報処理装置。
  4. 前記登録手段は、前記エントリ内に時間を示す時間情報を格納し、
    前記時間情報が示す時間を一定時間毎に減算し、前記時間情報が示す時間が0になった場合に、前記エントリを前記情報から削除する削除手段を更に具備する請求項3に記載の情報処理装置。
  5. 前記振分手段は、前記プロトコル値がアドレス解決プロトコルを示す場合、全ポートに前記受信パケットを振り分ける請求項1に記載の情報処理装置。
  6. ハイパーバイザ上で第1の仮想マシンおよび第2の仮想マシンを実行する情報処理装置の通信制御方法であって、
    前記第1の仮想マシンによって、前記第1の仮想マシン内の第1のオペレーティングシステムによって割り当てられた第1のポート番号を前記第2の仮想マシンに通知し、
    前記第1の仮想マシンによって、第1のMACアドレスを示す送信元MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および前記第1のポート番号以外のポート番号を示す送信元ポート番号と宛先ポート番号とを含むTCP/UDPヘッダを含む送信パケットをネットワークに送信し、
    前記第2の仮想マシンによって、前記第1のMACアドレスを示す送信元MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および前記第1のポート番号を示す送信元ポート番号を含むTCP/UDPヘッダを含む送信パケットをネットワークに送信し、
    前記第1のMACアドレスを示す宛先MACアドレスを含むMACヘッダ、トランスポート層のプロトコルを示すプロトコル値と宛先IPアドレスとを含むIPヘッダ、および宛先ポート番号を含むTCP/UDPヘッダを含む受信パケットを前記ネットワークを介して受信した場合に、前記受信パケット内の宛先ポート番号が示すポート番号に応じて、前記受信パケットを前記第1の仮想マシンまたは前記第2の仮想マシンに振り分ける
    通信制御方法。
JP2011288106A 2011-12-28 2011-12-28 情報処理装置および通信制御方法 Expired - Fee Related JP5784482B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011288106A JP5784482B2 (ja) 2011-12-28 2011-12-28 情報処理装置および通信制御方法
US13/608,362 US9086907B2 (en) 2011-12-28 2012-09-10 Apparatus and method for managing virtual machine addresses

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011288106A JP5784482B2 (ja) 2011-12-28 2011-12-28 情報処理装置および通信制御方法

Publications (2)

Publication Number Publication Date
JP2013137650A true JP2013137650A (ja) 2013-07-11
JP5784482B2 JP5784482B2 (ja) 2015-09-24

Family

ID=48696041

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011288106A Expired - Fee Related JP5784482B2 (ja) 2011-12-28 2011-12-28 情報処理装置および通信制御方法

Country Status (2)

Country Link
US (1) US9086907B2 (ja)
JP (1) JP5784482B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020140669A (ja) * 2019-03-01 2020-09-03 Necソリューションイノベータ株式会社 仮想マシン管理装置、仮想マシン管理方法、及びプログラム

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839447B2 (en) * 2012-02-27 2014-09-16 Ca, Inc. System and method for virtual image security in a cloud environment
JP6036506B2 (ja) * 2013-04-15 2016-11-30 富士通株式会社 障害影響範囲を特定するためのプログラム及び情報処理装置
US10229043B2 (en) * 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9338091B2 (en) * 2014-03-27 2016-05-10 Nicira, Inc. Procedures for efficient cloud service access in a system with multiple tenant logical networks
US9344364B2 (en) 2014-03-31 2016-05-17 Metaswitch Networks Ltd. Data center networks
US9813258B2 (en) 2014-03-31 2017-11-07 Tigera, Inc. Data center networks
US9559950B2 (en) * 2014-03-31 2017-01-31 Tigera, Inc. Data center networks
US10044695B1 (en) 2014-09-02 2018-08-07 Amazon Technologies, Inc. Application instances authenticated by secure measurements
US10079681B1 (en) 2014-09-03 2018-09-18 Amazon Technologies, Inc. Securing service layer on third party hardware
US9442752B1 (en) * 2014-09-03 2016-09-13 Amazon Technologies, Inc. Virtual secure execution environments
US9584517B1 (en) 2014-09-03 2017-02-28 Amazon Technologies, Inc. Transforms within secure execution environments
US9754116B1 (en) 2014-09-03 2017-09-05 Amazon Technologies, Inc. Web services in secure execution environments
US9246690B1 (en) 2014-09-03 2016-01-26 Amazon Technologies, Inc. Secure execution environment services
US10061915B1 (en) 2014-09-03 2018-08-28 Amazon Technologies, Inc. Posture assessment in a secure execution environment
US9577829B1 (en) 2014-09-03 2017-02-21 Amazon Technologies, Inc. Multi-party computation services
US9491111B1 (en) 2014-09-03 2016-11-08 Amazon Technologies, Inc. Securing service control on third party hardware
CN107181606B (zh) 2016-03-10 2020-07-31 伊姆西Ip控股有限责任公司 用于控制网络节点的方法和装置
EP3603028B1 (en) * 2017-03-28 2023-05-24 NetApp, Inc. Methods and systems for providing wake-on-demand access to session servers
CN107193634A (zh) * 2017-05-23 2017-09-22 郑州云海信息技术有限公司 一种虚拟机的访问方法及装置
US11681542B2 (en) * 2020-01-16 2023-06-20 Vmware, Inc. Integrating virtualization and host networking
JP7153942B2 (ja) * 2020-08-17 2022-10-17 ラトナ株式会社 情報処理装置、方法、コンピュータプログラム、及び、記録媒体

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007500381A (ja) * 2003-07-30 2007-01-11 ジャルナ エスアー プロセッサとネットワークインタフェースとを共有する複数のオペレーティングシステム
JP2010045451A (ja) * 2008-08-08 2010-02-25 Ntt Communications Kk パケット振り分け装置、通信システム、パケット処理方法、及びプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7657596B2 (en) * 2002-10-24 2010-02-02 Sun Microsystems, Inc. Distributed data sharing methods and systems
US7802000B1 (en) * 2005-08-01 2010-09-21 Vmware Virtual network in server farm
US20070174429A1 (en) 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8225314B2 (en) 2006-03-31 2012-07-17 Intel Corporation Support for personal computing in a public computing infrastructure by using a single VM delta image for each VM base image utilized by a user
JP4871174B2 (ja) 2007-03-09 2012-02-08 株式会社日立製作所 仮想計算機システム
JP2008299791A (ja) 2007-06-04 2008-12-11 Hitachi Ltd 仮想計算機システム
JP2009211640A (ja) 2008-03-06 2009-09-17 Nec Corp 無線lanを使用したネットワークブート方法およびネットワークブート用端末
US8549120B2 (en) * 2010-06-28 2013-10-01 Cisco Technology, Inc. System and method for location based address assignment in the distribution of traffic in a virtual gateway
US8725898B1 (en) * 2011-03-17 2014-05-13 Amazon Technologies, Inc. Scalable port address translations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007500381A (ja) * 2003-07-30 2007-01-11 ジャルナ エスアー プロセッサとネットワークインタフェースとを共有する複数のオペレーティングシステム
JP2010045451A (ja) * 2008-08-08 2010-02-25 Ntt Communications Kk パケット振り分け装置、通信システム、パケット処理方法、及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020140669A (ja) * 2019-03-01 2020-09-03 Necソリューションイノベータ株式会社 仮想マシン管理装置、仮想マシン管理方法、及びプログラム
JP7235295B2 (ja) 2019-03-01 2023-03-08 Necソリューションイノベータ株式会社 仮想マシン管理装置、仮想マシン管理方法、及びプログラム

Also Published As

Publication number Publication date
US9086907B2 (en) 2015-07-21
JP5784482B2 (ja) 2015-09-24
US20130174150A1 (en) 2013-07-04

Similar Documents

Publication Publication Date Title
JP5784482B2 (ja) 情報処理装置および通信制御方法
US20130174151A1 (en) Information processing apparatus and method of controlling virtual machine
KR101782342B1 (ko) 가상 스토리지 타겟 오프로드 기법
JP4681505B2 (ja) 計算機システム、管理計算機及びプログラム配布方法
US8533713B2 (en) Efficent migration of virtual functions to enable high availability and resource rebalance
JP5272709B2 (ja) アドレス割当方法、コンピュータ、物理マシン、プログラム、及びシステム
US8281018B2 (en) Method for automatically providing a client with access to an associated virtual machine
WO2018035856A1 (zh) 实现硬件加速处理的方法、设备和系统
US9798565B2 (en) Data processing system and method having an operating system that communicates with an accelerator independently of a hypervisor
JP5737050B2 (ja) 情報処理装置、割込み制御方法および割込み制御プログラム
US20080189432A1 (en) Method and system for vm migration in an infiniband network
US9223596B1 (en) Virtual machine fast provisioning based on dynamic criterion
US20100325278A1 (en) Methods for automatically launching a virtual machine associated with a client during startup
TW201543225A (zh) 用於支持對經由nvme控制器、通過網路存取的遠端存儲設備的熱插拔的系統和方法
JP2006085543A (ja) 仮想計算機システム
US20160328348A1 (en) Computer and computer i/o control method
JP2007233815A (ja) 情報処理システムおよび情報処理装置の割当管理方法
JP2004234114A (ja) 計算機システム、計算機装置、オペレーティングシステムの移送方法及びプログラム
KR101644399B1 (ko) 클라우드 기반 네트워크 컴퓨팅 시스템
WO2017177892A1 (zh) 操作系统的安装
JP5457916B2 (ja) メモリ共有装置
US20140298330A1 (en) Information processing device, transmission control method, and computer-readable recording medium
US9565049B2 (en) Communication apparatus, communication method, and computer product for sharing data
JP5491934B2 (ja) サーバ装置、及び情報処理システムの制御方法、並びにプログラム
US10747567B2 (en) Cluster check services for computing clusters

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140205

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140919

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150128

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: 20150630

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150722

R151 Written notification of patent or utility model registration

Ref document number: 5784482

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees