この記事は、改訂&リニューアルして『P はプロトコルのP - TCAM (Ternary CAM) とBCAM (Binary CAM)』へ移転しました。
TCAM (Ternary CAM) とBCAM (Binary CAM)
さまざまなメーカから発売されるLAN スイッチのデータシートを見ると、ほとんどの製品がTCAM を実装しているのが分かります。
TCAM (Ternary CAM、ターナリCAM) とは何でしょうか? 従来のCAM と何が違うのでしょうか?
まずは、Ternary の意味を調べて見ましょう。
goo 英和辞書を見ると、
- 三つ組の; 三元の; 第三位の; 【コンピュータ】3値の, 3進法の
とあります。
どうやら、キーワードは「三つ」にあるようです。
ディジタルコンピュータが扱うデータを細かくしていくと、最後は0 か1 の二種類の値を表すビットになります。つまりBinary(バイナリ)です。
CAM に格納されるデータはディジタル情報なので、0か1 のどちらかです(バイナリ)。
※ 通常CAM と呼ぶときは、BCAM (Binary CAM) を指します。
TCAM もディジタル情報を扱うので、当然0 と1 です。
では、三つ目は何でしょうか?
答えは、Don't Care (ドントケア)です。
論理回路の勉強をしたことがある人は、聞いたことがあるのではないでしょうか?(ブール代数とかカルノー図とか)
0 と1 の、どちらでも良いことを表す言葉です。言い換えれば、0 or 1です。
つまりTCAM は、検索対象に0、1、Don't Care の3種類の状態が存在するわけです。
Don't Care があると、どんな良いことがあるのでしょうか?
0と1 の2種類しかないと、検索で引っ掛けるためには、検索対象の要素が検索キーと完全に一致する必要があります。
Don't Care は0と1のどちらでも良い値です。つまり、検索する際に無視できるということです。
具体的には、検索対象の要素のうち、無視できる領域を表すマスクで表現します。
マスクと聞いてピンときた人もいますよね?
そうです。サブネットマスクです。
サブネットマスクは、IP アドレスのうち、ネットワーク部を意味する領域の大きさを表現するのに使われます。
マスクされなかった部分はホスト部で、ネットワーク(サブネット)を表現する際には無視される部分です。
TCAM は、Longest Prefix matching (ロンゲストマッチと呼ばれるのが一般的)が必要なテーブル検索に利用されます。
ルーティングテーブルの検索がもっとも多い使用例です。
レイヤ3スイッチの多くがTCAM を採用しているのは、このためです。
これに対してレイヤ2スイッチのMAC アドレステーブルは、TCAM である必要はありません。
MAC アドレスの検索にPrefix を指定する必要は無く、検索対象がキーと完全に一致していることが要求されるためです。
※ 仮に、MAC アドレスの先頭3バイトが00-11-22 というエントリだけを探し出す、というような検索がMAC アドレステーブルに求められるのであれば、TCAM を使うメリットが出てきます。
しかし、MAC アドレステーブルをそのような目的で利用する機能は、現在はありません(今後もないでしょう)。
なぜCisco は、MAC アドレステーブルをCAM と呼ぶのか? も併せてお読みください。
ネットワークエンジニアになろう!のトップページへ戻る