高性能、低電力データセンター相互接続構造のためのシステム及び方法
1つのノードにつき複数のリンクをサポートするツリー状又はグラフトポロジを使用してルーティングをサポートするシステム及び方法を提供し、各リンクをトポロジ内で上りリンク、下りリンク、又はラテラルリンク、又はこれらの両方として指定する。システムは、セグメント化したMACアーキテクチャを使用することができ、このアーキテクチャは、MAC IPアドレスを内部MAC及び外部MACに再利用し、通常であればMACがスイッチに送り込むための物理シグナリングとなったであろうものを利用する方法を有することができる。
【発明の詳細な説明】
【技術分野】
【0001】
〔優先権の主張/関連出願〕
本特許出願は、2009年10月30に出願された「マルチプロセッサシステムオブチップ(SOC)における通信強化のためのシステム及び方法」という名称の米国仮特許出願第61/256,723号に対して合衆米国特許法第119条(e)に基づく利益を主張するものであり、この特許出願はその全体が引用により本明細書に組み入れられる。
【0002】
本開示は、一般にコンピュータベースシステムのスイッチング構造に関する。
【背景技術】
【0003】
インターネット、ウェブベース企業及びシステムの継続的成長、並びにコンピュータの急増に伴い、温度制御された、外部から管理できる場所に複数のサーバコンピュータを収容するデータセンターが数多く存在することはよく知られている通りである。
【0004】
図1A及び図1Bに、現在よく知られているような古典的なデータセンターネットワーク集合体を示す。図1Aには、典型的なネットワークデータセンターアーキテクチャ100の概略図を示しており、ローカルルータ103a〜fが散在するブレードサーバ107a〜nで満たされたラック102a〜nの最上部に最上位スイッチ101a〜nが存在する。追加のストレージルータ及びコアスイッチ105a〜b、及び追加のラックユニット108a〜nが、追加サーバ104e〜k及びルータ106a〜gを含む。図1bには、エッジルータシステム112a〜hの周囲に配置された周辺サーバ111a〜bnを含むシステムの例示的な物理図110を示す。通常、このような集合体110は、ラックサーバからこれらのトップオブラックスイッチへの1Gbイーサネットを有し、しばしばエッジ及びコアルータへの10Gbイーサネットポートを有する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、典型的システムのサイズ及び電力要件を抑えると同時にコストを削減する、ネットワーク集合体に焦点を合わせたパケットスイッチング機能のためのシステム及び方法が必要とされており、本開示はこれを目的とする。
【図面の簡単な説明】
【0006】
【図1A】典型的なデータセンターシステムを示す図である。
【図1B】典型的なデータセンターシステムを示す図である。
【図2】ネットワーク集約システムの概観を示す図である。
【図3】ラックシステム内の例示的なデータセンターの概観を示す図である。
【図4】ネットワーク集約システムの高水準トポロジを示す図である。
【図5A】ネットワーク集約システムの例示的なスイッチのブロック図である。
【図5B】MACアドレスの符号化を示す図である。
【図6】ネットワーク集約システムのブロードキャスト機構の第1の実施形態を示す図である。
【図7】ネットワーク集約システムのユニキャストルーティングの例を示す図である。
【図8】ネットワーク集約システムの耐障害性ユニキャストルーティングの例を示す図である。
【図9】ネットワーク集約システムのブロードキャスト機構の第2の実施形態を示す図である。
【発明を実施するための形態】
【0007】
本開示は、以下に例示して説明するようなネットワーク集約システム及び方法に特に適用可能であり、これに関連して本開示を説明する。しかしながら、本システム及び方法は、本開示の範囲に含まれるその他の要素及びアーキテクチャを使用して実施できるので、より実用性が高く、従って本開示は、以下で説明する例示的な実施形態に限定されるものではないと理解されたい。
【0008】
本システム及び方法はまた、1つのノードにつき複数のリンクをサポートするツリー状又はグラフトポロジを使用してルーティングをサポートし、この場合、各リンクは、トポロジ内で上りリンク、下りリンク、又はラテラルリンク、又はこれらの両方として指定される。また、システム内の各ノードは、複合計算/スイッチノードであっても、又は単なるスイッチノードであってもよく、以下でより詳細に説明するように、いずれのノード上にも入出力部(I/O)が存在することができる。システムは、セグメント化されたイーサネット媒体アクセス制御(MAC)アーキテクチャを有するシステムを提供することもでき、このアーキテクチャは、MAC IPアドレスを内部MAC及び外部MACに再利用し、通常であればMACがスイッチに送り込むための物理シグナリングとなったであろうものを利用する方法を有することができる。システムは、非スプーフィング通信方法、及び耐障害性ブロードキャスト方法を提供することもでき、これらの方法は、耐障害性のためのユニキャスト誤ルーティング方法を有することができる。ネットワークセキュリティの側面から言えば、スプーフィング攻撃とは、1人の人物又はプログラムが、データを改ざんして不当な利益を得ることによりうまく他人になりすます状況のことである。
【0009】
システムは、管理プロセッサが互いに「信頼」できるように、管理プロセッサ間に厳密なセキュリティを提供することもできる。(以下でより詳細に説明する)図5Aに示すシステム例では、各SoC内に管理プロセッサが存在する(図5Aのブロック906のM3マイクロコントローラ)。管理プロセッサ上で実行されるソフトウェアは、a)ベンダ(この場合はSmooth−Stone社)が開発したものでコードを検証済みであり、b)非ベンダコードはプロセッサ上で実行できない、という理由で信頼できる。管理プロセッサ間で信頼関係を維持することにより、これらのプロセッサは、コマンドを通信し(例えば、別のノードを再起動し)、又はユーザがスプーフィングする可能性を心配することなく別のノードに機密情報を要求して、情報にアクセスし又はシステムを制御できるようになる。
【0010】
システムは、システムオンチップ(SOC)内の常時オンパワードメイン内に統合マイクロコントローラを有するネットワークプロキシを提供することもでき、このネットワークプロキシは、より大型の内蔵プロセッサのためのネットワークプロキシングを引き継いで、これをサブツリーに適用することができる。システムは、ルーティングヘッダ及びルーティングテーブルにわずかな変更を加えるだけで、ルーティング可能なファットツリー状構造のサイズを劇的に拡張できるマルチドメイニング技術を提供することもできる。
【0011】
図2に、ネットワーク集約システム300を示す。このネットワーク集合体は、10Gb/秒のイーサネット通信などの1又はそれ以上の高速リンク301(太線)をサポートし、このリンクが、集約ルータ302と、図3に示す3つのラック303a〜cなどの1又はそれ以上のラック303とを接続する。第1のラック303a内では、ネットワーク集約システムが、ラック内の棚上のサーバコンピュータなどの1又はそれ以上のSmooth−Stone社の演算器306a〜d間に、太線で示す複数の高速10Gb経路を提供する。各Smooth−Stone社の演算器のさらなる詳細は、2009年10月30に出願された「マルチプロセッサシステムオブチップ(SOC)における通信強化のためのシステム及び方法」という名称の米国仮特許出願第61/256,723号により詳細に記載されており、この特許出願はその全体が引用により本明細書に組み入れられる。トップオブラックスイッチに置き換えてSmooth−Stone社の演算器内の内蔵スイッチ306a〜dを使用することで、劇的な量の電力及びコストを削減する一方で、集約ルータ302に10Gbイーサネットポートを提供することができる。ネットワーク集約システムのスイッチング構造は、従来のイーサネット(1Gb又は10Gb)をXAUI構造に統合することができ、Smooth−Stone社の演算器は、サードパーティのイーサネット接続サーバ用のトップオブラックスイッチとして動作することができる。
【0012】
真ん中のラック303bには、ネットワーク集約システム内のラックの別の構成を示しており、既にトップオブラックスイッチ308aを含んでいる既存のデータセンターラックに1又はそれ以上のSmooth−Stone社の演算器306e、fを統合することができる。この場合、このITグループは、これらのグループの他の演算器を1Gbイーサネットを介して既存のトップオブラックスイッチまで接続し続けることができ、10GbのXAUI構造を介して内部のSmooth−Stone社の演算器を接続することができ、これらの演算器を、図2に示すような1Gb又は10Gbイーサネット相互接続のいずれかを使用して既存のトップオブラックスイッチまで統合することができる。第3のラック303cには、データセンターのラックを従来通りに配置した現行の方法を示している。第3ラック303c内の細い赤線は、1Gbイーサネットを表す。従って、従来、データセンターのラックの現行の配置では、トップオブラックスイッチ308bまでが1Gbイーサネットであり、トップオブラックスイッチから集約ルータまでが10Gb(太い赤線301)である。なお、存在する全てのサーバは無限量であるが、本明細書では説明を明確かつ単純にするためにこれらを有限量で示している。また、拡張SSサーバを使用すると、これらは以下で説明するように独自のXAUIスイッチング構造を動作させるので、追加ルータが不要となる。
【0013】
図3に、システムの一実施形態による例示的な「ラック内データセンター」400の概観を示す。「ラック内データセンター」400は、10GbイーサネットPHY401a〜n及び1GbプライベートイーサネットPHY402を有することができる。大型コンピュータ(パワーサーバ)403a〜nは、検索、データマイニング、インデックス付け、JavaソフトウェアフレームワークであるApache Hadoop、一群のコンピュータ上の膨大なデータセットに関する分散コンピューティングをサポートするためにGoogle社によって導入されたソフトウェアフレームワークであるMapReduce、クラウドアプリケーションなどをサポートする。ローカルフラッシュ及び/又は固体ディスク(SSD)を含むコンピュータ(サーバ)404a〜nは、検索、MySQL、CDN、software−as−a−service (SaaS)、クラウドアプリケーションなどをサポートする。単一の大型低速ファン405が、その上に垂直に実装されたサーバの対流冷却を増強する。データセンター400は、ハードディスクのアレイ406を単なるディスクの束(JBOD)構成などの形で有し、任意にSmooth−Stone社の演算器をディスクフォームファクタ(例えば、アレイ406及び407内の緑のボックス)の形で有し、これらは任意にディスクコントローラとして動作する。ハードディスクサーバ又はSSディスクサーバは、ウェブサーバ、ユーザアプリケーション、及びクラウドアプリケーションなどとして使用することができる。古いアプリケーションのための標準的イーサネットインターフェイスを備えたストレージサーバのアレイ407及び履歴サーバ408a、b(あらゆるサイズ、あらゆるベンダ)も示している。
【0014】
ラック内データセンター400は、独自のシステム相互接続法を使用し、これにより電力及び配線が劇的に削減され、異種システムが可能になり、既存のイーサネットベースのサーバが統合され、古いアプリケーションが有効になる。1つの態様では、完全なサーバ又はストレージサーバを、ディスク又はSSDのフォームファクタで、4つのServerNodes(商標)を含む8〜16個のSATAインターフェイス及び4つのServerNodes(商標)を含む8つのPCIe x4インターフェイスとともに配置する。この態様は、(単複の)ディスクと対になった専用ボードを使用し、ウェブサーバ、ユーザアプリケーション、クラウドアプリケーション、ディスクキャッシュ機能などをサポートするディスク及び/又はSSD+ServerNode(商標)をサポートする。
【0015】
Smooth−Stone社のXAUIシステム相互接続では、ラックの電力、配線、及びサイズが減少する。個々のサーバ上に、強力で高価なイーサネットスイッチ及び強力なイーサネットPhyは必要ない。ケーブル(ケーブルの複雑性、コスト、重大な故障原因)も劇的に減少する。この態様では、ラック内で異種サーバを混合することもでき、イーサネット又はSATA又はPCIeを使用するあらゆる装置をサポートする。この態様を、システム相互接続に統合することもできる。
【0016】
本明細書に示す、パケットスイッチ機能を備えたサーバオンチップ(SOC)の態様は、ネットワーク集合体に焦点を当てたものである。SOCは、例えばCisco社のスイッチ又はルータなどの業界標準ネットワークスイッチと機能的に完全に同等ではない。しかしながら、本明細書を通じて説明するいくつかの用途では、SOCの方が良好な価格/性能比、並びに電力/性能比をもたらす。SOCは、送信元/宛先MACアドレスに基づいてルーティングを行うレイヤ2パケットスイッチを含む。SOCは、仮想ローカルエリアネットワーク(VLAN)をさらにサポートし、ドメイン到着パケットに対して設定可能なVLANフィルタリングを行ってドメイン内の不要なトラフィックを最小化する。SOC内に埋め込まれたMACは、VLANサポートを明確に有する内蔵スイッチを伴わずに、SOC全体にVLAN機能を提供する完全なVLANサポートを有する。SOCは、管理プロセッサによってシステムを起動し、管理プロセッサにリンク状態の推移を通知して、障害を迂回するルートをとるようにルーティング構成を再プログラムすることもできる。このような機能は、レイヤ3(又はそれよりも上位の)処理を必要としない(すなわち、ルータではない)。SOCは、完全なVLANサポート、QoS/CoSのサポート、アドレス学習、フィルタリング、スパニングツリープロトコル(STP)などの提供も行わない。
【0017】
図4に、スイッチング構造によって接続されたXAUI接続のSoCノードを示すネットワークシステムの高水準トポロジ800を示す。ツリーの最上位から、10GbイーサネットポートEth0 801a及びEth1 801bが来る。楕円802a〜nは、計算プロセッサと内蔵スイッチの両方を含むSmooth−Stone社のノードである。これらのノードは、内部スイッチに接続された5つのXAUIリンクを有する。スイッチングレイヤは、この5つのXAUIリンクを全てスイッチングに使用する。レベル0の葉ノード802d、e(すなわち、N0nノード、又はx=レベル及びy=アイテム番号とするNxy)は、相互接続に連結するために1つのXAUIリンクしか使用せず、XAUI、10Gbイーサネット、PCIe、SATAなどとして使用できる4つの高速ポートをI/Oへの連結のために残しておく。ツリー及びファットツリーの大部分では、アクティブノードが葉ノードとしてのみ存在し、他のノードは純粋なスイッチングノードである。この方法により、ルーティングが大幅に容易になる。トポロジ800は、いずれのノードを複合計算及びスイッチノードにすることも、又は単なるスイッチノードにすることもできるという柔軟性を有する。ほとんどのツリータイプの実施構成は、I/Oを葉ノード上に有するが、トポロジ800では、あらゆるノード上にI/Oが存在するようにする。一般に、ツリーの最上位にイーサネットを配置すると、イーサネットまでの平均ホップ数が最小化される。
【0018】
より詳細には、図6のツリー志向トポロジに示す楕円は、計算クラスタ内の個々のノードを表す。図5Aに、クラスタの個々のノードの1つの例示的な実施構成を示す。例えば、図6のトポロジの従来の実施構成を見ると、通常、計算ノードは、下位レベルの葉ノード(例えば、N00〜N08)内に見出され、上位レベルのノードは計算要素を有しておらず、単なるネットワークスイッチング要素(N10〜N21)である。図6Aに示すノードアーキテクチャでは、A9コア(905)を任意に有効にすることができ、或いは単に電源オフのままにしておくこともできる。従って、図6の上位レベルのスイッチングノード(N10〜N21)を(従来の実施構成のように)純粋なスイッチング要素として使用することもでき、或いはA9コアモジュールの電源をオンにして、これらを計算クラスタ内の完全なノードとして使用することもできる。
【0019】
スイッチアーキテクチャでは、イーサネットフレームの先頭にルーティングフレームを追加することが必要である。スイッチは、ルーティングフレーム内のフィールドに対してのみ動作し、イーサネットフレームを直接検査することはない。図5aには、本明細書に開示するシステム及び方法の1つの態様による例示的なスイッチ900のブロック図を示している。この図には、4つの関心領域910a〜dが存在する。領域910aは、CPUと内部MACの間のイーサネットパケットに相当する。領域910bは、内部MACにおけるイーサネット物理インターフェイスのイーサネットフレームに相当し、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを含む。領域910cは、外部MACにおけるイーサネット物理インターフェイスのイーサネットフレームに相当し、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを含む。領域910dは、ルーティングヘッダのプロセッサ901と外部MAC904の間のイーサネットパケットに相当する。このセグメント化されたMACアーキテクチャは非対称である。内部MACは、ルーティングヘッダプロセッサ内へのイーサネット物理シグナリングインターフェイスを有し、外部MACは、ルーティングヘッダプロセッサ内へのイーサネットパケットインターフェイスを有する。従って、MAC IPは、内部MAC及び外部MACに再利用され、通常であればMACがスイッチ内に送り込むための物理シグナリングとなったであろうものを利用する。MAC構成は、A9コア905のオペレーティングシステムのデバイスドライバが、内部Eth0 MAC902及び内部Eth1 MAC903を管理して制御するようなものである。管理プロセッサ906のデバイスドライバが、内部Eth2 MAC907を管理して制御する。外部Eth MAC904は、デバイスドライバによって制御されない。MAC904は、プロミスキャスモードで構成されて、ネットワークモニタリングのためのフィルタリングを行わずに全てのフレームを転送する。このMACの初期化は、MACのハードウェアインスタンス化と、他のいずれかの必要な管理プロセッサ初期化との間で調整される。外部Eth MAC904レジスタは、A9 905及び管理プロセッサ906のいずれのアドレスマップからも見える。外部Eth MAC904のための割り込みは、A9又は管理プロセッサのいずれかにルーティング可能である。XGMACは、XGMIIリンクの障害状態のあらゆる変化、PHYのホットプラギング又は取り外し、アライブ状態又はリンク状態の変更、及びいずれかのRMONカウンタが閾値レジスタと等しい値に達することを含む、CPUがモニタしたいと望み得るいくつかの割り込み可能なイベントをサポートする。
【0020】
場合によっては、特定のマイクロアーキテクチャに応じ、XAUIにわたってプリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドが存在してもよい。ルーティングフレームヘッダプロセッサが、これらのフィールドを標準化することができる。XAUIインターフェイスは、これらのフィールドの一部又は全部を必要とすることもある。この場合、領域910dのルーティングヘッダプロセッサが、スイッチに入るこれらのフィールドを追加し、スイッチから出るこれらのフィールドを削除する必要がある。XAUIで送信する必要があるバイト数を削減するために、これらの3つのフィールドを削除することができる(XAUIインターフェイスが許可する場合)。この場合、領域910bのルーティングヘッダプロセッサが、スイッチに入るこれらのフィールドを除去し、スイッチから出るこれらのフィールドを再び追加する必要がある。
【0021】
ルーティングフレームヘッダプロセッサは、MACからイーサネットフレームを受け取り、ルーティングフレームをスイッチへ送信する。このプロセッサはまた、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを標準化し、ルーティングヘッダを先頭に追加し、スイッチからルーティングフレームを受け取り、イーサネットフレームをMAC内へ送信する。次に、このプロセッサは、ルーティングヘッダを除去し、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを標準化する。なお、構造内を流れるフレームは全てルーティングフレームであり、イーサネットフレームではない。イーサネットフレーム/ルーティングフレームの変換は、パケットがMACを介して構造に出入りするときにのみ行われる。また、スイッチ内のルーティングロジックにより、ルーティングフレーム内のフィールドが変更されることもある。イーサネットフレームは(プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドの追加/削除以外は)決して変更されない。
【0022】
ルーティングフレームは、ルーティングフレームヘッダにイーサネットフレームのコア部分を加えたもので構成され、以下の表1に示すような構造である。
表1
【0023】
なお、ビットのサイジングを行うための実施構成の前提は、4096ノード→12ビットのノードIDである。これらのフィールドは、必要に応じて実施中にサイズ変更することができる。
【0024】
ルーティングフレームヘッダは、以下の表2に示すフィールドで構成される。
表2
【0025】
スイッチが、チェックサムに失敗したパケットを受け取った場合、このパケットを欠落させ、統計カウンタを増分して管理プロセッサに通知する。
【0026】
ルーティングフレームプロセッサは、複数の宛先MACアドレスの符号化を識別する。参考までに、MACアドレスは、図5bに示すようにフォーマットされる。以下の表は、MACアドレス内の3バイトのOUI及び3バイトのNIC固有のフィールドの使用法を示すものである。本明細書に開示するシステム及び方法の新規の態様の1つは、以下の表3の、「構造内ノードのローカルアドレスがMAC Lookup CAMにヒット」という2番目の項目にも示すように、追加のアドレスビットを使用して内部MACから外部MACへのマッピングを符号化することである。
表3
【0027】
さらに、表3では、1つの内部ノード又はリンクが全ての外部MAC部分をアドレス指定できるようにする「ノード符号化ユニキャスト」及び「リンク符号化ユニキャスト」、並びに隣接ノードへのマルチキャストを可能にする「隣接マルチキャスト」という項目に他の新規の態様を見出すことができる。
【0028】
なお、SS_MAC_NODE_ENCODED_MAGIC及びSS_MAC_LINK_ENCODED_MAGICという値は、これらのMACアドレスタイプを一意に識別するために使用される定数識別子である。「魔法数」」という用語は、ファイルフォーマット又はプロトコルを識別するために使用される一定の数値又はテキスト値を表す標準的業界用語である。これらの魔法数は、ハードウェアの初期化中に標準値へのデフォルト設定を行う2つのレジスタ(magicNodeEncodedMAC及びmagicLinkEncodedMAC)内で設定されるが、必要に応じて管理プロセッサソフトウェアがこれらを変更できるようにもする。
【0029】
以下の表4に示すように、ヘッダプロセッサは、6バイトのMACアドレスを12ビットのノードIDにマッピングするMAC Lookup CAM(連想メモリ)であるmacAddrLookupを含む。
表4
【0030】
このCAM内の行数は実施構成によるが、約256〜1024行であると予想される。管理プロセッサは、SS構造内の全てのノードのノードIDマッピングでCAMを初期化する。行には、そのNode Localビットの設定に応じて2つのタイプがある。Node Localフィールドでは、デフォルトMACアドレスに関してCAM内のMACアドレスを4:1に圧縮し、4つのMAC全てを、以下の表5のCAMテーブル内の1つの行にマッピングすることができる。
表5
【0031】
CAM内の任意の行では、MACアドレスエイリアスをノードにマッピングすることができる。Linux(及びMAC)では、(ifconfig eth0 hw ether 00:80:48:BA:d1:30などにより)ネットワークインターフェイス上でMACアドレスを再割り当てすることができる。仮想化/クラウドコンピューティングでこれを使用して、セッション開始後の再ARPの必要性を避けることもある。
【0032】
スイッチアーキテクチャは、Switch OUIに一致するアドレスのMACアドレスのNIC固有部分の3バイトのみを記憶する2次MAC Lookup CAMを提供する。このローカルOUI CAMの利用可能性は実施構成によって決まる。以下の表6を参照されたい。
表6
【0033】
3種類のMACアドレス符号化のための最大ノード制限数は、以下のように求めることができる。
1.デフォルトMACアドレス−管理プロセッサが、構造内のノードの各々のNode Localマッピングを設定する。各ノードのCAM内に1つのエントリが存在する。最大ノード数は、MAC Address Lookup CAM内の最大行数によって制御される。
2.ノード符号化アドレス−全てのMACを、ノード符号化アドレスを使用するように再プログラムする。このようにして、ノードIDをMACアドレス内に直接符号化する。MAC Lookup CAM内のエントリは使用しない。最大ノード数は、Unicast lookupテーブル(Lookup CAMと比較すると容易に大きくできる)内の最大行数によって制御される。なお、これにより、MAC Lookup CAMロジックが壊れた場合に何らかのリスク緩和が得られる。ノード符号化アドレス案の使用例を提供する。
3.任意のMACアドレスエイリアス−CAM内の行を取り出す。一例として、512行のCAMは、256個のノード(ノードローカルアドレス)+ノードごとに1つのMACアドレスエイリアスを保持することができる。
【0034】
Lookup CAMは、ルーティングヘッダ生成中にしかアクセスを受けないので、管理プロセッサは、実際には構造内のMACアドレスがパケット内で送信元又は宛先MACアドレスとして使用されている場合にのみ行に投入すればよい。換言すれば、2つのノードが相互に対話しない場合、マッピング行を生成する必要はない。しかしながら、通常は、管理プロセッサがこのような知識を持つことはないので、全てのノード内で全てのノードのマッピングが生成されると予想される。また、Lookup CAMでエントリが生成されない場合でも、パケットをイーサネットゲートウェイから外部ルータを経由して構造内に戻し、宛先ノードまでルーティングすることにより、実際にはやはりルーティングに成功すると思われる。
【0035】
表7に、宛先ノードとポート以外の全てのフィールドのルーティングヘッダ内のフィールドの設定方法を定義する。
表7
【0036】
表8には、構造内のアドレスの宛先ノード及びポートの設定方法を定義する。
表8
【0037】
表9には、構造外のアドレスの宛先ノード及びポートの設定方法を定義する。
表9
【0038】
また、本明細書で開示するシステム及び方法の管理プロセッサのソフトウェアアーキテクチャは、現在のところ、「信頼」すべき管理プロセッサノードの能力に相互に依存する。この、管理プロセッサから管理プロセッサへの通信に対するより厳しいセキュリティは、構造を横切るプライベート管理LANに対するより良好なセキュリティとともに望ましいものである。複数の「堅固な」セキュリティドメインを必要とする環境では、顧客が構造内のセキュリティドメインを容易に混同しないことを単純に定義することにより、この構造問題を緩和することができる。このような場合、トップオブラックスイッチに14ノードボードを接続して、顧客が各14ノードボードのVLAN粒度を制御できるようにすることができる。
【0039】
説明したマルチドメイン構造アーキテクチャは、構造を横切る安全な「トンネル」及びドメインを生成することによってVLANサポートの欠如に対処し、VLAN保護されたルータポートと1:1で相互運用することができる。
【0040】
本明細書に開示するシステム及び方法のドメイン管理方法は以下の通りである。構造内の複数のドメインIDをサポートする。ノード(管理プロセッサ、MAC0、MAC1、ゲートウェイ)内のMACの各々をドメインIDに個別に割り当て(設定されていない場合には0をタグ付け)できるようにする。ノード内のMACの各々が、管理ドメインへのアクセスを示すビットを有することができるようにする。MACに関連するドメインIDについては、管理プロセッサのみが割り当てることができ、A9が変更することはできない。MAC(内部及び外部の両方)により生成されたフレームでは、ルーティングフレームプロセッサが、このMACに関連するドメインID及び管理ドメイン状態をルーティングフレームにタグ付けする。ドメインは、このドメイン内にパケット(ユニキャスト及びマルチキャストの両方)を保持し、このドメイン外のMACがこれらのパケットを傍受又はスプーフィングできないようにするという点で、トンネル又はVLANの効果をもたらすようになる。また、この方法は、5ビットのドメインIDを使用する。これにより、例えば、非定義(すなわち0)のドメインIDを有するパケットが配信されたかどうかを定義するMACごとのブール値を有するスイッチ、或いは定義済み(0以外)ではあるが一致しないドメインIDを有するパケットが配信されたかどうかを定義するMACごとのブール値を有するスイッチなどの、ドメイン処理を制御するためのオプションが加わる。スイッチ内のさらなるオプションは、ノード符号化MACアドレスをMACごとにオフにする(別の形の潜在的な攻撃ベクトルを排除する)ことができる。
【0041】
管理プロセッサから管理プロセッサへの通信を安全に保つために、全ての管理プロセッサMAC上の管理ドメインビットにマーキングすることができる。一般に、管理プロセッサは、(慣例により)ドメイン1上でルーティングを行うべきである。このような技術により、全ての管理プロセッサが管理ドメイン上でパケットをトンネリングでき、従って他のVLAN又はドメイン上の他の装置(構造内部又は外部)がこれらを検査又はスプーフィングできないようにすることができる。さらに、セキュアな管理LANを提供するために、管理ドメインビットを設定したゲートウェイMACを割り当てて、管理パケットを管理プロセッサドメインに対してプライベートに保つことができる。また、このスイッチ構造は、各ゲートウェイMACを別個のドメインに関連付けることにより、スイッチ内の「マルチテナント」をサポートすることができる。例えば、各ゲートウェイMACは、外部ルータ上の個別のポートに接続して、このポートを任意にVLANに関連付けることができる。ゲートウェイ内にパケットが入ってくるときには、これらにドメインIDをタグ付けし、構造全体にわたり、このドメインに関連するMACに対してこのトラフィックをプライベートに保つ。
【0042】
このスイッチは、数多くのレジスタ(aka CSR、aka MMR)をサポートして、ソフトウェア又はファームウェアがスイッチを制御できるようにする。これらのレジスタの実際のレイアウトは、実施構成により定められる。表10に示すフィールドは、ソフトウェアの読み出し/書き込みである。これらのレジスタは全て、A9からの書き込みからレジスタを保護するための機構を有する必要がある(セキュアモード又は管理プロセッサのプライベートバス上とすることができる)。
表10
【0043】
表11に示すレジスタは、スイッチの実施構成に含まれるが、ソフトウェアによるアクセスが可能である必要はない。
表11
【0044】
なお、ソフトウェアは、アクティブなパケットルーティングに関して自動的にルーティングテーブル(unicastRoute)及びmacAddrLookup CAMを更新できるべきである。1つの実施構成は、更新動作中にこれらのテーブルへのルーティングアクセスを防ぐことである。
【0045】
ブロードキャスト/マルチキャストルーティング
図6に、本明細書に開示するシステム及び方法の1つの態様による例示的なブロードキャスト機構1000を示す。点線1003で示すように、ノードN10 1001とN21 1002の間のリンクが機能していない。マルチキャストパケットのルーティングヘッダの生成中、送信元ノードは、この送信元ノードの増分したブロードキャストIDをルーティングフレームに入れる(rframe.bcastID)。あるノードがマルチキャストルーティングフレーム(すなわち、rframe.rfType==Multicast||rframe.rfType==NeighborMulticast)を受け取ると、このノードは、このブロードキャストパケットを既に認識しているかどうかをチェックする。このチェックは、ブロードキャスト送信元ノード及びブロードキャストIDで形成されたタグを有するbcastIDSeen CAMにアクセスすることによって行われる。これが既に認識されていた場合(すなわち、CAMヒット)、何も動作は行われない。ブロードキャストフレームがまだ認識されていなかった場合、ノードは、これを適当な内部ポート及び外部ゲートウェイ(intPortBroadcastVecレジスタ)にブロードキャストし、このフレームが入ってきたリンク以外の全ての外向きのXAUIリンクを通じてこれを再ブロードキャストする。なお、broadcastLateralレジスタが設定されている場合、ラテラルのみを通じてブロードキャストする。ほとんどのトポロジでは、ラテラルにブロードキャストする必要はなく、これを行うことで、重複するブロードキャストパケットを無効にすることにより、その数を減少させることができる。次に、このブロードキャストタグをbcastIDSeenCAMにFIFOの順で追加する。図7において、N04 1004が、全ての近隣、すなわちN11 1105へのブロードキャストを開始する。N11は、このパケットを認識していなかったので、到着ノード以外の全ての近隣、この例ではN21 1002、N20 1006、N03 1007、及びN05 1008にブロードキャストして、このパケットを内部に受け入れる。ノード03及び05は、このパケットを認識していなかったので、ブロードキャストを内部に受け入れる。N21は、このパケットを認識していなかったので、到着リンク以外の全てのアクティブなリンク(例えば、N10、N12 1009)にこのパケットをブロードキャストし、このパケットを内部に受け入れる。N20は、到着リンク以外の全てのアクティブなリンク(すなわち、N12)にこのパケットをブロードキャストし、このパケットを内部に受け入れる。N10は、N00 1010、N01 1011、及びN02 1012に下り方向にブロードキャストする。N12は、N06 1013、N07 1014、N08 1015、並びにN21及びN20の一方(ブロードキャストパケットの取得元ではない方)に再ブロードキャストする。なお、N20及びN21の一方、並びにN12は、このパケットを2回認識する。これらのノードは、最初の時点にのみ動作を行い、2回目には、このパケットがブロードキャストCAMに重複としてヒットし、無視される。
【0046】
ユニキャストルーティング
他のノードへのユニキャスト
(図7に示すような)ユニキャストルーティングは、非マルチキャスト(すなわち、ユニキャスト)パケットを次のノードにルーティングするものである。これは、宛先ノードに到達するために利用できるリンクのベクトルを提供するソフトウェア計算したunicastRoute[]次ノードルーティングテーブルを利用することによって行われる。
条件
rframe.rfType==Unicast
ルーティング
【0047】
障害迂回ルーティングに関しては、相当な複雑性が存在する。無障害ルーティング及び障害迂回ルーティングについて別個に説明する。
【0048】
従来、ツリールーティングでは、パケットは、(送信元、宛先)の共通親に達するまで上り方向にルーティングされる。この上り方向ルーティングは、確定的、非記憶的、又は適応的なものとすることができる。その後、パケットは、確定的ルーティングを使用して下り方向に宛先へルーティングされる。
【0049】
一例として、図7に、ノードN00 1010からN08 1015へのパケットルーティングを示す。パケットは、上りフェーズでノードN10 1001を経由して共通祖先(N21)へ、その後下りフェーズで宛先へルーティングされる。
【0050】
なお、ノードN10における上りフェーズ中は、2つのリンク候補(N10,N21)及び(N10,N20)が存在する。確定的に第1のリンク候補を選択することもでき、或いは適応的アルゴリズムによってこれらのリンクのいずれかを動的に選択することもできる。しかしながら、ノードが共通祖先に達して下り方向に方向を変えると、ノードが宛先に到達するための冗長経路は(通常は)存在しない。
【0051】
障害がない場合のユニキャストルーティング
このunicastRouteテーブルでは、各リンクに2ビットのリンク重みの注釈が付けられ、ソフトウェアは、このリンクを介した宛先ノードまでの相対的コスト/距離を表すことができる。慣例により、リンク重みは以下を表すべきである。
・0=ルートなし
・3=ダイレクト次ホップ接続
・1及び2=ソフトウェアが計算した相対的コスト。一例として、コストが2ホップ、3ホップ、及び6ホップの3つのリンクをまたぐ経路が存在する場合、最初の2つのリンクに重み=2を割り当て、6ホップ経路に重み=1を割り当てることができる。
無障害ユニキャストルーティングのためのアルゴリズム
・ユニキャストルーティングテーブルからリンク重みベクトルを取得する。
・linkWeightVector=unicastRoute[rframe.dstNode]
・入ってきたリンクを削除して、ここに返送する可能性を排除する。
・機能していないリンクを全て削除する。
・この時点で、関連するリンク重みを有するリンク候補リストを得る。
・最も高い優先度(3)から開始して下へ1までリンク重みを反復する。この優先度のリンク候補リストを収集し、候補リストに少なくとも1つのリンクが挙がったら停止する。この結果、優先度が最も高いリンク候補リストが得られる。一例として、重み=2のリンクが2つ、重み=1のリンクが2つ存在する場合、優先候補リストには、重み=2のリンク2つが含まれる。
・適応的レジスタをチェックして、適応的ルーティングを行うか、それとも確定的ルーティングを行うかを判断する。
・適応的==0は、確定的ルーティングを使用すべきであることを示し、従って優先候補リストから第1のリンクを選択する。
・適応的==1は、適応的ルーティングを使用すべきであることを示す。スイッチの実施構成では、ターゲットリンクを適応的に選択するためのアルゴリズムを優先候補リストから選択する。この適応的アルゴリズムを、リスト内総当たりのように単純にすることができる。或いは、FIFOのない深さ、リンク速度、...などの他の特性を織り込むように選択することもできる。
・実施構成のオプションとしては、レジスタオプションを追加して、ルータが全ての非ゼロの重みから適応的に選択を行えるようにすること、或いは優先度が最も高い候補リストからのみ適応的に選択を行うことが考えられる。
・この選択したリンクでパケットを送出する。
【0052】
耐障害性ユニキャストルーティング
耐障害性ユニキャストルーティングの複雑性の原因として2〜3の問題点が挙げられる。
・局所的知識のみで障害ルーティングを行おうと望むこと。ノードは、あるリンクが隣接ノードに対して機能していないことを暗黙的に知る。障害が存在する場合に包括的で統一された状態を維持するのは複雑であるため、リンク(又はノード)が構造内のどこか他の場所で機能していないことを伝達する必要性を避けるような設計を選択する。
・ツリー内のルーティングの性質。パケットルーティングの上りフェーズ中は、リンクを冗長リンクから適応的に選択することができ、従って通常の適応的リンク選択によるリンクを避けることが容易になり得る。
・しかしながら、パケットが降下し始めると、従来、(ルーティングルールに従う)降下経路には冗長経路が存在せず、従って障害ルーティングが課題となり得る。
・図8にリンク障害(N10、N21)を示しており、ユニキャストルーティングにより、上述した通常の適応的ルーティングアルゴリズムを使用して(N10、N20)リンクを選択した。しかしながら、パケットがN20へ上向きにルーティングされ、リンク(N20、N12)が機能していない場合、宛先に容易に到達できる経路はない。
【0053】
障害迂回ルーティングを処理するための方法は2つある。
・ソフトウェアが、重み=1の代替手段ではあるが望ましくない経路を作成することができる。これらを避難経路と呼ぶ。これらは、障害迂回ルーティング中に使用する厳密なルーティングルールに違反する可能性がある優先度の低い経路である。一例として、リンク(N20、N12)が機能していないものとした場合、N20のunicastRoute[N08]エントリは、重み=2のN12へのリンク及び重み=1のN11へのリンクを含むことができる。このようにして、通常の適応的ルーティングアルゴリズムは、N20−>N11−>N21−>N12−>N08の経路を自動的にとる。
・構造アーキテクチャは、「誤ルーティング」と呼ぶ技術を含む。誤ルーティングでは、反復的に同じ経路を引き返す。
・これらの技術は、いずれも実質的なユニキャスト耐障害性をもたらす。
【0054】
ユニキャスト誤ルーティング
一例として、(図9に赤で示すような)障害のある3つのリンク1101、1102、及び1103を含む以下のトポロジについて検討する。N0からN3へのユニキャストルートを検討する。誤ルーティング技術を理解するために以下のルーティングについて検討するが、このルートは、適応的に選択できたいくつかのルートのうちの1つにすぎないと理解されたい。
・パケットがN0からN6へルーティングされる。
・パケットがN6からN10へルーティングされる。
・N10は、パケットが入ってきたリンク以外にN3に到達するための経路を有していないと認識する。N10は、ルーティングヘッダ内に誤ルーティングビットを設定して、これをN6へ返送する。
・N6は、パケットが誤ルーティングされていることを認識し、ルーティングヘッダ内のmisrouteVector内のN10リンクのビットを設定し、誤ルーティングされていない別のリンクを選択して、パケットをN11へ送信する。
・N11は、パケットが入ってきたリンク以外にN3への経路を有していないと認識する。誤ルーティングビットは既に設定されており、これをN6へ返送する。
・N6は、パケットが誤ルーティングされていることを認識し、misrouteVectorにN11リンクを追加し(これでN10のリンクIDとN11のリンクIDを含む)、誤ルーティングされていない別のリンクを選択して、パケットをN7へ送信する。
・N7は、誤ルーティングビットが設定されていることを認識するが、N3への有効なリンク(N12へ)を有しており、従ってヘッダ内の誤ルーティングビットをクリアして、パケットをN12へ転送する。
・N12はN9へ送信する。
・現在、N9 unicastRouteは、N3へのリンク(重み=3)及びN8へのリンク(重み=2)を含む可能性が高い。N3への直接リンクは機能していないので、通常の適応的ルーティングではこれが選択されることはなく、パケットをN8へルーティングして、最終的にN3へルーティングする。
・N6がそのリンク候補リストを使い果たしていた(すなわち、misrouteVectorによってこれらが全て隠されていた)場合、この実施構成には2つの選択肢がある。
・このパケットを欠落させて、M3にルーティングの失敗を通知する。
・misrouteVectorをクリアして誤ルーティング設定を残し、下向きのリンク(存在する場合)の1つを通じてパケットを転送する。これにより、1つ下のレイヤで誤ルーティングが再試行される。この実施構成では、1つ下のレイヤオプションでこの再試行を有効にするためのレジスタビット(enableRecursiveMisrouting)を得たいと望むことができる。
スイッチが誤ルーティングアルゴリズムを開始するかどうかをソフトウェアが制御できるようにするenableMisroutingというレジスタが存在する。
【0055】
マルチドメイニング
発明者らは、マルチドメイニングについても認識しており、この目的は、ノードの(64K個のノードなどの)数多くのノードへのアドレス指定能力を、ユニキャストルーティングテーブルのサイズを64K個のノードに増やす必要なく高めることである。
【0056】
現在説明しているように、ユニキャストルーティングテーブルは、ノード番号(すなわち、0〜MAX_NODES−1)によってインデックスを付けた1次元アレイであり、典型的な実施構成では256個〜4K個のノードになる。
【0057】
この節では、現行のアーキテクチャを、いかにして最大ノードが64K個の複数のドメインをサポートするように変更するかについて説明する。
・ノード名空間を、0〜MAX_NODES−1のノードIDから、(ドメインID,ノードID)の2タプルに変更し、この場合ドメインIDとノードIDはいずれも0〜255である。従って、事実上256個のドメインが存在することができ、各ドメインが最大256のノードを含むことができる。
・ユニキャストルーティングテーブルを、MAX_NODEのサイズの1次元テーブルから256のサイズの2次元テーブルに変更する。これで、ユニキャストルーティングテーブルは、unicastRoute[NODES]の構造からunicastRoute[2][256]の構造に変更される。
・ローカルドメインルーティング:このドメイン内のノードにルーティングする場合、ユニキャストルーティングテーブルは、unicastRoute[0][ノードID]としてアクセスを受け、現在のノードから指定されたノードIDにルーティングするように重み付けされたリンクベクトルを提供する。
・リモートドメインルーティング:リモートドメイン内のノードにルーティングする場合、ユニキャストルーティングテーブルは、unicastRoute[1][ドメインID]としてアクセスを受け、現在のノードから指定されたドメインIDにルーティングするように重み付けされたリンクベクトルを提供する。
・ルーティングフレーム:ルーティングフレームにdstRemoteという1ビットを追加し、リモートドメインにルーティングする場合にこれを真(true)に設定する。
・ローカル管理MACアドレス:以下の節では、ノード符号化ユニキャストMACアドレスの符号化を以下のように記述する。
マルチドメイニングでは、これを以下のように変更する。
・ルーティングフレームヘッダの作成:表2に、ルーティングフレームヘッダを作成するためのアルゴリズムを示している。マルチドメイニングの場合、これを以下によって拡張する。
if ( dstDomain == myDomainID ) { // Route to local domain
rframe.dstRemote = false;
rframe.dstNode = dstNode;
}
else { // Route to remote domain
rframe.dstRemote = true;
rframe.dstNode = dstDomain;
【0058】
ネットワークプロキシ
ネットワークプロキシの概念は、メインプロセッサ(図5Aの905)の、低電力スリープ/休止状態の間にネットワークの存在を維持する能力、及びさらなる処理が必要な場合に知的に起動を行う能力である。ネットワークプロキシに関連するアーキテクチャ特性がいくつか存在する。
・ポートIDの再マッピングを可能にするためのCSR(portRemap)が存在する。実際には、スイッチが内部MAC0ポート(例えば、図5Aの902)にパケットを配信すべき場合、このPort Remapping CSRは、ソフトウェアがMAC0を管理プロセッサMAC(例えば、図5Aの907)に再マッピングして、ネットワークプロキシ処理のためにパケットが管理プロセッサに配信されるようにすることができる。このremapping CSRを使用して、MAC1トラフィックをMAC0に、又はMAC1トラフィックを管理プロセッサに再マッピングすることもできる。
・通常、スイッチは、ルーティングフレームの宛先ノードIDを見て、パケットがノード内の内部ポートに配信されるか、それとも他のXAUI接続ノードにルーティングされるかを判断する。この判断は、宛先ノードIDを「My Node ID」にマッチさせることによって行われる。nodeRangeLo<=Destination_Node<=nodeRangeHi||myNodeID==Destination_Nodeの場合、Node ID Matchレジスタ(nodeRangeLo,nodeRangeHi)が、ノード内の内部ポートにパケットが配信されるようにする。これにより、ノードが、ノードのサブツリーのためにプロキシできるようになる。
【0059】
典型的な使用順序は、以下の形をとる。
・管理プロセッサが、MAC0及びMAC1のIPからMACアドレスへのマッピングをノード上に保持する。これは、メインプロセッサOSから管理プロセッサにこれらのマッピングを明示的に通信することによって行うこともでき、或いはローカルの不当なARPブロードキャストを管理プロセッサにスヌープさせることによって非明示的に行うこともできる。
・メインプロセッサは、管理プロセッサと協動して低電力休眠状態に入る。この遷移中、管理プロセッサは、Port ID remapping CSRを、MAC0及びMAC1トラフィックを管理プロセッサにルーティングするように構成する。
・管理プロセッサは、全ての到着するMAC0/MAC1パケットを処理する。処理には3つの種類がある。
・(ARP応答及びICMPピングなどの)単純な応答を求めるいくつかのクラスのトランザクションに応答する。
・いくつかのクラスのパケット、典型的には他のコンピュータ宛てのユニキャスト又はブロードキャストパケットをダンプして無視する。
・いくつかのクラスのパケットを処理するためにメインプロセッサを起動しなければならないと判断する。管理プロセッサは、メインプロセッサを起動させ、Port ID remappingレジスタを取り消し、スイッチを通じてパケットを再送して、パケットがMAC0/1に再ルーティングされる。
【0060】
Wake−on−LANマジックパケット
従来のデスクトップコンピュータでは、起動しておくべきコンピュータを、ネットワークカードのための電力を確保した状態でシャットダウン(スリープ、休止、又はソフトオフ、すなわちACPI状態のG1又はG2)するが、コンピュータの電源からは切断しない。ネットワークカードは、この特定のサブネット(又はLAN全体、ただし、これには特殊なハードウェア又は構成が必要である)のためのブロードキャストアドレス上でブロードキャストされるMACアドレスを含む、マジックパケットと呼ばれる特定のパケットをリスンする。マジックパケットは、OSIモデルのデータリンク又はレイヤ2上で送信され、ブロードキャストアドレスのネットワーク内の全てのNICにブロードキャストされ、IPアドレス(OSIモデルのレイヤ3)は使用されない。リスン中のコンピュータがこのパケットを受け取ると、ネットワークカードは、正しい情報を求めてパケットをチェックする。マジックパケットが有効である場合、ネットワークカードは、コンピュータを休止又はスタンバイから復帰させ、又はこれを起動する。
【0061】
マジックパケットは、そのペイロード内のいずれかに、6バイトの1(結果的に、16進数でFF FF FF FF FF FF)の後にターゲットコンピュータのMACアドレスの16回の繰り返しを含むブロードキャストフレームである。マジックパケットは、上記の文字列に関してしか走査されず、完全なプロトコルスタックによって実際に解析されるわけではないので、あらゆるネットワークレイヤ及びトランスポートレイヤプロトコルのブロードキャストパケットとして送信することができる。通常、このマジックパケットは、ポート0、7、又は9へのUDPデータグラムとして送信され、又は以前はIPXパケットとして送信されていた。
【0062】
管理プロセッサは、上記のネットワークプロキシアーキテクチャを使用して、これらのWake−On−LANパケットをサポートすることができる。管理プロセッサは、これらのブロードキャストパケットを取得し、ノード上の他のMACのMACアドレスを知り、必要時にメインプロセッサを起動することができる。これらのWake−on−LANパケットをサポートするために、スイッチ内にさらなる機能は不要である。
【0063】
以上、本発明の特定の実施形態を参照しながら説明したが、当業者であれば、添付の特許請求の範囲により範囲を定義される本開示の原理及び思想から逸脱することなく、本実施形態に変更を加えることができると理解するであろう。
【符号の説明】
【0064】
100 ネットワークデータセンターアーキテクチャ
101a〜n 最上位スイッチ
102a〜n ラック
103a〜f ローカルルータ
104e〜k 追加サーバ
105a 追加ストレージルータ及びコアスイッチ
105b 追加ストレージルータ及びコアスイッチ
106a〜g ルータ
107a〜n ブレードサーバ
108a〜n 追加ラックユニット
【技術分野】
【0001】
〔優先権の主張/関連出願〕
本特許出願は、2009年10月30に出願された「マルチプロセッサシステムオブチップ(SOC)における通信強化のためのシステム及び方法」という名称の米国仮特許出願第61/256,723号に対して合衆米国特許法第119条(e)に基づく利益を主張するものであり、この特許出願はその全体が引用により本明細書に組み入れられる。
【0002】
本開示は、一般にコンピュータベースシステムのスイッチング構造に関する。
【背景技術】
【0003】
インターネット、ウェブベース企業及びシステムの継続的成長、並びにコンピュータの急増に伴い、温度制御された、外部から管理できる場所に複数のサーバコンピュータを収容するデータセンターが数多く存在することはよく知られている通りである。
【0004】
図1A及び図1Bに、現在よく知られているような古典的なデータセンターネットワーク集合体を示す。図1Aには、典型的なネットワークデータセンターアーキテクチャ100の概略図を示しており、ローカルルータ103a〜fが散在するブレードサーバ107a〜nで満たされたラック102a〜nの最上部に最上位スイッチ101a〜nが存在する。追加のストレージルータ及びコアスイッチ105a〜b、及び追加のラックユニット108a〜nが、追加サーバ104e〜k及びルータ106a〜gを含む。図1bには、エッジルータシステム112a〜hの周囲に配置された周辺サーバ111a〜bnを含むシステムの例示的な物理図110を示す。通常、このような集合体110は、ラックサーバからこれらのトップオブラックスイッチへの1Gbイーサネットを有し、しばしばエッジ及びコアルータへの10Gbイーサネットポートを有する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、典型的システムのサイズ及び電力要件を抑えると同時にコストを削減する、ネットワーク集合体に焦点を合わせたパケットスイッチング機能のためのシステム及び方法が必要とされており、本開示はこれを目的とする。
【図面の簡単な説明】
【0006】
【図1A】典型的なデータセンターシステムを示す図である。
【図1B】典型的なデータセンターシステムを示す図である。
【図2】ネットワーク集約システムの概観を示す図である。
【図3】ラックシステム内の例示的なデータセンターの概観を示す図である。
【図4】ネットワーク集約システムの高水準トポロジを示す図である。
【図5A】ネットワーク集約システムの例示的なスイッチのブロック図である。
【図5B】MACアドレスの符号化を示す図である。
【図6】ネットワーク集約システムのブロードキャスト機構の第1の実施形態を示す図である。
【図7】ネットワーク集約システムのユニキャストルーティングの例を示す図である。
【図8】ネットワーク集約システムの耐障害性ユニキャストルーティングの例を示す図である。
【図9】ネットワーク集約システムのブロードキャスト機構の第2の実施形態を示す図である。
【発明を実施するための形態】
【0007】
本開示は、以下に例示して説明するようなネットワーク集約システム及び方法に特に適用可能であり、これに関連して本開示を説明する。しかしながら、本システム及び方法は、本開示の範囲に含まれるその他の要素及びアーキテクチャを使用して実施できるので、より実用性が高く、従って本開示は、以下で説明する例示的な実施形態に限定されるものではないと理解されたい。
【0008】
本システム及び方法はまた、1つのノードにつき複数のリンクをサポートするツリー状又はグラフトポロジを使用してルーティングをサポートし、この場合、各リンクは、トポロジ内で上りリンク、下りリンク、又はラテラルリンク、又はこれらの両方として指定される。また、システム内の各ノードは、複合計算/スイッチノードであっても、又は単なるスイッチノードであってもよく、以下でより詳細に説明するように、いずれのノード上にも入出力部(I/O)が存在することができる。システムは、セグメント化されたイーサネット媒体アクセス制御(MAC)アーキテクチャを有するシステムを提供することもでき、このアーキテクチャは、MAC IPアドレスを内部MAC及び外部MACに再利用し、通常であればMACがスイッチに送り込むための物理シグナリングとなったであろうものを利用する方法を有することができる。システムは、非スプーフィング通信方法、及び耐障害性ブロードキャスト方法を提供することもでき、これらの方法は、耐障害性のためのユニキャスト誤ルーティング方法を有することができる。ネットワークセキュリティの側面から言えば、スプーフィング攻撃とは、1人の人物又はプログラムが、データを改ざんして不当な利益を得ることによりうまく他人になりすます状況のことである。
【0009】
システムは、管理プロセッサが互いに「信頼」できるように、管理プロセッサ間に厳密なセキュリティを提供することもできる。(以下でより詳細に説明する)図5Aに示すシステム例では、各SoC内に管理プロセッサが存在する(図5Aのブロック906のM3マイクロコントローラ)。管理プロセッサ上で実行されるソフトウェアは、a)ベンダ(この場合はSmooth−Stone社)が開発したものでコードを検証済みであり、b)非ベンダコードはプロセッサ上で実行できない、という理由で信頼できる。管理プロセッサ間で信頼関係を維持することにより、これらのプロセッサは、コマンドを通信し(例えば、別のノードを再起動し)、又はユーザがスプーフィングする可能性を心配することなく別のノードに機密情報を要求して、情報にアクセスし又はシステムを制御できるようになる。
【0010】
システムは、システムオンチップ(SOC)内の常時オンパワードメイン内に統合マイクロコントローラを有するネットワークプロキシを提供することもでき、このネットワークプロキシは、より大型の内蔵プロセッサのためのネットワークプロキシングを引き継いで、これをサブツリーに適用することができる。システムは、ルーティングヘッダ及びルーティングテーブルにわずかな変更を加えるだけで、ルーティング可能なファットツリー状構造のサイズを劇的に拡張できるマルチドメイニング技術を提供することもできる。
【0011】
図2に、ネットワーク集約システム300を示す。このネットワーク集合体は、10Gb/秒のイーサネット通信などの1又はそれ以上の高速リンク301(太線)をサポートし、このリンクが、集約ルータ302と、図3に示す3つのラック303a〜cなどの1又はそれ以上のラック303とを接続する。第1のラック303a内では、ネットワーク集約システムが、ラック内の棚上のサーバコンピュータなどの1又はそれ以上のSmooth−Stone社の演算器306a〜d間に、太線で示す複数の高速10Gb経路を提供する。各Smooth−Stone社の演算器のさらなる詳細は、2009年10月30に出願された「マルチプロセッサシステムオブチップ(SOC)における通信強化のためのシステム及び方法」という名称の米国仮特許出願第61/256,723号により詳細に記載されており、この特許出願はその全体が引用により本明細書に組み入れられる。トップオブラックスイッチに置き換えてSmooth−Stone社の演算器内の内蔵スイッチ306a〜dを使用することで、劇的な量の電力及びコストを削減する一方で、集約ルータ302に10Gbイーサネットポートを提供することができる。ネットワーク集約システムのスイッチング構造は、従来のイーサネット(1Gb又は10Gb)をXAUI構造に統合することができ、Smooth−Stone社の演算器は、サードパーティのイーサネット接続サーバ用のトップオブラックスイッチとして動作することができる。
【0012】
真ん中のラック303bには、ネットワーク集約システム内のラックの別の構成を示しており、既にトップオブラックスイッチ308aを含んでいる既存のデータセンターラックに1又はそれ以上のSmooth−Stone社の演算器306e、fを統合することができる。この場合、このITグループは、これらのグループの他の演算器を1Gbイーサネットを介して既存のトップオブラックスイッチまで接続し続けることができ、10GbのXAUI構造を介して内部のSmooth−Stone社の演算器を接続することができ、これらの演算器を、図2に示すような1Gb又は10Gbイーサネット相互接続のいずれかを使用して既存のトップオブラックスイッチまで統合することができる。第3のラック303cには、データセンターのラックを従来通りに配置した現行の方法を示している。第3ラック303c内の細い赤線は、1Gbイーサネットを表す。従って、従来、データセンターのラックの現行の配置では、トップオブラックスイッチ308bまでが1Gbイーサネットであり、トップオブラックスイッチから集約ルータまでが10Gb(太い赤線301)である。なお、存在する全てのサーバは無限量であるが、本明細書では説明を明確かつ単純にするためにこれらを有限量で示している。また、拡張SSサーバを使用すると、これらは以下で説明するように独自のXAUIスイッチング構造を動作させるので、追加ルータが不要となる。
【0013】
図3に、システムの一実施形態による例示的な「ラック内データセンター」400の概観を示す。「ラック内データセンター」400は、10GbイーサネットPHY401a〜n及び1GbプライベートイーサネットPHY402を有することができる。大型コンピュータ(パワーサーバ)403a〜nは、検索、データマイニング、インデックス付け、JavaソフトウェアフレームワークであるApache Hadoop、一群のコンピュータ上の膨大なデータセットに関する分散コンピューティングをサポートするためにGoogle社によって導入されたソフトウェアフレームワークであるMapReduce、クラウドアプリケーションなどをサポートする。ローカルフラッシュ及び/又は固体ディスク(SSD)を含むコンピュータ(サーバ)404a〜nは、検索、MySQL、CDN、software−as−a−service (SaaS)、クラウドアプリケーションなどをサポートする。単一の大型低速ファン405が、その上に垂直に実装されたサーバの対流冷却を増強する。データセンター400は、ハードディスクのアレイ406を単なるディスクの束(JBOD)構成などの形で有し、任意にSmooth−Stone社の演算器をディスクフォームファクタ(例えば、アレイ406及び407内の緑のボックス)の形で有し、これらは任意にディスクコントローラとして動作する。ハードディスクサーバ又はSSディスクサーバは、ウェブサーバ、ユーザアプリケーション、及びクラウドアプリケーションなどとして使用することができる。古いアプリケーションのための標準的イーサネットインターフェイスを備えたストレージサーバのアレイ407及び履歴サーバ408a、b(あらゆるサイズ、あらゆるベンダ)も示している。
【0014】
ラック内データセンター400は、独自のシステム相互接続法を使用し、これにより電力及び配線が劇的に削減され、異種システムが可能になり、既存のイーサネットベースのサーバが統合され、古いアプリケーションが有効になる。1つの態様では、完全なサーバ又はストレージサーバを、ディスク又はSSDのフォームファクタで、4つのServerNodes(商標)を含む8〜16個のSATAインターフェイス及び4つのServerNodes(商標)を含む8つのPCIe x4インターフェイスとともに配置する。この態様は、(単複の)ディスクと対になった専用ボードを使用し、ウェブサーバ、ユーザアプリケーション、クラウドアプリケーション、ディスクキャッシュ機能などをサポートするディスク及び/又はSSD+ServerNode(商標)をサポートする。
【0015】
Smooth−Stone社のXAUIシステム相互接続では、ラックの電力、配線、及びサイズが減少する。個々のサーバ上に、強力で高価なイーサネットスイッチ及び強力なイーサネットPhyは必要ない。ケーブル(ケーブルの複雑性、コスト、重大な故障原因)も劇的に減少する。この態様では、ラック内で異種サーバを混合することもでき、イーサネット又はSATA又はPCIeを使用するあらゆる装置をサポートする。この態様を、システム相互接続に統合することもできる。
【0016】
本明細書に示す、パケットスイッチ機能を備えたサーバオンチップ(SOC)の態様は、ネットワーク集合体に焦点を当てたものである。SOCは、例えばCisco社のスイッチ又はルータなどの業界標準ネットワークスイッチと機能的に完全に同等ではない。しかしながら、本明細書を通じて説明するいくつかの用途では、SOCの方が良好な価格/性能比、並びに電力/性能比をもたらす。SOCは、送信元/宛先MACアドレスに基づいてルーティングを行うレイヤ2パケットスイッチを含む。SOCは、仮想ローカルエリアネットワーク(VLAN)をさらにサポートし、ドメイン到着パケットに対して設定可能なVLANフィルタリングを行ってドメイン内の不要なトラフィックを最小化する。SOC内に埋め込まれたMACは、VLANサポートを明確に有する内蔵スイッチを伴わずに、SOC全体にVLAN機能を提供する完全なVLANサポートを有する。SOCは、管理プロセッサによってシステムを起動し、管理プロセッサにリンク状態の推移を通知して、障害を迂回するルートをとるようにルーティング構成を再プログラムすることもできる。このような機能は、レイヤ3(又はそれよりも上位の)処理を必要としない(すなわち、ルータではない)。SOCは、完全なVLANサポート、QoS/CoSのサポート、アドレス学習、フィルタリング、スパニングツリープロトコル(STP)などの提供も行わない。
【0017】
図4に、スイッチング構造によって接続されたXAUI接続のSoCノードを示すネットワークシステムの高水準トポロジ800を示す。ツリーの最上位から、10GbイーサネットポートEth0 801a及びEth1 801bが来る。楕円802a〜nは、計算プロセッサと内蔵スイッチの両方を含むSmooth−Stone社のノードである。これらのノードは、内部スイッチに接続された5つのXAUIリンクを有する。スイッチングレイヤは、この5つのXAUIリンクを全てスイッチングに使用する。レベル0の葉ノード802d、e(すなわち、N0nノード、又はx=レベル及びy=アイテム番号とするNxy)は、相互接続に連結するために1つのXAUIリンクしか使用せず、XAUI、10Gbイーサネット、PCIe、SATAなどとして使用できる4つの高速ポートをI/Oへの連結のために残しておく。ツリー及びファットツリーの大部分では、アクティブノードが葉ノードとしてのみ存在し、他のノードは純粋なスイッチングノードである。この方法により、ルーティングが大幅に容易になる。トポロジ800は、いずれのノードを複合計算及びスイッチノードにすることも、又は単なるスイッチノードにすることもできるという柔軟性を有する。ほとんどのツリータイプの実施構成は、I/Oを葉ノード上に有するが、トポロジ800では、あらゆるノード上にI/Oが存在するようにする。一般に、ツリーの最上位にイーサネットを配置すると、イーサネットまでの平均ホップ数が最小化される。
【0018】
より詳細には、図6のツリー志向トポロジに示す楕円は、計算クラスタ内の個々のノードを表す。図5Aに、クラスタの個々のノードの1つの例示的な実施構成を示す。例えば、図6のトポロジの従来の実施構成を見ると、通常、計算ノードは、下位レベルの葉ノード(例えば、N00〜N08)内に見出され、上位レベルのノードは計算要素を有しておらず、単なるネットワークスイッチング要素(N10〜N21)である。図6Aに示すノードアーキテクチャでは、A9コア(905)を任意に有効にすることができ、或いは単に電源オフのままにしておくこともできる。従って、図6の上位レベルのスイッチングノード(N10〜N21)を(従来の実施構成のように)純粋なスイッチング要素として使用することもでき、或いはA9コアモジュールの電源をオンにして、これらを計算クラスタ内の完全なノードとして使用することもできる。
【0019】
スイッチアーキテクチャでは、イーサネットフレームの先頭にルーティングフレームを追加することが必要である。スイッチは、ルーティングフレーム内のフィールドに対してのみ動作し、イーサネットフレームを直接検査することはない。図5aには、本明細書に開示するシステム及び方法の1つの態様による例示的なスイッチ900のブロック図を示している。この図には、4つの関心領域910a〜dが存在する。領域910aは、CPUと内部MACの間のイーサネットパケットに相当する。領域910bは、内部MACにおけるイーサネット物理インターフェイスのイーサネットフレームに相当し、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを含む。領域910cは、外部MACにおけるイーサネット物理インターフェイスのイーサネットフレームに相当し、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを含む。領域910dは、ルーティングヘッダのプロセッサ901と外部MAC904の間のイーサネットパケットに相当する。このセグメント化されたMACアーキテクチャは非対称である。内部MACは、ルーティングヘッダプロセッサ内へのイーサネット物理シグナリングインターフェイスを有し、外部MACは、ルーティングヘッダプロセッサ内へのイーサネットパケットインターフェイスを有する。従って、MAC IPは、内部MAC及び外部MACに再利用され、通常であればMACがスイッチ内に送り込むための物理シグナリングとなったであろうものを利用する。MAC構成は、A9コア905のオペレーティングシステムのデバイスドライバが、内部Eth0 MAC902及び内部Eth1 MAC903を管理して制御するようなものである。管理プロセッサ906のデバイスドライバが、内部Eth2 MAC907を管理して制御する。外部Eth MAC904は、デバイスドライバによって制御されない。MAC904は、プロミスキャスモードで構成されて、ネットワークモニタリングのためのフィルタリングを行わずに全てのフレームを転送する。このMACの初期化は、MACのハードウェアインスタンス化と、他のいずれかの必要な管理プロセッサ初期化との間で調整される。外部Eth MAC904レジスタは、A9 905及び管理プロセッサ906のいずれのアドレスマップからも見える。外部Eth MAC904のための割り込みは、A9又は管理プロセッサのいずれかにルーティング可能である。XGMACは、XGMIIリンクの障害状態のあらゆる変化、PHYのホットプラギング又は取り外し、アライブ状態又はリンク状態の変更、及びいずれかのRMONカウンタが閾値レジスタと等しい値に達することを含む、CPUがモニタしたいと望み得るいくつかの割り込み可能なイベントをサポートする。
【0020】
場合によっては、特定のマイクロアーキテクチャに応じ、XAUIにわたってプリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドが存在してもよい。ルーティングフレームヘッダプロセッサが、これらのフィールドを標準化することができる。XAUIインターフェイスは、これらのフィールドの一部又は全部を必要とすることもある。この場合、領域910dのルーティングヘッダプロセッサが、スイッチに入るこれらのフィールドを追加し、スイッチから出るこれらのフィールドを削除する必要がある。XAUIで送信する必要があるバイト数を削減するために、これらの3つのフィールドを削除することができる(XAUIインターフェイスが許可する場合)。この場合、領域910bのルーティングヘッダプロセッサが、スイッチに入るこれらのフィールドを除去し、スイッチから出るこれらのフィールドを再び追加する必要がある。
【0021】
ルーティングフレームヘッダプロセッサは、MACからイーサネットフレームを受け取り、ルーティングフレームをスイッチへ送信する。このプロセッサはまた、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを標準化し、ルーティングヘッダを先頭に追加し、スイッチからルーティングフレームを受け取り、イーサネットフレームをMAC内へ送信する。次に、このプロセッサは、ルーティングヘッダを除去し、プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドを標準化する。なお、構造内を流れるフレームは全てルーティングフレームであり、イーサネットフレームではない。イーサネットフレーム/ルーティングフレームの変換は、パケットがMACを介して構造に出入りするときにのみ行われる。また、スイッチ内のルーティングロジックにより、ルーティングフレーム内のフィールドが変更されることもある。イーサネットフレームは(プリアンブルフィールド、フレーム開始フィールド、及びフレーム間ギャップフィールドの追加/削除以外は)決して変更されない。
【0022】
ルーティングフレームは、ルーティングフレームヘッダにイーサネットフレームのコア部分を加えたもので構成され、以下の表1に示すような構造である。
表1
【0023】
なお、ビットのサイジングを行うための実施構成の前提は、4096ノード→12ビットのノードIDである。これらのフィールドは、必要に応じて実施中にサイズ変更することができる。
【0024】
ルーティングフレームヘッダは、以下の表2に示すフィールドで構成される。
表2
【0025】
スイッチが、チェックサムに失敗したパケットを受け取った場合、このパケットを欠落させ、統計カウンタを増分して管理プロセッサに通知する。
【0026】
ルーティングフレームプロセッサは、複数の宛先MACアドレスの符号化を識別する。参考までに、MACアドレスは、図5bに示すようにフォーマットされる。以下の表は、MACアドレス内の3バイトのOUI及び3バイトのNIC固有のフィールドの使用法を示すものである。本明細書に開示するシステム及び方法の新規の態様の1つは、以下の表3の、「構造内ノードのローカルアドレスがMAC Lookup CAMにヒット」という2番目の項目にも示すように、追加のアドレスビットを使用して内部MACから外部MACへのマッピングを符号化することである。
表3
【0027】
さらに、表3では、1つの内部ノード又はリンクが全ての外部MAC部分をアドレス指定できるようにする「ノード符号化ユニキャスト」及び「リンク符号化ユニキャスト」、並びに隣接ノードへのマルチキャストを可能にする「隣接マルチキャスト」という項目に他の新規の態様を見出すことができる。
【0028】
なお、SS_MAC_NODE_ENCODED_MAGIC及びSS_MAC_LINK_ENCODED_MAGICという値は、これらのMACアドレスタイプを一意に識別するために使用される定数識別子である。「魔法数」」という用語は、ファイルフォーマット又はプロトコルを識別するために使用される一定の数値又はテキスト値を表す標準的業界用語である。これらの魔法数は、ハードウェアの初期化中に標準値へのデフォルト設定を行う2つのレジスタ(magicNodeEncodedMAC及びmagicLinkEncodedMAC)内で設定されるが、必要に応じて管理プロセッサソフトウェアがこれらを変更できるようにもする。
【0029】
以下の表4に示すように、ヘッダプロセッサは、6バイトのMACアドレスを12ビットのノードIDにマッピングするMAC Lookup CAM(連想メモリ)であるmacAddrLookupを含む。
表4
【0030】
このCAM内の行数は実施構成によるが、約256〜1024行であると予想される。管理プロセッサは、SS構造内の全てのノードのノードIDマッピングでCAMを初期化する。行には、そのNode Localビットの設定に応じて2つのタイプがある。Node Localフィールドでは、デフォルトMACアドレスに関してCAM内のMACアドレスを4:1に圧縮し、4つのMAC全てを、以下の表5のCAMテーブル内の1つの行にマッピングすることができる。
表5
【0031】
CAM内の任意の行では、MACアドレスエイリアスをノードにマッピングすることができる。Linux(及びMAC)では、(ifconfig eth0 hw ether 00:80:48:BA:d1:30などにより)ネットワークインターフェイス上でMACアドレスを再割り当てすることができる。仮想化/クラウドコンピューティングでこれを使用して、セッション開始後の再ARPの必要性を避けることもある。
【0032】
スイッチアーキテクチャは、Switch OUIに一致するアドレスのMACアドレスのNIC固有部分の3バイトのみを記憶する2次MAC Lookup CAMを提供する。このローカルOUI CAMの利用可能性は実施構成によって決まる。以下の表6を参照されたい。
表6
【0033】
3種類のMACアドレス符号化のための最大ノード制限数は、以下のように求めることができる。
1.デフォルトMACアドレス−管理プロセッサが、構造内のノードの各々のNode Localマッピングを設定する。各ノードのCAM内に1つのエントリが存在する。最大ノード数は、MAC Address Lookup CAM内の最大行数によって制御される。
2.ノード符号化アドレス−全てのMACを、ノード符号化アドレスを使用するように再プログラムする。このようにして、ノードIDをMACアドレス内に直接符号化する。MAC Lookup CAM内のエントリは使用しない。最大ノード数は、Unicast lookupテーブル(Lookup CAMと比較すると容易に大きくできる)内の最大行数によって制御される。なお、これにより、MAC Lookup CAMロジックが壊れた場合に何らかのリスク緩和が得られる。ノード符号化アドレス案の使用例を提供する。
3.任意のMACアドレスエイリアス−CAM内の行を取り出す。一例として、512行のCAMは、256個のノード(ノードローカルアドレス)+ノードごとに1つのMACアドレスエイリアスを保持することができる。
【0034】
Lookup CAMは、ルーティングヘッダ生成中にしかアクセスを受けないので、管理プロセッサは、実際には構造内のMACアドレスがパケット内で送信元又は宛先MACアドレスとして使用されている場合にのみ行に投入すればよい。換言すれば、2つのノードが相互に対話しない場合、マッピング行を生成する必要はない。しかしながら、通常は、管理プロセッサがこのような知識を持つことはないので、全てのノード内で全てのノードのマッピングが生成されると予想される。また、Lookup CAMでエントリが生成されない場合でも、パケットをイーサネットゲートウェイから外部ルータを経由して構造内に戻し、宛先ノードまでルーティングすることにより、実際にはやはりルーティングに成功すると思われる。
【0035】
表7に、宛先ノードとポート以外の全てのフィールドのルーティングヘッダ内のフィールドの設定方法を定義する。
表7
【0036】
表8には、構造内のアドレスの宛先ノード及びポートの設定方法を定義する。
表8
【0037】
表9には、構造外のアドレスの宛先ノード及びポートの設定方法を定義する。
表9
【0038】
また、本明細書で開示するシステム及び方法の管理プロセッサのソフトウェアアーキテクチャは、現在のところ、「信頼」すべき管理プロセッサノードの能力に相互に依存する。この、管理プロセッサから管理プロセッサへの通信に対するより厳しいセキュリティは、構造を横切るプライベート管理LANに対するより良好なセキュリティとともに望ましいものである。複数の「堅固な」セキュリティドメインを必要とする環境では、顧客が構造内のセキュリティドメインを容易に混同しないことを単純に定義することにより、この構造問題を緩和することができる。このような場合、トップオブラックスイッチに14ノードボードを接続して、顧客が各14ノードボードのVLAN粒度を制御できるようにすることができる。
【0039】
説明したマルチドメイン構造アーキテクチャは、構造を横切る安全な「トンネル」及びドメインを生成することによってVLANサポートの欠如に対処し、VLAN保護されたルータポートと1:1で相互運用することができる。
【0040】
本明細書に開示するシステム及び方法のドメイン管理方法は以下の通りである。構造内の複数のドメインIDをサポートする。ノード(管理プロセッサ、MAC0、MAC1、ゲートウェイ)内のMACの各々をドメインIDに個別に割り当て(設定されていない場合には0をタグ付け)できるようにする。ノード内のMACの各々が、管理ドメインへのアクセスを示すビットを有することができるようにする。MACに関連するドメインIDについては、管理プロセッサのみが割り当てることができ、A9が変更することはできない。MAC(内部及び外部の両方)により生成されたフレームでは、ルーティングフレームプロセッサが、このMACに関連するドメインID及び管理ドメイン状態をルーティングフレームにタグ付けする。ドメインは、このドメイン内にパケット(ユニキャスト及びマルチキャストの両方)を保持し、このドメイン外のMACがこれらのパケットを傍受又はスプーフィングできないようにするという点で、トンネル又はVLANの効果をもたらすようになる。また、この方法は、5ビットのドメインIDを使用する。これにより、例えば、非定義(すなわち0)のドメインIDを有するパケットが配信されたかどうかを定義するMACごとのブール値を有するスイッチ、或いは定義済み(0以外)ではあるが一致しないドメインIDを有するパケットが配信されたかどうかを定義するMACごとのブール値を有するスイッチなどの、ドメイン処理を制御するためのオプションが加わる。スイッチ内のさらなるオプションは、ノード符号化MACアドレスをMACごとにオフにする(別の形の潜在的な攻撃ベクトルを排除する)ことができる。
【0041】
管理プロセッサから管理プロセッサへの通信を安全に保つために、全ての管理プロセッサMAC上の管理ドメインビットにマーキングすることができる。一般に、管理プロセッサは、(慣例により)ドメイン1上でルーティングを行うべきである。このような技術により、全ての管理プロセッサが管理ドメイン上でパケットをトンネリングでき、従って他のVLAN又はドメイン上の他の装置(構造内部又は外部)がこれらを検査又はスプーフィングできないようにすることができる。さらに、セキュアな管理LANを提供するために、管理ドメインビットを設定したゲートウェイMACを割り当てて、管理パケットを管理プロセッサドメインに対してプライベートに保つことができる。また、このスイッチ構造は、各ゲートウェイMACを別個のドメインに関連付けることにより、スイッチ内の「マルチテナント」をサポートすることができる。例えば、各ゲートウェイMACは、外部ルータ上の個別のポートに接続して、このポートを任意にVLANに関連付けることができる。ゲートウェイ内にパケットが入ってくるときには、これらにドメインIDをタグ付けし、構造全体にわたり、このドメインに関連するMACに対してこのトラフィックをプライベートに保つ。
【0042】
このスイッチは、数多くのレジスタ(aka CSR、aka MMR)をサポートして、ソフトウェア又はファームウェアがスイッチを制御できるようにする。これらのレジスタの実際のレイアウトは、実施構成により定められる。表10に示すフィールドは、ソフトウェアの読み出し/書き込みである。これらのレジスタは全て、A9からの書き込みからレジスタを保護するための機構を有する必要がある(セキュアモード又は管理プロセッサのプライベートバス上とすることができる)。
表10
【0043】
表11に示すレジスタは、スイッチの実施構成に含まれるが、ソフトウェアによるアクセスが可能である必要はない。
表11
【0044】
なお、ソフトウェアは、アクティブなパケットルーティングに関して自動的にルーティングテーブル(unicastRoute)及びmacAddrLookup CAMを更新できるべきである。1つの実施構成は、更新動作中にこれらのテーブルへのルーティングアクセスを防ぐことである。
【0045】
ブロードキャスト/マルチキャストルーティング
図6に、本明細書に開示するシステム及び方法の1つの態様による例示的なブロードキャスト機構1000を示す。点線1003で示すように、ノードN10 1001とN21 1002の間のリンクが機能していない。マルチキャストパケットのルーティングヘッダの生成中、送信元ノードは、この送信元ノードの増分したブロードキャストIDをルーティングフレームに入れる(rframe.bcastID)。あるノードがマルチキャストルーティングフレーム(すなわち、rframe.rfType==Multicast||rframe.rfType==NeighborMulticast)を受け取ると、このノードは、このブロードキャストパケットを既に認識しているかどうかをチェックする。このチェックは、ブロードキャスト送信元ノード及びブロードキャストIDで形成されたタグを有するbcastIDSeen CAMにアクセスすることによって行われる。これが既に認識されていた場合(すなわち、CAMヒット)、何も動作は行われない。ブロードキャストフレームがまだ認識されていなかった場合、ノードは、これを適当な内部ポート及び外部ゲートウェイ(intPortBroadcastVecレジスタ)にブロードキャストし、このフレームが入ってきたリンク以外の全ての外向きのXAUIリンクを通じてこれを再ブロードキャストする。なお、broadcastLateralレジスタが設定されている場合、ラテラルのみを通じてブロードキャストする。ほとんどのトポロジでは、ラテラルにブロードキャストする必要はなく、これを行うことで、重複するブロードキャストパケットを無効にすることにより、その数を減少させることができる。次に、このブロードキャストタグをbcastIDSeenCAMにFIFOの順で追加する。図7において、N04 1004が、全ての近隣、すなわちN11 1105へのブロードキャストを開始する。N11は、このパケットを認識していなかったので、到着ノード以外の全ての近隣、この例ではN21 1002、N20 1006、N03 1007、及びN05 1008にブロードキャストして、このパケットを内部に受け入れる。ノード03及び05は、このパケットを認識していなかったので、ブロードキャストを内部に受け入れる。N21は、このパケットを認識していなかったので、到着リンク以外の全てのアクティブなリンク(例えば、N10、N12 1009)にこのパケットをブロードキャストし、このパケットを内部に受け入れる。N20は、到着リンク以外の全てのアクティブなリンク(すなわち、N12)にこのパケットをブロードキャストし、このパケットを内部に受け入れる。N10は、N00 1010、N01 1011、及びN02 1012に下り方向にブロードキャストする。N12は、N06 1013、N07 1014、N08 1015、並びにN21及びN20の一方(ブロードキャストパケットの取得元ではない方)に再ブロードキャストする。なお、N20及びN21の一方、並びにN12は、このパケットを2回認識する。これらのノードは、最初の時点にのみ動作を行い、2回目には、このパケットがブロードキャストCAMに重複としてヒットし、無視される。
【0046】
ユニキャストルーティング
他のノードへのユニキャスト
(図7に示すような)ユニキャストルーティングは、非マルチキャスト(すなわち、ユニキャスト)パケットを次のノードにルーティングするものである。これは、宛先ノードに到達するために利用できるリンクのベクトルを提供するソフトウェア計算したunicastRoute[]次ノードルーティングテーブルを利用することによって行われる。
条件
rframe.rfType==Unicast
ルーティング
【0047】
障害迂回ルーティングに関しては、相当な複雑性が存在する。無障害ルーティング及び障害迂回ルーティングについて別個に説明する。
【0048】
従来、ツリールーティングでは、パケットは、(送信元、宛先)の共通親に達するまで上り方向にルーティングされる。この上り方向ルーティングは、確定的、非記憶的、又は適応的なものとすることができる。その後、パケットは、確定的ルーティングを使用して下り方向に宛先へルーティングされる。
【0049】
一例として、図7に、ノードN00 1010からN08 1015へのパケットルーティングを示す。パケットは、上りフェーズでノードN10 1001を経由して共通祖先(N21)へ、その後下りフェーズで宛先へルーティングされる。
【0050】
なお、ノードN10における上りフェーズ中は、2つのリンク候補(N10,N21)及び(N10,N20)が存在する。確定的に第1のリンク候補を選択することもでき、或いは適応的アルゴリズムによってこれらのリンクのいずれかを動的に選択することもできる。しかしながら、ノードが共通祖先に達して下り方向に方向を変えると、ノードが宛先に到達するための冗長経路は(通常は)存在しない。
【0051】
障害がない場合のユニキャストルーティング
このunicastRouteテーブルでは、各リンクに2ビットのリンク重みの注釈が付けられ、ソフトウェアは、このリンクを介した宛先ノードまでの相対的コスト/距離を表すことができる。慣例により、リンク重みは以下を表すべきである。
・0=ルートなし
・3=ダイレクト次ホップ接続
・1及び2=ソフトウェアが計算した相対的コスト。一例として、コストが2ホップ、3ホップ、及び6ホップの3つのリンクをまたぐ経路が存在する場合、最初の2つのリンクに重み=2を割り当て、6ホップ経路に重み=1を割り当てることができる。
無障害ユニキャストルーティングのためのアルゴリズム
・ユニキャストルーティングテーブルからリンク重みベクトルを取得する。
・linkWeightVector=unicastRoute[rframe.dstNode]
・入ってきたリンクを削除して、ここに返送する可能性を排除する。
・機能していないリンクを全て削除する。
・この時点で、関連するリンク重みを有するリンク候補リストを得る。
・最も高い優先度(3)から開始して下へ1までリンク重みを反復する。この優先度のリンク候補リストを収集し、候補リストに少なくとも1つのリンクが挙がったら停止する。この結果、優先度が最も高いリンク候補リストが得られる。一例として、重み=2のリンクが2つ、重み=1のリンクが2つ存在する場合、優先候補リストには、重み=2のリンク2つが含まれる。
・適応的レジスタをチェックして、適応的ルーティングを行うか、それとも確定的ルーティングを行うかを判断する。
・適応的==0は、確定的ルーティングを使用すべきであることを示し、従って優先候補リストから第1のリンクを選択する。
・適応的==1は、適応的ルーティングを使用すべきであることを示す。スイッチの実施構成では、ターゲットリンクを適応的に選択するためのアルゴリズムを優先候補リストから選択する。この適応的アルゴリズムを、リスト内総当たりのように単純にすることができる。或いは、FIFOのない深さ、リンク速度、...などの他の特性を織り込むように選択することもできる。
・実施構成のオプションとしては、レジスタオプションを追加して、ルータが全ての非ゼロの重みから適応的に選択を行えるようにすること、或いは優先度が最も高い候補リストからのみ適応的に選択を行うことが考えられる。
・この選択したリンクでパケットを送出する。
【0052】
耐障害性ユニキャストルーティング
耐障害性ユニキャストルーティングの複雑性の原因として2〜3の問題点が挙げられる。
・局所的知識のみで障害ルーティングを行おうと望むこと。ノードは、あるリンクが隣接ノードに対して機能していないことを暗黙的に知る。障害が存在する場合に包括的で統一された状態を維持するのは複雑であるため、リンク(又はノード)が構造内のどこか他の場所で機能していないことを伝達する必要性を避けるような設計を選択する。
・ツリー内のルーティングの性質。パケットルーティングの上りフェーズ中は、リンクを冗長リンクから適応的に選択することができ、従って通常の適応的リンク選択によるリンクを避けることが容易になり得る。
・しかしながら、パケットが降下し始めると、従来、(ルーティングルールに従う)降下経路には冗長経路が存在せず、従って障害ルーティングが課題となり得る。
・図8にリンク障害(N10、N21)を示しており、ユニキャストルーティングにより、上述した通常の適応的ルーティングアルゴリズムを使用して(N10、N20)リンクを選択した。しかしながら、パケットがN20へ上向きにルーティングされ、リンク(N20、N12)が機能していない場合、宛先に容易に到達できる経路はない。
【0053】
障害迂回ルーティングを処理するための方法は2つある。
・ソフトウェアが、重み=1の代替手段ではあるが望ましくない経路を作成することができる。これらを避難経路と呼ぶ。これらは、障害迂回ルーティング中に使用する厳密なルーティングルールに違反する可能性がある優先度の低い経路である。一例として、リンク(N20、N12)が機能していないものとした場合、N20のunicastRoute[N08]エントリは、重み=2のN12へのリンク及び重み=1のN11へのリンクを含むことができる。このようにして、通常の適応的ルーティングアルゴリズムは、N20−>N11−>N21−>N12−>N08の経路を自動的にとる。
・構造アーキテクチャは、「誤ルーティング」と呼ぶ技術を含む。誤ルーティングでは、反復的に同じ経路を引き返す。
・これらの技術は、いずれも実質的なユニキャスト耐障害性をもたらす。
【0054】
ユニキャスト誤ルーティング
一例として、(図9に赤で示すような)障害のある3つのリンク1101、1102、及び1103を含む以下のトポロジについて検討する。N0からN3へのユニキャストルートを検討する。誤ルーティング技術を理解するために以下のルーティングについて検討するが、このルートは、適応的に選択できたいくつかのルートのうちの1つにすぎないと理解されたい。
・パケットがN0からN6へルーティングされる。
・パケットがN6からN10へルーティングされる。
・N10は、パケットが入ってきたリンク以外にN3に到達するための経路を有していないと認識する。N10は、ルーティングヘッダ内に誤ルーティングビットを設定して、これをN6へ返送する。
・N6は、パケットが誤ルーティングされていることを認識し、ルーティングヘッダ内のmisrouteVector内のN10リンクのビットを設定し、誤ルーティングされていない別のリンクを選択して、パケットをN11へ送信する。
・N11は、パケットが入ってきたリンク以外にN3への経路を有していないと認識する。誤ルーティングビットは既に設定されており、これをN6へ返送する。
・N6は、パケットが誤ルーティングされていることを認識し、misrouteVectorにN11リンクを追加し(これでN10のリンクIDとN11のリンクIDを含む)、誤ルーティングされていない別のリンクを選択して、パケットをN7へ送信する。
・N7は、誤ルーティングビットが設定されていることを認識するが、N3への有効なリンク(N12へ)を有しており、従ってヘッダ内の誤ルーティングビットをクリアして、パケットをN12へ転送する。
・N12はN9へ送信する。
・現在、N9 unicastRouteは、N3へのリンク(重み=3)及びN8へのリンク(重み=2)を含む可能性が高い。N3への直接リンクは機能していないので、通常の適応的ルーティングではこれが選択されることはなく、パケットをN8へルーティングして、最終的にN3へルーティングする。
・N6がそのリンク候補リストを使い果たしていた(すなわち、misrouteVectorによってこれらが全て隠されていた)場合、この実施構成には2つの選択肢がある。
・このパケットを欠落させて、M3にルーティングの失敗を通知する。
・misrouteVectorをクリアして誤ルーティング設定を残し、下向きのリンク(存在する場合)の1つを通じてパケットを転送する。これにより、1つ下のレイヤで誤ルーティングが再試行される。この実施構成では、1つ下のレイヤオプションでこの再試行を有効にするためのレジスタビット(enableRecursiveMisrouting)を得たいと望むことができる。
スイッチが誤ルーティングアルゴリズムを開始するかどうかをソフトウェアが制御できるようにするenableMisroutingというレジスタが存在する。
【0055】
マルチドメイニング
発明者らは、マルチドメイニングについても認識しており、この目的は、ノードの(64K個のノードなどの)数多くのノードへのアドレス指定能力を、ユニキャストルーティングテーブルのサイズを64K個のノードに増やす必要なく高めることである。
【0056】
現在説明しているように、ユニキャストルーティングテーブルは、ノード番号(すなわち、0〜MAX_NODES−1)によってインデックスを付けた1次元アレイであり、典型的な実施構成では256個〜4K個のノードになる。
【0057】
この節では、現行のアーキテクチャを、いかにして最大ノードが64K個の複数のドメインをサポートするように変更するかについて説明する。
・ノード名空間を、0〜MAX_NODES−1のノードIDから、(ドメインID,ノードID)の2タプルに変更し、この場合ドメインIDとノードIDはいずれも0〜255である。従って、事実上256個のドメインが存在することができ、各ドメインが最大256のノードを含むことができる。
・ユニキャストルーティングテーブルを、MAX_NODEのサイズの1次元テーブルから256のサイズの2次元テーブルに変更する。これで、ユニキャストルーティングテーブルは、unicastRoute[NODES]の構造からunicastRoute[2][256]の構造に変更される。
・ローカルドメインルーティング:このドメイン内のノードにルーティングする場合、ユニキャストルーティングテーブルは、unicastRoute[0][ノードID]としてアクセスを受け、現在のノードから指定されたノードIDにルーティングするように重み付けされたリンクベクトルを提供する。
・リモートドメインルーティング:リモートドメイン内のノードにルーティングする場合、ユニキャストルーティングテーブルは、unicastRoute[1][ドメインID]としてアクセスを受け、現在のノードから指定されたドメインIDにルーティングするように重み付けされたリンクベクトルを提供する。
・ルーティングフレーム:ルーティングフレームにdstRemoteという1ビットを追加し、リモートドメインにルーティングする場合にこれを真(true)に設定する。
・ローカル管理MACアドレス:以下の節では、ノード符号化ユニキャストMACアドレスの符号化を以下のように記述する。
マルチドメイニングでは、これを以下のように変更する。
・ルーティングフレームヘッダの作成:表2に、ルーティングフレームヘッダを作成するためのアルゴリズムを示している。マルチドメイニングの場合、これを以下によって拡張する。
if ( dstDomain == myDomainID ) { // Route to local domain
rframe.dstRemote = false;
rframe.dstNode = dstNode;
}
else { // Route to remote domain
rframe.dstRemote = true;
rframe.dstNode = dstDomain;
【0058】
ネットワークプロキシ
ネットワークプロキシの概念は、メインプロセッサ(図5Aの905)の、低電力スリープ/休止状態の間にネットワークの存在を維持する能力、及びさらなる処理が必要な場合に知的に起動を行う能力である。ネットワークプロキシに関連するアーキテクチャ特性がいくつか存在する。
・ポートIDの再マッピングを可能にするためのCSR(portRemap)が存在する。実際には、スイッチが内部MAC0ポート(例えば、図5Aの902)にパケットを配信すべき場合、このPort Remapping CSRは、ソフトウェアがMAC0を管理プロセッサMAC(例えば、図5Aの907)に再マッピングして、ネットワークプロキシ処理のためにパケットが管理プロセッサに配信されるようにすることができる。このremapping CSRを使用して、MAC1トラフィックをMAC0に、又はMAC1トラフィックを管理プロセッサに再マッピングすることもできる。
・通常、スイッチは、ルーティングフレームの宛先ノードIDを見て、パケットがノード内の内部ポートに配信されるか、それとも他のXAUI接続ノードにルーティングされるかを判断する。この判断は、宛先ノードIDを「My Node ID」にマッチさせることによって行われる。nodeRangeLo<=Destination_Node<=nodeRangeHi||myNodeID==Destination_Nodeの場合、Node ID Matchレジスタ(nodeRangeLo,nodeRangeHi)が、ノード内の内部ポートにパケットが配信されるようにする。これにより、ノードが、ノードのサブツリーのためにプロキシできるようになる。
【0059】
典型的な使用順序は、以下の形をとる。
・管理プロセッサが、MAC0及びMAC1のIPからMACアドレスへのマッピングをノード上に保持する。これは、メインプロセッサOSから管理プロセッサにこれらのマッピングを明示的に通信することによって行うこともでき、或いはローカルの不当なARPブロードキャストを管理プロセッサにスヌープさせることによって非明示的に行うこともできる。
・メインプロセッサは、管理プロセッサと協動して低電力休眠状態に入る。この遷移中、管理プロセッサは、Port ID remapping CSRを、MAC0及びMAC1トラフィックを管理プロセッサにルーティングするように構成する。
・管理プロセッサは、全ての到着するMAC0/MAC1パケットを処理する。処理には3つの種類がある。
・(ARP応答及びICMPピングなどの)単純な応答を求めるいくつかのクラスのトランザクションに応答する。
・いくつかのクラスのパケット、典型的には他のコンピュータ宛てのユニキャスト又はブロードキャストパケットをダンプして無視する。
・いくつかのクラスのパケットを処理するためにメインプロセッサを起動しなければならないと判断する。管理プロセッサは、メインプロセッサを起動させ、Port ID remappingレジスタを取り消し、スイッチを通じてパケットを再送して、パケットがMAC0/1に再ルーティングされる。
【0060】
Wake−on−LANマジックパケット
従来のデスクトップコンピュータでは、起動しておくべきコンピュータを、ネットワークカードのための電力を確保した状態でシャットダウン(スリープ、休止、又はソフトオフ、すなわちACPI状態のG1又はG2)するが、コンピュータの電源からは切断しない。ネットワークカードは、この特定のサブネット(又はLAN全体、ただし、これには特殊なハードウェア又は構成が必要である)のためのブロードキャストアドレス上でブロードキャストされるMACアドレスを含む、マジックパケットと呼ばれる特定のパケットをリスンする。マジックパケットは、OSIモデルのデータリンク又はレイヤ2上で送信され、ブロードキャストアドレスのネットワーク内の全てのNICにブロードキャストされ、IPアドレス(OSIモデルのレイヤ3)は使用されない。リスン中のコンピュータがこのパケットを受け取ると、ネットワークカードは、正しい情報を求めてパケットをチェックする。マジックパケットが有効である場合、ネットワークカードは、コンピュータを休止又はスタンバイから復帰させ、又はこれを起動する。
【0061】
マジックパケットは、そのペイロード内のいずれかに、6バイトの1(結果的に、16進数でFF FF FF FF FF FF)の後にターゲットコンピュータのMACアドレスの16回の繰り返しを含むブロードキャストフレームである。マジックパケットは、上記の文字列に関してしか走査されず、完全なプロトコルスタックによって実際に解析されるわけではないので、あらゆるネットワークレイヤ及びトランスポートレイヤプロトコルのブロードキャストパケットとして送信することができる。通常、このマジックパケットは、ポート0、7、又は9へのUDPデータグラムとして送信され、又は以前はIPXパケットとして送信されていた。
【0062】
管理プロセッサは、上記のネットワークプロキシアーキテクチャを使用して、これらのWake−On−LANパケットをサポートすることができる。管理プロセッサは、これらのブロードキャストパケットを取得し、ノード上の他のMACのMACアドレスを知り、必要時にメインプロセッサを起動することができる。これらのWake−on−LANパケットをサポートするために、スイッチ内にさらなる機能は不要である。
【0063】
以上、本発明の特定の実施形態を参照しながら説明したが、当業者であれば、添付の特許請求の範囲により範囲を定義される本開示の原理及び思想から逸脱することなく、本実施形態に変更を加えることができると理解するであろう。
【符号の説明】
【0064】
100 ネットワークデータセンターアーキテクチャ
101a〜n 最上位スイッチ
102a〜n ラック
103a〜f ローカルルータ
104e〜k 追加サーバ
105a 追加ストレージルータ及びコアスイッチ
105b 追加ストレージルータ及びコアスイッチ
106a〜g ルータ
107a〜n ブレードサーバ
108a〜n 追加ラックユニット
【特許請求の範囲】
【請求項1】
スイッチ構造システムであって、
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするための、前記スイッチ構造のツリートポロジ又はグラフトポロジの一方を形成し、
各リンクが、前記トポロジ内で上りリンク、下りリンク、及びラテラルリンクのうちの1つとして指定される、
ことを特徴とするシステム。
【請求項2】
各ノードを、計算及びスイッチノード、及びスイッチノードの一方とすることができる、
ことを特徴とする請求項1に記載のスイッチ構造システム。
【請求項3】
各ノードが入出力部を含む、
ことを特徴とする請求項2に記載のシステム。
【請求項4】
各々を計算及びスイッチノード、及びスイッチノードの一方とすることができる複数のノードを有する、
ことを特徴とするスイッチ構造システム。
【請求項5】
セグメント化された媒体アクセス制御(MAC)アーキテクチャによる複数のノードを有するスイッチ構造システムのためのスイッチであって、
前記スイッチ内のデータのルーティングを制御する少なくとも1つのプロセッサユニットと、
前記少なくとも1つのプロセッサに接続されて、イーサネットコントローラへのデータ用インターフェイスを有する、前記スイッチの第1の部分と、
前記データを複数のパケットに変換し、該複数のパケットを構造スイッチに送信する、前記スイッチの第2の部分と、
前記スイッチの前記第2の部分に接続された、イーサネットシグナリングを実行するポートを有するパケットスイッチと、
を備えることを特徴とするスイッチ。
【請求項6】
前記スイッチ構造が、
前記スイッチ内のデータのルーティングを制御する少なくとも1つのプロセッサユニットと、
前記少なくとも1つのプロセッサに接続されて、イーサネットコントローラへのデータ用インターフェイスを有する、前記スイッチの第1の部分と、
前記データを複数のパケットに変換し、該複数のパケットを構造スイッチに送信する、前記スイッチの第2の部分と、
前記スイッチの前記第2の部分に接続された、イーサネットシグナリングを実行するポートを有するパケットスイッチと、
を備えることを特徴とする請求項1に記載のシステム。
【請求項7】
前記スイッチ構造が、
前記スイッチ内のデータのルーティングを制御する少なくとも1つのプロセッサユニットと、
前記少なくとも1つのプロセッサに接続されて、イーサネットコントローラへのデータ用インターフェイスを有する、前記スイッチの第1の部分と、
前記データを複数のパケットに変換し、該複数のパケットを構造スイッチに送信する、前記スイッチの第2の部分と、
前記スイッチの前記第2の部分に接続された、イーサネットシグナリングを実行するポートを有するパケットスイッチと、
を備えることを特徴とする請求項4に記載のシステム。
【請求項8】
各々が管理プロセッサを有する複数のノードを含み、前記複数のノードの前記管理プロセッサ間の通信経路が、前記管理プロセッサが相互に信頼できるようにセキュアである、
ことを特徴とするスイッチ構造システム。
【請求項9】
イーサネットMACコントローラIPを内部MAC及び外部MACに再利用し、通常であればMACがスイッチに送り込むための物理シグナリングとなったであろうものを利用する、
ことを特徴とする方法。
【請求項10】
スイッチ構造システムにおける非スプーフィング通信方法であって、
検証済みソフトウェアである1又はそれ以上のソフトウェアを実行する管理プロセッサを各々が有する複数のノードを提供するステップと、
パケットの送信元ノードにおいてルーティングヘッダにドメインIDを挿入するステップを含む、前記複数のノード間の信頼できる関係を確立するステップと、
前記ドメインIDを含むパケットの前記ルーティングヘッダが宛先ノードによって検証された場合、前記送信元ノードの管理プロセッサと前記宛先ノードの管理プロセッサとの間で安全に通信を行うステップと、
を含むことを特徴とする方法。
【請求項11】
スイッチ構造内の耐障害性ユニキャストルーティング方法であって、前記スイッチ構造は、複数のノードと、各ノードに関連する複数のリンクとを備え、前記ノードを前記複数のノード内の別のノードに接続して複数のルートを含むスイッチ構造を形成し、前記方法は、
前記スイッチ構造内の第1のノードから第2のノードへの、優先度の低い重みを有する避難ルートを生成するステップと、
リンクが非アクティブの場合、前記第1のノードから前記第2のノードへデータを誤ルーティングするステップと、
を含み、前記避難ルート及び誤ルーティングが、前記スイッチ構造に耐障害性を提供する、
ことを特徴とする方法。
【請求項12】
前記第1のノードから前記第2のノードへデータを誤ルーティングするステップが、前記第1のノードと第2のノードの間のリンクが非アクティブの場合、前記第1のノードから前記第2のノードへ1又はそれ以上の中間ノードを通じてデータをルーティングするように反復的に同じ経路を引き返すステップをさらに含む、
ことを特徴とする請求項11に記載の方法。
【請求項13】
前記反復的に同じ経路を引き返すステップが、
データ経路内のノードが前記第2のノードへのリンク経路を有していない場合、前記データのヘッダ内に誤ルーティングビットを設定するステップと、
前記誤ルーティングビットを設定したノードに前記データを送信した送信元ノードに前記データを返送するステップと、
前記送信元ノードにより、前記データのための1又はそれ以上の代替リンクを選択するステップと、
前記データが前記代替リンクの1つを介して前記第2のノードに到達した場合、前記データのヘッダ内の前記誤ルーティングビットをクリアするステップと、
をさらに含むことを特徴とする請求項12に記載の方法。
【請求項14】
アクティブでない場合に休止状態に入る1又はそれ以上のメインプロセッサと、
前記休止状態に入らない管理プロセッサと、
第1のアドレスを有する第1のイーサネットポート及び第2のアドレスを有する第2のイーサネットポートと、
を備え、前記1又はそれ以上のメインプロセッサが前記休止状態にあるときに、前記管理プロセッサに前記第1及び第2のアドレスが再マッピングされる、
ことを特徴とするスイッチ。
【請求項15】
前記管理プロセッサが、該管理プロセッサに再マッピングされた到着パケットを、特定のクラスを有する前記パケットを破棄すること、前記休止状態のメインプロセッサのネットワーク内の存在を維持するように前記パケットにプロキシして応答すること、前記パケットを前記メインプロセッサによって処理すべきかどうかを判断し、前記休止状態のプロセッサを起動させて前記到着パケットを処理することのうちの1つによって処理する、
ことを特徴とする請求項14に記載のスイッチ。
【請求項16】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサをさらに含み、
前記管理プロセッサが、ノード名空間アレイ及び2次元ルーティングテーブルを記憶し、各ノード名が、ドメイン識別子及びノード識別子を有し、前記ノード識別子及び前記ドメイン識別子によって識別されるマルチドメインノードにデータパケットがルーティングされる、
ことを特徴とするスイッチシステム。
【請求項17】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
2又はそれ以上の連続するMACアドレスを前記ルーティングテーブルの単一のエントリ内に圧縮したルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項18】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
特定のリンクを介して特定のイーサネットフレームパケットを宛先ノードに通信するリンク符号化ユニキャストエントリを有するルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項19】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
特定のノードIDを有するノードにイーサネットフレームパケットが送信されて、ノードIDがアドレスに符号化されるようにするノード符号化ユニキャストエントリを有するルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項20】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
ルーティングテーブルを使用してイーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含み、前記管理プロセッサが、ローカルに開始されたブロードキャストをスヌープして、前記ローカルに開始されたブロードキャストを前記管理プロセッサへ送信する、
ことを特徴とするスイッチシステム。
【請求項21】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
非スイッチ構造アドレスをノードにマッピングするルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項22】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
前記データパケットの適応的ルーティングを可能にするための各リンクの経路コスト及び重みを含むルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項23】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
前記リンクを通じて1又はそれ以上のパケットを送信元ノードの隣接ノードへ送信するが、隣接ノードではない他のノードにはブロードキャストしない隣接マルチキャストエントリを有するルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項24】
各々がスイッチを有する複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
各スイッチにおける少なくとも1つのルーティングヘッダプロセッサと、
をさらに含み、前記ルーティングヘッダプロセッサが、送信元ノードからのブロードキャストパケットのブロードキャストIDを、ブロードキャストIDのブロードキャストエントリ及び送信元ノードと比較して、前記到着したブロードキャストパケットが前記特定のスイッチを横切ったかどうかを判断し、前記到着したブロードキャストパケットが前記特定のスイッチを横切っていない場合、前記到着したブロードキャストパケットを、前記特定のスイッチを有する前記ノードに接続された全てのリンクを通じて再ブロードキャストする、
ことを特徴とするスイッチシステム。
【請求項1】
スイッチ構造システムであって、
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするための、前記スイッチ構造のツリートポロジ又はグラフトポロジの一方を形成し、
各リンクが、前記トポロジ内で上りリンク、下りリンク、及びラテラルリンクのうちの1つとして指定される、
ことを特徴とするシステム。
【請求項2】
各ノードを、計算及びスイッチノード、及びスイッチノードの一方とすることができる、
ことを特徴とする請求項1に記載のスイッチ構造システム。
【請求項3】
各ノードが入出力部を含む、
ことを特徴とする請求項2に記載のシステム。
【請求項4】
各々を計算及びスイッチノード、及びスイッチノードの一方とすることができる複数のノードを有する、
ことを特徴とするスイッチ構造システム。
【請求項5】
セグメント化された媒体アクセス制御(MAC)アーキテクチャによる複数のノードを有するスイッチ構造システムのためのスイッチであって、
前記スイッチ内のデータのルーティングを制御する少なくとも1つのプロセッサユニットと、
前記少なくとも1つのプロセッサに接続されて、イーサネットコントローラへのデータ用インターフェイスを有する、前記スイッチの第1の部分と、
前記データを複数のパケットに変換し、該複数のパケットを構造スイッチに送信する、前記スイッチの第2の部分と、
前記スイッチの前記第2の部分に接続された、イーサネットシグナリングを実行するポートを有するパケットスイッチと、
を備えることを特徴とするスイッチ。
【請求項6】
前記スイッチ構造が、
前記スイッチ内のデータのルーティングを制御する少なくとも1つのプロセッサユニットと、
前記少なくとも1つのプロセッサに接続されて、イーサネットコントローラへのデータ用インターフェイスを有する、前記スイッチの第1の部分と、
前記データを複数のパケットに変換し、該複数のパケットを構造スイッチに送信する、前記スイッチの第2の部分と、
前記スイッチの前記第2の部分に接続された、イーサネットシグナリングを実行するポートを有するパケットスイッチと、
を備えることを特徴とする請求項1に記載のシステム。
【請求項7】
前記スイッチ構造が、
前記スイッチ内のデータのルーティングを制御する少なくとも1つのプロセッサユニットと、
前記少なくとも1つのプロセッサに接続されて、イーサネットコントローラへのデータ用インターフェイスを有する、前記スイッチの第1の部分と、
前記データを複数のパケットに変換し、該複数のパケットを構造スイッチに送信する、前記スイッチの第2の部分と、
前記スイッチの前記第2の部分に接続された、イーサネットシグナリングを実行するポートを有するパケットスイッチと、
を備えることを特徴とする請求項4に記載のシステム。
【請求項8】
各々が管理プロセッサを有する複数のノードを含み、前記複数のノードの前記管理プロセッサ間の通信経路が、前記管理プロセッサが相互に信頼できるようにセキュアである、
ことを特徴とするスイッチ構造システム。
【請求項9】
イーサネットMACコントローラIPを内部MAC及び外部MACに再利用し、通常であればMACがスイッチに送り込むための物理シグナリングとなったであろうものを利用する、
ことを特徴とする方法。
【請求項10】
スイッチ構造システムにおける非スプーフィング通信方法であって、
検証済みソフトウェアである1又はそれ以上のソフトウェアを実行する管理プロセッサを各々が有する複数のノードを提供するステップと、
パケットの送信元ノードにおいてルーティングヘッダにドメインIDを挿入するステップを含む、前記複数のノード間の信頼できる関係を確立するステップと、
前記ドメインIDを含むパケットの前記ルーティングヘッダが宛先ノードによって検証された場合、前記送信元ノードの管理プロセッサと前記宛先ノードの管理プロセッサとの間で安全に通信を行うステップと、
を含むことを特徴とする方法。
【請求項11】
スイッチ構造内の耐障害性ユニキャストルーティング方法であって、前記スイッチ構造は、複数のノードと、各ノードに関連する複数のリンクとを備え、前記ノードを前記複数のノード内の別のノードに接続して複数のルートを含むスイッチ構造を形成し、前記方法は、
前記スイッチ構造内の第1のノードから第2のノードへの、優先度の低い重みを有する避難ルートを生成するステップと、
リンクが非アクティブの場合、前記第1のノードから前記第2のノードへデータを誤ルーティングするステップと、
を含み、前記避難ルート及び誤ルーティングが、前記スイッチ構造に耐障害性を提供する、
ことを特徴とする方法。
【請求項12】
前記第1のノードから前記第2のノードへデータを誤ルーティングするステップが、前記第1のノードと第2のノードの間のリンクが非アクティブの場合、前記第1のノードから前記第2のノードへ1又はそれ以上の中間ノードを通じてデータをルーティングするように反復的に同じ経路を引き返すステップをさらに含む、
ことを特徴とする請求項11に記載の方法。
【請求項13】
前記反復的に同じ経路を引き返すステップが、
データ経路内のノードが前記第2のノードへのリンク経路を有していない場合、前記データのヘッダ内に誤ルーティングビットを設定するステップと、
前記誤ルーティングビットを設定したノードに前記データを送信した送信元ノードに前記データを返送するステップと、
前記送信元ノードにより、前記データのための1又はそれ以上の代替リンクを選択するステップと、
前記データが前記代替リンクの1つを介して前記第2のノードに到達した場合、前記データのヘッダ内の前記誤ルーティングビットをクリアするステップと、
をさらに含むことを特徴とする請求項12に記載の方法。
【請求項14】
アクティブでない場合に休止状態に入る1又はそれ以上のメインプロセッサと、
前記休止状態に入らない管理プロセッサと、
第1のアドレスを有する第1のイーサネットポート及び第2のアドレスを有する第2のイーサネットポートと、
を備え、前記1又はそれ以上のメインプロセッサが前記休止状態にあるときに、前記管理プロセッサに前記第1及び第2のアドレスが再マッピングされる、
ことを特徴とするスイッチ。
【請求項15】
前記管理プロセッサが、該管理プロセッサに再マッピングされた到着パケットを、特定のクラスを有する前記パケットを破棄すること、前記休止状態のメインプロセッサのネットワーク内の存在を維持するように前記パケットにプロキシして応答すること、前記パケットを前記メインプロセッサによって処理すべきかどうかを判断し、前記休止状態のプロセッサを起動させて前記到着パケットを処理することのうちの1つによって処理する、
ことを特徴とする請求項14に記載のスイッチ。
【請求項16】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサをさらに含み、
前記管理プロセッサが、ノード名空間アレイ及び2次元ルーティングテーブルを記憶し、各ノード名が、ドメイン識別子及びノード識別子を有し、前記ノード識別子及び前記ドメイン識別子によって識別されるマルチドメインノードにデータパケットがルーティングされる、
ことを特徴とするスイッチシステム。
【請求項17】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
2又はそれ以上の連続するMACアドレスを前記ルーティングテーブルの単一のエントリ内に圧縮したルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項18】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
特定のリンクを介して特定のイーサネットフレームパケットを宛先ノードに通信するリンク符号化ユニキャストエントリを有するルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項19】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
特定のノードIDを有するノードにイーサネットフレームパケットが送信されて、ノードIDがアドレスに符号化されるようにするノード符号化ユニキャストエントリを有するルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項20】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
ルーティングテーブルを使用してイーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含み、前記管理プロセッサが、ローカルに開始されたブロードキャストをスヌープして、前記ローカルに開始されたブロードキャストを前記管理プロセッサへ送信する、
ことを特徴とするスイッチシステム。
【請求項21】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
非スイッチ構造アドレスをノードにマッピングするルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項22】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
前記データパケットの適応的ルーティングを可能にするための各リンクの経路コスト及び重みを含むルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項23】
複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
前記リンクを通じて1又はそれ以上のパケットを送信元ノードの隣接ノードへ送信するが、隣接ノードではない他のノードにはブロードキャストしない隣接マルチキャストエントリを有するルーティングテーブルを使用して、イーサネットフレームパケットのルーティングフレームヘッダを生成する少なくとも1つのルーティングヘッダプロセッサと、
をさらに含むことを特徴とするスイッチシステム。
【請求項24】
各々がスイッチを有する複数のノードと、
各ノードに関連する複数のリンクと、
を含み、前記複数のリンクは、前記ノードを前記複数のノード内の別のノードに接続して、前記複数のノードを通じてデータをルーティングするためのスイッチ構造のトポロジを形成し、
前記スイッチ構造を通じた前記データのルーティングを制御する管理プロセッサと、
各スイッチにおける少なくとも1つのルーティングヘッダプロセッサと、
をさらに含み、前記ルーティングヘッダプロセッサが、送信元ノードからのブロードキャストパケットのブロードキャストIDを、ブロードキャストIDのブロードキャストエントリ及び送信元ノードと比較して、前記到着したブロードキャストパケットが前記特定のスイッチを横切ったかどうかを判断し、前記到着したブロードキャストパケットが前記特定のスイッチを横切っていない場合、前記到着したブロードキャストパケットを、前記特定のスイッチを有する前記ノードに接続された全てのリンクを通じて再ブロードキャストする、
ことを特徴とするスイッチシステム。
【図1A】
【図2】
【図3】
【図4】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図1B】
【図5A】
【図2】
【図3】
【図4】
【図5B】
【図6】
【図7】
【図8】
【図9】
【図1B】
【図5A】
【公表番号】特表2013−509808(P2013−509808A)
【公表日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願番号】特願2012−536877(P2012−536877)
【出願日】平成22年10月19日(2010.10.19)
【国際出願番号】PCT/US2010/053227
【国際公開番号】WO2011/053488
【国際公開日】平成23年5月5日(2011.5.5)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.JAVA
3.Linux
4.MySQL
【出願人】(512112840)カルセーダ インコーポレイテッド (1)
【Fターム(参考)】
【公表日】平成25年3月14日(2013.3.14)
【国際特許分類】
【出願日】平成22年10月19日(2010.10.19)
【国際出願番号】PCT/US2010/053227
【国際公開番号】WO2011/053488
【国際公開日】平成23年5月5日(2011.5.5)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.イーサネット
2.JAVA
3.Linux
4.MySQL
【出願人】(512112840)カルセーダ インコーポレイテッド (1)
【Fターム(参考)】
[ Back to top ]