MACアドレステーブル(CAMテーブル)

L2スイッチは、フレームをどのポートへ転送すべきかを判断するために、MACアドレステーブル(CAMテーブル:Content Addressable Memory テーブルとも呼ばれます)という表を内部で保持しています。このテーブルには、「どのMACアドレスの機器が、スイッチのどのポートにつながっているか」という対応関係が記録されます。

MACアドレスの学習

MACアドレステーブルは、あらかじめすべての情報が設定されているわけではなく、スイッチが実際に受信したフレームから自動的に学習して作られます。

  • スイッチは、ポートでフレームを受信すると、そのフレームの送信元MACアドレスを確認します。
  • 「この送信元MACアドレスの機器は、この受信ポートにつながっている」という対応関係を、MACアドレステーブルに記録します。
  • 同じ送信元MACアドレスからのフレームを、以前とは異なるポートで受信した場合、テーブルの内容を新しい情報に更新します。

この学習の仕組みにより、スイッチは特別な設定を行わなくても、接続されている機器のMACアドレスを自動的に把握していきます。

学習済みのMACアドレステーブルは、show mac address-tableコマンドで確認できます。

Switch# show mac address-table

          Mac Address Table
-------------------------------------------

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    00a1.b2c3.d4e5    DYNAMIC     Gi0/1
  10    00b2.c3d4.e5f6    DYNAMIC     Gi0/2
  10    0050.56aa.0102    STATIC      CPU

Type列がDYNAMICのエントリは、これから説明する学習・エージングの対象となる、通常のフレーム受信によって自動登録されたエントリです。STATICのエントリは、管理者が手動で登録した、あるいはスイッチ自身が使うために自動的に登録された、エージングの対象外となる特別なエントリです。

エージング(aging)

MACアドレステーブルに記録された情報は、永続的に保持されるわけではありません。一定時間(デフォルトでは300秒であることが一般的です)、そのMACアドレスからのフレームを一度も受信しなかった場合、そのエントリはテーブルから自動的に削除されます。この仕組みをエージングと呼びますエージングにより、機器の接続場所が変わったり、機器がネットワークから外れたりした場合に、古い(実態と合わなくなった)情報がテーブルにいつまでも残り続けることを防いでいます。エージングタイムの具体的な秒数は、スイッチの機種・設定によって変更可能です。[1]。

フレームの転送方式

スイッチは、受信したフレームの宛先MACアドレスとMACアドレステーブルを照合し、次の3つのいずれかの方法でフレームを転送します。

既知ユニキャスト(known unicast)

宛先MACアドレスが、同じVLANのMACアドレステーブルに既に登録されている場合です。この場合、スイッチはそのフレームを、テーブルに記録された該当ポートのみへ転送します。他のポートへは送信されません。ただし、該当ポートが受信ポートと同じ場合は、そのフレームを転送しません。

未知ユニキャスト(unknown unicast)・ブロードキャスト

宛先MACアドレスがMACアドレステーブルに登録されていない場合(未知ユニキャスト)、または宛先がブロードキャストアドレス(FFFF.FFFF.FFFF)の場合、スイッチはそのフレームを、受信したポート以外の、同じVLANに属する転送可能なすべてのポートへ送信します。この動作をフラッディング(flooding)と呼びます。

未知ユニキャストがフラッディングされるのは、その宛先の機器がどのポートにつながっているかをスイッチがまだ学習していないためです。その機器が応答すれば、応答フレームの送信元MACアドレスから、スイッチは対応するポートを新たに学習します。

衝突ドメインとブロードキャストドメイン

衝突ドメイン(collision domain)

同じ衝突(コリジョン)が発生しうる範囲を指します。端末が各スイッチポートに個別に接続される現在主流の構成では、ポートごとに衝突ドメインが分かれます。つまり、スイッチの各ポートは、それぞれが独立した1つの衝突ドメインとなり、あるポートでの通信が、別のポートでの通信と衝突することはありません。ただし、スイッチポートに半二重のハブなどの共有媒体が接続されている場合は、その共有媒体に接続された機器とスイッチポートが1つの衝突ドメインを共有します。これは、古い共有型のハブ(Hub)が、接続されたすべてのポートで1つの衝突ドメインを共有していたのとは対照的です。スイッチが普及した現在のネットワークでは、全二重通信が一般的となり、衝突ドメインの概念自体が実務上意識される場面は少なくなっていますが、CCNAの出題範囲としては引き続き問われる基本概念です。[2]

ブロードキャストドメイン(broadcast domain)

ブロードキャストフレームが届く範囲を指します。スイッチは、衝突ドメインとは異なり、ブロードキャストドメインを分割しません。同じVLANに属するすべてのポートは、1つのブロードキャストドメインを共有します。ブロードキャストドメインを分割するには、VLANによる分割や、ルータ(L3デバイス)による分割が必要です。

フレーム転送方式(store-and-forwardとcut-through)

スイッチがフレームを受信してから転送するまでの処理方法にも、複数の方式があります。

  • ストアアンドフォワード(store-and-forward)方式:フレーム全体を受信し終えてから、フレームのエラーチェック(FCS:Frame Check Sequenceの検証)を行い、問題が無ければ転送します。フレーム全体を受信してから処理するため、後述のカットスルー方式より遅延(レイテンシ)は大きくなりますが、エラーのあるフレームを転送せずに破棄できるという利点があります。
  • カットスルー(cut-through)方式:フレームの宛先MACアドレス部分(フレームの先頭部分)を受信した時点で、フレーム全体を受信し終える前に転送を開始する方式です。低遅延という利点がありますが、フレーム全体のエラーチェックを行わずに転送するため、エラーのあるフレームもそのまま転送してしまう可能性があります。

補足

  1. エージングにより、機器の接続場所が変わったり、機器がネットワークから外れたりした場合に、古い(実態と合わなくなった)情報がテーブルにいつまでも残り続けることを防いでいます。エージングタイムの具体的な秒数は、スイッチの機種・設定によって変更可能です。 ↩
  2. これは、古い共有型のハブ(Hub)が、接続されたすべてのポートで1つの衝突ドメインを共有していたのとは対照的です。スイッチが普及した現在のネットワークでは、全二重通信が一般的となり、衝突ドメインの概念自体が実務上意識される場面は少なくなっていますが、CCNAの出題範囲としては引き続き問われる基本概念です。 ↩