説明

任意のトポロジーの直接ネットワークにおけるデッドロック防止

本発明の態様は、コンピュータシステム100において、デッドロックを回避しながらパケットをルーティングすることに関する。システム内のスイッチ110と関連付けられた一意の識別子I(X)に従ってターン規則が設定される。可能なターンにおけるスイッチの数値が比較され、ターンが許容可能であるか否かが判断される。規則はシステム内の全てのノード102に適用される。仮想チャネル204を用いる場合には、規則に違反することができる。ここで、単調増加する仮想チャネル番号又は単調減少する仮想チャネル番号を用いる場合には、違反は許容可能である。代替的に、ターン規則の違反は、これらの違反によって、パケットが仮想チャネルの或る固定の順序で後の仮想チャネルに変わることになる場合には、許可することができる。このようにして、メッシュ構成とトーラス構成とバタフライ構成と平坦化したバタフライ構成とを含む多くの異なるタイプのアーキテクチャにおいてデッドロックを回避することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の態様は、包括的には、コンピュータネットワークにおいてデータをルーティングすることに関する。より詳細には、態様は、コンピュータネットワークにおいてシステム構成にかかわらずデッドロックを防止することを対象とする。
【0002】
[関連出願の相互参照]
本出願は、2009年12月21日に出願された、「Deadlock Prevention In Direct Networks Of Arbitrary Topology」と題する米国特許出願第12/643,280号、代理人整理番号GOOGLE3.0−056の利益を主張する。該特許出願の開示内容の全体を引用することにより、本明細書の一部をなすものとする。
【背景技術】
【0003】
多くの通信ネットワークにおいて、多くの場合に複数のプロセッサが用いられる。プロセッサは、様々な構成で配置することができる。例えば、プロセッサのアレイはメッシュアーキテクチャ又はトーラスアーキテクチャで構成することができる。アレイは、異なるネットワーク内の他のアレイに相互接続することもできる。
【0004】
そのような通信ネットワーク内の構成要素間でデータを渡すために、フロー制御を含む様々なルーティング方式が用いられてきた。一方、幾つかの通信ネットワークは、バッファ空間又は他のリソースが利用可能となるまでノードのスイッチへのリンク上のトラフィックを機能停止(ストール(stall))する可能性があるフロー制御メカニズムを用いる。ネットワークノードの出力リンク上の遮断は、スイッチを越えて後方へと伝播し、ストールされた出力をルーティングしようとしている該ネットワークノードの入力リンクをストールする場合がある。
【0005】
「デッドロック」として知られる状態が生じる可能性がある。デッドロックでは、ストールされたリンクが間接的に該リンク自体に依存している。デッドロックは、データ損失エラーを引き起こし、修復するにはネットワークリスタートを必要とする場合がある深刻な状態である。これまで、デッドロックに対処するために様々な技法が用いられてきた。残念なことに、このような技法は様々な状況において失敗する場合がある。
【0006】
例えば、「ターンモデル(turn model)」は、ネットワークトポロジーのタイプごとに特定の制約を要求する場合がある。ネットワークにリンク又はスイッチが欠けており、もはや完全なトポロジーを提供しないとき、ターンモデルは機能しなくなる場合がある。「up*/down*」ルーティングでは、全域木(spanning tree)によって任意のネットワークがカバーされる。経路は或る方向に流れることを強いられるが、これは全域木のルート付近のリンク負荷不平衡につながる場合があり、リンク又はスイッチが故障したとき、ネットワークリスタートを必要とする場合もある。「折返しクロス(folded Clos)」又は「ファットツリー」型のネットワークでは、デッドロックは経路制約を課すことによって対処されるが、これらの経路制約は過度に制限的である場合がある。
【発明の概要】
【0007】
デッドロックを防止するためにブロッキングフロー制御を組み込んだシステム及び方法が提供される。そのようなシステム及び方法は、ネットワーク又は該ネットワーク内の経路が変更された場合であっても機能するように設計される。
【0008】
1つの実施の形態では、コンピュータネットワークにおいてデッドロックを回避するようにパケットをルーティングする方法が提供される。本方法は、コンピュータネットワーク内の各スイッチに別個の(distinct)識別子を割り当てることを含む。該別個の識別子は、各それぞれのスイッチに一意である。本方法は、デッドロックが回避されるように、コンピュータネットワークにわたってパケットをルーティングするためのターン規則を設定することも含む。該ターン規則は、選択された条件が与えられて、第1のスイッチ(A)から中間スイッチ(B)を介して第2のスイッチ(C)にパケットを送信することを禁止する。条件は、中間スイッチBの別個の識別子が、第1のスイッチA及び第2のスイッチCの双方の別個の識別子の値よりも大きな値を有することと、中間スイッチBの別個の識別子が、第1のスイッチA及び第2のスイッチCの双方の別個の識別子の値よりも小さな値を有することと、からなる群から選択される。本方法は、コンピュータネットワーク内の各スイッチにターン規則を提供することと、該ターン規則に従ってコンピュータネットワークにわたってパケットをルーティングすることとを更に含む。選択された条件は、後続のパケットルーティングについて維持される。
【0009】
1つの例では、本方法は、第1のスイッチA、第2のスイッチC、及び中間スイッチBは適応的なルーティングのために構成される。別の例では、第1のスイッチA、第2のスイッチC、及び中間スイッチBはそれぞれ複数のルーティングテーブルを保持する。更なる例では、各スイッチの別個の識別子はハードウェア識別子のハッシュである。
【0010】
1つの代替形態では、本方法は、各スイッチにおいて複数の仮想チャネルをサポートすることと、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、複数の仮想チャネルの一意の順序を選択することによって、ターン規則の違反を許可する仮想チャネル規則を設定することと、該仮想チャネル規則に従ってコンピュータネットワークにわたってパケットをルーティングすることであって、仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることと、を更に含む。
【0011】
別の代替形態例では、本方法は、各スイッチにおいて複数の仮想チャネルをサポートすることと、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、以下の条件、すなわち、仮想チャネル番号を、第1のチャネル番号からより大きいチャネル番号へ単調増加させること、又は仮想チャネル番号を、第1のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合にターン規則の違反を許可する仮想チャネル規則を設定することと、を更に含む。この代替形態において、本方法は、仮想チャネル規則に従ってコンピュータネットワークにわたって前記パケットをルーティングすることも含む。仮想チャネル規則は後続のパケットルーティングについて維持される。
【0012】
別の例では、コンピュータネットワークはバタフライネットワークアーキテクチャである。更なる例では、コンピュータネットワークはチップマルチプロセッサアーキテクチャを備え、各スイッチは関連するプロセッサに結合される。
【0013】
別の実施の形態よれば、コンピュータ可読記録媒体が提供される。この記録媒体は、コンピュータ可読記録媒体上に格納された命令を有する。該命令は、プロセッサによって実行されると、該プロセッサに対し、コンピュータネットワーク内の各スイッチに別個の識別子を割り当てる手順であって、該別個の識別子は各それぞれのスイッチに一意である、割り当てる手順と、デッドロックが回避されるように、コンピュータネットワークにわたってパケットをルーティングするためのターン規則を設定する手順であって、該ターン規則は、選択された条件が与えられて、第1のスイッチ(A)から中間スイッチ(B)を介して第2のスイッチ(C)にパケットを送信することを禁止するものであり、条件は、中間スイッチBの別個の識別子が、第1のスイッチA及び第2のスイッチCの双方の別個の識別子の値よりも大きな値を有することと、中間スイッチBの別個の識別子が、第1のスイッチA及び第2のスイッチCの双方の別個の識別子の値よりも小さな値を有することと、からなる群から選択される、設定する手順と、コンピュータネットワーク内の各スイッチにターン規則を提供する手順と、該ターン規則に従ってコンピュータネットワークにわたってパケットをルーティングする手順であって、選択された条件は後続のパケットルーティングについて維持されるものである、ルーティングする手順とを実行させる。
【0014】
1つの例では、手順は、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、複数の仮想チャネルの一意の順序を選択することによって、ターン規則の違反を許可する仮想チャネル規則を設定することと、該仮想チャネル規則に従ってコンピュータネットワークにわたってパケットをルーティングすることであって、仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることとを更に含む。
【0015】
別の例では、手順は、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、以下の条件、すなわち、仮想チャネル番号を、第1のチャネル番号からより大きいチャネル番号へ単調増加させること、又は仮想チャネル番号を、第1のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、ターン規則の違反を許可する仮想チャネル規則を設定することと、該仮想チャネル規則に従ってコンピュータネットワークにわたってパケットをルーティングすることであって、仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることとを更に含む。
【0016】
更なる実施の形態では、コンピュータシステムは、該コンピュータシステム内のそれぞれのノードに配置された複数のスイッチング素子を備える。各スイッチング素子は別個の識別子によって識別される。隣接するスイッチング素子は互いに直接接続される。各スイッチング素子は、コンピュータシステムにおいてデッドロックが回避されるように、パケットをルーティングするためのターン規則を実行する。該ターン規則は、選択された条件が与えられて、パケットを第1のスイッチング素子(A)から中間スイッチング素子(B)を介して第2のスイッチング素子(C)に送信することを禁止する。条件は、中間スイッチング素子Bの別個の識別子が、第1のスイッチング素子A及び第2のスイッチング素子Cの双方の別個の識別子の値よりも大きな値を有することと、中間スイッチング素子Bの前記別個の識別子が、第1のスイッチング素子A及び第2のスイッチング素子Cの双方の別個の識別子の値よりも小さな値を有することと、からなる群から選択される。
【0017】
1つの例では、第1のスイッチング素子A、第2のスイッチング素子C、及び中間スイッチング素子Bは、適応的なルーティングのために構成される。別の例では、第1のスイッチング素子A、第2のスイッチング素子C、及び中間スイッチング素子Bは、それぞれ複数のルーティングテーブルを格納する。更なる例では、各スイッチング素子の別個の識別子は、該それぞれのスイッチング素子のハードウェア識別子のハッシュである。
【0018】
1つの代替形態では、スイッチング素子A、B、及びCは、それぞれ複数の仮想チャネルをサポートし、複数の仮想チャネルのあらかじめ選択された一意の順序に従ってターン規則の違反を許可する仮想チャネル規則を用いる。
【0019】
別の代替形態では、スイッチング素子A、B、及びCは、それぞれ複数の仮想チャネルをサポートし、以下の条件、すなわち、仮想チャネル番号を、第1のチャネル番号からより大きなチャネル番号へ単調増加させること、又は仮想チャネル番号を、第1のチャネル番号からより小さなチャネル番号へ単調減少させること、のうちの一方のみが生じる場合にターン規則の違反を許可する仮想チャネル規則を用いる。
【0020】
更に別の例では、コンピュータシステムはバタフライネットワークアーキテクチャを有する。更なる例では、コンピュータシステムはメッシュネットワークアーキテクチャを有する。
【0021】
一代替形態では、コンピュータシステムはチップマルチプロセッサアーキテクチャを備え、各スイッチング素子は関連するプロセッサに結合される。また、更に別の代替形態では、複数のスイッチング素子は、コンピュータネットワークのノードにおいてルータを備える。該ルータのうちの少なくとも幾つかは、ネットワークにわたってデータパケットを送信するためのホストに接続する。
【図面の簡単な説明】
【0022】
【図1】本発明の態様による使用のためのマルチプロセッサアーキテクチャを示す図である。
【図2A】本発明の態様によるルータスイッチを示す図である。
【図2B】本発明の態様によるルータスイッチを示す図である。
【図3】本発明の態様によるルーティングシナリオを示す図である。
【図4】本発明の態様による使用のための仮想チャネルを示す図である。
【図5】本発明の態様による多次元スイッチを示す図である。
【図6】本発明の態様とともに用いるためのチップマルチプロセッサを示す図である。
【発明を実施するための形態】
【0023】
本発明の態様、特徴、及び利点は、好ましい実施形態の以下の説明と、添付の図面とを参照して検討したときに理解されるであろう。異なる図面内の同じ参照符号は、同じ要素又は類似の要素を特定することができる。さらに、以下の説明は限定的ではなく、本発明の範囲は添付の特許請求の範囲及び均等物によって規定される。
【0024】
図1は、本発明の態様とともに用いるための一例示のコンピュータネットワークアーキテクチャ100を示している。示すように、アーキテクチャは、メッシュ型構成に配列されたノード102において複数のスイッチ(S0...S63)を含む。メッシュのX方向及びY方向の隣接ノード102におけるスイッチSは、接続/リンク104を介して互いに接続されている。例えば、スイッチS9はスイッチS1、S8、S10、及びS17に接続されている。メッシュ構成が示されているが、トーラス、バタフライ、平坦化したバタフライ等を含む任意の他のアークテキチャを用いることができる。
【0025】
図1の例では、メッシュの上部ノード(S0...S7)及び下部ノード(S56...S63)又は側部ノードに沿ったスイッチをそれぞれのホスト106と接続することができる。ホストは、例えば、ネットワークインターフェースカードを介してネットワークに接続された処理デバイス又はコンピュータシステムとすることができる。各ホスト106は、トラフィックを発信することができ、及び/又は、ネットワーク内のノードからトラフィックを受信することができる。この例に示すように、1つのスイッチS(例えばS0、S4、S61)が各ホストに接続するが、複数のホストが単一のスイッチSに接続することもできる。他の構成は、単一のホストに接続する複数のスイッチSを有することもできる。加えて、或るホスト106は別のネットワーク108に結合することもできる。全てのそのような構成は、本明細書において説明されるように本発明に従って用いることができる。
【0026】
図2Aは、所与のノード102がマルチポートルータスイッチ110を備える例を示している。示す構成では、マルチポートルータスイッチ110は、5ポートルータスイッチSである。4つのポートがメッシュの+X方向、−X方向、+Y方向、及び−Y方向において隣接ノードに接続する。第5のポートは、望ましくは、スイッチのそれぞれのノードにおいて同一ロケーションに位置するプロセッサ112(例えばホスト)に接続する。この例では、スイッチ110は図1のスイッチS4である。このため、−X方向のポートはスイッチS3に接続し、+X方向のポートはスイッチS5に接続し、−Y方向のポートはスイッチS12に接続する。スイッチS4はメッシュの上部エッジに沿って位置するので、+Y方向におけるスイッチS4のポートはホスト106に接続する。5ポートルータスイッチが示されているが、任意の数のポートを使用した他のタイプのマルチポートスイッチを用いることもできる。例として、Mellanox社のInfiniScale(商標)IV36ポートスイッチデバイスを用いることができる。このスイッチデバイスは、多次元6値6フラットネットワークトポロジーにおいて用いることができる。使用されるスイッチは異なるタイプ又は構成とすることができる。
【0027】
図2Bを見ると、この図は、マルチポートルータスイッチ110が、バッファリング114と、データパケットをネットワーク内の他のノードにルーティングするためのルーティングメカニズム116とを備えうることを示している。ルータスイッチ110は、いずれの次のスイッチにパケットをルーティングするかを決定するための処理ロジック又はファームウェア(「ロジック」)118も含みうる。
【0028】
本発明の1つの態様によれば、各スイッチSは、好ましくは以下の特徴を含む。まず、スイッチSはネットワーク内のルーティングを適切に可能にするために、大きなポート数を有するべきである。例えば、平坦化したバタフライネットワークにおいて、スイッチSあたり少なくとも28個のポートが存在するべきである。他のタイプのネットワークは、スイッチあたり、又は寸法あたり、より少ないか又はより多くのポートを用いることができる。別の特徴は、スイッチSが適応ルーティング機能を有するべきであるということである。好ましくは、スイッチSはスイッチ内に複数のルーティングテーブルを有することが可能であるべきである。この状況において、全てのポートが単一のルーティングテーブルによってルーティングされるわけではなく、スイッチがポート固有のルーティングを用いることが可能になる。
【0029】
図3は、本発明の態様によるルーティング例を示している。4つのルータスイッチA、B、C、及びDが提供される。スイッチBを通じた1つの「ターン」(A,B,C)は、ホップ対(A,B)及び(B,C)を含み、データのパケットをAからBを介してCへ移動する。
【0030】
各スイッチ「X」は、永続的で別個の識別子「I(X)」を割り当てられることが好ましい。スイッチA、B、C、及びDの識別子は、それぞれ、I(A)、I(B)、I(C)、及びI(D)である。識別子は、ネットワークによって、例えばランダムに、又は永続的なハードウェア識別情報を用いて割り当てることができる。このため、スイッチがInfiniBandのグローバル一意識別子(「GUID」)又は他の一意の識別子を有する場合、その識別子又は該識別子のハッシュは、別個の識別子としての役割を果たすことができる。
【0031】
現実世界の例では、全てのスイッチS又はリンク104が常に「アップ」又はアクティブであるわけではない。一般的に言えば、通常、少なくとも1つの修復中の障害が存在する。そして、新たなスイッチがアドホックベースでネットワークに追加される場合がある。このため、一貫性を確保するために、各スイッチSの別個の識別子は経時的に変更しないことが好ましい。
【0032】
図3の例について、別個の識別子に関して4つの可能な選択肢、すなわち、
I(A)<I(B)<I(C)
I(A)<I(B)>I(C)
I(A)>I(B)<I(C)
I(A)>I(B)>I(C)
が存在する。特定の(仮想)チャネル上のパケットフローが、パケットが別のチャネル上を流れる能力に依存するとき、「フロー依存」が存在する。スイッチに入るチャネル上のフローは、そのスイッチが、入力チャネルから出力へトラフィックをルーティングすることが可能である場合、スイッチを出るチャネル上のフローに依存する。仮想チャネル間のこの依存関係は、任意のチャネルが、直接的に又は推移的に(transitively)該チャネル自体に依存する場合、デッドロックにつながる可能性がある。
【0033】
そのような問題を回避するために、1つの態様では、スイッチを通る経路は以下の規則に従って求められる。I(A)<I(B)かつI(C)<I(B)の場合でない限り、スイッチAからスイッチBを通ってスイッチCへの任意のターン「A〜B〜C」を経路において用いることができる。識別子I(X)の永続性によって、スイッチ及びリンクがネットワークを出入りし、新たな経路が計算されるにもかかわらず、デッドロックからの安全性が保証される。このシナリオにおいて、全ての経路におけるターンの包括的集合が、決してターンI(A)<I(B)>I(C)を含まないので、再ルーティングイベント後の古いトラフィックと新しいトラフィックとの間であってもデッドロックが発生する可能性はない。
【0034】
A=4、B=5、C=2、及びD=3である例を検討する。本実施形態において、パケットはAからCにルーティングされる。上記の規則を用いると、4(A)<5(B)>2(C)であるので、パケットはスイッチBを通してルーティングすることができない。一方、4(A)>3(D)>2(C)であるので、パケットはスイッチDを通してルーティングすることができる。このため、ターン(A,D,C)が選択される。
【0035】
代替的に、別の実施形態において、ターンの全ての組合せI(A)>I(B)<I(C)を禁止することができ、これは上記と同じ効果を伴い、特に、デッドロックからの安全性が保証される。この場合、ターン(A,B,C)は、(A,D,C)と異なり、禁止された関係に抵触しないので選択される。シナリオにおいて、隣接するスイッチ(例えばA及びB、B及びC、A及びD、又はC及びD)は、スイッチが一切介在することなく互いに直接接続される。
【0036】
適応的なルーティングを実行するためのロジックは、図2Bの処理ロジック又はファームウェア118等の、各それぞれのノードにおけるスイッチS内に存在することができる。ルーティングロジックは、ネットワーク内の全てのスイッチSに内蔵されることが望ましい。各スイッチは、ルーティングテーブル又は等価なロジックを用いて、いずれの出力ポートを用いるかを決定することができる。ルーティングテーブルは柔軟性を提供し、パケットを容易に再ルーティングすることによって、滞りなく障害に対処する。ルーティングテーブルの一括した集合をプログラムすることによって「ルーティングアルゴリズム」を実行することが望ましい。好ましくは、各スイッチSは複数のルーティングテーブルを用いてポート固有のルーティングを可能にするように構成される。ネットワークに対する変更が生じると、スイッチは、該ネットワークを通じた幾つかの経路又は全ての経路を再計算することができる。
【0037】
本発明の一態様による適応的なルーティングは、ポートの集合に、ローカルの宛先をマッピングする。データパケットを管理するスイッチは、いずれのスイッチにパケットを送信するかを選択することができる。選択されたホストから送信された、あらかじめ設定されたパケットを用いて、ネットワークトポロジーを明らかにすることができる。望ましくは、各スイッチSは、ネットワーク内の全てのホストのエントリと、各ホストへの距離とを有するテーブルを保持する。距離は、スイッチから、介在するノードを介してホストまでのホップ(例えば介在するスイッチ/ノード)数によって決まる。所与のスイッチは、距離に関して、該スイッチ自身からXホップ離れたホストを反復して計算することができる。これは近傍のスイッチを評価することによって行うことができる。1つの態様において、この距離決定は、上記で説明した規則を順守しながら行われ、すなわち、I(A)<I(B)>I(C)であるか、又はI(A)>I(B)<I(C)であるターンを回避する。
【0038】
本発明の態様によれば、ネットワークにおいてノード間に代替経路を設けることによって、仮想チャネルを使用してデッドロックを解除することができる。仮想チャネルは、様々なネットワークにおいて、ネットワーク内のノード間でデータパケットをルーティングするのに用いることができる。図4は、図2A及び図2Bのルータスイッチ110のルーティングメカニズム116のための一例示の仮想チャネル構成200を示している。図4に示すように、スイッチを出入りする少なくとも1対の共有物理チャネル202が存在する。共有物理チャネル202とクロスバーアーキテクチャ206との間で、1組の独立した要求仮想チャネル及び応答仮想チャネル204を多重化することができる。
【0039】
1つの態様によれば、上述したターン規則は、仮想チャネルを用いて違反することができる。具体的には、I(A)<I(B)>I(C)(又はI(A)>I(B)<I(C))のターンの組合せは、該ターンには、上位の(又は下位の)仮想ネットワークへの永続的な移行が伴うことができる場合にのみ許可される。換言すれば、複数の仮想チャネルを有するネットワークは、そうでない場合に許容できないターンを用いて、移行点(point of transition)をより大きな番号の(又はより小さな番号の)仮想チャネルにシグナリングすることができる。これは、移行を仮想チャネルのあらかじめ選択された順序に制限することによって達成することができる。
【0040】
各スイッチはN個の仮想チャネルを備えることができる。例えば、N=4のとき、物理リンクあたり4つの仮想チャネルが存在する。換言すれば、データパケットを格納することができる、物理リンクの4つのバッファが存在する。本例では、各仮想チャネルは独自の別個のランク(例えば0、1、2、又は3)を有する。平坦化したバタフライの場合、少なくとも2つの仮想チャネルを用いるべきである。仮想チャネルに対し、N!(Nの階乗)個の異なる(一意の)順序が存在する。それらの順序のうちの任意のものを選択することができる。しかしながら、いったん1つの特定の順序が選択されると、デッドロックを回避するためにこれに従って進むべきである。
【0041】
1つの例では、ターン規則は、パケットが単調増加する仮想チャネル番号にのみルーティングされている限り、違反することができる。例として、現在の仮想チャネル=1を仮定する。ここで、ターン規則の結果、仮想チャネル1に沿った有効なパスがない場合、仮想チャネル2を用いて、ターン規則に違反した経路を選択することができる。その後のターンは、ターン規則に違反しない限り仮想チャネル2を使用する。その後、仮想チャネル2を使用して利用可能な有効なパスがない場合、仮想チャネル3を用いて、ターン規則に違反するパスを選択することができる。
【0042】
代替的な例において、ターン規則は、パケットが単調増加する仮想チャネル番号のみにルーティングされている限り違反することができる。例として、現在の仮想チャネル=1を仮定する。ここで、ターン規則の結果、仮想チャネル1に沿った有効なパスがない場合、仮想チャネル0を用いて、ターン規則に違反した経路を選択することができる。その後のターンは仮想チャネル0を使用する。このように、ターン規則は、単調増加する仮想チャネル番号又は単調減少する仮想チャネル番号を用いて違反することができる。この状況において、これらの2つの選択肢のうちの一方のみを用いることができる。ネットワークは、潜在的に結果としてデッドロック状況を生じることなく2つの選択肢間で変化することができない。
【0043】
上記で示したように、本発明の態様は様々なネットワーク構成に組み込むことができる。実際に、本発明の態様を組み込むと、デッドロックは、各スイッチが別個の識別子を有する任意のネットワークトポロジーにおいて防止することができる。例として、図1等の2次元メッシュアーキテクチャ又はトーラス等の他の2次元アークテキチャを使用することができる。バタフライネットワーク及び平坦化したバタフライネットワーク等の他の多次元アーキテクチャも用いることができる。
【0044】
1つの例において、ネットワーク内の全てのノードがN次元座標を割り当てられる。ネットワーク内にN個の軸が存在する。ここで、メッシュ型の例において、座標は隣接座標において1だけ異なる。換言すれば、各スイッチは、単一の軸上で座標が異なる全ての他のスイッチに接続する。スイッチ間の各ホップは1つの座標を置き換える。
【0045】
図5は、5次元スイッチ300を示している。この例では、スイッチ300は、ホスト用の6個のポートを含む36個の双方向ポートを有する。示すように、近傍スイッチへの各リンクは単一の座標において異なる。
【0046】
スイッチ300は、動作中、接続されたホストのうちの任意のものから、又は残りのポートにおいて接続された他のスイッチのうちの任意のものから入力パケットを受信することができる。ほとんどの場合、j個のディジットが異なる2つのスイッチ間の物理的最小経路数はj!(jの階乗)個である。上述したターン規則に従う許容可能な経路数はより少なく、下限が(j/2)!個である。
【0047】
例えば、アドレス(1,2,3,4)及び(4,3,2,1)を有するスイッチ間の、4次元の平坦化したバタフライにおけるターンモデルの下での最小経路を検討する。以下の経路が正当なものである。
(1,2,3,4)−>(1,2,2,4)−>(1,2,2,1)−>(4,2,2,1)−>(4,3,2,1)
(1,2,3,4)−>(1,2,2,4)−>(1,2,2,1)−>(1,3,2,1)−>(4,3,2,1)
(1,2,3,4)−>(1,2,3,1)−>(1,2,2,1)−>(4,2,2,1)−>(4,3,2,1)
(1,2,3,4)−>(1,2,3,1)−>(1,2,2,1)−>(1,3,2,1)−>(4,3,2,1)
【0048】
一方、その他の20個の最小長さの可能なパスは、
(1,2,3,4)−>(4,2,3,4)−>(4,3,3,4)−>(4,3,2,4)−>(4,3,2,1)
等の許容できないターンを含む。
【0049】
この例において観察することができるように、スイッチの幾つかの対間の同じ仮想ネットワークにおける規則に適った最小経路の全てが、その座標がソースエンドポイントアドレス及び宛先エンドポイントアドレスの対応する座標の最小値であるスイッチを通らなくてはならない。これは上記の例では(1,2,2,1)である。
【0050】
本発明の態様を、様々なタイプのコンピュータネットワークとともに用いることができる。これらのネットワークは、多数の物理的ロケーションに位置することができるホスト及びノードを有する分散型システムを含む。例として、ネットワークは、互いに結合された1つ又は複数のデータセンターを含むことができ、ホストは或るデータセンター内又は別々のデータセンター間の様々なサーバーを含む。本発明は、チップマルチプロセッサ等のマルチプロセッサコンピュータシステムにおいて用いることもできる。
【0051】
図6は、本発明の態様とともに使用するための一例示のチップマルチプロセッサアーキテクチャ400を示している。示すように、アーキテクチャは、ノード402においてメッシュ型構成に配列された64個のプロセッサ(P0...P63)を含む。メッシュ内の隣接ノード402におけるプロセッサは、接続404を介して互いに直接リンクされる。例えば、プロセッサP9はプロセッサP1、P8、P10、及びP17に接続される。メッシュアーキテクチャが示されているが、本発明の態様に従って他のアーキテクチャを使用することもできる。
【0052】
メッシュの上部ノード(P0...P7)及び下部ノード(P56...P63)に沿ったプロセッサは、それぞれのメモリコントローラ406に直接リンクすることができる。この例に示すように、4つのプロセッサ402が各メモリコントローラ406に接続する。加えて、各メモリコントローラ406が物理メモリ408に結合する。残りのプロセッサは、1つ又は複数の介在するノード402を通じてメモリコントローラ406と通信することができる。
【0053】
パケットルーティングは、上述したのと同じ方式で、アーキテクチャ400において達成することができる。ターン規則に違反していない限り(すなわち、I(A)<I(B)>I(C)のとき、又はI(A)>I(B)<I(C)のとき、ターンはない)、デッドロックは回避される。複数の仮想チャネルを有するチップマルチプロセッサアーキテクチャは、そうでない場合に許容できないターンも使用して、移行点をより大きな番号の(又はより小さな番号の)仮想チャネルにシグナリングすることができる。ここで、ターン規則は、上記と同様に、単調増加する仮想チャネル番号又は単調減少する仮想チャネル番号のいずれかを使用して違反することができる。
【0054】
本明細書における本発明の態様は特定の実施形態を参照しながら説明されてきたが、これらの実施形態は、本発明の原理及び応用例を例示しているにすぎないことは理解されたい。それゆえ、添付の特許請求の範囲によって規定されるような本発明の趣旨及び範囲から逸脱することなく、その例示的な実施形態に対して数多くの変更を行うことができること、及び他の構成を考案できることを理解されたい。
【産業上の利用可能性】
【0055】
本発明は、コンピュータネットワークにおける効率的なパケットルーティングを含むがそれに限定されない広範な産業利用可能性を享有する。

