SlideShare a Scribd company logo
1 of 18
Download to read offline
スイッチ・ルータのしくみ
 〜TCAMのしくみ〜
     @yogata

    2013/2/24




                1
高速に転送するには
—  受信・転送先決定・転送 を高速に行う ← 結論
—  でも,,,
—  送受信のEO/変換やSerDes(シリアル化,非シリアル化)な
  はハードウェアで実装されていて,既に高速で処理可能

—  そこで,転送先決定の中身に着目
                               3.転送

            1.受信
                   2.転送先決定

               Switch/Router


                                      2
転送部でやること
—  パケットヘッダとエントリ(ルーティング・フォワーディング・
  NDP/ARPテーブル等)を比較してマッチするエントリを探す



—  ポイント
  —  例えばACLの探索
      —  プレフィックス指定やANY指定でのマッチングを行う
  —  例えばルーティングの探索
      —  ロンゲストマッチを行う
     →複数のエントリにマッチする場合,プレフィックス長をみて探索




                                      3
マッチング
—  いろんなやりかた (たとえばルーティングの場合)
 —  ソフトウェア
   —  パケットヘッダに対して,エントリを1つずつ比較して,最後にマッ
       チした全エントリの中からプレフィックス長が最大のエントリを探
       す (シーケンシャルマッチング)
   —  事前にプレフィックス長でルーティングエントリをグループ化して
       おき,プレフィックス長が大きい方から順番にマッチングする (
       シーケンシャルマッチング+エントリソート)
   —  探索木を作ってマッチングする (探索木)
 —  ハードウェア
   —  TCAM



                                         4
マッチするエントリの探索
—  (1)パケットヘッダに対してエントリを1つずつ比較して,(2)
   最後にマッチした全エントリの中からプレフィックス長が最
   大のエントリを探す (シーケンシャルマッチング)

パケットヘッダ               ルーティングテーブル          (1)全部とマッチして
  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)プレフィックス長が
                                          最大のエントリを探す




                                                        5
マッチするエントリの探索
—  事前にプレフィックス長でルーティングエントリをグループ化
   しておき,プレフィックス長が大きい方から順番にマッチング
   する

パケットヘッダ               ルーティングテーブル
  DstIP:192.0.2.100      /8  192.0.0.0    10.0.0.0
                        ・・・
                        /24 192.168.0.0   192.0.2.0
                        ・・・


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


                                                      6
マッチするエントリの探索
     —  探索木




                                                                           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
マッチするエントリの探索
—  TCAM
  —  Ternary Content Addressable Memory
  —  TCAM:マッチングを行う専用のハードウェア
    —  0, 1, どちらでも良いの3値(ternary)でマッチングを行う
    —  CAMだと,0, 1の2値でマッチングを行う




                                             8
(T)CAMのしくみ
     —  (T)CAMの3つのしくみ
         (1) 入力
         (2) マッチング
         (3) 出力               (2)マッチング                       (3)出力




                             (1)入力
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf           9
(T)CAMのしくみ
     —  (1)入力
         —  パケットヘッダXをもとに,Xと¬Xを比較部に渡す




                      ¬X0

                      X0


                                               X

引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf   10
(T)CAMのしくみ
     —  (2)マッチング (CAMの場合)
   ルールのプライオリティ順に事前に並べておく	
                                                                  ルーティングテーブルやACLの各ルール	
             CAMのワードビットサイズ
                                                               各ルールの1ビット	
                                                                                                 マッチング	
  
                                                                                                 結果(出力)	




                                                    Priority Encoder
     エントリ数




                                  C	

                                                                                      C	
                                                                                               ヘッダ情報	
                                                                                    SRAMベース    とルールの	
                                                                       ヘッダ情報
                                                                                      のメモリ     マッチング	
                                                                        (入力)	
  
                                                                                   (6トランジスタ)
