(57)【特許請求の範囲】
【請求項１】
物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定し、測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するモニタ手段と、
前記フローの送信元ホストに当該フローに関する輻輳通知を行う輻輳通知手段と、を備え、
前記モニタ手段は、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、
前記フローを受信する仮想マシンの全てのフローのトラヒック総流入量が、該仮想マシンへの割り当て帯域とその他の仮想マシンの空き帯域の和を超える場合、
該フローが輻輳を起こすと予測することを特徴とするネットワークトラヒック制御装置。
【請求項２】
物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定し、測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するモニタ手段と、
前記フローの送信元ホストに当該フローに関する輻輳通知を行う輻輳通知手段と、を備え、
前記モニタ手段は、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、
前記フローを受信する仮想マシンに割り当てられた帯域とその他の仮想マシンに割り当てられた帯域のうち未使用帯域との和から、前記フローを受信する仮想マシンが受信するトラヒック総流入速度と、該フローのラウンドトリップディレイ後のトラヒック流入速度に該仮想マシンへの全ての受信トラヒック流入速度に対する該フローの寄与分の逆数をかけたものとを引いた残帯域が０を下回る場合、
該フローが輻輳を起こすと予測することを特徴とするネットワークトラヒック制御装置。
【請求項３】
前記輻輳通知を受けた際、前記フローの送信トラヒックのレート制御を行う輻輳制御手段をさらに備えることを特徴とする請求項１又は請求項２に記載のネットワークトラヒック制御装置。
【請求項４】
物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定するステップと、
前記測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するに際して、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、 前記フローを受信する仮想マシンの全てのフローのトラヒック総流入量が、該仮想マシンへの割り当て帯域とその他の仮想マシンの空き帯域の和を超える場合、 該フローが輻輳を起こすと予測するステップと、
前記フローの送信元ホストに当該フローに関する輻輳通知を行うステップと、
を有することを特徴とするネットワークトラヒック制御方法。
【請求項５】
物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定するステップと、
前記測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するに際して、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、 前記フローを受信する仮想マシンに割り当てられた帯域とその他の仮想マシンに割り当てられた帯域のうち未使用帯域との和から、前記フローを受信する仮想マシンが受信するトラヒック総流入速度と、該フローのラウンドトリップディレイ後のトラヒック流入速度に該仮想マシンへの全ての受信トラヒック流入速度に対する該フローの寄与分の逆数をかけたものとを引いた残帯域が０を下回る場合、 該フローが輻輳を起こすと予測するステップと、
前記フローの送信元ホストに当該フローに関する輻輳通知を行うステップと、
を有することを特徴とするネットワークトラヒック制御方法。
【請求項６】
請求項４又は請求項５に記載の各ステップについて、仮想マシンのハイパーバイザにおけるコンピュータで実行することでネットワークトラヒックを制御することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想サーバが接続するネットワークのトラヒックを制御する制御装置、制御方法、およびプログラムに関する。
【背景技術】
【０００２】
同一の物理ホスト(コンピュータ)上に、論理的なホストである仮想マシン（ＶＭ：Virtual Machine）を複数構築することによるコンピュータ資源の効率利用が進められている。複数の仮想マシン間でハードウェアを共有するため、ハイパーバイザとよばれる仮想マシン管理ソフトウェアが、例えばネットワークインタフェースカード等のハードウェアを論理的に分割することにより、仮想マシン間のトラヒック等の分離を行っている。
【０００３】
ハイパーバイザは、仮想マシンと外部のネットワークとの間でトラヒックを仲介するのみで、トラヒックを生成するのは個々の仮想マシンである。ハイパーバイザと仮想マシンはそれぞれ独立したＯＳ等であるため、仮想マシンのトラヒック生成量をハイパーバイザが制御する事はできない。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Henrique Rodrigues 他、”Gatekeeper: Supporting Bandwidth Guarantees for Multi-tenant Datacenter Networks”, WIOV'11
【発明の概要】
【発明が解決しようとする課題】
【０００５】
背景技術で述べた通り、ハイパーバイザと仮想マシンはトラヒック制御に関しては独立した構成要素であり、個々の仮想マシンは独立して物理ホストの外部と通信するため、各々の仮想マシンは独立してトラヒック制御を行う。このため、例えば各々の仮想マシンが、物理ホストの物理ネットワークインタフェース容量最大のトラヒック量で外部に送信を試みると、その共有している物理インタフェースで輻輳、パケットロス等が発生し、またＴＣＰトラヒック等ではスループットが著しく低下する。受信トラヒックにおいても、個々の仮想マシンは、他の仮想マシンと独立してトラヒック制御（例えばＴＣＰフロー制御）を行うため、仮想マシン間で受信トラヒックを調整できず、送信トラヒック同様、輻輳が生じてしまう。
【０００６】
このため輻輳を生じさせないよう、物理インタフェース容量を仮想マシン数で割った帯域を各々の仮想マシンに割り当てることが考えられる。しかし、この場合、通信しない仮想マシンの存在時には、物理ホスト資源の利用効率が下がってしまうと言う課題がある。
【０００７】
したがって、本発明は、仮想マシン環境下において、物理ホスト資源の利用効率を下げることなく、同一物理ホスト上の仮想マシン間のトラヒックを輻輳させる事無く通信させ、パケットロスやスループットの低下を防ぐことが可能なネットワークトラヒック制御装置、制御方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を実現するため本発明によるネットワークトラヒック制御装置（請求項１）は、 物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定し、測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するモニタ手段と、 前記フローの送信元ホストに当該フローに関する輻輳通知を行う輻輳通知手段と、を備え、
前記モニタ手段は、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、前記フローを受信する仮想マシンの全てのフローのトラヒック総流入量が、該仮想マシンへの割り当て帯域とその他の仮想マシンの空き帯域の和を超える場合、 該フローが輻輳を起こすと予測する。
【０００９】
また、上記目的を実現するため本発明によるネットワークトラヒック制御装置（請求項２）は、 物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定し、測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するモニタ手段と、 前記フローの送信元ホストに当該フローに関する輻輳通知を行う輻輳通知手段と、を備え、
前記モニタ手段は、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、前記フローを受信する仮想マシンに割り当てられた帯域とその他の仮想マシンに割り当てられた帯域のうち未使用帯域との和から、前記フローを受信する仮想マシンが受信するトラヒック総流入速度と、該フローのラウンドトリップディレイ後のトラヒック流入速度に該仮想マシンへの全ての受信トラヒック流入速度に対する該フローの寄与分の逆数をかけたものとを引いた残帯域が０を下回る場合、該フローが輻輳を起こすと予測する。
【００１０】
また、前記輻輳通知を受けた際、前記フローの送信トラヒックのレート制御を行う輻輳制御手段をさらに備えることも好ましい。
【００１１】
上記目的を実現するため本発明によるネットワークトラヒック制御方法（請求項４）は、
物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定するステップと、
前記測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するに際して、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、 前記フローを受信する仮想マシンの全てのフローのトラヒック総流入量が、該仮想マシンへの割り当て帯域とその他の仮想マシンの空き帯域の和を超える場合、 該フローが輻輳を起こすと予測するステップと、
前記フローの送信元ホストに当該フローに関する輻輳通知を行うステップと、
を有する。
【００１２】
また、上記目的を実現するため本発明によるネットワークトラヒック制御方法（請求項５）は、
物理ホスト外部から仮想マシンが受信するトラヒック量を、任意の識別子／アドレスの組み合わせで指定するフロー単位で測定するステップと、
前記測定したフロー毎のトラヒック量から輻輳を起こす可能性のあるフローを予測するに際して、フローのラウンドトリップディレイと該フローのトラヒック流入加速度との積に、該フローのトラヒック流入速度を加えた値に基づき、輻輳を起こす可能性のあるフローを選択し、 前記フローを受信する仮想マシンに割り当てられた帯域とその他の仮想マシンに割り当てられた帯域のうち未使用帯域との和から、前記フローを受信する仮想マシンが受信するトラヒック総流入速度と、該フローのラウンドトリップディレイ後のトラヒック流入速度に該仮想マシンへの全ての受信トラヒック流入速度に対する該フローの寄与分の逆数をかけたものとを引いた残帯域が０を下回る場合、 該フローが輻輳を起こすと予測するステップと、
前記フローの送信元ホストに当該フローに関する輻輳通知を行うステップと、
を有する。
【００１３】
上記目的を実現するため本発明によるプログラムは、 請求項４又は請求項５に記載の各ステップについて、仮想マシンのハイパーバイザにおけるコンピュータで実行することでネットワークトラヒックを制御する。
【発明の効果】
【００１４】
以上のように、本発明は、輻輳を起こす可能性があるフローに対して輻輳制御を行うことにより、仮想マシン環境下においても、同一物理ホスト上の仮想マシン間のトラヒックを輻輳させる事無く通信させる事で可能となり、パケットロスやスループットの低下を防ぎ、顧客満足度を維持、向上させる事が出来る。
【図面の簡単な説明】
【００１５】
【図１】本発明のネットワークトラヒック制御装置の動作概要を示す。
【図２】第１の実施形態におけるネットワークトラヒック制御装置のシステム構成を示す。
【図３】ネットワークトラヒック制御装置の動作フローチャートを示す。
【図４】第２の実施形態におけるネットワークトラヒック制御装置のシステム構成を示す。
【発明を実施するための形態】
【００１６】
本発明を実施するための最良の実施形態について、以下では図面を用いて詳細に説明する。図１に、本発明のネットワークトラヒック制御装置の動作概要を示す。
【００１７】
ネットワークトラヒック制御装置は、本実施形態では、物理ホストのハイパーバイザにて動作する。
（１）物理ホストＡ外部から個々の仮想マシン（ＶＭ１、ＶＭ２）が受信するトラヒック量を任意の識別子／アドレス等の組み合わせで指定するフロー単位で測定する。
（２）測定したフロー毎のトラヒック量から物理ホストの総受信トラヒックの輻輳をＲＴＴ（ラウンドトリップディレイ）を考慮して予測する。
（３）トラヒック輻輳を予測した場合、当該フローの送信元ホスト（ここでは物理ホストＢのＶＭ３）に当該フローに関する輻輳通知を行う。
（４）輻輳通知を受けた当該フローの送信元ホストが、当該フローの送信トラヒックの送信レート制御を行う。
【００１８】
なお、図１の動作概要では、物理ホストＡの仮想マシンが受け取るフローの送信元ホストは、仮想マシンであったが、実マシンであっても動作は同じである。
【００１９】
図２に、本発明の第１の実施形態におけるネットワークトラヒック制御装置のシステム構成を示す。
【００２０】
ネットワークトラヒック制御装置１は、物理ホスト内に含まれ、物理ホストの物理ＮＩＣ（ネットワークインタフェースカード）と複数の仮想マシン（ＶＭ１〜ＶＭｎ）の論理ＮＩＣ間に位置する。ネットワークトラヒック制御装置１は、モニタ部１１、輻輳通知部１２、スケジューラ部１３、およびブリッジ（スイッチ）部１４を備える。
【００２１】
モニタ部１１は、物理ホスト上の全ての仮想マシン宛のトラヒックを、送受信ＩＰアドレス、プロトコル、送受信ポート番号等の任意の組み合わせによるフロー単位でモニタリングし、フロー毎のトラヒック流入量を収集する。
【００２２】
また、モニタ部１１は、受信フロー毎にトラヒックを計測し、ＲＴＴを考慮した輻輳予測を行う。ある仮想マシンが受信する全てのフローのトラヒック総流入量がその仮想マシンへの割り当て帯域と別仮想マシンの空き帯域の和を超えることを予測すると、この予測の原因となったフローを輻輳通知部１２に通知する。
【００２３】
輻輳通知部１２は、通知されたフローの送信元ホストに輻輳通知を行うため、当該フローの送信元ホスト宛の送信パケットの輻輳通知ビットを上書きし輻輳を通知する。
【００２４】
スケジューラ部１３は、仮想マシンのトラヒックをスケジュールし、物理ＮＩＣに出力する。スケジューラ部１３は、物理ホスト上の個々の仮想マシンから送信されるトラヒック間で輻輳が生じないよう、各仮想マシンに割当てられた帯域を、送信元ＩＰアドレスベースでトラヒックのスケジューリングを行う。スケジューラは、例えばＨＴＢ（参考文献：HTB Linux queuing http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm）等、一般的なスケジューラにより送信元ＩＰアドレス、プロトコル、ポート番号等の組み合わせによるフローベースの送信トラヒックの公平制御を行う。
【００２５】
ブリッジ（スイッチ）部１４は、仮想マシンとのインタフェース部であり、仮想マシンから物理ホスト外部に出力されるトラヒックをスケジューラ部１３に送信する機能を有する。
【００２６】
図３は、ネットワークトラヒック制御装置の動作フローチャートを示す。本フローチャートに基づき、ネットワークトラヒック制御装置の動作を詳細に説明する。
（Ｓ１）開始：ネットワークトラヒック制御装置の動作を開始する。なお、モニタ部１１には、仮想マシン毎の割当て帯域が事前に割り当てられる。仮想マシン毎の割当て帯域は基本的に物理ホストの物理ネットワークインタフェースの帯域を同物理ホスト上の仮想マシン数で割った帯域とする。
（Ｓ２）トラヒック収集：モニタ部１１は、一定時間、受信フロー単位でモニタリングし、フロー毎のトラヒック流入量を収集する。
（Ｓ３）フロー抽出：モニタ部１１は、全てのフローから輻輳を起こす可能性のあるフローを式（１）にしたがって選択する。
【数１】
0005783632.tif 000002
【００２７】
ここで、ｆｉはフローｉの流入速度を示し、ＲＴＴｉはフローｉのラウンドトリップディレイを示す。式（１）はフローｉのラウンドトリップディレイＲＴＴｉとフローｉのトラヒック流入加速度ｄｆｉ／ｄｔの積と現在のｆｉの和（すなわちＲＴＴｉ後のフローｉのトラヒック流入速度）を最大にするフローｉを輻輳を起こす可能性のあるフローとして選択する事を示す。これにより、一回の輻輳通知動作で最も多く（効率良く）輻輳回避効果が得られるフローを選択できる。これは、輻輳制御のため送信元ホストに送信レート制御を行わせるフローの選択基準として、輻輳通知動作終了時に、輻輳制御に必要な流入帯域を減少でき、かつ最も多くの流入帯域を減少可能なフローを推定し選択するためである。一方、単純に一時点での最大流入帯域を選択する方法もあるが、送信元への輻輳通知動作、制御動作には遅延が生じるため動作時に流入帯域が減少し輻輳制御に必要な帯域を減少できない可能性がある。したがって、その遅延時間後に、輻輳制御が有効なフローを予測し、選択をする必要がある。
（Ｓ４）輻輳可能性？：次に、モニタ部１１は、以下の式（２）で、このフローｉが輻輳を起こすかどうかを判定する。フローｉが輻輳を起こすと判定された場合は、Ｓ５に進み、起こさないと判定された場合は、Ｓ６に進む。
【数２】
0005783632.tif 000003
【００２８】
式（２）は、当該仮想マシンに割り当てられた帯域とその他の仮想マシンに割り当てられた帯域のうち未使用帯域との和ＡＲから、当該仮想マシンが受信するトラヒック総流入速度Σｉｎｆｉ（ｎは当該仮想マシン宛のフロー数）と、ＲＴＴｉ後のフローｉのトラヒック流入速度ＲＴＴｉ×ｄｆｉ／ｄｔに同仮想マシンへの全ての受信トラヒック流入速度に対するフローｉの寄与分すなわちΣｉｎ（ｄｆｉ／ｄｔ）にｄｆｉ／ｄｔの逆数をかけたものとを引いた残帯域が０を下回る場合、このフローが輻輳を起こすフローと予測し、輻輳通知部１２に通知する。
（Ｓ５）輻輳制御：輻輳通知部１２は、送信元ホストに輻輳通知を行う。以下仮想マシンが、ＴＣＰ／ＩＰプロトコルで通信を行っている場合を例にして説明する。当該ＴＣＰフローに対する、Ａｃｋメッセージを含むＩＰパケットのＴＯＳ（Type of Service）フィールドの上位２ｂｉｔのＥＣＮ（Explicit Congestion Notification）フィールドに輻輳通知部１２でｂｉｔを上書きし、かつＴＣＰヘッダのcontrol bitsの３ビット目に(ECN-echo)フラグを上書きすることで輻輳通知を行う事が出来る（参考文献：RFC3168 The Addition of Explicit Congestion Notification (ECN) to IP）。
【００２９】
輻輳通知を受けた送信元ホストは、一般的なＴＣＰの輻輳回避メカニズム等（参考文献：RFC2001 TCP Slow Start, Congestion Avoidance, Fast Retransmit, and Fast Recovery Algorithms）を用いて、当該フローの送信レートを低下することで輻輳を制御することができる。しかしながら、送信元ホストの輻輳制御メカニズムの実装は本発明では制限しない。
（Ｓ６）再制御？：再度、輻輳制御を行う場合は、Ｓ２に戻り、終了する場合は、Ｓ７に進む。
（Ｓ７）終了：ネットワークトラヒック制御装置の動作を終了する。
【００３０】
なお、Ｓ４およびＳ５において、式（１）で選択されたフローｉのみでなく、式（１）で２番目、３番目に大きいフロー（効果が大きい）についても式（２）で判定し、式（２）を満たす場合、輻輳通知部１２に該フローを通知する事で余裕をもった輻輳制御をする事も出来る。
【００３１】
図４は、第２の実施形態におけるネットワークトラヒック制御装置のシステム構成を示す。本実施形態は、輻輳制御部１５をさらに備える。モニタ部１２は、輻輳通知をモニタし、輻輳通知を受信した場合、輻輳制御部１５は、スケジューラ部１３を制御して送信レート制御を行う事も出来る。
【００３２】
また、以上述べた実施形態は全て本発明を例示的に示すものであって限定的に示すものではなく、本発明は他の種々の変形態様および変更態様で実施することができる。従って本発明の範囲は特許請求の範囲およびその均等範囲によってのみ規定されるものである。
【符号の説明】
【００３３】
１  ネットワークトラヒック制御装置
１１  モニタ部
１２  輻輳通知部
１３  スケジューラ部
１４  ブリッジ（スイッチ）部
１５  輻輳制御部
【図１】
0005783632.tif 000004
【図２】
0005783632.tif 000005
【図３】
0005783632.tif 000006
【図４】
0005783632.tif 000007