【文献】
AARON GEMBER,et al,”STRATOS:VIRTUAL MIDDLEBOXES AS FIRST−CLASS ENTITIES”,[ONLINE],University of Wisconsin−Madison Department of Computer Sciences,2012年6月18日,pp.1−15,URL,http://pages.cs.wisc.edu/ ̄akella/CS838/F12/838−CloudPapers/Stratos.pdf
(58)【調査した分野】(Int.Cl.,DB名)
前記複数のスロットのうちの前記一部分の前記割当てが、前記スロットの間のデータ転送における冗長性除去後の必要なスロット帯域幅に基づく、請求項4に記載の装置。
前記複数のスロットのうちの前記一部分を割り当てる前記ステップが、前記スロットの間のデータ転送における冗長性除去後の必要なスロット帯域幅に基づく、請求項7に記載の方法。
【発明を実施するための形態】
【0027】
理解を容易にするために、実質的に同じもしくは類似の構造または実質的に同じもしくは類似の機能を有する要素を示すために、同じ参照番号が使用されている。
【0028】
説明および図面は、単に本発明の原理を示しているにすぎない。したがって、当業者は、本明細書には明確に記載または示されないが、本発明の原理を実施し、その範囲内に含まれる様々な配置を考案することができ得ることを諒解されよう。さらに、本明細書に説明されるすべての例は、主に、明確に、本技術を促進するために発明者によって寄与される概念および本発明の原理を読者が理解するのを援助するための教育上の目的のためであるものとされ、そのような具体的に詳述された例および条件に限定されないものとして解釈されるべきものとする。さらに、本明細書で使用される際、「または」という用語は、特に明記しない限り、非排他的なまたはを指す(たとえば、「あるいは」または「または代替的に」など)。また、いくつかの実施形態が新しい実施形態を形成するために1つまたは複数の他の実施形態と結合され得るので、本明細書に記載される様々な実施形態は必ずしも相互に排他的であるというわけではない。
【0029】
様々な実施形態は、スロット通信対にわたる、およびスロット通信対内の冗長性に基づいてスロットを配置するためのREアウェア技法を提供する方法および装置を提供する。有利には、そのような配置は、コンテナ(たとえば、ラックまたはデータ・センター)間リンクの全体的な帯域幅の使用量を低減することができる。
【0030】
図1は、ネットワーク180を介してクライアント190−1および190−2にサービスするREアウェア・データ・センター100の一実施形態を示す。REアウェア・データ・センター100は、ラック110−1および110−2(総称してラック110)と、トップ・オブ・ラック・スイッチ(top of the rack switches)130−1および130−2(総称してToRスイッチ130)と、冗長性除去(RE)ボックス140−1および140−2(総称してREボックス140)と、アグリゲーション・スイッチ150−1〜150−2(総称してアグリゲーション・スイッチ150)と、配置コントローラ170とを含む。REアウェア・データ・センター100は、リンク135−1、145−1、155−1、175−1、および185−1(総称してREアウェア・データ・センター・リンク)も含む(明快さのために残りのリンク・ラベルは省略されている)。ラック110は、ToRスイッチ130、REボックス140、アグリゲーション・スイッチ150、および適切なREアウェア・データ・センター・リンクのうちの適切な1つを介して、ネットワーク180に通信可能に接続される。REアウェア・データ・センター100は、任意の適切な構成で設計され得、REアウェア・データ・センター100は、説明の目的で使用されている1つの例示的なアーキテクチャにすぎないことを諒解されたい。配置コントローラ170は、REアウェア・データ・センター100内のラック110におけるリソース(たとえば、処理、メモリ、記憶、またはネットワーク)の割振りを制御する。
【0031】
ラック110は、エンド・ホスト120−1−EH1〜120−1−EH5および120−2−EH1〜120−2−EH5(総称してエンド・ホスト120)を含む。本明細書には2つのラックが示されているが、システム100が含むラックはより少なくてもより多くてもよいことを諒解されたい。システム100のラックのすべてがエンド・ホストを含むとは限らないこともさらに諒解されたい。
【0032】
エンド・ホスト120−1−EH1は、スロット122−1〜122−3(総称してスロット122)(ハッシュドボックスとして示される)と、エージェント160−1−A1(チェックのボックスとして示される)とを含む。エンド・ホスト120−1−EH1には3つのスロットが示されているが、スロットを有していないいくつかのエンド・ホストを含めて、エンド・ホスト120の各々が含むスロットは、より少なくてもより多くてもよい(明快さのために残りのスロットは省略されている)ことを諒解されたい。エンド・ホスト120(たとえば、エージェント160−1−A1〜160−1−A5、および160−2−A1〜160−2−A5)の各々に1つのエージェントが示されているが、エージェントを有していないいくつかのエンド・ホストを含めて、エンド・ホスト120の各々が含むエージェントは、より少なくてもより多くてもよいことをさらに諒解されたい。
【0033】
スロット122は、クライアント190−1および190−2(総称してクライアント190)にサービスするアプリケーション・インスタンスにサービスするように構成される割り振られたリソースの集まりである。本明細書において使用される「スロット」という用語は、処理/計算、メモリもしくはネットワーキング・リソースまたは仮想化されたストレージを備える仮想マシンなど、割り振られたリソースの任意の適切な集まりとすることができる。
【0034】
ToRスイッチ130は、関連するラックおよび適切なアグリゲート・スイッチにおけるエンド・ホスト間でデータを切り替える。たとえば、ToRスイッチ130−1は、ラック110−1におけるエンド・ホストから他のラック(たとえば、ラック110−2)におけるエンド・ホストに、またはアグリゲート・スイッチ150−1または150−2を介してネットワーク180にデータを切り替える。
【0035】
REボックス140は、冗長性除去を実行する。特に、REボックス140は、受信データをキャッシュし、二重のトラフィックを抑制する。2つのREボックスが示されているが、システム100が含むREボックスは、より少なくてもより多くてもよいことを諒解されたい。システム100においてToRスイッチの後に配置されるものとして示されているが、REボックスは、冗長性除去を実行するために、システム100の任意の適切な部分に配置され得ることをさらに諒解されたい。さらに、別の構成要素として示されているが、REボックス140は、(a)別々の冗長性除去構成要素、(b)たとえばエンド・ホスト120のうちの1つもしくは複数、またはToRスイッチ130のうちの1つまたは複数などの構成要素にあるソフトウェア・モジュール、(c)または任意の他の構成の組合せなど、任意の構成を含むことができる。
【0036】
たとえば、ソースREボックス(たとえば、REボックス140−1)は、エンド・ホスト(たとえば、エンド・ホスト120−1−EH1)から受信されたデータに関連付けられた識別子を作成することができ、作成された識別子をターゲットREボックス(たとえば、REボックス140−2)に送信する。ソースとターゲットのREボックス(両方の方向)の間の次の送信において、ソース側REボックス(たとえば、REボックス140−1)は、アプリケーション・レイテンシを低減し、帯域幅を節約するために、新しく受信されたデータの次の反復されるバイト・シーケンスを作成された識別子と置き換えることによって、データの重複除外を実行することができる。この例では、受信側REボックス(たとえば、REボックス140−2)は、完全な記憶されたバイト・シーケンスを取り出すために作成された識別子を使用し、取り出されたバイト・シーケンスをその宛先(たとえば、エンド・ホスト120−2−EH1)に転送する。
【0037】
アグリゲーション・スイッチ150は、関連するToRスイッチとネットワーク180との間でデータを切り替える。たとえば、ToRスイッチ130−1−1は、適切なアグリゲーション・スイッチ(たとえば、アグリゲーション・スイッチ150−1または150−2)を介して、ラック110−1におけるリソースからネットワーク180にデータを切り替える。
【0038】
エージェント160−1−A1〜160−1−A5、160−2−A1〜160−2−A5、160−3−A1〜160−3−A2、および160−4−A1〜160−4−A2(総称してエージェント160)は、通信(たとえば、スロット間)における冗長性を測定し、1つまたは複数の適切なREアウェア・データ・センター・リンクを介して、これらの測定値を配置コントローラ170に報告する。本明細書で使用される際、「冗長性」という用語は、REボックス140によって重複除外することができる任意のコンテンツ・シーケンスを指し、任意の反復されるコンテンツ・シーケンスを含むものとして広く理解されるものとする。エンド・ホスト120、ToRスイッチ130、およびアグリゲーション・スイッチ150の各々にあるものとして示されているが、システム100が任意の構成のエージェントを含むことができることを諒解されたい。たとえば、エージェントは、(a)エンド・ホスト120の一部またはすべて、(b)エンド・ホスト120の一部またはすべて、およびアグリゲーション・スイッチ150の一部またはすべて、(c)または任意の他の構成の組合せに配置され得る。
【0039】
エンド・ホスト120において、エージェントは、エンド・ホストにあるスロットについてスロット間通信を監視することができる。ToRスイッチ130において、エージェントは、(a)ラック内の異なるエンド・ホスト上のスロットからのスロット間通信、(b)ラック内のエンド・ホストの間の通信、(c)ラック内のエンド・ホストおよび他のラック上のエンド・ホストの間の通信、または(d)その他を監視することができる。分散データ・センター設定を含む一実施形態では、アグリゲーション・スイッチ150上のエージェントは、他のデータ・センターへの送出通信を監視することができる。
【0040】
配置コントローラ170は、スロット(たとえば、スロット122のうちの1つまたは複数)をコンテナ(たとえば、ラック110のうちの1つ、または分散データ・センターにおけるデータ・センター)に割り当てる。ここでは1つの配置コントローラが示されているが、システム100は、より多くの配置コントローラを含むことができること、または1組のデータ・センターに1つの配置コントローラがあり得ることを諒解されたい。これらの実施形態のいくつかでは、システム100内に示されているが、配置コントローラ170は、システム100外に配置され、ネットワーク180を介してシステム100に接続されていてもよい。
【0041】
REアウェア・データ・センター・リンクならびにリンク195−1および195−2は、ワイヤレス通信(たとえば、LTE、GSM、CDMA、bluetooth)、フェムトセル通信(たとえば、WiFi)、パケットネットワーク通信(たとえば、IP)、ブロードバンド通信(たとえば、DOCSISおよびDSL)、ストレージ通信(たとえば、Fibre Channel、iSCSI)など、1つまたは複数の通信チャネルを介した通信をサポートする。単一の接続として示されているが、リンクが任意の数または組合せの通信チャネルでもあってもよいことを諒解されたい。
【0042】
ネットワーク180は、任意の数のアクセスおよびエッジ・ノードならびにネットワーク・デバイスと、任意の数および構成のリンク(明快のために図示せず)を含む。さらに、ネットワーク180は、LTE、GSM、CDMA、ローカル・エリア・ネットワーク(LAN)、ワイヤレス・ローカル・エリア・ネットワーク(WLAN)、広域ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)などを含めて、任意の組合せおよび任意の数のワイヤレスまたはワイヤ・ライン・ネットワークを含み得る。
【0043】
クライアント190−1および190−2は、リンク195−1または195−2のうちの適切な1つを介してネットワーク180上で情報を送受信することができる任意のタイプの通信デバイスを含むことができる。たとえば、通信デバイスは、シン・クライアント、スマートフォン(たとえば、クライアント190−2)、パーソナルまたはラップトップ・コンピュータ(たとえば190−1)、サーバ、ネットワーク・デバイス、タブレット、電子書籍リーダーなどでもよい。通信デバイスは、処理または記憶など一部のタスクを実行するために、例示的なシステム内の他のリソースに依存する、またはタスクを独立して実行し得る。本明細書には2つのクライアントが示されているが、システム100が含むクライアントはより少なくてもより多くてもよいことを諒解されたい。さらに、操作中の様々なときに、クライアントがシステムに追加されたり、システムから取り去られたりし得るので、クライアントの数は、どの時点においても動的であり得る。
【0044】
いくつかの実施形態のうちいくつかにおいては、スロット122のうちのいくつかまたは一部は、仮想マシンである。
【0045】
いくつかの実施形態では、スロット122のうちのいくつかまたは一部は、仮想化されたストレージである。
【0046】
いくつかの実施形態では、ToRスイッチ130は、Ethernetスイッチである。
【0047】
いくつかの実施形態では、アグリゲーション・スイッチ150は、レイヤ2Ethernetスイッチである。
【0048】
REアウェア・データ・センター100のいくつかの実施形態では、REアウェア・データ・センター100は、複数の分散データ・センターのシステムにおける1つの分散データ・センターである。これらの実施形態では、REボックス140は、ToRスイッチ130の後の示された配置の代わりに、またはそれに加えて、アグリゲーション・スイッチ150の後(たとえば、アグリゲーション・スイッチ150とネットワーク180との間)に配置され得る。有利には、REアウェア・データ・センター100がアプリケーション・インスタンスのすべてのスロットに対応するというわけではない(たとえば、いくつかのスロットが他のデータ・センターにおいて割り振られる)場合、これらの分散データ・センター間の帯域幅をより効率的に利用するために、データ・センター間トラフィックを低減するために、REアウェア・データ・センター100が使用され得る。
【0049】
図2は、REアウェア・システム(たとえば、
図1のREアウェア・データ・センター100)がスロットのREアウェア配置を実行するための方法200の一実施形態を示すフローチャートを示す。方法は、1つまたは複数のエージェント160−1〜160−N(たとえば、
図1のエージェント160のうちの1つまたは複数)が、冗長測定値を収集するステップ(ステップ210−1〜210−N)と、報告トリガが行われたことの決定(ステップ220−1〜220−N)に基づいて、収集された測定値を配置コントローラ170(たとえば、
図1の配置コントローラ170)に報告するステップ(ステップ230−1〜230−N)とを含む。方法は、配置コントローラ170が、エージェント160−1〜160−Nから測定値を受信するステップ(ステップ250)と、配置トリガが行われたことの決定(ステップ260)に基づいて、受信された測定値に基づいて、スロット配置を実行するステップと(ステップ270)をさらに含む。
【0050】
方法200では、ステップ210−1〜210−Nは、冗長測定値を収集するステップを含む。特に、測定値は、スロット通信パターンと、スロット対に関連付けられた決定された冗長性とを含む。通信パターンは、スロット間の収集された測定値のトラフィック・マトリックスでもよく、決定された冗長性は、トラフィック・マトリックスにおけるスロット間通信間で識別される冗長トラフィックを含み得る。
【0051】
方法200で、ステップ220−1〜220−Nは、報告トリガが行われたことを決定するステップを含む。トリガの決定に基づいて、方法は、それぞれステップ230−1〜230−Nのうちの1つに進む、またはそれぞれステップ220−1〜220−Nのうちの1つに戻る。トリガは、収集された測定値が配置コントローラ170に送られなければならないことをシグナリングする任意の適切なイベントとすることができる。たとえば、トリガ・イベントは、(a)閾値間隔で定期的にトリガされる、(b)それぞれステップ210−1〜210−Nのうちの1つで収集された測定値に基づく、(c)配置コントローラ170からの要求の受信に基づく、または(d)その他とすることができる。複数のトリガ・イベントが同時に行われ得ることを諒解されたい。
【0052】
方法200で、ステップ230−1〜230−Nは、収集された測定値を配置コントローラ170に報告するステップを含む。特に、収集された測定値は、たとえば、(a)生の収集された測定値、(b)収集された測定値に基づいて圧縮または変更された情報、(c)収集された測定値の集合、または(d)その他など、任意の適切な形で報告され得る。
【0053】
方法200で、ステップ250は、エージェント160−1〜160−Nのうちの1つまたは複数から測定値を受信するステップを含む。
【0054】
測定値が方法を実行する装置にプッシュまたはプルされ得ることを諒解されたい。
【0055】
方法200で、ステップ260は、配置トリガが行われたことを決定するステップを含む。トリガの決定に基づいて、方法は、ステップ270に進む、またはステップ260に戻る。トリガは、配置が実行されなければならないことをシグナリングする任意の適切なイベントとすることができる。たとえば、トリガ・イベントは、(a)閾値間隔で定期的にトリガされる、(b)ステップ250において受信されたエージェント測定値に基づく、または(c)その他とすることができる。複数のトリガ・イベントが同時に行われ得ることを諒解されたい。品質閾値は、推定の最適な
有効コンテナ間帯域幅と比較して、限界値よりも大きい現在の
有効コンテナ間帯域幅など、任意の適切な閾値でもあってもよい。
【0056】
方法200で、ステップ270は、エンド・ホスト(たとえば、
図1のエンド・ホスト120)内にスロットを配置するステップを含む。特に、エンド・ホストに配置されるスロットは、決定され、ステップ250において受信されるエージェント測定値に基づいて、エンド・ホストに配置される。
【0057】
ステップ210−1〜210−Nのうちの1つまたは複数のいくつかの実施形態では、冗長測定値は、スロット間通信における通信内冗長性または通信間冗長性における冗長性の測定値を含む。
【0058】
本明細書で使用される際、「通信内冗長性」という用語は、スロット間通信内の冗長性を意味し、任意のスロット間通信間の冗長性を含むものとして広く理解されるものとする。たとえば、(a)
図1のスロット122−1と122−3
との間の通信内の冗長性、(b)
図1の122−1とエンド・ホスト120−2−EH1におけるスロット(図示せず)
との間の通信内の冗長性、(c)
図3の322−SLOT1と322−SLOT2
との間の通信内の冗長性、または(d)
図3の322−SLOT1と322−SLOT3との間の
通信内の冗長性である。
【0059】
本明細書で使用される際、「通信間冗長性」という用語は、2つのスロット間通信の間の冗長性を意味し、任意の2つのスロット間通信間の冗長性を含むものとして広く理解されるものとする。たとえば、(a)スロット間対スロット122−1/122−3
間の通信と、スロット間対122−1
と図1のエンド・ホスト120−2−EH1におけるスロット(図示せず)
との間の通信との間の冗長性、または(b)
図3のスロット間対322−SLOT1/322−SLOT3
間の通信と、スロット間対322−SLOT2/322−SLOT−4
間の通信との間の冗長性は通信間冗長性である。
【0060】
ステップ250のいくつかの実施形態では、配置コントローラとエージェント(たとえば、
図1の配置コントローラ170とエージェント160のうちの1つまたは複数)との間の通信のために、APIが提供され得る。これらの実施形態のうちのいくつかでは、配置コントローラは、収集された冗長性測定値の部分のすべてを1つまたは複数のエージェントに要求することができる。
【0061】
いくつかの実施形態では、ステップ260および270の部分は、並行して実行され得る。たとえば、ステップ260での配置トリガは、現在の
有効コンテナ間帯域幅が推定された最適な
有効コンテナ間帯域幅を満たすかどうかを決定するステップを伴い得る。諒解されるように、推定された最適な
有効コンテナ間帯域幅を決定するステップは、仮想マシンの最適な配置の決定を必要とし得る。したがって、仮想マシンの同じ決定された最適な配置は、ステップ260とステップ270の両方で使用され得る。
【0062】
図3は、REアウェア・データ・センター100における冗長性の機能ブロック
図300を示す。
図300は、ラック310−1および310−2(たとえば、
図1のラック110のうちの2つ)と、REボックス340−1および340−2とを含む。ラック310−1は、スロット322−SLOT1と322−SLOT2とを含み、ラック310−2は、スロット322−SLOT3と322−SLOT4とを含む。データ転送経路390−1〜390−7は、構成要素間のデータ転送経路を示す。REボックスは、データ転送390−4によって示されるネットワーク・リンクを介してデータを重複除外するために配置される。
【0063】
分散データ・センターの実施形態など、いくつかの実施形態では、ラック310−1および310−2は、データ・センターであり得る。
【0064】
いくつかの実施形態では、REボックス340−1または340−2は、複数のREボックスを含み得る。たとえば、別々のREボックスは、エンド・ホストのうちの1つまたは複数を実行するソフトウェア・モジュールでもよい。
【0065】
下記の例では、
1)スロット322−SLOT1〜322−SLOT4の各々は、VM1、VM2、VM3、およびVM4の4つの仮想マシンのうちの1つが割り振られ得る
2)VM1→VM3およびVM2→VM4の間に通信間冗長性がある(すなわち、REボックス340−1および340−2によって重複除外され得るデータ転送間の類似性が高い)
3)VM1とVM2との間のデータ・トラフィックの帯域幅要件は8Vである
4)VM1とVM3との間のデータ・トラフィックの帯域幅要件は10Vである
5)VM3とVM4との間のデータ・トラフィックの帯域幅要件は8Vである、および
6)VM2とVM4との間のデータ・トラフィックの帯域幅要件は10Vである
と仮定する。
【0066】
第1の例では、同じラック内により高い帯域幅トラフィックを有するVM対を配置する帯域幅ベースの配置戦略を使用して、4つの仮想マシンがスロットに割り当てられる。したがって、VM1およびVM3が同じラックに配置され、VM2およびVM4が同じラックに配置される。たとえば、配置は、VM1が322−SLOT1に割り当てられ、VM3が322−SLOT2に割り当てられ、VM2が322−SLOT3に割り当てられ、VM4が322−SLOT4に割り当てられ得る。したがって、データ転送リンクにわたる帯域幅要件は、
7)390−1を介した322−SLOT1と322−SLOT2との間の10V
8)390−2→REボックス340−1→390−4→REボックス340−2および390−5を介した322−SLOT1と322−SLOT3との間の8V
9)390−3→REボックス340−1→390−4→REボックス340−2および390−6を介した322−SLOT2と322−SLOT4との間の7V
10)390−7を介した322−SLOT3と322−SLOT4との間の10V
となる。
【0067】
この例では、ラック間帯域幅要件(すなわち、データ転送390−4上の帯域幅)は、以下に示すように15Vである。
スロット322−SLOT1とスロット322−SLOT3との間とのトラフィック8V+スロット322−SLOT2とスロット322−SLOT4との間のトラフィック7V。
【0068】
第2の例では、本明細書で説明するように、REアウェア配置戦略を使用して、4つの仮想マシンがスロットに割り当てられる。したがって、VM1およびVM2が同じラックに配置され、VM3およびVM4が同じラックに配置される。たとえば、配置は、VM1が322−SLOT1に割り当てられ、VM2が322−SLOT2に割り当てられ、VM3が322−SLOT3に割り当てられ、VM4が322−SLOT4に割り当てられ得る。したがって、データ転送リンクにわたる帯域幅要件は、
11)390−1を介した322−SLOT1と322−SLOT2との間の8V
12)390−2→REボックス340−1→390−4→REボックス340−2および390−5を介した322−SLOT1と322−SLOT3との間の10V
13)390−3→REボックス340−1→390−4→REボックス340−2および390−6を介した322−SLOT2と322−SLOT4との間の10V
14)390−7を介した322−SLOT3と322−SLOT4との間の7V
となる。
【0069】
この例では、ラック間帯域幅要件(すなわち、データ転送390−4上の帯域幅)は、以下に示すように10Vである。通信間冗長性(すなわち、データ転送322−SLOT1→322−SLOT3および322−SLOT2→322−SLOT4との間の類似性)は、この例では、データの重複除外を可能にする、スロット対がREボックス対340−1および340−2をトラバースする通信間冗長性として利用されることを諒解されたい。
スロット322−SLOT1とスロット322−SLOT3との間のトラフィックの10V
+スロット322−SLOT2とスロット322−SLOT4との間のトラフィックの10V
−REボックス対340−1および340−2によって重複除外されるデータの10V
【0070】
したがって、この例では、データ転送間の高い類似性を利用することによって、REアウェア配置戦略は、帯域幅ベースの配置戦略(すなわち、15Vと比較して10V)に対して33%だけ、ラック間(または分散データ・センターにおけるデータ・センター間)のリンク390−4の帯域幅の使用量をかなり低減した。
【0071】
図4は、
図2のステップ270に示したように、配置コントローラ(たとえば、
図1の配置コントローラ160)がエンド・ホストにおいてスロットを配置するための方法400の一実施形態を示すフローチャートを示す。この方法は、配置される決定された組のスロット(ステップ420)、決定された通信パターン(ステップ440)、および決定されたスロット通信冗長性(ステップ460)に基づいてスロットを配置するステップ(ステップ480)を含む。
【0072】
方法400で、ステップ420は、配置するスロットの数およびタイプを決定するステップを含む。特に、方法を実行する装置は、クライアント(たとえば、
図1のクライアント190)にサービスするアプリケーション・インスタンスをサポートするために必要なスロットの数およびタイプを決定する。
【0073】
方法400で、ステップ440は、通信パターンを決定するステップを含む。特に、通信パターンは、1つまたは複数のエージェント(たとえば、
図2のステップ250)から受信された通信パターンから導出される。通信パターンは、たとえば、(a)受信された通信パターンを使用する、(b)受信された通信パターンを変更する、(c)受信された通信パターンをアグリゲートする、または(d)その他など、任意の適切な機構を使用して導出され得る。
【0074】
方法400で、ステップ460は、通信冗長性を決定するステップを含む。特に、通信冗長性は、1つまたは複数のエージェント(たとえば、
図2のステップ250)から受信された通信冗長性から導出される。通信冗長性は、たとえば、(a)受信された通信冗長性を使用する、(b)受信された通信冗長性を変更する、(c)受信された通信冗長性をアグリゲートする、または(d)その他など、任意の適切な機構を使用して導出され得る。
【0075】
方法400で、ステップ480は、決定された必要なスロット、決定された通信パターン、および決定されたスロット冗長性に基づいてREアウェア配置戦略を実行するステップを含む。特に、REアウェア配置戦略は、スロット間通信でのデータ転送における冗長性を考慮し、全体的なラック間(またはデータ・センター間)帯域幅使用量を最小限に抑えながら、データ転送における冗長性を利用するためにスロットを配置する。
【0076】
いくつかの実施形態では、ステップ480は、ラックにわたるスロット間データ転送の通信内冗長性と、ラックにわたる2つのスロット間転送の通信間冗長性とにスロットの配置の基礎をおくステップを含む。いくつかの実施形態では、ラックにわたる代わりに、またはそれに加えて、データ・センター(たとえば、分散された設定のデータ・センターなど)にわたって、通信内冗長性および通信間冗長性が決定される。
【0077】
いくつかの実施形態では、ステップ480は、スロット配置を決定するために従来の整数線形プログラムまたは伝統的な最適化技法を使用するステップを含む。従来の最適化技法は、所望の目標または目的を最も達成するアクションを決定するステップを伴う。目標または目的を最も達成するアクションは、目的関数の値を最大または最小にすることによって決定され得る。いくつかの実施形態では、目的関数の目標またはメトリックは、全体的なコンテナ間(たとえば、ラック間またはデータ・センター間)の帯域幅使用量を最小限に抑えるためのものであり得る(たとえば、min
【数1】
式中、u
a,bがコンテナC
aとC
bとの間で使用される帯域幅を表す)。
【0078】
問題は、以下のように表され得る。
最適化:
[E.1]y=f(x
1,x
2,・・・,x
n)
以下を前提とする。
【0080】
式中、式E.1が目的関数であり、式E.2がソリューションに課される1組の制約を構成する。x
iの変数、x
1,x
2,・・・,x
nは、決定変数の組を表し、y=f(x
1,x
2,・・・,x
n)は、これらの決定変数に関して表される目的関数である。目的関数は、最大または最小にされ得ることを諒解されたい。
【0081】
これらの実施形態の任意のもののうちのいくつかにおいて、制約は、以下のうちの1つまたは複数とすることができる。
1.
【数3】
式中、各スロットが1つのコンテナに配置され、x
i,jは、コンテナ(j)におけるスロット(i)の配置を示す変数である。
2.
【数4】
式中、各コンテナ(j)が、(たとえば、容量またはプロビジョニング・パラメータに基づいて)コンテナが対応し得る最大数のスロットにおける制限Maxjを有する。
3.y
j,a,k,b≧x
j,a+x
k,b−1:式中、y
j,a,k,bは、スロット(i)がコンテナ(a)に配置され、スロット(k)がコンテナ(b)に配置される場合、1であり、そうでなければゼロである変数を表す。
4.コンテナにわたる使用量に関する帯域幅は、各タイプのトラフィック(すなわち、一意の冗長内および冗長間)の寄与に基づく。
a.コンテナCaとCbとの間の帯域幅使用量に関する一意のデータ転送の寄与は、Σ
j,k,j≠kUni
j,k×y
j,a,k,bである。式中、Uni
j,kはスロットjとkとの間の一意のトラフィックの量である。スロット(j)がコンテナC
aに配置され、スロット(k)がコンテナC
bに配置される場合、これは、コンテナC
a→C
b間の帯域幅使用量に寄与する。
b.コンテナC
aとC
bとの間の帯域幅使用量に関する冗長内データ転送の寄与はゼロである。冗長内データがRE機構によって抑制されることを諒解されたい。
c.帯域幅使用量に関する冗長間データ転送の寄与は、以下の通りに計算される。
Σ
j,k,l,m,j≠lork≠mInter
j,k,l,m×z
j,l,a,k,m,b
式中、Inter
j,k,l,mは、スロット間冗長性を表し、Z
j,l,a,k,m,bは、スロット間冗長性が抑制されるときを表す変数である。たとえば、スロット(j)およびスロット(k)がそれぞれコンテナC
aおよびC
bに配置されており(すなわち、y
j,a,k,b=1)、スロット(l)およびスロット(m)もそれぞれコンテナC
aおよびC
bに配置されている(すなわち、y
l,a,m,b=1)とき、スロット間冗長データは、RE機構によって抑制され、したがって、z
j,l,a,k,m,b=0である。しかしながら、y
j,a,k,b=1およびy
l,a,m,b=0である場合、スロット間冗長性は、抑制されず、したがって、z
j,l,a,k,m,b=1である。
5.コンテナC
aとC
bとの間の帯域幅は、利用可能な帯域幅未満である BW
a,b:u
a,b≦BW
a,b。
6.1つまたは複数のスロットは、1つまたは複数の識別されたコンテナに制限される(たとえば、x
j,a=0)。
【0082】
図5は、
図4のステップ480に示されるように、スロットを配置するための方法500の一実施形態を示すフローチャートを表す。方法は、クラスタの数を決定するステップ(ステップ520)、利用可能なクラスタにスロットを割り当てるステップ(ステップ540)、およびクラスタをコンテナに割り当てるステップ(ステップ560)を含む。
【0083】
方法500で、ステップ520は、クラスタの数を決定するステップを含む。特に、決定された数の配置されるスロット(たとえば、
図4のステップ420)は、「K」個のクラスタに仕切られ、したがって、仕切られた各クラスタは、少なくとも1つのコンテナにおいて割り振られ得る。本明細書において使用される際、「コンテナ」という用語は、たとえばデータ・センターの設定内のラック、または分散データ・センター設定内のデータ・センター自体など、スロットをアグリゲートすることができる任意の適切な構成要素とすることができる。
【0084】
いくつかの実施形態では、コンテナは、ラックである。
【0085】
いくつかの実施形態では、コンテナは、データ・センターである。
【0086】
図6は、
図4のステップ480および
図5のステップ520、540、および560に示されるように、スロットを配置するための方法600の一実施形態を示すフローチャートを表す。
【0087】
方法600で、ステップ610は、本明細書に記載されているように、クラスタの数「K」を選択するステップを含む。この場合、Kは、決定されたスロットが分散されるクラスタの数である。
【0088】
方法600で、ステップ620は、ランダムなスロットの数の各々を利用可能なコンテナに割り当てるステップを含む。これらの実施形態のうちのいくつにおいて、割り当てられるランダムなスロットの数は、「K」である。
【0089】
方法600で、ステップ630および640は、割り振られる残りのスロット「S」ごとに(ステップ640)、各利用可能なクラスタまでの計算された距離に基づいて利用可能なクラスタにスロット「S」を配置するステップ(ステップ630)を含む。
【0090】
方法600で、ステップ650は、
有効コンテナ間帯域幅使用量メトリックに基づいてクラスタをコンテナに割り当てるステップを含む。
【0091】
方法600は、ステップ660を随意に含む。ステップ660は、ステップ650において決定される
有効コンテナ間帯域幅使用量が計算された最適値を満たすかどうか、および決定された配置が、各コンテナ間トラフィック(R1,R2)がBW(R1,R2)未満でなければならないという制約を満たすかどうかを決定するステップを含む。この場合、BWは、コンテナRIとR2との間の利用可能な帯域幅である。計算された最適な
有効コンテナ間帯域幅使用量を決定するステップは、たとえば、(a)反復的なカウントを設定し、最善の値を選択すること、(b)ステップ650から決定された
有効コンテナ間帯域幅使用量をあらかじめ定められた閾値と比較すること、または(c)その他など、任意の適切な方法を使用して行われ得る。
【0092】
方法600で、ステップ670は、決定されたスロットの配置を最適化するステップを含む。特に、スロット配置の最適化は、コンテナ対を移動させることが
有効コンテナ間帯域幅使用量を向上させるかどうかを決定するステップ含む。たとえば、C1におけるS1をC2におけるS2と交換することは、コンテナC1におけるS1をコンテナC2に移動させ、コンテナC2におけるS2をC1に移動させることが、
有効コンテナ間帯域幅使用量を向上させることの決定に基づき得る。
【0093】
ステップ610のいくつかの実施形態では、Kは、各コンテナにおける利用可能なスロットの数に基づいて選択される。
【0094】
ステップ610のいくつかの実施形態では、Kは、ランダムに選択される。
【0095】
いくつかの実施形態では、ステップ630は、各利用可能なクラスタまでの距離を計算するステップと、各利用可能なクラスタまでの計算された距離に基づいて利用可能なクラスタにスロットSを配置するステップとを含む。この場合、利用可能なクラスタは、いっぱいではないクラスタである(すなわち、容量よりも割り当てられたスロットを有する)。
【0096】
ステップ630のこれらの実施形態のいくつかでは、各候補クラスタ(たとえば、クラスタC)までの距離を計算するステップは、
有効帯域幅メトリック(M)に基づく。特に、
有効帯域幅メトリックは、スロットSからクラスタにおける他のスロットのうちの任意のものへのデータ転送内(通信内冗長性)の、ならびにスロットSからクラスタにおける任意のスロットiおよびスロットSから任意のスロットjへのデータ転送にわたる(通信間冗長性)、冗長性除去後に必要とされる帯域幅である。
【0097】
これらの実施形態のうちのいくつかでは、
有効帯域幅メトリックは、疑似コード・ライン(1)〜(3)で説明されるように計算される。
【0099】
【数6】
(3)M(S)=M_from(S)+M_to(S)
【0100】
式中、関数Demand(slot−i,slot−j)は、スロット「i」と「j」との間の帯域幅要求を戻し、関数IntraRedundancy(slot i,slot j)は、スロットiからスロットjへのデータ転送のための通信内冗長性を戻し、関数InterRedundancy(slot i,slot j,slot k,slot l)は、データ転送(slot i、slot j)とデータ転送(slot k、slot l)との間の通信間冗長性を戻す。
【0101】
ステップ630のいくつかの実施形態では、クラスタ配置選択は、クラスタC(Min(C))への計算された最小平均距離に基づく。これらの実施形態のうちのいくつかでは、Min(C)は、疑似コード・ライン(4)〜(6)に示されるように計算される。
(4)クラスタCごとに
(5)AvgDistance(C)=(1/N*1/M(S))を計算する
//この場合、NはクラスタCにおけるスロットの数である
(6)Min(C)=Min|AvgDistance(C)|
【0102】
有効帯域幅メトリック(たとえば、M(S))の逆数をとり、最小値(スロット、コンテナ)対を選択することによって、コンテナに対する高い帯域幅要求を有するスロットがそのコンテナに配置され、潜在的に、コンテナにわたってトラバースするトラフィックを低減する(たとえば、
有効コンテナ間帯域幅使用量を低減する)ことを諒解されたい。
【0103】
いくつかの実施形態では、ステップ610〜640は、
図7に示された通りである。この場合、VMは、仮想マシン(たとえば、一種のスロット)であり、Mindist
uは、クラスタCまでの最小平均距離であり、MinVMおよびMinCは、Mindist
uと関連するそれぞれのVMおよびコンテナであり、Uni
u,vは、VM uとvとの間の一意のトラフィックの量であり、Inter
j,k,l,mは、VM
j→VM
kおよびVM
l→VM
mからのデータ転送間の冗長性についてのVM間冗長性トラフィック要求である。
【0104】
ステップ650のいくつかの実施形態では、すべてのコンテナ間帯域幅要求の合計−コンテナ間冗長性トラフィック(通信内冗長性トラフィックおよび通信間冗長性トラフィックを含む)として、
有効コンテナ間帯域幅使用量が計算される。これらの実施形態のうちのいくつかでは、
有効コンテナ間帯域幅使用量は、疑似コード・ライン(7)〜(10)に示されるように計算される。
(7)
有効コンテナ間帯域幅使用量=0
(8)対におけるコンテナCi,Cjごとに
(9)スロットiおよびスロットjが異なるコンテナにあるように、(スロットi、スロットj)通信のリストを見つける
(10)
有効コンテナ間帯域幅使用量+=
【数7】
//この場合、スロットiおよびスロットkがあるコンテナにあり、
//スロットjおよびスロットkが他のコンテナにある
【0105】
いくつかの実施形態では、ステップ650は、
図8に示された通りである。この場合、VMは、仮想マシン(たとえば、一種のスロット)であり、Uni
u,vは、VM uとvとの間の一意のトラフィックの量であり、Inter
j,k,l,mは、VM
j→VM
kおよびVM
l→VM
mからのデータ転送間の冗長性についてのVM間冗長トラフィック要求である。
【0106】
ステップ670のいくつかの実施形態では、最適化の決定は、疑似コード・ライン(11)〜(16)に示されるように計算される。
(11)コンテナCi,Cj対ごとに
(12)Ciにおけるスロットkごとに
(13)Cjにおけるスロットlごとに、スロットkをスロットlと交換することが
有効コンテナ間帯域幅使用量を向上させるかどうかを決定する
(14)スロットImaxを選択する
//この場合、Imaxが最高の計算された
//
有効コンテナ間帯域幅使用量メトリックを有するスロットlである
(15)スロットk≠スロットImax&&である場合、
交換は、コンテナ間帯域幅制約を妨害しない
(16)スロットkをスロットImaxと交換する
【0107】
いくつかの実施形態では、ステップ670は、
図9に示された通りである。
【0108】
いくつかの実施形態では、方法600は、スロット配置制約を含む。特に、いくつかのスロットについて、コンテナのサブセットのみが、スロット配置に利用可能である。これらの実施形態のいくつかでは、利用可能なコンテナのサブセットの選択は、たとえばレイテンシなどのサービス・メトリックの質に基づく。
【0109】
これらの実施形態のいくつかでは、コンテナの数(「K」)が選択され、1組のランダムに選択されたK個のスロットは、1対1の対応を使用し、スロット配置制約が満たされることを確実にする、K個のコンテナへの割当てである。ステップ630で、コンテナへのスロットの距離を計算する際、スロット配置制約を満たすコンテナのみが考慮に入れられる。ステップ670で、スロット配置制約を満たす交換のみが実行される。
【0110】
特定のシーケンスで主に表され、記載されているが、方法200、400、500、および600に示されるステップが任意の適切なシーケンスでも実行され得ることを諒解されたい。さらに、1つのステップによって識別されるステップは、シーケンスにおける1つまたは複数の他のステップでも実行されてもよく、または、複数のステップの共通のアクションが一度だけ実行されてもよい。
【0111】
様々な上記の方法のステップがプログラムされたコンピュータによって実行され得ることを諒解されたい。本明細書において、いくつかの実施形態は、たとえば、データ記憶媒体など、プログラム記憶装置をカバーするためのものでもあり、これは機械またはコンピュータ可読で、命令の機械実行可能またはコンピュータ実行可能プログラムをコード化し、前記命令は、上述した方法のステップの一部もしくは全部を実行する。プログラム記憶装置は、たとえば、デジタル・メモリ、磁気記録媒体、たとえば磁気ディスクおよび磁気テープ、ハードドライブ、または光学的に読取り可能なデータ記憶媒体でもよい。実施形態は、上述の方法の前記ステップを実行するようにプログラムされるコンピュータをカバーすることも目的とする。
【0112】
図10は、たとえば、
図1のエンド・ホスト120のうちの1つ、ToRスイッチ130のうちの1つ、アグリゲーション・スイッチ150のうちの1つ、または配置コントローラ170など、様々な装置1000の一実施形態を概略的に示す。装置1000は、プロセッサ1010と、データ・ストレージ1011と、随意にI/Oインターフェース1030とを含む。
【0113】
プロセッサ1010は、装置1000の動作を制御する。プロセッサ1010は、データ・ストレージ1011と協働する。
【0114】
データ・ストレージ1011は、必要に応じて、冗長測定値、通信パターンなどのプログラム・データを記憶することができる。データ・ストレージ1011は、プロセッサ1010によって実行可能なプログラム1020も記憶する。
【0115】
プロセッサ実行可能プログラム1020は、必要に応じて、エージェント収集プログラム1021、配置コントローラ・プログラム1023、配置コントローラ配置プログラム1025、またはI/Oインターフェース・プログラム1027を含み得る。プロセッサ1010は、プロセッサ実行可能プログラム1020と協働する。
【0116】
I/Oインターフェース1030は、たとえば
図1のリンクなど、任意の適切な通信チャネルを介した通信をサポートするために、プロセッサ1010およびI/Oインターフェース・プログラム1027と協働する。
【0117】
エージェント収集1021は、上述したように、
図2の方法200のステップ210−1、220−1、および230−1を実行する。
【0118】
配置コントローラ・プログラム1023は、上述したように、
図5の方法200のステップ250、260、および270を実行する。
【0119】
配置コントローラ配置プログラム1025は、上述したように、
図2の方法270のステップ、
図4のステップ、
図5のステップ、または
図6のステップを実行する。
【0120】
いくつかの実施形態では、プロセッサ1010は、プロセッサ/CPUコアのなどのリソースを含むことができ、I/Oインターフェース1030は、任意の適切なネットワーク・インターフェースも含むことができ、またはデータ・ストレージ1011は、メモリまたは記憶装置を含むことができる。さらに、装置1000は、たとえば、1つまたは複数のサーバ、プロセッサ、メモリ、ネットワーク・インターフェース、または記憶装置などの構成要素からなるブレードなど、任意の適切な物理的なハードウェア構成とすることができる。これらの実施形態のいくつかでは、装置1000は、互いから離れたクラウド・ネットワーク・リソースを含むことができる。
【0121】
いくつかの実施形態では、装置1000は、仮想マシンでもよい。これらの実施形態のいくつかでは、仮想マシンは、異なる機械からの構成要素を含むことができ、または地理的に分散され得る。たとえば、データ・ストレージ1011およびプロセッサ1010は、2つの異なる物理的な機械にあってもよい。
【0122】
いくつかの実施形態では、装置1000は、方法200、400、500、または600を実行するようにプログラムされる汎用コンピュータでもよい。
【0123】
プロセッサ実行可能プログラム1020がプロセッサ1010において実施されるとき、プログラム・コード・セグメントは、プロセッサと結合して、特定の論理回路と同じように動作する一意のデバイスを提供する。
【0124】
本明細書では、たとえば、プログラムおよび論理がデータ・ストレージ内に記憶され、メモリがプロセッサに通信可能に接続されている実施形態に関して表され、記載されているが、装置の任意の適切な構成に通信可能に接続されているメモリ、ストレージ、またはデータベースの任意の適切な構成を使用する、メモリ、ストレージ、または内部もしくは外部のデータベースの任意の適切な組合せに情報を記憶する、あるいは任意の適切な数のアクセス可能な外部メモリ、ストレージ、またはデータベースを使用するなど、そのような情報が任意の他の適切な方法(たとえば、任意の適切な数のメモリ、ストレージ、またはデータベースを使用して)で記憶され得ることを諒解されたい。したがって、本明細書で言及されるデータ・ストレージという用語は、メモリ、ストレージ、およびデータベースのすべての適切な組合せを含むものとする。
【0125】
説明および図面は、単に本発明の原理を示しているにすぎない。したがって、当業者は、本明細書には明確に記載または示されないが、本発明の原理を実施し、その意図および範囲内に含まれる様々な配置を考案することができることを諒解されよう。さらに、本明細書に説明されるすべての例は、主に、明確に、本技術を促進するために発明者によって寄与される概念および本発明の原理を読者が理解するのを援助するための教育上の目的のためのみであるものとされ、そのような具体的に説明された例および条件に限定されないものとして解釈されるべきものとする。さらに、本発明の原理、態様、および実施形態を説明する本明細書におけるすべての記載、ならびにその具体例は、その均等物を含むものとする。
【0126】
「プロセッサ」としてラベル付けされる任意の機能的なブロックを含む、図に示される様々な要素の機能は、専用のハードウェア、ならびに適切なソフトウェアに関連してソフトウェアを実行することができるハードウェアを用いることによって提供され得る。プロセッサによって提供されるとき、機能は、単一の専用プロセッサによって、単一の共有プロセッサによって、またはそのいくつかが共有され得る複数の個々のプロセッサによって提供され得る。さらに、「プロセッサ」または「コントローラ」という用語の明確な使用は、もっぱらソフトウェアを実行することができるハードウェアだけを指すものと解釈されるものではなく、限定はしないが、デジタル信号プロセッサ(DSP)ハードウェア、ネットワーク・プロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、ソフトウェアを記憶するための読取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、および不揮発性ストレージを暗に含み得る。従来またはカスタムの他のハードウェアも含まれ得る。同様に、図中に示された任意のスイッチは、単に概念的なものにすぎない。それらの機能は、プログラム論理の動作を介して、専用の論理を介して、プログラム制御および専用の論理の対話を介して、または、手動でさえ、実施され得、特定の技法は、状況からより具体的に理解されるように、実施者によって選択可能である。
【0127】
本明細書における任意のブロック図は、本発明の原理を具体化する例示的な回路の概念上の図を表していることを諒解されたい。同様に、任意のフローチャート、フロー図、状態遷移図、疑似コードなどは、コンピュータ可読媒体において実質的に表され得、そのようなコンピュータまたはプロセッサが明確に示されるかどうかにかかわらず、コンピュータまたはプロセッサによってそのように実行され得る様々なプロセスを表すことを諒解されたい。