(57)【特許請求の範囲】
【請求項１】
第１の物理コンピュータにおいて実行されている１又は複数の仮想マシンが属するグループについて、第２の物理コンピュータに送信するデータの送信レートを測定する第１の処理と、
前記第１の処理で測定された前記送信レートを含む要求パケットを、前記第２の物理コンピュータに送信する第２の処理と、
前記第２の物理コンピュータから、前記グループについての比率と、輻輳発生の判断に用いられる第１のデータとを含む応答パケットを受信する第３の処理と、
前記第１のデータに基づき輻輳発生が検出された場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の物理コンピュータ宛に出力するデータの出力レートを、前記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げる第４の処理と、
を、前記第１の物理コンピュータに実行させるプログラム。
【請求項２】
第３の物理コンピュータから、当該第３の物理コンピュータにおいて実行されている仮想マシンが属する第２のグループについて測定された第２の送信レートを含む第２の要求パケットを受信する第５の処理と、
前記第２の要求パケットから、前記第１の物理コンピュータと前記第３の物理コンピュータとの間の輻輳発生の判断に用いられる第２のデータを前記第２のグループについて生成する第６の処理と、
他の物理コンピュータから受信した要求パケットに含まれる、前記第２のグループについての第３の送信レートの総和と前記第２の送信レートとの和に対する前記第２の送信レートの比から決定される、前記第２のグループについての比率を算出する第７の処理と、
前記第２のグループについての比率と前記第２のデータとを含む応答パケットを生成して、前記第３の物理コンピュータに送信する第８の処理と、
をさらに、前記第１の物理コンピュータに実行させる請求項１記載のプログラム。
【請求項３】
前記比率が、他の物理コンピュータから受信した要求パケットに含まれる、前記グループについての送信レートの総和と前記第１の物理コンピュータから受信した前記要求パケットに含まれる前記送信レートとの和に対する当該送信レートの比率である
請求項１又は２記載のプログラム。
【請求項４】
前記第１のデータが、片方向遅延時間であり、
前記片方向遅延時間が閾値を超えた場合に、輻輳発生が検出されたと判断する
請求項１乃至３のいずれか１つ記載のプログラム。
【請求項５】
前記第１のデータに基づき輻輳発生が検出されない場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の物理コンピュータ宛に出力するデータの出力レートを上げる第９の処理
をさらに、前記第１の物理コンピュータに実行させる請求項１乃至４のいずれか１つ記載のプログラム。
【請求項６】
前記第６の処理が、
前記第３の物理コンピュータから前記第１の物理コンピュータまでの間に輻輳が発生しないことが確認できた後に前記第２の要求パケットを受信した時刻から前記第２の要求パケットの送信間隔後を次の第２の要求パケットの到着予測時刻に設定し、前記次の第２の要求パケットの実際の受信時刻と前記到着予測時刻との差を算出する処理
を含む請求項２記載のプログラム。
【請求項７】
第１の物理コンピュータにおいて、第２の物理コンピュータから、当該第２の物理コンピュータにおいて実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する第１の処理と、
前記要求パケットから、前記第２の物理コンピュータと前記第１の物理コンピュータとの間の輻輳発生の判断に用いられるデータを、前記グループについて生成する第２の処理と、
他の物理コンピュータから受信した要求パケットに含まれる、前記グループについての第２の送信レートの総和と前記送信レートとの和に対する前記送信レートの比を算出することで、前記グループについての比率を算出する第３の処理と、
前記グループについての比率と前記データとを含む応答パケットを生成して、前記第２の物理コンピュータに送信する第４の処理と、
を、前記第１の物理コンピュータに実行させるプログラム。
【請求項８】
第１の物理コンピュータにおいて実行されている１又は複数の仮想マシンが属するグループについて、第２の物理コンピュータに送信するデータの送信レートを測定する第１の処理と、
前記第１の処理で測定された前記送信レートを含む要求パケットを、前記第２の物理コンピュータに送信する第２の処理と、
前記第２の物理コンピュータから、前記グループについての比率と、輻輳発生の判断に用いられる第１のデータとを含む応答パケットを受信する第３の処理と、
前記第１のデータに基づき輻輳発生が検出された場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の物理コンピュータ宛に出力するデータの出力レートを、前記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げる第４の処理と、
を、前記第１の物理コンピュータが実行する制御方法。
【請求項９】
第１の物理コンピュータにおいて、第２の物理コンピュータから、当該第２の物理コンピュータにおいて実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する第１の処理と、
前記要求パケットから、前記第２の物理コンピュータと前記第１の物理コンピュータとの間の輻輳発生の判断に用いられるデータを、前記グループについて生成する第２の処理と、
他の物理コンピュータから受信した要求パケットに含まれる、前記グループについての第２の送信レートの総和と前記送信レートとの和に対する前記送信レートの比を算出することで、前記グループについての比率を算出する第３の処理と、
前記グループについての比率と前記データとを含む応答パケットを生成して、前記第２の物理コンピュータに送信する第４の処理と、
を、前記第１の物理コンピュータが実行する制御方法。
【請求項１０】
１又は複数の仮想マシンを実行している情報処理装置であって、
前記１又は複数の仮想マシンが属するグループについて、第２の情報処理装置に送信するデータの送信レートを測定する測定部と、
前記測定部で測定された前記送信レートを含む要求パケットを、前記第２の情報処理装置に送信する送信部と、
前記第２の情報処理装置から、前記グループについての比率と、輻輳発生の判断に用いられるデータとを含む応答パケットを受信する受信部と、
前記データに基づき輻輳発生が検出された場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の情報処理装置宛に出力するデータの出力レートを、前記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げるように制御する変更部と、
を有する情報処理装置。
【請求項１１】
情報処理装置であって、
第２の情報処理装置から、当該第２の情報処理装置において実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する受信部と、
前記要求パケットから、前記第２の情報処理装置と前記情報処理装置との間の輻輳発生の判断に用いられるデータを、前記グループについて生成する生成部と、
他の情報処理装置から受信した要求パケットに含まれる、前記グループについての第２の送信レートの総和と前記送信レートとの和に対する前記送信レートの比を算出することで、前記グループについての比率を算出する算出部と、
前記グループについての比率と前記データとを含む応答パケットを生成して、前記第２の情報処理装置に送信する送信部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、送信レート制御のための技術に関する。
【背景技術】
【０００２】
ＩＣＴ（Information and Communication Technology）システム構築の新しい利用形態としてクラウドコンピューティングのＩａａＳ（Infrastructure as a Service）サービスが注目を集めている。ＩａａＳサービスは、ネットワーク上にあるコンピューティング資源を用いて仮想的なサーバ（以下、仮想マシン又はＶＭと示す）を構築し、それを利用者に対してサービスとして提供している。
【０００３】
このようなＩａａＳサービスを提供するクラウドコンピューティングインフラは、インフラ上に複数の企業や部門又は部署（これらを総じてテナントと記す。）の仮想マシンが稼動しており、テナント間のセキュリティ保護を目的として、ＶＬＡＮ（Virtual LAN）等の論理分割技術を用いてテナント毎に分離された仮想ネットワーク環境を構築している。
【０００４】
仮想ネットワークの構築により、セキュリティの観点においてはあるテナントのパケットが別のテナントに届いてしまうような情報漏洩問題は回避可能である。しかしながら、ネットワーク資源（すなわち帯域）の観点に着目すると問題が発生し得る。すなわち、物理ネットワークを共有している複数のテナントが存在する環境において、あるテナントが大量のデータ通信を行っていたときに、別のテナントがこの大量データ通信の影響を受けてほとんど通信できなくなるといった問題が生じ得る。この問題は、ネットワーク資源がテナント単位に確保されていないことに起因し、ネットワーク資源を奪い合っている状況を意味する。
【０００５】
ネットワーク資源をテナント単位に確保するためには、物理ネットワークスイッチにおける出力ポート上に複数のキューを備え、各テナントに対して独立したキューを割り当てる方法がある。具体的には、各キューからのパケット読み出しレートが常に一定レート（各テナントに確保された帯域、すなわち最低保証レート）以下にならないように制御する。さらに、他のキューに滞留しているパケットがなければ最低保証レート以上のレートで送信するように制御する。このような制御により、たとえあるテナントが大量データ通信を行っていたとしても、各キューからの送信レートは常に最低保証レート分は読み出すことが可能になる。そのため、各テナントはどのような状況であっても少なくとも最低保証レート分のデータ通信を行うことが可能となる。
【０００６】
しかし、現在の物理ネットワークスイッチの多くはハードウェア制約から出力ポートあたりのキュー数が４乃至１０程度と少なく、大規模データセンタ内の全テナント分のキューを配備することは困難である。なお、一部の製品には数万個のキューを備えた物理ネットワークスイッチが存在するが、装置単価が非常に高価なためこのようなスイッチを用いてネットワークを構築するとインフラ構築コストが増大する問題がある。
【０００７】
また、物理ネットワークのスイッチでは制御を行わず、エンドホストで制御を行う技術もある。この技術は、図１で示すようにエンドホスト間でＲＴＰ（Real Time Packet）を用いて通信を行う際に、エンドホスト間に定期的に、ＲＴＣＰ（Real Time Control Packet）のような制御パケットを受け渡し、エンドホスト間の遅延、スループット、廃棄数などを測定し、その測定結果に基づいて送信レートを増減させるものである。しかしながら、エンドホスト間での帯域制御が可能なだけで、複数のテナントが１又は複数の物理マシンで１又は複数の仮想マシンを実行しており、テナント内の仮想マシン間で通信を行う場合には対処できない。
【０００８】
具体的な例を用いてこの問題点を説明する。図２に示すように、テナントＡには仮想マシンＡ１、Ａ２及びＡ３が含まれ、テナントＢには仮想マシンＢ１及びＢ２が含まれ、テナントＣには仮想マシンＣ１及びＣ２が含まれ、それぞれ異なる物理マシン上に配備されていると仮定する。また、物理ネットワーク上の各リンク（例えばリンクレート１Ｇｂｐｓ）において、テナントＡには２００Ｍｂｐｓ、テナントＢ及びＣにはそれぞれ４００Ｍｂｐｓの帯域を最低保証レートとして確保するように、収容設計がなされているものと仮定する。
【０００９】
そして、図２の状態では、テナントＡに属する仮想マシンＡ１は仮想マシンＡ３に対して６００Ｍｂｐｓでデータを送信し、仮想マシンＡ２は仮想マシンＡ３に対して４００Ｍｂｐｓでデータを送信をしているものとする。
【００１０】
このような状態でもスイッチＡとスイッチＢとの間のリンクには、合計１Ｇｂｐｓのトラフィックが流入することになる。この場合、トラフィックの送信レートがリンクレート以下であるから、非輻輳状態である。
【００１１】
ここで、図３に示すように、テナントＢに属する仮想マシンＢ１が仮想マシンＢ２に対して４００Ｍｂｐｓでデータを送信し、テナントＣに属する仮想マシンＣ１が仮想マシンＣ２に対して４００Ｍｂｐｓでデータを送信し始めたとする。
【００１２】
そうすると、スイッチＡとスイッチＢとの間のリンクには、合計１．８Ｇｂｐｓのトラフィックが流入することになる。従って、例えば制御パケットのやりとりによって、遅延時間の増加、パケット廃棄数の増大、スループットの低下が検出できるので、輻輳発生も検出できる。
【００１３】
このように輻輳発生を検出すると、データの送信レートを下げることで輻輳の解消を図ることになるが、一方で各テナントの最低保証レートを確保することも求められている。仮想マシンＢ１から仮想マシンＢ２へのデータ送信レートは、テナントＢの最低保証レートの４００Ｍｂｐｓであるから、送信レートの引き下げは困難である。同様に、仮想マシンＣ１から仮想マシンＣ２へのデータ送信レートは、テナントＣの最低保証レートの４００Ｍｂｐｓであるから、送信レートの引き下げは困難である。
【００１４】
一方、仮想マシンＡ１から仮想マシンＡ３へのデータ送信レートは、テナントＡの最低保証レートを上回っており、仮想マシンＡ２から仮想マシンＡ３へのデータ送信レートも、テナントＡの最低保証レートを上回っているため、データ送信レートを下げることができる。しかしながら、図４に示すように、仮想マシンＡ１から仮想マシンＡ３へのデータ送信レートは、最低保証レートの２００Ｍｂｐｓ未満にできない。同様に、仮想マシンＡ２から仮想マシンＡ３へのデータ送信レートは、最低保証レートの２００Ｍｂｐｓ未満にできない。従って、スイッチＡとスイッチＢとの間のリンクには、合計で１．２Ｇｂｐｓのトラフィックが流入するため、輻輳が解消できない。これによって、テナントＢ及びＣのパケットも破棄されることになるため、テナントＢ及びＣについての最低保証レートを確保できない。
【００１５】
これは、この従来技術が輻輳回避のための技術であり、最低保証レートの確保を目的としておらず、２組以上のコンピュータ間の送信レートを纏めて制御するような仕組みを有していないことから生ずる。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１１−３５４４２号公報
【特許文献２】特開２００４−２５４２５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
本技術の目的は、一側面では、仮想マシンのグループ毎に最低保証レートより出力レートが低下しないようにするための技術を提供することである。
【課題を解決するための手段】
【００１８】
本技術の第１の態様に係る制御方法は、（Ａ）第１の物理コンピュータにおいて実行されている１又は複数の仮想マシンが属するグループについて、第２の物理コンピュータに送信するデータの送信レートを測定する第１のステップと、（Ｂ）第１のステップで測定された送信レートを含む要求パケットを、第２の物理コンピュータに送信する第２のステップと、（Ｃ）第２の物理コンピュータから、上記グループについての比率と、輻輳発生の判断に用いられる第１のデータとを含む応答パケットを受信する第３のステップと、（Ｄ）第１のデータに基づき輻輳発生が検出された場合には、上記グループに属する１又は複数の仮想マシンが第２の物理コンピュータ宛に出力するデータの出力レートを、上記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げる第４のステップとを含む。
【００１９】
本技術の第２の態様に係る制御方法は、（Ａ）第１の物理コンピュータにおいて、第２の物理コンピュータから、当該第２の物理コンピュータにおいて実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する第１のステップと、（Ｂ）要求パケットから、第２の物理コンピュータと第１の物理コンピュータとの間の輻輳発生の判断に用いられるデータを、上記グループについて生成する第２のステップと、（Ｃ）他の物理コンピュータから受信した要求パケットに含まれる、上記グループについての第３の送信レートの総和と送信レートとの和に対する送信レートの比を算出することで、上記グループについての比率を算出する第３のステップと、（Ｄ）上記グループについての比率と輻輳発生を判断するためのデータとを含む応答パケットを生成して、第２の物理コンピュータに送信する第４のステップとを含む。
【発明の効果】
【００２０】
仮想マシンのグループ毎に最低保証レートより出力レートが低下しないようになる。
【図面の簡単な説明】
【００２１】
【図１】図１は、従来技術を説明するための図である。
【図２】図２は、従来技術の問題を説明するための図である。
【図３】図３は、従来技術の問題を説明するための図である。
【図４】図４は、従来技術の問題を説明するための図である。
【図５】図５は、第１の実施の形態のシステム概要図である。
【図６】図６は、物理マシンの、送信に関係する構成を示す機能ブロック図である。
【図７】図７は、物理マシンの、受信に関係する構成を示す機能ブロック図である。
【図８】図８は、第１の実施の形態における処理フローを示す図である。
【図９】図９は、第２の実施の形態に係るシステム概要図である。
【図１０】図１０は、第２の実施の形態に係る通信状態を説明するための図である。
【図１１】図１１は、物理サーバ（送信側）の構成を示す図である。
【図１２】図１２は、分配部が保持するデータの一例を示す図である。
【図１３】図１３は、要求パケットのパケットフォーマットの一例を示す図である。
【図１４】図１４は、応答パケットのパケットフォーマットの一例を示す図である。
【図１５】図１５は、送信側の制御部のデータ格納部に格納されるデータの一例を示す図である。
【図１６】図１６は、物理サーバ（受信側）の構成を示す図である。
【図１７】図１７は、受信側の制御部のデータ格納部に格納されるデータの一例を示す図である。
【図１８】図１８は、第２の実施の形態における処理フローを示す図である。
【図１９】図１９は、第２の実施の形態に係る通信状態を説明するための図である。
【図２０】図２０は、読み出しレートの時間変化例を示す図である。
【図２１】図２１は、第２の実施の形態に係る通信状態を説明するための図である。
【図２２】図２２は、読み出しレートの時間変化例を示す図である。
【図２３】図２３は、読み出しレートの時間変化例を示す図である。
【図２４】図２４は、第３の実施の形態を説明するための図である。
【図２５】図２５は、第３の実施の形態を説明するための図である。
【図２６】図２６は、第３の実施の形態に係る処理フローを示す図である。
【図２７】図２７は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００２２】
［実施の形態１］
本技術の第１の実施の形態においては、図５に示すように、ネットワーク１０００に、物理マシンＸ、物理マシンＹ及び物理マシンＺが接続されている状況を想定する。そして、物理マシンＸでは、グループＡについての仮想マシンＶＭａ１が実行されており、物理マシンＹでは、グループＡについての仮想マシンＶＭａ２が実行されており、物理マシンＺでは、グループＡについての仮想マシンＶＭａ３及びＶＭａ４が実行されているものとする。そして、仮想マシンＶＭａ１から仮想マシンＶＭａ３へデータ送信が行われており、仮想マシンＶＭａ２から仮想マシンＶＭａ４へデータ送信が行われているものとする。
【００２３】
本実施の形態における物理マシンＸ及びＹのデータ送信に関係する構成を、物理マシンＸにより説明する。図６に示すように、物理マシンＸは、グループＡのための論理構成部１１００と、制御部１０００とを有する。ここではグループＡの仮想マシンＶＭａ１のみが実行されているので、グループＡのための論理構成部１１００のみが示されているが、他のグループの仮想マシンが実行されるようになると、そのグループのための論理構成部が設けられる。
【００２４】
制御部１０００は、測定部１０１０と、変更部１０２０と、送信部１０３０と、受信部１０４０とを有する。測定部１０１０は、グループＡの仮想マシンが実行されている他の各物理マシンに対する送信レートを測定する。測定部１０１０は、グループが複数存在している場合には、グループ毎に測定する。送信部１０３０は、測定部１０１０から受け取ったデータから制御パケットである要求パケットを生成して他の物理マシンに送信する。受信部１０４０は、要求パケットに対する応答パケット（制御パケットの一種）を受信して、応答パケットのデータを変更部１０２０に出力する。変更部１０２０は、応答パケットに含まれるデータに従って、物理マシンＸから他の各物理マシンへの送信レートを変更させるための処理を実施する。変更部１０２０も、グループが複数存在している場合には、グループ毎に処理を行う。
【００２５】
グループＡのための論理構成部１１００は、仮想マシンＶＭａ１と、仮想マシンＶＭａ１と論理的に接続される仮想スイッチＳＷ１１２０と、仮想スイッチＳＷ１１２０と論理的に接続される通信部１１１０とを含む。仮想スイッチＳＷの数も１に限定されない。
【００２６】
通信部１１１０は、グループＡの仮想マシンが実行されている他の物理マシン毎のキュー１１１２と、分配部１１１１と、キュー１１１２からパケットを読み出して他の物理マシンに送信する出力処理部１１１３とを有する。分配部１１１１は、仮想スイッチＳＷ１１２０から受信したパケットの宛先アドレスから宛先物理マシンのためのキューを特定して、そのキューにパケットを投入する。また、分配部１１１１は、例えばキュー１１１２に投入した受信パケットのデータ量を、宛先物理マシン毎に、測定部１０１０に通知する。測定部１０１０は、分配部１１１１から通知されたデータ量を用いて、各グループについて、物理マシン毎に単位時間当たりの送信レートを算出する。出力処理部１１１３は、各キュー１１１２からパケットを読み出して、読み出したパケットを物理マシンＸの物理的な通信部に出力する。また、出力処理部１１１３は、変更部１０２０からの指示に従って、各キューからの読み出しレート（出力レートとも呼ぶ）を変更する。
【００２７】
図７に、物理マシンＺのデータ受信に関係する構成を示す。物理マシンＺは、グループＡのための論理構成部３１００と、制御部３０００とを有する。制御部３０００は、受信部３０１０と、生成部３０２０と、算出部３０３０と、データ格納部３０４０と、送信部３０５０とを有する。受信部３０１０は、要求パケットを他の物理マシンから受信して、当該要求パケットのデータを生成部３０２０と算出部３０３０とに出力する。生成部３０２０は、要求パケットのデータから輻輳発生の判断に用いられるデータを生成して、送信部３０５０に出力する。データ格納部３０４０は、他の物理マシンから受信した要求パケットのデータを格納する。算出部３０３０は、今回受信した要求パケットのデータ及びデータ格納部３０４０に格納されているデータを用いて、今回受信した要求パケットの送信元物理マシンについての比率を以下で述べる方法で算出し、送信部３０５０に出力する。送信部３０５０は、生成部３０２０と算出部３０３０とから受け取ったデータを用いて応答パケットを生成し、今回受信した要求パケットの送信元物理マシンに送信する。
【００２８】
グループＡのための論理構成部３１００は、仮想スイッチＳＷ３１１０と、当該仮想スイッチＳＷ３１１０に接続されている仮想マシンＶＭａ３及びＶＭａ４とを有する。受信側の論理構成部３１００では、通常どおり、物理マシンＺの物理的な通信部からパケットを受信した仮想スイッチＳＷ３１１０が、宛先の仮想マシンＶＭａ３又はＶＭａ４へパケットを出力する。
【００２９】
次に、図８を用いて、本実施の形態における処理フローを説明する。物理マシンＸにおける制御部１０００の測定部１０１０は、分配部１１１１と連携して送信レートの測定を実施する（図８：ステップＳ１）。上でも述べたように、各グループについて、宛先物理マシン毎に送信レートを測定するが、現在はグループＡのみが仮想マシンを実行しており、物理マシンＸと物理マシンＹとは通信を行っていないものとして、グループＡ及び物理マシンＺについてのみ着目する。
【００３０】
そして、送信部１０３０は、測定部１０１０によって測定された、グループＡ且つ物理マシンＺについての送信レートを含む要求パケットを生成して、物理マシンＺ宛に送信する（ステップＳ３）。要求パケットは、物理マシンＸから物理マシンＺへの経路中に輻輳が発生しているかを判断する役割をも有する。要求パケットの送信は、例えば１００ｍｓｅｃといった一定周期で行う。但し、周期的でなくても良い。
【００３１】
物理マシンＺにおける制御部３０００の受信部３０１０は、物理マシンＸから要求パケットを受信し（ステップＳ５）、当該要求パケットのデータを生成部３０２０及び算出部３０３０に出力する。生成部３０２０は、要求パケットのデータから、輻輳発生の判断に用いられるデータを生成して、送信部３０５０に出力する（ステップＳ７）。輻輳発生の判断に用いられるデータは、例えば今回受信した要求パケットから特定される片方向遅延時間の場合もあれば、片方向遅延時間が所定の閾値以上となっているか否かに応じて、輻輳発生か否かを表すフラグであってもよい。片方向遅延時間については、（今回受信した要求パケットの受信時刻−要求パケットに含まれる送信時刻）で算出するようにしても良い。さらに、輻輳が発生していないことを確認した上で、ある要求パケットの受信時刻＋要求パケットの送信周期で要求パケットの予測到着時刻を算出して、実際の到着時刻と当該予測到着時刻との差を片方向遅延時間としてもよい。さらに、スループットやパケットの廃棄率他の測定結果等に基づき輻輳発生を検出するようにしても良い。
【００３２】
また、算出部３０３０は、グループＡについて仮想マシンが実行されている物理マシンＸについての送信レートと同じく物理マシンＹについての送信レートとの和に対する、送信元物理マシンである物理マシンＸについての送信レートの比から、グループＡ且つ送信元物理マシンＸについての比率を算出する（ステップＳ９）。物理マシンＸについての送信レートは、今回受信した要求パケットに含まれるデータを用いる。このデータについてはデータ格納部３０４０に格納しておく。また、物理マシンＹについての送信レートについては、データ格納部３０４０に格納されている最新のデータを用いる。算出部３０３０は、比率のデータを送信部３０５０に出力する。
【００３３】
例えば、物理マシンＸについての送信レートが４００Ｍｂｐｓであり、物理マシンＹについての送信レートが６００Ｍｂｐｓであれば、物理マシンＸについての比率は、４００／（４００＋６００）＝０．４と算出される。なお、場合によっては、比に対して調整を加えた結果を比率として採用するようにしても良い。例えば物理マシンＸを優先させるという設定があれば、物理マシンＸについての比に所定値を加えて、物理マシンＸについての比率を算出するようにしても良い。この場合、代わりに物理マシンＹについての比から所定値を減じて物理マシンＹについての比率を算出する。
【００３４】
そして、送信部３０５０は、輻輳発生の判断に用いられるデータと比率のデータとを含む応答パケットを生成して、物理マシンＸ宛に送信する（ステップＳ１１）。
【００３５】
これに対して、物理マシンＸにおける制御部１０００の受信部１０４０は、応答パケットを受信し（ステップＳ１３）、応答パケットのデータを変更部１０２０に出力する。変更部１０２０は、輻輳発生の判断に用いられるデータから輻輳が発生したか判断する（ステップＳ１５）。輻輳発生の判断に用いられるデータが片方向遅延時間であれば、予め定められた閾値と比較して、片方向遅延時間が閾値以上であれば輻輳発生と判断する。一方、輻輳発生か否かを表すフラグであれば、そのフラグの値が輻輳発生を示しているかを判断する。
【００３６】
輻輳が発生していない場合には、出力処理部１１１３が現在キュー１１１２からパケットを読み出しているレートよりも高いレートでパケットを物理マシンＺに出力してもよいことになる。そこで、変更部１０２０は、出力処理部１１１３に対して、物理マシンＺ宛のパケットの現在の出力レートを上げるように指示を出す（ステップＳ１９）。出力レートの上げ方はどのようなものであっても良いが、物理マシンＸの物理的な通信部の上限レートよりも高くはできない。
【００３７】
一方、輻輳が発生している場合には、変更部１０２０は、応答パケットに含まれる比率と所定レート（例えばグループＡに設定されている最低保証レート）の積から決定される下限レート未満にならないように、出力処理部１１１３に対して、物理サーバＺ宛のパケットの現在の出力レートを下げるように指示を出す（ステップＳ１７）。
【００３８】
例えば、比率が０．４で、所定レートが５００Ｍｂｐｓであれば、２００Ｍｂｐｓが下限レートとして算出される。
【００３９】
出力レートの下げ方はどのようなものであっても良いが、上で述べた下限レート未満にならないようにする。下限レート以上であれば、システム全体としてグループＡについての最低保証レートを確保することができる。なお、応答パケットに含まれる比率と所定レートの積に対して調整を加えるようにしても良い。例えば、物理マシンＸを優先させるという設定がなされていれば、応答パケットに含まれる比率と所定レートの積に対して所定値を加算して、下限レートを算出するようにしてもよい。この場合、代わりに物理マシンＹにおいて算出された下限レートから所定値を減算する。
【００４０】
以上のような処理を実施することで、輻輳が発生している状況においても、システム全体として各グループについての最低保証レートを確保できるようになる。なお、正しく設計がなされていれば、各グループについての最低保証レートを加算すると、ネットワークの各リンクの帯域以下になるはずであるので、上で述べたような処理を実施すれば輻輳も解消できるようになる。
【００４１】
また、上では説明を分かり易くするために、各物理マシンについて、送信側の構成と受信側の構成との一方のみを示しているが、実際には両方の構成を有する。
【００４２】
［実施の形態２］
本技術の第２の実施の形態のシステム構成例を図９を用いて説明する。物理ネットワーク１００には、スイッチＳＷ１乃至ＳＷ４が含まれている。スイッチＳＷ３は、物理サーバＸに接続されており、さらにスイッチＳＷ１に接続されている。また、スイッチＳＷ４は、物理サーバＹに接続されており、スイッチＳＷ１にも接続されている。スイッチＳＷ１は、スイッチＳＷ３、ＳＷ４及びＳＷ２に接続されている。スイッチＳＷ２は、スイッチＳＷ１に接続されており、さらに物理サーバＺにも接続されている。
【００４３】
本実施の形態では、物理サーバＸでは、テナントＡの仮想マシンＶＭａ１及びＶＭａ２が実行されており、物理サーバＹでは、テナントＡの仮想マシンＶＭａ３及びＶＭａ４が実行されており、さらにテナントＢの仮想マシンＶＭｂ１が実行されている。さらに、物理サーバＺでは、テナントＡの仮想マシンＶＭａ５と、テナントＢの仮想マシンＶＭｂ２とが実行されている。
【００４４】
同じテナントに属する仮想マシン間で通信は行われる。但し、説明を簡単にするため、図１０に示すような通信が行われるものとする。すなわち、物理サーバＸでは、仮想マシンＶＭａ１から仮想マシンＶＭａ５へデータを送信し、仮想マシンＶＭａ２から仮想マシンＶＭａ３へデータを送信する。また、物理サーバＹでは、仮想マシンＶＭａ４から仮想マシンＶＭａ５へデータを送信し、仮想マシンＶＭｂ１から仮想マシンＶＭｂ２へデータを送信する。
【００４５】
次に、本実施の形態における物理サーバＸの構成（送信側）を図１１を用いて説明する。図１０の例では、物理サーバＸは、データを送信する側の物理サーバであり、テナントＡの論理構成部２２０と、制御部２１０とを有する。テナントＡ以外のテナントについての仮想マシンが実行されている場合には、そのテナントのための論理構成部２２０も設けられる。
【００４６】
テナントＡの論理構成部２２０は、仮想マシンＶＭａ１及びＶＭａ２と、仮想マシンＶＭａ１及びａ２が論理的に接続されている仮想スイッチＳＷ２２１と、当該仮想スイッチＳＷ２２１に接続されている通信部２２２とを有する。
【００４７】
また、制御部２１０は、送信レート測定部２１１と、要求パケット送信部２１２と、応答パケット受信部２１３と、レート変更部２１４と、データ格納部２１５とを有する。
【００４８】
通信部２２２は、分配部２２２１と、テナントＡの仮想マシンが実行されている他の物理サーバＹ及びＺのためのキュー２２２２及び２２２４と、キュー２２２２及び２２２４からの読み出し部２２２３及び２２２５と、セレクタ２２２６とを有する。
【００４９】
分配部２２２１は、仮想マシンＶＭａ１及びＶＭａ２から出力されたパケットを仮想スイッチＳＷ２２１を介して受信し、当該パケットを、宛先アドレスから特定される、宛先の物理サーバのためのキュー２２２２又は２２２４に出力する。例えば、分配部２２２１は、例えば図１２に示すようなデータに基づき、出力先のキュー２２２２又は２２２４を特定する。図１２の例では、仮想マシンのＭＡＣアドレスに対応付けて宛先物理サーバのキューの識別子が登録されている。また、分配部２２２１は、宛先物理サーバ毎に、キュー２２２２又は２２２４に投入したパケットのデータ量などを測定して、送信レート測定部２１１に出力する。
【００５０】
読み出し部２２２３は、キュー２２２２から、レート変更部２１４から指示された読み出しレートでパケットを読み出し、セレクタ２２２６に出力する。また、読み出し部２２２５は、キュー２２２４から、レート変更部２１４から指示された読み出しレートでパケットを読み出し、セレクタ２２２６に出力する。セレクタ２２２６は、物理サーバＸの物理的な通信部に、適切なタイミングでパケットを出力する。
【００５１】
制御部２１０の送信レート測定部２１１は、テナントＡについて各宛先物理サーバの送信レートを測定し（又は算出し）、要求パケット送信部２１２に出力する。要求パケット送信部２１２は、送信レート測定部２１１からの送信レートを用いて要求パケットを生成し、宛先物理サーバに送信する。複数のテナントについての仮想マシンが実行されている場合には、同じ宛先物理サーバについては同一の要求パケットに、送信レートのデータを含めて送信するようにしてもよい。
【００５２】
図１３に、制御パケットである要求パケットのパケットフォーマットの一例を示す。要求パケットは、イーサネットヘッダ（イーサネットは登録商標）（１４バイト）と、ＩＰヘッダ（２０バイト）、ＵＤＰヘッダ（８バイト）と、メッセージボディ（可変長）とが含まれる。メッセージボディには、制御パケットのタイプ（要求）と、タイム（送信時刻）と、テナント毎の送信レートとが含まれる。送信レートについては、例えばＴＬＶ（Type-Length-Value）形式で値が設定される。
【００５３】
上で述べた例において物理サーバＺ宛の要求パケットであれば、物理サーバＸではテナントＡしか仮想マシンが実行されていないので、テナントＡについて物理サーバＺに対する送信レートのみが含まれることになる。物理サーバＹでは、テナントＡ及びＢについての仮想マシンが実行されているので、物理サーバＺ宛の要求パケットであれば、テナントＡについて物理サーバＺに対する送信レートと、テナントＢについて物理サーバＺに対する送信レートとが含まれる。
【００５４】
また、制御部２１０の応答パケット受信部２１３は、他の物理サーバから制御パケットである応答パケットを受信し、応答パケットのデータをレート変更部２１４に出力する。図１４に、制御パケットである応答パケットのパケットフォーマットの一例を示す。応答パケットは、イーサネットヘッダ（イーサネットは登録商標）（１４バイト）と、ＩＰヘッダ（２０バイト）、ＵＤＰヘッダ（８バイト）と、メッセージボディ（可変長）とが含まれる。メッセージボディには、制御パケットのタイプ（応答）と、タイム（片方向遅延時間）と、テナント毎の比率とが含まれる。比率については、例えばＴＬＶ（Type-Length-Value）形式で値が設定される。比率については後に詳しく述べる。
【００５５】
レート変更部２１４は、片方向遅延時間が予め定められた閾値以上となっているか判断することで、輻輳が発生しているか否かを判断する。輻輳が発生している場合には、レート変更部２１４は、テナント毎の比率に従って決定される下限レートを下回らないように、応答パケットの送信元物理サーバについてのキュー２２２２又は２２２４からの読み出しレートを下げるように、読み出し部２２２３又は２２２５を制御する。また、読み出し部２２２３又は２２２５に指示した読み出しレートについては、データ格納部２１５に格納する。データ格納部２１５には、例えば図１５に示すようなデータが格納される。図１５の例では、テナントの識別子と、宛先物理サーバのキューの識別子と、設定された読み出しレートとが対応付けて格納される。
【００５６】
なお、物理サーバＹの場合には、テナントＡの論理構成部と、テナントＢの論理構成部と、制御部２１０とを有する。
【００５７】
次に、本実施の形態における物理サーバＺの構成（受信側）を図１６を用いて説明する。図１６の例では、物理サーバＺは、データを受信する側の物理サーバであり、テナントＡの論理構成部３１０と、テナントＢの論理構成部３２０と、制御部３３０とを有する。  テナントＡの論理構成部３１０と、テナントＢの論理構成部３２０とについては、各仮想スイッチＳＷに仮想マシンＶＭａ５又はＶＭｂ２が接続されている構成であり、従来と変わらないので、これ以上述べない。
【００５８】
一方、制御部３３０は、要求パケット受信部３３１と、比率算出部３３２と、輻輳検出部３３３と、データ格納部３３４と、応答パケット送信部３３５とを有する。要求パケット受信部３３１は、他の物理サーバから要求パケットを受信して、そのデータを比率算出部３３２及び輻輳検出部３３３に出力する。
【００５９】
輻輳検出部３３３は、要求パケットに含まれる送信時刻を用いて片方向遅延時間を算出し、応答パケット送信部３３５に出力する。比率算出部３３２は、各テナントについて、要求パケットに含まれる、送信元物理サーバの送信レート及びデータ格納部３３４に格納されている他の物理サーバの送信レートを用いて、同一テナントに属する仮想マシンが自物理サーバへ送信しているデータの送信レートの総和に対する、送信元物理マシンの送信レートの比率を算出する。例えば、データ格納部３３４には、図１７に示すようなデータが格納されている。図１７の例では、テナントの識別子と、送信元物理サーバの識別子と、送信レートとが対応付けられて格納されている。例えば物理サーバＸからの要求パケットに、テナントＡについての送信レート（３００Ｍｂｐｓ）というデータが含まれている場合、データ格納部３３４から、テナントＡ且つ物理サーバＸ以外の物理サーバについての送信レートを読み出す。この場合、物理サーバＹについての送信レート（３００Ｍｂｐｓ）を読み出す。なお、今回受信した要求パケットに含まれる送信レートについては、テナントＡ且つ送信元物理サーバＸの送信レートとして、データ格納部３３４に格納される。そして、比率算出部３３２は、３００／（３００＋３００）＝０．５が得られる。
【００６０】
応答パケット送信部３３５は、比率算出部３３２で算出された比率と輻輳検出部３３３で算出された片方向遅延時間とを含む応答パケットを生成して、要求パケットの送信元物理サーバＸへ送信する。
【００６１】
次に、図１８を用いて、上で述べたシステムの処理内容を説明する。物理サーバＸにおける制御部２１０の送信レート測定部２１１は、分配部２２２１と連携して、テナント毎に、各宛先物理サーバに対する送信レートを測定する（図１８：ステップＳ２１）。例えば、要求パケットを定期的に送信する場合には、要求パケットの送信周期毎に、単位時間（例えば１秒）当たりの送信データ量、すなわち送信レートを算出する。そして、物理サーバＺに対する要求パケットの送信タイミングになると、最新の送信レートを要求パケット送信部２１２に出力して、要求パケット送信部２１２は、送信時刻と各テナントについての物理サーバＺに対する送信レートとを含む要求パケットを生成し、物理サーバＺに送信する（ステップＳ２３）。
【００６２】
物理サーバＺにおける制御部３３０の要求パケット受信部３３１は、物理サーバＸから要求パケットを受信し（ステップＳ２５）、当該要求パケットのデータを比率算出部３３２及び輻輳検出部３３３に出力する。輻輳検出部３３３は、要求パケットの受信時刻と要求パケットに含まれる送信時刻との差から、片方向遅延時間を算出して、応答パケット送信部３３５に出力する（ステップＳ２７）。また、比率算出部３３２は、要求パケットに送信レートが含まれるテナントの各々について、送信元物理サーバ以外の物理サーバについての最新送信レートを、データ格納部３３４から読み出す（ステップＳ２９）。要求パケットにテナントＡの送信レートのみが含まれる場合には、送信元物理サーバＸ以外の物理サーバＹの最新送信レートを、データ格納部３３４から読み出す。
【００６３】
そして、比率算出部３３２は、テナント毎に、要求パケットの送信元物理サーバの比率を算出し、応答パケット送信部３３５に出力する（ステップＳ３１）。具体的には、テナント毎に、データ格納部３３４から読み出した送信レートと要求パケットに含まれる送信レートとの総和に対する要求パケットに含まれる送信レートの比率を算出する。
【００６４】
応答パケット送信部３３５は、片方向遅延時間と算出されたテナント毎の比率とを含む応答パケットを生成して、物理サーバＸに送信する（ステップＳ３３）。物理サーバＸにおける制御部２１０の応答パケット受信部２１３は、物理サーバＺから応答パケットを受信し（ステップＳ３５）、当該応答パケットのデータをレート変更部２１４に出力する。レート変更部２１４は、応答パケットのデータを受け取ると、テナント毎に、応答パケットの送信元物理サーバに対する最低レートを算出する（ステップＳ３７）。具体的には、予めテナントに設定されている最低保証レートに対して、応答パケットに含まれる比率を乗ずることで、最低レートを算出する。各テナントについての最低保証レートについてはデータ格納部２１５に格納しておくようにしても良い。
【００６５】
さらに、レート変更部２１４は、応答パケットに含まれる片方向遅延時間が予め定められた閾値を超える状態になっているか判断することで、輻輳が発生しているか判断する（ステップＳ３９）。片方向遅延時間が閾値以下である、すなわち輻輳が発生していない場合には、レート変更部２１４は、各テナントについて、応答パケットの送信元物理サーバに対する読み出しレートを上げるように、読み出し部２２２３又は２２２５に指示する（ステップＳ４３）。例えば、データ格納部２１５に格納されている読み出しレート＋最低保証レートと、物理サーバＸとスイッチＳＷ３との間のラインレートとのうち小さい方に設定する。すなわち、ラインレートに達するまでは、最低保証レートだけ現在の読み出しレートを増加させる。そしてステップＳ２１に戻る。
【００６６】
一方、片方向遅延時間が予め定められた閾値を超えていれば、輻輳が発生していると判断して、レート変更部２１４は、ステップＳ３７で算出した最低レート未満にならないように、各テナントについて、応答パケットの送信元物理サーバに対する読み出しレートを下げるように、読み出し部２２２３又は２２２５に指示する（ステップＳ４１）。例えば、データ格納部２１５に格納されている読み出しレート／２と、最低レートとのうち大きい方に設定する。すなわち、最低レートより読み出しレートに達するまでは、現在の読み出しレートを半分にする。
【００６７】
例えば、図１０のような通信を行うが、図１９に示すように、テナントＢの仮想マシンＶＭｂ１がデータ送信を実施していない場合を考える。そして、テナントＡの仮想マシンＶＭａ１が、物理サーバＺにおける仮想マシンＶＭａ５に対して５００Ｍｂｐｓでデータを送信しており、テナントＡの仮想マシンＶＭａ４が、物理マシンＺにおける仮想マシンＶＭａ５に対して３００Ｍｂｐｓでデータを送信しているものとする。なお、テナントＡの仮想マシンＶＭａ２から、物理サーバＹにおける仮想マシンＶＭａ３に対して２００Ｍｂｐｓでデータを送信しているものとする。
【００６８】
この場合には、スイッチＳＷ１とスイッチＳＷ２のリンクにおいても８００Ｍｂｐｓであるから、リンクレートの１Ｇｂｐｓに達していない。従って、輻輳が発生していないと判断される。また、例えば、テナントＡについての最低保証レートが２００Ｍｂｐｓであり、テナントＢについての最低保証レートが４００Ｍｂｐｓであるものとする。
【００６９】
そうすると、物理サーバＸにおけるレート変更部２１４は、テナントＡの論理構成部２２０の通信部２２２において物理サーバＺのためのキューからパケットを読み出す読み出し部２２２５に対して、図２０に示すような読み出しレートの設定を行う。図２０において、横軸は時間を表しており、縦軸は読み出しレートを表し、点線ｓは読み出しレートの時間変化を表している。読み出しレートが初期的に５００Ｍｂｐｓであるとすると、レート変更部２１４は、テナントＡの最低保証レート２００Ｍｂｐｓだけ増加させて、７００Ｍｂｐｓに設定する。さらに、輻輳発生無しと判断すると、さらに読み出しレートを２００Ｍｂｐｓだけ増加させて９００Ｍｂｐｓに設定する。さらに、輻輳発生無しと判断すると、リンクレート１Ｇｂｐｓまで、読み出しレートを増加させる。しかしながら、仮想マシンＶＭａ１が５００Ｍｂｐｓを超えてデータを出力しない場合には、実線ｔで示すように、実際に読み出されるデータのレートは変化しない。
【００７０】
その後、図２１に示すように、テナントＢの仮想マシンＶＭｂ１が、４００Ｍｂｐｓで、物理サーバＺで実行されている仮想マシンＶＭｂ２に対してデータを送信し始めるとする。そうすると、スイッチＳＷ１とスイッチＳＷ２との間のリンクで、合計１２００Ｍｂｐｓでデータを送ろうとすることになる。そうすると輻輳が発生するので、テナントＡについては、上で述べた処理を行うと、物理サーバＸについては、５００／（５００＋３００）＝０．６２５という比率が算出され、物理サーバＹについては、３００／（５００＋３００）＝０．３７５という比率が算出される。そうすると、物理サーバＸでは、２００Ｍｂｐｓ×０．６２５＝１２５Ｍｂｐｓという最低レートが算出され、物理サーバＹでは、２００Ｍｂｐｓ×０．３７５＝７５Ｍｂｐｓという最低レートが算出される。  
【００７１】
そうなると、物理サーバＸでは、図２２に示すように、読み出しレートｓは、１Ｇｂｐｓを１／２にした５００Ｍｂｐｓに設定される。これで輻輳が解消されないと、読み出しレートｓは、さらに５００Ｍｂｐｓを１／２にした２５０Ｍｂｐｓに設定される。ここで、実際の読み出しレートｔも２５０Ｍｂｐｓに下げられることになるので、物理サーバＺについてのキュー２２２４にパケットが多く積まれることになる。もし、まだ輻輳が解消されないと、読み出しレートｓは、２５０Ｍｂｐｓを１／２にした１２５Ｍｂｐｓに設定されるが、これは最低レートであるから、これ以上読み出しレートが下げられることはない。
【００７２】
同様に、物理サーバＹでは、図２３に示すように、輻輳が発生していないと判断されていた間は、変更レート設定部２１４によって設定される読み出しレートｕは３００Ｍｂｐｓから１Ｇｂｐｓまで上昇する。但し、仮想マシンＶＭａ４が出力するデータの送信レートは３００Ｍｂｐｓのままであるから、実線ｖで示すように実際の読み出しレートは３００Ｍｂｐｓで一定になる。しかし、輻輳発生が検出されると、読み出しレートｕは、１Ｇｂｐｓを１／２にした５００Ｍｂｐｓに設定される。これで輻輳が解消されないと、読み出しレートｕは、さらに５００Ｍｂｐｓを１／２にした２５０Ｍｂｐｓに設定される。ここで、実際の読み出しレートｖも２５０Ｍｂｐｓに下げられることになるので、物理サーバＺについてのキューにパケットが多く積まれることになる。もし、まだ輻輳が解消されないと、読み出しレートｕは、２５０Ｍｂｐｓを１／２にした１２５Ｍｂｐｓに設定される。さらに、まだ輻輳が解消されないと、読み出しレートｕは、下限レート７５Ｍｂｐｓに設定される。
【００７３】
最悪の場合においても、テナントＡに着目すると、物理サーバＸは１２５Ｍｂｐｓでデータを送信でき、物理サーバＹは７５Ｍｂｐｓでデータを送信できるので、合計２００Ｍｂｐｓとなり、テナントＡについての最低保証レートを確保できている。すなわち、最悪の場合においても、最低保証レートを確保できる。
【００７４】
一方、スイッチＳＷ１とスイッチＳＷ２との間のリンクでは、テナントＡの２００Ｍｂｐｓ＋テナントＢの４００Ｍｂｐｓ＝６００Ｍｂｐｓとなり、輻輳も解消されている。各リンクの収容設計を適切に行っていれば、上で述べた処理を実施すれば、輻輳も解消される。
【００７５】
なお、上では説明を分かり易くするために送信側と受信側とを分けたが、実際には、両方の構成を各物理マシンが有することになる。
【００７６】
［実施の形態３］
第２の実施の形態では、制御パケットである要求パケットには送信時刻のデータが含まれる例を示したが、物理サーバ間で時計にずれがある場合もある。そのため、本実施の形態のような処理を行ってもよい。
【００７７】
具体的には、図２４に示すように、要求パケットの受信間隔を受信側の物理サーバで測定し、連続Ｎ回、要求パケットの送信間隔Ｔで要求パケットを受信できた場合には、ネットワークには輻輳が発生していないと推定する。これで正常な通信状態が得られたものとして、Ｎ回目の受信時刻Ｔb0を基準にして、送信間隔Ｔで、到着予定時刻Ｔb1乃至Ｔb7（ここでは７であるが一般的には整数ｍ）を生成する。この到着予定時刻を基準に実際の受信時刻との差によって片方向遅延時間を推定する。
【００７８】
具体的には、図２５に示すように、送信側の物理サーバでは、要求パケットｐ１乃至ｐ６を送信間隔Ｔで送信しているが、ネットワークに輻輳がない場合でも、ネットワークにおける遅延があるので、要求パケットの到着予定時刻は受信側の送信時刻よりも後ろにずれる。さらに、実際にはネットワークの状態によって遅延が生ずる場合があるので、要求パケットｐ１乃至ｐ６の実際の受信時刻は到着予定時刻とはずれが生ずる。このずれを片方向遅延時間ｄ１乃至ｄ５として用いる。なお、図のスペースの関係で要求パケットｐ６の受信時刻については示されていない。また、応答パケットは、実際の受信時刻の後速やかに送信される。
【００７９】
図１６における輻輳検出部３３３は、上で述べたように片方向遅延時間を算出するために、図２６に示すような処理を実施する。
【００８０】
輻輳検出部３３３は、要求パケットを受信した場合には（ステップＳ５１：Ｙｅｓルート）、（要求パケットの前回受信時刻−今回受信時刻）によって到着間隔を算出する（ステップＳ５３）。なお、要求パケット以外のパケットであれば（ステップＳ５１：Ｎｏルート）、要求パケットの受信まで待機する。また、輻輳検出部３３３は、前回受信時刻に、今回受信時刻を設定する（ステップＳ５５）。
【００８１】
そうすると、輻輳検出部３３３は、｜到着間隔−送信間隔Ｔ｜が許容時間β以下であるか判断する（ステップＳ５７）。許容時間βは、許容可能な到着間隔の振れ幅を示す時間である。｜到着間隔−送信間隔Ｔ｜が許容時間β以下でなければ、最初からやり直すため、輻輳検出部３３３は、カウンタＴcntを０に初期化する（ステップＳ６５）。そして、処理終了でなければ（ステップＳ６７：Ｎｏルート）、ステップＳ５１に戻る。一方、処理終了であれば（ステップＳ６７：Ｙｅｓルート）、処理を終了する。
【００８２】
一方、｜到着間隔−送信間隔Ｔ｜が許容時間β以下であれば、輻輳検出部３３３は、カウンタＴcntを１インクリメントして（ステップＳ５９）、カウンタＴcntが閾値Ｎに達したか判断する（ステップＳ６１）。Ｔcntが閾値Ｎに達していない場合にはステップＳ６７に移行する。一方、Ｔcntが閾値Ｎに達した場合には、輻輳検出部３３３は、今回受信時刻を基準に、到着予定時刻を送信間隔Ｔで設定する（ステップＳ６３）。その後は、この到着予定時刻と実際の受信時刻との差で片方向遅延時間を算出する。
【００８３】
以上のような処理を実施すれば、物理サーバ間で時刻ずれが存在している場合であっても、片方向遅延時間を正確に推定できるようになる。
【００８４】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で述べた機能ブロック図は一例であり、必ずしも実際のプログラムモジュール構成と一致しない場合もある。さらに、処理フローについても処理結果が変わらない限り、ステップの順番を入れ替えたり、並列実行するようにしても良い。
【００８５】
なお、上で述べた物理マシン及び物理サーバは、コンピュータ装置であって、図２７に示すように、メモリ２５０１とＣＰＵ２５０３とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００８６】
以上述べた本実施の形態をまとめると、以下のようになる。
【００８７】
本実施の形態に係る制御方法は、（Ａ）第１の物理コンピュータ（物理マシン又は物理サーバとも呼ぶ）において実行されている１又は複数の仮想マシンが属するグループについて、第２の物理コンピュータに送信するデータの送信レートを測定する第１のステップと、（Ｂ）第１のステップで測定された送信レートを含む要求パケットを、第２の物理コンピュータに送信する第２のステップと、（Ｃ）第２の物理コンピュータから、上記グループについての比率と輻輳発生を判断するためのデータとを含む、要求パケットの応答パケットを受信する第３のステップと、（Ｄ）輻輳発生を判断するためのデータにより輻輳発生が検出された場合には、上記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上となるように、上記グループに属する１又は複数の仮想マシンが第２の物理コンピュータ宛に出力するデータの出力レートを下げる第４のステップとを含む。
【００８８】
グループに予め設定されている出力レートが最低保証レートであるとすると、同一グループに属する仮想マシンを実行している複数の物理コンピュータが第２の物理コンピュータ宛にデータを送信していても、全体でも送信レートが最低保証レートを下回ることがないように制御できる。
【００８９】
なお、本実施の形態に係る制御方法は、（Ｅ）第３の物理コンピュータから、当該第３の物理コンピュータにおいて実行されている仮想マシンが属する第２のグループについて測定された第２の送信レートを含む第２の要求パケットを受信する第５のステップと、（Ｆ）第２の要求パケットから第１の物理コンピュータと第３の物理コンピュータとの間の輻輳発生を判断するためのデータを第２のグループについて生成する第６のステップと、（Ｇ）他の物理コンピュータから受信した要求パケットに含まれる、第２のグループについての第３の送信レートの総和と第２の送信レートとの和に対する第２の送信レートの比から決定される、第２のグループについての比率を算出する第７のステップと、（Ｈ）第２のグループについての比率と上記輻輳発生を判断するためのデータとを含む応答パケットを生成して、第３の物理コンピュータに送信する第８のステップとをさらに含むようにしても良い。
【００９０】
このようにすれば、第３の物理コンピュータでは、輻輳時にも、第２のグループについて最低保証レートを確保できるように、送信レートの制御を行うことができるようになる。
【００９１】
なお、上で述べた比率が、他の物理コンピュータから受信した要求パケットに含まれる、上記グループについての送信レートの総和と上記送信レートとの和に対する上記送信レートの比率である場合もある。
【００９２】
また、上記輻輳発生を判断するためのデータが、片方向遅延時間である場合もある。この場合、片方向遅延時間が閾値を超えた場合に、輻輳発生が検出されたと判断するようにしても良い。なお、他の方法にて輻輳の発生を検出しても良い。また、輻輳発生を判断するためのデータは、輻輳の有無を表すフラグなどであっても良い。
【００９３】
さらに、本実施の形態に係る制御方法は、上記輻輳発生を判断するためのデータにより輻輳発生が検出されない場合には、上記グループに属する１又は複数の仮想マシンが第２の物理コンピュータ宛に出力するデータの出力レートを上げる第９のステップをさらに含むようにしても良い。出力レートを上げずに、維持しても良い。
【００９４】
上で述べた第６のステップが、第３の物理コンピュータから第１の物理コンピュータまでの間に輻輳が発生しないことが確認できた後に第２の要求パケットを受信した時刻から第２の要求パケットの送信間隔後を次の第２の要求パケットの到着予測時刻に設定し、次の第２の要求パケットの実際の受信時刻と到着予測時刻との差を算出するステップを含むようにしても良い。このようにすれば正確に片方向遅延時間を算出することができるようになる。
【００９５】
本実施の形態の第２の態様に係る制御方法は、（Ａ）第１の物理コンピュータにおいて、第２の物理コンピュータから、当該第２の物理コンピュータにおいて実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する第１のステップと、（Ｂ）要求パケットから第２の物理コンピュータと第１の物理コンピュータとの間の輻輳発生を判断するためのデータを上記グループについて生成する第２のステップと、（Ｃ）他の物理コンピュータから受信した要求パケットに含まれる、上記グループについての第２の送信レートの総和と上記送信レートとの和に対する上記送信レートの比を算出することで、上記グループについての比率を算出する第３のステップと、（Ｄ）上記グループについての比率と上記輻輳発生を判断するためのデータとを含む応答パケットを生成して、第２の物理コンピュータに送信する第４のステップとを含む。
【００９６】
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、ＣＤ−ＲＯＭなどの光ディスク、光磁気ディスク、半導体メモリ（例えばＲＯＭ）、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、ＲＡＭ等の記憶装置に一時保管される。
【００９７】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９８】
（付記１）  
第１の物理コンピュータにおいて実行されている１又は複数の仮想マシンが属するグループについて、第２の物理コンピュータに送信するデータの送信レートを測定する第１の処理と、
前記第１の処理で測定された前記送信レートを含む要求パケットを、前記第２の物理コンピュータに送信する第２の処理と、
前記第２の物理コンピュータから、前記グループについての比率と、輻輳発生の判断に用いられる第１のデータとを含む応答パケットを受信する第３の処理と、
前記第１のデータに基づき輻輳発生が検出された場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の物理コンピュータ宛に出力するデータの出力レートを、前記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げる第４の処理と、
を、前記第１の物理コンピュータに実行させるプログラム。
【００９９】
（付記２）
第３の物理コンピュータから、当該第３の物理コンピュータにおいて実行されている仮想マシンが属する第２のグループについて測定された第２の送信レートを含む第２の要求パケットを受信する第５の処理と、
前記第２の要求パケットから、前記第１の物理コンピュータと前記第３の物理コンピュータとの間の輻輳発生の判断に用いられる第２のデータを前記第２のグループについて生成する第６の処理と、
他の物理コンピュータから受信した要求パケットに含まれる、前記第２のグループについての第３の送信レートの総和と前記第２の送信レートとの和に対する前記第２の送信レートの比から決定される、前記第２のグループについての比率を算出する第７の処理と、
前記第２のグループについての比率と前記第２のデータとを含む応答パケットを生成して、前記第３の物理コンピュータに送信する第８の処理と、
をさらに、前記第１の物理コンピュータに実行させる付記１記載のプログラム。
【０１００】
（付記３）
前記比率が、他の物理コンピュータから受信した要求パケットに含まれる、前記グループについての送信レートの総和と前記第１の物理コンピュータから受信した前記要求パケットに含まれる前記送信レートとの和に対する当該送信レートの比率である
付記１又は２記載のプログラム。
【０１０１】
（付記４）
前記第１のデータが、片方向遅延時間であり、
前記片方向遅延時間が閾値を超えた場合に、輻輳発生が検出されたと判断する
付記１乃至３のいずれか１つ記載のプログラム。
【０１０２】
（付記５）
前記第１のデータに基づき輻輳発生が検出されない場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の物理コンピュータ宛に出力するデータの出力レートを上げる第９の処理
をさらに、前記第１の物理コンピュータに実行させる付記１乃至４のいずれか１つ記載のプログラム。
【０１０３】
（付記６）
前記第６の処理が、
前記第３の物理コンピュータから前記第１の物理コンピュータまでの間に輻輳が発生しないことが確認できた後に前記第２の要求パケットを受信した時刻から前記第２の要求パケットの送信間隔後を次の第２の要求パケットの到着予測時刻に設定し、前記次の第２の要求パケットの実際の受信時刻と前記到着予測時刻との差を算出する処理
を含む付記２記載のプログラム。
【０１０４】
（付記７）
第１の物理コンピュータにおいて、第２の物理コンピュータから、当該第２の物理コンピュータにおいて実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する第１の処理と、
前記要求パケットから、前記第２の物理コンピュータと前記第１の物理コンピュータとの間の輻輳発生の判断に用いられるデータを、前記グループについて生成する第２の処理と、
他の物理コンピュータから受信した要求パケットに含まれる、前記グループについての第２の送信レートの総和と前記送信レートとの和に対する前記送信レートの比を算出することで、前記グループについての比率を算出する第３の処理と、
前記グループについての比率と前記データとを含む応答パケットを生成して、前記第２の物理コンピュータに送信する第４の処理と、
を、前記第１の物理コンピュータに実行させるプログラム。
【０１０５】
（付記８）
第１の物理コンピュータにおいて実行されている１又は複数の仮想マシンが属するグループについて、第２の物理コンピュータに送信するデータの送信レートを測定する第１の処理と、
前記第１の処理で測定された前記送信レートを含む要求パケットを、前記第２の物理コンピュータに送信する第２の処理と、
前記第２の物理コンピュータから、前記グループについての比率と、輻輳発生の判断に用いられる第１のデータとを含む応答パケットを受信する第３の処理と、
前記第１のデータに基づき輻輳発生が検出された場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の物理コンピュータ宛に出力するデータの出力レートを、前記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げる第４の処理と、
を、前記第１の物理コンピュータが実行する制御方法。
【０１０６】
（付記９）
第１の物理コンピュータにおいて、第２の物理コンピュータから、当該第２の物理コンピュータにおいて実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する第１の処理と、
前記要求パケットから、前記第２の物理コンピュータと前記第１の物理コンピュータとの間の輻輳発生の判断に用いられるデータを、前記グループについて生成する第２の処理と、
他の物理コンピュータから受信した要求パケットに含まれる、前記グループについての第２の送信レートの総和と前記送信レートとの和に対する前記送信レートの比を算出することで、前記グループについての比率を算出する第３の処理と、
前記グループについての比率と前記データとを含む応答パケットを生成して、前記第２の物理コンピュータに送信する第４の処理と、
を、前記第１の物理コンピュータが実行する制御方法。
【０１０７】
（付記１０）
１又は複数の仮想マシンを実行している情報処理装置であって、
前記１又は複数の仮想マシンが属するグループについて、第２の情報処理装置に送信するデータの送信レートを測定する測定部と、
前記測定部で測定された前記送信レートを含む要求パケットを、前記第２の情報処理装置に送信する送信部と、
前記第２の情報処理装置から、前記グループについての比率と、輻輳発生の判断に用いられるデータとを含む応答パケットを受信する受信部と、
前記データに基づき輻輳発生が検出された場合には、前記グループに属する前記１又は複数の仮想マシンが前記第２の情報処理装置宛に出力するデータの出力レートを、前記グループについての比率と当該グループに予め設定されている送信レートとの積により決定される下限値以上の出力レートであって、現在の出力レートよりも低い出力レートに下げるように制御する変更部と、
を有する情報処理装置。
【０１０８】
（付記１１）
情報処理装置であって、
第２の情報処理装置から、当該第２の情報処理装置において実行されている仮想マシンが属するグループについて測定された送信レートを含む要求パケットを受信する受信部と、
前記要求パケットから、前記第２の情報処理装置と前記情報処理装置との間の輻輳発生の判断に用いられるデータを、前記グループについて生成する生成部と、
他の情報処理装置から受信した要求パケットに含まれる、前記グループについての第２の送信レートの総和と前記送信レートとの和に対する前記送信レートの比を算出することで、前記グループについての比率を算出する算出部と、
前記グループについての比率と前記データとを含む応答パケットを生成して、前記第２の情報処理装置に送信する送信部と、
を有する情報処理装置。
【符号の説明】
【０１０９】
１１００  テナントＡの論理構成部
１１２０  仮想ＳＷ
１１１１  分配部
１１１２  キュー
１１１３  出力処理部
１０００  制御部
１０１０  測定部
１０２０  変更部
１０３０  送信部
１０４０  受信部
３１００  グループＡの論理構成部
３１１０  仮想ＳＷ
３０００  制御部
３０１０  受信部
３０２０  生成部
３０３０  算出部
３０４０  データ格納部
３０５０  送信部
２１０  制御部
２２０  テナントＡの論理構成部
２１１  送信レート測定部
２１２  要求パケット送信部
２１３  応答パケット受信部
２１４  レート変更部
２１５  データ格納部
２２１  仮想スイッチ
２２２  通信部
２２２１  分配部
２２２２，２２２４  キュー
２２２３，２２２５  読み出し部
２２２６  セレクタ
３１０  テナントＡの論理構成部
３２０  テナントＢの論理構成部
３３０  制御部
３３１  要求パケット受信部
３３２  比率算出部
３３３  輻輳検出部
３３４  データ格納部
３３５  応答パケット送信部
【図１】
0005772395.tif 000002
【図２】
0005772395.tif 000003
【図３】
0005772395.tif 000004
【図４】
0005772395.tif 000005
【図５】
0005772395.tif 000006
【図６】
0005772395.tif 000007
【図７】
0005772395.tif 000008
【図８】
0005772395.tif 000009
【図９】
0005772395.tif 000010
【図１０】
0005772395.tif 000011
【図１１】
0005772395.tif 000012
【図１２】
0005772395.tif 000013
【図１３】
0005772395.tif 000014
【図１４】
0005772395.tif 000015
【図１５】
0005772395.tif 000016
【図１６】
0005772395.tif 000017
【図１７】
0005772395.tif 000018
【図１８】
0005772395.tif 000019
【図１９】
0005772395.tif 000020
【図２０】
0005772395.tif 000021
【図２１】
0005772395.tif 000022
【図２２】
0005772395.tif 000023
【図２３】
0005772395.tif 000024
【図２４】
0005772395.tif 000025
【図２５】
0005772395.tif 000026
【図２６】
0005772395.tif 000027
【図２７】
0005772395.tif 000028