【特許請求の範囲】
【請求項1】
コンピュータネットワークにおいてデッドロックを回避するようにパケットをルーティングする方法であって、
前記コンピュータネットワーク内の各スイッチに別個の識別子を割り当てるステップであって、該別個の識別子はそれぞれの各スイッチに一意なものである、割り当てるステップと、
前記デッドロックが回避されるように、前記コンピュータネットワークにわたって前記パケットをルーティングするためのターン規則を設定するステップであって、該ターン規則は、選択された条件が与えられて、第1のスイッチ(A)から中間スイッチ(B)を介して第2のスイッチ(C)に前記パケットを送信することを禁止するものであり、前記条件は、
前記中間スイッチ(B)の前記別個の識別子が、前記第1のスイッチ(A)及び前記第2のスイッチ(C)の双方の前記別個の識別子の値よりも大きな値を有することと、
前記中間スイッチ(B)の前記別個の識別子が、前記第1のスイッチ(A)及び前記第2のスイッチ(C)の双方の前記別個の識別子の値よりも小さな値を有することと、からなる群から選択されるものである、設定するステップと、
前記コンピュータネットワーク内の前記各スイッチに前記ターン規則を提供するステップと、
前記ターン規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングするステップであって、前記選択された条件は、後続のパケットルーティングについて維持されるものである、ルーティングするステップと
を含んでなる、コンピュータネットワークにおいてデッドロックを回避するようにパケットをルーティングする方法。
【請求項2】
前記第1のスイッチ(A)、前記第2のスイッチ(C)、及び前記中間スイッチ(B)は、適応的なルーティングのために構成されるものである請求項1に記載の方法。
【請求項3】
前記第1のスイッチ(A)、前記第2のスイッチ(C)、及び前記中間スイッチ(B)は、複数のルーティングテーブルをそれぞれ保持するものである請求項1に記載の方法。
【請求項4】
前記各スイッチの前記別個の識別子は、ハードウェア識別子のハッシュである請求項1に記載の方法。
【請求項5】
前記各スイッチにおいて複数の仮想チャネルをサポートするステップと、
前記選択された条件が与えられて、前記ターン規則が違反されるか否かを判断するステップと、
前記複数の仮想チャネルの一意の順序を選択することによって、前記ターン規則の違反を許可する仮想チャネル規則を設定するステップと、
前記仮想チャネル規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングするステップであって、該仮想チャネル規則は、後続のパケットルーティングについて維持されるものである、ルーティングするステップと
を更に含む、請求項1に記載の方法。
【請求項6】
前記各スイッチにおいて複数の仮想チャネルをサポートするステップと、
前記選択された条件が与えられて、前記ターン規則が違反されるか否かを判断するステップと、
以下の条件、すなわち、
仮想チャネル番号を、第1のチャネル番号からより大きいチャネル番号へ単調増加させること、又は、前記仮想チャネル番号を、前記第1のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、前記ターン規則の違反を許可する仮想チャネル規則を設定するステップと、
前記仮想チャネル規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングするステップであって、該仮想チャネル規則は、後続のパケットルーティングについて維持されるものである、ルーティングするステップと
を更に含む、請求項1に記載の方法。
【請求項7】
前記コンピュータネットワークは、バタフライネットワークアーキテクチャである請求項1に記載の方法。
【請求項8】
前記コンピュータネットワークはチップマルチプロセッサアーキテクチャを備えており、前記各スイッチは関連するプロセッサに結合されるものである、請求項1に記載の方法。
【請求項9】
コンピュータ可読記録媒体であって、該コンピュータ可読記録媒体上に格納された命令を有し、該命令は、プロセッサによって実行されると、該プロセッサに対し、
コンピュータネットワーク内の各スイッチに別個の識別子を割り当てる手順であって、該別個の識別子はそれぞれの各スイッチに一意なものである、割り当てる手順と、
デッドロックが回避されるように、前記コンピュータネットワークにわたってパケットをルーティングするためのターン規則を設定する手順であって、該ターン規則は、選択された条件が与えられて、第1のスイッチ(A)から中間スイッチ(B)を介して第2のスイッチ(C)に前記パケットを送信することを禁止するものであり、前記条件は、
前記中間スイッチ(B)の前記別個の識別子が、前記第1のスイッチ(A)及び前記第2のスイッチ(C)の双方の前記別個の識別子の値よりも大きな値を有することと、
前記中間スイッチ(B)の前記別個の識別子が、前記第1のスイッチ(A)及び前記第2のスイッチ(C)の双方の前記別個の識別子の値よりも小さな値を有することと、からなる群から選択されるものである、設定する手順と、
前記コンピュータネットワーク内の前記各スイッチに前記ターン規則を提供する手順と、
前記ターン規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングする手順であって、前記選択された条件は、後続のパケットルーティングについて維持されるものである、ルーティングする手順と
を実行させるものである、コンピュータ可読記録媒体。
【請求項10】
前記手順は、
前記選択された条件が与えられて、前記ターン規則が違反されるか否かを判断することと、
前記複数の仮想チャネルの一意の順序を選択することによって、前記ターン規則の違反を許可する仮想チャネル規則を設定することと、
前記仮想チャネル規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングすることであって、該仮想チャネル規則は後続のパケットルーティングについて維持されるものである、ルーティングすることと
を更に含む、請求項9に記載のコンピュータ可読記録媒体。
【請求項11】
前記手順は、
前記選択された条件が与えられて、前記ターン規則が違反されるか否かを判断することと、
以下の条件、すなわち、
仮想チャネル番号を、第1のチャネル番号からより大きいチャネル番号へ単調増加させること、又は、
前記仮想チャネル番号を、前記第1のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、前記ターン規則の違反を許可する仮想チャネル規則を設定することと、
前記仮想チャネル規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングすることであって、該仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることと
を更に含む、請求項9に記載の記録媒体。
【請求項12】
コンピュータシステムであって、
該コンピュータシステム内のそれぞれのノードに配置された複数のスイッチング素子であって、各スイッチング素子は別個の識別子によって識別され、隣接するスイッチング素子は互いに直接接続されている、複数のスイッチング素子を備えており、
前記各スイッチング素子は、該コンピュータシステムにおいてデッドロックが回避されるように、パケットをルーティングするためのターン規則を実行し、該ターン規則は、選択された条件が与えられて、第1のスイッチング素子(A)から中間スイッチング素子(B)を介して第2のスイッチング素子(C)にパケットを送信することを禁止するものであり、前記条件は、
前記中間スイッチング素子(B)の前記別個の識別子が、前記第1のスイッチング素子(A)及び前記第2のスイッチング素子(C)の双方の前記別個の識別子の値よりも大きな値を有することと、
前記中間スイッチング素子(B)の前記別個の識別子が、前記第1のスイッチング素子(A)及び前記第2のスイッチング素子(C)の双方の前記別個の識別子の値よりも小さな値を有することと、からなる群から選択されるものである、コンピュータシステム。
【請求項13】
前記第1のスイッチング素子(A)、前記第2のスイッチング素子(C)、及び前記中間スイッチング素子(B)は、適応的なルーティングのために構成されるものである請求項12に記載のコンピュータシステム。
【請求項14】
前記第1のスイッチング素子(A)、前記第2のスイッチング素子(C)、及び前記中間スイッチング素子(B)は、複数のルーティングテーブルをそれぞれ格納するものである請求項12に記載のコンピュータシステム。
【請求項15】
前記各スイッチング素子の前記別個の識別子は、前記各スイッチング素子のハードウェア識別子のハッシュである請求項12に記載のコンピュータシステム。
【請求項16】
前記スイッチング素子(A、B、及びC)は、複数の仮想チャネルをそれぞれサポートし、前記複数の仮想チャネルのあらかじめ選択された一意の順序に従って前記ターン規則の違反を許可する仮想チャネル規則を用いる請求項12に記載のコンピュータシステム。
【請求項17】
前記スイッチング素子(A、B、及びC)は、複数の仮想チャネルをそれぞれサポートし、以下の条件、すなわち、
仮想チャネル番号を、第1のチャネル番号からより大きなチャネル番号へ単調増加させること、又は、
前記仮想チャネル番号を、前記第1のチャネル番号からより小さなチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、前記ターン規則の違反を許可する仮想チャネル規則を用いるものである請求項12に記載のコンピュータシステム。
【請求項18】
前記コンピュータシステムは、バタフライネットワークアーキテクチャを有する請求項12に記載のコンピュータシステム。
【請求項19】
前記コンピュータシステムは、メッシュネットワークアーキテクチャを有する請求項12に記載のコンピュータシステム。
【請求項20】
前記コンピュータシステムはチップマルチプロセッサアーキテクチャを備えており、前記各スイッチング素子は関連するプロセッサに結合されるものである、請求項12に記載のコンピュータシステム。
【請求項21】
前記複数のスイッチング素子は、コンピュータネットワークの前記ノードにおけるルータを備えており、該ルータのうちの少なくとも幾つかは、前記ネットワークにわたってデータパケットを送信するためのホストに接続している請求項12に記載のコンピュータシステム。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2013−515449(P2013−515449A)
【公表日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2012−546134(P2012−546134)
【出願日】平成22年12月21日(2010.12.21)
【国際出願番号】PCT/US2010/061467
【国際公開番号】WO2011/084774
【国際公開日】平成23年7月14日(2011.7.14)
【出願人】(502208397)グーグル インコーポレイテッド (161)
【Fターム(参考)】