(57)【特許請求の範囲】
【請求項１】
ネットワーク環境において、複数のレベルを含むツリートポロジーで配される複数のスイッチおよび複数のエンドノードの間で効率的なロードバランシングをサポートするための方法であって、
前記複数のスイッチのうちの１つ以上の上に存在する前記複数のエンドノードを分類することを含み、前記複数のエンドノードは受信重みの減少する順に分類され、前記方法はさらに、
前記受信重みの減少する順に前記複数のエンドノードをルーティングすることを含み、前記複数のエンドノードのうちの対象エンドノードに対して前記ルーティングすることは、前記対象エンドノードに向かうルートについて少なくとも１つの下りポートおよび少なくとも１つの上りポートを選択することを含み、前記下りポートは、前記複数のレベルのうちの１つのレベルのスイッチから前記複数のレベルのうちの１レベルだけ下のレベルのスイッチへの下り方向のポートであり、前記上りポートは、前記複数のレベルのうちの１つのレベルのスイッチから前記複数のレベルのうちの１レベルだけ上のレベルのスイッチへの上り方向のポートであり、前記方法はさらに、
前記対象エンドノードの受信重みだけ、各選択された下りポート上の蓄積された下り重みを増加することと、
前記対象エンドノードの受信重みだけ、各選択された上りポート上の蓄積された上り重みを増加することとを含む、方法。
【請求項２】
前記少なくとも１つの上りポートを選択することは、複数の上りポートを比較して、最も蓄積されていない上り重みを有する前記上りポートを選択することを含む、請求項１に記載の方法。
【請求項３】
前記複数のエンドノードの各々についての前記受信重みを受信することをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記複数のエンドノードの各々についての前記受信重みは、アドミニストレータからの入力から受信される、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
ネットワークにおける１つ以上のリーフスイッチ上の前記複数のエンドノードの各々についての前記受信重みは入力から受信され、前記入力は、それぞれ前記複数のエンドノードの各々上の監視されるトラフィックに関係付けられる、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記少なくとも１つの下りポートを選択することは、複数の下りポートを比較して、最も蓄積されていない下り重みを有する前記下りポートを選択することを含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記少なくとも１つの下りポートを選択することは、最も蓄積されていない下り重みを有する２つ以上の下りポートに応答して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートを比較して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートから、最も蓄積されていない上り重みを有する前記下りポートを選択することを含む、請求項６に記載の方法。
【請求項８】
前記少なくとも１つの下りポートを選択することは、
複数の下りポートを比較して、最も蓄積されていない下り重みを有する前記下りポートを選択することと、
最も蓄積されていない下り重みを有する２つ以上の下りポートに応答して、最も蓄積されていない下り重みを有する前記２つ以上の下りポートを比較して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートから、最も蓄積されていない上り重みを有する前記下りポートを選択することと、
前記最も蓄積されていない下り重みおよび前記最も蓄積されていない上り重みを有する前記２つ以上の下りポートに応答して、前記最も蓄積されていない下り重みおよび前記最も蓄積されていない上り重みを有する前記２つ以上の下りポートを比較して、前記最も蓄積されていない下り重みおよび前記最も蓄積されていない上り重みを有する前記２つ以上の下りポートから、最も小さなグローバル一意識別子を有する前記下りポートを選択することとを含む、請求項１〜５のいずれか１項に記載の方法。
【請求項９】
ネットワーク環境において、複数のレベルを含むツリートポロジーで配される複数のスイッチおよび複数のエンドノードの間で効率的なロードバランシングをサポートするためのシステムであって、
１つ以上のマイクロプロセッサと、
前記１つ以上のマイクロプロセッサ上で実行されるプロセッサとを含み、
前記プロセッサは、
前記複数のスイッチのうちの１つ以上の上に存在する前記複数のエンドノードを分類することを含むステップを実行するよう動作し、前記複数のエンドノードは受信重みの減少する順に分類され、前記プロセッサはさらに、
前記受信重みの減少する順に前記複数のエンドノードをルーティングすることを含むステップを実行するよう動作し、前記複数のエンドノードのうちの対象エンドノードに対して前記ルーティングすることは、前記対象エンドノードに向かうルートについて少なくとも１つの下りポートおよび少なくとも１つの上りポートを選択することを含み、前記下りポートは、前記複数のレベルのうちの１つのレベルのスイッチから前記複数のレベルのうちの１レベルだけ下のレベルのスイッチへの下り方向のポートであり、前記上りポートは、前記複数のレベルのうちの１つのレベルのスイッチから前記複数のレベルのうちの１レベルだけ上のレベルのスイッチへの上り方向のポートであり、前記プロセッサはさらに、
前記対象エンドノードの受信重みだけ、各選択された下りポート上の蓄積された下り重みを増加することと、
前記対象エンドノードの受信重みだけ、各選択された上りポート上の蓄積された上り重みを増加することとを含むステップを実行するよう動作する、システム。
【請求項１０】
前記複数のスイッチおよび前記複数のエンドノードは、高性能コンピューティング（ＨＰＣ）クラスタにおける使用のためにファットツリートポロジーに配される、請求項９に記載のシステム。
【請求項１１】
前記プロセッサは、前記複数のエンドノードの各々について前記受信重みを受信するように動作する、請求項９または１０のいずれか１項に記載のシステム。
【請求項１２】
前記少なくとも１つの下りポートを選択することは、複数の下りポートを比較して、最も蓄積されていない下り重みを有する前記下りポートを選択することを含む、請求項９〜１１のいずれか１項に記載のシステム。
【請求項１３】
前記少なくとも１つの下りポートを選択することは、最も蓄積されていない下り重みを有する２つ以上の下りポートに応答して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートを比較して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートから、最も蓄積されていない上り重みを有する前記下りポートを選択することを含む、請求項１２に記載のシステム。
【請求項１４】
前記少なくとも１つの下りポートを選択することは、
複数の下りポートを比較して、最も蓄積されていない下り重みを有する前記下りポートを選択することと、
最も蓄積されていない下り重みを有する２つ以上の下りポートに応答して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートを比較して、前記最も蓄積されていない下り重みを有する前記２つ以上の下りポートから、最も蓄積されていない上り重みを有する前記下りポートを選択することと、
前記最も蓄積されていない下り重みおよび前記最も蓄積されていない上り重みを有する前記２つ以上の下りポートに応答して、前記最も蓄積されていない下り重みおよび前記最も蓄積されていない上り重みを有する前記２つ以上の下りポートを比較して、前記最も蓄積されていない下り重みおよび前記最も蓄積されていない上り重みを有する前記２つ以上の下りポートから、最も小さなグローバル一意識別子を有する前記下りポートを選択することとを含む、請求項９〜１１のいずれか１項に記載のシステム。
【請求項１５】
マシン読取可能な形態の命令を含むコンピュータプログラムであって、前記命令は、コンピュータシステムによって実行されると、請求項１〜８のいずれか１項に記載の方法を前記コンピュータシステムに行なわせる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権表示
この特許文書の開示の一部は、著作権の保護下にある内容を含む。著作権所有者は、特許商標庁の特許ファイルまたはレコードに現れるので、誰でも当該特許文書または特許開示を複製することについて異議はないが、そうでなければ如何なる場合でもすべての著作権を留保する。
【背景技術】
【０００２】
発明の分野
本発明は、一般にコンピュータシステムに関し、特にネットワーク環境に関する。
【０００３】
背景
ファットツリートポロジー（fat-tree topology）は、高性能コンピューティング（ＨＰＣ：high performance computing）クラスタと、インフィニバンド（ＩＢ：InfiniBand）（登録商標）技術に基づくクラスタとに使用される。たとえば、ファットツリートポロジーは、天河二号（Tianhe-2）のような最も速いスーパーコンピュータにおいて使用される。さらに、ファットツリーＩＢシステムは、Ｓｔａｍｐｅｄｅ、ＴＧＣＣ  ＣｕｒｉｅおよびＳｕｐｅｒＭＵＣのような大きなインストレーションを含む。
【０００４】
これらは、本発明の実施形態が対応することを意図する一般的な領域である。
【発明の概要】
【０００５】
概要
ネットワーク環境においてツリートポロジーで配される複数のスイッチおよび複数のエンドノードの間で効率的なロードバランシングをサポートするためのシステムおよび方法が本願明細書において記載される。上記システムおよび方法は、ツリートポロジーにおいて１つ以上のリーフスイッチ上に存在する複数のエンドノードを分類し得、複数のエンドノードは受信重みの減少する順に分類される。上記システムおよび方法は、受信重みの減少する順に複数のエンドノードをルーティングし得、ルーティングすることは、少なくとも１つの下りポートおよび少なくとも１つの上りポートを選択することを含む。上記システムおよび方法は、ルーティングされたエンドノードの受信重みだけ、各選択された下りポート上の蓄積された下り重みを増加し得る。最後に、上記システムおよび方法は、ルーティングされたエンドノードの受信重みだけ、各選択された上りポート上の蓄積された上り重みを増加し得る。
【０００６】
実施形態において、本願明細書において記載されるシステムおよび方法は、複数のスイッチおよび複数のエンドノードが、高性能コンピューティング（ＨＰＣ）クラスタにおける使用のためのファットツリートポロジーにあることを可能にする。さらに、実施形態において、１つ以上のリーフスイッチ上の複数のエンドノードについての受信重みがシステムによって受信され得る。
【０００７】
実施形態において、少なくとも１つの下りポートの方法およびシステムによって実行される選択は、複数の下りポートを比較して、最も蓄積されていない下り重みを有する下りポートを選択することを含み得る。
【０００８】
実施形態において、上記方法およびシステムによって実行される、少なくとも１つの下りポートの選択は、複数の下りポートを比較して、最も蓄積されていない上り重みを有する下りポートを選択することを含む。
【０００９】
実施形態において、上記方法およびシステムによって実行される、少なくとも１つの下りポートの選択は、複数の下りポートを比較して、最も小さなグローバル一意識別子を有する下りポートを選択することを含む。
【００１０】
実施形態において、上記方法およびシステムによって実行される、少なくとも１つの下りポートの選択は、複数の下りポートを比較して、最も蓄積されていない下り重みを有する下りポートを選択することを含む。２つ以上の下りポートが最も蓄積されていない下り重みを有する場合、上記方法およびシステムはさらに、最も蓄積されていない下り重みを有する２つ以上の下りポートを比較して、最も蓄積されていない下り重みを有する２つ以上の下りポートから、最も蓄積されていない上り重みを有する下りポートを選択し得る。２つ以上の下りポートが最も蓄積されていない下り重みおよび最も蓄積されていない上り重みを有する場合、上記方法およびシステムは、最も蓄積されていない下り重みおよび最も蓄積されていない上り重みを有する２つ以上の下りポートを比較して、最も蓄積されていない下り重みおよび最も蓄積されていない上り重みを有する２つ以上の下りポートから、最も小さなグローバル一意識別子を有する下りポートを選択し得る。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態が実施され得るネットワーク環境におけるファットツリールーティングのブロック図である。
【図２】本発明の実施形態が実施され得るネットワーク環境におけるファットツリールーティングのブロック図である。
【図３】本発明の実施形態が実施され得るネットワーク環境におけるファットツリールーティングのブロック図である。
【図４】本発明の実施形態に従った、ネットワーク環境内の例示的なポート選択を示すブロック図である。
【図５】本発明の実施形態に従った、ネットワーク環境内の例示的なポート選択を示すブロック図である。
【図６】本発明の実施形態に従った、ネットワーク環境内の例示的なポート選択を示すブロック図である。
【図７】本発明の実施形態に従った、ネットワーク環境内の例示的なポート選択を示すブロック図である。
【図８】本発明の実施形態に従った、ネットワーク環境内の例示的なポート選択を示すブロック図である。
【図９】本発明の実施形態に従った、ネットワーク環境内の例示的なポート選択を示すブロック図である。
【図１０】本発明の実施形態に従った、ネットワーク環境におけるツリートポロジーにおいて配される複数のスイッチおよび複数のエンドノードの間の効率的なロードバランシングをサポートするための方法を示すフローチャートである。
【発明を実施するための形態】
【００１２】
詳細な説明
以下の詳細な説明では、本発明は、添付の図面において限定目的ではなく例示目的として示される。なお、この開示における「ある」、「１つ」または「いくつか」の実施形態への参照は、必ずしも同じ実施形態に対してなされるものではなく、このような参照は、少なくとも１つの実施形態を意味する。特定の実現例が論じられるが、当該特定の実現例は例示的な目的のみに提供されるということが理解される。当業者は、本発明の範囲および精神から逸脱することがなければ、他の構成要素および構成が使用されてもよいということを認識するであろう。
【００１３】
共通の参照番号は、図および詳細な説明の全体にわたって同様の要素を示すために使用される。したがって、図において使用される参照番号は、当該要素が別のところに記載される場合、そのような図に固有の詳細な説明において参照される場合もあり、または、参照されない場合もある。
【００１４】
本発明の以下の記載は、高性能ネットワークについての例として、インフィニバンド（ＩＢ）ネットワークを使用する。他のタイプの高性能ネットワークが限定なしで使用され得るということは、当業者には明らかであろう。以下の記載はさらに、ファブリックトポロジーについての例として、ファットツリートポロジーを使用する。他のタイプのファブリックトポロジーが限定なしで使用され得るということは、当業者には明らかであろう。
【００１５】
インフィニバンド
インフィニバンド（ＩＢ）は、インフィニバンドトレードアソシエーション（InfiniBand Trade Association）によって開発されたオープンで標準的なロスレスネットワーク技術である。当該技術は、特にＨＰＣアプリケーションおよびデータセンターに対して適応される、高スループットおよび低レイテンシーの通信を提供するシリアルポイントツーポイント全二重相互接続（serial point-to-point full-duplex interconnect）に基づく。
【００１６】
インフィニバンドアーキテクチャ（ＩＢＡ： InfiniBand Architecture）は、２レイヤートポロジー分割（two-layer topological division）をサポートする。低いレイヤーでは、ＩＢネットワークはサブネットと称される。サブネットは、スイッチおよびポイントツーポイントリンクを使用して相互接続されるホストのセットを含み得る。より高いレベルでは、ＩＢファブリックは、ルータを使用して相互接続され得る１つ以上のサブネットを構成する。
【００１７】
サブネット内では、ホストはスイッチおよびポイントツーポイントリンクを使用して接続される。さらに、サブネットにおける指定されたサブネットデバイス上に存在する１つのマスター管理エンティティ、すなわちサブネットマネージャ（ＳＭ： subnet manager）、が存在する。サブネットマネージャは、ＩＢサブネットを構成、アクティベート、および、維持することを担う。さらに、サブネットマネージャ（ＳＭ）は、ＩＢファブリックにおいてルーティングテーブル演算を実行することを担い得る。ここで、たとえば、ＩＢネットワークのルーティングは、ローカルサブネットにおけるすべての送信元および宛先ペアの間の適正なロードバランシングを目的とする。
【００１８】
サブネット管理インターフェイスを通じて、サブネットマネージャは、サブネット管理パケット（ＳＭＰ： subnet management packet）と称される制御パケットをサブネット管理エージェント（ＳＭＡ： subnet management agent）と交換する。サブネット管理エージェントは、各ＩＢサブネットデバイス上に存在する。ＳＭＰを使用することによって、サブネットマネージャは、ファブリックを発見し、エンドノードおよびスイッチを構成し、ＳＭＡから通知を受信することができる。
【００１９】
一般に、マスターサブネットマネージャを除く他のすべてのサブネットマネージャは、フォールトトレランスのためにスタンバイモードで動作する。しかしながら、マスターサブネットマネージャに障害が起きた状況においては、当該スタンバイサブネットマネージャによって、新しいマスターサブネットマネージャが取り決められる。マスターサブネットマネージャはさらに、サブネットの周期的な掃引を実行し、任意のトポロジーの変化を検出し、これにより、ネットワークを再構成する。
【００２０】
さらに、サブネット内のホストおよびスイッチは、ローカル識別子（ＬＩＤ： local identifier）を使用してアドレス指定され得、単一のサブネットは４９１５１個のＬＩＤに制限され得る。サブネット内に有効なローカルアドレスであるＬＩＤに加えて、各ＩＢデバイスは、その不揮発性メモリに書き込まれる６４ビットのグローバル一意識別子（ＧＵＩＤ： global unique identifier）を有し得る。ＧＵＩＤは、ＩＢレイヤー３（Ｌ３）アドレスであるグローバル識別子（ＧＩＤ）を形成するために使用され得る。ＧＩＤは、ＩＰｖ６のような１２８ビットのアドレスを形成するよう、６４ビットのＧＵＩＤを６４ビットのサブネット識別子（ＩＤ）に連結することにより作成され得る。たとえば、異なるポートＧＵＩＤが、ＩＢファブリックに接続されたポートに割り当てられ得る。
【００２１】
ＳＭは、ネットワーク初期化時において、ルーティングテーブル（すなわちツリー内のノードの各対間の接続／ルート）を計算し得る。さらに、トポロジーが変化するたびに、ルーティングテーブルは、最適な性能を保証するために更新され得る。通常動作の間、ＳＭは、トポロジー変化をチェックするためにネットワークの周期的な光掃引（light sweep）を実行し得る。変化が光掃引の間に発見された場合、または、ネットワーク変化を信号送信するメッセージ（トラップ）がＳＭによって受信された場合、ＳＭは、発見された変化に従ってネットワークを再構成し得る。
【００２２】
たとえば、ＳＭは、リンクがダウンする場合、デバイスが追加される場合、または、リンクが除去される場合といったようなネットワークトポロジーが変化する場合に、ネットワークを再構成し得る。再構成ステップは、ネットワーク初期化の間に実行されるステップを含み得る。さらに、再構成は、ネットワーク変化が発生したサブネットに制限されるローカルスコープを有し得る。さらに、ルータを有する大きなファブリックのセグメント化は、再構成スコープを制限し得る。
【００２３】
ファットツリールーティング
ファットツリートポロジーは、汎用ネットワークトポロジーのスケーラブルなクラスである。ファットツリートポロジーの背後にある初期のアイデアは、リーフスイッチに存在するエンドノードを有するスイッチの階層的マルチルートツリー構造（layered, multi-rooted tree structure）としてネットワークトポロジーを構成することであった。ファットツリーのルートに向かってより太く（fat）なるリンクの使用によって、完全な２分割帯域幅が維持され得、輻輳が潜在的に回避される。これにより、任意の利用可能な帯域幅を使用する利点がさらに提供され得る。
【００２４】
ファットツリートポロジーは、たとえばＨＰＣ環境内において、高性能相互接続をサポートのためにさまざまな利点を提供し得る。これらの利点は、無デッドロック性、固有のフォールトトレランス、および、完全な２分割帯域幅を含み得る。無デッドロック性は、ツリー構造の使用により、デッドロックの回避のための特別な考慮なしで、ファットツリーをルーティングすることが可能になることを表す。固有のフォールトトレランスは、個々の送信元宛先ペア間の複数のパスの存在によりネットワーク障害の効率的な取り扱いを可能にすることに起因する。完全な２分割帯域幅は、ネットワークが、ネットワークの２つの半分同士の間のフルスピードの通信を維持することを可能にする。
【００２５】
ファットツリールーティングアルゴリズムは、ネットワークファブリックにおいてリンクにわたる最短パスルートを均一に広げるリニアフォワーディングテーブル（ＬＦＴ： linear forwarding table）を生成することを目的とし得る。当該アルゴリズムは、インデキシング順にファブリックをトラバースし得、エンドノードのターゲットＬＩＤ、したがって対応するルート、を各スイッチポートに割り当て得る。
【００２６】
さらに、ファットツリールーティングアルゴリズムは、存在するファットツリートポロジーの効率的な使用をサポートするために使用され得る。以下のアルゴリズム１は、例示的なファットツリールーティングアルゴリズムである。
【００２７】
【表１】
0006541768.tif 000002
【００２８】
上に示されるように、ルーティング関数であるroute_to_cns()は、リーフスイッチのアレイにわたって反復し得る（１〜７行目）。各選択されたリーフスイッチについて、ルーティング関数は、たとえばポートナンバリングシーケンスにおいて選択されたリーフスイッチに接続される各エンドノードポートをルーティングし得る（２〜６行目）。
【００２９】
さらに、特定のＬＩＤに関連付けられるエンドノードポートをルーティングする場合、ルーティング関数は、下りパス（down-going path）をルーティングするよう、ネットワークトポロジーにおいて１レベル上り得、各スイッチポートをルーティングする場合、ルーティング関数は、上りパス（upgoing path）をルーティングするよう下り得る。このプロセスは、ルートスイッチレベルに到達するまで繰り返され得る。その後、すべてのノードに向かうパスは、ルーティングされ得、ファブリックにおけるすべてのスイッチのリニアフォワーディングテーブル（ＬＦＴ： linear forwarding table）に挿入され得る。
【００３０】
たとえば、route_downgoing_by_going_up()関数（５行目）は、パスをバランスするとともにroute_upgoing_by going_down()関数を呼び出し得る再帰関数であり得る。route_upgoing_by going_down()関数は、route_downgoing_by_going_up()関数が呼び出されたスイッチを通って宛先へ向かうファットツリーにおける上りパスをルーティングする。
【００３１】
route_to_cns()関数に関連付けられるいくつかの潜在的な障害が存在する場合がある。第１に、route_to_cns()関数は忘却型（oblivious）であり、どのエンドノードにエンドポートが属するのかについて如何なる考慮もなくエンドポートをルーティングする。第２に、route_to_cns()関数は、ルーティングのための物理的なポート番号に依存する。
【００３２】
図１は、本開示の実施形態が実施され得るネットワーク環境におけるファットツリールーティングの図を示す。図１に示されるように、１つ以上のエンドノード１０１〜１０４は、ネットワークファブリック１００において接続され得る。ネットワークファブリック１００は、複数のリーフスイッチ１１１〜１１４および複数のスパインスイッチ（spine switch）またはルートスイッチ１３１〜１３４を含むファットツリートポロジーに基づき得る。さらに、ネットワークファブリック１００は、スイッチ１２１〜１２４のような１つ以上の中間スイッチを含み得る。
【００３３】
さらに図１に示されるように、エンドノード１０１〜１０４の各々はマルチホームノード（multi-homed node）であり得る、すなわち、複数のポートを通じてネットワークファブリック１００の２つ以上の部分に接続される単一のノードであり得る。たとえば、ノード１０１はポートＨ１およびＨ２を含み得、ノード１０２はポートＨ３およびＨ４を含み得、ノード１０３はポートＨ５およびＨ６を含み得、ノード１０４はポートＨ７およびＨ８を含み得る。
【００３４】
さらに、各スイッチは複数のスイッチポートを有し得る。たとえば、ルートスイッチ１３１はスイッチポート１〜２を有し得、ルートスイッチ１３２はスイッチポート３〜４を有し得、ルートスイッチ１３３はスイッチポート５〜６を有し得、ルートスイッチ１３４はスイッチポート７〜８を有し得る。
【００３５】
図２は、本開示の実施形態が実施され得るネットワーク環境２００におけるファットツリールーティングの図を示す。図２は、ｋｎ個のエンドノードと、各々２ｋ個のポートを有するｎ×ｋｎ−１個のスイッチとを有するｎレベルのファットツリーであるｋ−ａｒｙ−ｎツリーを示す。より具体的には、図２は、４−ａｒｙ−２ツリーを示しており、すなわち、ファットツリートポロジーは、２つのレベルと、１６個のエンドノード（２０１〜２１６）と、８個のスイッチ（４個のリーフスイッチ２２０〜２２３および４個のルートスイッチ２２５〜２２８）とを有し、各スイッチは８つのポートを有する。
【００３６】
レガシーファットツリールーティングアルゴリズム（本願明細書においてさまざまな態様でＦＴｒｅｅと称される）は、ネットワークファブリックにおいてリンクにわたる最短パスルートを均一に広げるＬＦＴを生成することを目的とする。当該アルゴリズムは一般に、インデキシング順にファブリックをトラバースし、エンドノードのターゲットＬＩＤ、したがって対応するルート、を各スイッチポートに割り当てる。同じリーフスイッチに接続されたエンドノードについて、インデキシング順は、エンドノードが接続されるスイッチポートに依存する（ポートナンバリングシーケンス）。各ポートについて、アルゴリズムは、ポート使用カウンタを維持し得るとともに、（１つを超えるオプションが利用可能な場合）ルートが追加されるごとに、ポート使用カウンタを用いて、最も用いられていないポートを選択する。同じ２つのスイッチを接続する複数のポートが存在する場合、そのようなポートはポート群を形成する。その場合、最もロードが少ないポート群のうち最も用いられていないポートが、新しいルートに追加するよう選択される。
【００３７】
一般に、ＬＩＤへのポートの割り当ては、リーフスイッチからスタートして、２つのステージで再帰的に実行される。第１のステージにおいて、アルゴリズムは各エンドノードから下方にトラバースし、ツリールートへと上方に向かい、ＬＩＤに下りポートを割り当てる。下りポートがセットされた後、アルゴリズムは、ツリーを下ることによって、すべての接続された下りスイッチ上のＬＩＤに上りポートを割り当てる。次いで、プロセスは、ツリーの次のレベルに上るように移動することにより再帰的に繰り返される。
【００３８】
ファットツリートポロジーについてのレガシールーティングメカニズム（すなわちＦＴｒｅｅアルゴリズム）に関連付けられる２つの欠点が存在する。
【００３９】
第１に、ファットツリートポロジーについて標準的なアルゴリズムによって使用されるロードバランシング技術は、ノードのトラフィック特性のいずれも考慮することなく、トポロジーにおけるリンクにわたってロードをバランシングしようと試みる。換言すると、レガシーファットツリーアルゴリズムは、ネットワークにおけるすべてのノードについて同じ重みを想定する。しかしながら、ＨＰＣクラスタにおいて、異なるノードが、自身のトラフィックプロファイルを決定する事前に割り当てられた役割をしばしば有する。たとえば、ストレージノードまたはＩ／Ｏゲートウェイは、他のノードより多くのトラフィックを消費しやすい。したがって、これらの高トラフィックノードに向かうルートは、より混雑しやすく、当該ネットワークにおいて優先順位を必要とする。あるノードのトラフィックのニーズを考慮に入れずにルーティングがなされると、いくつかのリンクが超過する（oversubscribed）一方、他のリンクが十分に利用されないため、ネットワークスループットが準最適になり得る。
【００４０】
第２に、ファットツリートポロジーについてのレガシーアルゴリズムは、性能が予測不可能になり得るので、望ましくない。この予測不可能な性能は、アルゴリズムがインデキシング順に従ってリンクにルートを割り当てるため、生じる。しかしながら、インデキシング順は、構成可能ではなく、エンドノードが接続されるリーフスイッチのポート番号に依存する。このため、同じ態様で接続されたファットツリーシステムが、異なった予測不可能な性能を示し得る。例として、２レベルのファットツリーにおいて、異なるリーフスイッチにおける２つのエンドノードが同じインデックス位置を共有する場合、それらの２つのノードに向かうトラフィックは同じルートスイッチを通ってルーティングされる。結果として、これらの２つのノードに向かうが他のリーフスイッチにおけるエンドノードから生じるすべてのトラフィックは、代替的なルートスイッチを通るいくつかにより少ないロードのパスが存在し得ても、単一のルートスイッチに接続された上りリンクの共通セットに対するアクセスについて競合することになる。
【００４１】
レガシーファットツリールーティングアルゴリズムに関する問題をよりよく示すためには、図２における例のルーティングを考慮することが有用である。図２において、ノード２０１、２０６、２１０および２１３は、４つの受信ノード、すなわち合計のネットワークトラフィックの大きな部分を受信するのが分かっているノード、を表わすためにシェードがつけられている。４つのリーフスイッチ２２０〜２２３の各々は、４つのルートスイッチ２２５〜２２８に接続される。ノードは左から右にインデキシング順にある（すなわち、ノード２０１のインデキシング順は１であり、ノード２０６のインデキシング順は２であり、ノード２１０のインデキシング順は２であり、ノード２１３のインデキシング順は１である）と仮定すると、これは、ノード２０６および２１３は同じインデキシング順（すなわち１）を共有し、ノード２０６および２１０は同様に同じインデキシング順（すなわち２）を共有するということを意味する。この結果、ファットツリールーティングアルゴリズムは、２個の最も左側のルートスイッチ２２５および２２６のみを使用して、これらの４つのエンドノードに向かうトラフィックをルーティングする。これにより、図２において破線によって示される上り方向において、４つのリンクが潜在的に超過となる。破線は、受信ノードａおよびｂに向かう上りフローが、リンク上にて帯域幅が競合することになるということを示すために、図２において「上り｛ａ，ｂ｝」とラベル付けされる。
【００４２】
例として、受信ノード２０１および２１３に向かうトラフィックフロー同士間の干渉を回避するためにトポロジーにおいて利用可能な十分なリンクが存在しても、レガシーファットツリーアルゴリズムはそれでも、ノード２０６および２１０への当該２つの独立したフローに、最も左側のリーフスイッチ２２０からの同じ上りリンクを共有させる。
【００４３】
ｋ−ａｒｙ−ｎツリーについてのインデックス衝突確率
上で論じたように、ネットワークにおいて、システム内の大部分のトラフィックを占めるノードである受信ノードがそれぞれのリーフスイッチにおいてインデックス位置を共有すると、ＦＴｒｅｅの性能は低下し得る。たとえば図２において、受信ノード２０１および受信ノード２１３はインデックス位置１を共有し、受信ノード２０６および受信ノード２１０はインデックス位置２を共有する。このため、ロードバランシングに関してＦＴｒｅｅの実行可能性を評価するために、（受信ノードが異なるリーフスイッチにおいて同じインデックス位置を共有する場合の）そのようなインデックス衝突の確率を決定することは重要である。
【００４４】
ｋ−ａｒｙ−ｎ−ツリーがｋｎ個のエンドノードと、各々が２ｋ個のポートを有するｎ×ｋｎ−１個のスイッチとを有するｎレベルのツリーであることを思い起こす。エンドノードで完全にポピュレートされた（populated）ツリーと、レベルｌ＝ｎとを仮定すると、以下のとおりである。
【００４５】
・各エンドノードはｎタプル｛０，１，…，ｋ−１｝ｎによって表され、各スイッチは順序ペア＜ｓ，ｌ＞で表される。ここで、
【００４６】
【数１】
0006541768.tif 000003
【００４７】
でありレベル
【００４８】
【数２】
0006541768.tif 000004
【００４９】
である。
・リーフスイッチは、＜ｌ０，ｌ１，…．，ｌｎ−２，ｎ−１＞であるレベルｎ−１のスイッチとして定義され、レベルｎでのエンドノードｃ０，ｃ１，…，ｃｎ−１に対するエッジを有する。
【００５０】
各リーフスイッチにおいてｋ個のエンドノードのうち、ネットワークにおいてより高い割合のトラフィック受信を各々が有するｙ個のノード（たとえば受信ノード）が存在する状況において、リーフスイッチにおける任意のインデックス位置ｉにおいて受信ノードが発見される確率は、
【００５１】
【数３】
0006541768.tif 000005
【００５２】
によって与えられる。
ファットツリーがＮ＝ｋｎ−１個のリーフスイッチを有するので、受信ノードがそれらの対応するスイッチにおいて同じインデックス位置を共有する確率を求めるために２項分布が使用され得る。任意のインデックス位置ｉにおいてちょうどｒ個の受信ノードを求める確率は、ｐｉという確率とともに、
【００５３】
【数４】
0006541768.tif 000006
【００５４】
によって与えられる。
位置ｉにおいて少なくともｘ個のインデックス衝突を得る確率を計算するために、ここで以下のように示されるように、すべての対応する確率の合計が取られる。
【００５５】
【数５】
0006541768.tif 000007
【００５６】
なお、各リーフスイッチにおいてＲ個の接続されたエンドノードを有するファットツリーについて、Ｒ個の位置のうちのいずれかにおけるインデックス衝突、すなわち
【００５７】
【数６】
0006541768.tif 000008
【００５８】
によりネットワーク競合が増加し得る。
加重ファットツリールーティングアルゴリズム
本開示の実施形態に従うと、上記のＦＴｒｅｅの欠陥を克服するために、加重ファットツリールーティングアルゴリズム（weighted fat-tree routing algorithm）（さまざまな態様で全体においてｗＦａｔＴｒｅｅと称される）が使用される。ｗＦａｔＴｒｅｅ内において、各エンドノードは新しいパラメータであるreceive_weightが割り当てられ、当該receive_weightは、システム内におけるルートを計算する際に分かっているトラフィック特性または学習されたトラフィック特性を考慮するよう用いられ得る。
【００５９】
実施形態において、各エンドノードについてのreceive_weightパラメータの値は、ルーティングテーブルを計算する際に、受信ノードへのフローの優先度を反映する。例として、範囲［１，１００］において、構成がエンドノードに重みを割り当て得る。各ノードは、ノードがネットワークにおいてどれだけ多くのトラフィックを受信するのかが分かっているかに依存して、重みを受信する。この例において、エンドノードには、１のreceive_weightが割り当てられ得る。これは、トラフィックをほとんど受信しないノード（トラフィック生成ノード）を表わす。さらに、リンクキャパシティの近傍におけるトラフィックを受信するエンドノードは、１００のreceive_weightが割り当てられ得る。そのような状況において、１と１００との間のreceive_weightの値は、ノードがネットワークにおいて受信するトラフィックの割合を表わす。
【００６０】
別の実施形態において、ノードは、５００のreceive_weightを受信し得、ネットワークにおける他のすべてのノードには１のreceive_weightが与えられる。これは、５００のreceive_weightを有するエンドノードは臨界ノードであるということと、臨界ノードに向かって流れるトラフィックが優先されるべきであるということを示す。
【００６１】
実施形態において、ｗＦａｔＴｒｅｅルーティングアルゴリズム（以下にアルゴリズム２において示される）は、３段階で再帰的に動作する。この実施形態において、すべてのルートが後方向に計算される。すなわち、宛先ノードからスタートし、逆方向に作用する。以下のアルゴリズム２は、例示的なｗＦａｔＴｒｅｅルーティングアルゴリズムである。
【００６２】
【表２】
0006541768.tif 000009
【００６３】
実施形態において、例示的なアルゴリズム２の第１の段階の間、各リーフスイッチにおけるエンドノードは、減少するreceive_weightsに従って分類される（３行目）（なお、アルゴリズム２において、receive_weightは「rcv_weight」と略記されている）。上述したように、receive_weightsは、アドミニストレータによって供給されるか、または、計算され得る。このトピックのさらに別の議論は以下に与えられる。
【００６４】
実施形態において、例示的なアルゴリズム２の第２の段階の間に、ｗＦａｔＴｒｅｅは、各エンドノード（たとえば宛先ノードまたはルートの宛先）から上方にツリーをトラバースし、次のレベルにおいて、選択されたスイッチにおける現在ノードに下りポートを割り当てる（ROUTEDOWGOINGBYASC；例示的なアルゴリズム２の６行目）。下りポートが選択されると、アルゴリズムは、対応するポートについて蓄積された下り重みを、ルーティングされたエンドノードのreceive_weightだけ増加する（１４行目）。これは、新しい加重ルートが対応するポートに追加されたことを示す。
【００６５】
実施形態において、下りポートがセットされた後、例示的なアルゴリズム２の第３の段階において、アルゴリズムは、ツリーを下降する（ROUTEUPGOIGNBYDESC）ことによって、すべての接続された下りスイッチ上のエンドノードに向かうルートについて上りポートを割り当てる（とともに、ルーティングされたエンドノードのreceive_weightを追加することによってポートについて対応する上り重みを更新する）。次いで、当該３段階のプロセス全体は、ツリーにおいて次のレベルに上るように移動することにより繰り返される（１６行目）。
【００６６】
実施形態において、ｗＦａｔＴｒｅｅアルゴリズムであるアルゴリズムが、各ルート計算について最もロードが少ないポートを選択する。選択基準は、まず下り重みに基づく。２つのポートが等しい下り重みを有する状況において、最も小さい上り重みを有するポートが選択される。さらに、下りおよび上り重みの両方が等しい状況において、アルゴリズムは、プロセスを決定的に保つために、最も小さいＧＵＩＤを有するポートを選択する。以下の例示的なアルゴリズム３は、ｗＦａｔＴｒｅｅが各ルート計算について最もロードが少ないポートをどのように選択するかを示す。
【００６７】
【表３】
0006541768.tif 000010
【００６８】
実施形態において、ｗＦａｔＴｒｅｅは、いくつかの態様でレガシーＦＴｒｅｅルーティングアルゴリズムを改善する。第１に、リーフスイッチにおける各ノードがインデキシングされるネットワークにおけるノードのインデキシングに上述したように基づくＦＴｒｅｅと異なり、ｗＦａｔＴｒｅｅは受信重みが減少する順にノードをルーティングする。これは、たとえば受信ノード（たとえばシステム内のトラフィックの大部分を有するノード）であるノードが最初にルーティングされることを可能にする。さらに、スイッチにおける下りポートがエンドノードに割り当てられる状況において、ｗＦａｔＴｒｅｅは、当該ノードに関連付けられる他のローカルリンク上の上り重みを更新する。これは、上りリンクが潜在的にそのノードに向かってトラフィックを搬送するので、上り重みがリンクを選択する場合に考慮されることを可能にする。最後に、最も使用されていない下りポートが選択されている状況において、下り重みをチェックした後、ｗＦａｔＴｒｅｅは、さらに最も競合しなかったポートを選択するために割り当てられる上り重みをチェックする。これは、下り方向においてルーティングされるリンクの数をチェックするのみであるレガシーＦＴｒｅｅに対して、ロードバランシングの向上という利点を提供する。下りリンクの数が同じであるということが分かると、レガシーＦＴｒｅｅは、ルーティングを決定するようインデキシング順に戻る。
【００６９】
ここで図３を参照して、図３は、本開示の実施形態が実施され得るネットワーク環境におけるファットツリールーティングを示す。ネットワーク環境３００は、ｋｎ個のエンドノードと、各々２ｋ個のポートを有するｎ×ｋｎ−１個のスイッチとを有するｎレベルのファットツリーであるｋ−ａｒｙ−ｎツリーとして示される。図２と同様に、強調表示されたノード３０１、３０６、３１０および３１３はたとえば合計のネットワークトラフィックの大部分を搬送するので、これらのノードは受信ノードとして指定される。図３に示される実施形態において、ｗＦａｔＴｒｅｅルーティングアルゴリズムが使用される。ｗＦａｔＴｒｅｅルーティングアルゴリズムの結果、ネットワーク環境は、ルートを計算する際に、各ノードのreceive_weightを考慮する。
【００７０】
実施形態において、図３に示されるように、受信ノード３０１へと流れる上りトラフィック、すなわち、塗りつぶされた矢印が示す方向を有する破線によって表わされている上りトラフィックは、完全にルートスイッチ３２５を通る。次いで、塗りつぶされた矢印を有する実線によって表わされる、受信ノード３０１への下りルートは、ルートスイッチ３２５からリーフスイッチ３２０を通って流れる。同様に、受信ノード３１３に向かう上りトラフィック、すなわち、空の矢印が示す方向を有する破線によって表わされている上りトラフィックは、リーフスイッチ３２３へと下方にルーティングされる前に、完全にルートスイッチ３２８を通過する。実施形態において、受信ノード３０６および３１０に流れるトラフィックについて、同様のトラフィックパターンが存在する。
【００７１】
図３において使用されたｗＦａｔＴｒｅｅルーティングアルゴリズムは、ネットワーク環境３００内の利用可能なリンク上に向上した分散を示す。これは、レガシーＦＴｒｅｅを使用するネットワークに対して、ネットワークにおける性能の向上を可能にする。
【００７２】
実施形態において、スイッチにおける下りポートが、あるエンドノードに向かうルートについて選択されると、エンドノードに向かう、スイッチへのすべての入力トラフィックが、選択されたポートを通ってルーティングされる。特に、すべてのリンクが全二重である場合、スイッチに接続されたすべての他の上りリンクが、上り方向において、当該エンドノードに向かうトラフィックを潜在的に搬送している。選択されたポートの下り重みをセットした後、ｗＦａｔＴｒｅｅは、すべての利用可能な上りリンクを、ルーティングされたノードのreceive_weightでマークする。同じ下りロードを有する複数の下りポートが利用可能な状況において、ルートについて次の下り部分を選択すると、最も小さい上り重みを有するポートが選択される。下り重みおよび上り重みの両方に選択を基づかせることによって、ネットワークにおけるリンクがエンドノードのreceive_weightsに従ってバランシングされることが保証される。
【００７３】
図４は、実施形態に従ったネットワーク環境内の例示的なポート選択を示す。図４に示されるネットワーク環境は、リーフスイッチ４２０および４２１と、ルートスイッチ４２５および４２６と、エンドノード４０１および４０２とを含む。図４〜図９の議論の全体にわたって、当該ネットワーク環境はｗＦａｔＴｒｅｅアルゴリズムを利用しているということと、エンドノード４０１およびエンドノード４０２の両方が、それらのそれぞれのリーフスイッチにおいて同じインデキシング位置と、同じ１００の受信重み（すなわち、エンドノード４０１およびエンドノード４０２の両方についてreceive_weight=100）とを有するということとが想定される。
【００７４】
図５は、実施形態に従ったネットワーク環境内の例示的なポート選択を示す。図５に示されたネットワーク環境は、リーフスイッチ４２０および４２１と、ルートスイッチ４２５および４２６と、エンドノード４０１および４０２とを含む。図５は、エンドノード４０１に向かうルートを計算する際に、同じ下り重みを有するリンク４５０および４５１である２つの上流ポートが、２つの異なるルートスイッチ４２５および４２６上で利用可能であるということを示す。示された実施形態において、示される上り方向に重みはまだなく、さらに、下り方向に重みはまだない。したがって、リンク４５０上の重みは、上り＝０，下り＝０である。同様に、リンク４５１上の重みは、上り＝０，下り＝０である。
【００７５】
図６は、実施形態に従ったネットワーク環境内の例示的なポート選択を示す。図６に示されるネットワーク環境は、リーフスイッチ４２０および４２１と、ルートスイッチ４２５および４２６と、エンドノード４０１および４０２とを含む。図６に示されるように、下り方向または上り方向に重みがまだ存在しなかったので、最も左側のルートスイッチ上のポート４２５が、より小さなＧＵＩＤを搬送する際に、選択される。このため、リンク４５０はこのように、下り方向にエンドノード４０１のreceive_weightを搬送する。したがって、リンク４５０上の重みは、上り＝０，下り＝１００である。さらに、リンク４５２は、上り方向にエンドノード４０１のreceive_weightを搬送する。したがって、リンク４５２上の重みは、上り＝１００，下り＝０である。
【００７６】
図７は、実施形態に従ったネットワーク環境内における例示的なポート選択を示す。図７に示されるネットワーク環境は、リーフスイッチ４２０および４２１と、ルートスイッチ４２５および４２６と、エンドノード４０１および４０２とを含む。図５と同様である図７に示されるように、エンドノード４０２へのルートが計算されている。図５に示されるように、同じ下り重みを有する２つの上流ポートが存在する。両方のリンク４５２および４５３は、等しい下り重み、すなわち０、を有する。しかしながら、リンク４５２は１００の上り重みを有し、リンク４５３は０の上り重みを有する。これは、４５３の上り重みは４５２の上り重みより小さいということを意味する。上で論じたように、２つのリンクが同じ下り重みを有する場合、１つのリンクが別のリンクより大きな上向方重みを有していれば、アルゴリズムは、下方にルーティングするために、より小さな上り重みを有するポートを選択する。
【００７７】
図８は、実施形態に従ったネットワーク環境内の例示的なポート選択を示す。図８に示されるネットワーク環境は、リーフスイッチ４２０および４２１と、ルートスイッチ４２５および４２６と、エンドノード４０１および４０２とを含む。図８に示されるように、リンク４５２（図７参照）上の上り重みがリンク４５３上の上り重みより大きかったので、リンク４５３がノード４０２へと下方に搬送するために選択される。結果として、リンク４５３はこのように、下り方向にエンドノード４０２のreceive_weightを搬送する。したがって、リンク４５３上の重みは、上り＝０，下り＝１００である。さらに、上で論じたように、リンク４５１は、上り方向にエンドノード４０２のreceive_weightを搬送する。したがって、リンク４５１上の重みは、上り＝１００，下り＝０である。
【００７８】
図９は、実施形態に従ったネットワーク環境内の例示的なポート選択を示す。図９に示されるネットワーク環境は、リーフスイッチ４２０および４２１と、ルートスイッチ４２５および４２６と、エンドノード４０１および４０２とを含む。図９は、すべてのリンク重みが更新された後の最終ルーティングを示す。なお、特に、２つの受信ノードがそれぞれのリーフスイッチにおいて同じインデキシング位置を共有していても、エンドノード４０１および４０２へのルートは、トポロジーにおける利用可能なリンクを利用して良好にバランシングされる。
【００７９】
図１０は、フローチャートを介して、ネットワーク環境におけるツリートポロジーにおいて配される複数のスイッチおよび複数のエンドノードの間の効率的なロードバランシングをサポートするための例示的な方法１０００を示す。ステップ１００１では、例示的な方法１０００は、複数のエンドノードの分類から始まる。当該複数のエンドノードは、複数のスイッチの１つ以上の上に存在し、複数のエンドノードは、受信重みの減少する順に分類される。実施形態において、エンドノードの受信重みは１と１００との間の値または別の好適な範囲の値であり得る。より大きな値の受信重みは、より小さな受信重みを有するノードに対して、ネットワークにおけるトラフィックの割合的により大きなシェアを有するそれぞれのノードを示す。
【００８０】
ステップ１００２では、例示的な方法１０００は、受信重みの減少する順で複数のエンドノードをルーティングすることを継続する。ルーティングは、少なくとも１つの下りポートおよび少なくとも１つの上りポートを選択することを含む。減少する順にルーティングすることによって、ネットワークが、より高ボリュームのトラフィックを受信するエンドノードへのトラフィックを優先するとともにポート衝突の可能性を減少させることが可能になる。いくつかの実施形態において、当該選択は、それぞれの受信重みに基づく。
【００８１】
ステップ１００３では、例示的な方法１０００は、ルーティングされたエンドノードの受信重みによって、各選択された下りポート上の蓄積された下り重みを増加させることに進み得る。
【００８２】
ステップ１００４では、例示的な方法１０００は、ルーティングされたエンドノードの受信重みによって、各選択された上りポート上の蓄積された上り重みを増加させることに進み得る。
【００８３】
receive_weightsの計算
実施形態において、ノードに関する管理情報が利用可能でない場合、より特定的には、ノードのreceive_weightsが供給されないまたはそうでなければ利用可能ではない場合、receive_weightsが計算され得る。ＯＦＥＤ（OpenFabrics Enterprise Distribution）を利用する実施形態において、ibdatacountsと称されるユーティリティがデータカウンタを読み出すために提供される。ネットワークをセットアップし、各ノードに等しいreceive_weightsを与えた後、新しい重みが所定の時間期間の後に計算または学習され得る。
【００８４】
実施形態において、Ｂが、ある時間期間にわたって測定されたすべてのノードについての受信帯域幅のセットである場合、各ノードについての重みは、以下の例示的な方程式において与えられるように、線形変換を使用することによって、範囲［ａ，ｂ］に割り当てられ得る。
【００８５】
【数７】
0006541768.tif 000011
【００８６】
実施形態において、ひとたび重みの新しいセットがデータカウンタから取得されると、ネットワークは、最適化されたルーティングテーブルにより再構成され得る。しかしながら、実施形態において、最適化されるべきルーティングテーブルを再構成する利点と、それに対するそのような再構成が必要とするダウンタイムとをバランシングするバランシングテストが実行され得る。実施形態におけるルーティングテーブルの再構成は、トポロジー変化のような外部ファクタによって再構成が引き起こされるような時間まで、延期され得る。
【００８７】
一実施形態において、ミドルウェアマシン環境におけるツリートポロジーで配される複数のスイッチおよび複数のエンドノードの間で効率的なロードバランシングをサポートするためのシステムを提供され得る。上記システムは、複数のスイッチおよび複数のエンドノードと通信するサブネット管理インターフェイスと、サブネット管理インターフェイスに結合されるとともに、複数のエンドノードを分類するように構成されるサブネットマネージャとを含み、複数のエンドノードは複数のスイッチのうちの１つ以上の上に存在し、複数のエンドノードは受信重みの減少する順に分類され、複数のエンドノードは受信重みの減少する順にルーティング（rout）され、上記ルーティングは、少なくとも１つの下りポートおよび少なくとも１つの上りポートを選択することを含み、ルーティングされたエンドノードの受信重みだけ、各選択された下りポート上の蓄積された下り重みを増加し、ルーティングされたエンドノードの受信重みだけ、各選択された上りポート上の蓄積された上り重みを増加する。
【００８８】
サブネットマネージャは、サブネット管理インターフェイスと組み合わせて、上記のいずれかのファットツリールーティングアルゴリズムまたはファットツリールーティングアルゴリズムのステップの１つ以上を実現し得るということが当業者には明白である。上記のサブネット管理インターフェイスおよびサブネットマネージャのようなユニット／モジュールの特定の動作プロセスについて、同じ概念を共有する関連する方法の実施形態において、対応するステップに参照がなされ得、当該参照はさらに、関連するユニット／モジュールの開示と見なされるということが当業者には明白である。したがって、特定の動作プロセスのうちのいくつかは、説明の便宜上および簡潔性のために、繰り返しまたは詳細に記載されない。サブネット管理インターフェイス、サブネットマネージャおよび／またはシステムのようなユニット、装置およびデバイスは、公知または将来開発されるソフトウェア、ハードウェア、ならびに／または、そのようなソフトウェアおよびハードウェアの組み合わせの形態で実現され得るということが理解されるべきである。
【００８９】
一実施形態において、複数のスイッチおよび複数のエンドノードは、高性能コンピューティング（ＨＰＣ）クラスタで使用されるファットツリートポロジーに構成される。
【００９０】
一実施形態において、サブネットマネージャはさらに、ネットワークにおける１つ以上のリーフスイッチ上の複数のエンドノードの各々のために、受信重みを受信するように構成され得る。
【００９１】
一実施形態において、少なくとも１つの下りポートを選択することは、複数の下りポートを比較して、最も蓄積されていない下り重みを有する下りポートを選択することを含む。
【００９２】
一実施形態において、少なくとも１つの下りポートを選択することは、複数の下りポートを比較して、最も蓄積されていない上り重みを有する下りポートを選択することを含む。
【００９３】
一実施形態において、少なくとも１つの下りポートを選択することは、複数の下りポートを比較して、最も小さなグローバル一意識別子を有する下りポートを選択することとを含む。
【００９４】
上記ステップのうちの少なくともいくつかは、ＤＳＰ、ＦＰＧＡ、ＡＳＩＣなどを含むがこれらに限定されないさまざまなハードウェアによっても実現され得るということは、当業者にとって明白である。たとえば、上記実施形態のうちのいくつかにおける「オペレーション」は、ＣＰＵにおいて実行される命令によって、または、「オペレーション」の機能を実現するＤＳＰ、ＦＰＧＡ、ＡＳＩＣのような特別のプロセッサによって、実現され得る。
【００９５】
当業者が理解するように、ブロック図によって表わされる関数は、ソフトウェアおよび／またはハードウェアによって実行され得る。さまざまな関数は、イベントドリブン、インタラプトドリブンなどといった特定の処理ストラテジーに依存して、図において示された以外の順番またはシーケンスで順に実行される。同様に、明示的に示されていないが、１つ以上のステップまたは関数は繰り返し実行されてもよい。同様に、さまざまな関数は、特定の実現例に依存して省略され得る。当業者に公知のさまざまな関数は、明示的に説明または記載されていない場合があるが、示されたブロックまたはモジュールによって暗示される。一実施形態において、示された関数は、システムの動作を制御するために、コンピュータ読取可能記憶媒体に格納されたソフトウェア、命令またはコードによって実現されるとともにマイクロプロセッサベースのコントローラによって実行される制御ロジックによって主に実行される。磁気テープドライブに関して一般に説明および記載されたが、当業者は、さまざまな関数はさまざまな他のタイプの周辺記憶デバイスに適用可能であり得るということを認識するであろう。
【００９６】
本発明は、１つ以上のプロセッサ、メモリ、および／または本開示の教示に従ってプログラムされたコンピュータ読取可能な記録媒体を含む１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて簡便に実施され得る。ソフトウェア技術の当業者には明らかであるように、適切なソフトウェアコーディングは、熟練したプログラマによって本開示の教示に基づき容易に用意され得る。
【００９７】
いくつかの実施形態では、本発明は、本発明の処理のいずれかを実行するようコンピュータをプログラムするのに用いられ得る命令を格納した一時的でない記憶媒体またはコンピュータ読取可能媒体であるコンピュータプログラムプロダクトを含む。当該記憶媒体は、フロッピーディスク（登録商標）、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む任意のタイプのディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリ素子、磁気または光学カード、ナノシステム（分子メモリＩＣを含む）、または命令および／またはデータを格納するのに好適な任意のタイプの媒体もしくは装置を含み得るが、これらに限定されない。
【００９８】
本発明の上記の記載は、例示および説明目的で与えられている。網羅的であることまたは開示されたそのものの形態に本発明を限定することを意図したものではない。当業者にとっては、多くの修正例および変形例が明確であろう。上記の実施形態は、本発明の原理およびその実際的な適用を最もよく説明するために選択および記載されたものであり、これにより他の当業者が、特定の使用に好適なさまざまな修正例を考慮して、さまざまな実施形態について本発明を理解するのが可能になる。本発明の範囲は、添付の特許請求の範囲およびそれらの均等物によって定義されることが意図される。
【図１】
0006541768.tif 000012
【図２】
0006541768.tif 000013
【図３】
0006541768.tif 000014
【図４】
0006541768.tif 000015
【図５】
0006541768.tif 000016
【図６】
0006541768.tif 000017
【図７】
0006541768.tif 000018
【図８】
0006541768.tif 000019
【図９】
0006541768.tif 000020
【図１０】
0006541768.tif 000021