(57)【特許請求の範囲】
【請求項１】
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持し、前記処理規則に基づいて他の装置から受信したパケットを処理する転送ノードと、 
前記転送ノードが保持する前記処理規則を制御する通信制御サーバと、
仮想サーバが稼動する物理サーバと、を備え、
前記通信制御サーバは、
前記転送ノードおよび前記物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶するトポロジ情報記憶部と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する仮想環境連携部と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する転送ノード制御部と、を備える、コンピュータシステム。
【請求項２】
前記転送ノード制御部は、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御する、請求項１に記載のコンピュータシステム。
【請求項３】
前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバである、請求項１または２に記載のコンピュータシステム。
【請求項４】
前記転送ノード制御部は、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄する、請求項１ないし３のいずれか１項に記載のコンピュータシステム。
【請求項５】
仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択する仮想環境制御サーバを備え、
前記仮想環境連携部は、前記一時停止状態の仮想サーバの稼動の再開を前記仮想環境制御サーバに要求する、請求項１ないし４のいずれか１項に記載のコンピュータシステム。
【請求項６】
前記仮想環境制御サーバは、前記複数の物理サーバのそれぞれの物理リソースの空き状況を各物理サーバから収集する、請求項５に記載のコンピュータシステム。
【請求項７】
前記仮想環境制御サーバは、前記一時停止状態の仮想サーバが一時停止前に稼動していた物理サーバを、前記一時停止中の仮想サーバの稼動を再開する物理サーバとして優先的に選択する、請求項５または６に記載のコンピュータシステム。
【請求項８】
前記仮想環境制御サーバは、物理リソースの空きが最も多い物理サーバを、前記一時停止中の仮想サーバの稼動を再開する物理サーバとして選択する、請求項５または６に記載のコンピュータシステム。
【請求項９】
前記仮想環境制御サーバは、前記通信要求を送出したクライアント端末との通信に適した物理サーバを、前記一時停止中の仮想サーバの稼動を再開する物理サーバとして選択する、請求項５または６に記載のコンピュータシステム。
【請求項１０】
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持し、前記処理規則に基づいて他の装置から受信したパケットを処理する転送ノードが保持する前記処理規則を制御する通信制御サーバであって、
前記転送ノードおよび仮想サーバが稼動する物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶するトポロジ情報記憶部と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する仮想環境連携部と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する転送ノード制御部と、を備える、通信制御サーバ。
【請求項１１】
前記転送ノード制御部は、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御する、請求項１０に記載の通信制御サーバ。
【請求項１２】
前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバである、請求項１０または１１に記載の通信制御サーバ。
【請求項１３】
前記転送ノード制御部は、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄する、請求項１０ないし１２のいずれか１項に記載の通信制御サーバ。
【請求項１４】
前記仮想環境連携部は、前記一時停止状態の仮想サーバの稼動の再開を仮想環境制御サーバに要求し、
前記仮想環境制御サーバは、仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択する、請求項１０ないし１３のいずれか１項に記載の通信制御サーバ。
【請求項１５】
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持する転送ノードであって、前記処理規則に基づいて他の装置から受信したパケットを処理する前記転送ノードが保持する前記処理規則を制御する通信制御サーバが、
前記転送ノードおよび仮想サーバを提供する物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶部に保持する工程と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する工程と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する工程と、を含む、通信制御方法。
【請求項１６】
前記通信制御サーバは、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御する、請求項１５に記載の通信制御方法。
【請求項１７】
前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバである、請求項１５または１６に記載の通信制御方法。
【請求項１８】
前記通信制御サーバは、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄する、請求項１５ないし１７のいずれか１項に記載の通信制御方法。
【請求項１９】
前記通信制御サーバは、前記一時停止状態の仮想サーバの再開を仮想環境制御サーバに要求し、
前記仮想環境制御サーバは、仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択する、請求項１５ないし１８のいずれか１項に記載の通信制御方法。
【請求項２０】
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持する転送ノードであって、前記処理規則に基づいて他の装置から受信したパケットを処理する前記転送ノードが保持する前記処理規則を制御するコンピュータに対して、
前記転送ノードおよび仮想サーバを提供する物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶部に保持する処理と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する処理と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する処理と、を実行させる、プログラム。
【請求項２１】
前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御する処理を、前記コンピュータに実行させる、請求項２０に記載のプログラム。
【請求項２２】
前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバである、請求項２０または２１に記載のプログラム。
【請求項２３】
前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄する処理を、前記コンピュータに実行させる、請求項２０ないし２２のいずれか１項に記載のプログラム。
【請求項２４】
前記一時停止状態の仮想サーバの再開を仮想環境制御サーバに要求する処理を、前記コンピュータに実行させ、
前記仮想環境制御サーバは、仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択する、請求項２０ないし２３のいずれか１項に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願についての記載）
本発明は、日本国特許出願：特願２０１２−１３２９２８号（２０１２年６月１２日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、コンピュータシステム、通信制御サーバ、通信制御方法およびプログラムに関し、例えば、仮想化技術を利用したコンピュータシステム、かかるコンピュータシステムにおける通信制御サーバ、通信制御方法およびプログラムに関する。
【背景技術】
【０００２】
近年、仮想化技術を活用したサーバの仮想化が広く利用されている。仮想化技術を用いると、ＣＰＵ（Central Processing Unit）、メモリなどの物理リソースを有効活用できるようになるため、インフラ構築や運用に係るコストを削減することができる。
【０００３】
仮想化技術を活用したサービスとして、物理サーバの代わりに仮想サーバをレンタルする、ＶＰＳ（Virtual Private Server）型のホスティングサービスがある。ＶＰＳ型のホスティングサービスでは、仮想化によるコスト削減効果を活かすことで、物理サーバのレンタルサービスと比較して低廉な料金でサービスを提供することができる。
【０００４】
負荷が存在しない場合、仮想サーバを一時停止状態とすることで、使用リソースをさらに削減することが可能となる。例えば、仮想サーバがＷｅｂサーバである場合、負荷が存在しない状態とは、仮想サーバへのＨＴＴＰ（Hypertext Transfer Protocol）通信がない状態を意味する。仮想サーバを一時停止状態にすると、当該仮想サーバが使用しているメモリは、その内容がディスクに書き出された後に解放される。さらに、当該仮想サーバはＣＰＵリソースを消費しなくなる。したがって、仮想サーバを一時停止状態とすることで、当該仮想サーバを実行していた物理サーバで使用可能な物理リソースが増える。また、一時停止状態とする仮想サーバの数を増やすことで、より少ない物理サーバでシステムを稼動させることができ、システムの導入や運用に要するコストを削減することも可能となる。
【０００５】
関連技術として、特許文献１には、ジョブを実行中の仮想サーバに凍結指示を与えることで実行中のジョブを停止した凍結状態とするとともに、凍結状態の仮想サーバに再開指示を与えることで凍結したジョブの実行を仮想サーバに再開させる技術が記載されている。また、特許文献２には、オープンフロー（OpenFlow）（非特許文献１、２参照）に基づいて、仮想マシン（仮想サーバ）のマイグレーション（移動）を実現する技術が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００７／１０８０６２号
【特許文献２】特開２０１１−０７０５４９号公報
【非特許文献】
【０００７】
【非特許文献１】N. McKeown, et al., "OpenFlow: Enabling Innovation in Campus Network," March 14, 2008,［online］、［平成24年5月21日検索］、インターネット〈URL：http://www.openflow.org/documents/openflow-wp-latest.pdf〉
【非特許文献２】"OpenFlow Switch Specification, Version 1.1.0 Implemented (Wire Protocol 0x02)," February 28, 2011,［online］、［平成24年5月21日検索］、インターネット〈URL：http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf〉
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記の特許文献、非特許文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明者によってなされたものである。
【０００９】
仮想サーバを一時停止とすると、使用リソースを削減できる代わりに、当該仮想サーバへの通信要求が発生しても応答することが不可能となる。また、仮に通信要求の発生に伴い、仮想サーバの再開を試行できたとしても、仮想サーバを実行していた物理サーバのリソース使用状況によっては、仮想サーバを再開不能な場合が起こり得るため、当該通信要求を処理できないおそれがある。
【００１０】
また、特許文献１に記載された技術によると、仮想サーバは実行中のジョブとともに凍結され、仮想サーバの再開時には凍結されたジョブが再開される。したがって、特許文献１に記載された技術によると、実行中のジョブが凍結されることで、ジョブのレスポンスの低下（ターンアラウンドタイムの増加）を招くおそれがある。また、特許文献１に記載された技術によると、仮想サーバが稼動していた物理サーバ上で仮想サーバが再開されるため、当該物理サーバのリソース使用状況によっては、仮想サーバを再開できない場合が起こり得る。
【００１１】
そこで、仮想サーバの通信応答性能の劣化を抑制しつつ、物理リソースを有効活用できるようにすることが課題となる。本発明の目的は、かかる課題を解決するコンピュータシステム、通信制御サーバ、通信制御方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１２】
本発明の第１の視点に係るコンピュータシステムは、
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持し、前記処理規則に基づいて他の装置から受信したパケットを処理する転送ノードと、 
前記転送ノードが保持する前記処理規則を制御する通信制御サーバと、
仮想サーバが稼動する物理サーバと、を備え、
前記通信制御サーバは、
前記転送ノードおよび前記物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶するトポロジ情報記憶部と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する仮想環境連携部と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する転送ノード制御部と、を備える。
【００１３】
本発明の第２の視点に係る通信制御サーバは、
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持し、前記処理規則に基づいて他の装置から受信したパケットを処理する転送ノードが保持する前記処理規則を制御する通信制御サーバであって、
前記転送ノードおよび仮想サーバが稼動する物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶するトポロジ情報記憶部と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する仮想環境連携部と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する転送ノード制御部と、を備える。
【００１４】
本発明の第３の視点に係る通信制御方法は、
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持する転送ノードであって、前記処理規則に基づいて他の装置から受信したパケットを処理する前記転送ノードが保持する前記処理規則を制御する通信制御サーバが、
前記転送ノードおよび仮想サーバを提供する物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶部に保持する工程と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する工程と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する工程と、を含む。
【００１５】
本発明の第４の視点に係るプログラムは、
パケットが属するフローと前記フローに属するパケットに対する処理を規定する処理規則とを関連付けて保持する転送ノードであって、前記処理規則に基づいて他の装置から受信したパケットを処理する前記転送ノードが保持する前記処理規則を制御するコンピュータに対して、
前記転送ノードおよび仮想サーバを提供する物理サーバを含む通信ネットワークの接続関係、ならびに、前記通信ネットワークに接続される仮想サーバの動作状態を記憶部に保持する処理と、
一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、前記一時停止状態の仮想サーバの稼動の再開を要求する処理と、
前記一時停止状態の仮想サーバの稼動再開後における前記通信ネットワークへの接続位置に基づいて、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定する処理と、を実行させる。
【００１６】
なお、プログラムは、non-transitoryなコンピュータ読み取り可能記録媒体（computer-readable storage medium）に記録されたプログラム製品として提供することができる。
【発明の効果】
【００１７】
本発明に係るコンピュータシステム、通信制御サーバ、通信制御方法およびプログラムによると、仮想サーバの通信応答性能の劣化を抑制しつつ物理リソースを有効活用することができる。
【図面の簡単な説明】
【００１８】
【図１】実施形態に係るコンピュータシステムの構成の一例を示す説明図である。
【図２】通信制御サーバの構成例を示すブロック図である。
【図３】トポロジ情報の一例を示す説明図である。
【図４】転送ノードの構成例を示すブロック図である。
【図５】物理サーバの構成例を示すブロック図である。
【図６】仮想環境制御サーバの構成例を示すブロック図である。
【図７】第１の実施形態に係るコンピュータシステムの動作の例を示すシーケンス図である。
【図８】第１の実施形態に係るコンピュータシステムの動作の例を示すシーケンス図である。
【図９】第１の実施形態に係るコンピュータシステムの動作の例を示すシーケンス図である。
【図１０】第２の実施形態に係るコンピュータシステムの動作の例を示すシーケンス図である。
【発明を実施するための形態】
【００１９】
はじめに、一実施形態の概要について説明する。なお、この概要に付記する図面参照符号は、専ら理解を助けるための例示であり、本発明を図示の態様に限定することを意図するものではない。
【００２０】
図１は、一実施形態に係るコンピュータシステムの構成を示す図である。また、図２は、図１に示したコンピュータシステムに設けられた通信制御サーバ（１０）の構成を示すブロック図である。
【００２１】
図１を参照すると、コンピュータシステムは、パケットが属するフローとフローに属するパケットに対する処理を規定する処理規則とを関連付けて保持し、処理規則に基づいて他の装置から受信したパケットを処理する転送ノード（２０−１〜２０−３）と、転送ノード（２０−１〜２０−３）が保持する処理規則を制御する通信制御サーバ（１０）と、仮想サーバ（３３）が稼動する物理サーバ（３０−１、３０−２）と、を備える。図１においては、転送ノードの台数を３台とし、物理サーバの台数を２台としたが、これらの装置の台数は、かかる台数に限定されない。
【００２２】
図２を参照すると、通信制御サーバ（１０）は、転送ノード（２０−１〜２０−３）および物理サーバ（３０−１、３０−２）を含む通信ネットワークの接続関係、ならびに、通信ネットワークに接続される仮想サーバ（３３）の動作状態を記憶するトポロジ情報記憶部（１４）と、一時停止状態とされた仮想サーバに対する通信要求の発生を契機として、一時停止状態の仮想サーバの稼動の再開を要求する仮想環境連携部（１２）と、一時停止状態の仮想サーバの稼動再開後における通信ネットワークへの接続位置に基づいて、通信要求のパケットを転送する通信経路を転送ノード（２０−１〜２０−３）に設定する転送ノード制御部（１１）と、を備える。
【００２３】
一実施形態によれば、通信制御サーバ（１０）は、一時停止状態とされた仮想サーバに対する通信要求を検出すると、当該仮想サーバの再開を要求するとともに、当該仮想サーバの新しい実行環境に応じた通信経路を設定する。負荷がない仮想サーバを一時停止状態とすることで、物理リソースを有効活用すると同時に、仮想サーバによって提供されるサービスのレスポンスの低下を防ぐことができる。また、一実施形態によると、通信要求を送出したクライアントと再開後の仮想サーバとの間に適切な通信経路が設定されるため、通信要求が発生した際の仮想サーバの通信応答性能の劣化を抑制することができる。
【００２４】
なお、本発明において、下記の形態が可能である。
［形態１］
上記第１の視点に係るコンピュータシステムのとおりである。
［形態２］
前記転送ノード制御部は、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御してもよい。
［形態３］
前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバであってもよい。
［形態４］
前記転送ノード制御部は、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄するようにしてもよい。
［形態５］
仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択する仮想環境制御サーバを備え、
前記仮想環境連携部は、前記一時停止状態の仮想サーバの稼動の再開を前記仮想環境制御サーバに要求してもよい。
［形態６］
前記仮想環境制御サーバは、前記複数の物理サーバのそれぞれの物理リソースの空き状況を各物理サーバから収集してもよい。
［形態７］
前記仮想環境制御サーバは、前記一時停止状態の仮想サーバが一時停止前に稼動していた物理サーバを、前記一時停止中の仮想サーバの稼動を再開する物理サーバとして優先的に選択してもよい。
［形態８］
前記仮想環境制御サーバは、物理リソースの空きが最も多い物理サーバを、前記一時停止中の仮想サーバの稼動を再開する物理サーバとして選択してもよい。
［形態９］
前記仮想環境制御サーバは、前記通信要求を送出したクライアント端末との通信に適した物理サーバを、前記一時停止中の仮想サーバの稼動を再開する物理サーバとして選択してもよい。
［形態１０］
上記第２の視点に係る通信制御サーバのとおりである。
［形態１１］
前記通信制御サーバにおいて、前記転送ノード制御部は、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御してもよい。
［形態１２］
前記通信制御サーバにおいて、前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバであってもよい。
［形態１３］
前記通信制御サーバにおいて、前記転送ノード制御部は、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄するようにしてもよい。
［形態１４］
前記通信制御サーバにおいて、前記仮想環境連携部は、前記一時停止状態の仮想サーバの稼動の再開を仮想環境制御サーバに要求し、
前記仮想環境制御サーバは、仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択してもよい。
［形態１５］
上記第３の視点に係る通信制御方法のとおりである。
［形態１６］
前記通信制御方法において、前記通信制御サーバは、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御してもよい。
［形態１７］
前記通信制御方法において、前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバであってもよい。
［形態１８］
前記通信制御方法において、前記通信制御サーバは、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄するようにしてもよい。
［形態１９］
前記通信制御方法において、前記通信制御サーバは、前記一時停止状態の仮想サーバの再開を仮想環境制御サーバに要求し、
前記仮想環境制御サーバは、仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択してもよい。
［形態２０］
上記第４の視点に係るプログラムのとおりである。
［形態２１］
前記プログラムは、前記通信要求のパケットの前記一時停止状態の仮想サーバへの送信が、前記一時停止状態の仮想サーバの稼動の再開が完了した後に行われるように制御する処理を、前記コンピュータに実行させてもよい。
［形態２２］
前記プログラムにおいて、前記一時停止状態の仮想サーバは、所定の期間に亘って通信要求を受け付けることがないため、前記物理サーバの物理リソースを解放して一時停止状態となった仮想サーバであってもよい。
［形態２３］
前記プログラムにおいて、前記通信要求に基づく通信が前記一時停止状態の仮想サーバにおいて許可されている場合に、前記通信要求のパケットを転送する通信経路を前記転送ノードに設定し、それ以外の場合に、前記通信要求のパケットを破棄する処理を、前記コンピュータに実行させてもよい。
［形態２４］
前記プログラムは、前記一時停止状態の仮想サーバの再開を仮想環境制御サーバに要求する処理を、前記コンピュータに実行させ、
前記仮想環境制御サーバは、仮想サーバを提供する複数の物理サーバのそれぞれの状態、ならびに、前記転送ノードおよび前記複数の物理サーバを含む通信ネットワークの接続関係の少なくともいずれかに基づいて、前記一時停止状態の仮想サーバの稼動を再開する物理サーバを前記複数の物理サーバの中から選択してもよい。
【００２５】
まず、本発明の各実施形態に共通する構成および動作の概要について説明する。図１は、本発明によるコンピュータシステムの構成の一例を示す説明図である。図１に例示するコンピュータシステムは、通信制御サーバ１０と、転送ノード２０−１〜２０−３と、物理サーバ３０−１、３０−２と、仮想環境制御サーバ４０と、ストレージサーバ５０と、クライアント６０と、制御用ネットワーク７０と、通信用ネットワーク８０と、を備えている。
【００２６】
また、物理サーバ３０−１、３０−２は、ハイパーバイザ部３１、転送ノード部３２、および、仮想サーバ３３を備える。物理サーバ３０−１、３０−２の転送ノード部３２は、基本的に、転送ノード２０−１〜２０−３と同様の機能を有している。以下、単に「転送ノード」と記述した場合、転送ノード２０−１〜２０−３および物理サーバ３０−１、３０−２の転送ノード部３２のいずれかを表すものとする。
【００２７】
転送ノードは、他の転送ノード、物理サーバ３０−１、３０−２、仮想サーバ３３、および通信用ネットワーク８０と接続し通信を行う。図１に示す例では、転送ノードが行う通信経路を実線で表わす。また、転送ノードは、制御用ネットワーク７０に接続され、制御用ネットワーク７０を介して通信制御サーバ１０と制御用通信（制御チャネル）を行う。図１に示す例では、転送ノードと通信制御サーバ１０との間で通信される制御チャネルを破線で表わす。なお、図１に示す各装置の数や接続関係は一例であり、本発明によるコンピュータシステムは、図１に例示する構成に限定されない。
【００２８】
転送ノードは、自身に接続する、物理サーバ３０−１、３０−２、仮想サーバ３３、通信用ネットワーク８０、または他の転送ノードからパケットを受信し、自身が保持するフローテーブルに含まれる処理規則（フローエントリ）に基づいて、受信したパケットを処理する。具体的には、転送ノードは、受信したパケットに対して何らかの処理を施したり、受信したパケットを他の装置に転送したりする。また、転送ノードは、受信したパケットに対応するフローエントリがフローテーブルに存在しない場合、受信したパケットを通信制御サーバ１０に通知する。
【００２９】
通信制御サーバ１０は、転送ノードから対応するフローエントリ（処理規則）が存在しないパケットを受信し、そのパケットに対する経路計算を行う。また、通信制御サーバ１０は、受信したパケットに対応するフローエントリを転送ノードに追加することでコンピュータシステム内での通信を制御する。具体的には、通信制御サーバ１０は、転送ノードが保持する処理規則の追加、削除など、処理規則の変更指示を行う。すなわち、通信制御サーバ１０は、転送ノードが保持する処理規則を制御する装置である。
【００３０】
オープンフローネットワーク（OpenFlow Network）においては、転送ノードはオープンフロースイッチ（OpenFlow Switch）に相当し、通信制御サーバ１０はオープンフローコントローラ（OpenFlow Controller）に相当する。
【００３１】
物理サーバ３０−１、３０−２は、仮想サーバ３３を実行するためのＣＰＵ、メモリなどの物理リソースを備え、仮想環境制御サーバ４０の制御の下で仮想サーバ３３を実行する。また、前述の通り、物理サーバ３０−１、３０−２は転送ノード部３２を備え、仮想サーバ３３と他の転送ノードなどとの間でパケット処理を行う。
【００３２】
仮想環境制御サーバ４０は、物理サーバ３０−１、３０−２およびストレージサーバ５０により実現される仮想環境を制御する。仮想環境制御サーバ４０は、制御用ネットワーク７０を介して物理サーバ３０−１、３０−２と接続され、物理サーバ３０−１、３０−２上での仮想サーバ３３の実行状態の制御を行う。実行状態の制御として、例えば、仮想サーバ３３の起動、終了、一時停止、再開、他の物理サーバへのマイグレーションなどがある。ただし、実行状態の制御は、これらに限定されない。
【００３３】
ストレージサーバ５０は、物理サーバ３０−１、３０−２上で実行される仮想サーバのデータや状態（ディスクイメージ、サスペンドイメージ、スナップショットなど）を記憶する。
【００３４】
クライアント６０は、物理サーバ３０−１、３０−２上で実行される仮想サーバ３３が提供するサーバ機能（例えば、Ｗｅｂサーバ）を利用する端末装置である。クライアント６０として、例えば、デスクトップＰＣ（Personal Computer）、ノートＰＣ、スマートフォン、携帯電話などが挙げられる。ただし、クライアント６０は、これらに限定されない。
【００３５】
制御用ネットワーク７０は、通信制御サーバ１０、転送ノード、物理サーバ３０−１、３０−２、仮想環境制御サーバ４０、および、ストレージサーバ５０との間で制御メッセージなどの通信を可能とする通信ネットワークである。制御用ネットワーク７０は、例えば、Ethernet（登録商標）スイッチ、ＩＰ（Internet Protocol）ルータなどを相互に接続したネットワークとして実現することができる。
【００３６】
通信用ネットワーク８０は、通信制御サーバ１０および転送ノードにより実現される通信ネットワークとクライアント６０との間を接続する。通信用ネットワーク８０は、例えば、Ethernetスイッチ、ＩＰルータなどを相互に接続したネットワークとして実現することができる。
【００３７】
（実施形態１）
次に、第１の実施形態に係るコンピュータシステムについて、図面を参照して説明する。
【００３８】
図２は、通信制御サーバ１０の構成例を示すブロック図である。図２に例示する制御サーバ１０は、転送ノード制御部１１、仮想環境連携部１２、トポロジ情報管理部１３、および、トポロジ情報記憶部１４を備えている。
【００３９】
転送ノード制御部１１は、制御用ネットワーク７０に接続され、制御用ネットワーク７０を介して転送ノードとの間で制御用通信（制御チャネル）を行う。制御チャネルによる通信として、例えば、転送ノードから通信制御サーバ１０へのパケットの通知、通信制御サーバ１０から転送ノードへのパケット送信、通信制御サーバ１０から転送ノードへのフローエントリの追加、削除および変更指示などが挙げられる。
【００４０】
また、転送ノード制御部１１は、転送ノードからパケットの通知を受信した場合、経路計算を行い、フローエントリの作成を行う。転送ノード制御部１１が経路を計算する方法には、一般的な方法が用いられる。転送ノード制御部１１は、例えば、ショーテストパス（Shortest Path）により経路を計算してもよいし、ＳＴＰ（Spanning Tree Protocol）に基づいて経路を計算してもよい。転送ノード制御部１１は、経路計算を行った後、計算された経路上に含まれる転送ノードごとに追加すべきフローエントリを作成する。転送ノード制御部１１は、作成したフローエントリを各転送ノードに対して送信し、処理規則への追加を指示する。
【００４１】
トポロジ情報記憶部１４は、ネットワークトポロジ情報（以下、単に「トポロジ情報」という。）を記憶する。トポロジ情報記憶部１４が記憶するトポロジ情報の例として、転送ノードと転送ノードとの間の接続関係、転送ノードと仮想サーバとの間の接続関係、転送ノードと通信用ネットワーク８０またはクライアント６０との間の接続関係、仮想サーバおよびクライアント６０の情報（使用するＩＰアドレスおよびＭＡＣ（Media Access Control）アドレスや動作状態など）が挙げられる。
【００４２】
図３は、トポロジ情報記憶部１４に記憶されるトポロジ情報の一例を示す説明図である。図３（ａ）は、転送ノードと転送ノードとの間、転送ノードと仮想サーバ３３との間、および転送ノードとクライアント６０との間の接続関係を表すリストの一例である。例えば、図３（ａ）に例示するリストの最初の行は、転送ノード２０−１のポート識別子１のポートと、転送ノード２０−２のポート識別子１のポートとが接続されていることを意味する。
【００４３】
また、図３（ｂ）は、転送ノードの各ポートに接続されている端末（仮想サーバ３３およびクライアント６０）の情報リストの一例である。例えば、図３（ｂ）に例示するリストの最初の行は、仮想サーバ３３−１のポート識別子１のポートは、ＩＰアドレスとして「192.168.100.1」を使用し、ＭＡＣアドレスが「01:00:00:03:03:01」であり、仮想サーバ３３−１は“動作中”状態であることを意味する。装置の状態の例としては、当該装置が動作していることを意味する“動作中”状態の他、当該装置が動作を一時停止していることを意味する“一時停止中”状態が挙げられる。
【００４４】
トポロジ情報管理部１３は、コンピュータシステム内のネットワークトポロジを検出し、トポロジ情報として管理する。具体的には、トポロジ情報管理部１３は、検出したトポロジ情報をトポロジ情報記憶部１４に記憶させる。また、トポロジ情報管理部１３は、トポロジ検出に係るパケットを任意の転送ノードの任意のポートから送受信するために、制御チャネルを使用してもよい。
【００４５】
トポロジ情報管理部１３がトポロジを検出する方法には、一般的な方法が用いられる。トポロジ情報管理部１３がトポロジを検出する技術として、例えば、ＬＬＤＰ（Link Layer Discovery Protocol）、ＤＨＣＰ（Dynamic Host Configuration Protocol）スヌーピング（snooping）またはＤＨＣＰサーバとの連携、ユーザ認証（例えば、ＩＥＥＥ８０２．１ｘ）との連携、通信ホストが送信するGratuitous ARPパケットの検出、ＳＴＰ（Spanning Tree Protocol）などが挙げられる。
【００４６】
仮想環境連携部１２は、仮想環境制御サーバ４０と通信し、仮想サーバ３３の制御を要求したり、仮想環境の情報を要求したりする。
【００４７】
転送ノード制御部１１、仮想環境連携部１２、および、トポロジ情報管理部１３は、プログラム（通信制御プログラム）に従って動作するコンピュータのＣＰＵによって実現される。例えば、プログラムは、通信制御サーバ１０の記憶部（非図示）に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、転送ノード制御部１１、仮想環境連携部１２、および、トポロジ情報管理部１３として動作してもよい。また、転送ノード制御部１１、仮想環境連携部１２、および、トポロジ情報管理部１３は、それぞれ、専用のハードウェアで実現されていてもよい。
【００４８】
また、トポロジ情報記憶部１４は、メモリ、磁気ディスクなどによって実現することができる。
【００４９】
図４は、転送ノード２０−１〜２０−３の構成例を示すブロック図である。図４を参照すると、転送ノード２０−１〜２０−３は、制御チャネル処理部２１、転送処理部２２、および、フローテーブル記憶部２３を備えている。
【００５０】
制御チャネル処理部２１は、制御用ネットワーク７０に接続され、制御用ネットワーク７０を介して通信制御サーバ１０の転送ノード制御部１１との間で制御用通信（制御チャネル）を行う。また、制御チャネル処理部２１は、対応するフローエントリが存在しないパケットの通知を転送処理部２２から受けると、制御チャネルを用いてそのパケットを通信制御サーバ１０に通知する。
【００５１】
さらに、制御チャネル処理部２１は、制御チャネルを介して通信制御サーバ１０からフローエントリを追加、変更、または、削除するよう指示されると、指示された内容に基づきフローテーブルを変更するよう転送処理部２２に指示する。また、制御チャネル処理部２１は、制御チャネルを介して通信制御サーバ１０からパケットを出力するよう指示されると、指示された内容に基づきパケットを出力するよう転送処理部２２に指示する。
【００５２】
フローテーブル記憶部２３は、処理規則（フローエントリ）を含むフローテーブルを記憶する。処理規則（フローエントリ）は、転送処理部２２によってフローテーブル記憶部２３に記録される。
【００５３】
転送処理部２２は、他の装置（例えば、他の転送ノードや通信用ネットワーク８０、仮想サーバ３３）に接続され、接続された装置との間でパケットの送受信を行う。また、転送処理部２２は、フローテーブル記憶部２３に記憶されたフローテーブルを管理する。
【００５４】
転送処理部２２は、他の装置からパケットを受信すると、受信したパケットに対応するフローエントリをフローテーブル内から検索する。受信したパケットに対応するフローエントリがフローテーブルに見つかった場合、転送処理部２２は、そのフローエントリのアクションに従って処理を行う。一方、受信したパケットに対応するフローエントリがフローテーブルに見つからなかった場合、転送処理部２２は、受信したパケットのフローエントリが存在しない旨を制御チャネル処理部２１に通知する。
【００５５】
さらに、転送処理部２２は、他の装置と通信を行うためのポートを複数備え、各ポートは、それぞれ異なる他の転送ノードまたは仮想サーバ３３のポートと接続される。なお、各ポートは、ポート識別子により識別される。
【００５６】
フローエントリのアクションに基づき、転送処理部２２が行う処理には、以下に例示する処理が挙げられる。また、転送処理部２２が行う処理は、１つに限定されず、２つ以上であってもよい。ただし、フローエントリのアクションに指定される処理は、以下の処理に限定されない。
【００５７】
・指定されたポートからパケットを出力する。
・パケットの送信先ＭＡＣアドレスを指定された値に変更する。
・パケットの送信元ＭＡＣアドレスを指定された値に変更する。
・パケットの送信先ＩＰアドレスを指定された値に変更する。
・パケットの送信元ＩＰアドレスを指定された値に変更する。
・パケットの送信先ポート番号を指定された値に変更する。
・パケットの送信元ポート番号を指定された値に変更する。
・パケットにＶＬＡＮ（Virtual Local Area Network）タグを追加する。
・パケットのＶＬＡＮタグを削除する。
・パケットのＶＬＡＮタグを変更する。
【００５８】
制御チャネル処理部２１および転送処理部２２は、一例として、プログラムに従って動作するコンピュータのＣＰＵによって実現することができる。また、制御チャネル処理部２１および転送処理部２２は、それぞれ、専用のハードウェアで実現されていてもよい。
【００５９】
図５は、物理サーバ３０−１、３０−２の構成例を示すブロック図である。図５を参照すると、物理サーバ３０−１、３０−２は、ハイパーバイザ部３１、転送ノード部３２、および、仮想サーバ３３−１〜３３−ｎを備えている。
【００６０】
ハイパーバイザ部３１は、物理サーバ３０−１、３０−２が備えるＣＰＵやメモリ、ディスクや通信インタフェースなどのＩＯ（Input Output）といった物理リソースを仮想化して仮想サーバ３３−１〜３３−ｎに提供し、仮想サーバ３３−１〜３３−ｎの仮想リソース上での実行を制御する。ハイパーバイザ部３１は、制御用ネットワーク７０を介して仮想環境制御サーバ４０と通信を行い、仮想サーバ３３−１〜３３−ｎの制御に関する指示を受け取ったり、仮想サーバ３３−１〜３３−ｎの状態を通知したり、物理リソースの状態を通知したりする。また、ハイパーバイザ部３１は、制御用ネットワーク７０を介してストレージサーバ５０と通信を行い、ストレージサーバ５０に記憶されている仮想サーバ３３−１〜３３−ｎのディスクイメージに対する読み書きを行う。さらに、ハイパーバイザ部３１は、仮想化された通信インタフェース上での通信を、仮想サーバ３３−１〜３３−ｎおよび転送ノード部３２との間で中継する。
【００６１】
転送ノード部３２は、転送ノード２０−１〜２０−３と同様の機能を持ち、フローエントリに基づくパケットの処理や通信制御サーバ１０との通信を行う。転送ノード部３２と転送ノード２０−１〜２０−３との違いは、転送ノード部３２は物理サーバ３０−１、３０−２の一部として構成され、仮想サーバ３３−１〜３３−ｎが使用する仮想化された通信インタフェース上で送受信されるパケットを処理対象に含む点である。転送ノード部３２は、ソフトウェアプログラムとして実装されてもよいし、ハードウェアとして実装されてもよい。
【００６２】
仮想サーバ３３−１〜３３−ｎは、ハイパーバイザ部３１により提供される仮想化されたリソース（ＣＰＵ、メモリなど）を使用して実行されるサーバであり、プログラムに従って動作する。仮想サーバ３３−１〜３３−ｎのプログラムは、仮想化されたディスクに記憶されていてもよい。その実体は、例えば、ストレージサーバ５０に記憶されており、ハイパーバイザ部３１の働きにより仮想サーバ３３−１〜３３−ｎから読み書き可能となる。ある物理サーバ上で実行される仮想サーバの個数は、ゼロであっても、１つ以上であってもよい。また、仮想サーバ３３−１〜３３−ｎは、ハイパーバイザ部３１および仮想環境制御サーバ４０の働きにより、実行中に物理サーバ間で移動（マイグレーション）することができる。
【００６３】
図６は、仮想環境制御サーバ４０の構成例を示すブロック図である。図６を参照すると、仮想環境制御サーバ４０は、仮想サーバ制御部４１および物理リソース管理部４２を備えている。
【００６４】
仮想サーバ制御部４１は、制御用ネットワーク７０を介して物理サーバ３０−１、３０−２と制御メッセージの通信を行い、仮想サーバ３３−１〜３３−ｎの制御指示を物理サーバ３０−１、３０−２に送信し、物理リソースに関する情報や仮想サーバ３３−１〜３３−ｎの状態変化などの通知を物理サーバ３０−１、３０−２から受信する。仮想サーバの制御指示には、仮想サーバの起動、終了、一時停止、再開、他の物理マシンへのマイグレーションが含まれる。また、仮想サーバ制御部４１は、他のモジュール（例えば、通信制御サーバ１０の仮想環境連携部１２）からの要求に基づき、仮想サーバ３３−１〜３３−ｎの制御を行ったり、仮想サーバ３３−１〜３３−ｎの状態を応答として通知したりする。
【００６５】
物理リソース管理部４２は、仮想サーバ制御部４１が物理サーバ３０−１、３０−２から収集した物理リソースに関する情報を記憶し、空き物理リソース量などを管理する。
【００６６】
次に、本実施形態に係るコンピュータシステムの動作について、図面を参照しつつ説明する。
【００６７】
＜クライアント６０が仮想サーバ３３−１宛のパケットを送信した場合の動作＞
まず、クライアント６０が仮想サーバ３３−１宛のパケットを送信した場合の動作について説明する。なお、以下の説明は、次の条件が成り立っていることを前提とする。
【００６８】
・クライアント６０は、仮想サーバ３３−１のＩＰアドレスを知っている。
・転送ノードには、クライアント６０と仮想サーバ３３−１との通信に関するフローエントリが設定されていない。
・仮想サーバ３３−１は、物理サーバ３０−１上で実行中または一時停止中である。
・通信制御サーバ１０は、トポロジ情報を取得済みである。
・通信制御サーバ１０のトポロジ情報記憶部１４には、仮想サーバ３３−１は物理サーバ３０−１の転送ノード部３２に接続されており、仮想サーバ３３−１の状態は“動作中”または“一時停止中”であると記憶されている。
【００６９】
まず、仮想サーバ３３−１が実行中の場合と、仮想サーバ３３−１が一時停止中であり物理サーバ３０−１上での再開が可能な場合の動作について、図７を参照して説明する。図７は、本実施形態におけるコンピュータシステムの動作の例を示すシーケンス図である。
【００７０】
クライアント６０が、仮想サーバ３３−１宛のパケットを送信する（ステップＳ１）。当該パケットの一例としては、ＨＴＴＰ用ポート番号（８０）宛のＴＣＰ  ＳＹＮ（Transmission Control Protocol Synchronization）パケットが挙げられる。当該パケットは、通信用ネットワーク８０を介して転送ノード２０−１に届けられる。
【００７１】
転送ノード２０−１は、クライアント６０から受信したパケットの処理を行い、その結果として当該パケットを通信制御サーバ１０に送信する（ステップＳ２）。具体的には、まず、転送ノード２０−１の転送処理部２２が受信パケットに対応するフローエントリを検索する。ここでは、対応するフローエントリが見つからないため、受信パケットが制御チャネル処理部２１に通知され、さらに制御チャネル処理部２１が制御チャネルを介して受信パケットを通信制御サーバ１０に送信する。
【００７２】
通信制御サーバ１０の転送ノード制御部１１は、受信したパケットの宛先端末の状態を確認する（ステップＳ３）。具体的には、通信制御サーバ１０の転送ノード制御部１１は、例えば、受信したパケットの宛先ＩＰアドレスと、トポロジ情報記憶部１４が記憶しているトポロジ情報とを参照し、宛先端末の識別とその動作状態を取得する。宛先端末が“実行中”である場合、ステップＳ４〜Ｓ９およびステップＳ１１〜Ｓ１２は省略される。一方、宛先端末が“一時停止中”である場合、ステップＳ４以降が実行される。
【００７３】
通信制御サーバ１０の仮想環境連携部１２は、仮想環境制御サーバ４０に仮想サーバ３３−１の再開要求を行う(ステップＳ４)。
【００７４】
仮想環境制御サーバ４０は、受信した仮想サーバ３３−１の再開要求に基づき、仮想サーバ３３−１を再開する物理サーバを選択する（ステップＳ５）。物理サーバの選択方法の一例としては、仮想サーバが一時停止状態になった際に使用されていた物理サーバに仮想サーバ再開に必要十分なリソースがある場合には当該物理サーバを選択し、一方、必要十分なリソースがない場合にはリソースがあるその他の物理サーバを選択するようにしてもよい。ここでは、物理サーバ３０−１が選択されるものとする。
【００７５】
仮想環境制御サーバ４０は、ステップＳ５で選択された物理サーバの情報を含む応答通知を通信制御サーバ１０に送信する（ステップＳ６）。
【００７６】
仮想環境制御サーバ４０は、ステップＳ５で選択された物理サーバである物理サーバ３０−１に仮想サーバ３３−１の再開を要求する（ステップＳ７）。
【００７７】
物理サーバ３０−１のハイパーバイザ部３１は、仮想サーバ３３−１の再開処理を行う（ステップＳ８）。
【００７８】
ステップＳ８の完了に伴い、物理サーバ３０−１上で仮想サーバ３３−１が動作し始める（ステップＳ９）。
【００７９】
ステップＳ７〜ステップＳ９と並行して、通信制御サーバ１０はクライアント６０と仮想サーバ３３−１との間の経路計算を行う（ステップＳ１０）。このとき、通信制御サーバ１０の転送ノード制御部１１は、仮想サーバ３３−１の接続先転送ノードを、ステップＳ６で受信した物理サーバの情報を基に決定する。ここでは、クライアント６０と仮想サーバ３３−１との間の経路は、転送ノード２０−１、転送ノード２０−２、および、物理サーバ３０−１の転送ノード部３２をこの順に経由する経路として計算されたとする。
【００８０】
物理サーバ３０−１のハイパーバイザ部３１は、仮想サーバ３３−１の再開が完了したことを仮想環境制御サーバ４０に通知する（ステップＳ１１）。
【００８１】
仮想環境制御サーバ４０は、ステップＳ４での仮想サーバ再開要求元である通信制御サーバ１０に、仮想サーバ３３−１の再開が完了したことを通知する（ステップＳ１２）。
【００８２】
通信制御サーバ１０の転送ノード制御部１１は、ステップＳ１０で計算された経路上の転送ノードに、計算された経路に基づくフローエントリを追加する（ステップＳ１３）。
【００８３】
通信制御サーバ１０の転送ノード制御部１１は、ステップＳ２で受信したパケットを物理サーバ３０−１の転送ノード部３２に送信し、仮想サーバ３３−１に送信するよう指示する（ステップＳ１４）。
【００８４】
物理サーバ３０−１の転送ノード部３２は、ステップＳ１４で受信したパケットを仮想サーバ３３−１に送信する（ステップＳ１５）。
【００８５】
仮想サーバ３３−１は、ステップＳ１５で受信したパケットを処理する（ステップＳ１６）。当該処理の一例としては、受信したパケットがＴＣＰ  ＳＹＮパケットであった場合、ＴＣＰ接続確立処理と応答パケット（ＴＣＰ  ＳＹＮ・ＡＣＫパケット）の生成が挙げられる。
【００８６】
仮想サーバ３３−１は、ステップＳ１６の結果生成されたクライアント６０宛のパケットを送信する（ステップＳ１７）。
【００８７】
物理サーバ３０−１の転送ノード部３２は、仮想サーバ３３−１から受信したパケットの処理を行い、その結果として当該パケットを転送ノード２０−２に送信する（ステップＳ１８）。具体的には、まず、物理サーバ３０−１の転送ノード部３２が受信パケットに対応するフローエントリを検索する。ここでは、ステップＳ１３で追加されたフローエントリが対応するフローエントリとして発見され、当該フローエントリに基づきパケットが転送ノード２０−２に送信される。
【００８８】
同様に、転送ノード２０−２は、物理サーバ３０−１の転送ノード部３２から受信したパケットの処理を行い、その結果として当該パケットを転送ノード２０−１に送信する（ステップＳ１９）。転送ノード２０−１は、転送ノード２０−２から受信したパケットの処理を行い、その結果として当該パケットを通信用ネットワーク８０を介してクライアント６０に送信する（ステップＳ２０）。
【００８９】
次に、仮想サーバ３３−１が一時停止中であり物理サーバ３０−１上での再開が不可能な場合の動作について、図８を用いて説明する。図８は、本実施形態におけるコンピュータシステムの動作の例を示すシーケンス図である。
【００９０】
クライアント６０が仮想サーバ３３−１宛のパケットを送信してから、通信制御サーバ１０が仮想サーバ３３−１の再開要求に対する応答通知を受け取るまでの動作は、図７を参照して説明した、ステップＳ１〜Ｓ６の動作と同様である。ただし、ここでは、ステップＳ５において仮想サーバ３３−１を再開するのに用いる物理サーバとして物理サーバ３０−２が選択されたものとする。再開用の物理サーバの選択方法として、例えば、最も空きリソースの多い物理サーバを選択するようにしてもよい。
【００９１】
仮想環境制御サーバ４０は、ステップＳ５で選択された物理サーバである物理サーバ３０−２に仮想サーバ３３−１の再開を要求する（ステップＳ３０）。
【００９２】
物理サーバ３０−２のハイパーバイザ部３１は、仮想サーバ３３−１の再開処理を行う（ステップＳ３１）。
【００９３】
ステップＳ３１の完了に伴い、物理サーバ３３−２上で仮想サーバ３３−１が動作し始める（ステップＳ３２）。
【００９４】
ステップＳ３０〜Ｓ３２と並行して、通信制御サーバ１０はクライアント６０と仮想サーバ３３−２との間の経路計算を行う（ステップＳ３３）。ここでは、クライアント６０と仮想サーバ３３−１との間の経路は、転送ノード２０−１、転送ノード２０−３、および、物理サーバ３０−２の転送ノード部３２をこの順に経由する経路として計算されたとする。
【００９５】
物理サーバ３０−２のハイパーバイザ部３１は、仮想サーバ３３−１の再開が完了したことを仮想環境制御サーバ４０に通知する（ステップＳ３４）。
【００９６】
仮想環境制御サーバ４０は、ステップＳ４での仮想サーバ再開要求元である通信制御サーバ１０に、仮想サーバ３３−１の再開が完了したことを通知する（ステップＳ３５）。
【００９７】
通信制御サーバ１０の転送ノード制御部１１は、ステップＳ３３で計算された経路上の転送ノードに、計算された経路に基づくフローエントリを追加する（ステップＳ３６）。
【００９８】
通信制御サーバ１０の転送ノード制御部１１は、ステップＳ２で受信したパケットを物理サーバ３０−２の転送ノード部３２に送信し、仮想サーバ３３−１に送信するよう指示する（ステップＳ３７）。
【００９９】
物理サーバ３０−２の転送ノード部３２は、ステップＳ３７で受信したパケットを仮想サーバ３３−１に送信する（ステップＳ３８）。
【０１００】
ステップＳ１６の場合と同様、仮想サーバ３３−１は、ステップＳ３８で受信したパケットの処理を行う（ステップＳ３９）。
【０１０１】
仮想サーバ３３−１は、ステップＳ３９の結果生成されたクライアント６０宛のパケットを送信する（ステップＳ４０）。
【０１０２】
ステップＳ１８の場合と同様、物理サーバ３０−２の転送ノード部３２は、仮想サーバ３３−１から受信したパケットの処理を行い、その結果として当該パケットを転送ノード２０−３に送信する（ステップＳ４１）。
【０１０３】
同様に、転送ノード２０−３は、物理サーバ３０−２の転送ノード部３２から受信したパケットの処理を行い、その結果として当該パケットを転送ノード２０−１に送信する（ステップＳ４２）。転送ノード２０−１は、転送ノード２０−３から受信したパケットの処理を行い、その結果として、当該パケットを通信用ネットワーク８０を介してクライアント６０に送信する（ステップＳ４３）。
【０１０４】
＜仮想サーバ３３−１が一時停止状態となる場合の動作＞
次に、仮想サーバ３３−１が一時停止状態となる場合の動作について、図９を用いて説明する。図９は、本実施形態に係るコンピュータシステムの動作を一例として示すフロー図である。
【０１０５】
仮想サーバ３３−１への通信要求が、直近の過去一定時間内に存在したかどうかを確認する（ステップＳ５１）。
【０１０６】
ステップＳ５１は、様々な方法で実現することができる。一例として、ステップＳ５１を仮想サーバ３３−１上で実行されるソフトウェアによって実現してもよい。この場合、仮想サーバ３３−１上のソフトウェアは、通信状況を記録しておき、当該記録を基に直近の過去一定時間内に存在したかを確認する。
【０１０７】
また、他の例として、ステップＳ５１を仮想サーバ３３−１と接続している転送ノードによって実現してもよい。この場合、転送ノードは、仮想サーバ３３−１の通信状況を記録しておき、当該記録を基に直近の過去一定時間内に存在したかを確認する。
【０１０８】
仮想サーバ３３−１への通信要求が、直近の過去一定時間内に存在しない場合（ステップＳ５１）、仮想サーバ３３−１を一時停止させる（ステップＳ５２）。仮想サーバ３３−１が一時停止状態となることで、仮想サーバ３３−１に使用されていた物理リソースが解放され、他の用途（例えば、他の仮想サーバの実行）に利用できるようになる。
【０１０９】
ステップＳ５２は、様々な方法で実現することができる。例えば、ステップＳ５１が仮想サーバ３３−１上で実行されるソフトウェアで実現される場合、当該ソフトウェアが仮想サーバ３３−１のサスペンド処理もしくはハイバネーション処理を開始することでステップＳ５２を実現できる。当該処理は仮想サーバ３３−１を実行している物理サーバのハイパーバイザ部３１で検知され、ハイパーバイザ部３１は仮想サーバ３３−１を一時停止状態とする。
【０１１０】
また、ステップＳ５１が仮想サーバ３３−１に接続している転送ノードで実現される場合、当該転送ノードが仮想サーバ３３−１を実行している物理サーバのハイパーバイザ部３１または仮想環境制御サーバ４０に仮想サーバ３３−１の一時停止を要求することで実現できる。仮想環境制御サーバ４０は、当該要求に基づき当該ハイパーバイザ部３１に仮想サーバ３３−１の一時停止を指示し、当該ハイパーバイザ部３１は仮想サーバ３３−１を一時停止状態とする。
【０１１１】
仮想サーバ３３−１を実行していた物理サーバのハイパーバイザ部３１は、仮想サーバ３３−１が一時停止状態となったことを仮想環境制御サーバ４０に通知する（ステップＳ５３）。なお、ステップＳ５２において仮想環境制御サーバ４０が一時停止の処理に関与している場合には、本ステップを省略してもよい。
【０１１２】
仮想環境制御サーバ４０は、仮想サーバ３３−１が一時停止状態となったことを通信制御サーバ１０に通知し、当該通知を基に仮想環境サーバ１０はトポロジ情報内の仮想サーバ３３−１に関する情報を更新する（ステップＳ５４）。
【０１１３】
以上説明したように、本実施形態によれば、負荷がない仮想サーバを一時停止状態にする。また、一時停止状態の仮想サーバに対する通信要求が発生した場合、通信制御サーバ１０はそれを検出し、仮想環境制御サーバ４０を介して当該仮想サーバを再開させる。その際、当該仮想サーバはその実行に適した物理サーバ上で再開されるとともに、当該仮想サーバの新しい実行環境に応じた通信経路が設定される。よって、負荷がない仮想サーバを一時停止状態とすることで物理リソースを有効活用することができるとともに、通信要求が発生した際の仮想サーバの通信応答性能の劣化を抑制することができる。
【０１１４】
また、実施形態に係るコンピュータシステムの説明では、仮想サーバのデータや状態（ディスクイメージ、サスペンドイメージ、スナップショットなど）がストレージサーバに記憶され、複数の物理サーバから共有される例を示したが、本発明はこれに限定されるものではない。例えば、仮想サーバのデータや状態は複数の物理サーバで共有されなくてもよく、当該仮想サーバを実行している物理サーバ内の記憶装置に記憶されてもよい。この場合、例えば、一時停止状態の仮想サーバを別の物理サーバ上で再開する際、当該仮想サーバのデータや状態を、それらを保持している物理サーバから仮想サーバの再開に用いる物理サーバに転送する。こうすることで、ストレージサーバが存在しないシステムに対しても本発明を適用することが可能となる。
【０１１５】
さらに、実施形態に係るコンピュータシステムの説明では、ステップＳ５における仮想サーバを再開するのに用いる物理サーバの選択方法として、最も空きリソースの多い物理サーバを選択することとしたが、本発明はこれに限定されるものではない。例えば、仮想サーバの再開に必要な空きリソースを持つ物理サーバの中で、最もクライアントとの通信に適した物理サーバを選択するようにしてもよい。適切か否かの基準として、クライアントとの間のネットワーク上の距離（ホップ数など）、リンク帯域、リンク利用率、または、これらの組み合わせを用いてもよい。この場合、例えば、ステップＳ５において仮想環境制御サーバは候補となる物理サーバのリストを通信制御サーバ１０に通知し、通信制御サーバ１０は自身が保持するネットワークの情報を用いて物理サーバを選択し、その結果を仮想環境制御サーバ４０に通知する。こうすることで、再開後の仮想サーバとクライアント６０の通信をより効率的に実行することが可能となる。
【０１１６】
また、実施形態に係るコンピュータシステムにおいては、通信制御サーバ１０と仮想環境制御サーバ４０とを別個の装置として説明したが、これらの装置を一体化された単一の装置としてもよい。
【０１１７】
（実施形態２）
次に、第２の実施形態におけるコンピュータシステムについて、図面を参照して説明する。
【０１１８】
第１の実施形態に係るコンピュータシステムでは、一時停止状態の仮想サーバに対する通信要求が発生した場合、通信制御サーバ１０はそれを検出すると常に当該仮想サーバを再開させる例を示したが、本発明はこれに限定されるものではない。
【０１１９】
本実施形態に係るコンピュータシステムでは、一時停止状態の仮想サーバに対する通信要求が発生した場合、通信制御サーバ１０はそれを検出し、当該通信要求が当該仮想サーバにとって有効である（例えば、許可されている、処理対象である）場合にのみ、当該仮想サーバを再開させる。
【０１２０】
以下、本実施形態に係るコンピュータシステムの構成および動作について、第１の実施形態に係るコンピュータシステムの構成および動作と異なる部分を説明する。
【０１２１】
本実施形態における仮想サーバ３３−１〜３３−ｎは、クライアント６０からの通信要求に応じるか否かを示す通信許可リストを保持するとともに、他のモジュール（例えば、物理サーバ３０−１、３０−２のハイパーバイザ部３１）に当該通信許可リストを提供する通信許可リスト管理部３３Ａ（非図示）を備える。
【０１２２】
通信許可リストの例として、仮想サーバ内のファイアウォールで許可されている通信のリスト、仮想サーバ内で待ち受け状態となっている通信ポート番号のリストなどが挙げられる。また、仮想サーバ内のファイアウォールの例として、iptablesが挙げられる。ただし、通信許可リストやファイアウォールは、これらに限定されない。
【０１２３】
本実施形態における物理サーバ３０−１、３０−２のハイパーバイザ部３１は、第１の実施形態における動作に加え、仮想サーバ３３−１〜３３−ｎの通信許可リスト管理部３３Ａから対象の仮想サーバの通信許可リストを取得し、仮想環境制御サーバ４０の仮想サーバ制御部４１に通知する。
【０１２４】
本実施形態における仮想環境制御サーバ４０の仮想サーバ制御部４１は、第１の実施形態における動作に加え、物理サーバ３０−１〜３０−２のハイパーバイザ部３１から各仮想サーバの通信許可リストを取得し、各仮想サーバの状態とともに保持する。また、仮想サーバ制御部４１は、他のモジュール（例えば、通信制御サーバ１０の仮想環境連携部１２）からの要求に対し、仮想サーバの通信許可リストを応答として通知する。
【０１２５】
本実施形態における通信制御サーバ１０のトポロジ情報記憶部１４は、第１の実施形態における内容に加え、仮想サーバの通信許可リストも記憶する。
【０１２６】
本実施形態における通信制御サーバ１０のトポロジ情報管理部１３は、第１の実施形態における動作に加え、仮想サーバの通信許可リストの収集も行う。
【０１２７】
本実施形態における通信制御サーバ１０の仮想環境連携部１２は、第１の実施形態における動作に加え、仮想サーバの通信許可リストの要求も行う。
【０１２８】
本実施形態における通信制御サーバ１０の転送ノード制御部１１は、第１の実施形態における動作に加え、転送ノードから受信したパケットが当該パケットの宛先仮想サーバにおける通信許可リストで許可されないパケットであった場合、当該宛先仮想サーバの再開を行わず、当該パケットを破棄する。
【０１２９】
次に、本実施形態によるコンピュータシステムの動作について、図面を参照しつつ説明する。
【０１３０】
＜クライアント６０が仮想サーバ３３−１宛のパケットを送信した場合の動作＞
クライアント６０が仮想サーバ３３−１宛のパケットを送信した場合の動作は、当該パケットが仮想サーバ３３−１の通信許可リストで許可される場合、図７および図８を参照して説明した第１の実施形態に係るコンピュータシステムの動作と、以下の例外を除いて同一である。
【０１３１】
通信制御サーバ１０の転送ノード制御部１１は、ステップＳ３において、受信したパケットの宛先端末の状態を確認することに加え、受信したパケットの宛先端末の通信許可リストを確認し、当該パケットが宛先端末によって通信許可されることを確認する。
【０１３２】
クライアント６０が仮想サーバ３３−１宛のパケットを送信した場合の動作について、当該パケットが仮想サーバ３３−１の通信許可リストで許可されない場合について、図１０を参照して説明する。図１０は、本実施形態に係るコンピュータシステムの動作の例を示すシーケンス図である。
【０１３３】
クライアント６０が、仮想サーバ３３−１宛のパケットを送信する（ステップＳ６１）。当該パケットは、通信用ネットワーク８０を介して転送ノード２０−１に届けられる。
【０１３４】
転送ノード２０−１は、クライアント６０から受信したパケットの処理を行い、その結果として当該パケットを通信制御サーバ１０に送信する（ステップＳ６２）。
【０１３５】
通信制御サーバ１０の転送ノード制御部１１は、受信したパケットの宛先端末の通信許可リストを確認する（ステップＳ６３）。具体的には、通信制御サーバ１０の転送ノード制御部１１は、例えば、受信したパケットの宛先ＩＰアドレスと、トポロジ情報記憶部１４が記憶しているトポロジ情報とを参照し、宛先端末の識別とその通信許可リストを取得する。
【０１３６】
通信制御サーバ１０の転送ノード制御部１１は、ステップＳ６３で得た通信許可リストと受信したパケットの比較を行い、当該パケットの通信が宛先端末で許可されない場合、当該パケットを破棄する（ステップＳ６４）。
【０１３７】
以上説明したように、本実施形態によれば、負荷がない仮想サーバを一時停止状態にする。また、仮想サーバに対する通信要求が発生した場合、通信制御サーバ１０はそれを検出し、当該通信要求が当該仮想サーバによって通信が許可されない場合、当該通信要求を破棄する。本実施形態によると、不必要な仮想サーバの再開や不必要な通信要求の送信を抑制することで、物理リソースを有効活用することができる。
【０１３８】
なお、本実施形態に係るコンピュータシステムの説明では、仮想環境制御サーバ４０の仮想サーバ制御部４１が仮想サーバの通信許可リストを物理サーバ３０−１、３０−２のハイパーバイザ部３１から取得する場合について説明したが、本発明はこれに限定されるものではない。仮想環境制御サーバ４０の仮想サーバ制御部４１は、仮想サーバの通信許可リストを、物理サーバ３０−１、３０−２のハイパーバイザ部３１からではなく、仮想サーバ３３−１〜３３−ｎの通信許可リスト管理部３３Ａから直接取得してもよい。
【０１３９】
本実施形態に係るコンピュータシステムの説明では、通信制御サーバ１０の転送ノード制御部１１は、仮想サーバで許可されない通信要求（パケット）を検出した場合、当該パケットを破棄する例について説明したが、本発明はこれに限定されるものではない。他の例として、例えば、当該パケットを破棄するとともに、転送ノードの一部（例えば、当該要求を通知してきた転送ノード）または全部に対し、当該パケットを破棄するフローエントリを設定してもよい。これは、ステップＳ６４のあとに、マッチするフローが当該パケットのフローであり、アクションがパケット破棄であるようなフローエントリを転送ノード（例えば、転送ノード２０−１）に設定するステップを追加することで実現することができる。このとき、仮想サーバで許可されない通信要求を転送ノードの段階で破棄することができ、通信制御サーバ１０や制御ネットワーク７０の負荷を軽減することが可能となる。
【０１４０】
なお、上記の特許文献などの先行技術文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素（各請求項の各要素、各実施形態の各要素、各図面の各要素などを含む）の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
【符号の説明】
【０１４１】
１０    通信制御サーバ
１１    転送ノード制御部
１２    仮想環境連携部
１３    トポロジ情報管理部
１４    トポロジ情報記憶部
２０−１〜２０−３    転送ノード
２１    制御チャネル処理部
２２    転送処理部
２３    フローテーブル記憶部
３０−１、３０−２    物理サーバ
３１    ハイパーバイザ部
３２    転送ノード部
３３、３３−１〜３３−ｎ    仮想サーバ
３３Ａ    通信許可リスト管理部
４０    仮想環境制御サーバ
４１    仮想サーバ制御部
４２    物理リソース管理部
５０    ストレージサーバ
６０    クライアント
７０    制御用ネットワーク
８０    通信用ネットワーク
【図１】
0005983782.tif 000002
【図２】
0005983782.tif 000003
【図３】
0005983782.tif 000004
【図４】
0005983782.tif 000005
【図５】
0005983782.tif 000006
【図６】
0005983782.tif 000007
【図７】
0005983782.tif 000008
【図８】
0005983782.tif 000009
【図９】
0005983782.tif 000010
【図１０】
0005983782.tif 000011