LAN スイッチ:なぜCisco のCatalyst はMAC アドレス・テーブルをCAM と呼ぶのか?

CatOS で動作しているCatalyst シリーズのLAN スイッチでは、MAC アドレス・テーブルのことをCAM(Content Addressable Memory)と呼んでいます。

a
CatOS のコマンドプ・ロンプトで、show cam dynamic と実行すると以下のような結果が得られます。













Catalyst> show cam dynamic

* = Static Entry. + = Permanent Entry. # = System Entry. R = Router Entry.
X = Port Security Entry

VLAN Dest MAC/Route Des [CoS] Destination Ports or VCs / [Protocol Type]
---- ------------------ ----- --------------------------------------
1 00-60-5c-86-5b-81 * 4/1 [ALL]
1 00-60-2f-35-48-17 * 4/1 [ALL]
1 00-80-24-f3-47-20 * 1/2 [ALL]
1 00-60-09-78-96-fb * 4/1 [ALL]
1 00-80-24-1d-d9-ed * 1/2 [ALL]
1 00-80-24-1d-da-01 * 1/2 [ALL]
1 08-00-20-7a-63-01 * 4/1 [ALL]


なぜ、MAC アドレスと宛先ポートを格納しているテーブルをCAM と呼ぶのでしょうか?
CAM とは何でしょうか?

端的に言うと、CAM はSRAM などのメモリー上に展開されたテーブルから、目的のエントリーを高速に見つけ出すための手段です。

CAM の効用を理解するためには、まず、CAM ではないテーブル検索手段を見てみる必要があります。

どのような種類のテーブルでも良いのですが、ここはMAC アドレス・テーブルを例に考えてみましょう。

VLAN をサポートした最近のスイッチでは、さまざまな要素をMAC アドレステーブルに格納しています。
しかし今回は、もっともシンプルに、MAC アドレスとそれに対応するポート番号だけを格納したテーブルを想定します。

MAC アドレス・テーブルから引き出したい情報は、そのアドレスが学習されたポートの番号です。
スイッチは、転送すべき宛先ポート番号を知ることで、そのアドレス宛のフレームを正しいポートに転送できます。

テーブルから目的のエントリを探し出す一番シンプルな方法は、1 行目から順番に見ていくことです。
間違いのない方法ですが、テーブルが大きくなるとどうしても時間がかかります。

実際には、ハッシュを使うなど様々な工夫が施されています。
しかし、CPU により処理されるこれらの検索手段で、検索に要する時間を短縮するのは限界があります。


1980 年代の後半、CAM が登場します。

CAM は、先にも述べたとおり、メモリー上のテーブルから目的のエントリーを高速に見つけ出すための手段です。

技術の進歩により製造コストが下がった半導体素子上に、メモリー上のテーブルを検索するための、専用のハードウェアを実装したものがCAM です。
検索の手段であって、検索対象のテーブルでは無いことに注意してください。

CAM に、キーとなる要素を入力すると、その要素が格納されているテーブル内のアドレスが得られます(今回の例では、要素とはMAC アドレスです)。
アドレスが分かれば、テーブルのその箇所を直接読むことができます。

CAM を利用すると、検索に要する時間はテーブルの大きさに左右されません。
通常、1 クロックで検索が完了します。

CAM の動作を知るには、次のサイトがお勧めです。
英文ですが、それほど難しい表現もありませんし、量も多くありません。
前半だけでもCAM の概要を理解することができます。
後半はトランジスタの動作を理解していないと難しいですが、単純なフリップフロップ回路が理解できる程度の知識があれば、難しくありません。

Content-Addressable Memory Introduction


繰り返しますが、CAM はテーブルではありません。
それでは、なぜCisco はMAC アドレス・テーブルのことをCAM と呼ぶのでしょうか。

これは私見ですが、この命名には、マーケティング目的のバイアスがかかっているのでしょう。

LAN スイッチが登場した1990 年代初頭は、半導体製造技術の進歩により、製造コストが顕著に低下し始めた時期と一致します。
安価な半導体素子の存在こそが、LAN スイッチの実現に大きく貢献していると言えます。

CAM という新しい技術を採用していることを、アピールする目的があったことが伺えます。

※ もちろん、当時からCAM を採用していたのはCisco(旧Crescendo 社)だけではありません。


参考: TCAM(Ternary CAM)とBCAM(Binary CAM)