tcamのしくみ

18
スイッチ・ルータのしくみ TCAMのしくみ〜 @yogata 2013/2/24 1

Upload: ogatay

Post on 14-Jun-2015

8.190 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: TCAMのしくみ

スイッチ・ルータのしくみ 〜TCAMのしくみ〜

@yogata

2013/2/24

1

Page 2: TCAMのしくみ

高速に転送するには �  受信・転送先決定・転送 を高速に行う ← 結論

�  でも,,,

�  送受信のEO/変換やSerDes(シリアル化,非シリアル化)なはハードウェアで実装されていて,既に高速で処理可能

�  そこで,転送先決定の中身に着目

Switch/Router

1.受信 2.転送先決定

3.転送

2

Page 3: TCAMのしくみ

転送部でやること �  パケットヘッダとエントリ(ルーティング・フォワーディング・

NDP/ARPテーブル等)を比較してマッチするエントリを探す

�  ポイント �  例えばACLの探索

�  プレフィックス指定やANY指定でのマッチングを行う

�  例えばルーティングの探索 �  ロンゲストマッチを行う

→複数のエントリにマッチする場合,プレフィックス長をみて探索

3

Page 4: TCAMのしくみ

マッチング �  いろんなやりかた (たとえばルーティングの場合)

�  ソフトウェア �  パケットヘッダに対して,エントリを1つずつ比較して,最後にマッ

チした全エントリの中からプレフィックス長が最大のエントリを探す (シーケンシャルマッチング)

�  事前にプレフィックス長でルーティングエントリをグループ化しておき,プレフィックス長が大きい方から順番にマッチングする (シーケンシャルマッチング+エントリソート)

�  探索木を作ってマッチングする (探索木)

�  ハードウェア �  TCAM

4

Page 5: TCAMのしくみ

マッチするエントリの探索 �  (1)パケットヘッダに対してエントリを1つずつ比較して,(2)

最後にマッチした全エントリの中からプレフィックス長が最大のエントリを探す (シーケンシャルマッチング)

DstIP:192.0.2.100 192.0.0.0/8 パケットヘッダ ルーティングテーブル

192.168.0.0/24 192.0.2.0/24 10.0.0.0/8

(2)プレフィックス長が 最大のエントリを探す

(1)全部とマッチして

5

Page 6: TCAMのしくみ

マッチするエントリの探索 �  事前にプレフィックス長でルーティングエントリをグループ化

しておき,プレフィックス長が大きい方から順番にマッチングする

�  マッチした時点で処理を終えることができる

DstIP:192.0.2.100 /8 パケットヘッダ ルーティングテーブル

/24

192.0.0.0

192.168.0.0 192.0.2.0

10.0.0.0

6

・・・

・・・

Page 7: TCAMのしくみ

マッチするエントリの探索 �  探索木

7 HiCutアルゴリズムの場合

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

Page 8: TCAMのしくみ

マッチするエントリの探索 �  TCAM

�  Ternary Content Addressable Memory

�  TCAM:マッチングを行う専用のハードウェア �  0, 1, どちらでも良いの3値(ternary)でマッチングを行う

�  CAMだと,0, 1の2値でマッチングを行う

8

Page 9: TCAMのしくみ

(T)CAMのしくみ �  (T)CAMの3つのしくみ

(1) 入力

(2) マッチング (3) 出力

(1)入力

(2)マッチング (3)出力

9 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf

Page 10: TCAMのしくみ

(T)CAMのしくみ �  (1)入力

�  パケットヘッダXをもとに,Xと¬Xを比較部に渡す

X0

X

¬X0

10 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf

Page 11: TCAMのしくみ

(T)CAMのしくみ

ルーティングテーブルやACLの各ルール

各ルールの1ビット

C

ルールのプライオリティ順に事前に並べておく

Priority E

ncod

er

CAMのワードビットサイズ

エン

トリ

�  (2)マッチング (CAMの場合)

11

C ヘッダ情報

(入力)  

マッチング  結果(出力)

SRAMベースのメモリ

(6トランジスタ)

ヘッダ情報 とルールの マッチング

引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf

Page 12: TCAMのしくみ

(T)CAMのしくみ �  (2)マッチング (CAMの場合)

12

C=0 C=1

X0=0

X0=1

HIGH

LOW

・緑枠はマッチしているパターン ・この例では,Xと¬C・¬XとCを  比較 ・マッチすれば不一致なので  MLをLOWにする  (GNDに落とす) ・全ビットでマッチすれば終端で  ML(Match Line)がHIGHの  ままとまる

引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf

Page 13: TCAMのしくみ

(T)CAMのしくみ �  (2)マッチング (TCAMの場合)

�  CAMにSRAMをつけたもの

CAM

・SRAMが1だと  このビットはマッチとなる ・SRAMが0だと下のマッチングに  したがって結果を返す

13 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf

Page 14: TCAMのしくみ

(T)CAMのしくみ �  (3)出力

�  比較部ではマッチしたすべてのエントリを返すので,出力部で 最もプライオリティの高いエントリを選択する →プライオリティエンコーダ

14

Page 15: TCAMのしくみ

(T)CAMのしくみ

15

�  (3)出力 (プライオリティエンコーダ) �  マッチしたエントリD0-3の結果に応じた出力xyVを求める

引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf

Page 16: TCAMのしくみ

(T)CAMのしくみ �  (3)出力 (プライオリティエンコーダ)

�  結果を回路にする

�  エントリ数が多いと大変

16

引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf

Page 17: TCAMのしくみ

まとめ �  TCAMはマッチングが早いが,消費電力が大きい (らしい)

�  パケットとエントリのマッチングをビット単位で並列で実施する

�  その結果を集約することでマッチしたエントリを探索する �  複数エントリをマッチした場合は,事前に最上位エントリほど

優先度が高いように設定しているため,専用回路(プライオリティエンコーダ)を使って最優先エントリを確定する

�  これらすべてのマッチングを行う専用回路を用意し,1クロックでマッチングが完了することから,非常に高速にマッチングを行える

�  ただし,回路全体を使う必要があるため消費電力が大きい

17

Page 18: TCAMのしくみ

参考 �  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