負荷分散スイッチ

ロードバランススイッチとは、中央仲裁を一切必要とせず、100%のスループットを保証するスイッチアーキテクチャです。ただし、各パケットをクロスバーに2回送信するコストがかかります。ロードバランススイッチは、実用的な中央仲裁の限界を超える大規模ルーターを対象とした研究対象です。

導入

インターネットルーターは通常、スイッチに接続されたラインカードを使用して構築されます。中程度の総帯域幅をサポートするルーターはバスをスイッチとして使用する場合がありますが、高帯域幅のルーターは通常、何らかのクロスバー相互接続を使用します。クロスバーでは、各出力が1つの入力に接続され、すべての出力に同時に情報が流れます。パケットスイッチングに使用されるクロスバーは、通常、1秒間に数千万回再構成されます。これらの構成のスケジュールは、ラインカードからの相互情報送信要求に応じて 、Wavefrontアービターなどの中央アービターによって決定されます。

完全なアービトレーションでは、スループットは各クロスバー入力または出力の最大スループットによってのみ制限されます。例えば、ラインカードAとBに入力されるすべてのトラフィックがラインカードC宛ての場合、カードAとBが同時に処理できる最大トラフィック量はCによって制限されます。完全なアービトレーションには膨大な量の計算が必要であり、クロスバー上のポート数よりもはるかに速いペースで増加することが分かっています。実際のシステムでは、妥当な時間で計算可能な不完全なアービトレーションヒューリスティック(iSLIPなど)が使用されています。

負荷分散スイッチは、Web サーバー ファームのフロントエンドとして使用され、単一の Web サイトへのリクエストを多数のサーバーに分散するルーターの一種である負荷分散スイッチとは関係ありません。

基本的なアーキテクチャ

右図に示すように、負荷分散スイッチにはN個の入力ラインカードがあり、各入力ラインカードはレートRで、レートR/Nのリンクを介してN個のバッファに接続されています。これらのバッファは、レートR/Nのリンクを介してN個の出力ラインカードに接続されています。中央のバッファは、N個の仮想出力キューに分割されています。

各入力ラインカードは、パケットをN個のバッファに均等に分散します。これは明らかに競合なく実行できます。各バッファは、これらのパケットを単一のバッファローカルメモリに合計速度Rで書き込みます。同時に、各バッファは各仮想出力キューの先頭にあるパケットを各出力ラインカードに送信します。これもまた、各カードへの速度R/Nで行われます。出力ラインカードは、これらのパケットを競合なくラインに転送できます。

負荷分散スイッチの各バッファは共有メモリ スイッチとして機能し、負荷分散スイッチは基本的に共有メモリ スイッチを拡張する方法ですが、R/N レートでパケットを 2 倍に転送することに関連する追加の遅延が発生します。

ロードバランススイッチを研究しているスタンフォード大学のグループは、バッファ数がラインカードの数と等しい実装に焦点を当てています。各ラインカードに1つのバッファが配置され、2つの相互接続メッシュは実際には同一のメッシュであり、ラインカードの各ペア間で2R/Nのレートを提供します。しかし、基本的なロードバランススイッチアーキテクチャでは、バッファをラインカードに配置する必要はなく、バッファとラインカードの数を同じにする必要もありません。

負荷分散スイッチの興味深い特性の一つは、ラインカードとバッファを接続するメッシュはすべてのラインカードをすべてのバッファに接続する必要があるものの、メッシュがノンブロッキングクロスバーとして機能する必要はなく、接続があらゆるトラフィックパターンに応答する必要もないことです。このような接続は、中央で調停されるクロスバーよりもはるかにシンプルです。

パケットの順序を維持する

同じ出力先への2つのパケットが1つのラインカードに連続して到着した場合、それらは2つの異なるバッファに分散され、それぞれのバッファの占有率も異なる可能性があります。そのため、パケットは出力に配信されるまでに順序が入れ替わってしまう可能性があります。順序の入れ替えは合法ですが、TCPは順序が入れ替わったパケットに対して良好なパフォーマンスを発揮できないため、通常は望ましくありません。

負荷分散スイッチは、遅延とバッファリングをさらに追加することで、ローカル情報のみを使用してフロー内のパケット順序を維持できます。そのようなアルゴリズムの一つがFOFF(Fully Ordered Frames First)です。FOFFには、異常なトラフィックパターンに対する脆弱性を排除し、優先順位を実装するためのメカニズムを提供するという利点もあります。

実装

シングルチップクロスバーと負荷分散アービター

スタンフォード大学のTiny Teraプロジェクト(Abrizio参照)では、スイッチングファブリック自体に少なくとも2つのチップ設計(クロスバースライスとアービタ)を必要とするスイッチアーキテクチャが導入されました。アービタをロードバランシング機能を含むようにアップグレードし、これらのデバイスを組み合わせることで、信頼性、コスト、スループットの面でメリットが得られる可能性があります。

単一のグローバルルータ

負荷分散スイッチ内のラインカードは物理的に近接する必要がないため、大陸全体または地球規模のバックボーンネットワーク全体を相互接続メッシュとして使用し、コアルータを「ラインカード」として使用するという実装方法があります。このような実装では、すべての遅延が最悪の伝送遅延の2倍に増加するという欠点があります。しかし、いくつかの興味深い利点があります。

  • 大規模なバックボーン・パケット・ネットワークは、不完全なキャパシティ・プランニング、輻輳、その他の問題に対処するために、通常、10倍以上の膨大な過剰容量を備えています。負荷分散されたスイッチ・バックボーンは、システム全体で測定した場合、わずか2倍の過剰容量で100%のスループットを実現できます。
  • 大規模バックボーンネットワークの基盤は通常、高速スイッチングが不可能な光チャネルです。これらは、負荷分散スイッチのメッシュにおける定速2R/Nチャネルに適切にマッピングされます。
  • グローバルな輻輳は発生していないため、グローバルな輻輳情報に基づいてルート テーブルを変更する必要はありません。
  • ノード障害発生時の再ルーティングには、光チャネルの構成変更が必要です。ただし、再ルーティングは事前に計算可能であり(障害が発生する可能性のあるノードの数は限られているため)、再ルーティングによって輻輳が発生し、その後のルートテーブルの変更が必要になることはありません。

参考文献