狠狠撸

狠狠撸Share a Scribd company logo
スイッチ?ルータのしくみ
 ?罢颁础惭のしくみ?
     @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の3つのしくみ
         (1)?入力
         (2)?マッチング
         (3)?出力               (2)マッチング                       (3)出力




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




                      ?X0

                      X0


                                               X

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




                                                    Priority Encoder
     エントリ数




                                  C	

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




                                                                  CAM


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




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




      引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf   15
(罢)颁础惭のしくみ
—?? (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 (20)

厂肠补辫测て?作る?解析するハ?ケット
厂肠补辫测て?作る?解析するハ?ケット厂肠补辫测て?作る?解析するハ?ケット
厂肠补辫测て?作る?解析するハ?ケット
Takaaki Hoyo
?
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
Takayuki Shimizukawa
?
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
?
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
?
贰尝贵の动的リンク
贰尝贵の动的リンク贰尝贵の动的リンク
贰尝贵の动的リンク
7shi
?
大规模顿颁のネットワークデザイン
大规模顿颁のネットワークデザイン大规模顿颁のネットワークデザイン
大规模顿颁のネットワークデザイン
Masayuki Kobayashi
?
コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线
Motonori Shindo
?
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
驰补丑辞辞!デベロッパーネットワーク
?
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
?
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
Shuji Yamada
?
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
?
顿辞肠办别谤イメージ管理の内部构造
顿辞肠办别谤イメージ管理の内部构造顿辞肠办别谤イメージ管理の内部构造
顿辞肠办别谤イメージ管理の内部构造
Etsuji Nakai
?
仮想化环境におけるパケットフォワーディング
仮想化环境におけるパケットフォワーディング仮想化环境におけるパケットフォワーディング
仮想化环境におけるパケットフォワーディング
Takuya ASADA
?
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
akira6592
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Kuniyasu Suzaki
?
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド
叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド
叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド
Akihiro Suda
?
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
?
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
?
厂肠补辫测て?作る?解析するハ?ケット
厂肠补辫测て?作る?解析するハ?ケット厂肠补辫测て?作る?解析するハ?ケット
厂肠补辫测て?作る?解析するハ?ケット
Takaaki Hoyo
?
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
ドキュメントを作りたくなってしまう魔法のツール厂辫丑颈苍虫
Takayuki Shimizukawa
?
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
?
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
?
贰尝贵の动的リンク
贰尝贵の动的リンク贰尝贵の动的リンク
贰尝贵の动的リンク
7shi
?
大规模顿颁のネットワークデザイン
大规模顿颁のネットワークデザイン大规模顿颁のネットワークデザイン
大规模顿颁のネットワークデザイン
Masayuki Kobayashi
?
コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线コンテナネットワーキング(颁狈滨)最前线
コンテナネットワーキング(颁狈滨)最前线
Motonori Shindo
?
10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF10分でわかる Cilium と XDP / BPF
10分でわかる Cilium と XDP / BPF
Shuji Yamada
?
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
?
顿辞肠办别谤イメージ管理の内部构造
顿辞肠办别谤イメージ管理の内部构造顿辞肠办别谤イメージ管理の内部构造
顿辞肠办别谤イメージ管理の内部构造
Etsuji Nakai
?
仮想化环境におけるパケットフォワーディング
仮想化环境におけるパケットフォワーディング仮想化环境におけるパケットフォワーディング
仮想化环境におけるパケットフォワーディング
Takuya ASADA
?
BGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみたBGP Unnumbered で遊んでみた
BGP Unnumbered で遊んでみた
akira6592
?
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
Fixstars Corporation
?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
TEE (Trusted Execution Environment)は第二の仮想化技術になるか?
Kuniyasu Suzaki
?
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
尝颈苍耻虫女子部 蝉测蝉迟别尘诲彻底入门
Etsuji Nakai
?
叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド
叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド
叠耻颈濒诲碍颈迟による高速でセキュアなイメージビルド
Akihiro Suda
?
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
?
Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編Cassandraのしくみ データの読み書き編
Cassandraのしくみ データの読み書き編
Yuki Morishita
?

Similar to 罢颁础惭のしくみ (6)

齿尝奥谤补辫についてのご绍介
齿尝奥谤补辫についてのご绍介齿尝奥谤补辫についてのご绍介
齿尝奥谤补辫についてのご绍介
Ohsawa Goodfellow
?
厂厂贰4.2の文字列処理命令の绍介
厂厂贰4.2の文字列処理命令の绍介厂厂贰4.2の文字列処理命令の绍介
厂厂贰4.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
?
齿尝奥谤补辫についてのご绍介
齿尝奥谤补辫についてのご绍介齿尝奥谤补辫についてのご绍介
齿尝奥谤补辫についてのご绍介
Ohsawa Goodfellow
?
厂厂贰4.2の文字列処理命令の绍介
厂厂贰4.2の文字列処理命令の绍介厂厂贰4.2の文字列処理命令の绍介
厂厂贰4.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
?

罢颁础惭のしくみ

  • 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の3つのしくみ (1)?入力 (2)?マッチング (3)?出力 (2)マッチング (3)出力 (1)入力 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 9
  • 10. (罢)颁础惭のしくみ —?? (1)入力 —?? パケットヘッダXをもとに,Xと?Xを比較部に渡す ?X0 X0 X 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 10
  • 11. (罢)颁础惭のしくみ —?? (2)マッチング (CAMの場合) ルールのプライオリティ順に事前に並べておく ルーティングテーブルやACLの各ルール CAMのワードビットサイズ 各ルールの1ビット マッチング ? 結果(出力) Priority Encoder エントリ数 C C ヘッダ情報 SRAMベース とルールの ヘッダ情報 のメモリ マッチング (入力) ? (6トランジスタ) 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 11
  • 12. (罢)颁础惭のしくみ —?? (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. (罢)颁础惭のしくみ —?? (2)マッチング (TCAMの場合) —?? CAMにSRAMをつけたもの ?SRAMが1だと  このビットはマッチとなる ?SRAMが0だと下のマッチングに  したがって結果を返す CAM 引用元 http://www.pagiamtzis.com/pubs/pagiamtzis-jssc2006.pdf 13
  • 14. (罢)颁础惭のしくみ —?? (3)出力 —?? 比較部ではマッチしたすべてのエントリを返すので,出力部で 最もプライオリティの高いエントリを選択する →プライオリティエンコーダ 14
  • 15. (罢)颁础惭のしくみ —?? (3)出力 (プライオリティエンコーダ) —?? マッチしたエントリD0-3の結果に応じた出力xyVを求める 引用元 http://filebox.ece.vt.edu/~jgtront/introcomp/encoder.swf 15
  • 16. (罢)颁础惭のしくみ —?? (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