(57)【特許請求の範囲】
【請求項１】
直接相互接続ネットワークにおいて送信元ノードから宛先ノードにパケットをルーティングするコンピュータ実装方法であって、
ネットワークトポロジーにおける全てのノードと、各ノードの全ての出力ポートとを発見するステップと、
前記ネットワークトポロジーにおける前記発見されたノード及び出力ポートを最短経路のルーティング計算に含めるために、前記ノード及びポートをトポロジーデータベースに含めるステップと、
前記トポロジーデータベースに含まれている前記ノード及び出力ポートに基づいて、前記ネットワークトポロジーにおける各ノードの全ての出力ポートから他の全てのノードへの前記最短経路を計算するステップと、
各ノードにおいて、前記ネットワークトポロジーにおける前記各ノードの全ての出力ポートから他の全てのノードへの最短経路を含む送信元ルーティングデータベースを生成するステップと、
前記送信元ノードにおいてパケットを受け取るステップと、
前記受け取ったパケットの各々が、その後に前記送信元ノードの前記出力ポートにおいてフリットに分割されて前記送信元ノードの前記出力ポートから前記宛先ノードまでの前記最短経路に沿って分散され、この結果、前記パケットが前記ネットワークトポロジーにおける別ルートに沿って分散されるように、前記受け取ったパケットを、前記送信元ノードの前記出力ポートにラウンドロビン方式又は重み付きラウンドロビン方式で送信するステップと、
前記宛先ノードにおいて、前記パケットを該パケットの元々の形態及び順序に従うように再構築して順序変更するステップと、
を含むことを特徴とするコンピュータ実装方法。
【請求項２】
前記フリットは、ワームホール切り替えを用いて前記宛先ノードに転送される、
請求項１に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〔関連出願との相互参照〕
本出願は、２０１４年８月２９日に出願された「コンピュータネットワークにおける直接相互接続スイッチ配線及び成長の管理方法及び装置（Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｏ  Ｍａｎａｇｅ  ｔｈｅ  Ｄｉｒｅｃｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｓｗｉｔｃｈ  Ｗｉｒｉｎｇ  ａｎｄ  Ｇｒｏｗｔｈ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋｓ）」という名称のカナダ国特許出願公開第２０１４／０００６５２号に関連し、この文献の開示は、引用により本明細書に組み入れられる。
【０００２】
本発明は、データセンタとクラウドデータセンタサーバとを相互接続するコンピュータネットワークに関する。具体的には、本発明は、「ドラゴンフライ（ｄｒａｇｏｎｆｌｙ）」配線構造などの、トーラス又は高基数トポロジーに実装された直接相互接続ネットワークにおけるパケットルーティング方法に関する。
【背景技術】
【０００３】
データセンタ（ＤＣ）という用語は、一般に膨大な量の構造化ケーブルによって全てが接続された（多くの場合、設備を収容するラックに収容された）大規模コンピュータシステム及び関連するコンポーネントを収容するために使用される施設を意味する。クラウドデータセンタ（ＣＤＣ）という用語は、一般にエンティティのデータを同様に記憶する他社運用型施設を意味する。
【０００４】
ネットワークスイッチは、ネットワークデバイスを通信／処理の目的でリンクするコンピュータネットワーク装置である。換言すれば、スイッチは、スイッチに接続されているいずれかのデバイスからメッセージを受け取り、メッセージの中継先である特定のデバイスにメッセージを送信できる電気通信デバイスである。ネットワークスイッチは、一般にデータの処理及びルーティングを行うマルチポートネットワークブリッジとも呼ばれる。ここで言うポートは、スイッチと、スイッチが取り付けられたコンピュータ／サーバ／ＣＰＵとの間のインターフェイス（ケーブル又はプラグの差し込み口）を意味する。
【０００５】
今日、ＤＣ及びＣＤＣは、一般にレイヤ２スイッチの組を用いてデータセンタネットワーキングを実装している。レイヤ２スイッチは、同じローカルエリアネットワーク上のノード（例えば、サーバ）間、又はワイドエリアネットワーク内の隣接するノード間でデータを転送するプロトコル層であるレイヤ２というデータリンク層においてデータの処理及びルーティングを行う。一方で、非常に多くの（数千もの）ポートを含む超広集約帯域幅（数百ＴＢ）を搬送することができ、最低限の構造及び場所しか必要とせず（すなわち、カードラックを含む数多くのキャビネットを収容するための大部屋の必要性を最小限に抑え）、容易に拡張することができ、消費電力の最小化を支援することができる大容量コンピュータネットワークをいかにして構築するかが解決すべき主な課題である。
【０００６】
従来のネットワークトポロジーの実装は、図１に示すような階層的ツリー構造で編成された完全に独立したスイッチに基づく。コアスイッチ２は、スイッチィング容量が非常に大きな超高速の少数ポートである。第２層は、多くのポートを含む中容量スイッチである集約スイッチ４を用いて実装され、第３層は、低速でポート数が多く（４０／４８）低容量のエッジスイッチ６を用いて実装される。通常、エッジスイッチはレイヤ２であり、集約ポートはレイヤ２及び／又はレイヤ３であり、一般にコアスイッチはレイヤ３である。この実装は、あらゆるサーバ８に、図示の例では最大６ホップリンク（コアスイッチ２までの３ホップと、宛先サーバ８までの３つの下りホップ）でのいずれかのサーバ接続性を提供する。また、このような階層構造は、通常、冗長信頼性のために二重化される。例えば、図１を参照すると、二重化されていなければ、右端のエッジスイッチ６が故障した場合、右端のサーバ８との接続性が存在しなくなる。コアスイッチ２が故障すると、データセンタ全体の接続性障害が生じるので、少なくともコアスイッチ２は二重化される。明らかな理由により、この方法には、将来的なＣＤＣの課題に対処する上で大きな制限がある。例えば、各スイッチが完全に自己完結型であることにより、複雑性、広い床面積利用、ヒューマンエラーが生じやすい複雑なケーブル配線及び手動スイッチの構成／プロビジョニング、並びにエネルギーコストの増加が加わる。
【０００７】
一方で、データセンタにおけるスイッチングの拡張性、信頼性、容量及び遅延を改善する多くの試みが行われてきた。例えば、統合制御プレーン（例えば、Ｊｕｎｉｐｅｒ  Ｎｅｔｗｏｒｋｓ社製のＱＦａｂｒｉｃシステムスイッチ、例えば、ｈｔｔｐ：／／ｗｗｗ．ｊｕｎｉｐｅｒ．ｎｅｔ／ｕｓ／ｅｎ／ｐｒｏｄｕｃｔｓ−ｓｅｒｖｉｃｅｓ／ｓｗｉｔｃｈｉｎｇ／ｑｆａｂｒｉｃ−ｓｙｓｔｅｍ／を参照）を用いてさらに複雑なスイッチング解決策を実装する努力が行われてきたが、このようなシステムは、依然として従来の階層アーキテクチャを使用し、これを維持するものである。また、システムユーザの数、並びに記憶し、アクセスし、処理すべきデータ数の急激な増加を考えると、コンピュータネットワークシステムの性能要件を決定する際には、処理能力が最も重要な要素となってきている。サーバ性能は絶えず改善されているが、１つのサーバでは、このニーズを満たすほど十分に強力ではない。このことが、並列処理の使用が最重要になってきた理由である。この結果、大部分がｎｏｒｔｈ−ｓｏｕｔｈトラフィックフローであったものが、現在では、最大８０％もの多くの事例において主にｅａｓｔ−ｗｅｓｔトラフィックフローになってきている。このトラフィックフローの変化にも関わらず、ネットワークアーキテクチャは、このモデルにとって最適となるように進化していない。従って、並列処理通信中のＣＰＵ間の相互作用速度を決定するのは、依然として（コンピュータノード（サーバ）を相互接続する）通信ネットワークのトポロジーである。
【０００８】
ｅａｓｔ−ｗｅｓｔトラフィック通信を増加させるニーズは、新しいフラットなネットワークアーキテクチャ、例えばトロイダル／トーラスネットワークの形成をもたらした。トーラス相互接続システムは、並列コンピュータシステムにおいてネットワークノード（サーバ）をメッシュ状に接続するネットワークトポロジーである。トーラストポロジは、ノードを２次元、３次元又はそれよりも多くの（Ｎ）次元で配置することができ、この配置では、プロセッサ／サーバが最も近い隣接プロセッサ／サーバに接続され、アレイの反対端のプロセッサ／サーバ同士が接続されたアレイとして視覚化することができる。このように、Ｎ次元のトーラス構成では、各ノードが２Ｎ個の接続を有する（図２に、３Ｄトーラス相互接続の例を示す）。トーラストポロジにおける各ノードは、短いケーブルを介して隣接ノードに接続されているので、並列処理中のネットワーク遅延が少ない。実際に、トーラストポロジでは、あらゆるノード（サーバ）に最小のホップ数でアクセスすることができる。例えば、３×３×３×４の構造（１０８ノード）を実装する４次元トーラスでは、ａｎｙ−ｔｏ−ａｎｙ接続を提供するために必要なホップ数は平均２．５ホップである。図４に示す６×６の２−Ｄトーラスの例に、角のノード１．６から他の全３５個のノードに到達するのに必要な最小ホップ数を示している。図示のように、ノード１．６からいずれかの宛先に到達するのに必要なホップ数は、３ホップ（１０ノード）を頂部とし、一般に５ホップ（４ノード）及び１ホップ（４ノード）をそれぞれ底部とする釣鐘曲線としてプロットすることができる。
【０００９】
残念ながら、大規模トーラスネットワークの実装は、大規模実装の構築に何年も掛かり、ケーブル配線が複雑であり（各ノードにつき２Ｎ個の接続）、拡張が必要な場合に変更コストが掛かり面倒となり得るので、ＤＣ又はＣＤＣにおける商用展開には実用的でなかった。しかしながら、処理能力のニーズが商業上の欠点を上回る場合には、スーパーコンピュータにおけるトーラストポロジの実装が非常に功を奏してきた。この点、ＩＢＭ社のＢｌｕｅ  Ｇｅｎｅスーパーコンピュータは、６４個のキャビネットが６５，５３６個のノード（１３１，０７２個のＣＰＵ）を収容して数ペタフロップの処理能力を提供する３−Ｄトーラス相互接続ネットワークの例であり（図３の例示を参照）、富士通（Ｆｕｊｉｔｓｕ）社のＰＲＩＭＥＨＰＣ  ＦＸ１０スーパーコンピュータシステムは、９８，３０４個のノードを含む１，０２４個のラックに収容された６−Ｄトーラス相互接続の例である。上記の例は、トーラストポロジに対応するものであるが、他のフラットネットワークトポロジにも等しく適用可能である。
【００１０】
本発明は、トーラス又は高基数ネットワーク構造におけるノードからノードへのデータパケットのトラバース及びルーティングという重要な問題に、より具体的に対処するものである。この点、ネットワークにおいてデータパケットが送信元から宛先に到達するために取る実際の経路を決定するのはルーティングである。本明細書における遅延とは、ネットワークにおいてパケットが宛先に到達するのに掛かる時間のことを意味し、一般にヘッダが送信元ノードの入力に到着した時点から宛先ノードの入力に到着した時点までが測定される。ホップ数は、送信元と宛先との間でトラバースしたリンク数又はノード数を意味し、遅延を決定するための近似値を表す。スループットは、ネットワークが入力ポート／ノード毎に受け入れる、ビット／秒の単位で測定したデータ率である。
【００１１】
ルーティングによってトラフィックがノード間で均等に分散（負荷バランシング）した結果、ホットスポットの発達（使用量／需要量が所望の又は許容できる閾値を超える経路又はノード領域）が避けられ、（２又は３以上のノードが同じ配線又は経路を介してメッセージ又はパケットを同時に送信しようと試みる際の）競合が最小化され、これによってネットワーク遅延及びスループットが改善された時に有用な目標が達成される。従って、選択されたルートは、ノードからノードへのホップ数に影響し、これによってルートが最適でない時にはエネルギー消費量に影響する可能性もある。
【００１２】
トポロジーは、平均最小ホップ数及びノード間距離に影響するので、ネットワークが動作するトポロジーは、明らかに遅延にも影響する。例えば、トーラスでは、パケットが宛先に到達するために取ることができる経路が複数存在する（すなわち、トーラスにおいては、「経路多様性」が存在する）だけでなく、いずれかの送信元と宛先との対間の最短距離経路も複数存在する。一例として、図５に、２−ＤトーラスメッシュにおいてパケットがノードＳ１１からノードＤ１２に到達するために取ることができる３つの最短ルート（３ホップ）との例と、それよりも長い５ホップの第４のルートとを示す。ルーティングを通じて行われる経路の消費は、トポロジーのみに基づいて静的に行われ、送信元ルーティング（ソースルーティング）は、ホップ毎にパケット送信元と宛先との対に基づいて動的に行われる。
【００１３】
経路の多様性を利用するルーティング法は、ネットワークにおける耐障害性及び負荷バランシングが良好である。しかしながら、ルーティング法は、必ずしもこのような目標を達成するわけではなく、一般に、決定論的ルーティング、無情報（ｏｂｌｉｖｉｏｕｓ）ルーティング及び適応的ルーティングという３つのクラスに分割することができる。決定論的ルーティングは、所与のノード対間の（単複の）ルートが、現在のネットワーク状態に関わらず（すなわち、ネットワークトラフィックに関わらず）予め決定されることを意味する。決定論的ルーティングの例には、ノードＡからノードＢへの全てのメッセージが常に同じ経路をトラバースするＤｉｍｅｎｓｉｏｎ  Ｏｒｄｅｒルーティング（ＤＯＲ）がある。具体的には、メッセージが次元毎にトラバース（Ｘ−Ｙルーティング）することにより、１つの次元内の宛先に一致する縦座標に到達してから次の次元に切り替わる。一例として、図６を用いてＤＯＲを示すことができ、この例では、パケットが、最初にノード１からノード５を通ってノード９に至るまで必要な限り第１の次元（Ｘ）に沿ってトラバースし、その後、第２の次元（Ｙ）に沿って宛先ノード１０に至る。このようなルーティングは、一般に実装が容易であってデッドロックが存在しないが（デッドロックとは、送信元から宛先まで経路に沿って無限サイクルが存在する状況を意味する）、経路の多様性を利用しておらず、従って負荷バランシングに乏しい。
【００１４】
「無情報」なルーティングアルゴリズムは、ルーティング決定が、現在のネットワーク状態に関わらずランダムに行われるものである（決定論的ルーティングは、無情報ルーティングの一部である）。このことは、無情報ルーティングの実装が用意になり得ることを意味するが、やはりトラフィック及びネットワーク環境に適合することができない。周知の無情報ルーティング方法の例は、（当業者に周知の）Ｖａｌｉａｎｔアルゴリズムである。この方法では、ノードＡからノードＢに送られるパケットが、最初にノードＡからランダム選択された（１ホップ離れた）中間ノードＸに送られ、その後にノードＸからノードＢに送られる。再び図６を参照すると、Ｖａｌｉａｎｔアルゴリズムは、送信元ノード１から宛先ノード１０までの中間ノードとしてノード２をランダムに選択することができ、すなわち、例えば経路１−２−３−７−１１−１０をルーティング目的で使用することができる。このアルゴリズムは、一般にあらゆるトラフィックパターンをランダム化するものであり、全てのパターンが均等にランダムであるように見えるので、ネットワーク負荷のバランスは適正である。実際に、Ｖａｌｉａｎｔアルゴリズムは、一般にほとんど全てのトポロジーに基づくあらゆるトラフィックパターンについて負荷をバランシングできると考えられてきた。しかしながら、１つの問題点は、一般にＶａｌｉａｎｔによるルートは非最短であり（最短ルートとは、送信元と宛先との間の必要なホップ数が最も少ない経路のことである）、この結果、しばしばホップ数が大幅に増加し、これによってネットワーク遅延がさらに増し、エネルギー消費量が増加する可能性もある点である。しかしながら、輻輳が最小限に抑えられたネットワークなどの例外もある。非最短ルーティングでは、追加のノードをトラバースする際の遅延、及び恐らくは消費電力が大幅に増加する恐れがある一方で、輻輳を経験するネットワークでは、非最短ルーティングが実際にノード又はホットスポットを避ける役に立ち、これによって実際に遅延が短くなる場合もある。
【００１５】
しかしながら、最短ルートが望ましい場合又は必要な場合、Ｖａｌｉａｎｔアルゴリズムは、最小四分円内に中間モードが存在しなければならない旨を規定することにより、アルゴリズムのランダムな決定を最短ルート／最短経路に制限するように修正することもできる。一例として、図６を参照すると、（宛先ノード１０を有する）ノード１の最小四分円はノード２、５及び０を含み、通常のホップ数は３になる。Ｖａｌｉａｎｔアルゴリズムは、ホットスポットが発達する可能性を下げるいくつかのレベルの経路選択ランダム化を提供する。しかしながら、Ｖａｌｉａｎｔルーティングでは、デッドロックが存在しないのはＤＯＲルーティングと併用した場合のみであり、Ｖａｌｉａｎｔルーティング自体は負荷バランシング及びホットスポット回避と共に成立しないという、このような効率に影響するさらなる難しい問題点も存在する。
【００１６】
適応的ルーティングアルゴリズムは、ルーティング決定がネットワーク又はネットワークトラフィックの状態に基づくアルゴリズムである。これらのアルゴリズムは、一般にフロー制御機構を伴い、この点において、多くの場合バッファ占有率が使用される。適応的ルーティングは、（コストパフォーマンスの良い）グローバルノード情報を使用することも、或いは、例えばネットワーク輻輳を測るためのキュー占有率を含む、ローカルノードのみからの情報を使用することもできる。ローカルノードのみからの情報を使用する問題点は、選択が最適以下になることもあるという点である。適応的ルーティングは、最短経路に制限することも、或いはライブロック（すなわち、パケット移動が宛先まで進まないデッドロックに類似する状況であり、しばしばリソースの枯渇を招く）の恐れもある非最短経路を採用することによって完全に適応的とする（すなわち、最短経路を取ることに制限されない）こともできる。この問題は、パケット毎に一定数の誤ルートを可能にし、何度もルートを誤ったパケットに高優先度を与えることによって克服できることもある。適応的ルーティングの別の問題点は、パケットが同じ順序で宛先に到着する必要があり、そうでなければ、パケット順序変更機構を実装する必要があるという、データパケットの順序が維持される問題を引き起こし得る点である。
【００１７】
最後に、重要なこととして、送信元テーブル又はローカルテーブルによってルーティングを実装できる点に言及する。送信元テーブルを使用すると、送信元においてルート全体が規定され、このルートをパケットヘッダに埋め込むことができる。従って、各ノードにおいてホップ毎にルートを固定又は決定する必要がないので、遅延が最短になる。送信元テーブルは、故障を管理できるように、またルートがランダムに選択（すなわち、無情報ルーティング）された時には負荷バランシングを高めることができるように、宛先毎に複数のルートを規定することもできる。一方、ローカルノードテーブルを使用すると、採用されるルーティングテーブルが小型になる。しかしながら、パケットが進む次のステップが各ノードにおいて決定され、これによってホップ毎の遅延が加わる。
【発明の概要】
【発明が解決しようとする課題】
【００１８】
本発明は、先行技術の欠点を克服し、トーラス又は高基数ネットワークトポロジーにおける周知のパケットルーティング方法を改善しようとするものである。
【課題を解決するための手段】
【００１９】
本発明は、１つの態様において、低遅延、高スループット、並びにホットスポット及びデッドロックの回避をもたらすようにトーラスメッシュ又は高基数トポロジーにわたってデータパケットをルーティングする新規方法を提供する。
【００２０】
本発明は、さらに別の態様において、トーラス又は高基数構造に、トラフィックの非相関化（ランダム化）、高効率な帯域幅割り当て、負荷バランシング及びトラフィックエンジニアリングを実装する方法を提供する。
【００２１】
本発明は、１つの実施形態において、直接相互接続ネットワークにおいて送信元ノードから宛先ノードにパケットをルーティングするコンピュータ実装方法であって、ネットワークトポロジーにおける全てのノードと、各ノードの全ての出力ポートとを発見するステップと、ネットワークトポロジーにおける発見されたノード及び出力ポートを最短経路のルーティング計算に含めるために、前記ノード及びポートをトポロジーデータベースに含めるステップと、トポロジーデータベースに含まれているノード及び出力ポートに基づいて、ネットワークトポロジーにおける各ノードの全ての出力ポートから他の全てのノードへの最短経路を計算するステップと、各ノードにおいて、ネットワークトポロジーにおける前記各ノードの全ての出力ポートから他の全てのノードへの最短経路を含む送信元ルーティングデータベースを生成するステップと、送信元ノードにおいてパケットを受け取るステップと、前記受け取ったパケットの各々が、その後に送信元ノードの出力ポートにおいてフリットに分割されて送信元ノードの出力ポートから宛先ノードまでの最短経路に沿って分散され、この結果、パケットがネットワークトポロジーにおける別ルートに沿って分散されるように、受け取ったパケットを、送信元ノードの出力ポートにラウンドロビン方式又は重み付きラウンドロビン方式で送信するステップと、宛先ノードにおいて、パケットをその元々の形態及び順序に従うように再構築して順序変更するステップとを含むコンピュータ実装方法を提供する。
【００２２】
本発明は、さらなる実施形態において、ワームホール切り替えを用いてフリットを宛先ノードに転送するパケットルーティング方法を提供する。
【００２３】
以下、添付図面を参照しながら本発明の実施形態を一例として説明する。
【図面の簡単な説明】
【００２４】
【図１】従来のデータセンタネットワークの実装の高水準図である。
【図２】８つのノードを有する３次元トーラス相互接続の図である。
【図３】トーラスアーキテクチャを用いたＩＭＢ社のＢｌｕｅ  Ｇｅｎｅ処理ユニットの階層を示す図である。
【図４】角のノード（１．６）から開始して３５個のノードのいずれかに到達するために必要な最小ホップ数を示す、６×６の２−Ｄ折り畳みトーラスにおける３６個のノードの高水準図である。
【図５】ノードＳから開始してノードＳの全てのポート（ｘ＋、ｘ−、ｙ＋、ｙ−）上でノードＤに至る複数のルートを示す４×４の２−Ｄトーラス実装の図である。
【図６】様々なルーティングアルゴリズムがどのようにパケットをノードからノードにルーティングできるかを示すのに役立つ単一ネットワークトポロジーの図である。
【図７】本発明のシステムによる、全てのポートを有する高速ネットワークインターフェイスカードの高水準図である。
【図８】本発明のシステムによる、主要機能ブロックを示すホストネットワークインターフェイス（ＨＮＩ）の高水準図である。
【図９】トーラスメッシュを横切るパケット転送を実装するために必要なパケット分割の高水準図である。
【図１０】３６ノードの２−Ｄトーラス構造においてノードＳ（２．４）上の各ポートから開始してノードＤ（５．２）上の各ポートに至るルート及びホップ数を示す図である。
【図１１】本発明による、ソフトウェアコンポーネントであるＴＤ、ＳＲ、ＷＳ、ＦＣを示す高水準図である。
【図１２】本発明によるパケット分割処理のフローチャートである。
【図１３】パケット分割を通じたフリット生成を実装する疑似コードを示す図である。
【図１４】本発明による、各ポートからの送信元ルーティングを準備する処理ステップのフローチャートである。
【図１５】本発明による、経路計算を実装する疑似コードを示す図である。
【図１６】本発明による、経路計算によって生成される送信元ルーティングテーブルフォーマットを示す図である。
【図１７】本発明による、各ポート上の「フリット」転送処理のフローチャートである。
【図１８】本発明による、各ポート上で「フリット」を転送するワームホール切り替え処理を示す図である。
【図１９】本発明による、図１７のフローチャートに示すフリット転送を実装する疑似コードを示す図である。
【図２０】トポロジー更新のためのトポロジー発見処理を引き起こすノード又はリンクを発見するフローチャートである。
【図２１】トポロジーデータベース更新を示すフローチャートである。
【図２２】ノード及び／又はリンク障害検出及び回復処理、並びにトポロジー更新処理のフローチャートである。
【図２３】本発明による、リンク及び／又はノード障害検出を実装する疑似コードを示す図である。
【発明を実施するための形態】
【００２５】
本発明は、トーラスメッシュ又は高基数配線を利用して、データセンタアプリケーションの直接相互接続切り替えを実装するものである。具体的には、本発明は、２０１４年８月２９日に出願された「コンピュータネットワークにおける直接相互接続スイッチ配線及び成長の管理方法及び装置（Ｍｅｔｈｏｄ  ａｎｄ  Ａｐｐａｒａｔｕｓ  ｔｏ  Ｍａｎａｇｅ  ｔｈｅ  Ｄｉｒｅｃｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｓｗｉｔｃｈ  Ｗｉｒｉｎｇ  ａｎｄ  Ｇｒｏｗｔｈ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｎｅｔｗｏｒｋｓ）」という名称の関連するカナダ国特許出願公開第２０１４／０００６５２号に記載されているトーラスシステムとの使用が特に有用である。このようなアーキテクチャは、単一の切り替え領域内に数万台のサーバを有する高性能ネットワーク相互接続を提供することができる。
【００２６】
スイッチを制御するソフトウェアは、Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋモデルに従う。スイッチコントロールプレーン（スイッチＯＳ）は、独立サーバ上で動作するが、各ＰＣＩｅカード上で動作する分散処理と密接に相互作用することが好ましい。図１１を参照すると、主要ソフトウェアコンポーネントが、トポロジー発見（ＴＤ）、トポロジーにわたるパケットルーティング（ＳＲ）、ワームホール切り替え（ＷＳ）、フロー制御（ＦＣ）機構、並びにスイッチ状態モニタリング及びスイッチ管理を含む。ＴＤコンポーネントは、基本的にトーラスメッシュ内のノードの存在（又は不在）を発見することに関与し（及びこれによりノードの存在に基づいて考えられる経路の更新を可能にし）、ＳＲコンポーネントは、送信元ルーティング計算（送信元ノードの全てのポートからいずれかの宛先ノードへの利用可能な全ての経路）に関与し、ＷＳコンポーネントは、フリットヘッダに含まれる最短遅延の経路ベクトルに基づく、トーラスにわたるフリット操作（全てのノードにおけるカットスルーモデル）に関与し、ＦＣコンポーネントは、入力キューイング機構を通じてトラフィックを規制するためにトーラスリンクの利用及び送信元への制御メッセージに関与し、スイッチ状態モニタリングコンポーネントは、トラフィックバランシング、障害状況におけるトラフィックのルート変更、及びスイッチ成長のサポートに関与し、スイッチ管理コンポーネントは、全ての相互接続サーバ、外部との全ての相互接続Ｉ／Ｏリンク及び接続性状態を含む、スイッチの完全なイメージを維持することに関与する。
【００２７】
本発明は、主に本発明の新規のトポロジー発見（ＴＤコンポーネント）及びルーティングプロトコル（ＳＲコンポーネント）に関し、主要機能は、カナダ国特許出願公開第２０１４／０００６５２号に開示されている新規のスイッチアーキテクチャにおける実装に特に有用である。トーラス構造を通じてデータパケットをルーティングする従来の実装では、トラフィックが宛先ノードにわたってランダムに分散されるという非明示的な想定を行っているが、実際の実装では、単一の送信元／単一の宛先において最大容量の連続パケットフローが生じた場合に、トーラスメッシュにわたるパケット転送能力を完全に無効にする容量を有するホットスポットの発達がトーラスにわたって伝搬することによって実際にスイッチ障害が示された。従って、本発明は、（いずれかの送信元から（相関性の高い）いずれかの宛先までの大量のフロー、又はランダムに分散した宛先へのトラフィック（典型的なインターネットトラフィック）に関わらず）あらゆるタイプのトラフィックの性能問題及びホットスポットの発達に対処するために、トーラス又は高基数ネットワークなどの直接相互接続ネットワークトポロジーのためのルーティングの最適化及び実装についてさらに具体的に言及する。上述したようなトーラス内でパケットをルーティングする既知の方法とは対照的に、本発明は、トポロジー内の全てのノードを発見して更新する方法、並びに各ノードにおける全ての出力ポート（例えば、ｘ＋、ｘ−、ｙ＋、ｙ−、ｚ＋、ｚ−、ｗ＋及びｗ−）上の全ての宛先ノードへの（単複の）最短経路を計算することより、パケットを各出力ポートからの経路に沿ってラウンドロビン方式又は重み付きラウンドロビン方式で（すなわち、複数の別の経路を奨励して）分散させ、帯域幅及びトラフィック分配を増加させてホットスポットを回避するパケットルーティング方法について説明する。フロー制御（ＦＣ）機構を用いて、パケットルーティングのための出力ポートの選択を、単純なラウンドロビンによる連続的な送信元ノード出力ポート選択（すなわち、最初にポートｘ＋、次にポートｘ−、その後にｙ＋、ｙ−、ｚ＋、ｚ−、ｗ＋及びｗ−）から、ＦＣによってビジーとして識別されたリンクをスキップし、或いはこれらのポート上のトラフィックを最大リンク容量の低率（例えば、１０％）に減少させる重み付きラウンドロビン方式に適応的に変更する。
【００２８】
宛先ノードでは、データパケット順序変更が実装される。このような方法は、カナダ国特許出願公開第２０１４／０００６５２号に開示され本明細書でさらに説明する新規のノード（サーバ）発見方法を特に活用することができる。従って、本発明は、（いずれかの送信元から（相関性の高い）いずれかの宛先までの大量のフロー、又はランダムに分散した宛先へのトラフィック（典型的なインターネットトラフィック）に関わらず）あらゆるタイプのトラフィックの性能問題及びホットスポットの発達に対処するために、トーラス又は高基数ネットワークなどの直接相互接続ネットワークトポロジーのパケットルーティング最適化の問題に対処する。
【００２９】
まず第１に、図７に、外部にアクセスするためのＩ／Ｏポート１３（Ｎ−Ｓインターフェイス）、４Ｄトーラス相互接続ポート１４、コンピュータサーバにアクセスするためのＰＣＩｅポート１５及び制御１９という全てのポートを有する高速ネットワークインターフェイスカード１０の高水準図を示す。当業者であれば、本発明は、これより少ない又は多くのポートを有するＨＮＩカードと協働することもでき、他のトーラス又は（例えば「ドラゴンフライ」などの）高基数トポロジーに関連することもできると理解するであろう。
【００３０】
図８には、本発明のシステムによる、ＲＡＭ３７及びＲＯＭ３８を含むプロセッサ３１と、切り替えブロック３２と、物理インターフェイス装置３６と、トーラス相互接続ポート１４と、Ｉ／Ｏポート１３と、ＰＣＩｅポート１５とを含む主要機能ブロックを有するＨＮＩカード１０の高水準図を示す。この実施形態の物理的実装は、マルチコアプロセッサに付属のメモリとＰＨＹ装置とを取り付けてトーラス相互接続を実装したものに基づく。切り替え機能は、プロセッサのハードウェアアクセラレーション支援機能を用いて複数のキュー操作をサポートするソフトウェアで実装される。当業者であれば、本発明は、物理的実装が異なる場合、すなわち切り替え機能アクセラレーションをＦＰＧＡ又はＡＳＩＣで実装した場合でも機能し、或いは切り替え機能に使用するカードと同じカード上にプロセッサが存在する必要はないと理解するであろう。
【００３１】
図１０は、本発明によるパケットルーティングの説明において使用する単純な２Ｄトーラス配線図である。図示のように、この構造は、全体を通じて各接続の長さが等しい折り畳んだ２Ｄトーラスである。この図における各ノードは、サーバに収容された（上述した）ＰＣＩｅスイッチカードを介して相互接続されたサーバを表す。この図には、送信元ノードＳにおいて計算される、送信元ノードＳ（２．４）のポートから宛先ノードＤ（５．２）への、様々な次元（ｘ＋、ｘ−、ｙ＋、ｙ−）において開始する（共通のリンク又はノードが存在しない）最短最大の非同一経路を示している。この点、図１０には、５ホップという最小ホップ数を有する３つの計算された経路及びルーティングベクトル（（Ｓ）２．４から（ｘ＋、ｘ＋、ｘ＋、ｙ−、ｙ−）、（Ｓ）２．４から（ｙ−、ｙ−、ｘ＋、ｘ＋、ｘ＋）、及び（Ｓ）２．４から（ｘ−、ｘ−、ｙ−、ｙ−、ｘ−））を示しているが、７ホップという非最小ホップ数を有する別の経路（（Ｓ）２．４から（ｙ＋、ｙ＋、ｙ＋、ｘ＋、ｘ＋、ｘ＋、ｙ＋）も計算される。送信元ＳとＤノードとの間の大量のトラフィックを想定すると、パケット／フリットは、ラウンドロビン又は重み付きラウンドロビン方式で各送信元ノードＳの出力ポートから開始して各出力ポートからの経路に沿って宛先ノードに向かう最短経路上でノードＤに送信され、これによって一方では複数の経路を用いて帯域幅を増加させ、トラフィックを分散させてホットスポットの発達を避ける（送信元ノードにおいて出力ポートの重み付きラウンドロビンを選択すると、いくつかの経路に沿ったパケット数が増加する）。各ノードでは、第１のホップ以外に、リンク又はノード障害の際にルートが必要に応じてトラフィック輻輳及びホットスポットを克服するのに役立つ別の独立経路を提供するように、第２の別ルートを計算して記憶することもできる。この方法は、負荷バランシングの目的でトーラス又は高基数ネットワークにわたってトラフィックを分散するが、パケット順序変更を導入することもできる。例えば、ｙ＋から開始する経路（図１０）は、最短経路（５ホップ）よりも２ホップ長いので、この経路上で送信される全てのパケットはさらに遅れて到着し、これによってパケット順序変更問題が生じることがある。従って、本発明によれば、宛先ノードにおいてパケットを順序変更する必要がある。このことは、当業者の技術範囲内である。
【００３２】
パケット分割の高水準図を示す図９を参照すると、重要なこととして、直接相互接続トーラス又は高基数ネットワークをトラバースするパケットは、ルーティング中にさらに小さなパケット（フリット）に分割される。パケットネットワークにおいてよく見られる問題である「ヘッドオブラインブロッキング」を、共有リソース（リンク及びバッファ）を用いて回避するために、トーラスメッシュ全体にわたってパケット分割が必要とされる。フリットのサイズは、オーバーヘッドの負担を最小化するようにトラフィックタイプによって決まり、実際の値の範囲は６４〜５１２バイトである。重要なこととして、本発明は、とりわけＥｔｈｅｒｎｅｔ（登録商標）パケット、Ｉｎｆｉｎｉｂａｎｄパケット、ＰＣＩｅストリーム又はＮＶＭｅトランザクションに対処することができる。トーラス構造を横切るフリットは、トラフィックを透過的に搬送する。外部インターフェイスＩ／Ｏポート１３は、トラフィックのタイプに固有のものであってユーザトラフィックを終了させ、トーラスを横切り「フリット」を介して宛先ＰＣＩｅポート１５にデータを透過的に転送する。重要なこととして、本発明は、（Ｅｔｈｅｒｎｅｔフリットを介して）トーラスを横切るＥｔｈｅｒｎｅｔパケットに対処することができる。本明細書における主な利点は、Ｅｔｈｅｒｎｅｔパケットのためのフリットがパケット描写機構を有しているので、フリットのサイズを変えられる点である。従って、フリットサイズは、６４バイト（最小Ｅｔｈｅｒｎｅｔパケットサイズ）〜５１２バイト（ペイロード及びヘッダ）まで可変である。パケットが５１２バイトよりも大きい場合、システムは、元のパケットを５１２バイトのフリット、すなわちヘッダフリット、ボディフリット及びテイルフリットに分割する。
【００３３】
図１２は、パケット分割方法を示すフローチャートである。ＨＮＩプロセッサは、ホスト（すなわち、ＰＣＩｅインターフェイス）から新たなパケットを受け取ると（ステップ４０２）、ヘッダを抽出してパケットの宛先（ステップ４０４）及びルーティング経路を分析する。パケットは、この段階で分割ループに入る。バイトカウンタが初期化され（ステップ４１２）、パケットエンド（Ｅｎｄ  ｏｆ  Ｐａｃｋｅｔ：ＥＯＰ）アナライザがＥＯＰを検出し（ステップ４０５）、カウンタが４７６バイト以下である（すなわち、ペイロードが４７６バイト以下である）場合、パケットは、フリット生成器（ステップ４０７）、ヘッダ生成器（ステップ４０８）及び優先度決定ブロック（ステップ４０９）に送られる。その後、トーラスメッシュを横切って次のホップ（ネクストホップ）に送信するためにフリットを割り当て出口キューに挿入し（ステップ４１０）、新たなパケットが受け取られたかどうかを確認する（４０２）。各個々のフリット後にバイトカウンタを増分し（ステップ４１１）、フリット生成器にパケットフラグメントを送信し（ステップ４０７）、処理は、パケット内の最後のフリットに到達して送信するまで上述のステップをたどる。重要な見解として、トーラスリンク上のフリットは５１２バイト（４７６バイトのペイロード及び３６バイトのヘッダ）であり、その後に８「アイドル」バイトが続くことが好ましい。パケットが４７６バイトに届かない場合、フリット（通常はテイルフリット）は５１２バイトよりも小さく、「アイドル」バイトを用いてパケット描写が行われる。図１３に、パケット分割を通じたフリット生成を実装する疑似コードを示す。宛先では、トーラスヘッダを除去し、「Ｂｙｔｅ  ｃｎｔ」を用いて元々のパケット内のフリットをオフセットすることにより、フリットをパケットに組み立てる。当業者であれば、宛先ノードのために送信元毎のパケットキューを実装し、順序付けしたパケットフラグメントリストを作成し、パケットが完全に組み立てられたら元々の順序で放出すると認識するであろう。図１４は、本発明によるルート計算を示すフローチャートである。本発明は、送信元ノードからいずれかの宛先ノードへの、送信元ノードの各出力ポート上で最大限に非同一である（共通のリンク及びノードが存在しない）全ての経路（送信元ルーティング）を計算するために図１５の疑似コードも提供する。（アクティブなサーバ／ノード及びそのアクティブなポートを発見する）トポロジー更新機能４１２は、更新が検出されると直ぐに（すなわち、ノードの追加／削除時、又はノードに関連する重大な問題／故障の存在時には常に）ルート／経路計算を開始する（４１４）。本発明によれば、ステップ４１９（トポロジーリスト内で見つかった第１の宛先ノード）、その後にステップ４２０及び４２１（トポロジーリスト内の全ての宛先ノードを検索）に示すように、ダイクストラ法（Ｄｉｊｋｓｔｒａ  ａｌｇｏｒｉｔｈｍ）を用いてトポロジーから現在のノードと各宛先ノードとの間の最短経路が計算される（ステップ４１５）。ステップ４２２において、ステップ４１７によって影響を受ける全ての経路コストを初期値にリセットする。計算された送信元から宛先���の最短経路は、送信元ルーティングデータベースに記憶され、この経路は、（非同一経路を提供するために）記憶された経路に属する全てのリンクのコストを無限に増加させることによってさらなる最短経路計算から削除され（４１７）、これには、トポロジーデータベースからノード及びリンクを削除して、非同一経路選択の目的で再利用しないように強制するという実用的効果がある。この処理は、全ての出力ポートが使用され、送信元ノードと宛先ノードとの間の考えられる全ての経路がデータベースに記憶されるまで継続する。次に、これらの結果が、最初に最短経路からルーティングを開始すべき各ノードのルーティングベクトルとして出力ルーティングテーブルにまとめられる（４１８）。最短経路の計算自体は、ルーティングプロトコルの実装において使用される周知の方法であるダイクストラ法を用いて実装することができる。本明細書では、全ての出力ポートにおいて最短経路が決定されて適宜使用される点が特に新規な点である。
【００３４】
図１６に、ルーティング出力テーブルのフォーマットを示す。各ルートには、特定の経路のホップ数を表す数字、及びホップ毎に選択すべき出力ポートのリスト／ベクトルが付与される。具体的には、図１６には、８つのポート（ｘ＋、ｘ−、ｙ＋、ｙ−、ｚ＋、ｚ−、ｗ＋及びｗ−）を有する４−Ｄトーラス（８×８×８×８）における、送信元ノード番号１０００から宛先ノード０への（ノード１０００及びノード０の使用は例示にすぎない）ルートを表す出力テーブルのスナップショット例を示している。なお、第１の８つのルートグループの８つのルートのグループ分けにおける最初の出力選択（すなわち、ｘ＋、ｙ＋、ｚ＋、ｗ＋、ｘ−、ｙ−、ｚ−及びｗ−）は、例えば送信元ノードの各出力ポートに対応する。８つの経路は、完全に非同一であり、５ホップ、７ホップ又は９ホップという異なる長さを有する。最も重要な特徴は、トラフィックの分散及び予測可能な性能を可能にする、トーラス全体にわたる経路分散である。図１６の第２の８つの経路グループは、ルーティング経路の第２の代替例を表す。この方法では、多くの代替ルートを計算することができるが、距離（ホップ数）はますます長くなる。実用的な理由で、この方法は、必要に応じて８つの異なる経路である第１の選択肢のみを一般に記憶することができる。
【００３５】
図１７は、本発明による、パケット切り替えにおいて使用するステップを示すフローチャートである。新たなパケットが出力キューにプッシュされると、パケット転送状態機械は、トーラスを横切って転送を開始する。この点、対象の出力ポート「ｋ」（ポート１〜８、すなわち上述した出力ポート：ｘ＋、ｙ＋、ｚ＋、ｗ＋、ｘ−、ｙ−、ｚ−及びｗ−）を用いて、（図１８に示すように）ワームホールモデルに従ってフリットを転送し、図１７に示すように、パケットの最後（テイルフリット）に達するまで、ヘッドフリット及び後続のフリット増分（ボディフリット）をポートｋから同じ経路に沿って転送する。パケットの最後に達すると、カウンタｋを増分して次の出力ポートを参照し、このワームホール切り替えモデルを用いて、次のパケット識別子を有する（次の順番のパケットとして指定される）次のパケットをトーラス上でフリット毎に転送する。パケットの最後が検出されると、再びポート番号を増分し（すなわち、ｋ＝ｋ＋１）、次のパケットを転送して、以下同様に継続する。この実装では、特定の宛先への長いフローを非相関化してトーラスメッシュにおける「ホットスポット」の発達を避けるために、１つのノードからのパケットを、このノードの全ての出力ポート１４上でラウンドロビンモデルの形で分散させる。当業者であれば、この分散方法は、必要に応じて異なるタイプのトラフィック分散について性能を高めるように望む通りに修正できると理解するであろう。例えば、ラウンドロビンの代わりに、重み付きラウンドロビン法又はユーザが定めた他のいずれかの方法を用いることもできる。本発明の方法は、Ｖａｌｉａｎｔ無情報分散よりも良好に機能することが分かっており、結果が非常に安定して予測可能である。このことは、ネットワーク性能の観点から見て非常に重要である。図１９に、図１７のフローチャートに図示し説明したフリット転送を実装する疑似コードを示す。
【００３６】
図２０は、本発明によるトポロジー発見方法を示すフローチャートである。上述したように、トポロジー発見コンポーネント（ＴＤ）は、基本的にトーラスメッシュにおける、上述したルーティングの分散において使用できるノード（及びノードのポート）の存在（又は不在）を発見するために重要である。この点、ＴＤは、カナダ国特許出願公開第２０１４／０００６５２号に具体的に開示されているように、本発明の新規のネットワークを単純かつ効率的に拡張できるようにする。ＴＤは、「Ｈｅｌｌｏ」プロトコル及びデータベース交換プロトコルに基づく。具体的には、全てのノード及び全てのポートにおいて「Ｈｅｌｌｏ」メッセージが送受信される。メッセージが「Ｈｅｌｌｏ」として受け取られ、管理フレームワークによって「Ｈｅｌｌｏ」パケット内のノードＩＤが検証されると、ローカルノード情報が、隣接ノードへの新たなリンクの利用可能性を示すように更新される。一群のノード情報は、各ノードにおいて隣接ノードデータベース内に維持され、データベース交換プロトコルを通じて隣接ノードと同期される。各ノードは、その隣接ノードデータベースの変化を隣接ノードに送信し、これが段階的にトポロジー全体に伝搬する。特定のタイムアウト後、隣接ノードデータベースに変化が生じた場合、経路計算のために関数呼び出しが生成される。「Ｈｅｌｌｏ」メッセージの交換については、トポロジーの変化を検出するために、隣接ノードから隣接ノードへの交換が規定の時間間隔で永久に継続する。
【００３７】
図２１は、本発明による、トポロジー発見のためのＤＢ交換更新を示すフローチャートである。基本的に、この図は、全ての相互接続サーバ、入力／出力リンク及び接続性状態を含む各ノードのスイッチの完全なイメージを維持することに関与するＴＤコンポーネントに関する。
【００３８】
図２２は、本発明のシステムがノード／リンク障害検出をどのように発見するか、及び故障したノードを避けるルート変更処理を示すフローチャートである。リンクの障害が検出されると（６０２）、パススルーブロックは、障害のあるリンクに向かうトラフィックをＣＰＵ６０３にルート変更するようにプログラムされる。トラフィックの送信元は、障害のあるリンクを避けてトラフィックを送信するように通知される（６０４）。これにより、トポロジー更新イベントがトリガされる（６０５）。リンクの回復が検出されると（６０６）、パススルーブロックは、リンクの障害に起因してＣＰＵに向かうトラフィックを再び同じリンクにルート変更する（６０７）ようにプログラムされる。トラフィックの送信元は、リンクの障害前と同様にトラフィックを送信するように通知される（６０８）。これにより、トポロジー更新イベントがトリガされる（６０９）。リンク切断の場合にも同様の処理が行われる。図２３には、リンク／ノードの障害及び回復についての疑似コードを示す。
【００３９】
本発明の１つの実施形態は、新たなノードの挿入方法である。配線相互接続にノードを挿入するには、既存のノードを遮断（リンク切断）する。トーラス配線の遮断が検出されると（６０２）、トラフィックルート変更ＡＰＩが呼び出される（６０４）。リンクコストが無限大に設定されて、トポロジーが更新される（全てのスイッチノードについて最短（低コスト）経路を計算する）。これにより、パケットフローをいずれかの宛先に到達するように制御するために使用するルートが定められる。新たなノードの挿入によって隣接ノードの発見がトリガされる。管理ソフトウェアは、新たなノードＩＤをチェックし、設定されたデータベースと比較する。ノードが有効な場合、ソフトウェアは、トポロジー更新及びルート計算処理を開始する。管理データベースが新たなノードで更新され、ノード状態がアクティブに設定される。
【００４０】
本発明の特定の実施形態について説明したが、当業者には、以下の特許請求の範囲においてこれらの実施形態の変形及び修正を行えることが明らかであろう。
【符号の説明】
【００４１】
４１２  トポロジー更新
４１４  ルーティング経路計算を開始
４１９  Ｄｅｓｔ＝ｉｎｉｔｉａｌ＿ｄｅｓｔ
４１５  現在のノードと宛先との間の最短のダイクストラ経路を計算
４１６  ルート発見？
４１７  ネットワークトポロジーから最短経路リンクを削除
４１８  ルーティングテーブルを更新
４２０  最後の宛先ノードか？
４２１  Ｄｅｓｔ＝ｎｅｘｔ（Ｄｅｓｔ）
４２２  ネットワークトポロジーのリンクをリセット
【図１】
0006267367.tif 000002
【図２】
0006267367.tif 000003
【図３】
0006267367.tif 000004
【図４】
0006267367.tif 000005
【図５】
0006267367.tif 000006
【図６】
0006267367.tif 000007
【図７】
0006267367.tif 000008
【図８】
0006267367.tif 000009
【図９】
0006267367.tif 000010
【図１０】
0006267367.tif 000011
【図１１】
0006267367.tif 000012
【図１２】
0006267367.tif 000013
【図１３】
0006267367.tif 000014
【図１４】
0006267367.tif 000015
【図１５】
0006267367.tif 000016
【図１６】
0006267367.tif 000017
【図１７】
0006267367.tif 000018
【図１８】
0006267367.tif 000019
【図１９】
0006267367.tif 000020
【図２０】
0006267367.tif 000021
【図２１】
0006267367.tif 000022
【図２２】
0006267367.tif 000023
【図２３】
0006267367.tif 000024