(57)【特許請求の範囲】
【請求項１】
ゲートウェイ装置は、データセンタ内に備えられた第１および第２のサーバと、前記データセンタの外部に位置する外部通信装置の間の通信を中継し、
制御装置は、前記第１および第２のサーバで動作する仮想マシンごとに、単位時間に送受信されるデータの量である通信量を、前記データの送信元および宛先に関連付けて観測することにより得られた観測結果を取得し、
前記制御装置は、前記ゲートウェイ装置から前記第１のサーバまでの第１のホップ数が、前記ゲートウェイ装置から前記第２のサーバまでの第２のホップ数よりも小さい場合、前記外部通信装置との通信量が大きい仮想マシンほど前記第１のサーバに配置されやすくなるように、前記仮想マシンの配置を制御する
ことを特徴とする通信方法。
【請求項２】
前記制御装置は、
前記観測結果を用いて、前記第２のサーバから前記ゲートウェイ装置に至る経路の通信量を算出し、
前記第２のサーバから前記ゲートウェイ装置に至る経路の通信量が第１の閾値を超えると、前記第２のサーバに配置されている仮想マシンのうち前記外部通信装置との通信量が多い仮想マシンほど優先的に、前記第１のサーバに配置するように制御する
ことを特徴とする請求項１に記載の通信方法。
【請求項３】
第１の仮想マシンの通信量に対する、前記第１の仮想マシンと前記外部通信装置との通信量の割合が第２の閾値以下である場合、前記制御装置は、前記第１の仮想マシンを、前記第２のサーバに配置するように制御する
ことを特徴とする請求項１もしくは２に記載の通信方法。
【請求項４】
前記第１の仮想マシンと第２の仮想マシンのいずれでも、前記外部通信装置との通信量の割合が前記第２の閾値以下であり、かつ、前記第１の仮想マシンと前記第２の仮想マシンの間で通信が行われている場合、前記制御装置は、前記第１の仮想マシンと前記第２の仮想マシンの間のホップ数が小さくなるように、前記第１および第２の仮想マシンを配置する
ことを特徴とする請求項３に記載の通信方法。
【請求項５】
前記観測結果は、前記第１および第２のサーバで動作する仮想マシンごとに、送受信されるデータの量を優先度に関連付けて観測した結果を含み、
前記制御装置は、前記優先度の高いデータを送受信する仮想マシンのうちで、前記外部通信装置との通信量が大きい仮想マシンほど前記第１のサーバに配置されやすくなるように制御する
ことを特徴とする請求項１〜４のいずれかに記載の通信方法。
【請求項６】
データセンタの内部に位置する装置と前記データセンタの外部に位置する外部通信装置の間の通信を中継するゲートウェイ装置から、前記データセンタ内の第１のサーバまでのホップ数である第１のホップ数を取得し、
前記ゲートウェイ装置から前記データセンタ内の第２のサーバまでのホップ数である第２のホップ数を取得し、
前記第１および第２のサーバで動作する仮想マシンごとに、単位時間に送受信されるデータの量である通信量を、前記データの送信元および宛先に関連付けて観測した観測結果を取得し、
前記第１のホップ数が前記第２のホップ数よりも小さい場合、前記外部通信装置との通信量が大きい仮想マシンほど前記第１のサーバに配置されやすくなるように、前記仮想マシンの配置を制御する
処理をコンピュータに行わせることを特徴とする通信プログラム。
【請求項７】
データセンタの内部に位置する装置と前記データセンタの外部に位置する外部通信装置の間の通信を中継するゲートウェイ装置から、前記データセンタ内の第１のサーバまでのホップ数である第１のホップ数と、前記ゲートウェイ装置から前記データセンタ内の第２のサーバまでのホップ数である第２のホップ数を記憶する記憶部と、
前記第１および第２のサーバで動作する仮想マシンごとに、単位時間に送受信されるデータの量である通信量を、前記データの送信元および宛先に関連付けて観測した観測結果を受信する受信部と、
前記第１のホップ数が前記第２のホップ数よりも小さい場合、前記外部通信装置との通信量が大きい仮想マシンほど前記第１のサーバに配置されやすくなるように、前記仮想マシンの配置を決定するとともに、決定した配置を通知する制御メッセージを生成する配置決定部と、
前記制御メッセージを送信する送信部
を備えることを特徴とする通信装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の通信装置を含むネットワークにおける通信に関する。
【背景技術】
【０００２】
近年、ネットワークと仮想マシン（Virtual Machine、ＶＭ）を用いたクラウドコンピューティングが普及してきている。クラウドコンピューティングに用いられるデータセンタには複数のサーバが設置されることがあり、仮想マシンはサーバ中で動作する。仮想マシンはアプリケーションを実行するために用いるデータや、アプリケーションの実行結果を他の仮想マシンやサーバなどとの間で送受信する。このため、１つのデータセンタ中の複数の仮想マシンの間での通信が発生することがある。さらに、データセンタＡに設置されているサーバで動作している仮想マシンが、データセンタＡとは異なるデータセンタＢに設置されているサーバで動作する仮想マシンと通信する場合もある。
【０００３】
関連する技術として、サービスを提供する仮想マシンをサーバルーム内の所定のラックに含まれているサーバに配置することにより、稼動しているサーバを所定のラック内に集中させるシステムが考案されている。このシステムでは、仮想マシンの配置を変更したことにより稼動中のサーバがなくなったラックを停止し、そのラックを対象とした室内設備の処理も停止することにより省電力化が図られる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−８２７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
クラウドコンピューティングの普及に伴い、データセンタ内で送受信されるデータ量やデータセンタ間で送受信されるデータ量が急増してきているため、通信量の増大に対応できるようなシステムが求められている。しかし、設備への投資額を低く抑えることも求められている。そこで本発明では、データセンタ内の回線が効率的に利用されるような通信方法を提案することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態にかかる方法では、ゲートウェイ装置は、データセンタ内に備えられた第１および第２のサーバと、前記データセンタの外部に位置する外部通信装置の間の通信を中継する。制御装置は、前記第１および第２のサーバで動作する仮想マシンごとに、単位時間に送受信されるデータの量である通信量を、前記データの送信元および宛先に関連付けて観測することにより得られた観測結果を取得する。前記制御装置は、前記ゲートウェイ装置から前記第１のサーバまでの第１のホップ数が、前記ゲートウェイ装置から前記第２のサーバまでの第２のホップ数よりも小さいかを確認する。第１のホップ数が第２のホップ数よりも小さい場合、制御装置は、前記外部通信装置との通信量が大きい仮想マシンほど前記第１のサーバに配置されやすくなるように、前記仮想マシンの配置を制御する。
【発明の効果】
【０００７】
データセンタ内の回線が効率的に利用される。
【図面の簡単な説明】
【０００８】
【図１】データセンタでの仮想マシンの配置の例を示す図である。
【図２】制御装置の機能ブロック図の例である。
【図３】サーバの機能ブロック図の例である。
【図４】制御装置およびサーバのハードウェア構成の例を示す図である。
【図５】仮想マシンの配置の例を示す図である。
【図６】制御装置が備えるトポロジーデータの例を示すテーブルである。
【図７】トラフィックモニタが取得したトラフィック情報の例を示す図である。
【図８】仮想マシンの配置の例を示す図である。
【図９】トラフィック情報の例を示す図である。
【図１０】仮想マシンの配置の例を示す図である。
【図１１】トラフィック情報の例を示す図である。
【図１２】仮想マシンの配置の例を示す図である。
【図１３】トラフィック情報の例を示す図である。
【図１４】仮想マシンの運用前に仮想マシンの配置が決定される場合に行われる処理の例を説明するフローチャートである。
【図１５Ａ】輻輳が発生したときの処理の例を説明するフローチャートである。
【図１５Ｂ】輻輳が発生したときの処理の例を説明するフローチャートである。
【図１６】仮想マシンが削減されたときの仮想マシンの配置の例を示す図である。
【図１７】仮想マシンが追加されたときの仮想マシンの配置の例を示す図である。
【図１８】トラフィック情報の例を示す図である。
【図１９】仮想マシンの配置の例を示す図である。
【図２０】トラフィック情報の例を示す図である。
【図２１】トラフィックの分類と配置ポリシーの例を説明するテーブルである。
【図２２】仮想マシンの配置が決定される場合に行われる処理の例を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
図１は、データセンタ６０ａでの仮想マシン３４の配置の例を示す。データセンタ６０ａは、ゲートウェイルータ（ＧＷ、gateway）、中継ルータ（ＲＴ１、ＲＴ２）、スイッチ（ＳＷ１〜ＳＷ４）、制御装置１０、サーバ３０（３０ａ〜３０ｊ）を備える。管理ネットワーク５には、制御装置１０と個々のサーバ３０が含まれる。データセンタ６０ａに含まれるサーバ３０は、ゲートウェイルータを介して、データセンタ６０ａの外に備えられている通信装置と通信する。以下の説明では、データセンタ６０ａに含まれておらず、データセンタ６０ａ中の装置とゲートウェイＧＷを介して通信する装置のことを、「外部通信装置」と記載することがある。外部通信装置には、例えば、インターネット７０中の通信装置やインターネット７０を介して接続されているデータセンタ６０ｂ、オフィス６５（６５ａ、６５ｂ）中の通信装置が含まれる。サーバ３０（３０ａ〜３０ｊ）では、仮想マシン３４（３４ａ〜３４ｈ）が動作する。なお、以下の説明では、理解しやすくするために、１つのサーバ３０で１つの仮想マシン３４が動作する場合を例として説明するが、個々のサーバ３０では、任意の数の仮想マシン３４が動作できるものとする。また、図１はデータセンタ６０の例を示しており、データセンタ６０に含まれるゲートウェイＧＷ、中継ルータＲＴ、スイッチＳＷ、サーバ３０などの数は任意に変更される場合がある。
【００１０】
制御装置１０は、予め、データセンタ６０ａに含まれている中継ルータＲＴ、スイッチＳＷ、サーバ３０などの通信装置の接続関係（トポロジーデータ）を記憶している。トポロジーデータは、適宜、オペレータなどによって制御装置１０に入力されるものとする。
【００１１】
制御装置１０は、サーバ３０に配置される仮想マシン３４の各々について、通信で用いるトラフィックを取得する。以下の説明では、ネットワーク上を単位時間当たりに流れるデータ量を「トラフィック」と記載することがある。また、以下の説明では、特定の回線を１秒に流れるデータ量をｂｐｓ（Bits Per Second）で示すものとする。なお、制御装置１０は、各サーバで送受信されたデータ量を観測する観測装置（図示せず）から、観測結果を取得し、得られたデータに基づいてトラフィックを計算することができるものとする。ここで、観測装置は、トラフィックに関する情報を取得することができる任意の通信装置により実現され、例えば、トラフィックモニタ（図５参照）やコンピュータにより実現されることがある。また、仮想マシンの運用が開始される前は、制御装置１０は、オペレータなどにより入力されたデータに基づいてトラフィックを計算する。制御装置１０は、観測装置から得られた情報、もしくは、オペレータから入力された情報に基づいて、サーバ３０に配置される仮想マシン３４の各々について、外部通信装置との間の通信量を計算する。
【００１２】
制御装置１０は、外部通信装置との間の通信量が多い仮想マシン３４を、ゲートウェイＧＷからのホップ数が小さいサーバ３０に配置されるように制御する。例えば、仮想マシン３４ａ〜３４ｈのうちで、仮想マシン３４ｃが最も外部通信装置との間のトラフィックが大きく、仮想マシン３４ｄは外部通信装置との間のトラフィックが２番目に大きいとする。図１の例では、サーバ３０ａ〜３０ｈではゲートウェイＧＷからのホップ数は３であるが、サーバ３０ｉ、３０ｊではゲートウェイＧＷからのホップ数は１である。そこで、制御装置１０は、仮想マシン３４ｃと３４ｄがサーバ３０ｉ、３０ｊに配置され、仮想マシン３４ａ、３４ｂ、３４ｅ〜３４ｈはサーバ３０ａ〜３０ｈに配置されるように制御する。例えば、制御装置１０は、管理ネットワーク５を介して、配置を変更する仮想マシン３４に制御情報を送信する。制御情報を受信した仮想マシン３４は、制御情報により指定されたサーバ３０に移動する。仮想マシン３４の移動は、任意のライブマイグレーション技術により行われるものとする。仮想マシン３４ｃと３４ｄがサーバ３０ｉ、３０ｊに配置されると、仮想マシン３４ｃと３４ｄが外部通信装置へ送信するデータは、中継ルータＲＴ１、ＲＴ２、スイッチＳＷ１〜ＳＷ４などの中継装置を経由しない。このため、仮想マシン３４ｃと３４ｄがサーバ３０ａ〜３０ｈに配置された場合に比べて、データセンタ６０ａの内部で送受信できるトラフィックが増大する。
【００１３】
このように、外部通信装置との間のトラフィックが大きい仮想マシン３４は、ゲートウェイＧＷからのホップ数が小さいサーバ３０に優先的に配置されるため、データセンタ６０の内部の回線が効率的に利用される。
【００１４】
＜装置構成＞
図２は、制御装置１０の機能ブロック図の例を示す。制御装置１０は、受信部１１、送信部１２、記憶部１３、トラフィック情報取得部１５、配置制御部２０を備える。配置制御部２０は、輻輳検出部２１と配置決定部２２を有する。受信部１１は、観測装置や、サーバ３０から送信されたデータ等を受信する。送信部１２は、制御装置１０からサーバ３０もしくは観測装置に向けて送信されるデータ等を送信する。例えば、送信部１２は、配置決定部２２が決定した配置になるように仮想マシンを移動させるための制御メッセージを、仮想マシンが配置されているサーバ３０に向けて送信する。記憶部１３は、トポロジーデータ１４を有する他、制御装置１０の処理で得られたデータなどを適宜、記憶する。トポロジーデータ１４は、データセンタ６０に含まれている通信装置の接続関係を特定する情報である。トラフィック情報取得部１５は、受信部１１を介して、観測装置からトラフィックに関する情報を取得する。以下の説明では、トラフィックに関する情報を「トラフィック情報」と記載することがある。
【００１５】
輻輳検出部２１は、トラフィック情報と、トポロジーデータ１４を用いて、データセンタ６０のネットワーク中に含まれる各回線のトラフィックを計算し、輻輳が発生している箇所を検出する。
【００１６】
配置決定部２２は、サーバ３０への仮想マシン３４の配置を決定する。データセンタ６０の運用が開始される前は、配置決定部２２は、外部通信装置との間のトラフィックが大きいと予想される仮想マシン３４ほど、ゲートウェイＧＷからのホップ数が小さいサーバ３０に配置されるように、仮想マシン３４の配置を決定する。データセンタ６０の運用が開始され、運用中に輻輳が発生すると、配置決定部２２は、輻輳検出部２１で計算した結果に基づいて、仮想マシン３４の配置を変更する。この場合、配置決定部２２は、輻輳が発生している回線を介してデータを送受信している仮想マシン３４のうち、外部通信装置との間のトラフィックが大きい仮想マシン３４を、ゲートウェイＧＷからのホップ数が小さいサーバ３０に移動する。配置決定部２２の動作については、後で詳しく説明する。
【００１７】
図３は、サーバ３０の機能ブロック図の例を示す。サーバ３０は、受信部３１、送信部３２を備え、仮想スイッチ３３、仮想マシン３４（３４ａ〜３４ｃ）を動作させることができる。受信部３１は、他のサーバ３０、制御装置１０、外部通信装置などから送信されてきたデータを受信する。送信部３２は、他のサーバ３０や外部通信装置などに向けてデータを送信する。また、受信部３１もしくは送信部３２を介して送受信されたデータは、ミラーリングにより、観測装置で観測されているものとする。
【００１８】
仮想スイッチ３３は、仮想マシン３４ａ〜３４ｃを受信部３１および送信部３２と接続する。なお、図３の例では、３台の仮想マシン３４がサーバ３０で動作しているが、１台のサーバ３０で動作する仮想マシン３４の数は任意である。
【００１９】
図４は、制御装置１０およびサーバ３０のハードウェア構成の例を示す。制御装置１０とサーバ３０のいずれも、Central Processing Unit（ＣＰＵ）４１、メモリ４２、入力装置４３、出力装置４４、バス４５、外部記憶装置４６、媒体駆動装置４７、ネットワーク接続装置４９を備える。例えば、制御装置１０とサーバ３０のいずれもコンピュータにより実現される場合がある。なお、観測装置も、図４に示すようなハードウェアを備えたコンピュータにより実現されることがあるものとする。
【００２０】
制御装置１０では、ＣＰＵ４１は、プログラムを実行することにより、トラフィック情報取得部１５および配置制御部２０として動作する。メモリ４２は、記憶部１３として動作する。また、制御装置１０は、トポロジーデータ１４やトラフィック情報などのデータを、ネットワーク５０もしくは可搬記憶媒体４８から取得することもできる。ネットワーク接続装置４９は、受信部１１および送信部１２として動作する。
一方、サーバ３０では、ＣＰＵ４１は仮想スイッチ３３や仮想マシン３４として動作する。また、ネットワーク接続装置４９は、受信部３１および送信部３２として動作する。
【００２１】
入力装置４３は、例えば、ボタン、キーボードやマウスなどであり、オペレータは、入力装置４３を用いて制御装置１０にトラフィック情報やトポロジーデータ１４を入力できる。出力装置４４は、ディスプレイなどとして実現される。バス４５は、ＣＰＵ４１、メモリ４２、入力装置４３、出力装置４４、外部記憶装置４６、媒体駆動装置４７、ネットワーク接続装置４９の間を相互にデータの受け渡しが行えるように接続する。外部記憶装置４６は、プログラムやデータなどを格納し、適宜、ＣＰＵ４１などに格納している情報を提供する。媒体駆動装置４７は、メモリ４２や外部記憶装置４６のデータを可搬記憶媒体４８に出力することができ、また、可搬記憶媒体４８からプログラムやデータ等を読み出すことができる。ここで、可搬記憶媒体４８は、フロッピイディスク、Magneto-Optical（ＭＯ）ディスク、Compact Disc Recordable（ＣＤ−Ｒ）やDigital Versatile Disk Recordable（ＤＶＤ−Ｒ）を含む、持ち運びが可能な任意の記憶媒体とすることができる。
【００２２】
＜第１の実施形態＞
図５は、仮想マシン３４の配置の例を示す。以下、図５のように仮想マシン３４が配置されたことにより輻輳が発生したときに行われる処理について説明する。図５では、テナントＡ〜Ｃの仮想マシン３４がデータセンタ６０ａで動作するものとする。以下、個々の仮想マシン３４とテナントの関係を分かりやすくするために、仮想マシン３４の番号を、「ＶＭ＿」の後に、テナントを識別するアルファベットと仮想マシン３４を識別する数字を加えた文字列とする。例えば、ＶＭ＿Ａ１は、テナントＡのサービスを提供する１つ目の仮想マシン３４である。また、サーバ３０についても、図５では、「ＳＶ」の後に番号を続けた文字列により識別するものとする。
【００２３】
図５に示すネットワークでは、ゲートウェイＧＷに中継ルータＲＴ１、ＲＴ２が接続されている。また、中継ルータＲＴ１にはスイッチＳＷ１、ＳＷ２が接続され、中継ルータＲＴ２には、スイッチＳＷ３とＳＷ４が接続されている。サーバＳＶ１とＳＶ２はスイッチＳＷ１、サーバＳＶ３とＳＶ４はスイッチＳＷ２に接続されており、サーバＳＶ５とＳＶ６はスイッチＳＷ３、サーバＳＶ７とＳＶ８はスイッチＳＷ４に接続されている。また、サーバＳＶ９とＳＶ１０は、中継ルータＲＴやスイッチＳＷを介さずにゲートウェイＧＷに接続されている。
【００２４】
図６は、制御装置１０が備えるトポロジーデータ１４の例である。図６に示すトポロジーデータ１４には、サーバＳＶ１〜ＳＶ１０について、ゲートウェイＧＷに至る経路で経由する中継ルータＲＴとスイッチＳＷが記録されている。さらに、サーバＳＶ１〜ＳＶ１０の各々についてのゲートウェイＧＷからのホップ数も記録されている。なお、制御装置１０は、図６に示すトポロジーデータ１４に加えて、各回線のトラフィックの上限値も記憶しているものとする。
【００２５】
図５では、サーバＳＶ１にＶＭ＿Ａ１、サーバＳＶ２にＶＭ＿Ａ２、サーバＳＶ３にＶＭ＿Ａ３が配置されている。さらに、サーバＳＶ４にＶＭ＿Ｃ１、サーバＳＶ５にＶＭ＿Ｃ２、サーバＳＶ６にＶＭ＿Ｃ３が配置されており、サーバＳＶ７にＶＭ＿Ｂ１、サーバＳＶ８にＶＭ＿Ｂ２が配置されている。トラフィックモニタ２５は、サーバＳＶ１〜ＳＶ１０で送受信されるデータをミラーリングして、送信元と宛先とに対応付けて分類する。
【００２６】
例えば、図５に示すように仮想マシンＶＭ＿Ａ１〜ＶＭ＿Ｃ３が配置されている場合に以下のようなトラフィックが発生した場合の処理を説明する。
ＶＭ＿Ａ１からデータセンタＢ宛てのトラフィック      ：４Ｇｂｐｓ
ＶＭ＿Ａ２からデータセンタＢ宛てのトラフィック      ：４Ｇｂｐｓ
ＶＭ＿Ａ３からデータセンタＢ宛てのトラフィック      ：４Ｇｂｐｓ
ＶＭ＿Ｂ１からオフィスＡ宛てのトラフィック          ：５Ｇｂｐｓ
ＶＭ＿Ｂ２からオフィスＡ宛てのトラフィック          ：２Ｇｂｐｓ
ＶＭ＿Ｂ１とＶＭ＿Ｂ２の間の双方向通信のトラフィック：１Ｇｂｐｓ
ＶＭ＿Ｃ１とＶＭ＿Ｃ２の間の双方向通信のトラフィック：３Ｇｂｐｓ
ＶＭ＿Ｃ２とＶＭ＿Ｃ３の間の双方向通信のトラフィック：３Ｇｂｐｓ
なお、データセンタＢ、オフィスＡ、オフィスＢに備えられている通信装置は、データセンタ６０ａの外部にある外部通信装置であるものとする。
【００２７】
（１）トラフィックモニタ２５は、例えば、図７に示すようなトラフィック情報を取得する。図７に示す例では、トラフィック情報は、データの送信元の仮想マシン、送信元の仮想マシンが配置された物理サーバ、データの宛先、宛先の仮想マシンが配置された物理サーバ、トラフィックの使用量に関する情報を含む。トラフィックの使用量に関する情報については、図７の例では、通信ごとのトラフィック、外部宛トラフィック、内部宛トラフィック、トラフィック総量の４種類の情報を含んでいる。ここで、通信ごとのトラフィックは、個々の通信で発生するトラフィックを指すものとする。例えば、ＶＭ＿Ｃ２はＶＭ＿Ｃ１とＶＭ＿Ｃ３の両方と通信しているので、ＶＭ＿Ｃ２からＶＭ＿Ｃ１へのデータ送信と、ＶＭ＿Ｃ２からＶＭ＿Ｃ３へのデータ送信のそれぞれについてトラフィックが求められる。「外部宛トラフィック」は、仮想マシンからデータセンタ６０の外部に向けた通信で発生するトラフィックの総量であり、仮想マシンごとに求められる。一方、「内部宛トラフィック」は、仮想マシンからデータセンタ６０の内部の他の仮想マシンとの間の通信で発生するトラフィックの総量である。「トラフィック総量」は、仮想マシンの通信により発生するトラフィックの総量であり、仮想マシンごとに求められる。
【００２８】
制御装置１０の輻輳検出部２１では、図６に示すトポロジーデータ１４と、図７に示すトラフィック情報を用いて、各回線に流れるトラフィックを計算する。トラフィックの計算は、データの送信元、宛先、通信ごとのトラフィックの大きさを用いて行われる。例えば、スイッチＳＷ１と中継ルータＲＴ１の間の回線では、ＶＭ＿Ａ１とＶＭ＿Ａ２から、データセンタＢ宛てのトラフィックが４Ｇｂｐｓずつ流れるので、トラフィックは、８Ｇｂｐｓとなる。また、スイッチＳＷ２と中継ルータＲＴ１の間の回線では、ＶＭ＿Ａ３からデータセンタＢ宛てのトラフィック（４Ｇｂｐｓ）と、ＶＭ＿Ｃ１からＶＭ＿Ｃ２宛てのデータのトラフィック（３Ｇｂｐｓ）が流れるので、７Ｇｂｐｓとなる。一方、スイッチＳＷ３と中継ルータＲＴ２の間の回線には、ＶＭ＿Ｃ２とＶＭ＿Ｃ３の間の双方向通信のトラフィック（３Ｇｂｐｓ）は流れない。このため、ＶＭ＿Ｃ２からＶＭ＿Ｃ１宛てのデータのトラフィックによる３Ｇｂｐｓが、スイッチＳＷ３と中継ルータＲＴ２の間の回線のトラフィックの総量となる。輻輳検出部２１は、同様に他の回線についてもトラフィックを計算し、図５の各回線の隣に記載されている値を、各回線で求められるトラフィックとして計算したとする。輻輳検出部２１は、計算結果と、各回線の帯域を比較する。ここで、「帯域」はその回線において、単位時間当たりに伝送できるデータ量の最大値である。輻輳検出部２１は、回線ごとにトラフィックの計算結果と帯域を比較し、帯域よりも大きなトラフィックが流れる場合に、輻輳が発生したと判断する。
【００２９】
以下の説明では、データセンタ６０ａの内部の回線の帯域は、いずれも、１０Ｇｂｐｓ未満であるものとする。従って、データセンタ６０ａの内部の回線のいずれかにおいて、１０Ｇｂｐｓ以上のトラフィックが流れる計算になると、輻輳検出部２１は、輻輳が発生したと判断する。図５では、見やすくするために、帯域をＭａｘと表している。図５の例では、ゲートウェイと中継ルータＲＴ１の間の回線では、１５Ｇｂｐｓのトラフィックが流れる計算になるが、帯域は１０Ｇｂｐｓ未満であるため、輻輳が発生していると判断される。さらに、ゲートウェイと中継ルータＲＴ２の間の回線でも、１０Ｇｂｐｓのトラフィックが流れる計算になるが、帯域は１０Ｇｂｐｓ未満であるため、輻輳が発生していると判断される。
【００３０】
輻輳検出部２１は、輻輳が発生している箇所を配置決定部２２に通知する。ここでは、輻輳検出部２１は、中継ルータＲＴ１とＲＴ２を輻輳が発生した箇所として配置決定部２２に通知する。
【００３１】
（２）配置決定部２２は、トポロジーデータ１４を用いて、データセンタ６０ａに含まれているサーバＳＶを、ゲートウェイＧＷからのホップ数ごとにグループ分けする。図６に示すトポロジーデータ１４が得られている場合、配置決定部２２は、ゲートウェイＧＷからのホップ数が１であるサーバＳＶ９、ＳＶ１０を１つのグループとして記憶する。さらに、配置決定部２２は、サーバＳＶ１〜ＳＶ８はいずれもゲートウェイＧＷからのホップ数が３であるので、１つのグループとする。以下、配置決定部２２は、サーバＳＶ９とＳＶ１０を「サーバ群１」、サーバＳＶ１〜ＳＶ８を「サーバ群２」に分類して記憶しているものとする。
【００３２】
次に、配置決定部２２は輻輳が発生している中継ルータＲＴもしくはスイッチＳＷを介して通信を行っている仮想マシンを、配置を変更する候補として特定する。さらに、配置を変更する候補の仮想マシンからの外部宛トラフィックがある場合、その仮想マシンが配置されているサーバよりもゲートウェイＧＷからのホップ数が近いサーバに仮想マシンを配置しようとする。
【００３３】
例えば、配置決定部２２は、輻輳が発生している中継ルータＲＴ１とＲＴ２のうち、輻輳の状況が悪い中継ルータＲＴ１へのトラフィックを改善するための処理を開始したとする。配置決定部２２は、トポロジーデータ１４（図６）を参照し、中継ルータＲＴ１を介して通信するサーバは、サーバＳＶ１〜ＳＶ４であることを認識する。輻輳の原因となるトラフィックは、サーバＳＶ１〜ＳＶ４から送信されているので、配置決定部２２は、サーバ群２に分類されたサーバＳＶからのトラフィックで輻輳が発生していることを認識する。図５に示す状態では、サーバ群１のサーバ（ＳＶ９、ＳＶ１０）には仮想マシンがまだ配置されていないため、リソースが余っている。そこで、配置決定部２２は、サーバＳＶ１〜ＳＶ４に配置されている仮想マシンのうちで外部宛トラフィックが大きい仮想マシンをサーバ群１のサーバＳＶに移動することを決定する。
【００３４】
配置決定部２２は、輻輳の原因となるトラフィックの送信元であると特定したサーバＳＶに配置されている仮想マシンがＶＭ＿Ａ１、ＶＭ＿Ａ２、ＶＭ＿Ａ３、および、ＶＭ＿Ｃ１であることを特定する。このとき、輻輳の原因として特定された仮想マシンに関するトラフィックは、図７のトラフィック情報のうち、太線で囲まれた情報となる。配置決定部２２は、輻輳の原因となっている仮想マシンのうちで、外部宛トラフィックが大きい仮想マシンを特定する。ここでは、ＶＭ＿Ａ１、ＶＭ＿Ａ２、ＶＭ＿Ａ３のいずれも外部宛トラフィックが４Ｇｂｐｓで、ＶＭ＿Ｃ１では外部宛トラフィックが発生していない。そこで、配置決定部２２は、ＶＭ＿Ａ１、ＶＭ＿Ａ２、ＶＭ＿Ａ３のいずれかをサーバ群１のサーバに移動する。ここでは、配置決定部２２は、ＶＭ＿Ａ３をサーバＳＶ３からサーバＳＶ９に移動させるものとする。
【００３５】
仮想マシンを移動させる際に、配置決定部２２は、制御メッセージを生成する。制御メッセージの形式は、移動する仮想マシンの識別子と、仮想マシンの移動先のサーバＳＶの識別子を含む任意の形式である。制御メッセージは、管理ネットワーク５を介して、制御装置１０が移動を要求する仮想マシンに送信される。制御メッセージを受信した仮想マシンは、制御メッセージに含まれている識別子により識別されるサーバＳＶに移動する。ここでは、配置決定部２２は、ＶＭ＿Ａ３をサーバＳＶ９に移動させるための制御メッセージを生成する。ＶＭ＿Ａ３は、制御メッセージを受信すると、ライブマイグレーションにより、サーバＳＶ３からサーバＳＶ９に移動する。
【００３６】
（３）ＶＭ＿Ａ３をサーバＳＶ３からサーバＳＶ９に移動させたときの仮想マシンの配置の例を図８に示す。図９は、ＶＭ＿Ａ３がサーバＳＶ３からサーバＳＶ９に移動した後で、トラフィックモニタ２５が取得したトラフィック情報の例を示す。
【００３７】
図８および図９に示すようにＶＭ＿Ａ３がサーバＳＶ３からサーバＳＶ９に移動すると、ＶＭ＿Ａ３から送信されるデータセンタＢ宛てのトラフィック（４Ｇｂｐｓ）は、スイッチＳＷ２と中継ルータＲＴ１を経由しなくなる。このため、スイッチＳＷ２から中継ルータＲＴ１に向かうトラフィックは３Ｇｂｐｓに減少する。さらに、中継ルータＲＴ１からゲートウェイＧＷに向かうトラフィックも１１Ｇｂｐｓに減少するため、中継ルータＲＴ１での輻輳状態は解消しないものの、中継ルータＲＴ１を介するトラフィックは減少する。
【００３８】
（４）次に、配置決定部２２は、中継ルータＲＴ２での輻輳を解消するための処理を行う。配置決定部２２は、トポロジーデータ１４（図６）を参照し、中継ルータＲＴ２を介して通信しているサーバは、サーバＳＶ５〜ＳＶ８であることを認識する。図８に示す状態では、サーバ群１のうちサーバＳＶ１０のリソースが余っているため、サーバＳＶ１０には仮想マシンの配置が可能である。そこで、配置決定部２２は、サーバＳＶ５〜ＳＶ８に配置された仮想マシンのうちで外部宛トラフィックが大きい仮想マシンをサーバＳＶ１０に移動することを決定する。
【００３９】
サーバＳＶ５〜ＳＶ８には、ＶＭ＿Ｃ２、ＶＭ＿Ｃ３、ＶＭ＿Ｂ１、ＶＭ＿Ｂ２が配置されている。従って、サーバＳＶ５〜ＳＶ８に配置されている仮想マシンに関するトラフィックは、図９のトラフィック情報のうちで、太線で囲まれた情報となる。配置決定部２２は、トラフィック情報を用いて、サーバＳＶ５〜ＳＶ８に配置されている仮想マシンの中で、外部宛トラフィックが大きい仮想マシンを特定する。ここでは、ＶＭ＿Ｂ１の外部宛トラフィックは５Ｇｂｐｓ、ＶＭ＿Ｂ２では２Ｇｂｐｓであり、ＶＭ＿Ｃ２とＶＭ＿Ｃ３では外部宛トラフィックが発生していない。そこで、配置決定部２２は、ＶＭ＿Ｂ１をサーバＳＶ１０に移動させる。配置決定部２２は、ＶＭ＿Ｂ１をサーバＳＶ１０に移動させるための制御メッセージを生成する。ＶＭ＿Ｂ１は、制御メッセージに基づいて、サーバＳＶ１０に移動する。
【００４０】
（５）ＶＭ＿Ｂ１をサーバＳＶ７からサーバＳＶ１０に移動させたときの仮想マシンの配置の例を図１０に示す。図１１は、ＶＭ＿Ｂ１がサーバＳＶ７からサーバＳＶ１０に移動した後で、トラフィックモニタ２５が取得したトラフィック情報の例を示す。
【００４１】
図１０および図１１に示すようにＶＭ＿Ｂ１がサーバＳＶ７からサーバＳＶ１０に移動すると、ＶＭ＿Ｂ１から送信されるオフィスＡ宛てのトラフィックは、中継ルータＲＴ２を経由しなくなる。このため、中継ルータＲＴ２からゲートウェイＧＷに向かうトラフィックは６Ｇｂｐｓに減少し、中継ルータＲＴ２での輻輳状態は解消する。
【００４２】
（６）中継ルータＲＴ２での輻輳は解消したが中継ルータＲＴ１での輻輳が解消していないため、配置決定部２２は、さらに仮想マシンの配置を変更する。手順（５）の処理により、サーバ群１に分類された全てのサーバに仮想マシンが配置されており、サーバ群１のリソースは余っていない。このため、新たに仮想マシンをサーバ群１のサーバに追加することはできない。そこで、配置決定部２２は、中継ルータＲＴ１を経由してデータを送信している仮想マシンの中で、サーバ群１のサーバに配置された仮想マシンよりも外部宛トラフィックが大きな仮想マシンがあるかを確認する。ここでは、図１１のサーバＳＶ１〜ＳＶ４に配置されている仮想マシンのいずれの外部宛トラフィックも、サーバ群１のサーバ（ＳＶ９、ＳＶ１０）に配置された仮想マシンでの外部宛トラフィックよりも大きくはない。
【００４３】
（７）そこで、配置決定部２２は内部宛トラフィックに着目して仮想マシンを移動させる。このとき、配置決定部２２は、データセンタ６０ａの内部で通信する２つの仮想マシンの間のホップ数がなるべく小さくなるように配置を決定することにより、データセンタ６０ａ内の回線を効率的に利用しようとする。
【００４４】
まず、配置決定部２２は、なるべく同一のスイッチＳＷに接続されたサーバの間で内部宛トラフィックが送受信されるように、仮想マシンを配置しようとする。配置決定部２２は、輻輳が発生した中継装置を介して通信している仮想マシンの中から、内部宛トラフィックの大きい仮想マシンを特定する。さらに、特定した仮想マシンをデータの送信先の仮想マシンと同一のスイッチＳＷに接続されたサーバＳＶに移動できるかを確認する。なお、配置決定部２２は、サーバＳＶの接続関係を確認するために、適宜、トポロジーデータ１４を参照するものとする。
【００４５】
図１０、図１１に挙げた例では、ＶＭ＿Ｃ１がＶＭ＿Ｃ２宛のデータを送信している。そこで、配置決定部２２は、ＶＭ＿Ｃ１を移動させることを検討する。ＶＭ＿Ｃ１から送信されたデータの宛先であるＶＭ＿Ｃ２はサーバＳＶ５に配置されている。サーバＳＶ５はスイッチＳＷ３に接続されている。スイッチＳＷ３には、サーバＳＶ５の他にサーバＳＶ６が接続されているが、サーバＳＶ６には既にＶＭ＿Ｃ３が配置されている。このため、配置決定部２２は、ＶＭ＿Ｃ１をサーバＳＶ６に移動させることはできないと判断する。
【００４６】
（８）同一のスイッチに接続されたサーバ間で内部宛トラフィックが送受信されるように仮想マシンを配置できない場合、配置決定部２２は、同一の中継ルータＲＴに接続されたサーバ間で内部宛トラフィックが送受信されるように仮想マシンを配置しようとする。このときも、適宜、配置決定部２２はトポロジーデータ１４を参照する。
【００４７】
図１０、図１１に挙げた例では、ＶＭ＿Ｃ２は、スイッチＳＷ３を介して中継ルータＲＴ２に接続されている。中継ルータＲＴ２には、スイッチＳＷ３の他にスイッチＳＷ４が接続されており、スイッチＳＷ４にはサーバＳＶ７とＳＶ８が接続されている。ＳＶ８には既にＶＭ＿Ｂ２が配置されているが、サーバＳＶ７には仮想マシンは配置されていない。そこで、配置決定部２２は、ＶＭ＿Ｃ１をサーバＳＶ４からサーバＳＶ７に移動させる。図１１の太線は、サーバＳＶ４とサーバＳＶ７のトラフィックを示している。
【００４８】
（９）ＶＭ＿Ｃ１がサーバＳＶ４からサーバＳＶ７に移動したときの仮想マシンの配置の例を図１２に示す。図１３は、ＶＭ＿Ｃ１がサーバＳＶ４からサーバＳＶ７に移動した後で、トラフィックモニタ２５が取得したトラフィック情報の例を示す。
【００４９】
図１２および図１３に示すようにＶＭ＿Ｃ１がサーバＳＶ４からサーバＳＶ７に移動すると、ＶＭ＿Ｃ１から送信されるＶＭ＿Ｃ２宛てのトラフィックは、中継ルータＲＴ１を経由しなくなる。このため、中継ルータＲＴ１からゲートウェイＧＷに向かうトラフィックは８Ｇｂｐｓに減少し、中継ルータＲＴ１での輻輳状態は解消する。従って、手順（１）〜（９）で述べた処理により、図５に示す輻輳状態が解消される。
【００５０】
なお、以上の例では、仮想マシンの運用が開始されて図５のような配置になった後の配置の変更について説明したが、仮想マシンの運用が開始される前にも配置決定部２２は仮想マシンの配置を決定することができる。図１４は、仮想マシンの運用前に仮想マシンの配置が決定される場合に行われる処理の例を説明するフローチャートである。図１４に示す動作が開始される前に、配置決定部２２は、オペレータ等により入力されたトラフィック情報に基づいて、仮想マシンごとの外部宛トラフィックと内部宛トラフィックの量を特定しているものとする。また、ここでも、配置決定部２２は、ゲートウェイＧＷからのホップ数に基づいて、サーバＳＶをサーバ群１とサーバ群２に分けているものとする。サーバ群１のサーバはサーバ群２のサーバに比べて、ゲートウェイＧＷからのホップ数が小さいものとする。
【００５１】
図１４の処理では、仮想マシンごとに、その仮想マシンのトラフィックの総量に対しての外部宛トラフィックの割合が大きいかが判断され、判断結果に応じて処理が進められる。ここで、外部宛トラフィックの割合が大きいかの判断は、同一のデータセンタ６０に配置される仮想マシン同士での比較により相対的に決定される。従って、同一のデータセンタ６０に配置される仮想マシンの外部宛トラフィックの割合に応じて、適宜、閾値が決定され、閾値に応じて個々の仮想マシンの外部宛トラフィックの割合が高いかが決定される。例えば、閾値が７０％であれば、外部宛トラフィックがトラフィックの総量の６５％である仮想マシンでは、外部宛トラフィックの割合が小さいと判断される。外部宛トラフィックの割合が大きいと判断されなかった仮想マシンは、内部宛トラフィックの割合が大きい仮想マシンとして扱われるものとする。
【００５２】
配置決定部２２は、外部宛トラフィックの割合が大きい仮想マシン（ＶＭ）をサーバ群１に配置する（ステップＳ１）。このとき、配置決定部２２は、外部宛トラフィックが大きい仮想マシンを優先的にサーバ群１のサーバに配置するものとする。配置決定部２２は、サーバ群１のサーバのリソースが不足しているかを確認する（ステップＳ２）。サーバ群１のサーバのリソースが不足していない場合、まだ配置が決定されていない仮想マシンのうちで外部宛トラフィックの割合が大きい仮想マシンがあるかを確認する（ステップＳ２でＮｏ、ステップＳ３）。配置が決定されていない仮想マシンに外部宛トラフィックの割合が大きい仮想マシンが含まれている場合、配置決定部２２はステップＳ１の処理に戻る（ステップＳ３でＹｅｓ）。
【００５３】
サーバ群１のサーバのリソースが不足している場合、配置決定部２２は、まだ配置が決まっていない仮想マシンのうちで外部宛トラフィックの割合が大きい仮想マシンを、サーバ群２のサーバに配置する（ステップＳ２でＹｅｓ、ステップＳ４）。外部宛トラフィックの割合が大きい仮想マシンの配置が終わったら、配置決定部２２は、内部宛トラフィックの割合が大きい仮想マシンをサーバ群２に配置する（ステップＳ５）。また、ステップＳ３において、外部宛トラフィックのある仮想マシンの配置が終わったと判定された場合も、ステップＳ５の処理が行われる。内部宛トラフィックの割合が多い仮想マシンの配置が終了すると、トラフィックモニタ２５により、トラフィック情報の監視が開始される（ステップＳ６）。
【００５４】
図１５Ａと図１５Ｂは、輻輳が発生したときの処理の例を説明するフローチャートである。輻輳検出部２１は、トポロジーデータ１４と、トラフィックモニタ２５から取得したトラフィック情報を用いて、輻輳の発生を検出する（ステップＳ１１）。輻輳が発生するまでステップＳ１１の処理が繰り返される。輻輳検出部２１が輻輳の発生を検出すると、輻輳検出部２１は輻輳が発生している箇所を配置決定部２２に通知する。配置決定部２２は、輻輳検出部２１から通知された情報とトポロジーデータ１４に基づいて、輻輳の原因となっているトラフィックの送信元の仮想マシンを特定する（ステップＳ１２）。次に、配置決定部２２は、輻輳の原因となっている仮想マシンが配置されているサーバよりもゲートウェイＧＷまでのホップ数の小さいサーバのリソースが余っているかを確認する（ステップＳ１３）。ゲートウェイＧＷまでのホップ数の小さいサーバのリソースが余っている場合、配置決定部２２は、外部宛トラフィックのある仮想マシンが輻輳の原因に含まれているかを確認する（ステップＳ１３でＹｅｓ、ステップＳ１４）。外部宛トラフィックのある仮想マシンが輻輳の原因に含まれている場合、配置決定部２２は、輻輳の原因であって外部宛トラフィックが最大の仮想マシンを、ゲートウェイＧＷまでのホップ数の小さいサーバに移動する（ステップＳ１４でＹｅｓ、ステップＳ１５）。
【００５５】
一方、外部宛トラフィックのある仮想マシンが輻輳の原因に含まれていない場合、配置決定部２２は、データセンタ内の通信を効率化する（ステップＳ１４でＮｏ）。配置決定部２２は、輻輳の原因となっている仮想マシンを、通信先の仮想マシンが配置されているサーバと同じスイッチＳＷに接続されているサーバに配置できるかを判定する（ステップＳ１８）。ステップＳ１８で配置が可能であると判定すると、配置決定部２２は、輻輳の原因となっている仮想マシンを、通信先の仮想マシンが配置されているサーバと同じスイッチＳＷに接続されているサーバに配置する（ステップＳ１９）。ステップＳ１８の判定結果がＮｏである場合、配置決定部２２は、輻輳の原因となっている仮想マシンを、通信先の仮想マシンが配置されているサーバと同じ中継ルータＲＴに接続されているサーバに配置できるかを判定する（ステップＳ２０）。ステップＳ２０で配置が可能であると判定すると、配置決定部２２は、輻輳の原因となっている仮想マシンを、通信先の仮想マシンが配置されているサーバと同じ中継ルータＲＴに接続されているサーバに配置する（ステップＳ２１）。ステップＳ１９もしくはステップＳ２１の処理が行われた後、ステップＳ１１以降の処理が繰り返される。
【００５６】
次に、ステップＳ１３において、輻輳の原因となっている仮想マシンが配置されているサーバよりもゲートウェイＧＷまでのホップ数の小さいサーバのリソースが余っていないと判定された場合の処理（ステップＳ１３でＮｏ）について述べる。この場合、配置決定部２２は、輻輳の原因となっている仮想マシンでの外部宛トラフィックの大きさを、ゲートウェイＧＷまでのホップ数がより小さいサーバに配置されている仮想マシンの外部宛トラフィックの大きさと比較する（ステップＳ１６）。輻輳の原因となっている仮想マシンでの外部宛トラフィックのほうが大きい場合、配置決定部２２は外部宛トラフィックが大きい方の仮想マシンを、ゲートウェイＧＷからのホップ数が小さいサーバＳＶに配置する（ステップＳ１６でＹｅｓ、ステップＳ１７）。このとき、ゲートウェイＧＷからのホップ数が小さいサーバＳＶに配置されていた仮想サーバは、リソースが余っている他のサーバに移動される。一方、輻輳の原因となっている仮想マシンでの外部宛トラフィックのほうが小さい場合（ステップＳ１６でＮｏ）、ステップＳ１８〜Ｓ２１を参照しながら説明したように、データセンタ６０の内部の通信を効率化するための処理が行われる。
【００５７】
以上説明したように、本実施形態では、データセンタ６０の外部宛てのトラフィックが多い仮想マシンほど、ゲートウェイＧＷからのホップ数の小さいサーバに配置される。このため、データセンタ６０での外部宛のトラフィックの経路を短くすることができ、データセンタ６０の内部の回線を効率的に使用することができる。
【００５８】
さらに、配置決定部２２は、互いにデータを送受信する仮想マシンの間のホップ数がなるべく小さくなるように、仮想マシンの配置を決定する。まず、配置決定部２２は、互いにデータを送受信する仮想マシンをなるべく同一のスイッチＳＷに接続されたサーバに配置しようとする。互いにデータを送受信する仮想マシンを同一のスイッチＳＷに接続されたサーバに配置できない場合、配置決定部２２は、互いにデータを送受信する仮想マシンをなるべく同一の中継ルータＲＴに接続されたサーバに配置する。これらの処理により、データセンタ６０の内部での通信も効率化される。
【００５９】
本実施形態では、通信の効率化により、輻輳が回避されるので、輻輳による通信品質の劣化も回避される。なお、以上の例では、理解を助けるために、１台のサーバに１台の仮想マシンが配置される場合を例として説明したが、１台のサーバに配置される仮想マシンの数は任意である。従って、互いにデータを送受信する仮想マシンが同一のサーバに配置されることもある。
【００６０】
＜第２の実施形態＞
第２の実施形態では、配置される仮想マシンの総数が変動する場合について、制御装置１０の動作を詳しく説明する。
【００６１】
例えば、図１２に示すように仮想マシンが配置されたことにより、輻輳が解消された後で、テナントＡで行われる処理の量が減少したとする。テナントＡでは、処理の減少に伴い、ＶＭ＿Ａ１とＶＭ＿Ａ２を停止させたとする。ＶＭ＿Ａ１とＶＭ＿Ａ２が停止されたときの仮想マシンの配置と各回線でのトラフィックの例を図１６に示す。図１６では、中継ルータＲＴ１に接続されているサーバ（ＳＶ１〜ＳＶ４）に仮想マシンが配置されていない。その他のサーバＳＶ５〜ＳＶ１０の配置とそれらのサーバに配置された仮想マシンによって発生するトラフィックについては、図１２と同様である。
【００６２】
その後、テナントＤがデータセンタ６０ａでの処理を開始したとする。テナントＤは、ＶＭ＿Ｄ１とＶＭ＿Ｄ２を運用するものとする。ここで、ＶＭ＿Ｄ１はサーバＳＶ１に配置され、ＶＭ＿Ｄ２はサーバＳＶ２に配置されたものとする。
【００６３】
次に、以下のようなトラフィックが発生した場合の処理を説明する。このときの仮想マシンの配置とトラフィックを図１７に示す。
ＶＭ＿Ａ３からデータセンタＢ宛てのトラフィック      ：４Ｇｂｐｓ
ＶＭ＿Ｂ１からオフィスＡ宛てのトラフィック          ：５Ｇｂｐｓ
ＶＭ＿Ｂ２からオフィスＡ宛てのトラフィック          ：２Ｇｂｐｓ
ＶＭ＿Ｂ１とＶＭ＿Ｂ２の間の双方向通信のトラフィック：１Ｇｂｐｓ
ＶＭ＿Ｃ１とＶＭ＿Ｃ２の間の双方向通信のトラフィック：３Ｇｂｐｓ
ＶＭ＿Ｃ２とＶＭ＿Ｃ３の間の双方向通信のトラフィック：３Ｇｂｐｓ
ＶＭ＿Ｄ１からデータセンタＢ宛てのトラフィック      ：５Ｇｂｐｓ
ＶＭ＿Ｄ２からデータセンタＢ宛てのトラフィック      ：５Ｇｂｐｓ
【００６４】
（１１）図１７に示すように仮想マシンが配置された状態で上記のトラフィックが発生すると、トラフィックモニタ２５は、例えば、図１８に示すようなトラフィック情報を取得する。輻輳検出部２１は、図６に示すトポロジーデータ１４と、図１８に示すトラフィック情報を用いて、各回線で求められるトラフィックを計算する。さらに、計算結果を用いて、輻輳の発生を検出する。トラフィックの計算や輻輳の検出方法は、第１の実施形態と同様である。図１７の各回線の隣に、その回線を流れるトラフィックの計算値を示す。
【００６５】
図１７および図１８の例では、ゲートウェイと中継ルータＲＴ１の間の回線、および、スイッチＳＷ１と中継ルータＲＴ１の間の回線のトラフィックは１０Ｇｂｐｓであるが、帯域幅は１０Ｇｂｐｓ未満であるため、輻輳が発生していると判断される。輻輳検出部２１は、中継ルータＲＴ１とスイッチＳＷ１で輻輳が発生していることを配置決定部２２に通知する。
【００６６】
（１２）配置決定部２２は、トポロジーデータ１４を用いて、ホップ数ごとに第１の実施形態と同様にサーバを分類する。以下、サーバＳＶ９とＳＶ１０を「サーバ群１」、サーバＳＶ１〜ＳＶ８を「サーバ群２」に分類して記憶しているものとする。
【００６７】
配置決定部２２は、中継ルータＲＴ１とスイッチＳＷ１で輻輳が起こっていることが通知されると、トポロジーデータ１４（図６）を参照し、配置を変更する候補となる仮想マシンを特定する。ここでは、ＶＭ＿Ｄ１とＶＭ＿Ｄ２が配置を変更する候補として選択される。
【００６８】
（１３）配置決定部２２は、トポロジーデータ１４を用いて、仮想マシンを配置できるサーバＳＶを特定する。図１７、図１８の例では、サーバ群１のサーバＳＶには新たに仮想マシンを配置することはできない。配置決定部２２は、サーバＳＶ３とＳＶ４へは仮想マシンを配置することができることを認識する。しかし、サーバＳＶ３とＳＶ４はいずれも中継ルータＲＴ１に接続されているため、ＶＭ＿Ｄ１かＶＭ＿Ｄ２のいずれかをサーバＳＶ３もしくはＳＶ４に移動したとしても、中継ルータＲＴ１の輻輳は解消されない。
【００６９】
（１４）次に、配置決定部２２は、輻輳の原因となっている仮想マシンでの外部宛トラフィックの大きさを、ゲートウェイＧＷまでのホップ数がより小さいサーバに配置されている仮想マシンの外部宛トラフィックの大きさと比較する。ＶＭ＿Ｄ１とＶＭ＿Ｄ２のいずれも、ゲートウェイＧＷからのホップ数が３のサーバＳＶに配置されている。ゲートウェイＧＷからのホップ数が１であるサーバＳＶ９とＳＶ１０には、ＶＭ＿Ａ３とＶＭ＿Ｂ１が配置されている。ここで、ＶＭ＿Ａ３での外部宛てのトラフィックは４Ｇｂｐｓであり、ＶＭ＿Ｄ１とＶＭ＿Ｄ２のいずれの外部宛てトラフィックよりも小さい。ＶＭ＿Ａ３、ＶＭ＿Ｄ１、および、ＶＭ＿Ｄ２のトラフィックは、図１８の太線で示すとおりである。
【００７０】
配置決定部２２は、ＶＭ＿Ｄ１とＶＭ＿Ｄ２のいずれかを、ＶＭ＿Ａ３の代わりにサーバＳＶ９に配置することを決定する。ここで、配置決定部２２は、ＶＭ＿Ｄ２をサーバＳＶ９に配置することを決定したとする。
【００７１】
（１５）配置決定部２２は、ＶＭ＿Ｄ２に対して、サーバＳＶ２からサーバＳＶ９へのライブマイグレーションを要求する。また、ＶＭ＿Ａ３に対して、サーバＳＶ９からサーバＳＶ２へのライブマイグレーションを要求する。ライブマイグレーションの要求に際して制御装置１０が行う処理は、第１の実施形態と同様である。
【００７２】
（１６）ＶＭ＿Ｄ２がサーバＳＶ２からサーバＳＶ９に移動し、ＶＭ＿Ａ３もサーバＳＶ９からサーバＳＶ２に移動したときの仮想マシンの配置の例を図１９に示す。図２０は、ＶＭ＿Ｄ２とＶＭ＿Ａ３が移動した後で、トラフィックモニタ２５が取得したトラフィック情報の例を示す。
【００７３】
図１９および図２０に示すようにＶＭ＿Ａ３とＶＭ＿Ｄ２が移動すると、ＶＭ＿Ｄ２から送信されるデータセンタＢ宛てのトラフィックは、中継ルータＲＴ１を経由しなくなる。代わりにＶＭ＿Ａ３から送信されるデータセンタＢ宛てのトラフィックが中継ルータＲＴ１を経由するが、ＶＭ＿Ａ３からのデータセンタＢ宛てのトラフィックは、ＶＭ＿Ｄ２からのデータセンタＢ宛てのトラフィックよりも小さい。このため、中継ルータＲＴ１からゲートウェイＧＷに向かうトラフィックは９Ｇｂｐｓに減少し、中継ルータＲＴ１での輻輳状態は解消する。従って、手順（１１）〜（１６）で述べた処理により、図１７に示す輻輳状態が解消される。
【００７４】
以上説明したように、仮想マシンの数が変動する場合でも、データセンタ６０の外部宛てのトラフィックが多い仮想マシンを優先的にゲートウェイＧＷからのホップ数の小さいサーバに配置することにより輻輳が解消される。また、本実施形態では具体例を挙げていないが、仮想マシンの数が変動しても、図１５ＢのステップＳ１８〜Ｓ２１と同様の処理によりデータセンタ６０内のトラフィックを効率化することもできる。
【００７５】
＜第３の実施形態＞
第３の実施形態では、送受信されるデータの優先度を用いて仮想マシンの配置を決定する場合について説明する。第３の実施形態では、トラフィックモニタ２５は、仮想マシンから送受信されるデータの優先度を確認するものとする。トラフィックモニタ２５は、例えば、通信が開始されるときに、送受信されるデータの優先度を確認することができるものとする。トラフィックモニタ２５は、例えば、Internet Protocol（ＩＰ）ヘッダに含まれているサービスタイプ（Type Of Service、ＴＯＳ）フィールドもしくはTraffic Classフィールドの値を用いて優先度を識別することができる。
【００７６】
図２１は、トラフィックの分類と配置ポリシーの例を説明するテーブルである。図２１の例では、優先度が高いトラフィックと、優先度が低いトラフィックの２種類に分類されるものとする。ここでは、優先度が低いトラフィックは、ベストエフォート型の通信により発生するトラフィックであり、優先度が高いトラフィックは、ギャランティ型の通信により発生するトラフィックであるものとする。仮想マシンは、トラフィックの優先度とトラフィックがデータセンタ６０の外部宛と内部宛のいずれの割合が高いかに応じて、図２１に示す４通りに分類される。
【００７７】
配置決定部２２は、
１）優先度が高い外部宛トラフィックの割合が高い仮想マシン
２）優先度が高い内部宛トラフィックの割合が高い仮想マシン
３）優先度が低い外部宛トラフィックの割合が高い仮想マシン
４）優先度が低い内部宛トラフィックの割合が高い仮想マシン
の順に配置を決定するものとする。優先度が高い外部宛トラフィックの割合が高い仮想マシンは、なるべくゲートウェイＧＷからのホップ数が小さいサーバＳＶに配置される。優先度が高い内部宛トラフィックの割合が高い仮想マシンは、ゲートウェイＧＷからのホップ数が大きいサーバＳＶに配置される。このとき、配置決定部２２は、データの送受信を行う仮想マシン同士がなるべく同一のスイッチＳＷで接続されているサーバＳＶ同士に配置されるようにする。同一のスイッチＳＷで接続されたサーバへの配置ができない場合、配置決定部２２は、データの送受信を行う仮想マシン同士がなるべく同一の中継ルータＲＴで接続されているサーバＳＶ同士に配置されるようにする。
【００７８】
優先度が低い外部宛トラフィックの割合が高い仮想マシンは、優先度の高いトラフィックを送受信する仮想マシンの配置が終了した後に配置される。配置決定部２２は、サーバ群の空きリソースをモニタした結果に基づいて、なるべくゲートウェイＧＷからのホップ数が小さいサーバに、優先度が低い外部宛トラフィックの割合が高い仮想マシンを配置する。さらに、配置決定部２２は、データの送受信を行う仮想マシン同士がなるべく同一のスイッチＳＷもしくは中継ルータＲＴに接続されているサーバに配置されるように、優先度が低い内部宛トラフィックの割合が高い仮想マシンを配置する。
【００７９】
図２２は、仮想マシンの配置が決定される場合に行われる処理の例を説明するフローチャートである。配置決定部２２は、優先度が高い外部宛トラフィックの割合が大きい仮想マシン（ＶＭ）をサーバ群１に配置する（ステップＳ３１）。このとき、配置決定部２２は、外部宛トラフィックの大きい仮想マシンを優先的にサーバ群１のサーバに配置するものとする。サーバ群１のサーバのリソースが不足していない場合、配置決定部２２は、優先度が高い外部宛トラフィックがある仮想マシンの中に、まだ配置が決定されていない仮想マシンが残っているかを確認する（ステップＳ３２でＮｏ、ステップＳ３３）。配置が決定されていない仮想マシンであって、優先度の高い外部宛トラフィックの割合が高い仮想マシンが残っている場合、配置決定部２２はステップＳ３１の処理に戻る（ステップＳ３３でＹｅｓ）。
【００８０】
サーバ群１のサーバのリソースが不足している場合、配置決定部２２は、まだ配置が決まっていない仮想マシンのうちで、優先度が高い外部宛トラフィックの割合が多い仮想マシンを、サーバ群２のサーバに配置する（ステップＳ３２でＮｏ、ステップＳ３４）。優先度が高い外部宛トラフィックの割合が多い仮想マシンの配置が終わったら、配置決定部２２は、優先度が高い内部宛トラフィックの割合が多い仮想マシンをサーバ群２に配置する（ステップＳ３５）。また、ステップＳ３３において、優先度の高い外部宛トラフィックのある仮想マシンの配置が終わったと判定された場合も、ステップＳ３５の処理が行われる。
【００８１】
次に、配置決定部２２は、サーバ群１のリソースが余っていれば、優先度が低い外部宛トラフィックの割合が大きい仮想マシンをサーバ群１に配置する。サーバ群１のリソースが余っておらず、サーバ群２のリソースが余っている場合、配置決定部２２は、優先度が低い外部宛トラフィックの割合が大きい仮想マシンをサーバ群２に配置する（ステップＳ３６）。なお、サーバ群１、２のいずれのリソースも余っていない場合、配置決定部２２は、優先度が低い外部宛トラフィックの割合が大きい仮想マシンを配置しない。
【００８２】
その後、配置決定部２２は、サーバ群２のリソースが余っていれば、優先度が低い内部宛トラフィックの割合が大きい仮想マシンをサーバ群２に配置する。サーバ群２のリソースが余っておらず、サーバ群１のリソースが余っている場合、配置決定部２２は、優先度が低い内部宛トラフィックの割合が大きい仮想マシンをサーバ群１に配置する（ステップＳ３７）。なお、サーバ群１、２のいずれのリソースも余っていない場合、配置決定部２２は、優先度が低い内部宛トラフィックの割合が大きい仮想マシンを配置しない。優先度の低いトラフィックの割合が多い仮想マシンの配置が終了すると、トラフィックモニタ２５により、トラフィック情報の監視が開始される（ステップＳ３８）。
【００８３】
仮想マシンの運用が開始された後で輻輳が発生したときの仮想マシンの配置の変更方法は、第１もしくは第２の実施形態と同様である。本実施形態では、優先度が低いデータはベストエフォート型のデータであるため、優先度の低いトラフィックが送信できるだけの帯域が確保されない場合であっても、制御装置１０は仮想マシンの配置を変更しない。優先度の高いデータの通信で輻輳が発生した場合、制御装置１０は、第１もしくは第２の実施形態と同様の方法により、仮想マシンの配置を変更する。なお、仮想マシンの配置を変更する際には、配置決定部２２は優先度の低いトラフィックの割合が大きい仮想マシンが配置されていないときと同様に、優先度の高いトラフィックの割合が大きい仮想マシンの配置を決定するものとする。優先度の低いトラフィックの割合が大きい仮想マシンは、優先度の高いトラフィックの割合が大きい仮想マシンの配置が決定されたときに、適宜、図２２のステップＳ３６、Ｓ３７と同様の方法により再配置される。
【００８４】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【００８５】
以上の説明では輻輳が発生したときに配置を変更する方法について説明したが、配置決定部２２は、遅延情報を用いて、配置の変更を開始することもできる。例えば、トラフィックモニタ２５は、タイムスタンプを含む計測パケットを用いて遅延時間を計測し、遅延情報をトラフィック情報と合わせて制御装置１０に通知することができる。制御装置１０は、遅延時間が所定の閾値を超えると、輻輳が発生したときと同様に配置の変更を開始する。
【００８６】
図面を用いて説明した例では、サーバ群１は、ゲートウェイからのホップ数が１であり、ゲートウェイに直接接続されているサーバＳＶであったが、データセンタ６０中のネットワークトポロジーは、実装に応じて任意に変更されることがある。例えば、ゲートウェイに最も近いサーバＳＶからゲートウェイまでのホップ数は、２以上の任意の数とすることもできる。さらに、ゲートウェイからサーバＳＶまでのホップ数の種類も２種類以上の任意の数とすることができる。例えば、ゲートウェイからのホップ数が２であるサーバ群、ゲートウェイからのホップ数が５であるサーバ群、ゲートウェイからのホップ数が６であるサーバ群の３つのサーバ群において、制御装置１０が仮想マシンの配置を決定することもできる。この場合も、外部宛てのトラフィックが多い仮想マシンはなるべくゲートウェイからのホップ数が小さいサーバに配置される。また、データセンタ６０内で互いに通信する仮想マシンは、なるべく同一のスイッチＳＷに接続されたサーバに配置される。
【００８７】
仮想マシンのトラフィックの総量に対しての外部宛トラフィックの割合が大きいかの判断に用いる閾値を、予め決められた固定の値とすることもできる。この場合、例えば、閾値が５０％であれば、外部宛トラフィックの割合が６０％の仮想マシンは、外部宛トラフィックの割合が大きいと判断される。
【００８８】
上記の説明では、回線に流れるトラフィックの計算値が、回線の帯域を越えたときに輻輳が発生していると判定しているが、輻輳が発生したかを閾値により判定しても良い。この場合、閾値は、例えば、回線の帯域の９０％など、回線の帯域よりも小さな値に設定される。このように閾値により輻輳を検出することにより、通信品質が劣化する前に、仮想マシンの配置を変更することにより、通信を効率化することができる。
【００８９】
さらに、トラフィックモニタ２５と制御装置１０は異なる装置でなくても良く、例えば、制御装置１０はトラフィックモニタ２５を内蔵することもできる。この場合、制御装置１０のトラフィック情報取得部１５は、内蔵しているトラフィックモニタ２５からトラフィック情報を取得する。
【符号の説明】
【００９０】
５  管理ネットワーク
１０  制御装置
１１、３１  受信部
１２、３２  送信部
１３  記憶部
１４  トポロジーデータ
１５  トラフィック情報取得部
２０  配置制御部
２１  輻輳検出部
２２  配置決定部
２５  トラフィックモニタ
３０  サーバ
３３  仮想スイッチ
３４  仮想マシン
４１  ＣＰＵ
４２  メモリ
４３  入力装置
４４  出力装置
４５  バス
４６  外部記憶装置
４７  媒体駆動装置
４８  可搬記憶媒体
４９  ネットワーク接続装置
５０  ネットワーク
６０  データセンタ
６５  オフィス
７０  インターネット
【図２】
0005790312.tif 000002
【図３】
0005790312.tif 000003
【図４】
0005790312.tif 000004
【図７】
0005790312.tif 000005
【図９】
0005790312.tif 000006
【図１１】
0005790312.tif 000007
【図１３】
0005790312.tif 000008
【図１４】
0005790312.tif 000009
【図１５Ａ】
0005790312.tif 000010
【図１５Ｂ】
0005790312.tif 000011
【図１８】
0005790312.tif 000012
【図２０】
0005790312.tif 000013
【図２１】
0005790312.tif 000014
【図２２】
0005790312.tif 000015
【図１】
0005790312.tif 000016
【図５】
0005790312.tif 000017
【図６】
0005790312.tif 000018
【図８】
0005790312.tif 000019
【図１０】
0005790312.tif 000020
【図１２】
0005790312.tif 000021
【図１６】
0005790312.tif 000022
【図１７】
0005790312.tif 000023
【図１９】
0005790312.tif 000024