TCAMのしくみ
- 2. 高速に転送するには
— 受信・転送先決定・転送 を高速に行う ← 結論
— でも,,,
— 送受信のEO/変換やSerDes(シリアル化,非シリアル化)な
はハードウェアで実装されていて,既に高速で処理可能
— そこで,転送先決定の中身に着目
3.転送
1.受信
2.転送先決定
Switch/Router
2
- 4. マッチング
— いろんなやりかた (たとえばルーティングの場合)
— ソフトウェア
— パケットヘッダに対して,エントリを1つずつ比較して,最後にマッ
チした全エントリの中からプレフィックス長が最大のエントリを探
す (シーケンシャルマッチング)
— 事前にプレフィックス長でルーティングエントリをグループ化して
おき,プレフィックス長が大きい方から順番にマッチングする (
シーケンシャルマッチング+エントリソート)
— 探索木を作ってマッチングする (探索木)
— ハードウェア
— TCAM
4
- 7. マッチするエントリの探索
— 探索木
111*
110*
101*
100*
011*
010*
001*
000*
R0,R1,R5,R6
R2,R3,R4
R7
R8
R9
R10,R11
引用元 http://cseweb.ucsd.edu/~susingh/papers/hyp-sigcomm03.pdf HiCutアルゴリズムの場合
7
- 8. マッチするエントリの探索
— TCAM
— Ternary Content Addressable Memory
— TCAM:マッチングを行う専用のハードウェア
— 0, 1, どちらでも良いの3値(ternary)でマッチングを行う
— CAMだと,0, 1の2値でマッチングを行う
8
- 9. (T)CAMのしくみ
— (T)CAMの3つのしくみ
(1) 入力
(2) マッチング
(3) 出力 (2)マッチング (3)出力
(1)入力
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 9
- 10. (T)CAMのしくみ
— (1)入力
— パケットヘッダXをもとに,Xと¬Xを比較部に渡す
¬X0
X0
X
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 10
- 11. (T)CAMのしくみ
— (2)マッチング (CAMの場合)
ルールのプライオリティ順に事前に並べておく
ルーティングテーブルやACLの各ルール
CAMのワードビットサイズ
各ルールの1ビット
マッチング
結果(出力)
Priority Encoder
エントリ数
C
C
ヘッダ情報
SRAMベース とルールの
ヘッダ情報
のメモリ マッチング
(入力)
(6トランジスタ)
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 11
- 12. (T)CAMのしくみ
— (2)マッチング (CAMの場合)
C=0 C=1
・緑枠はマッチしているパターン
X0=0
・この例では,Xと¬C・¬XとCを
比較
・マッチすれば不一致なので
MLをLOWにする
(GNDに落とす)
X0=1 ・全ビットでマッチすれば終端で
ML(Match Line)がHIGHの
ままとまる
HIGH
LOW
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 12
- 13. (T)CAMのしくみ
— (2)マッチング (TCAMの場合)
— CAMにSRAMをつけたもの ・SRAMが1だと
このビットはマッチとなる
・SRAMが0だと下のマッチングに
したがって結果を返す
CAM
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 13
- 17. まとめ
— TCAMはマッチングが早いが,消費電力が大きい (らしい)
— パケットとエントリのマッチングをビット単位で並列で実施する
— その結果を集約することでマッチしたエントリを探索する
— 複数エントリをマッチした場合は,事前に最上位エントリほど
優先度が高いように設定しているため,専用回路(プライオリ
ティエンコーダ)を使って最優先エントリを確定する
— これらすべてのマッチングを行う専用回路を用意し,1クロック
でマッチングが完了することから,非常に高速にマッチングを
行える
— ただし,回路全体を使う必要があるため消費電力が大きい
17
- 18. 参考
— Content-Addressable Memory (CAM) Circuits and
Architectures: A Tutorial and Survey
— http://www.pagiamtzis.com/pubs/pagiamtzis-
jssc2006.pdf
— Intro to Computer Engineering Tutorial Material
— http://filebox.ece.vt.edu/~jgtront/introcomp/
— Packet Classification Using Multidimensional
Cutting
— http://cseweb.ucsd.edu/~susingh/papers/hyp-
sigcomm03.pdf
18