(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0007】
詳細な説明:
本発明は、添付の図面において、限定ではなく例示のために示されており、図中同様の参照符号は同様の要素を指している。この開示において「或る」、「1つの」または「いくつかの」実施形態と言及する場合、これは必ずしも同じ実施形態である必要はなく、このように言及する場合、少なくとも1つを意味している。
【0008】
以下の本発明の説明では、高性能ネットワークについての一例としてインフィニバンド(IB)ネットワークを用いている。他のタイプの高性能ネットワークを制限なく使用できることが当業者にとって明らかになるだろう。また、以下の本発明の説明では、ファブリック・トポロジーについての一例としてファットツリー・トポロジーを用いている。他のタイプのファブリック・トポロジーを制限なく使用できることが当業者にとって明らかになるだろう。
【0009】
この明細書中に記載されるシステムおよび方法により、ネットワーク環境におけるマルチホーム型ルーティングをサポートすることができる。
【0010】
インフィニバンドアーキテクチャ
インフィニバンドアーキテクチャ(IBA:InfiniBand Architecture)は2層型トポロジー分割をサポートする。下層においては、IBネットワークはサブネットと称される。この場合、サブネットは、スイッチおよび二地点間リンクを用いて相互接続される1組のホストを含み得る。上層においては、IBファブリックは、ルータを用いて相互接続することができる1つ以上のサブネットを構成する。
【0011】
さらに、サブネット内のホストおよびスイッチは、ローカル識別子(LID:local identifier)を用いてアドレス指定することができ、単一のサブネットは49151LIDに制限することができる。サブネット内においてのみ有効なローカルアドレスであるLIDに加えて、各々のIBデバイスは、その不揮発性メモリに焼きつけられる64ビットのグローバル固有識別子(GUID:global unique identifier)を有し得る。GUIDは、IB層3(L3)アドレスであるグローバル識別子(GID:global identifier)を形成するために用いることができる。GIDは、IPv6のような128ビットアドレスを形成するように64ビットサブネット識別子(ID:identifier)を64ビットGUIDと連結することによって作成することができる。たとえば、さまざまなポートGUIDを、IBファブリックに接続されたポートに割当てることができる。
【0012】
加えて、サブネットマネージャ(SM:subnet manager)は、IBファブリックにおけるルーティングテーブル計算を実行する役割を果たすことができる。ここで、IBネットワークのルーティングは、ローカルサブネットにおけるすべてのソースと宛先対との間において完全な接続性、デッドロック自由性および適切なロードバランシングを獲得することを目的としている。
【0013】
サブネットマネージャは、ネットワーク初期化時間にルーティングテーブルを計算することができる。さらに、ルーティングテーブルは、最適な性能を保証するために、トポロジーが変化するたびに更新することができる。通常の動作中、サブネットマネージャは、トポロジーの変化をチェックするために、ネットワークに対して周期的な光掃引を実行することができる。光掃引中に変化が発見された場合、または、ネットワークの変化を信号で伝えるメッセージ(トラップ)がサブネットマネージャによって受信された場合、サブネットマネージャは、発見された変化に応じてネットワークを再構成することができる。
【0014】
たとえば、サブネットマネージャは、たとえば、リンクがダウンした場合、デバイスが追加された場合、または、リンクが排除された場合など、ネットワークトポロジーが変化した場合に、ネットワークを再構成することができる。再構成するステップは、ネットワーク初期化中に実行されるステップを含み得る。さらに、再構成には、ネットワークの変化が起こった局所的な範囲が含まれてもよく、この局所的な範囲は、サブネットに制限されている。また、大型のファブリックをルータでセグメント化することにより、再構成範囲が制限される可能性がある。
【0015】
加えて、IBネットワークは、無損失のネットワーキング技術に基づいたものであって、いくつかの条件下ではデッドロックし易くなる可能性がある。たとえば、デッドロックが起こる可能性があるIBネットワークにおいては、バッファまたはチャネルなどのネットワークリソースが共有されており、パケットドロップが許容されていない。ここで、デッドロックを発生させる必須条件として、周期的な信頼依存性の生成が挙げられる。これは、周期的な信頼依存性がデッドロックを発生させる可能性があることを意味している。他方で、これは、周期的な信頼依存性が存在しているときは常にデッドロックが起こるであろうことを意味しているわけではない。
【0016】
ファットツリー・ルーティング
ファットツリー・トポロジーは、高性能相互接続をサポートするためのさまざまな利点を提供することができる。これらの利点は、デッドロック自由性、固有のフォールトトレランスおよび完全な二分帯域幅を含み得る。デッドロック自由性があれば、デッドロックの回避を特別に考慮することなく、ツリー構造を用いることによってファットツリーをルーティングすることが可能となる。固有のフォールトトレランスがあれば、個々のソース宛先対の間に複数の経路が存在することによりネットワークの障害に対処することが容易になる。完全な二分帯域幅があれば、ネットワークは、二等分にした当該ネットワーク間における通信を最高速度で維持することができる。
【0017】
さらに、ファットツリー・ルーティングアルゴリズムを用いることにより、基礎をなすファットツリー・トポロジーの効率的な使用をサポートすることができる。以下のアルゴリズム1は、例示的なファットツリー・ルーティングアルゴリズムである。
【0019】
上に示されるように、ルーティング機能であるroute_to_cns()は、一連のリーフスイッチにわたって繰り返すことができる(1〜7行目)。選択されたリーフスイッチごとに、ルーティング機能は、たとえば、ポート番号付けシーケンスにおいて、選択されたリーフスイッチに接続される各々のエンドノードポートに向けてルーティングすることができる(2〜6行目)。
【0020】
さらに、特定のLIDに関連付けられるエンドノードポートをルーティングする場合、ルーティング機能は、ネットワークトポロジーにおいて1レベル上がって下降経路をルーティングすることができ、各々のスイッチポートをルーティングする場合、ルーティング機能が下がり、上昇経路をルーティングすることができる。このプロセスは、ルートスイッチレベルに達するまで繰り返すことができる。その後、すべてのノードに向かう経路がルーティングされ、ファブリックにおけるすべてのスイッチのリニアフォワーディングテーブル(LFT:linear forwarding table)に挿入される。
【0021】
たとえば、route_downgoing_by_going_up()機能(5行目)は反復機能であってもよく、この反復機能は、経路のバランスをとることができ、route_upgoing_by going_down()機能を呼び出し、この機能が、ファットツリーにおける上り経路をスイッチを介してルーティングするが、このルーティングの宛先からは、route_downgoing_by_going_up()機能が呼び出されている。
【0022】
さらに、route_to_cns()機能に関していくつかの潜在的な欠点が生じる可能性がある。第一に、route_to_cns()機能は記憶されておらず、エンドポートがどのエンドノードに属しているかを考慮することなくエンドポートをルーティングする。第二に、route_to_cns()機能は、ルーティングについての物理的なポート番号に依存している。
【0023】
図1は、ネットワーク環境においてファットツリー・ルーティングをサポートする例を示す。
図1に示されるように、1つ以上のエンドノード101〜104はネットワークファブリック100に接続することができる。ネットワークファブリック100は、ファットツリー・トポロジーに基づき得るものであって、複数のリーフスイッチ111〜114および複数のスパインスイッチまたはルートスイッチ131〜134を含む。加えて、ネットワークファブリック100は、スイッチ121〜124などの1つ以上の中間スイッチを含み得る。
【0024】
また
図1に示されるように、エンドノード101〜104の各々は、マルチホーム型ノードであってもよく、すなわち、複数のポートを介してネットワークファブリック100の2つ以上の部分に接続される単一ノードであってもよい。たとえば、ノード101は、ポートH1およびH2を含み得る。ノード102はポートH3およびH4を含み得る。ノード103はポートH5およびH6を含み得る。ノード104はポートH7およびH8を含み得る。
【0025】
加えて、各々のスイッチは複数のスイッチポートを有し得る。たとえば、ルートスイッチS1 131はスイッチポート1、2を有し得る。ルートスイッチS2 132はスイッチポート3、4を有し得る。ルートスイッチS3 133はスイッチポート5、6を有し得る。ルートスイッチS4 134はスイッチポート7、8を有し得る。
【0026】
リーフスイッチベースでルーティングするアルゴリズム1などのファットツリー・ルーティングアルゴリズムを用いると、独立したルートが異なる2ポートノード101〜104に割当てられることが保証されなくなる。たとえば、ポートH1、H2、H5およびH6は、各々のスイッチ(図示せず)上のポート1に接続することができ、ポートH3、H4、H7およびH8は、各々のスイッチ(図示せず)上のポート2に接続される。ここで、4つのエンドポートを介してルーティングし、リーフスイッチ113およびスイッチ123を通過した後、ファットツリー・ルーティングアルゴリズムは、ノード101上で対をなすエンドポートH1およびH2からの2つの経路を、(それぞれ、スイッチポート1、2を介して)同じ最左端のルートスイッチにS1 131に割り当て得る。同様に、他のエンドポートの対、たとえば、ノード102上のH3およびH4、ノード103上のH5およびH6、ならびにノード104上のH7およびH8は、同じルートスイッチ(すなわち、S2 132〜S4 134のそれぞれ)を介してルーティングされてもよい。
【0027】
これにより、結果として、ユーザにとって不所望な動作が生じる可能性がある。
図1に示されるように、エンドノード101は、当該エンドノード101が、固有の物理的なフォールトトレランス(すなわち、さまざまなリーフスイッチ111および113に接続された2つのエンドポート)を有する可能性があったとしても、ルートスイッチS1 131において単一障害点を被る可能性がある。加えて、物理的な配線に応じて、同様の問題が起こる可能性があり、単一障害点がファットツリー・トポロジーにおける他のスイッチ上で発生する可能性がある。
【0028】
さらに、ネットワークファブリック100内においては、同じノード上における異なるポートへのトラフィックが単一のリンクを介してルーティングされてもよい。このため、このような単一のリンクは、エンドポートの組についての付加的な単一障害点と、性能ボトルネックとの両方を呈する可能性がある(なぜなら、異なるエンドポートを対象としたトラフィックが有効に利用できるのが単一の共有リンクの帯域幅だけであるかもしれないからである)。
【0029】
マルチホーム型ファットツリー・ルーティング
本発明の実施形態に従うと、システムは、ファットツリーにおけるマルチホーム型ノードのために独立したルートを提供することができ、そのため、単一障害点によって完全な機能停止がもたらされる可能性がなくなる。
【0030】
図2は、本発明の実施形態に従った、ネットワーク環境におけるマルチホーム型ルーティングをサポートする例を示す。
図2に示されるように、ネットワーク環境は、複数のエンドノード(たとえば、ノード201〜204)を含み得る。これら複数のエンドノードは各々、1つ以上のポート(たとえば、ポートH1〜H8)を含み得る。加えて、複数のエンドノード201〜204は、ファットツリー・トポロジーにあり得るネットワークファブリック200に接続することができる。また、ネットワークファブリック200は、複数のスイッチ、たとえばリーフスイッチ211〜214およびルートスイッチS1 231およびS2 232を含み得る。
【0031】
本発明の実施形態に従うと、mFtreeアルゴリズムなどのマルチホーム型ファットツリー・ルーティングアルゴリズムは、たとえば、サブネットマネージャ(SM)210によって、ファットツリー・ルーティングを実行するために用いることができる。
図2に示される例においては、mFtreeアルゴリズムは、相互に冗長なやり方でルーティングされる必要があり得るノード201上のポートH1およびポートH2からの経路を識別することができる。なぜなら、両方のポートが単一のエンドノード1上に位置しているからである。
【0032】
さらに、mFtreeアルゴリズムは、経路を実際に冗長にすることを保証することができる。たとえば、ノード201上のポートH1からの経路は、リーフスイッチ211を通過し、最終的にルートスイッチ231に到達し得る。
図2に示されるように、システムは、経路における(濃い陰影で示される)スイッチにマーク付けすることができる。そして、システムは、ノード201上のポートH2からの経路を決定するために、マーク付けされたスイッチを使用しないようにすることができる。これにより、ノード201上のポートH2からの経路は、(たとえば、リーフスイッチ213を介する)冗長経路を通過することができ、最終的に、(軽く陰影を付けて示される)別のルートスイッチ232に到達する。
【0033】
ノード201のためのルーティングステップが完了すると、アルゴリズムは、(太線で示されるように)ルーティングされたノードにマーク付けすることができる。これにより、アルゴリズムがノード201の別のポートに達したときに、このノード201についてルーティングステップが繰り返されないようにする。こうして、システムは、単一障害点が、マルチポートノードの完全な機能停止をもたらさないようにすることを保証することができる。
【0034】
加えて、ファットツリー・ルーティングアルゴリズムは、インフィニバンド(IB)ファットツリー・トポロジーの性能、スケーラビリティ、利用可能性および予測可能性を改善させることができる。
【0035】
以下のアルゴリズム2は、例示的なマルチホーム型ファットツリー・ルーティングアルゴリズムである。
【0037】
上に示されるように、アルゴリズム2は、マルチホーム型ルーティングアルゴリズムであって、すべてのリーフスイッチに対して繰り返すことができ、さらに、各々のリーフスイッチのためのすべてのリーフスイッチポートに対して繰り返すことができる(1〜9行目)。これにより、アルゴリズム2は、アルゴリズム1と同様に決定論的になり得る。
【0038】
さらに、アルゴリズム2は、スイッチポートに関連付けられたエンドノードを発見するために、リーフスイッチ上のスイッチポートを採用することができる(3行目)。単にリーフスイッチに接続された遠隔ポートのLIDを採用するアルゴリズム1とは異なり、アルゴリズム2は、ルーティング演算を実行するためのパラメータとしてエンドノードを採用することができる(7行目)。
【0039】
以下のアルゴリズム3は、ファットツリーにおける単一のエンドノードをルーティングするための例示的なアルゴリズムである。
【0041】
上に示されるように、アルゴリズム3は、選択されたエンドノード上のすべてのポートに対して繰り返すことができる(1〜7行目)。たとえば、アルゴリズム3は、route_downgoing_by_going_up()機能の修正バージョンを用いて、選択されたエンドノード上の各々のポートをルーティングすることができる(6行目)。選択されたエンドノード上のすべてのポートがルーティングされる場合、ルーティングアルゴリズムは、選択されたエンドノードをルーティングされるものとしてマーク付けすることができ(8行目)、これにより、別のリーフスイッチ上に到達したときにエンドノードがルーティングされないようにする。また、アルゴリズム3は、さまざまな状況でシステムの性能を改善させることができる(たとえば、アルゴリズム3は、2ポートノードのためにループ反復のうち半分を保存しておくことができる)。
【0042】
加えて、アルゴリズム3は、単一のホストチャンネルアダプタ(HCA:host channel adapter)上に複数のポートがあるシナリオと、2つ以上のHCA上に複数のポートがあるとシナリオとの両方に適用され得る。アルゴリズムはさまざまな方法を用いて、同じ論理ノード上の単一のHCAまたは複数のHCA上のポート(またはいずれかのエンドポート)を識別することができる。ここで、ノードは、物理サーバもしくは仮想サーバ、IOデバイス、または、1つ以上のHCAポートを介してIBファブリックに接続された如何なるの種類のエンドノードであってもよい。
【0043】
さらに、アルゴリズム3は、選択されたノード上の各々のポートをルーティングすることができ、フラグを用いて経路上の各々のスイッチにマーク付けすることができる。こうして、アルゴリズム3は、同じエンドノード上のさまざまなポートのためにさまざまなスイッチを選択することができる。その後、アルゴリズムは、次のノードにまで進み得るように、すべてのスイッチ上のフラグをひっくり返すことができる。
【0044】
加えて、システムは、clear_redundant_flag()機能においてスイッチ冗長性フラグをクリアすることによって最適化することができる(9行目)。スイッチ冗長性フラグをクリアするための最適な方法としては、特定のスイッチが経路上にあったか否かに関わらずすべてのスイッチに対して繰り返されるループをこの機能で用いるのではなく、経路上にあるスイッチのリストを作成して、clear_redundant_flag()機能がリスト中のそれらスイッチに対してのみ繰り返されることを保証する方法が挙げられる。
【0045】
以下のアルゴリズム4は、ファットツリーにおける単一のエンドノードポートをルーティングするための例示的なアルゴリズムである。
【0047】
上に示されるように、アルゴリズム4におけるroute_downgoing_by_going_up()機能の修正バージョンでは、冗長性が主要な問題として処理される。最低位の下方向カウンタを有するポートグループが選択されているアルゴリズム1とは異なり、アルゴリズム4は、当該アルゴリズム4がエンドノードに属する他のいずれのポートもルーティングしない場合(すなわち、冗長フラグが真である場合)、エンドノードの上向きノードを次のホップとして選択し得るだけである。
【0048】
ここで、次のエンドノードがルーティングされる前に、冗長フラグがクリアされる。極めて過度にサブスクライブされたファブリックにおいて起こり得るような冗長なノードが存在しない場合、または、リンク障害がある場合、mFtreeは通常のファットツリー・ルーティングにまで後退し、この場合、ユーザは、アルゴリズム1において提示されるルーティング機能と同様にこのルーティング機能が動作することを認識し得る。
【0049】
加えて、2つのスイッチ間に代替的なスイッチおよび平行なリンクが存在しない場合、上述のアルゴリズム4は、性能/負荷の分散およびリンクレベル冗長性の両方をサポートするために、同じエンドノード上のさまざまな目標ポートのためにさまざまなリンクを選択することができる。他方では、性能が優先される場合、両方のリンクが同じレベルの負荷を有する場合にのみ、同じエンドノード上の異なる目標ポートに対して別個のリンクが選択され得る。
【0050】
図3は、ネットワーク環境においてファットツリー・ルーティングをサポートするために冗長性を提供する例を示す。
図3に示されるように、1つ以上のマルチホーム型エンドノード301〜304はネットワークファブリック300に接続することができる。ネットワークファブリック300は、ファットツリー・トポロジーに基づくものであって、複数のリーフスイッチ311〜312と、複数のスパインスイッチまたはルートスイッチS1 331〜S4 334とを含み得る。加えて、ネットワークファブリック300は、スイッチ321〜324などの1つ以上の中間スイッチを含み得る。
【0051】
図3にも示されるように、ノード301はポートH1およびH2を含み得る。ノード302はポートH3およびH4を含み得る。ノード303はポートH5およびH6を含み得る。また、ノード304はポートH7およびH8を含み得る。加えて、ルートスイッチS1 331はスイッチポート1、2を有し得る。ルートスイッチS2 332はスイッチポート3、4を有し得る。ルートスイッチS3 333はスイッチポート5、6を有し得る。ルートスイッチS4 334はスイッチポート7、8を有し得る。
【0052】
さらに、mFtreeアルゴリズムなどのマルチホーム型ルーティングは、ノード上の各々のポートへの経路が排他的となるように、各々のマルチホーム型ノード301〜304をルーティングすることができる。すなわち、mFtreeアルゴリズムは、独立した経路を介してマルチホーム型ノード上の各ポートに到達可能となるように保証する。加えて、mFtreeアルゴリズムはネットワーク性能を改善させることができる。
【0053】
さらに、単一のマルチホーム型エンドノードの場合、mFtreeアルゴリズムは、同じエンドノードに属するいずれのポート対に至る経路によっても単一のリンクが共有されないように保証することができる。また、ネットワークファブリック300において同じ宛先ノード上に異なるソースポートから異なるポートに至るコンカレントなトラフィックがある場合、mFtreeアルゴリズムは、代替的な経路が存在する場合に、コンカレントなトラフィックが如何なる中間リンクも共有しないことを保証することができる。
【0054】
このように、mFtreeアルゴリズムを用いると、ファブリック300におけるスパインスイッチS1 331などの単一デバイスが故障しても、ノード301の切断が引き起こされる可能性はない。なぜなら、異なるポートへの経路が単一のスパインスイッチS1 331においては収束しないからである。
【0055】
加えて、mFtreeアルゴリズムは、別個の独立したエンティティと同じノード上の各々のポートを処理する。これにより、mFtreeアルゴリズムは、ポートベースではなくノードベースでルーティングすることができ、mFtreeアルゴリズムは、異なるエンドノードが有し得るさまざまな特徴をアドレス指定することができる。
【0056】
図4は、本発明の実施形態に従った、ネットワーク環境においてマルチホーム型ルーティングをサポートするための例示的なフローチャートを示す。
図4に示されるように、ステップ401において、システムは、ネットワークファブリックにおいてリーフスイッチ上のスイッチポートに関連付けられたエンドノードを提供することができる。この場合、エンドノードは複数のポートに関連付けられている。次いで、ステップ402において、システムは、エンドノード上の各々の上記ポートのためにルーティングを実行することができる。さらに、ステップ403において、システムは、エンドノード上の複数のポートが相互に独立した経路を取ることを保証することができる。
【0057】
図5は、本発明の実施形態が実現され得るコンピュータシステムのブロック図を示す。コンピュータシステム500は、情報を通信するためのバスまたは他の通信メカニズムと、バスと結合されて情報を処理するためのハードウェアプロセッサとを含む。ハードウェアプロセッサは、たとえば、汎用のマイクロプロセッサであってもよい。
【0058】
コンピュータシステム500はまた、プロセッサによって実行されるべき命令および情報を格納するための、バスに結合されたランダムアクセスメモリ(RAM:random access memory)または他の動的記憶装置などのメインメモリを含む。メインメモリはまた、プロセッサによって実行される命令の実行中に一時変数または他の中間情報を格納するために用いられてもよい。このような命令がプロセッサにアクセス可能な非一時的な記憶媒体に格納されると、コンピュータシステム500が、命令で指定された動作を実行するようにカスタマイズされた専用マシンとなる。
【0059】
コンピュータシステム500はさらに、プロセッサのために静的情報および命令を格納するための、バスに結合された読取専用メモリ(ROM:read only memory)または他の静的記憶装置を含む。情報および命令を格納するための、バスに結合された磁気ディスクまたは光ディスクなどの記憶装置が提供される。
【0060】
コンピュータシステム500は、情報をコンピュータユーザに対して表示するための、陰極線管(CRT:cathode ray tube)などのディスプレイを含み得るか、または、当該ディスプレイに対してバスを介して結合され得る。英数字および他のキーもしくはカーソル制御を含む入力装置は、プロセッサに対して情報およびコマンド選択を伝えるためにバスに結合される。
【0061】
コンピュータシステム500はこの明細書中に記載される技術を実現し得るが、この場合、コンピュータシステムと組み合わせることで、コンピュータシステム500を専用マシンにするかまたは専用マシンにするようプログラムする、カスタマイズされたハードワイヤード論理、1つ以上のASICもしくはFPGA、ファームウェアおよび/またはプログラム論理を用い得る。一実施形態に従うと、この明細書中に記載される技術は、プロセッサがメインメモリに含まれる1つ以上の命令の1つ以上のシーケンスを実行することに応じて、コンピュータシステム500によって実行される。このような命令は、記憶装置などの別の記憶媒体からメインメモリに読込まれてもよい。メインメモリに含まれる命令のシーケンスを実行することにより、この明細書中に記載されるプロセスステップをプロセッサに実行させる。代替的な実施形態においては、ハードワイヤード回路が、ソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて用いられてもよい。
【0062】
コンピュータシステム500はまた、バスに連結された通信インターフェイスを含む。通信インターフェイスは、統合サービスデジタル網(ISDN:integrated services digital network)カード、ケーブルモデム、衛星モデム、または対応するタイプの電話線にデータ通信接続するためのモデムであってもよい。別の例として、通信インターフェイスは、互換性のあるローカルエリアネットワーク(LAN:local area network)にデータ通信接続するためのLANカードであってもよい。ワイヤレスリンクが実現されてもよい。このような如何なる実現例においても、通信インターフェイスは、さまざまなタイプの情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送受信する。
【0063】
図5に示されるように、記憶装置は、ネットワークファブリックにおいてリーフスイッチ上のスイッチポートにエンドノードを関連付けるように構成され得るサブネットマネージャを含んでもよい。この場合、エンドノードは、複数のポートに関連付けられている。サブネットマネージャはさらに、エンドノード上の各々の上記ポートのためにルーティングを実行し、エンドノード上の複数のポートが相互に独立した経路を取ることを保証するように構成され得る。
【0064】
いくつかの実施形態においては、サブネットマネージャはさらに、エンドノード上の複数のポートにおける或るポートに関連付けられた経路上の各々のスイッチにマーク付けし、エンドノード上の複数のポートにおける別のポートに関連付けられた別の経路が、マーク付けされたスイッチを用いることを防止するように構成されてもよい。
【0065】
いくつかの実施形態においては、サブネットマネージャはさらに、冗長なスイッチがない場合に、エンドノード上の複数のポートにおける別のポートに関連付けられた別の経路が、1つ以上のマーク付けされたスイッチを用いることを可能にし、平行なリンクが1つ以上のマーク付けされたスイッチ上に存在する場合に、同じエンドノード上の異なる目標ポートのために独立したリンクを選択するように構成されてもよい。
【0066】
いくつかの実施形態においては、サブネットマネージャはさらに、エンドノード上の複数のポートのルーティングを完了した後、各々のマーク付けされたスイッチのマーク付けを解除するように構成されてもよい。
【0067】
いくつかの実施形態においては、サブネットマネージャはさらに、エンドノード上の複数のポートのルーティングを完了した後、エンドノードをルーティングされたエンドノードとしてマーク付けするように構成されてもよい。
【0068】
いくつかの実施形態においては、サブネットマネージャはさらに、エンドノードが別のリーフスイッチに遭遇したときに、エンドノードが再びルーティングされることを防止するように構成されてもよい。
【0069】
図6は、本発明の実施形態を実現するためのシステム600のブロック図を示す。システム600のブロックは、本発明の原理を実行するために、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアとの組み合わせによって実現されてもよい。上述のとおり本発明の原理を実現するために、
図6において記載されたブロックが組み合わされ得るかまたはサブブロックに分解され得ることが当業者によって理解される。したがって、この明細書中における説明は、この明細書中に記載される機能ブロックの実現可能な任意の組み合わせまたは分解またはさらなる定義をサポートし得る。
【0070】
図6に示されるように、システム600は、ネットワークファブリックにおいてリーフスイッチ上のスイッチポートに関連付けられたエンドノードを提供するように構成された提供ユニット601を含み得る。エンドノードは、複数のポートに関連付けられている。システム600はさらに、エンドノード上の各々の上記ポートのためにルーティングを実行するように構成された実行ユニット602を含み得る。さらに、システム600は、エンドノード上の複数のポートが相互に独立した経路を取ることを保証するように構成された保証ユニット603をさらに含み得る。
【0071】
図6には示されないが、いくつかの実施形態においては、システム600はさらに、ネットワークファブリックをファットツリー・トポロジーに基づいたものにすることを可能にするように構成された第1の可能ユニットを含み得る。
【0072】
いくつかの実施形態においては、システム600はさらに、エンドノードが、複数のポートを介してファットツリー・トポロジーの2つ以上の部分に接続されるマルチホーム型ノードとなることを可能にするように構成された第2の可能ユニットを含み得る。
【0073】
いくつかの実施形態においては、システム600はさらに、エンドノード上の複数のポートにおける或るポートに関連付けられた経路上の各々のスイッチにマーク付けするように構成された第1のマーク付けユニットと、エンドノード上の複数のポートにおける別のポートに関連付けられた別の経路が当該マーク付けされたスイッチを用いることを防止するように構成された第1の防止ユニットとを含み得る。
【0074】
いくつかの実施形態においては、システム600はさらに、冗長なスイッチがない場合に、エンドノード上の複数のポートにおける別のポートに関連付けられた別の経路が1つ以上のマーク付けされたスイッチを用いることを可能にするように構成された第3の可能ユニットと、平行なリンクが1つ以上のマーク付けされたスイッチ上に存在する場合に、同じエンドノード上の異なる目標ポートのために独立したリンクを選択するように構成された選択ユニットとを含み得る。
【0075】
いくつかの実施形態においては、システム600はさらに、エンドノード上の複数のポートのルーティングを完了した後、各々のマーク付けされたスイッチのマーク付けを解除するように構成されたマーク付け解除ユニットを含み得る。
【0076】
いくつかの実施形態においては、システム600はさらに、エンドノードからの相互に独立した各々の経路を異なるスパインスイッチに関連付けるように構成された関連付けユニットを含み得る。
【0077】
いくつかの実施形態においては、システム600はさらに、エンドノード上の複数のポートのルーティングを完了した後、エンドノードをルーティングされたエンドノードとしてマーク付けするように構成された第2のマーク付けユニットを含み得る。
【0078】
いくつかの実施形態においては、システム600はさらに、エンドノードが別のリーフスイッチに遭遇したときに、エンドノードが再びルーティングされることを防止するように構成された第2の防止ユニットを含み得る。
【0079】
いくつかの実施形態においては、システム600はさらに、ルーティングアルゴリズムがエンドノードをパラメータとして採用することを可能にするように構成された第4の可能ユニットを含み得る。
【0080】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段は、ネットワークファブリックにおいてリーフスイッチ上のスイッチポートに関連付けられたエンドノードを提供することを含む。エンドノードは複数のポートに関連付けられている。当該手段はさらに、エンドノード上の各々の上記ポートのためにルーティングを実行することと、エンドノード上の複数のポートが上記ルーティングのために相互に独立した経路を取ることを保証することとを含む。
【0081】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段においては、ネットワークファブリックはファットツリー・トポロジーに基づいている。
【0082】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段においては、エンドノードは、複数のポートを介してファットツリー・トポロジーの2つ以上の部分に接続されたマルチホーム型ノードである。
【0083】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、エンドノード上の複数のポートにおける或るポートに関連付けられた経路上の各々のスイッチにマーク付けすることと、エンドノード上の複数のポートにおける別のポートに関連付けられた別の経路が、マーク付けされたスイッチを用いることを防止することとを含む。
【0084】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、冗長なスイッチがない場合に、エンドノード上の複数のポートにおける別のポートに関連付けられた別の経路が、1つ以上のマーク付けされたスイッチを用いることを可能にすることと、平行なリンクが1つ以上のマーク付けされたスイッチ上に存在する場合に、同じエンドノード上の異なる目標ポートのために独立したリンクを選択することとを含む。
【0085】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、エンドノード上の複数のポートのルーティングを完了した後に各々のマーク付けされたスイッチのマーク付けを解除することをさらに含む。
【0086】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、エンドノードからの相互に独立した経路を異なるスパインスイッチに関連付けることを含む。
【0087】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、エンドノード上の複数のポートのルーティングを完了した後、エンドノードをルーティングされたエンドノードとしてマーク付けすることを含む。
【0088】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、エンドノードが別のリーフスイッチに遭遇した場合に、エンドノードが再びルーティングされることを防止することを含む。
【0089】
ネットワーク環境においてマルチホーム型ルーティングをサポートするための手段はさらに、エンドノードをパラメータとして採用するルーティングアルゴリズムを用いることを含む。
【0090】
本発明は、本開示の教示に従いプログラムされた、1つ以上のプロセッサ、メモリ、および/またはコンピュータ読取可能な記録媒体を含む、従来の汎用もしくは専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを1つ以上用いて、適宜実装し得る。適切なソフトウェアコーディングは、熟練したプログラマが本開示の教示に基づいて容易に準備できるものである。これはソフトウェア技術における当業者には明らかであろう。
【0091】
実施形態によっては、本発明は、本発明のプロセスのうちいずれかを実行するためにコンピュータをプログラムするのに使用できる命令が格納された記録媒体または(1つまたは複数の)コンピュータ読取可能な媒体であるコンピュータプログラムプロダクトを含む。この記録媒体の例は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD−ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/またはデータを格納するのに適した任意の種類の媒体もしくはデバイスを含み得るものの、これらに限定されない。
【0092】
本発明のこれまでの記載は例示および説明を目的として提供されている。すべてを網羅するまたは本発明を開示された形態そのものに限定することは意図されていない。当業者には数多くの変更および変形が明らかであろう。実施の形態は、本発明の原理およびその実際の応用を最もうまく説明することによって他の当業者がさまざまな実施の形態および意図している特定の用途に適したさまざまな変形を理解できるようにするために、選択され説明されている。