こんにちは!ネットワークの世界へようこそ。インフラ・ネットワークスペシャリストの私です。
日頃、私たちが何気なく使っているインターネットや社内LANですが、スイッチの電源を入れた瞬間から、実は内部ではものすごい猛スピードでデータ(フレーム)の仕分け作業が行われています。
「ルータやスイッチって、どうやってあんなに大量のパケットを瞬時に目的地へ届けているんだろう?」
そんな疑問を持ったことはありませんか?
今回は、L2スイッチの心臓部であり、ネットワークのスピードを影で支える「CAMテーブル」と「TCAMメモリ」というハードウェアの仕組みについて、身近な例えを交えながら、一歩ずつ優しく紐解いていきたいと思います。難しい専門用語に圧倒されそうになっても大丈夫です。私と一緒にゆっくり紐解いていきましょう!
—
1. スイッチの中の「超高速住所録」:CAMってなに?
まずは、L2スイッチの基本である「MACアドレステーブル」の正体から見ていきましょう。
スイッチは、パソコンから届いたイーサネットフレームを受け取ると、「おっ、このフレームはポート1のパソコンから来たんだな」「宛先はポート3のパソコン宛だな」ということを学習し、記憶します。この記憶を保管している場所が、CAM(Content Addressable Memory:コンテンツアドレス指定メモリ)という特殊なハードウェアです。
郵便配達に例えてみよう
CAMの凄さをイメージするために、街の郵便局を思い浮かべてみてください。
普通のノート(通常のPCのメモリ)に住所録を書いた場合、郵便局員が「東京都〇〇町1-2の人への手紙だ!」と探すとき、最初から順番に「1ページ目…違う、2ページ目…違う」とパラパラめくっていく必要がありますよね。これでは、町中の人が一斉に手紙を出したら、郵便局は大渋滞してしまいます。
しかし、CAMは一味違います。
CAMは、「宛先の住所(MACアドレス)をポンと投げ込むと、一瞬で『それは○番窓口です!』と答えが返ってくる」という魔法のようなメモリなのです。
通常のメモリが「中身を探すために上から順番に調べる(検索)」のに対し、CAMは「入力されたデータ(Content)に一致する場所を、ハードウェアの回路で一発で見つけ出す(連想)」ことができます。だから、何万件というMACアドレスを覚えていても、スイッチの転送速度が落ちないんですね。
—
2. さらに複雑な条件をさばく!「TCAM」の登場
L2スイッチだけでなく、L3スイッチやルータのルータビジョン、あるいはファイアウォール機能を持つ機器を触ったことがある方なら、ACL(アクセスイリスト)を設定したことがあるでしょう。
「送信元IPはこの範囲、宛先ポート番号はこれ、プロトコルはTCPで……もし合致したら破棄する!」といった複雑な条件分岐です。
「あれ?さっきのCAMを使えば一瞬でルールが見つかるんじゃないの?」と思いますよね。
実は、CAMには一つの大きな弱点があります。それは、CAMが「完全一致(0か1か)」しか理解できないという点です。
「ワイルドカード」を理解したい!
ACLのルールには、例えば 192.168.1.0/24 のように、「このネットワーク全体ならOK」というワイルドカード(あいまいな条件)が含まれます。
ここで登場するのが、TCAM(Ternary Content Addressable Memory:三値連想メモリ)です。
頭に「三値(Ternary)」とついているのがポイントで、TCAMは通常の「0」と「1」に加えて、「DC(Don’t Care:どっちでもいいよ)」という3つ目の状態を扱えます。
図書館の検索機に例えてみよう
- CAM:「『赤毛のアン 1巻』の本棚はどこ?」という完全一致の検索が得意。
- TCAM:「タイトルに『赤毛の』が含まれていて、出版年が2000年以降の本すべて」というような、条件付き(ワイルドカードを含む)の複雑な検索が得意。
TCAMはこの「どっちでもいい(Don’t Care)」を使えるため、複雑なACLのルールが何千行あわせて登録されていても、パケットが通過する瞬間にたった1回のハードウェア処理で「どれにヒットするか」を同時に判定できるのです。ネットワークのスピードが落ちないのは、このTCAMのおかげなんですね。
—
3. 実務での注意点:リソースと制約を知る
さて、ここまで読むと「CAMもTCAMも、ハードウェアで一瞬で処理してくれるなんて最強じゃん!」と思われるかもしれません。実際その通りなのですが、インフラエンジニアとして現場に出ると、この仕組みの「物理的な制約」に悩まされることがあります。
それは、「TCAMの容量には限りがある」ということです。
CAMやTCAMは、通常のDRAM(メインメモリ)とは異なり、非常に高速に動作する特殊な回路(SRAMの発展形)で作られています。そのため、物理的にチップに載せられるサイズが小さく、コストも高価です。
スイッチの「テンプレート機能」を覗いてみよう
例えば、CiscoのCatalystスイッチなどでは、用途に合わせてTCAMの割り当てを変更(SDMテンプレートの変更)できる機能があります。
「うちはルーティングをたくさんしたいから、ルーティングテーブル用のTCAMを大きめに割こう」「いや、うちはセキュリティACLを厳しく書きたいから、ACL用のTCAMを増やそう」といった具合です。
もし、このTCAMの容量を無視して膨大なACLを設定し続けると、どうなるでしょうか?
ある日突然、スイッチが「TCAM Full(メモリがいっぱいです!)」という悲鳴を上げ、新しいルールを受け付けなくなったり、最悪の場合はパケットの処理能力が低下してネットワーク全体のボトルネックになったりします。
実務でCatalystスイッチなどのACLやQoSの設定を変更する際は、以下のようなコマンドで現在のTCAMの使用状況を必ず確認します。
# Cisco CatalystスイッチでのTCAM使用状況確認コマンド例
Switch# show tcam regional-info
または
Switch# show platform hardware fed switch 1 active qos datapath resource-utilization
*(※OSのバージョンや機種によってコマンドは異なりますが、「現在のハードウェア資源がどれくらい使われているか」を監視することは、安定稼働させる上で非常に重要なインフラエンジニアのスキルです。)*
—
4. まとめ:パケットを支える縁の下の力持ち
今回は、L2スイッチのCAMテーブルと、ACL等で使われるTCAMメモリの仕組みについて解説しました。
- CAM(コンテンツアドレス指定メモリ):
MACアドレスなどの「完全一致」を瞬時に探し出す、超高速な住所録。
- TCAM(三値連想メモリ):
「0」「1」に加えて「どっちでもいい(Don’t Care)」が使えるため、ACLなどの複雑なワイルドカード条件を同時に一発検索できるすごい奴。
普段私たちが何気なくブラウザで動画を見たり、チャットをしたりできるのは、こうしたスイッチのハードウェアの奥深くで、CAMやTCAMが猛スピードで宛先を仕分け、交通整理をしてくれているおかげなのです。
ネットワーク機器のスペック表を見る機会があれば、「お、この機種のTCAMは大きめだな」「この設定を入れるとリソースを圧迫しないかな?」と、ぜひ内部のハードウェアの動きに思いを馳せてみてください。
それでは、また次回の深淵なるネットワークの世界でお会いしましょう!
コメント