tcamのしくみ
TRANSCRIPT
![Page 1: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/1.jpg)
スイッチ・ルータのしくみ 〜TCAMのしくみ〜
@yogata
2013/2/24
1
![Page 2: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/2.jpg)
高速に転送するには � 受信・転送先決定・転送 を高速に行う ← 結論
� でも,,,
� 送受信のEO/変換やSerDes(シリアル化,非シリアル化)なはハードウェアで実装されていて,既に高速で処理可能
� そこで,転送先決定の中身に着目
Switch/Router
1.受信 2.転送先決定
3.転送
2
![Page 3: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/3.jpg)
転送部でやること � パケットヘッダとエントリ(ルーティング・フォワーディング・
NDP/ARPテーブル等)を比較してマッチするエントリを探す
� ポイント � 例えばACLの探索
� プレフィックス指定やANY指定でのマッチングを行う
� 例えばルーティングの探索 � ロンゲストマッチを行う
→複数のエントリにマッチする場合,プレフィックス長をみて探索
3
![Page 4: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/4.jpg)
マッチング � いろんなやりかた (たとえばルーティングの場合)
� ソフトウェア � パケットヘッダに対して,エントリを1つずつ比較して,最後にマッ
チした全エントリの中からプレフィックス長が最大のエントリを探す (シーケンシャルマッチング)
� 事前にプレフィックス長でルーティングエントリをグループ化しておき,プレフィックス長が大きい方から順番にマッチングする (シーケンシャルマッチング+エントリソート)
� 探索木を作ってマッチングする (探索木)
� ハードウェア � TCAM
4
![Page 5: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/5.jpg)
マッチするエントリの探索 � (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のしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/6.jpg)
マッチするエントリの探索 � 事前にプレフィックス長でルーティングエントリをグループ化
しておき,プレフィックス長が大きい方から順番にマッチングする
� マッチした時点で処理を終えることができる
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のしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/7.jpg)
マッチするエントリの探索 � 探索木
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のしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/8.jpg)
マッチするエントリの探索 � TCAM
� Ternary Content Addressable Memory
� TCAM:マッチングを行う専用のハードウェア � 0, 1, どちらでも良いの3値(ternary)でマッチングを行う
� CAMだと,0, 1の2値でマッチングを行う
8
![Page 9: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/9.jpg)
(T)CAMのしくみ � (T)CAMの3つのしくみ
(1) 入力
(2) マッチング (3) 出力
(1)入力
(2)マッチング (3)出力
9 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
![Page 10: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/10.jpg)
(T)CAMのしくみ � (1)入力
� パケットヘッダXをもとに,Xと¬Xを比較部に渡す
X0
X
¬X0
10 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
![Page 11: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/11.jpg)
(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のしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/12.jpg)
(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のしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/13.jpg)
(T)CAMのしくみ � (2)マッチング (TCAMの場合)
� CAMにSRAMをつけたもの
CAM
・SRAMが1だと このビットはマッチとなる ・SRAMが0だと下のマッチングに したがって結果を返す
13 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf
![Page 14: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/14.jpg)
(T)CAMのしくみ � (3)出力
� 比較部ではマッチしたすべてのエントリを返すので,出力部で 最もプライオリティの高いエントリを選択する →プライオリティエンコーダ
14
![Page 15: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/15.jpg)
(T)CAMのしくみ
15
� (3)出力 (プライオリティエンコーダ) � マッチしたエントリD0-3の結果に応じた出力xyVを求める
引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf
![Page 16: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/16.jpg)
(T)CAMのしくみ � (3)出力 (プライオリティエンコーダ)
� 結果を回路にする
� エントリ数が多いと大変
16
引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf
![Page 17: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/17.jpg)
まとめ � TCAMはマッチングが早いが,消費電力が大きい (らしい)
� パケットとエントリのマッチングをビット単位で並列で実施する
� その結果を集約することでマッチしたエントリを探索する � 複数エントリをマッチした場合は,事前に最上位エントリほど
優先度が高いように設定しているため,専用回路(プライオリティエンコーダ)を使って最優先エントリを確定する
� これらすべてのマッチングを行う専用回路を用意し,1クロックでマッチングが完了することから,非常に高速にマッチングを行える
� ただし,回路全体を使う必要があるため消費電力が大きい
17
![Page 18: TCAMのしくみ](https://reader033.vdocuments.net/reader033/viewer/2022051212/557cf50ad8b42a071b8b478b/html5/thumbnails/18.jpg)
参考 � 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