(57)【特許請求の範囲】
【請求項１】
コンピュータネットワークにおいてデッドロックを回避するようにパケットをルーティングする方法であって、
前記コンピュータネットワーク内の各スイッチに別個の識別子を割り当てるステップであって、該別個の識別子はそれぞれの各スイッチに一意なものである、割り当てるステップと、
前記デッドロックが回避されるように、前記コンピュータネットワークにわたって前記パケットをルーティングするためのターン規則を設定するステップであって、該ターン規則は、選択された条件が与えられて、第１のスイッチ（Ａ）から中間スイッチ（Ｂ）を介して第２のスイッチ（Ｃ）に前記パケットを送信することを禁止するものであり、前記条件は、
前記中間スイッチ（Ｂ）の前記別個の識別子が、前記第１のスイッチ（Ａ）及び前記第２のスイッチ（Ｃ）の双方の前記別個の識別子の値よりも大きな値を有することと、
前記中間スイッチ（Ｂ）の前記別個の識別子が、前記第１のスイッチ（Ａ）及び前記第２のスイッチ（Ｃ）の双方の前記別個の識別子の値よりも小さな値を有することと、からなる群から選択されるものである、設定するステップと、
前記コンピュータネットワーク内の前記各スイッチに前記ターン規則を提供するステップと、
前記ターン規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングするステップであって、前記選択された条件は、後続のパケットルーティングについて維持されるものである、ルーティングするステップと、
前記各スイッチにおいて複数の仮想チャネルをサポートするステップと、
前記選択された条件が与えられて、前記ターン規則が違反されるか否かを判断するステップと、
前記複数の仮想チャネルの一意の順序を選択することによって、前記ターン規則の違反を許可する仮想チャネル規則を設定するステップと、
前記仮想チャネル規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングするステップであって、該仮想チャネル規則は、後続のパケットルーティングについて維持されるものである、ルーティングするステップと
を含んでなる、コンピュータネットワークにおいてデッドロックを回避するようにパケットをルーティングする方法。
【請求項２】
前記第１のスイッチ（Ａ）、前記第２のスイッチ（Ｃ）、及び前記中間スイッチ（Ｂ）は、適応的なルーティングのために構成されるものである請求項１に記載の方法。
【請求項３】
前記第１のスイッチ（Ａ）、前記第２のスイッチ（Ｃ）、及び前記中間スイッチ（Ｂ）は、複数のルーティングテーブルをそれぞれ保持するものである請求項１に記載の方法。
【請求項４】
前記各スイッチの前記別個の識別子は、ハードウェア識別子のハッシュである請求項１に記載の方法。
【請求項５】
以下の条件、すなわち、
仮想チャネル番号を、第１のチャネル番号からより大きいチャネル番号へ単調増加させること、又は、前記仮想チャネル番号を、前記第１のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、前記ターン規則の違反を許可する前記仮想チャネル規則を設定するステップ
を更に含む、請求項１に記載の方法。
【請求項６】
前記コンピュータネットワークは、バタフライネットワークアーキテクチャである請求項１に記載の方法。
【請求項７】
前記コンピュータネットワークはチップマルチプロセッサアーキテクチャを備えており、前記各スイッチは関連するプロセッサに結合されるものである、請求項１に記載の方法。
【請求項８】
コンピュータ可読記録媒体であって、該コンピュータ可読記録媒体上に格納された命令を有し、該命令は、プロセッサによって実行されると、該プロセッサに対し、
コンピュータネットワーク内の各スイッチに別個の識別子を割り当てる手順であって、該別個の識別子はそれぞれの各スイッチに一意なものである、割り当てる手順と、
デッドロックが回避されるように、前記コンピュータネットワークにわたってパケットをルーティングするためのターン規則を設定する手順であって、該ターン規則は、選択された条件が与えられて、第１のスイッチ（Ａ）から中間スイッチ（Ｂ）を介して第２のスイッチ（Ｃ）に前記パケットを送信することを禁止するものであり、前記条件は、
前記中間スイッチ（Ｂ）の前記別個の識別子が、前記第１のスイッチ（Ａ）及び前記第２のスイッチ（Ｃ）の双方の前記別個の識別子の値よりも大きな値を有することと、
前記中間スイッチ（Ｂ）の前記別個の識別子が、前記第１のスイッチ（Ａ）及び前記第２のスイッチ（Ｃ）の双方の前記別個の識別子の値よりも小さな値を有することと、からなる群から選択されるものである、設定する手順と、
前記コンピュータネットワーク内の前記各スイッチに前記ターン規則を提供する手順と、
前記ターン規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングする手順であって、前記選択された条件は、後続のパケットルーティングについて維持されるものである、ルーティングする手順と、
前記選択された条件が与えられて、前記ターン規則が違反されるか否かを判断する手順と、
前記複数の仮想チャネルの一意の順序を選択することによって、前記ターン規則の違反を許可する仮想チャネル規則を設定する手順と、
前記仮想チャネル規則に従って前記コンピュータネットワークにわたって前記パケットをルーティングする手順であって、該仮想チャネル規則は後続のパケットルーティングについて維持されるものである、ルーティングする手順と
を実行させるものである、コンピュータ可読記録媒体。
【請求項９】
前記手順は、  以下の条件、すなわち、
仮想チャネル番号を、第１のチャネル番号からより大きいチャネル番号へ単調増加させること、又は、
前記仮想チャネル番号を、前記第１のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、前記ターン規則の違反を許可する前記仮想チャネル規則を設定すること
を更に含む、請求項８に記載の記録媒体。
【請求項１０】
コンピュータシステムであって、
該コンピュータシステム内のそれぞれのノードに配置された複数のスイッチング素子であって、各スイッチング素子は別個の識別子によって識別され、隣接するスイッチング素子は互いに直接接続されている、複数のスイッチング素子を備えており、
前記各スイッチング素子は、該コンピュータシステムにおいてデッドロックが回避されるように、パケットをルーティングするためのターン規則を実行し、該ターン規則は、選択された条件が与えられて、第１のスイッチング素子（Ａ）から中間スイッチング素子（Ｂ）を介して第２のスイッチング素子（Ｃ）にパケットを送信することを禁止するものであり、前記条件は、
前記中間スイッチング素子（Ｂ）の前記別個の識別子が、前記第１のスイッチング素子（Ａ）及び前記第２のスイッチング素子（Ｃ）の双方の前記別個の識別子の値よりも大きな値を有することと、
前記中間スイッチング素子（Ｂ）の前記別個の識別子が、前記第１のスイッチング素子（Ａ）及び前記第２のスイッチング素子（Ｃ）の双方の前記別個の識別子の値よりも小さな値を有することと、からなる群から選択されるものであり、
前記スイッチング素子（Ａ、Ｂ、及びＣ）は、複数の仮想チャネルをそれぞれサポートし、前記複数の仮想チャネルのあらかじめ選択された一意の順序に従って前記ターン規則の違反を許可する仮想チャネル規則を用いるものである、コンピュータシステム。
【請求項１１】
前記第１のスイッチング素子（Ａ）、前記第２のスイッチング素子（Ｃ）、及び前記中間スイッチング素子（Ｂ）は、適応的なルーティングのために構成されるものである請求項１０に記載のコンピュータシステム。
【請求項１２】
前記第１のスイッチング素子（Ａ）、前記第２のスイッチング素子（Ｃ）、及び前記中間スイッチング素子（Ｂ）は、複数のルーティングテーブルをそれぞれ格納するものである請求項１０に記載のコンピュータシステム。
【請求項１３】
前記各スイッチング素子の前記別個の識別子は、前記各スイッチング素子のハードウェア識別子のハッシュである請求項１０に記載のコンピュータシステム。
【請求項１４】
仮想チャネル番号を、第１のチャネル番号からより大きなチャネル番号へ単調増加させること、又は、
前記仮想チャネル番号を、前記第１のチャネル番号からより小さなチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、前記ターン規則の違反を許可するものである請求項１０に記載のコンピュータシステム。
【請求項１５】
前記コンピュータシステムは、バタフライネットワークアーキテクチャを有する請求項１０に記載のコンピュータシステム。
【請求項１６】
前記コンピュータシステムは、メッシュネットワークアーキテクチャを有する請求項１０に記載のコンピュータシステム。
【請求項１７】
前記コンピュータシステムはチップマルチプロセッサアーキテクチャを備えており、前記各スイッチング素子は関連するプロセッサに結合されるものである、請求項１０に記載のコンピュータシステム。
【請求項１８】
前記複数のスイッチング素子は、コンピュータネットワークの前記ノードにおけるルータを備えており、該ルータのうちの少なくとも幾つかは、前記ネットワークにわたってデータパケットを送信するためのホストに接続している請求項１０に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の態様は、包括的には、コンピュータネットワークにおいてデータをルーティングすることに関する。より詳細には、態様は、コンピュータネットワークにおいてシステム構成にかかわらずデッドロックを防止することを対象とする。
【０００２】
［関連出願の相互参照］
本出願は、２００９年１２月２１日に出願された、「Deadlock Prevention In Direct Networks Of Arbitrary Topology」と題する米国特許出願第１２／６４３，２８０号、代理人整理番号ＧＯＯＧＬＥ３．０−０５６の利益を主張する。該特許出願の開示内容の全体を引用することにより、本明細書の一部をなすものとする。
【背景技術】
【０００３】
多くの通信ネットワークにおいて、多くの場合に複数のプロセッサが用いられる。プロセッサは、様々な構成で配置することができる。例えば、プロセッサのアレイはメッシュアーキテクチャ又はトーラスアーキテクチャで構成することができる。アレイは、異なるネットワーク内の他のアレイに相互接続することもできる。
【０００４】
そのような通信ネットワーク内の構成要素間でデータを渡すために、フロー制御を含む様々なルーティング方式が用いられてきた。一方、幾つかの通信ネットワークは、バッファ空間又は他のリソースが利用可能となるまでノードのスイッチへのリンク上のトラフィックを機能停止（ストール（stall））する可能性があるフロー制御メカニズムを用いる。ネットワークノードの出力リンク上の遮断は、スイッチを越えて後方へと伝播し、ストールされた出力をルーティングしようとしている該ネットワークノードの入力リンクをストールする場合がある。
【０００５】
「デッドロック」として知られる状態が生じる可能性がある。デッドロックでは、ストールされたリンクが間接的に該リンク自体に依存している。デッドロックは、データ損失エラーを引き起こし、修復するにはネットワークリスタートを必要とする場合がある深刻な状態である。これまで、デッドロックに対処するために様々な技法が用いられてきた。残念なことに、このような技法は様々な状況において失敗する場合がある。
【０００６】
例えば、「ターンモデル（turn model）」は、ネットワークトポロジーのタイプごとに特定の制約を要求する場合がある。ネットワークにリンク又はスイッチが欠けており、もはや完全なトポロジーを提供しないとき、ターンモデルは機能しなくなる場合がある。「ｕｐ＊／ｄｏｗｎ＊」ルーティングでは、全域木（spanning tree）によって任意のネットワークがカバーされる。経路は或る方向に流れることを強いられるが、これは全域木のルート付近のリンク負荷不平衡につながる場合があり、リンク又はスイッチが故障したとき、ネットワークリスタートを必要とする場合もある。「折返しクロス（folded Clos）」又は「ファットツリー」型のネットワークでは、デッドロックは経路制約を課すことによって対処されるが、これらの経路制約は過度に制限的である場合がある。
【発明の概要】
【０００７】
デッドロックを防止するためにブロッキングフロー制御を組み込んだシステム及び方法が提供される。そのようなシステム及び方法は、ネットワーク又は該ネットワーク内の経路が変更された場合であっても機能するように設計される。
【０００８】
１つの実施の形態では、コンピュータネットワークにおいてデッドロックを回避するようにパケットをルーティングする方法が提供される。本方法は、コンピュータネットワーク内の各スイッチに別個の（distinct）識別子を割り当てることを含む。該別個の識別子は、各それぞれのスイッチに一意である。本方法は、デッドロックが回避されるように、コンピュータネットワークにわたってパケットをルーティングするためのターン規則を設定することも含む。該ターン規則は、選択された条件が与えられて、第１のスイッチ（Ａ）から中間スイッチ（Ｂ）を介して第２のスイッチ（Ｃ）にパケットを送信することを禁止する。条件は、中間スイッチＢの別個の識別子が、第１のスイッチＡ及び第２のスイッチＣの双方の別個の識別子の値よりも大きな値を有することと、中間スイッチＢの別個の識別子が、第１のスイッチＡ及び第２のスイッチＣの双方の別個の識別子の値よりも小さな値を有することと、からなる群から選択される。本方法は、コンピュータネットワーク内の各スイッチにターン規則を提供することと、該ターン規則に従ってコンピュータネットワークにわたってパケットをルーティングすることとを更に含む。選択された条件は、後続のパケットルーティングについて維持される。
【０００９】
１つの例では、本方法は、第１のスイッチＡ、第２のスイッチＣ、及び中間スイッチＢは適応的なルーティングのために構成される。別の例では、第１のスイッチＡ、第２のスイッチＣ、及び中間スイッチＢはそれぞれ複数のルーティングテーブルを保持する。更なる例では、各スイッチの別個の識別子はハードウェア識別子のハッシュである。
【００１０】
１つの代替形態では、本方法は、各スイッチにおいて複数の仮想チャネルをサポートすることと、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、複数の仮想チャネルの一意の順序を選択することによって、ターン規則の違反を許可する仮想チャネル規則を設定することと、該仮想チャネル規則に従ってコンピュータネットワークにわたってパケットをルーティングすることであって、仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることと、を更に含む。
【００１１】
別の代替形態例では、本方法は、各スイッチにおいて複数の仮想チャネルをサポートすることと、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、以下の条件、すなわち、仮想チャネル番号を、第１のチャネル番号からより大きいチャネル番号へ単調増加させること、又は仮想チャネル番号を、第１のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合にターン規則の違反を許可する仮想チャネル規則を設定することと、を更に含む。この代替形態において、本方法は、仮想チャネル規則に従ってコンピュータネットワークにわたって前記パケットをルーティングすることも含む。仮想チャネル規則は後続のパケットルーティングについて維持される。
【００１２】
別の例では、コンピュータネットワークはバタフライネットワークアーキテクチャである。更なる例では、コンピュータネットワークはチップマルチプロセッサアーキテクチャを備え、各スイッチは関連するプロセッサに結合される。
【００１３】
別の実施の形態よれば、コンピュータ可読記録媒体が提供される。この記録媒体は、コンピュータ可読記録媒体上に格納された命令を有する。該命令は、プロセッサによって実行されると、該プロセッサに対し、コンピュータネットワーク内の各スイッチに別個の識別子を割り当てる手順であって、該別個の識別子は各それぞれのスイッチに一意である、割り当てる手順と、デッドロックが回避されるように、コンピュータネットワークにわたってパケットをルーティングするためのターン規則を設定する手順であって、該ターン規則は、選択された条件が与えられて、第１のスイッチ（Ａ）から中間スイッチ（Ｂ）を介して第２のスイッチ（Ｃ）にパケットを送信することを禁止するものであり、条件は、中間スイッチＢの別個の識別子が、第１のスイッチＡ及び第２のスイッチＣの双方の別個の識別子の値よりも大きな値を有することと、中間スイッチＢの別個の識別子が、第１のスイッチＡ及び第２のスイッチＣの双方の別個の識別子の値よりも小さな値を有することと、からなる群から選択される、設定する手順と、コンピュータネットワーク内の各スイッチにターン規則を提供する手順と、該ターン規則に従ってコンピュータネットワークにわたってパケットをルーティングする手順であって、選択された条件は後続のパケットルーティングについて維持されるものである、ルーティングする手順とを実行させる。
【００１４】
１つの例では、手順は、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、複数の仮想チャネルの一意の順序を選択することによって、ターン規則の違反を許可する仮想チャネル規則を設定することと、該仮想チャネル規則に従ってコンピュータネットワークにわたってパケットをルーティングすることであって、仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることとを更に含む。
【００１５】
別の例では、手順は、選択された条件が与えられて、ターン規則が違反されるか否かを判断することと、以下の条件、すなわち、仮想チャネル番号を、第１のチャネル番号からより大きいチャネル番号へ単調増加させること、又は仮想チャネル番号を、第１のチャネル番号からより小さいチャネル番号へ単調減少させること、のうちの一方のみが生じる場合には、ターン規則の違反を許可する仮想チャネル規則を設定することと、該仮想チャネル規則に従ってコンピュータネットワークにわたってパケットをルーティングすることであって、仮想チャネル規則は後続のパケットルーティングについて維持される、ルーティングすることとを更に含む。
【００１６】
更なる実施の形態では、コンピュータシステムは、該コンピュータシステム内のそれぞれのノードに配置された複数のスイッチング素子を備える。各スイッチング素子は別個の識別子によって識別される。隣接するスイッチング素子は互いに直接接続される。各スイッチング素子は、コンピュータシステムにおいてデッドロックが回避されるように、パケットをルーティングするためのターン規則を実行する。該ターン規則は、選択された条件が与えられて、パケットを第１のスイッチング素子（Ａ）から中間スイッチング素子（Ｂ）を介して第２のスイッチング素子（Ｃ）に送信することを禁止する。条件は、中間スイッチング素子Ｂの別個の識別子が、第１のスイッチング素子Ａ及び第２のスイッチング素子Ｃの双方の別個の識別子の値よりも大きな値を有することと、中間スイッチング素子Ｂの前記別個の識別子が、第１のスイッチング素子Ａ及び第２のスイッチング素子Ｃの双方の別個の識別子の値よりも小さな値を有することと、からなる群から選択される。
【００１７】
１つの例では、第１のスイッチング素子Ａ、第２のスイッチング素子Ｃ、及び中間スイッチング素子Ｂは、適応的なルーティングのために構成される。別の例では、第１のスイッチング素子Ａ、第２のスイッチング素子Ｃ、及び中間スイッチング素子Ｂは、それぞれ複数のルーティングテーブルを格納する。更なる例では、各スイッチング素子の別個の識別子は、該それぞれのスイッチング素子のハードウェア識別子のハッシュである。
【００１８】
１つの代替形態では、スイッチング素子Ａ、Ｂ、及びＣは、それぞれ複数の仮想チャネルをサポートし、複数の仮想チャネルのあらかじめ選択された一意の順序に従ってターン規則の違反を許可する仮想チャネル規則を用いる。
【００１９】
別の代替形態では、スイッチング素子Ａ、Ｂ、及びＣは、それぞれ複数の仮想チャネルをサポートし、以下の条件、すなわち、仮想チャネル番号を、第１のチャネル番号からより大きなチャネル番号へ単調増加させること、又は仮想チャネル番号を、第１のチャネル番号からより小さなチャネル番号へ単調減少させること、のうちの一方のみが生じる場合にターン規則の違反を許可する仮想チャネル規則を用いる。
【００２０】
更に別の例では、コンピュータシステムはバタフライネットワークアーキテクチャを有する。更なる例では、コンピュータシステムはメッシュネットワークアーキテクチャを有する。
【００２１】
一代替形態では、コンピュータシステムはチップマルチプロセッサアーキテクチャを備え、各スイッチング素子は関連するプロセッサに結合される。また、更に別の代替形態では、複数のスイッチング素子は、コンピュータネットワークのノードにおいてルータを備える。該ルータのうちの少なくとも幾つかは、ネットワークにわたってデータパケットを送信するためのホストに接続する。
【図面の簡単な説明】
【００２２】
【図１】本発明の態様による使用のためのマルチプロセッサアーキテクチャを示す図である。
【図２Ａ】本発明の態様によるルータスイッチを示す図である。
【図２Ｂ】本発明の態様によるルータスイッチを示す図である。
【図３】本発明の態様によるルーティングシナリオを示す図である。
【図４】本発明の態様による使用のための仮想チャネルを示す図である。
【図５】本発明の態様による多次元スイッチを示す図である。
【図６】本発明の態様とともに用いるためのチップマルチプロセッサを示す図である。
【発明を実施するための形態】
【００２３】
本発明の態様、特徴、及び利点は、好ましい実施形態の以下の説明と、添付の図面とを参照して検討したときに理解されるであろう。異なる図面内の同じ参照符号は、同じ要素又は類似の要素を特定することができる。さらに、以下の説明は限定的ではなく、本発明の範囲は添付の特許請求の範囲及び均等物によって規定される。
【００２４】
図１は、本発明の態様とともに用いるための一例示のコンピュータネットワークアーキテクチャ１００を示している。示すように、アーキテクチャは、メッシュ型構成に配列されたノード１０２において複数のスイッチ（Ｓ０．．．Ｓ６３）を含む。メッシュのＸ方向及びＹ方向の隣接ノード１０２におけるスイッチＳは、接続／リンク１０４を介して互いに接続されている。例えば、スイッチＳ９はスイッチＳ１、Ｓ８、Ｓ１０、及びＳ１７に接続されている。メッシュ構成が示されているが、トーラス、バタフライ、平坦化したバタフライ等を含む任意の他のアークテキチャを用いることができる。
【００２５】
図１の例では、メッシュの上部ノード（Ｓ０．．．Ｓ７）及び下部ノード（Ｓ５６．．．Ｓ６３）又は側部ノードに沿ったスイッチをそれぞれのホスト１０６と接続することができる。ホストは、例えば、ネットワークインターフェースカードを介してネットワークに接続された処理デバイス又はコンピュータシステムとすることができる。各ホスト１０６は、トラフィックを発信することができ、及び／又は、ネットワーク内のノードからトラフィックを受信することができる。この例に示すように、１つのスイッチＳ（例えばＳ０、Ｓ４、Ｓ６１）が各ホストに接続するが、複数のホストが単一のスイッチＳに接続することもできる。他の構成は、単一のホストに接続する複数のスイッチＳを有することもできる。加えて、或るホスト１０６は別のネットワーク１０８に結合することもできる。全てのそのような構成は、本明細書において説明されるように本発明に従って用いることができる。
【００２６】
図２Ａは、所与のノード１０２がマルチポートルータスイッチ１１０を備える例を示している。示す構成では、マルチポートルータスイッチ１１０は、５ポートルータスイッチＳである。４つのポートがメッシュの＋Ｘ方向、−Ｘ方向、＋Ｙ方向、及び−Ｙ方向において隣接ノードに接続する。第５のポートは、望ましくは、スイッチのそれぞれのノードにおいて同一ロケーションに位置するプロセッサ１１２（例えばホスト）に接続する。この例では、スイッチ１１０は図１のスイッチＳ４である。このため、−Ｘ方向のポートはスイッチＳ３に接続し、＋Ｘ方向のポートはスイッチＳ５に接続し、−Ｙ方向のポートはスイッチＳ１２に接続する。スイッチＳ４はメッシュの上部エッジに沿って位置するので、＋Ｙ方向におけるスイッチＳ４のポートはホスト１０６に接続する。５ポートルータスイッチが示されているが、任意の数のポートを使用した他のタイプのマルチポートスイッチを用いることもできる。例として、Ｍｅｌｌａｎｏｘ社のＩｎｆｉｎｉＳｃａｌｅ（商標）ＩＶ３６ポートスイッチデバイスを用いることができる。このスイッチデバイスは、多次元６値６フラットネットワークトポロジーにおいて用いることができる。使用されるスイッチは異なるタイプ又は構成とすることができる。
【００２７】
図２Ｂを見ると、この図は、マルチポートルータスイッチ１１０が、バッファリング１１４と、データパケットをネットワーク内の他のノードにルーティングするためのルーティングメカニズム１１６とを備えうることを示している。ルータスイッチ１１０は、いずれの次のスイッチにパケットをルーティングするかを決定するための処理ロジック又はファームウェア（「ロジック」）１１８も含みうる。
【００２８】
本発明の１つの態様によれば、各スイッチＳは、好ましくは以下の特徴を含む。まず、スイッチＳはネットワーク内のルーティングを適切に可能にするために、大きなポート数を有するべきである。例えば、平坦化したバタフライネットワークにおいて、スイッチＳあたり少なくとも２８個のポートが存在するべきである。他のタイプのネットワークは、スイッチあたり、又は寸法あたり、より少ないか又はより多くのポートを用いることができる。別の特徴は、スイッチＳが適応ルーティング機能を有するべきであるということである。好ましくは、スイッチＳはスイッチ内に複数のルーティングテーブルを有することが可能であるべきである。この状況において、全てのポートが単一のルーティングテーブルによってルーティングされるわけではなく、スイッチがポート固有のルーティングを用いることが可能になる。
【００２９】
図３は、本発明の態様によるルーティング例を示している。４つのルータスイッチＡ、Ｂ、Ｃ、及びＤが提供される。スイッチＢを通じた１つの「ターン」（Ａ，Ｂ，Ｃ）は、ホップ対（Ａ，Ｂ）及び（Ｂ，Ｃ）を含み、データのパケットをＡからＢを介してＣへ移動する。
【００３０】
各スイッチ「Ｘ」は、永続的で別個の識別子「Ｉ（Ｘ）」を割り当てられることが好ましい。スイッチＡ、Ｂ、Ｃ、及びＤの識別子は、それぞれ、Ｉ（Ａ）、Ｉ（Ｂ）、Ｉ（Ｃ）、及びＩ（Ｄ）である。識別子は、ネットワークによって、例えばランダムに、又は永続的なハードウェア識別情報を用いて割り当てることができる。このため、スイッチがＩｎｆｉｎｉＢａｎｄのグローバル一意識別子（「ＧＵＩＤ」）又は他の一意の識別子を有する場合、その識別子又は該識別子のハッシュは、別個の識別子としての役割を果たすことができる。
【００３１】
現実世界の例では、全てのスイッチＳ又はリンク１０４が常に「アップ」又はアクティブであるわけではない。一般的に言えば、通常、少なくとも１つの修復中の障害が存在する。そして、新たなスイッチがアドホックベースでネットワークに追加される場合がある。このため、一貫性を確保するために、各スイッチＳの別個の識別子は経時的に変更しないことが好ましい。
【００３２】
図３の例について、別個の識別子に関して４つの可能な選択肢、すなわち、
Ｉ（Ａ）＜Ｉ（Ｂ）＜Ｉ（Ｃ）
Ｉ（Ａ）＜Ｉ（Ｂ）＞Ｉ（Ｃ）
Ｉ（Ａ）＞Ｉ（Ｂ）＜Ｉ（Ｃ）
Ｉ（Ａ）＞Ｉ（Ｂ）＞Ｉ（Ｃ）
が存在する。特定の（仮想）チャネル上のパケットフローが、パケットが別のチャネル上を流れる能力に依存するとき、「フロー依存」が存在する。スイッチに入るチャネル上のフローは、そのスイッチが、入力チャネルから出力へトラフィックをルーティングすることが可能である場合、スイッチを出るチャネル上のフローに依存する。仮想チャネル間のこの依存関係は、任意のチャネルが、直接的に又は推移的に（transitively）該チャネル自体に依存する場合、デッドロックにつながる可能性がある。
【００３３】
そのような問題を回避するために、１つの態様では、スイッチを通る経路は以下の規則に従って求められる。Ｉ（Ａ）＜Ｉ（Ｂ）かつＩ（Ｃ）＜Ｉ（Ｂ）の場合でない限り、スイッチＡからスイッチＢを通ってスイッチＣへの任意のターン「Ａ〜Ｂ〜Ｃ」を経路において用いることができる。識別子Ｉ（Ｘ）の永続性によって、スイッチ及びリンクがネットワークを出入りし、新たな経路が計算されるにもかかわらず、デッドロックからの安全性が保証される。このシナリオにおいて、全ての経路におけるターンの包括的集合が、決してターンＩ（Ａ）＜Ｉ（Ｂ）＞Ｉ（Ｃ）を含まないので、再ルーティングイベント後の古いトラフィックと新しいトラフィックとの間であってもデッドロックが発生する可能性はない。
【００３４】
Ａ＝４、Ｂ＝５、Ｃ＝２、及びＤ＝３である例を検討する。本実施形態において、パケットはＡからＣにルーティングされる。上記の規則を用いると、４（Ａ）＜５（Ｂ）＞２（Ｃ）であるので、パケットはスイッチＢを通してルーティングすることができない。一方、４（Ａ）＞３（Ｄ）＞２（Ｃ）であるので、パケットはスイッチＤを通してルーティングすることができる。このため、ターン（Ａ，Ｄ，Ｃ）が選択される。
【００３５】
代替的に、別の実施形態において、ターンの全ての組合せＩ（Ａ）＞Ｉ（Ｂ）＜Ｉ（Ｃ）を禁止することができ、これは上記と同じ効果を伴い、特に、デッドロックからの安全性が保証される。この場合、ターン（Ａ，Ｂ，Ｃ）は、（Ａ，Ｄ，Ｃ）と異なり、禁止された関係に抵触しないので選択される。シナリオにおいて、隣接するスイッチ（例えばＡ及びＢ、Ｂ及びＣ、Ａ及びＤ、又はＣ及びＤ）は、スイッチが一切介在することなく互いに直接接続される。
【００３６】
適応的なルーティングを実行するためのロジックは、図２Ｂの処理ロジック又はファームウェア１１８等の、各それぞれのノードにおけるスイッチＳ内に存在することができる。ルーティングロジックは、ネットワーク内の全てのスイッチＳに内蔵されることが望ましい。各スイッチは、ルーティングテーブル又は等価なロジックを用いて、いずれの出力ポートを用いるかを決定することができる。ルーティングテーブルは柔軟性を提供し、パケットを容易に再ルーティングすることによって、滞りなく障害に対処する。ルーティングテーブルの一括した集合をプログラムすることによって「ルーティングアルゴリズム」を実行することが望ましい。好ましくは、各スイッチＳは複数のルーティングテーブルを用いてポート固有のルーティングを可能にするように構成される。ネットワークに対する変更が生じると、スイッチは、該ネットワークを通じた幾つかの経路又は全ての経路を再計算することができる。
【００３７】
本発明の一態様による適応的なルーティングは、ポートの集合に、ローカルの宛先をマッピングする。データパケットを管理するスイッチは、いずれのスイッチにパケットを送信するかを選択することができる。選択されたホストから送信された、あらかじめ設定されたパケットを用いて、ネットワークトポロジーを明らかにすることができる。望ましくは、各スイッチＳは、ネットワーク内の全てのホストのエントリと、各ホストへの距離とを有するテーブルを保持する。距離は、スイッチから、介在するノードを介してホストまでのホップ（例えば介在するスイッチ／ノード）数によって決まる。所与のスイッチは、距離に関して、該スイッチ自身からＸホップ離れたホストを反復して計算することができる。これは近傍のスイッチを評価することによって行うことができる。１つの態様において、この距離決定は、上記で説明した規則を順守しながら行われ、すなわち、Ｉ（Ａ）＜Ｉ（Ｂ）＞Ｉ（Ｃ）であるか、又はＩ（Ａ）＞Ｉ（Ｂ）＜Ｉ（Ｃ）であるターンを回避する。
【００３８】
本発明の態様によれば、ネットワークにおいてノード間に代替経路を設けることによって、仮想チャネルを使用してデッドロックを解除することができる。仮想チャネルは、様々なネットワークにおいて、ネットワーク内のノード間でデータパケットをルーティングするのに用いることができる。図４は、図２Ａ及び図２Ｂのルータスイッチ１１０のルーティングメカニズム１１６のための一例示の仮想チャネル構成２００を示している。図４に示すように、スイッチを出入りする少なくとも１対の共有物理チャネル２０２が存在する。共有物理チャネル２０２とクロスバーアーキテクチャ２０６との間で、１組の独立した要求仮想チャネル及び応答仮想チャネル２０４を多重化することができる。
【００３９】
１つの態様によれば、上述したターン規則は、仮想チャネルを用いて違反することができる。具体的には、Ｉ（Ａ）＜Ｉ（Ｂ）＞Ｉ（Ｃ）（又はＩ（Ａ）＞Ｉ（Ｂ）＜Ｉ（Ｃ））のターンの組合せは、該ターンには、上位の（又は下位の）仮想ネットワークへの永続的な移行が伴うことができる場合にのみ許可される。換言すれば、複数の仮想チャネルを有するネットワークは、そうでない場合に許容できないターンを用いて、移行点（point of transition）をより大きな番号の（又はより小さな番号の）仮想チャネルにシグナリングすることができる。これは、移行を仮想チャネルのあらかじめ選択された順序に制限することによって達成することができる。
【００４０】
各スイッチはＮ個の仮想チャネルを備えることができる。例えば、Ｎ＝４のとき、物理リンクあたり４つの仮想チャネルが存在する。換言すれば、データパケットを格納することができる、物理リンクの４つのバッファが存在する。本例では、各仮想チャネルは独自の別個のランク（例えば０、１、２、又は３）を有する。平坦化したバタフライの場合、少なくとも２つの仮想チャネルを用いるべきである。仮想チャネルに対し、Ｎ！（Ｎの階乗）個の異なる（一意の）順序が存在する。それらの順序のうちの任意のものを選択することができる。しかしながら、いったん１つの特定の順序が選択されると、デッドロックを回避するためにこれに従って進むべきである。
【００４１】
１つの例では、ターン規則は、パケットが単調増加する仮想チャネル番号にのみルーティングされている限り、違反することができる。例として、現在の仮想チャネル＝１を仮定する。ここで、ターン規則の結果、仮想チャネル１に沿った有効なパスがない場合、仮想チャネル２を用いて、ターン規則に違反した経路を選択することができる。その後のターンは、ターン規則に違反しない限り仮想チャネル２を使用する。その後、仮想チャネル２を使用して利用可能な有効なパスがない場合、仮想チャネル３を用いて、ターン規則に違反するパスを選択することができる。
【００４２】
代替的な例において、ターン規則は、パケットが単調増加する仮想チャネル番号のみにルーティングされている限り違反することができる。例として、現在の仮想チャネル＝１を仮定する。ここで、ターン規則の結果、仮想チャネル１に沿った有効なパスがない場合、仮想チャネル０を用いて、ターン規則に違反した経路を選択することができる。その後のターンは仮想チャネル０を使用する。このように、ターン規則は、単調増加する仮想チャネル番号又は単調減少する仮想チャネル番号を用いて違反することができる。この状況において、これらの２つの選択肢のうちの一方のみを用いることができる。ネットワークは、潜在的に結果としてデッドロック状況を生じることなく２つの選択肢間で変化することができない。
【００４３】
上記で示したように、本発明の態様は様々なネットワーク構成に組み込むことができる。実際に、本発明の態様を組み込むと、デッドロックは、各スイッチが別個の識別子を有する任意のネットワークトポロジーにおいて防止することができる。例として、図１等の２次元メッシュアーキテクチャ又はトーラス等の他の２次元アークテキチャを使用することができる。バタフライネットワーク及び平坦化したバタフライネットワーク等の他の多次元アーキテクチャも用いることができる。
【００４４】
１つの例において、ネットワーク内の全てのノードがＮ次元座標を割り当てられる。ネットワーク内にＮ個の軸が存在する。ここで、メッシュ型の例において、座標は隣接座標において１だけ異なる。換言すれば、各スイッチは、単一の軸上で座標が異なる全ての他のスイッチに接続する。スイッチ間の各ホップは１つの座標を置き換える。
【００４５】
図５は、５次元スイッチ３００を示している。この例では、スイッチ３００は、ホスト用の６個のポートを含む３６個の双方向ポートを有する。示すように、近傍スイッチへの各リンクは単一の座標において異なる。
【００４６】
スイッチ３００は、動作中、接続されたホストのうちの任意のものから、又は残りのポートにおいて接続された他のスイッチのうちの任意のものから入力パケットを受信することができる。ほとんどの場合、ｊ個のディジットが異なる２つのスイッチ間の物理的最小経路数はｊ！（ｊの階乗）個である。上述したターン規則に従う許容可能な経路数はより少なく、下限が（ｊ／２）！２個である。
【００４７】
例えば、アドレス（１，２，３，４）及び（４，３，２，１）を有するスイッチ間の、４次元の平坦化したバタフライにおけるターンモデルの下での最小経路を検討する。以下の経路が正当なものである。
（１，２，３，４）−＞（１，２，２，４）−＞（１，２，２，１）−＞（４，２，２，１）−＞（４，３，２，１）
（１，２，３，４）−＞（１，２，２，４）−＞（１，２，２，１）−＞（１，３，２，１）−＞（４，３，２，１）
（１，２，３，４）−＞（１，２，３，１）−＞（１，２，２，１）−＞（４，２，２，１）−＞（４，３，２，１）
（１，２，３，４）−＞（１，２，３，１）−＞（１，２，２，１）−＞（１，３，２，１）−＞（４，３，２，１）
【００４８】
一方、その他の２０個の最小長さの可能なパスは、
（１，２，３，４）−＞（４，２，３，４）−＞（４，３，３，４）−＞（４，３，２，４）−＞（４，３，２，１）
等の許容できないターンを含む。
【００４９】
この例において観察することができるように、スイッチの幾つかの対間の同じ仮想ネットワークにおける規則に適った最小経路の全てが、その座標がソースエンドポイントアドレス及び宛先エンドポイントアドレスの対応する座標の最小値であるスイッチを通らなくてはならない。これは上記の例では（１，２，２，１）である。
【００５０】
本発明の態様を、様々なタイプのコンピュータネットワークとともに用いることができる。これらのネットワークは、多数の物理的ロケーションに位置することができるホスト及びノードを有する分散型システムを含む。例として、ネットワークは、互いに結合された１つ又は複数のデータセンターを含むことができ、ホストは或るデータセンター内又は別々のデータセンター間の様々なサーバーを含む。本発明は、チップマルチプロセッサ等のマルチプロセッサコンピュータシステムにおいて用いることもできる。
【００５１】
図６は、本発明の態様とともに使用するための一例示のチップマルチプロセッサアーキテクチャ４００を示している。示すように、アーキテクチャは、ノード４０２においてメッシュ型構成に配列された６４個のプロセッサ（Ｐ０．．．Ｐ６３）を含む。メッシュ内の隣接ノード４０２におけるプロセッサは、接続４０４を介して互いに直接リンクされる。例えば、プロセッサＰ９はプロセッサＰ１、Ｐ８、Ｐ１０、及びＰ１７に接続される。メッシュアーキテクチャが示されているが、本発明の態様に従って他のアーキテクチャを使用することもできる。
【００５２】
メッシュの上部ノード（Ｐ０．．．Ｐ７）及び下部ノード（Ｐ５６．．．Ｐ６３）に沿ったプロセッサは、それぞれのメモリコントローラ４０６に直接リンクすることができる。この例に示すように、４つのプロセッサ４０２が各メモリコントローラ４０６に接続する。加えて、各メモリコントローラ４０６が物理メモリ４０８に結合する。残りのプロセッサは、１つ又は複数の介在するノード４０２を通じてメモリコントローラ４０６と通信することができる。
【００５３】
パケットルーティングは、上述したのと同じ方式で、アーキテクチャ４００において達成することができる。ターン規則に違反していない限り（すなわち、Ｉ（Ａ）＜Ｉ（Ｂ）＞Ｉ（Ｃ）のとき、又はＩ（Ａ）＞Ｉ（Ｂ）＜Ｉ（Ｃ）のとき、ターンはない）、デッドロックは回避される。複数の仮想チャネルを有するチップマルチプロセッサアーキテクチャは、そうでない場合に許容できないターンも使用して、移行点をより大きな番号の（又はより小さな番号の）仮想チャネルにシグナリングすることができる。ここで、ターン規則は、上記と同様に、単調増加する仮想チャネル番号又は単調減少する仮想チャネル番号のいずれかを使用して違反することができる。
【００５４】
本明細書における本発明の態様は特定の実施形態を参照しながら説明されてきたが、これらの実施形態は、本発明の原理及び応用例を例示しているにすぎないことは理解されたい。それゆえ、添付の特許請求の範囲によって規定されるような本発明の趣旨及び範囲から逸脱することなく、その例示的な実施形態に対して数多くの変更を行うことができること、及び他の構成を考案できることを理解されたい。
【産業上の利用可能性】
【００５５】
本発明は、コンピュータネットワークにおける効率的なパケットルーティングを含むがそれに限定されない広範な産業利用可能性を享有する。
【図１】
0005623550.tif 000002
【図２Ａ】
0005623550.tif 000003
【図２Ｂ】
0005623550.tif 000004
【図３】
0005623550.tif 000005
【図４】
0005623550.tif 000006
【図５】
0005623550.tif 000007
【図６】
0005623550.tif 000008