引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf                                               11
(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
(T)CAMのしくみ
     —  (2)マッチング (TCAMの場合)
         —  CAMにSRAMをつけたもの                                  ・SRAMが1だと
                                                              このビットはマッチとなる
                                                             ・SRAMが0だと下のマッチングに
                                                              したがって結果を返す




                                                                  CAM


引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf                  13
(T)CAMのしくみ
—  (3)出力
  —  比較部ではマッチしたすべてのエントリを返すので,出力部で
    最もプライオリティの高いエントリを選択する
    →プライオリティエンコーダ




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




      引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf   15
(T)CAMのしくみ
—  (3)出力 (プライオリティエンコーダ)
 —  結果を回路にする




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

 —  エントリ数が多いと大変

                                                                               16
まとめ
—  TCAMはマッチングが早いが,消費電力が大きい (らしい)
 —  パケットとエントリのマッチングをビット単位で並列で実施する
 —  その結果を集約することでマッチしたエントリを探索する
 —  複数エントリをマッチした場合は,事前に最上位エントリほど
  優先度が高いように設定しているため,専用回路(プライオリ
  ティエンコーダ)を使って最優先エントリを確定する

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

 —  ただし,回路全体を使う必要があるため消費電力が大きい
                                     17
参考
—  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

More Related Content

What's hot

"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越Kentaro Ebisawa
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのかYutaro Hayakawa
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザインMasayuki Kobayashi
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 VirtualTech Japan Inc.
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~NTT Communications Technology Development
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングTomoya Hibi
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48Preferred Networks
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方akira6592
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NETterurou
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkTakanori Suzuki
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方Toru Makabe
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Dockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたDockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたnpsg
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyYahoo!デベロッパーネットワーク
 

What's hot (20)

nginx入門
nginx入門nginx入門
nginx入門
 
"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越"SRv6の現状と展望" ENOG53@上越
"SRv6の現状と展望" ENOG53@上越
 
eBPFは何が嬉しいのか
eBPFは何が嬉しいのかeBPFは何が嬉しいのか
eBPFは何が嬉しいのか
 
NETCONFとYANGの話
NETCONFとYANGの話NETCONFとYANGの話
NETCONFとYANGの話
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月 知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
 
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
golang profiling の基礎
golang profiling の基礎golang profiling の基礎
golang profiling の基礎
 
DPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキングDPDKによる高速コンテナネットワーキング
DPDKによる高速コンテナネットワーキング
 
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 
MQTTとAMQPと.NET
MQTTとAMQPと.NETMQTTとAMQPと.NET
MQTTとAMQPと.NET
 
IoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache FlinkIoT時代におけるストリームデータ処理と急成長の Apache Flink
IoT時代におけるストリームデータ処理と急成長の Apache Flink
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
OpenStack超入門シリーズ いまさら聞けないSwiftの使い方
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Dockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみたDockerと外部ルータを連携させる仕組みを作ってみた
Dockerと外部ルータを連携させる仕組みを作ってみた
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 

Similar to TCAMのしくみ

XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介Ohsawa Goodfellow
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてFumiya Nozaki
 
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみようHokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみようPanda Yamaki
 
A Multiple Pairs Shortest Path Algorithm 解説
A Multiple Pairs Shortest Path Algorithm 解説A Multiple Pairs Shortest Path Algorithm 解説
A Multiple Pairs Shortest Path Algorithm 解説Osamu Masutani
 

Similar to TCAMのしくみ (6)

XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
CMSI計算科学技術特論B(10) 大規模MD並列化の技術1
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
 
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみようHokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
Hokkaido.cap#2 一般的なプロトコルのパケットを覗いてみよう
 
A Multiple Pairs Shortest Path Algorithm 解説
A Multiple Pairs Shortest Path Algorithm 解説A Multiple Pairs Shortest Path Algorithm 解説
A Multiple Pairs Shortest Path Algorithm 解説
 

TCAMのしくみ

  • 2. 高速に転送するには —  受信・転送先決定・転送 を高速に行う ← 結論 —  でも,,, —  送受信のEO/変換やSerDes(シリアル化,非シリアル化)な はハードウェアで実装されていて,既に高速で処理可能 —  そこで,転送先決定の中身に着目 3.転送 1.受信 2.転送先決定 Switch/Router 2
  • 3. 転送部でやること —  パケットヘッダとエントリ(ルーティング・フォワーディング・ NDP/ARPテーブル等)を比較してマッチするエントリを探す —  ポイント —  例えばACLの探索 —  プレフィックス指定やANY指定でのマッチングを行う —  例えばルーティングの探索 —  ロンゲストマッチを行う →複数のエントリにマッチする場合,プレフィックス長をみて探索 3
  • 4. マッチング —  いろんなやりかた (たとえばルーティングの場合) —  ソフトウェア —  パケットヘッダに対して,エントリを1つずつ比較して,最後にマッ チした全エントリの中からプレフィックス長が最大のエントリを探 す (シーケンシャルマッチング) —  事前にプレフィックス長でルーティングエントリをグループ化して おき,プレフィックス長が大きい方から順番にマッチングする ( シーケンシャルマッチング+エントリソート) —  探索木を作ってマッチングする (探索木) —  ハードウェア —  TCAM 4
  • 5. マッチするエントリの探索 —  (1)パケットヘッダに対してエントリを1つずつ比較して,(2) 最後にマッチした全エントリの中からプレフィックス長が最 大のエントリを探す (シーケンシャルマッチング) パケットヘッダ ルーティングテーブル (1)全部とマッチして 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)プレフィックス長が 最大のエントリを探す 5
  • 6. マッチするエントリの探索 —  事前にプレフィックス長でルーティングエントリをグループ化 しておき,プレフィックス長が大きい方から順番にマッチング する パケットヘッダ ルーティングテーブル DstIP:192.0.2.100 /8 192.0.0.0 10.0.0.0 ・・・ /24 192.168.0.0 192.0.2.0 ・・・ —  マッチした時点で処理を終えることができる 6
  • 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
  • 14. (T)CAMのしくみ —  (3)出力 —  比較部ではマッチしたすべてのエントリを返すので,出力部で 最もプライオリティの高いエントリを選択する →プライオリティエンコーダ 14
  • 15. (T)CAMのしくみ —  (3)出力 (プライオリティエンコーダ) —  マッチしたエントリD0-3の結果に応じた出力xyVを求める 引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf 15
  • 16. (T)CAMのしくみ —  (3)出力 (プライオリティエンコーダ) —  結果を回路にする 引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf —  エントリ数が多いと大変 16
  • 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