(57)【要約】      （修正有）【課題】リソース割振りプロトコルのための方法及び装置を提供する。【解決手段】物理リソースをプライマリ及び冗長仮想インフラストラクチャに割り振るリソース割振り方法であって、１組のリソース、リソースを接続しているリンク、及びその信頼性要件についての要求を受信し、前記要求された信頼性を提供するための冗長ノードの数を計算し、ｎ個のプライマリリソースに対して、ｋ個の冗長仮想リソースを用意し、ｎ：ｋの複製を行う。【選択図】図１
2014238885.tif 000002
【特許請求の範囲】
【請求項１】
物理リソースをプライマリ及び冗長仮想インフラストラクチャに割り振るためのリソース割振りエンジンを備え、前記リソース割振りエンジンが仮想インフラストラクチャを割り振るとき、冗長な仮想インフラストラクチャの物理リソースが複数のプライマリ仮想インフラストラクチャにわたって共有される、ネットワークで使用するための装置。
【請求項２】
物理リソースをプライマリ及び冗長仮想インフラストラクチャに割り振るためのリソース割振り方法であって、
１組のリソース、前記リソースを接続しているリンク、及び要求された信頼性要件についての第１の要求を受信するステップと、
前記要求された信頼性を提供するための冗長ノードの数を計算するステップであって、ｎがプライマリリソースの数、ｋが冗長仮想リソースの数である場合、ｎ個のプライマリリソースについてｋ個の冗長仮想リソースを供給して、ｎ：ｋの複製を達成するステップを含む、ステップと
を含むリソース割振り方法。
【請求項３】
システムによって実行されると、前記システムが物理リソースをプライマリ及び冗長仮想インフラストラクチャに割り振る方法を実行する命令を格納する１つ又は複数の記録可能な記憶媒体を有する製品であって、前記方法が、
１組のリソース、前記リソースを接続しているリンク、及び要求された信頼性要件についての第１の要求を受信するステップと、
前記要求された信頼性を提供するための冗長ノードの数を計算するステップであって、ｎ個のプライマリリソースについてｋ個の冗長仮想リソースを供給して、ｎがプライマリリソースの数、ｋが冗長仮想リソースの数である場合、ｎ：ｋの複製を達成するステップを含む、ステップと
を含む製品。
【発明の詳細な説明】
【優先権】
【０００１】
[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]一実施形態において、冗長性のためのアーキテクチャは、以下の特性を有する。
【００３５】
ｎ：ｋの冗長性。最高で
【数１】
2014238885.tif 000003
の使用率をもたらす１：ｋレベルの冗長性を有することに対して、ｎ個のプライマリリソースの任意のものについて、ｋ個の冗長ノードをバックアップすることができるとき、より良い粒度及び使用率を達成することができる。
【００３６】
ジョイントノード及びリンク冗長性。ノードが故障すると、冗長ノードが保証された接続性、帯域幅で、ほとんど中断なく引き継ぐように、冗長ノード及びリンクが一緒に供給される。
【００３７】
交わらない位置。同じ物理ノードにおいてホストすることができる仮想又は冗長ノードは１つ以下である。
【００３８】
[0034]このように、｜ＮＶ｜＋ｋ個から、物理ノードの故障の数がｋ個を上回る確率が１−ｒを下回らないように、ｋ個の冗長仮想ノードが供給される。言い換えれば、信頼性は、
【数２】
2014238885.tif 000004
として得られ、この場合、
【数３】
2014238885.tif 000005
である。右辺の和は、公知技術である、規則化された不完全なベータ関数Ｉｘ（・，・）に相当する。
【００３９】
[0035]一実施形態において、故障時にｋ個の冗長ノードすべてに対して、十分な量の計算能力及び帯域幅が使用可能である。したがって、リンク及びノードの故障について、回復手順は、ｋ個の冗長ノードのうちの１つ又は複数を持ち出し、確保された冗長リソースを使用するように動作する。一実施形態において、これによってさらに中断が生じる場合があるため、仮想ノードのマイグレーション又はスワッピングは回復を援助することができない。さらに、冗長ノードも故障する場合があるため、冗長ノードは、式（１）において述べられる信頼性を達成するために、任意のノードｃ∈ＣＶの代わりとなることができなければいけない。上述したように、帯域幅予約においてパス分割が使用され、リンクについての別の層の保護及びグレースフルデグラデーションが提供される。
【００４０】
[0036]冗長性のための帯域幅予約は、ＮＫのノードから発せられる１組の重み付けされた無向仮想リンクＬとしてモデル化される。
【００４１】
Ｌ⊆ＮＫ×（ＮＶ∪ＮＫ）＝（ＮＫ×ＮＶ）∪（ＮＫ×ＮＫ）（２）
すなわち、Ｌは、ＮＶの頂点を有する、それ自体の間の冗長ノードからのリンクを含む、２つの２部グラフの結合である。これらのリンクは、仮想ネットワークの埋め込みのためにＧＶに追加される。より形式的に、Ｌは、下の２つの定理によって定義される。
【００４２】
定理１。ａ∈ＮＫ及びｘ∈ＮＶが与えられる。その場合、
【数４】
2014238885.tif 000006
である。これは、クリティカルリンク（ｃ，ｘ）をＬにおけるリンク（ａ，ｘ）によってバックアップする必要があり、したがって、故障のためにｃがａに遷移された場合、ｘは、リソースの新しい位置にまだ接続されていることを示す。
【００４３】
証明：
【数５】
2014238885.tif 000007
及び仮想リンク（ｃ，ｘ）∈ＥＶが存在し、ｃ∈ＣＶであると仮定する。
その時、アーキテクチャは、ｎ：ｋの冗長性を有していない。その理由は、ｃが故障した場合、ａは、ｘに供給される帯域幅を有していないからである。同様に、
【数６】
2014238885.tif 000008
であり、（ａ，ｘ）∈Ｌである場合、ｃが故障した場合、（ａ，ｘ）のために供給される帯域幅は決して使用されない。
【００４４】
推論１。
【数７】
2014238885.tif 000009
であり、この場合、ａ∈ＮＫ及びｃ，ｄ∈ＣＶである。
【００４５】
証明：これは、ｘの領域をＣＶに限定することによる定理１からの直接的な結果である。
【００４６】
[0037]上記は、Ｌが２部グラフＬ１から成ることを明示する。
【００４７】
Ｌ１＝｛（ａ，ｘ）｜∀ａ∈ＮＫ，∀ｃ∈ＣＶ，∃（ｃ，ｘ）∈ＥＶ，ｘ∈ＮＶ｝（３）
【００４８】
定理２。ａ，ｂ＜∈ＮＫが与えられた場合、
【数８】
2014238885.tif 000010
∀ｃ，ｄ∈ＣＶである。これは、クリティカルノードの間にリンクがある場合、各冗長ノード間のリンクが存在しなければならないことを示す。
【００４９】
証明：Ｌにおいてａ及びｂが接続されておらず、しかし、リンク（ｃ，ｄ）∈ＥＶが存在すると仮定する。その時、ｃ及びｄが故障し、ａ及びｂに遷移される場合、帯域幅保証はない。逆に、（ａ，ｂ）∈Ｌであり、
【数９】
2014238885.tif 000011
である場合、（ａ，ｂ）のために供給される帯域幅は決して使用されない。
【００５０】
[0038]これによって、任意の２つのクリティカルノードの間にリンクがある限り、ＮＫの冗長ノード間に完全グラフを含むＬが得られる。冗長ノード間の完全グラフをＬ２によって示す。
【００５１】
Ｌ２＝｛（ａ，ｂ）｜ａ≠ｂ，∀ａ，ｂ∈ＮＫ｝（４）
【００５２】
[0039]Ｌ＝⊆（ＮＫ×ＮＶ）∪（ＮＫ×ＮＫ）であるため、冗長リンクの最小の組は、
【数１０】
2014238885.tif 000012
によって与えられる。この結果は、他の提案されたアーキテクチャより多くのリンクを必要とする。しかし、後者の結果は、故障後の回復されたグラフがＧＶを含むという仮定に基づく。このことは、故障によって影響を受けないノードをＧＶの最初のトポロジの回復のために遷移する必要がないことを確実にしない。この追加の制約は、Ｌを構成する際、考慮に入れられる。それにもかかわらず、この制約が必要ない場合、Ｌを他のソリューションと置き換えることができる。
【００５３】
[0040]マルチコモディティフロー（ＭＣＦ）によって帯域幅が供給されている下記の場合、冗長フローを可能な限り重複させることによって、帯域幅が低減され、又は最低限に抑えられる。これらの重複は、ＭＣＦモデルへの制約とし捕捉される。
［冗長性の共有］
【００５４】
[0041]以下、ｎ：ｋのフォールトトレラントアーキテクチャの利点、及び冗長ノードの共有が使用率をどれだけ増加させ得るかの表示が開示される。説明を簡単にするために、本明細書ではＣＶ＝ＮＶと仮定する。
【００５５】
[0042]図１Ａの小さい３ノードの仮想ネットワークについて考慮する。図１Ｂに示されるように、１ノードの故障を許容する簡単で端的な方法は、１：ｋの許容値を使用することであり、すなわちあらゆる仮想マシンをいったん複製し、複製及びプライマリノードへの論理リンクを作成することである。ｋｓノードの故障のフォールトトレランスは、ｋｓ層の複製によって達成することができる。各物理ノードの故障の確率がｐであると仮定すると、ｎ個のノード及びｅ個のリンクのネットワークについて、ノードの信頼性ｒを達成するために必要な冗長性の層の数は、
【数１１】
2014238885.tif 000013
となる。残念なことに、簡単な複製は、システムにあまりに多くの冗長ノード及び論理リンクを追加し、それぞれｋｓｎ及びｋｓｎ＋３ｋｓｅとなる。
【００５６】
[0043]この方法と、冗長ノードが、すなわちｎ：ｋである、図１Ｃにおけるの３つのノードのいずれかについてのバックアップである他の手法とを比較する。ノード信頼性ｒは、より細かい粒度、及びより少ない数の冗長ノード及びリンクによって提供することができ、（１）によって得られる。冗長ノードの数及びリンク（最大）は、ｋ及び
【数１２】
2014238885.tif 000014
である。図２は、９９．９９９％のノードの信頼性に必要とされる冗長ノードの数について、２つの手法の間の比較を示す。
【００５７】
[0044]予想されるように、冗長ノードの数は、同じレベルの信頼性について、ｎ：ｋの複製より１：ｋの複製でかなり速く増える。実際に、図３でわかるように、ｎ：ｋの手法では、十分に拡縮される。１つの興味深い傾向は、ｋの値が小さい場合、ｎが超線形であるということである。例えば、故障の確率ｐ＝０．０１の曲線について、９５ノードのＶＩは、９９．９９９％の信頼性のためにｋ＝７を必要とし、１９０ノードのＶＩは、ｋ＝１０を必要とする。一見したところ、２つの９５ノードＶＩを割り振るときに、７つずつの冗長ノードを供給するよりも、ｋ＝１０の冗長ノードを共有することに価値がある。
【００５８】
[0045]大きいｋでは、ｎが直線的に増えることに留意されたい。共有はもはや、冗長ノードの数を減らさない。ｎ対ｋの線形の挙動は、結合も有害でないことを意味することにも留意されたい。冗長リンクの数が少なくともｎｋであると想定すれば、冗長ノードを共有するときに、より多くの帯域幅が確保される。一方で、小さいｋでは、より多くの冗長リンクについて、冗長ノードの数の減少がトレードオフされる。
【００５９】
[0046]冗長ノードを共有するのに価値がある方法が２つある。
【００６０】
１）ｋにおける離散型のジャンプ（ｄｉｓｃｒｅｔｅ  ｊｕｍｐ）の使用。例えば、１２ノードのＶＩは、９９．９９９％の信頼性のために４つの冗長ノードを使用する。同じ４つのノードは、同じレベルの信頼性のために、別の１３個のプライマリノードをサポートすることができる。
【００６１】
２）異なるレベルの信頼性を必要とするＶＩ間での非対称の共有。例えば、２１ノードのＶＩは、９９．９９９％の信頼性のために、４つの冗長ノードを使用する。４つの冗長ノードのうちの１つを、９９．９％の信頼性のために、別の５ノードのＶＩと共有することができる。（ｍ個の他のＶＩと共有するとき）より大きいＶＩの信頼性は、下記のように計算することができる。
【数１３】
2014238885.tif 000015
【００６２】
[0047]第１の方法と比較すると、共有後、ｋは不変のままであるため、共有のこれら２つの方法はより良好である。このことは、ＶＩが順次割り振られる場合、稼働しているＶＩが再構成を必要としないことを確実にする。
［仮想データセンターに対するリソース割振りの管理及び適用］
【００６３】
[0048]一実施形態では、最初の管理アーキテクチャは、仮想化データセンターにおいて、仮想エンティティ（例えば、ホストされたサービス）の信頼性保証及びリソースを自律的に管理する。このアーキテクチャにおいて、追加の仮想バックアップノード及びその関連のリンクは、任意のレベルの信頼性保証のために適切に調整される。アイドルの冗長ノードを有するにもかかわらず、より多くの物理リソースを入ってくる新しいサービスが利用できるように、データセンター全体への冗長性のプールは集合的に管理される。さらに、一実施形態において、いくつかのコンポーネントの故障がデータセンター全体を低下させないように、アーキテクチャは、故障に対して障害許容力があるように設計される。
【００６４】
[0049]一実施形態において、冗長機構は、仮想化データセンターにおいて、顧客当たりのレベルで、フォールトトレランスをサポートする。以下は、主要な要求に使用されるリソースの管理の概要、及び仮想化データセンターに適用するための追加の冗長性を提供する。しかし、これらの技術を他の仮想化された環境に適用することができること、及びこうしたことは当業者にとって明らかであることに留意されたい。
仮想化データセンターのためのリソース要求モデルの一例
【００６５】
[0050]リソース要求モデルは、例えばアマゾンＥＣ２クラウドサービス及び他のクラウドサービスプロバイダなど、その物理リソースをリースする仮想化データセンターのものなど、リソースを要求するためのものである。独立サーバインスタンスをリースするより、一実施形態において、リソース要求のモデルは、
【００６６】
１）最低限のＣＰＵ容量の要件を有するワーカー及びマスターノード、並びに
【００６７】
２）これらのノード間の帯域幅保証
を含む全仮想インフラストラクチャ（ＶＩ）に対応する。
【００６８】
[0051]一実施形態において、ワーカーノードは基本的にデータプロセッサ／ナンバークランチャであり、マスターノードはワーカーノードの機能を調整するサーバである。複数のサーバを有するＶＩは、複数のマスターノードを有する。さらに、マスターノードが故障のクリティカルポイントであるため、各ＶＩ要求がマスターノードに関する信頼性保証を要求する。これは、帯域幅保証を加重されたノード間のエッジとする加重グラフとしてモデル化することができ、マスターノードはサブグラフを形成する。このモデルは、様々なニーズを表すのに十分包括的である。
【００６９】
[0052]データセンターのオペレータは、すべての現在のリース及び入ってくる新しいＶＩ要求を管理することを必要とする。
信頼性のための仮想バックアップノード
【００７０】
[0053]一実施形態において、クリティカルなマスターノードに関する信頼性を保証するために、管理アーキテクチャは、空きのあるＣＰＵ及び帯域幅の容量を有する追加のバックアップノードを確保する。すべてのクリティカルなマスターノードの状態を複製し、周知の最適化された同期技術を使用してすべてのバックアップノードに同期することができる。ノードの故障の場合、どのバックアップノードも、故障したノードを置き換えるために「ホットスワップ」の用意ができている。
【００７１】
[0054]図４は、１つのバックアップノード及びそれぞれ割り振られたフェールオーバ帯域幅を備える４ノードのＶＩの一例を示す。図４を参照すると、クリティカルノードＡ及びＢに関して、バックアップノード（黒）及び信頼性のために確保されている帯域幅（点線）が示されている。リンク上の数字は、確保されている帯域幅を表す。このようにして、バックアップノードｅは、クリティカルノードが故障した場合、クリティカルノードに取って代わることができる。
【００７２】
[0055]これは、任意のｋ個のバックアップノードがｎ個のクリティカルノードをカバーするように、容易に拡張することができる。例えば、ｐによって物理ノードの故障の確率を定義する。ｐが物理ノードごとに独立同分布であると推定する。この場合、ｎ個のクリティカルノードに関する信頼性ｒは、以下のように計算される。
【数１４】
2014238885.tif 000016
ｎ＋ｋ個のノードのうちの１つ以下が同じ物理ノード上にホストされると仮定される。下記の表Ｉは、２％の物理ノードの故障率の場合に様々な信頼性保証の下でバックアップノードの数によってサポートすることができるクリティカルノードの最大数を示す。
【表１】
2014238885.tif 000017
バックアップノードの数は、バックアップノードの増加が準直線であるため、表Ｉに示される範囲について十分拡縮する。したがって、冗長性を低減することができるように、いくつかのＶＩにわたってバックアップノードを一緒にプールすることは有益であり、このことは、より良いリソースの使用率につながる。
分散された割振り、冗長マッピング、及び同期
【００７３】
[0056]一実施形態において、効果的に信頼性を管理するために、同じＶＩのすべての仮想ノード、及びそれぞれのバックアップノードは、同じ物理ノード上にホストされない、すなわち、可能な限りデータセンターにわたって分散される。図５は、冗長性をプールし、仮想ノードを分散させる一例を、仮想化データセンターにある４つのＶＩを示すことによって示す。仮想ノードは、同じ物理ノードにスタックされない。クリティカルノードは、その状態をバックアップノードに同期させる。一実施形態において、仮想ノードでのほぼシームレスな動作のために、同期機構がハイパーバイザ層に設けられる。信頼度のレベルに応じて、あるクリティカルノードは、図５のＶＩ―４の場合と同様に、１を超える仮想バックアップノードを必要とする、又はＶＩ―３のようにまったく必要としない場合がある。時として、逆もあり得る。仮想バックアップノード１は、複数のＶＩからの複数のノードをカバーし、ＣＰＵリソースを保護する。このことは、本明細書において、冗長性のプールと呼び、後述する。
仮想データセンターの冗長性のプール
【００７４】
[0057]冗長ノードを一緒にプールし、それらをいくつかのＶＩにわたって共有することによって、バックアップノードの総量及びしたがってアイドルのＣＰＵ容量を低減するために、表Ｉのｎとｋの間の準線形の関係が利用される。例示のために、９９．９９９％の信頼性保証のある５つのクリティカルノードを有するＶＩは、４つのバックアップノードが確保されていることを必要とする。同じレベルの信頼性のために、同じ４つのノードが最高１１個のクリティカルノードをサポートすることができるため、最高６つのクリティカルノードを有する別のＶＩは、追加のバックアップを確保することなく、同じ４つのノードを使用することができる。
【００７５】
[0058]しかし、冗長性のプールは、必ずしも「無料」ではない。無計画なプールは、バックアップノードに関係するフェールオーバ帯域幅を確保する際、かなりのコストをもたらす。ｎ個のクリティカルノード及びｋ個のバックアップノードを含む新しいＶＩ要求に追加される追加のリンクの数は、少なくとも
【数１５】
2014238885.tif 000018
であり、第１の項は、バックアップノードとクリティカルノードとの間に確保されるすべての帯域幅を表し、後者は、バックアップノードを相互接続している帯域幅を表す。したがって、冗長性をプールしながらバックアップノードの数を増加させることは、フェールオーバ帯域幅も増加させるため、逆効果である。
【００７６】
[0059]図６は、２つのＶＩのバックアップノードをプールするときのこのトレードオフを示す。これらの領域の境界は、表Ｉのすべてのｎについて、式ｘ＋ｙ≦ｎ及びｘ，ｙ＞ｎである。見やすいように、これらの線は、境界点がどの線上にもないように、定数によってシフトされる。領域６０１は、ＶＩ−１及びＶＩ−２のバックアップノードをプールすることが完全に価値があるケースを示す。例えば、（５，６）では、５ノードのＶＩ及び６ノードのＶＩがいずれもそれぞれ４つのバックアップノードを必要とする。両方のＶＩに同じ４つのバックアップノードを割り当てることによって、９９．９９９％の同じ信頼性を保証する。これは、領域６０２における場合では、両方のＶＩに対するバックアップノードの数を増やすことなしに行うことができず、例えば、（３，２）では、各ＶＩは、個々に３つのバックアップノードのみを必要とする。しかし、２つを結合すると、５つのノードが追加のバックアップノードを必要とすることになるため、より多くのフェールオーバ帯域幅を必要とする。領域６０３は、１つのＶＩだけが必要より多くのバックアップノードを必要とするケースを表す。
【００７７】
[0060]異なる信頼性保証をサポートしているバックアップノードは、一緒にプールすることもでき、類似のトレードオフ領域を有する。それはすべて、表Ｉに示されるバックアップノードの残りの「サポート容量」に依存する。
仮想化データセンターのための障害許容力のあるアーキテクチャ
【００７８】
[0061]図７は、仮想化データセンターの物理リソースの上にある管理アーキテクチャの一実施形態を示しており、リソース要求を管理する集中化したコントローラとして作用する。各コンポーネントは、個々に機能しているエンティティとなるように設計されており、故障に対して障害許容力を確実にするための方策を有する。
【００７９】
[0062]物理リソースアカウンティングコンポーネント（ｐｈｙｓｉｃａｌ  ｒｅｓｏｕｒｃｅ  ａｃｃｏｕｎｔｉｎｇ  ｃｏｍｐｏｎｅｎｔ）７０６は、入ってくる新しい要求に対するリソースの割振り時に必要な、仮想化データセンターにおいて割り振られていない残りのリソースを追跡する。価格付けポリシー（ｐｒｉｃｉｎｇ  ｐｏｌｉｃｙ）７０５は、動的な価格付けを容易にするために、物理リソースアカウンティングコンポーネント７０６からのその入力を引き出す。リソース割振りエンジン７００及びリソース解放モジュール７０９のみが、物理リソースアカウンティングコンポーネント７０６を更新することができる。一実施形態において、更新は、要求及びリーブイベントに応答して起きる。
【００８０】
[0063]一実施形態において、物理リソースアカウンティングコンポーネント７０６のための障害許容力を確実にする方法が２つある。（ｉ）周知の障害許容力のあるデータベースが使用される、又は（ｉｉ）データの複数のコピーは、データに対する書き込み及び読み取りをそれぞれマルチキャスト及びエニーキャストとして、別々に格納される。一実施形態において、データは、（ＰｈｙＮｏｄｅ，ｒＣＰＵ）及び（ＰｈｙＬｉｎｋ，ｒＢＷ）の形の鍵−値の組として格納され、この場合、ＰｈｙＮｏｄｅ及びＰｈｙＬｉｎｋは、物理ノード及びリンクをそれぞれ一意に識別し、ｒＣＰＵ及びｒＢＷは、使用可能なＣＰＵ及び帯域幅リソースの量をそれぞれ提供する。
【００８１】
[0064]上述したように、時として、ＶＩにわたってバックアップノードをプールするとき、ＣＰＵ及び帯域幅を保護する際のトレードオフが存在する。一実施形態において、信頼性ポリシー７０５は、入ってくる新しいＶＩのバックアップノードをデータセンターにおける別の既存のＶＩと共にプールするべきかどうかを指定する決定ルールのリストを備える。図では、これらのルールは、トレードオフ領域の境界を表す（一例として図６を参照）。故障に対する障害許容力を確実にするための戦略は、物理リソースアカウンティングコンポーネント７０６と同様である。
【００８２】
[0065]リソース割振りエンジン７００は、入ってくる要求に対するリソースをマップし、確保する役割を果たす。図８は、入ってくる各要求にサービスを提供するプロセスの一実施形態のフロー図である。プロセスは、ハードウェア（例えば、論理回路、回路など）、ソフトウェア（汎用コンピュータシステム又は専用マシン上で稼働されるものなど）、又は両方の組み合わせを備えることができるリソース割振りエンジンにおいて処理論理回路によって実行される。図８を参照すると、プロセスは、処理論理回路が入ってくる要求を受信することによって開始する（処理ブロック８０１）。入ってくる要求を受信することに応答して、処理論理回路は、入ってくる要求に対応するために必要なバックアップノードの数を計算する（処理ブロック８０２）。その後、処理論理回路は、バックアップノードを既存のＶＩと共にプールするかどうか検査する（処理ブロック８０３）。処理論理回路がバックアップノードを既存のＶＩと共にプールすると決定する場合、処理論理回路は現在のバックアップに新しい制約及び帯域幅を追加し（処理ブロック８０４）、プロセスは処理ブロック８０７に移行する。そうでない場合、処理論理回路は、新しいバックアップノード及び帯域幅を作り（処理ブロック８０５）、これらの新しいリソースを、リソース割振りのための最初のリソース要求に追加し、プロセスは、処理ブロック８０７に移行する。処理ブロック８０７で、処理論理回路は、外部ツールを介して線形最適化を解決する。こうしたツールの例には、それだけには限定されないが、ＣＯＩＮ  ＣＢＣ、ｉＬｏｇ  ＣＰＬＥＸ、及びＭＯＳＥＫなどがある。
【００８３】
[0066]次に、処理論理回路は、外部ツールの出力を介した使用可能なリソースに基づいてソリューションが実行可能かどうかを決定する（処理ブロック８０８）。より詳細には、ソルバー（solver）が稼働され、ソルバーが所与の制約を有するソリューションを探し出すことができない場合、ソリューションは実行可能ではない。ソルバーがソリューションを戻す場合、ソリューションは実行可能である。そうである場合、処理論理回路は、他のコンポーネントを更新し（処理ブロック８０９）、プロセスが終了する。そうでない場合、処理論理回路は、リソース要求を拒否し（処理ブロック８１０）、プロセスが終了する。
【００８４】
[0067]一実施形態において、仮想ノードから物理ノード、及び仮想リンクから物理パスへのマッピングの問題は、仮想ノード間の帯域幅予約が物理ノード間のフローであり、仮想ノードと物理ノードとの間のフローの存在がマッピングを示すというマルチコモディティフロー問題として、当分野で周知の方法で定式化される。これは、以下の目的に関する線形最適化問題である。
【数１６】
2014238885.tif 000019
式中、ρ及びｆｌｕｖは変数、ρはブール変数であり、仮想ノードｘが物理ノードｕにマップされる場合、真である。ｆｌｕｖは、物理リンク（ｕ，ｖ）上に「流れている」仮想リンク１の帯域幅の量であり、負ではない。ｆｌｕｖについての従来のフロー保護制約が適用され、従来のフロー保護制約（ｆｌｏｗ  ｃｏｎｓｅｒｖａｔｉｏｎ  ｃｏｎｓｔｒａｉｎｔｓ）は、当業者によって十分理解されている。さらに、制約
【数１７】
2014238885.tif 000020
は、仮想ノードと物理ノードと間の１対１のマッピングを確実にし、仮想ノードは、上述したように分散される。ＣＰＵ及び帯域幅に関して新しいＶＩによって消費される全リソースは、残っている物理リソースの量に供され、すなわち、
【数１８】
2014238885.tif 000021
であり、μｘは、仮想ノードｘによって必要とされるＣＰＵ容量である。入力αμｘ及びβ１ｕｖはそれぞれ、リソースがリースされるとき、データセンターのオペレータに対して、ＣＰＵ及び帯域幅当たりの純コスト（マイナス収入）を表す。これらは、後述する価格付けポリシーから導出される。
【００８５】
[0068]バックアップノード及びフェールオーバ帯域幅の追加は、信頼性ポリシー、すなわちバックアップノードがプールされるかどうかに依存する。そうでない場合、問題は、新しいバックアップノード及び帯域幅を含んでＰ１を解くほど単純である。そうでなければ、マッピング変数ρμｘへの追加の制約は、新しいＶＩの仮想ノードと現在の仮想ノードとの間の重複がないことを確実にするために、Ｐ１に追加され、すなわち、すべての占有されたｕについて、ρｕｘ＝０である。
【００８６】
[0069]Ｐ１に対する実行可能なソリューションがある場合、新しい要求にのみ対応することができる。次いで、細い両方向矢印を介してリソース割振りエンジン７００にリンクされているコンポーネント、すなわちＶＩマップ７０７、ホットスワップマップ７０８、及びアカウンティングコンポーネント７０６がＰ１からのソリューションによって更新される。そうでなければ、単に不十分な物理リソースのために、更新が拒絶される。
【００８７】
[0070]このメイン制御コンポーネントが障害許容力を有するようになる簡単な戦略は、複数のインスタンスにわたって同じ要求を実行することである。より効果的な方法は、いくつかの要求を処理しているが、低いｒＣＰＵｕ及びｒＢＷｕｖの値を使用して競合状態を防止するインスタンスを複数有することである。しかし、過度の拒否のリスクがある。
価格付けポリシー
【００８８】
[0071]価格付けポリシーは、Ｐ１の入力αｕｘ及びβ１ｕｖに影響するリソースの価格を指定する。ここで使用する価格付け戦略に固定する必要はなく、むしろ、価格付けモジュール７０５が設けられ、できる限り一般的である。特に、動的な価格付けがサポートされ、この価格付けは、需要を抑えることができ、リソースのより効率的な使用率をもたらすことができる。ある期間にわたる物理リソースアカウンティングモジュール７０６からの入力及びリソース割振りエンジン７０５からのフィードバックにより、価格付けモジュール７０５は、信頼性保証、物理リソースのタイプ（リンク、ノード）、受容率、及びリース期間の面において仮想ＣＰＵ及び帯域幅の価格を動的に設定することができる。
仮想インフラストラクチャマップ及びホットスワップマップ
【００８９】
[0072]ＶＩマップ７０７は、認められるすべてのＶＩ、及び仮想エンティティのその物理リソースに対するマッピング、すなわち、その物理サーバ及び確保されたＣＰＵの量に対する仮想ノードのマップ、及び物理パス及びそのパスに沿って確保された帯域幅の量に対する仮想リンクのマップを記録する。さらに、ＶＩが使用するバックアップノードのプールも格納される。
【００９０】
[0073]ホットスワップマップ７０８は、バックアップノードのすべての現在のプール及びそれぞれの残りのサポート容量を記録する。この情報は、ＶＩマップと共に、入ってくる新しいＶＩがバックアップノードの既存のプールを使用することができるか、又は新しいＶＩのための別の新しいプールを作ることができるかどうかをリソース割振りエンジン７００が決定するのを助ける。一実施形態において、新しいＶＩのためのマッピングのソリューションがいったん取得されると、リソース割振りエンジン７００はこれらの２つのマップに書き込む。
【００９１】
[0074]一実施形態において、これら２つのコンポーネントに対する障害許容力のある戦略は、物理リソースアカウンティングモジュール７０６のものと同じである。その理由は、これらのコンポーネントがデータベースのようなコンポーネントだからである。
リソースの解放
【００９２】
[0075]ＶＩによって使用されるリソースは、リースの終了時に解放されなければならない。競合状態を防止するために、リソース割振りエンジン７００による同期ロックが解除されるまで、リソース解放モジュール７０９は、一時的にこれらのリソースを保持するガベージコレクタとして働く。このコンポーネントが故障する場合、２つのマップに関する簡単なチェック、及び物理リソースのアカウンティング検証がこのコンポーネントを回復する。
同期及び回復機構
【００９３】
[0076]これら２つの機構は、分散された方法で機能しているあらゆる物理ノードにおけるローカルなサービスである。一実施形態において、ノード間の同期は、物理ノードのハイパーバイザで管理され、物理ノード間の監視は、ハートビート、同期信号、又は当業者に周知である他の分散監視方法を介することができる。故障が検出されると、回復手順が開始し、コントロールアーキテクチャで進行中の動作すべての代わりをする。ホットスワップノードは、均一のランダム化によって分散された方法で、各ＶＩの仮想の隣接者によって選択され、結合は任意に中断される。
【００９４】
[0077]したがって、データセンターにおいてホストされる仮想インフラストラクチャにおける信頼性保証を自律的に管理することができるフォールトトレラントアーキテクチャが開示される。ここで、信頼性は、仮想バックアップノードのプール及び確保されたフェールオーバ帯域幅によって保証される。アイドルのＣＰＵ容量を保護するために、バックアップがプールされ、帯域幅に対するトレードオフが定義される。バックアップを含めて、すべての仮想エンティティの物理リソースは、線形最適化フレームワークを介して割り振られる。データセンターのリソース使用率を追跡し、考慮に入れる他のコンポーネントも定義される。個々のコンポーネントは、個々に動作するように設計されており、障害に対する許容力を確実にするための方策を有する。
［リソースの割振り：混合整数計画問題（ＭＩＸＥＤ  ＩＮＴＥＧＥＲ  ＰＲＯＧＲＡＭＭＩＮＧ  ＰＲＯＢＬＥＭ）］
【００９５】
[0078]ＶＩリソース割振り問題は、マルチコモディティフロー問題（ＭＣＦ）に類似する混合整数計画問題として定式化することができる。ノード間の帯域幅の要求は、フローとしてモデル化される。物理ノードと仮想ノードとの間のマッピングは、余分な「マッピング」エッジを追加し、当分野で周知の方法で、フロー問題を解決する際に、仮想ノード当たりこうした１つのエッジだけが使用されることを確実にすることによって構築される。
【００９６】
[0079]一実施形態において、ＭＣＦは、ＶＩノード及びリンクを物理的なインフラストラクチャにマップするために使用される。しかし、ＭＣＦは、（ｉ）バックアップリンクＬが可能な限り重複することができ、（ｉｉ）バックアップノードのマッピングは、好適な１組の物理ノードΦに限定されるように制約する。アルゴリズム１は、Φを取得し、ＶＩ、及びそのバックアップノード、並びにリンクを物理的なインフラストラクチャにマップして、信頼性ｒを保証するための手順を列挙する。
【００９７】
[0080]図９は、帯域幅予約がどのように重複し得るかの一例を示す。図９を参照すると、左は、２つの冗長ノード（黒）を有する２ノード仮想トポロジである。ノードｃは、クリティカルノードである。したがって、ノードｘを冗長ノードにリンクしている１単位の帯域幅が確保されていなければならず、それは結果としてリンクＤＥ上の２単位の予約となり得る。しかし、冗長ノードは常にノードｃの１つのインスタンスしか引き継ぐことができないので、過度の予約が生じる。本明細書において使用されるＭＣＦの制約形式において、任意のトポロジ上のこれらの重複を最大にする試みがある。
【００９８】
[0081]上記のように、既存のＶＩのバックアップノードを、入ってくる新しいＶＩと共有しながら、確実に不変にすることは価値がある。リソース割振り手順が以下に提供される。行６〜１４は、そのバックアップノードを共有する適切なＶＩを貪欲に探す。これらのＶＩ候補を、「サポート容量」に関して配列することができる。例えば、ｋ＝３のバックアップノードは、ｒ＝９９．９９％のために、８〜２１の仮想ノードの間をサポートすることができる。８ノードのＶＩは、２０ノードのＶＩより多くのサポート容量を有しており、したがって好ましい。この配列は、すでに共有されているＶＩを考慮に入れなければならない。行１１は、そのバックアップノードが好適な物理的位置Φに限定されるＶＩを埋め込むことを試みる。共有が可能でない場合、バックアップノードは行１５のようにＮＰにおけるどこからでも選択される。
【表２】
2014238885.tif 000022
【００９９】
[0082]ＭＣＦ問題は、以下の通りに定義される。マッピングのための拡張エッジの組をＲＰによって示し、
【０１００】
ＲＰ＝{（ｕ，ｘ),（ｘ,ｕ)｜∀ｘ∈ＮＶ∪ＮＫ，ｕ∈Φ[ｘ]}  (７)
となり、この場合、各エッジは無限の帯域幅を有する。Φ［ｘ］⊆ＮＰは、仮想ノードｘをホストすることができる物理ノードの組である。ｘがバックアップノードであり、別のＶＩのバックアップと共有されることになっている場合、Φ［ｘ］はアルゴリズム１で定義されたΦに等しい。図１０は、この拡張構造の一例を示す。ノードａ及びｂは、別のＶＩの冗長ノードである。これらのノードは、物理ノードのＣ及びＤにあり、ノードｘ及びｙを有する新しいＶＩの冗長ノードであり得る。同じＶＩのノードが同じ物理ノードにホストされない場合があるので、Φ［ａ］＝｛Ｃ｝，Φ［ｂ］＝｛Ｄ｝、及びΦ［ｘ］＝Φ［ｙ］＝｛Ａ，Ｂ，Ｅ｝である。
【０１０１】
[0083]３つの組は、以下の通りに定義される。
【０１０２】
ＮＡ＝ＮＰ∪ＮＶ∪ＮＫ（８）
【０１０３】
ＥＡ＝ＥＰ∪ＲＰ（９）
【０１０４】
ＣＫ＝ＣＶ∪｛ｘ｜ｘ∈ＮＶ，∃（ｃ，ｘ）∈ＥＶ，∀ｃ∈ＣＶ｝（１０）
この場合、ＮＡは、すべての仮想、物理、及び冗長ノードの組であり、ＥＡは物理及びマッピングエッジの組であり、ＣＫは、冗長ノードがＬ１においてリンクされるノードの組である。
【０１０５】
[0084]一実施形態において、仮想ノードとバックアップノードとの間の帯域幅予約は、フローとしてモデル化される。これらのフローによって使用される帯域幅の量は、ＭＣＦ問題に対する変数である。一実施形態において、４種類のフローがある。
【０１０６】
２つの仮想ノードの間のフロー。ｘ，ｙ∈ＮＶ。リンク（ｉ，ｊ）∈ＥＡにおいて使用する帯域幅の量は、ｆｘｙ［ｉｊ］によって示される。
【０１０７】
Ｌ１:冗長ノードａ∈ＮＫと仮想ノードｙ∈ＣＫとの間のフロー。冗長ノードａが何らかの仮想ノードｘを引き継ぐ場合を除いて、これらのフローのいずれかにおける実際の帯域幅は、ゼロである。こうした回復が生じるときに、リンク（ｉ，ｊ）∈ＥＡにおいて使用される帯域幅の量は、
【数１９】
2014238885.tif 000023
によって示される。これによって、冗長なフロー間の重複のモデル化が可能になる。
【０１０８】
冗長ノードＮＫと仮想ノードｘ∈ＣＫとの間のリンクにおける集計フロー。これは、リンク（ｉ，ｊ）上での重複後確保された帯域幅の実際の量を反映する。これは、ｆ0ｘ［ｉｊ］で示される。
【０１０９】
Ｌ２：２つの冗長ノードａ，ｂ∈ＮＫ間のフロー。リンク（ｉ，ｊ）∈ＥＡにおいて使用される帯域幅の量は、
【数２０】
2014238885.tif 000024
によって示される。
【数２１】
2014238885.tif 000025
のフローとは異なり、これらのフローは、重複しない。これは、Ｌ１リンクに対する追加の信頼性を提供しない、仮想ノードｘを介してノードａとｂとをリンクするパス（ａ，ｘ，ｂ）を有することの取るに足らないソリューションを回避するためである。
【０１１０】
[0085]一実施形態において、物理ノードと、仮想又は冗長ノードとの間の双方向のマッピングは、二値変数ｐｉｊ，（ｉ，ｊ）∈ＲＰによってモデル化される。リンク（ｉ、ｊ）及び（ｊ，ｉ）の間を流れているフローの総量が正である場合、ρｉｊ＝１、そうでない場合、０である。したがって、ＭＣＦに対するソリューションがρｘｕ＝１を提供する場合、仮想ノードｘは、物理ノードｕ上にホストされる。
【０１１１】
[0086]ＭＣＦの目的関数は、
【数２２】
2014238885.tif 000026
として定義され、この場合、αｗ及びβｕｖはそれぞれ、ノード及びリンクの重みである。これによって、割り振られる計算及び帯域幅の加重和が最低限に抑えられる。負荷バランシングを達成するために、重みはそれぞれ、
【数２３】
2014238885.tif 000027
及び
【数２４】
2014238885.tif 000028
と設定することができる。ＭＣＦに対する制約は、以下の通りである。
マッピング制約：
【数２５】
2014238885.tif 000029
【数２６】
2014238885.tif 000030
【０１１２】
ρｉｊ≦Ｈｊｉ，∀（ｉ，ｊ）∈ＲＰ（１４）
【０１１３】
ρｉｊ＝ρｊｉ，∀（ｉ，ｊ）∈ＲＰ（１５）
制約（１２）及び（１３）は、各仮想ノードが単一の物理ノードのみにマップされ、１つの物理ノードに１つ以下の仮想ノードしかマップできないようにすることを確実にする。制約（１４）及び（１５）は、実行可能なフローがリンク（ｉ，ｊ）上にマップされるとき、二値変数ρｉｊを強制的に１にし、そうでなければ０にする。
（共有を条件とした）計算容量の制約：
【０１１４】
ｐｉｕμｕ≦Ｍｕ，∀ｕ∈ＮＰ，∀ｉ∈ＮＶ∪ＮＫ  （１６）
これは、マップされた仮想及び冗長ノードが物理ノードｕ上の使用可能な容量Ｍｕを超えないことを確実にする。冗長ノード、ａ∈ＮＫについて、供給される最大能力は、
【数２７】
2014238885.tif 000031
である。さらに、この容量が共有の冗長ノードのものを超える場合、バランスが供給されるだけで良い。
２つの仮想ノード間の帯域幅予約のためのフロー保護制約：
【数２８】
2014238885.tif 000032
【数２９】
2014238885.tif 000033
【数３０】
2014238885.tif 000034
【０１１５】
[0087]制約（１７）及び（１８）は、仮想ノードｘから仮想ノードｙに発せられる仮想リンク（ｘ，ｙ）の総帯域幅ηｘｙを定義する。制約（１９）は、フローが中間の物理ノードで保護されることを確実にする。すなわち、ノードｕから流れている総帯域幅がそのノード内に流れ込む総帯域幅に等しい。
Ｌ１リンク上の帯域幅を確保するためのフロー保護及び重複制約：
【数３１】
2014238885.tif 000035
【数３２】
2014238885.tif 000036
【数３３】
2014238885.tif 000037
【数３４】
2014238885.tif 000038
冗長ノードａがクリティカルノードｘの代わりをする仮想ノードｙへの各フローについて、制約（２０）〜（２２）は、（１７）〜（１８）における仮想フローのものと似たフロー保護モデルを定義する。制約（２３）は、すべてのａにわたって合計される代わりに、重複し得る冗長なフローを処理する。１つの冗長ノードａのみが、いつでもクリティカルノードｃの代わりとなり得る。次いで、フロー
【数３５】
2014238885.tif 000039
及び
【数３６】
2014238885.tif 000040
は、重複する可能性があり、すなわち、リンク（ｉ，ｊ）について、
【数３７】
2014238885.tif 000041
である。しかし、重複は、フロー
【数３８】
2014238885.tif 000042
及び
【数３９】
2014238885.tif 000043
では起こらない可能性があり、この場合、冗長ノードａは、クリティカルノードｃの代わりとなり、別のノードｂは、クリティカルノードｄの代わりとなる。これは、最大ｋ個の置き換えまで生じる。制約（２３）は、これらの関係を捕捉する。
（共有及びＣＶを条件とした）Ｌ２リンク上の帯域幅予約のためのフロー保護制約：
【数４０】
2014238885.tif 000044
【数４１】
2014238885.tif 000045
【数４２】
2014238885.tif 000046
２つの冗長ノードａとｂとの間のフロー保護制約は、（１７）〜（１９）における仮想フローのものと変わらない。供給される帯域幅は、ＣＶのノードを相互接続する仮想リンクの最大数である。しかし、これらの制約は、２つのケースにおいてのみ必要である。
【０１１６】
１）
【数４３】
2014238885.tif 000047
定理２から、クリティカルノードを相互接続している仮想リンクがある場合、Ｌ２についての帯域幅を供給するだけで良い。
【０１１７】
２）共有。帯域幅は、共有されることになっているＶＩにおいて、すでに供給されている。帯域幅の供給が十分でない場合、これらの制約は、バランスを供給するために存在する。
物理リンクにおけるリンク容量制約：
【数４４】
2014238885.tif 000048
制約（２７）は、両方向の物理リンク（ｕ、ｖ）上のすべてのフローを考慮に入れる。これは、物理的に残っている帯域幅Ｈｕｖ未満でなければならない。
拡張マッピングリンクにおけるリンク容量制約：
【数４５】
2014238885.tif 000049
厳密に言えば、帯域幅Ｈｉｊが無限であるため、マッピングリンクにおける制約はないはずである。しかし、この制約は、マッピング制約（１４）及び（１５）と連動して、いずれかの方向のそのリンクにおける任意の正のフローがある場合、マッピング二値変数ρｉｊを強制的に１にし、そうでない場合０にする。
領域制約：
ｆｘｙ［ｉｊ］≧０，∀ｉ，ｊ∈ＮＡ，∀（ｘ，ｙ）∈ＥＶ（２９）
【数４６】
2014238885.tif 000050
【０１１８】
ｆ０ｘ［ｉｊ］≧０，∀ｉ，ｊ∈ＮＡ，∀ｘ∈ＣＫ（３２）
【０１１９】
ρｉｊ∈｛０，ｌ｝，∀（ｉ，ｊ）∈ＲＰ（３３）
これらは、この変更されたＭＣＦ問題のすべての変数における領域制約であり、すべてのフローは、非ゼロでなければならず、マッピング変数はバイナリである。
【０１２０】
[0088]インフラストラクチャが急速に仮想化されるにつれて、信頼性保証を仮想化インフラストラクチャに提供する必要性が増加している。上記には、仮想化層自体における信頼性保証について記載されている。冗長ノードは、ネットワークにわたって分散される仮想ノードとすることができる。このために、供給された帯域幅を完備したｎ：ｋの冗長アーキテクチャ、及び物理ネットワークにわたって仮想化されたネットワークを割り振る方法が提案される。冗長ノード及びリンクによって使用されるリソースを保護するために、これらの冗長ノードをＶＩにわたって共有することができ、供給の間、それらの帯域幅が重複する。
コンピュータシステムの一例
【０１２１】
[0089]図１１は、本明細書において記載されている１つ又は複数の動作を実行することができるコンピュータシステム例のブロック図である。図１１を参照すると、コンピュータシステム１１００は、典型的なクライアント又はサーバコンピュータシステムを備えることができる。コンピュータシステム１１００は、情報を伝えるための通信機構又はバス１１１１、及びバス１１１１に結合されて情報を処理するためのプロセッサ１１１２を備える。プロセッサ１１１２は、それだけには限定されないが、ペンティアム（Ｐｅｎｔｉｕｍ）（商標）、パワーＰＣ（ＰｏｗｅｒＰＣ）（商標）、アルファ（Ａｌｐｈａ）（商標）など、マイクロプロセッサを含む。
【０１２２】
[0090]システム１１００は、ランダムアクセスメモリ（ＲＡＭ）、又はバス１１１１に結合されてプロセッサ１１１２によって実行される命令及び情報を格納するための他の動的な記憶デバイス１１０４（メインメモリと呼ばれる）をさらに備える。プロセッサ１１１２による命令の実行中に一時的数値変数又は他の中間情報を格納するために、メインメモリ１１０４を使用することもできる。
【０１２３】
[0091]コンピュータシステム１１００は、読み取り専用メモリ（ＲＯＭ）及び／又はバス１１１１に結合されてプロセッサ１１１２のための静的情報及び命令を格納するための他の静的記憶デバイス１１０６、並びに磁気ディスク又は光ディスクなどのデータ記憶デバイス１１０７及びその対応するディスクドライブも備える。データ記憶デバイス１１０７は、バス１１１１に結合されて情報及び命令を格納するためのものである。
【０１２４】
[0092]コンピュータシステム１１００は、バス１１１１に結合されて、コンピュータユーザに対して情報を表示するために、例えばブラウン管（ＣＲＴ）又は液晶式ディスプレイ（ＬＣＤ）などのディスプレイデバイス１１２１にさらに結合することができる。英数字及び他のキーを含む英数字入力デバイス１１２２も、バス１１１１に結合されてプロセッサ１１１２に情報及びコマンドの選択を伝えるようにすることができる。追加のユーザ入力デバイスは、バス１１１１に結合されて、プロセッサ１１１２に指示情報及びコマンドの選択を伝える、及びディスプレイ１１２１上のカーソルの動きを制御するための、例えばマウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キーなどのカーソル制御１１２３である。
【０１２５】
[0093]バス１１１１に結合することができる他のデバイスは、ハードコピーデバイス１１２４であり、このデバイスを使用して、例えば紙、フィルム、又は類似のタイプの媒体に情報を表すことができる。バス１１１１に結合することができる他のデバイスは、電話又はハンドヘルドパームデバイスに対して通信を行うための有線／無線通信機能１１２５である。
【０１２６】
[0094]システム１１００及び付随するハードウェアのコンポーネントの任意のもの又は全部を本発明において使うことができることに留意されたい。しかし、コンピュータシステムの他の構成がデバイスの一部又は全部を含むことができることを理解されよう。
【０１２７】
[0095]本発明の多くの変更及び修正は、間違いなく前述の説明を読んだ後に当業者にとって明らかになるが、例として示され、記載されるいかなる特定の実施形態も決して制限と見なされないことを理解されたい。したがって、様々な実施形態の詳細への言及は、本発明にとって重要であると見なされる特徴だけを詳述する請求項の範囲を制限することを目的としない。
【図１】
2014238885.tif 000051
【図２】
2014238885.tif 000052
【図３】
2014238885.tif 000053
【図４】
2014238885.tif 000054
【図５】
2014238885.tif 000055
【図６】
2014238885.tif 000056
【図７】
2014238885.tif 000057
【図８】
2014238885.tif 000058
【図９】
2014238885.tif 000059
【図１０】
2014238885.tif 000060
【図１１】
2014238885.tif 000061
【手続補正書】
【提出日】平成26年8月22日(2014.8.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
物理リソースをプライマリ及び冗長仮想インフラストラクチャに割り振るためのリソース割振り方法であって、
１組のリソース、前記リソースを接続しているリンク、及び要求された信頼性要件についての第１の要求を受信するステップと、
前記要求された信頼性を提供するための冗長ノードの数を計算するステップであって、ｎがプライマリリソースの数、ｋが冗長仮想リソースの数である場合、ｎ個のプライマリリソースについてｋ個の冗長仮想リソースを供給して、ｎ：ｋの複製を達成するステップを含む、ステップと
を含むリソース割振り方法。
【請求項２】
前記リソースのそれぞれがノードを備える請求項１に記載の方法。
【請求項３】
前記物理リソースが計算容量及び帯域幅を備える請求項１または２に記載の方法。
【請求項４】
前記ｎ個のプライマリリソースのうちの任意のものについて、前記ｋ個の冗長リソースがバックアップされる請求項１から３のいずれか一項に記載の方法。
【請求項５】
ノード間に挿入するための冗長リンクを決定するステップをさらに含む請求項１から４のいずれか一項に記載の方法。
【請求項６】
既存の割り振られた要求の冗長リソースが前記第１の要求と共有されているとき、前記第１の要求のそれぞれの信頼性、及び前記既存の割り振られた要求のものを計算するステップと、
前記計算された信頼性及び使用可能な物理リソースに基づいて、前記第１の要求の冗長リソースを前記既存の割り振られた要求と結合するかどうかを決定するステップと、
前記第１の要求の冗長リソースと前記既存の割り振られた要求とを結合するかどうかを決定する結果に基づいて、前記第１の要求の前記冗長リソースと前記既存の割り振られた要求のものとを結合するステップと
をさらに含む請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記リソースがサーバリソース及びこれらのリソースを接続するリンクを含む請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記信頼性要件が少なくとも１つの用途に関連する請求項１から７のいずれか一項に記載の方法。
【請求項９】
仮想ノード間の帯域幅予約をフローとしてモデル化するステップをさらに含む請求項１から８のいずれか一項に記載の方法。
【請求項１０】
物理ノードと仮想又は冗長ノードとの間の双方向のマッピングを二値変数によってモデル化するステップをさらに含む請求項１から９のいずれか一項に記載の方法。
【請求項１１】
各仮想ノードが単一の物理ノードのみにマップされ、１つの物理ノードに１つ以下の仮想ノードしかマップされない請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
システムによって実行されると、前記システムが物理リソースをプライマリ及び冗長仮想インフラストラクチャに割り振る方法を実行する命令を格納する１つ又は複数の記録可能な記憶媒体を有する製品であって、前記方法が、
１組のリソース、前記リソースを接続しているリンク、及び要求された信頼性要件についての第１の要求を受信するステップと、
前記要求された信頼性を提供するための冗長ノードの数を計算するステップであって、ｎ個のプライマリリソースについてｋ個の冗長仮想リソースを供給して、ｎがプライマリリソースの数、ｋが冗長仮想リソースの数である場合、ｎ：ｋの複製を達成するステップを含む、ステップと
を含む製品。
【外国語明細書】
2014238885000001.pdf