reading ”ServerSwitch: A Programmable and High Performance Platform for Data Center Networks"

NICにTCAMついたら面白くね?と思ってツイートしたら,実はあるらしい.

なので,読んでみた.

概要

プログラマビリティがあってTCAM持ってるチップがあったのでNICを作ってPCI-Eに接続した.既存のイーサネット/IP/MPLSのネクストホップ探索回路とプログラマブルTCAMを併用するため,任意のフローだけTCAMで制御できる.TCAMで処理は早いし,PCI-Eなので低遅延で広帯域だし,そもそもチップは安い.

所感

NICにTCAMを載せて高速転送させるのは面白そう,値段もお手頃.TCAMと既存イーサネット/IP/MPLS回路を併用するのが良いなぁ.プログラマビリティが欲しいところだけ設定すればよくて,それ以外は既存どおりの動かし方が可能.
ヘッダ書き換えや付与・除去の制約(というかVLAN関係がほとんどできない)のは残念だけれど,今後の実装なのかな.
TCAMは構造的に消費電力を多く使うけれど,今回のチップは容量が小さいせいか,15.4→15.7と0.3Wの増加なので思ったよりも少なかった.
転送制御のプログラマビリティを求めているOpenFlowとの比較について,OpenFlowではコントローラとスイッチ間の遅延が大きいし帯域もインターコネクトじゃないのでイケテないと云う指摘はごもっとも.


以下詳細(勝手な補足を含む)

Abst

データセンタに特化した制御をするために今まではソフトウェアで実装してたけれどこれは遅い.なので,一般的なイーサネットチップを低遅延なPCI-Eにくっつけて,かつプログラマブルにして実装する.
まずまずしたいことは,ソースルーティングとか複数のフォワーディング方法を実装すること,網内インテリジェンス(網内ルーティングでキャッシュへ誘導)を実現すること,網内輻輳をエンドノードに通知して輻輳回避をすること.

Introduction

関連研究の紹介.
今のネットワークはイーサネット/IP/TCPのフォーマットに基づいている,単一パス(OSPFとか)でありECMPとかあんまり使ってない,TCP輻輳制御に頼っている,という特徴がある.
対してデータセンタに特化したやり方では,PortLandのような仮想MACアドレスを使った巨大L2のセグメント分け(階層化とL2ルーティング)とか,BCubeのようなエンド間のマルチパス利用とか,QCNのような網内輻輳をエンドノードに通知するしくみとか,色々ある.
データセンタでは後者を実現したくて,そのためにはプログラマビリティが重要.どう実装するかというと,ソフトウェア実装だと遅いし,ハードウェア実装でFPGA使うと高い.
そこで,プログラマビリティがあって,遅延が小さくて,広帯域で,安い方法を提案する.

Design Goals

以下の3点を実現できる設計を行った.

  1. フォワーディングエンジンをプログラムできること(D-plane)
    • イーサネット(Exact Match)/IP(Exact Match or Longest Prefix Match)なマッチング以外にもできること.例えば BCube だと Strict Source Routing ぽい(たぶん)ので,そういうことができること.
  2. 新しいルーティング,シグナリング,フロー制御を実装できること(C-plane)
    • BCubeの情報をもとにルーティングに反映できること,QCNのフィードバックができること.
  3. 網側でキャッシュへ導くような,DCNサービスを実現できること
    • 他にもマルチキャストのコピーポイントをできるだけエンドノードに近くする,とか.

Design

Switching chip + NIC chipsの構成で,Switchig chipはデータ(D-plane)パケットの転送をTCAM+イーサネット/IP/MPLSの専用回路を併用して行う.NIC chipsは制御(C-plane)パケットの通信を行う.
APIを用意してTCAMの書き換え,マッチングができる.それ以外のAPIとしてはヘッダ書き換え(一部のみ)とか,カウントとかも用意している.

Implementation

価格は100個で$400ぐらいする
転送してない状態での消費電力は15.4W,フルスピードで15.7W

Discussion

1. ヘッダ書き換えに制約がある.VLAN-ID書き換えとか,VLANの付与・除去とかができない.
2. 10G対応.同じアーキテクチャで10Gx24Port対応いけるけれど,バックプレーンが足り無い.PCI-Express2.0 x32 で片方向 128Gbps である.

Related Work

OpenFlowは同じような取り組みだけれど,OpenFlowではコントローラとスイッチ間の遅延が大きいし帯域もインターコネクトじゃないのでイケテない.