(57)【特許請求の範囲】
【請求項１】
ネットワーク内で実行する分散アプリケーションに関するネットワーク帯域幅を、前記ネットワーク内のホスト上で実行する仮想マシン（ＶＭ）において指定し、割り当てる方法であって、
アプリケーションネットワーク仕様を格納するステップであって、各アプリケーションネットワーク仕様は、複数の前記ホスト上の複数の前記ＶＭ上で実行するアプリケーション要素を有する分散アプリケーションのネットワーク要件を指定する、ステップと、
前記ネットワークにおけるネットワーク利用を監視するステップと、
前記アプリケーションネットワーク仕様および前記監視するステップに基づいて、ネットワーク帯域幅要件を判定するステップと、
前記ネットワーク内の前記ＶＭのうちの１つまたは複数を移行させること、および／または前記ホストのうちの１つのホスト上のハイパーバイザーが、ハイパーバイザーよって管理されるＶＭのネットワーク伝送を増加させること、もしくは低減させることによって前記ネットワーク帯域幅要件を満たすステップと、
を含む、方法において、
アプリケーションネットワーク仕様は、対応する分散アプリケーションの要素を通る複数の通信パスを指定し、前記方法は、前記パスのうちの１つのネットワーク要件を満たすように第１のホストから第２のホストにＶＭを移行させるステップをさらに含む、方法。
【請求項２】
前記監視するステップは、前記ホスト上のハイパーバイザーにおいてＶＭのネットワーク統計を取り込み、さらに前記ネットワーク統計を、格納されるように送信するステップを含む、請求項１に記載の方法。
【請求項３】
前記監視するステップは、前記ネットワークの１つまたは複数のルーター、スイッチ、またはロードバランサーによって報告されるネットワーク統計を受信するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記監視するステップは、ハイパーバイザーが、プローブパケットを生成し挿入して送信するステップと、前記プローブパケットを受信するステップと、前記プローブパケットに応じてネットワーク統計を測定するステップと、前記プローブパケットを取り除いて、前記プローブパケットが仮想マシンに渡されないようにするステップとをさらに含む、請求項２又は３に記載の方法。
【請求項５】
費用最小化関数に基づいて前記ネットワーク帯域幅要件を動的に計算するステップをさらに含み、前記費用最小化関数により、帯域幅費用は、時間を関数として変化する、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
ネットワークを介して通信する仮想マシン（ＶＭ）をホストする複数のホストの間でネットワーク利用を分散させる方法であって、各ホストは、ホスト上で実行するＶＭを管理するハイパーバイザーを有し、前記方法は、
１つまたは複数のコンピューターによって格納されたネットワーク情報にアクセスするステップであって、前記ネットワーク情報は、前記ＶＭ上で動作するそれぞれの分散アプリケーションのネットワーク要件を指定する情報からなり、各分散アプリケーションは、複数の前記ＶＭ上で実行する、ステップと、
前記ホストの間でＶＭを移行させること、または前記ハイパーバイザーが、前記ハイパーバイザーが管理する前記ＶＭが利用できるネットワーク容量を増加させること、もしくは低減させることによって、前記アプリケーションの前記ネットワーク要件を満たそうと試みるステップと、
を含む方法において、
前記ネットワーク情報は、所与の分散アプリケーションに関するアプリケーション仕様を含み、前記アプリケーション仕様は、前記分散アプリケーションのそれぞれのアプリケーション要素を表す２つの構成要素を含むネットワーク通信パスを指定し、前記アプリケーション仕様は、前記通信パスに関するネットワーク要件をさらに指定する、
方法。
【請求項７】
ネットワークを介して通信する仮想マシン（ＶＭ）をホストする複数のホストの間でネットワーク利用を分散させる方法であって、各ホストは、ホスト上で実行するＶＭを管理するハイパーバイザーを有し、前記方法は、
１つまたは複数のコンピューターによって格納されたネットワーク情報にアクセスするステップであって、前記ネットワーク情報は、前記ＶＭ上で動作するそれぞれの分散アプリケーションのネットワーク要件を指定する情報からなり、各分散アプリケーションは、複数の前記ＶＭ上で実行する、ステップと、
前記ホストの間でＶＭを移行させること、または前記ハイパーバイザーが、前記ハイパーバイザーが管理する前記ＶＭが利用できるネットワーク容量を増加させること、もしくは低減させることによって、前記アプリケーションの前記ネットワーク要件を満たそうと試みるステップと、
を含む方法において、
前記方法は、
個々のＶＭのＶＭネットワーク利用統計を格納するステップと、
前記ＶＭネットワーク利用統計を、移行させられるべき、または利用できるネットワーク容量が増加される、もしくは低減されるべき１つまたは複数のＶＭを選択するのに使用するステップと、
ＶＭのネットワーク容量を、前記ＶＭを一時停止することによって低減するステップをさらに含む、
記載の方法。
【請求項８】
前記ネットワーク要件のうちの１つに従って特定のＶＭを識別するステップと、前記特定のＶＭをホストするホストによって報告された前記特定のＶＭのネットワーク統計を選択するステップと、前記ネットワーク統計を前記ネットワーク要件のうちの前記１つと比較するステップをさらに含む、請求項６又は７に記載の方法。
【請求項９】
請求項１〜８のいずれか一項に記載の方法を実行するためのプログラム。
【請求項１０】
請求項１〜８のいずれか一項に記載の方法を実行するためのプログラムを記録した記録媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]最新のコンピューティング環境において、分散アプリケーションは、様々なホスト上で実行する、ネットワークを介して協調する、ブラウザーなどのクライアントとインターフェースをとる、データベースサーバーにアクセスする、といったことを行う多数の自律的なユニットから成ることが可能である。ピアツーピアアプリケーション、多階層ウェブアプリケーション、分散ハッシュテーブル、サーバープールまたはサーバークラスターが、分散アプリケーションの例である。そのような分散アプリケーションは、クラウド、データセンターなどにおいて実行し得る。
【０００２】
[0002]ネットワーク通信は、そのようなアプリケーションを効率的に動作させるために必要である。いくつかの事例において、アプリケーションが様々なネットワークパフォーマンス特性、例えば、構成要素間の帯域幅、インターネットに対する、またはインターネット上のクライアントに対する平均スループット、アプリケーションインスタンス当たりの平均帯域幅などを有することが望ましい場合もあり得る。換言すれば、アプリケーションレベルのネットワークパフォーマンス保証を有することが望ましい場合もある。
【０００３】
[0003]しかし、今日まで、そのような保証は達成できていない。ネットワークパフォーマンス保証は、ネットワークレベルで提供されてきた。ルーターが、サービス品質（ＱｏＳ）保証を与えるのに使用されてきたが、これらの保証は、分散アプリケーション全体に向けられてはいない。換言すれば、帯域幅レベルまたは容量レベルを保証するための通常の手段は、アプリケーションにではなく、データネットワーク自体に向けられている。さらに、分散アプリケーションが実行可能な環境において、異なるアプリケーション間でリソースを共有することなどの問題により、分散アプリケーションを通る通信経路に沿うネットワークリソースを保証することは困難になっている。
【０００４】
[0004]ネットワークリソースプロビジョニングがアプリケーションレベルで提供されてきた可能性がある事例においてさえ、ネットワークリソース要件を獲得する、または維持するのに使用される技法には、伝送レート制御機構、スロットリング機構、および他のネットワーク指向のトラフィック制御機構などの技法が関与してきた。分散アプリケーション要素は、しばしば、仮想マシン（ＶＭ）においてホストされるものの、ＶＭ技術は、アプリケーションレベルのネットワーク要件を保証するのに役立つように活用されてはいない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
[0005]仮想マシン（ＶＭ）技術を使用して分散アプリケーションのためにネットワークリソースを制御することに関係する技法が、以下に説明される。
【課題を解決するための手段】
【０００６】
[0006]以下の概要は、後段の「発明を実施するための形態」で説明されるいくつかの概念を紹介するためにのみ含められるにすぎない。この概要は、包括的ではなく、添付の特許請求の範囲に記載される、特許請求される主題の範囲を線引きすることも意図していない。
【０００７】
[0007]任意のアプリケーションのネットワーク利用は、そのアプリケーションの一部をホストする仮想マシン（ＶＭ）を少なくとも含むＶＭのネットワーク利用統計を追跡することによって制御される。ネットワーク利用制御に関して、ＶＭは、アプリケーションの要素についてネットワークプロキシの役割をする。アプリケーションのネットワーク要件に関する仕様が、ネットワーク利用統計に照らして評価される。アプリケーションの或る要素に至る／或る要素からの／或る要素を経由する、ネットワーク容量要件が満たされない場合、１つまたは複数のＶＭが、その要件を満たすように適合されている。例えば、或るＶＭを、余分なネットワーク帯域幅を有するホストロケーションまたはネットワークロケーションから移行させてもよい。または、例えば、要件未満のＶＭに関するネットワーク帯域幅利用可能性を増加させ、適切なホストロケーションまたはネットワークロケーションにおけるＶＭに関する帯域幅利用可能性を低減することも可能である。したがって、アプリケーションレベルの通信パス要件は、ＶＭ適合を使用して満たすことが可能である。
【０００８】
[0008]付帯的な特徴の多くは、添付の図面に関連して考慮される後段の詳細な説明を参照して、後段で説明される。
[0009]本明細書の説明は、添付の図面に鑑みて読まれる後段の詳細な説明から、よりよく理解され、図面では、同様の参照符号が、付随する説明における同様の部分を指し示すのに使用される。
【図面の簡単な説明】
【０００９】
【図１】[0010]例示的な仮想化層を示す図である。
【図２】[0011]仮想マシンおよび仮想マシンイメージと関連して仮想化層の処理および対話を示す図である。
【図３】[0012]分散アプリケーションの例を示す図である。
【図４】[0013]分散アプリケーションの別の例を示す図である。
【図５】[0014]仮想マシン（ＶＭ）適合を使用して分散アプリケーションに関するネットワーク容量を指定するため、およびネットワーク容量をプロビジョニングするためのシステムを示す図である。
【図６】[0015]ＶＭネットワーク報告およびネットワーク使用操作を円滑にする仮想化拡張を伴うホストの例を示す図である。
【図７】[0016]図３の例示的な分散アプリケーションと関連して図５のシステムを示す図である。
【図８】[0017]ＶＭにおいて実行される分散アプリケーションをホストするホストを示す図である。
【図９】[0018]図８の一部分を詳細に示す図である。
【図１０】[0019]例示的なアプリケーションネットワーク仕様を示す図である。
【図１１】例示的なアプリケーションネットワーク仕様を示す図である。
【発明を実施するための形態】
【００１０】
概説および仮想化
[0020]以下に説明される実施形態は、ＶＭ技術を使用して、動的なネットワーク条件が存在する状態でネットワーク容量をもたらすことに関する。説明は、ハイパーバイザー（ｈｙｐｅｒｖｉｓｏｒ）などの仮想化構成要素を含む仮想化技術の概説から始まる。分散アプリケーション、および分散アプリケーションの例が、次に説明される。ネットワークプロビジョニングのためにＶＭ技術を使用することの概説がなされ、その後に、関連するＶＭ拡張の説明、およびそれらの拡張がどのように使用されるかの詳細な説明をする。
【００１１】
[0021]図１は、例示的な仮想化層１００を示す。コンピューター１０２が、中央処理装置（ＣＰＵ）１０６と、メモリー１０８と、ネットワークインターフェース１１０と、不揮発性ストレージ１１２と、バス、ディスプレイアダプタなどの、図示されない他の構成要素とを含むハードウェア１０４を有する。仮想化層１００は、仮想マシン１１４の実行を管理し、円滑にする。図１に示されないものの、各仮想マシン１１４は、通常、関連する仮想ディスクイメージと、ゲストオペレーティングシステムとを有する。簡潔にするため、格納され、さらに仮想マシン１１４に関連する仮想ディスクイメージから実行される、仮想マシン１１４のオペレーティングシステム、場合によりアプリケーションソフトウェアは、ときとしてゲストと呼ばれる。便宜上、「ハイパーバイザー」という用語が、様々な形態の仮想化層を指すのに本明細書で使用される。さらに、後段で説明されるように、仮想マシン１１４が、分散アプリケーションの要素をホストするのに使用される。
【００１２】
[0022]仮想化層１００は、Ｈｙｐｅｒ−Ｖ  Ｓｅｒｖｅｒ（商標）、ＶＭ  Ｗａｒｃ  ＥＳＸサーバー（商標）、Ｘｅｎ、Ｏｒａｃｌｅ  ＶＭ（商標）などの様々な任意の知られている実装形態、または将来の実装形態とすることができる。仮想化層のアーキテクチャーは、仮想マシンモニタ（ＶＭＭ）がホストオペレーティングシステム上で実行される、ホストされるタイプであっても、ハイパーバイザーなどがコンピューター１０２のハードウェア１０４上で直接に実行されるベアメタル（ｂａｒｅ−ｍｅｔａｌ、仮想化）タイプであってもよい。本明細書で使用される場合、「仮想マシン」という用語は、任意の特定のハードウェアアーキテクチャー（例えば、ｘ８６）をシミュレートして、そのハードウェアアーキテクチャーのためのネイティブコードを実行することができるシステムタイプの仮想マシンを指し、ゲストには、仮想マシンは、ハードウェアマシンとほとんど区別がつかないことが可能である。本明細書で説明される仮想マシンは、Ｊａｖａ（登録商標）仮想マシンなどの抽象タイプまたはプロセスタイプの仮想マシンではない。
【００１３】
[0023]仮想化層１００は、仮想化層１００自体によっても、仮想マシン１１４によっても、仮想マシン１１４を管理し、ハードウェア１０４を共有するという基本機能を実行する。様々な技法のいずれかが、ハードウェア１０４から仮想マシン１１４を切り離すのに使用され得る。一実施形態において、仮想化層は、仮想マシン１１４に対応する様々な切り離された環境（すなわち、パーティションまたはドメイン）をもたらすことが可能である。共有される仮想デバイスドライバ、仮想マシン間通信ファシリティー、および仮想マシン管理ＡＰＩ（アプリケーションプログラミングインターフェース）などの仮想化層１００のいくらかが、特権のあるパーティションまたはドメインの中で実行されて、コンパクトで効率的なハイパーバイザーを可能にしてもよい。他の実施形態において、仮想マシン管理、およびハードウェア１０４の整合性のとれた共有のための機能が、一体構造のオンザメタルハイパーバイザーの中に常駐することが可能である。
【００１４】
[0024]図２は、仮想マシン１１４および仮想マシンイメージ１４０と関連して仮想化層１００のプロセスおよび対話を示す。仮想化層１００は、場合により、対応する仮想マシン構成パラメーターに従って、仮想マシン１１４を開始し、さらに実行するプロセス１４２を実行する。仮想マシン１１４（ＶＭ）が開始されると、仮想化層は、関連する仮想マシンイメージ１４０を識別する。実際には、任意の仮想マシンイメージ１４０が、任意の仮想マシン１１４によって使用され得る。仮想マシンイメージ１４０は、仮想化層１００のファイルシステム１４１上に特別にフォーマットされたファイル（例えば、ＶＨＤ）とすることができる。仮想化層１００は、識別された仮想マシンイメージ１４０をロードする。開始された仮想マシン１１４は、仮想マシンイメージ１４０をマウントして、読み取り、おそらく、マスタブートレコードまたは他のブート情報を探し求め、ゲストオペレーティングシステムをブートして、ゲストオペレーティングシステムは実行を始める。
【００１５】
[0025]仮想化層１００は、ゲストのカーネルに対するある種の呼び出し、ハイパーコールなどを扱い、基礎をなすハードウェア１０４に対する仮想マシン１１４のアクセスを協調させながら、仮想マシン１１４の実行を管理する。ゲスト、およびゲストのソフトウェアが動作すると、仮想化層１００は、仮想ディスクイメージ１４０上のゲストの状態を保持することが可能であり、ゲスト、またはゲストによって動作されるアプリケーションが「ディスク」にデータを書き込むと、仮想化層１００が、そのデータを仮想ディスクイメージ１４０のフォーマットに変換し、このイメージに書き込む。
【００１６】
[0026]仮想化層１００は、仮想マシン１１４をシャットダウンするためのプロセス１４４を実行することが可能である。仮想マシン１１４を停止する命令が受け取られると、仮想マシン１１４、および仮想マシン１１４のゲストの状態が、仮想ディスクイメージ１４０に保存され、さらに実行されている仮想マシン１１４プロセス（またはパーティション）が削除される。仮想マシン１１４の仕様は、仮想マシン１１４の後の再起動のためにそのままであることが可能である。
分散アプリケーション
[0027]図３は、分散アプリケーション１６０の例を示す。図３の例は、プレゼンテーション層１６２と、アプリケーション層１６４と、データ層１６６とを有する多層アプリケーションである。図示していないものの、この分散アプリケーションは、要素が、ルーター、ブリッジ、スイッチ、ゲートウェイ、ロードバランサーなどの通信ノードを介して通信するデータネットワークにおいて実行される。プレゼンテーション層１６２は、分散アプリケーション１６０を使用するクライアントとインターフェースをとるウェブサーバーインスタンス１６８または他のサーバーもしくはアプリケーションから成る。中間層１６４が、分散アプリケーション１６０のメインロジックを実装すること、データベースの中のオブジェクトおよびデータの間で変換を行うこと、クライアント要求をデータベースクエリに変換することなどが可能であるアプリケーションインスタンス１７０によって形成される。データ層１６４が、いくつかのデータベースサーバー１７２、データベースインターフェース、データストア、または他の形態の永続的で、効率的なデータストレージを有することが可能である。ロードバランサー１７４が、各層における要素にわたって負荷を分散させることが可能である。各層における要素、例えば、ウェブサーバーインスタンス１６８は、様々な実行状態を有する複製実行可能なまたはソフトウェアスタックである。
【００１７】
[0028]動作の際、分散アプリケーション１６０が、例えば、クライアント、他のアプリケーション、サービスなどから要求を受信する。これらの要求は、アプリケーションインスタンス１７０を相手にトランザクション、またはそれ以外で通信を開始することが可能な、ウェブサーバーインスタンス１６８によって扱われる。次に、アプリケーションインスタンス１７０が、データベースサーバー１７２との対話を有することが可能である。
【００１８】
[0029]図３における各実線は、ネットワーク通信の可能なパスを表す。分散アプリケーション１６０のネットワーク要件に関して、同様の要素の間の実線のうちのいずれか（例えば、パス１７６）、もしくは線の様々な任意のセット（例えば、パスセット１７８）（例えば、ウェブサーバー１６８とロードバランサー１７４の間の線のすべて）、またはこれらの組合せが、ネットワーク要件が指定され、評価され、さらにプロビジョニング可能な潜在的なポイントである。
【００１９】
[0030]図４は、別の例示的な分散アプリケーションである、ピアツーピアアプリケーション２００を示す。複数のピア２０２が、様々なホスト上で（または様々なゲストにおいて）実行される。各ピア２０２は、様々な動作状態ではあるが、概して、同様に振る舞い、さらに同一の機能を実行する。ピアツーピアアプリケーション２００は、分散ハッシュテーブル、分散ストレージシステム、ネットワークサービスなどであることが可能である。ピアツーピアアプリケーションは、ピア２０２同士の間の接続を有することが可能である。ピア２０２は、インターネット２０４を介して外部エンティティと通信することが可能である。また、ピア２０２は、リレーショナルデータベース２０８をもたらすデータベースサーバー２０６などの様々なサービスを使用することも可能である。ピア２０２は、外部要求について実質的にサービス提供するために、ならびにピアレベル相互接続の内部メンテナンスのために通信することが可能である。外部要求が、ピア２０２によって直接に扱われることも、またはそのピアが、その要求についてサービス提供し、応答を戻す他のピア２０２にその要求を渡すことを可能にする情報を有することも可能になり得る。
【００２０】
[0031]図４などにあるような実線は、要素間のネットワークパスを表す。ピア２０２間の線は、ピア間ネットワークパスを表し、さらにピアツーピアアプリケーション２００に至る線は、任意のピア２０２または複数のピア２０２に至るパスを表す。図４などにあるような線のうちのいずれか（例えば、パス２１０、２１２）、または線のセット（例えば、パス２１４）が、ネットワーク容量または帯域幅要件を指定するため、測定された条件に照らして要件を評価するため、および要件を満たすようにＶＭを調整するための候補ターゲットであることが可能である。
アプリケーションレベルのネットワークプロビジョニング（ｐｒｏｖｉｓｉｏｎｉｎｇ）
[0032]図５は、仮想マシン（ＶＭ）適合を使用して、分散アプリケーション２３０に関するネットワーク容量を指定するため、およびネットワーク容量をプロビジョニングするためのシステムを示す。ネットワークコントローラー２３２が、ネットワーク条件、および分散アプリケーション２３２のニーズを評価するための、後段で説明されるプロセスを実行する。分散アプリケーション２３０に関するネットワーク要件（または選好）を指定するネットワーク仕様２３４が与えられる。ネットワーク仕様２３４は、分散アプリケーション２３０に関するネットワーク要件２３６を含む。
【００２１】
[0033]ネットワーク要件２３６が、分散アプリケーション２３０の要素間のアプリケーションレベルのネットワークパスまたはネットワーク接続（例えば、接続をもたらす基礎をなすルーターなどにかかわらず要素間の接続）を特定することが可能である。例えば、図３の例において、ネットワーク要件２３６は、パス１７６またはパスセット１７８を指定することが可能である。図４の例において、ネットワーク要件は、パス２１０、２１２、またはパス２１４を特定することが可能である。そのようなパスまたは接続は、抽象的には、分散アプリケーションのアプリケーション要素２３８、および／または分散アプリケーション２３０に接続される外部要素２４０（アプリケーション要素は、ピア２０２、ウェブサーバー１６８、ネットワークサービスなどの様々なホスト上、またはＶＭゲスト上で実行される分散アプリケーション２３０の部分であることが可能である）の点で特定される。図５の例において、パス２４２および２４４は、対応するネットワーク要件２３６を有する。また、ネットワーク要件２３６は、ネットワーク要件２３６のパス（または複数のパス、もしくはパスのクラス）に対応するネットワークリソース要件をさらに指定する。例えば、パス２４２に関するネットワーク要件２３６が、５０キロバイト／秒（ＫＢＳ）などの特定の（または動的に計算される）帯域幅要件を指定することも可能である。ネットワーク仕様の詳細は、図１０および図１１を参照して後段で説明される。
【００２２】
[0034]また、図５は、ネットワーク統計データ２４６も示す。ネットワーク統計データ２４６は、アプリケーション要素２３８および／またはネットワーク通信ノード（例えば、ルーター、アグレゲーター、ゲートウェイなど）から報告されるネットワーク統計２４８を格納する。また、ネットワーク統計は、ネットワークコントローラー２３２が、基礎をなすデータネットワークの現在のトポロジーのモデルを構築するのに使用するネットワークトポロジー情報を含むことも可能である。そのようなトポロジー情報は、収集されたＢＧＰ（境界ゲートウェイプロトコル）ルーティングデータまたはＯＳＰＦ（オープンショーテストパスファースト）ルーティングデータから導き出すことが可能である。ネットワークトポロジー情報およびトポロジーモデルは、ネットワークプロビジョニングのために必須ではないことに留意されたい。
【００２３】
[0035]より具体的には、ネットワーク統計データ２４６は、アプリケーション要素２３８、アプリケーション要素２３８をホストするホスト、アプリケーション要素をホストするＶＭなどによって消費される現在のネットワーク帯域幅、または履歴上のネットワーク帯域幅についての情報を含むことが可能である。一実施形態において、アプリケーション要素２３８が内部で実行される、ＶＭを管理するハイパーバイザーが、場合により、利用（例えば、帯域幅値）をＶＭのＩＤに関連付ける情報を含め、個々のＶＭのネットワーク利用を監視し、報告する構成要素（図６のメーター２７０参照）を有することが可能である。一実施形態において、分散アプリケーション２３０の要素をホストする各ＶＭのネットワーク活動またはネットワーク消費が、報告され、さらに追跡される。この事例において、システムは、いずれのＶＭがいずれのアプリケーション要素２３８をホストするかを常に把握している。実際、ＶＭは、アプリケーション要素２３８のネットワーク追跡プロキシの役割をする。ネットワーク統計２４８およびネットワーク統計データ２４６の詳細、およびさらなる例が、後段で説明される。
【００２４】
[0036]図５に戻ると、ネットワークコントローラー２３２が、分散アプリケーション２３０のネットワーク要件２３６を対照してネットワーク統計データ２４６を評価する。ネットワークコントローラー２３２は、ネットワーク要件２３６の中で指定された何らかのパス、またはパスのセットもしくはクラス（またはその組合せ）が満たされていない（または満たされない可能性が高い）場合、そのことを判定することが可能である。次に、ネットワークコントローラー２３２は、ホストに、アプリケーション要素２３８が実行されているＶＭをホストするホスト、またはそのような複数のホストにネットワークコントローラー２３２が発行するＶＭ適合２５０を決定する。
【００２５】
[0037]ＶＭ適合２５０は、第１のホスト上のＶＭを停止させること、そのＶＭのディスクイメージを第２のホストに移すこと（必要な場合）、およびそのＶＭを第２のホスト上で開始させることによって第１のホストから第２のホストにＶＭ（または複数のＶＭ）を移行させる、１つまたは複数のＶＭ管理構成要素（図６の管理構成要素２７４を参照）に対する命令であることが可能である。ＶＭ適合２５０は、ハイパーバイザーによって管理されるＶＭのうちの１つまたは複数に関するネットワーク容量を増加させる、または低減させるハイパーバイザーに対する命令であることが可能である。一実施形態において、ハイパーバイザーは、個々のＶＭのネットワークスループットを制御するロジック（図６のレギュレーター２７２を参照）を有する。スロットリングおよび移行は、ネットワーク利用を制御するための効果的で、単純明快な技法であるが、他の技法が使用されてもよい。例えば、一実施形態において、全体の帯域幅が、アプリケーション層におけるインスタンスの数を減らすことによって低減し得る。別の実施形態において、ゲストオペレーティングシステムが、例えば、ゲストオペレーティングシステムのＴＣＰ（伝送制御プロトコル）レート制御アルゴリズムに対してネットワーク飽和条件をスプーフィングすることによって、ネットワーク利用を調整するようシグナリングされる。
【００２６】
[0038]ネットワークコントローラー２３２の実施に関して、ネットワークコントローラー２３２は、様々なコンピューターにおいて実施可能である。一実施形態において、ネットワークコントローラー２３２は、ネットワーク全体にわたってＶＭを管理する仮想マシン管理システム、例えば、システムセンター仮想マシンマネージャ（商標）、ＷＭＷａｒｅ  ＶｉｒｔｕａｌＣｅｎｔｅｒ（商標）などの中に含められる。別の実施形態において、ネットワークコントローラー２３２は、ネットワーク接続を有する任意のホスト上で実行されるスタンドアロンのアプリケーションである。さらに別の実施形態において、ネットワークコントローラー２３２はそれ自体、分散アプリケーションである。ネットワークコントローラー２３２は、分散アプリケーション２３０の一部として実施可能である（場合により、帯域幅がどのように管理され得るかについての制限を伴って）。一実施形態において、ネットワークコントローラー２３２は、同一のネットワーク、および同一のホストを共有する異なる多くの分散アプリケーションを管理する。その場合、ネットワークコントローラー２３２は、１つのアプリケーションに利用可能な帯域幅を、別のアプリケーションの要件を満たすのに役立つように増やす、または減らす能力を有することが可能である。
【００２７】
[0039]図６は、ＶＭネットワーク報告およびネットワーク利用操作を円滑にする仮想化拡張を有するホスト２６８の例を示す。ハイパーバイザー２７４が、ＶＭ２７６、２７８を実行するために、前述したように、知られている仮想化機能を実行する。さらに、ハイパーバイザー２７４は、レギュレーター２７２と、メーター２７０とを有する。メーター２７０は、ホスト２６８上のＶＭに／から伝送されるネットワークデータの量（および／またはレート）についての統計を収集する。一実施形態において、ハイパーバイザーは、ＶＭごとに仮想ＮＩＣ（ネットワークインターフェースカード）デバイスを有することが可能であり、さらに統計は、この仮想ＮＩＣデバイスを介して生成される。
【００２８】
[0040]レギュレーター２７２は、ハイパーバイザー２７４が、ハイパーバイザー２７４が管理するＶＭのネットワークスループットを制御することを可能にする。様々な制御アルゴリズムが使用されてもよい。知られているネットワークレート制御アルゴリズムが使用されてもよい（例えば、キューに入れられたパケットを遅延させてから、伝送することによって）。一部の事例において、いくつかのＶＭ（例えば、分散アプリケーションの一部ではないＶＭ２７８）に関する帯域幅を低減して、アプリケーション要素２３８をホストするＶＭ２７６に関する帯域幅の増加を可能にすることができる。ハイパーバイザーまたは仮想ＮＩＣは、パケットが通過する際、パケットを検査して、対応する実際のネットワークパスを理解し、さらにいずれのネットワークセッションをスロットリングすべきかを判定することができることに留意されたい。
【００２９】
[0041]また、ホスト２６８は、ネットワーク管理を円滑にする管理構成要素２８０を有することも可能である。一実施形態において、管理構成要素２８０は、メーター２７０から統計を収集し、この統計を、ネットワーク統計データ２４６の中に格納するために送信する。また、管理構成要素２８０は、ネットワークコントローラー２３２からの命令に従ってレギュレーター２７２を制御することも可能である。また、管理構成要素２８０は、ネットワークコントローラー２３２からのＶＭ適合に応答してＶＭを移行させる命令を実行することも可能である。
【００３０】
[0042]また、管理構成要素２８０は、ネットワークコントローラー２３２が、様々な仮想化実装形態とインターフェースをとることを可能にする便利な手段であることも可能であり、様々な管理構成要素２８０の実装形態が、それぞれの仮想化実装形態に関して与えられることが可能である。それぞれの仮想化実装形態が、同一のコントローラーに面するＡＰＩ（アプリケーションプログラミングインターフェース）を実施するとともに、別の仮想化実装形態に適した別の仮想化に面するロジックを実施することが可能である。
【００３１】
[0043]管理構成要素２８０、レギュレーター２７２、およびメーター２７０の機能は、使用されている特定の仮想化実装形態に適した仮想化層における任意の箇所に含められ得る。さらに、これらの構成要素は、実際のディスクリートのユニットとして存在する必要はなく、対応する機能が、様々な設計で実行可能である。
【００３２】
[0044]図７は、図３の例示的な分散アプリケーション１６０と関連して図５のシステムを示す。ホスト２６８は、前述したように、ＶＭ２７６を有し、ＶＭ２７６は、ウェブサーバー１６８、アプリケーションインスタンス１７０、およびデータベースサーバー１７２などのアプリケーション要素をホストすることが可能である。メーター２７０およびレギュレーター２７２は、想定されるが、図示されない。より小さいバージョンのホスト２６８は、より大きいバージョンのホスト２６８と同一である。より大きいバージョンは、図８に示されるホスト２６８の詳細を示す。図８は、ＶＭ２７６において実行される分散アプリケーション１６０をホストするホスト２６８を示す。これらのホストのうちのいくつかは、指定されたパスの構成要素であることが可能なサブネットワーク３００内に常駐する。ネットワークコントローラー２３２は、ＶＭ２７６を、データベースサーバー１７２、アプリケーションインスタンス１７０などのアプリケーション要素にマップする情報を保持する。ＶＭ２７６のネットワーク統計が、ネットワーク統計データストア２４６の中に蓄積される。一実施形態において、ネットワーク通信ノード３０２（例えば、ルーター、ゲートウェイ、アグレゲーター）が、ＶＭ２７６にネットワーク通信をもたらす。
【００３３】
[0045]図９は、図８の任意の部分の詳細な図を示す。ホスト２６８Ｂのメーター２７０が、ネットワーク統計データ２４６に送信され格納されるＶＭ２７６メーター統計３２０を蓄積する。ネットワーク通信ノード３０２が、ネットワーク統計、例えば、リンク帯域幅レート、インターフェース統計などをさらにサブミットすることも、サブミットしないことも可能である。ネットワークコントローラー３３２は、任意のネットワーク統計を格納するためのプロセス３３４を実行することが可能であり、このことには、統計を受信すること、および統計をネットワーク統計データ２４６の中に格納することを伴ってもよい。
【００３４】
[0046]ネットワークコントローラー２３２は、ネットワーク内のネットワークトラフィック負荷を移すためのプロセスを実行する。ネットワークコントローラー２３２は、ネットワーク仕様のコレクション３３６から、分散アプリケーションに対応するネットワーク仕様２３４Ａを選択する。次に、この仕様が、分散アプリケーションと関係するネットワーク統計を対照して繰り返し評価される。ネットワークコントローラー２３２が、実際の条件が、（ネットワーク仕様２３４Ａに従って）分散アプリケーションの要件または選好に適合するようにするのに調整が要求されると判定した場合はいつでも、ネットワークコントローラーは、場合により、いずれのＶＭホストがアプリケーションのいずれの要素をホストするかを考慮に入れて、ネットワークからの現在の、または最近のトラフィック統計を解析して、ネットワークトラフィック負荷を移すための１つまたは複数のターゲットを識別する。したがって、ネットワークコントローラー２３２は、それらのターゲットに対してＶＭ適合を実行する。
【００３５】
[0047]ＶＭ適合に関して、一実施形態において、ネットワークコントローラー２３２は、ホスト２６８Ａ上のＶＭ２７６Ａをターゲットとして識別して、ＶＭ１７２Ａ、移行元ホスト２６８Ａ、および移行先ホスト２６８Ｂを識別することが可能な「移行実行」命令３３８を送信する。これに応答して、ホスト２６８Ａ、２６８Ｂが、ＶＭ１７２Ａをホスト２６８Ｂに移行させる。ＶＭ移行に関する技法は、本明細書以外で知られており、説明されている。概して、ＶＭ２７６Ａが、ホスト２６８Ａ上で停止させられ、停止させられたＶＭのディスクイメージ３３８が、ホスト２６８Ｂに移され、または利用可能にされ、さらに、その後、ホスト２６８Ｂの仮想化構成要素が、受信された／アクセスされたディスクイメージ３３８からＶＭ２７６Ａを再起動させる。
【００３６】
[0048]同一の実施形態、または他の実施形態において、ネットワークコントローラー２３２は、ターゲットＶＭのネットワーク容量を調整すること（例えば、様々なＶＭ伝送レートを下げること、および上げること）によって、ネットワークトラフィックが移されるべきであると判定することが可能である。例えば、コントローラー２３２は、指定されたパス要件（例えば、ＶＭ２７６Ｂを含むパス）が満たされていないと判定することが可能である。次に、ネットワークコントローラー２３２は、現在、帯域幅が低減され得る適切な（複数の）ホストにおける１つまたは複数のＶＭ（例えば、しばしば、ホスト２６８Ｂ以外のホスト上にあることが可能な別のアプリケーションに関するＶＭ３４０）を識別することが可能であり、その後、それらのターゲットＶＭに関するネットワークレートまたは帯域幅割当てを増やす／減らす命令３４２を送信する。次に、受取側の（複数の）ホストの、換言すれば、この実施例では、ホスト２６８Ｂのレギュレーター２７２が、ターゲットＶＭの割当てを変更することによって応答する。
【００３７】
[0049]さらに別の実施形態において、ネットワークコントローラーは、様々な負荷の下で伝送の待機時間を監視することによって、ホストの外部のネットワーク要素（例えば、ルーター）の実行能力を推測する。例えば、待機時間は、帯域幅の関数であり、さらに時間とともに待機時間／帯域幅曲線が構築される場合、ＶＭ配置の調整を伝えるようにその曲線（または待機時間と帯域幅を互いに関係付ける他の情報）を使用することが可能である。また、ネットワークパフォーマンスを探るように仮想ＮＩＣにおいて追加のパケットを注入することも可能である。そのようなプローブパケットは、送信元で注入され、さらに宛先で取り除かれる。
【００３８】
[0050]ＶＭレート調節とＶＭ移行（もしくは作成、削除、または一時停止）とのいずれか、あるいは両方が使用され得ることが理解されよう。ネットワーク通信ノード３０２によって報告されるネットワークトポロジーまたはネットワーク統計は、ネットワークコントローラー２３２の意思決定プロセスに伝わっても、伝わらなくてもよい。また、ネットワーク仕様およびネットワークプロビジョニングは、この仕様が、アプリケーション要素の点でパスを指定し、ネットワーク統計が、それらの要素に関して報告されるとともに、それらの要素と互いに関係付けられ、さらに解析および調整が、それらのアプリケーション要素に関して実行されるので、実際、アプリケーションレベルで行われることも理解されよう。このため、必ずしも、ネットワークレベルに入り込むことなしに（そうするのに要求される特権も有さずに）、分散アプリケーションを通る（さらに、場合により、分散アプリケーションに至る／分散アプリケーションからの）パスに関してレート／帯域幅を保証しようと試みることが可能である。とはいえ、一実施形態において、ネットワークコントローラー２３２は、ネットワーク容量が必要とされる場所にネットワーク容量を移すためのさらなる手段としてネットワーク通信ノード３０２に対して命令を発行することも可能である。一部のクラウドまたはデータセンターにおいて、ネットワーク帯域幅は、異なる時点（例えば、時間帯、曜日など）で異なる費用を有することがあり得、さらにシステムは、全体の費用限度または最小化関数を満たすようにネットワーク利用を調整するように構成され得る。
【００３９】
[0051]図１０および図１１は、例示的なアプリケーションネットワーク仕様２３４Ａ、２３４Ｂを示す。ネットワーク仕様２３４Ａ、２３４Ｂは、ＸＭＬ（拡張マークアップ言語）で書くことができる。実施例におけるＸＭＬ要素は、自明である。対応する分散アプリケーションの構成要素または要素、例えば、「ＩｎｔｅｒｎｅｔＧａｔｗａｙ」、「Ｔｉｅｒ１Ａｐｐ」などが定義され得ることを考慮されたい。次に、パスに関する容量仕様が、それらの構成要素の点で定義される。例えば、ネットワーク仕様２３４において、Ｔｉｅｒ１Ａｐｐｓ（さらに、暗黙に、Ｔｉｅｒ１ＡｐｐｓのＶＭ）からＩｎｔｅｒｎｅｔＧａｔｗａｙに至るパスの平均帯域幅が１．５ＭＢＳ（メガバイト／秒）であるべきことを容量仕様が示す。別の仕様は、すべてのＴｉｅｒ１−Ｔｉｅｒ２パスの合計が０．５ＭＢＳを超えなければならないことを示す。一実施形態では、或る仕様は、仕様ステートメントの中のパラメーターの順序によって示されるように、方向感受性とすることができる。ネットワーク仕様は、豊かな表現言語を定義することができ、複雑なパスおよび条件を指定することが可能になる。複雑な条件も指定され得る。また、是正措置も指定され得る。例えば、或る要件が、第１のパス条件、ならびにこの条件を満たすようにターゲットとされるべき別のパスを指定することが可能である。或る要件が、或るパスにおける複数の要素、例えば、構成要素Ａから構成要素Ｃを経由して構成要素Ｂに至る帯域幅を指定することも可能である。
結論
[0052]前述した実施形態および特徴は、揮発性または不揮発性のコンピューター可読の媒体またはデバイス可読の媒体の中に格納された情報の形態で実現可能である。この媒体には、光ストレージ（例えば、コンパクトディスク読取り専用メモリー（ＣＤ−ＲＯＭ））、磁気媒体、フラッシュ読取り専用メモリー（ＲＯＭ）、またはデジタル情報を格納する任意の現在の手段もしくは将来の手段などの媒体が少なくとも含まれるものと考えられる。格納された情報は、コンピューティングデバイスが、前述した様々な実施形態を実行することを可能にする、またはそのような実施形態を実行するように構成するのに使用され得るマシン実行可能命令（例えば、コンパイルされた実行可能バイナリコード）、ソースコード、バイトコード、または他の任意の情報の形態であることが可能である。また、この媒体には、或る実施形態を実行しているプログラムの実行中に中央処理装置（ＣＰＵ）命令などの情報を格納するランダムアクセスメモリー（ＲＡＭ）メモリーおよび／または仮想メモリーなどの揮発性メモリー、ならびに実行可能なプログラムをロードし実行することを可能にする情報を格納する不揮発性媒体が少なくとも含まれると考えられる。これらの実施形態および特徴は、ポータブルデバイス、ワークステーション、サーバー、モバイルワイヤレスデバイスなどを含む任意のタイプのコンピューティングデバイス上で実行可能である。
【図１】
0005984926.tif 000002
【図２】
0005984926.tif 000003
【図３】
0005984926.tif 000004
【図４】
0005984926.tif 000005
【図５】
0005984926.tif 000006
【図６】
0005984926.tif 000007
【図７】
0005984926.tif 000008
【図８】
0005984926.tif 000009
【図９】
0005984926.tif 000010
【図１０】
0005984926.tif 000011
【図１１】
0005984926.tif 000012