概要

レイヤ2スイッチ(スイッチングハブ)はイーサネットヘッダに基づいて適切なポートだけにイーサネットフレームを転送します。その動作の仕組みを詳しく解説します。

関連記事

MACアドレス、イーサネットのフレームフォーマットについての以下の記事も合わせてご覧ください。

Ciscoのレイヤ2スイッチでのMACアドレスの動作を確認するための演習です。

レイヤ2スイッチのデータ転送の概要

レイヤ2スイッチがイーサネットフレームを転送できるようにするために、特別な設定は一切不要です。物理的な配線を行い、レイヤ2スイッチが起動していればOKです。レイヤ2スイッチの動作はとてもシンプルです。レイヤ2スイッチがデータを転送する動作の流れは以下のようになります。

送信元MACアドレスを覚える

受信したイーサネットフレームの送信元MACアドレスをMACアドレステーブルに登録する

STEP
1

宛先MACアドレスを見て転送

宛先MACアドレスとMACアドレステーブルから転送先のポートを決定して、イーサネットフレームを転送する。MACアドレステーブルに存在しないMACアドレスの場合は、受信したポート以外のすべてのポートへイーサネットフレームを転送する(フラッディング)。

STEP
2

CCNA試験で重要

CCNA試験では、レイヤ2スイッチでのイーサネットフレーム転送の仕組みに関する問題がとてもよく出題されます。以降の具体的な例をしっかりと理解しておきましょう。

データ(イーサネットフレーム)転送の例

レイヤ2スイッチのイーサネットフレームの転送の仕組みを、以下のネットワーク構成をもとにして具体的に解説します。

図 レイヤ2スイッチの動作 ネットワーク構成
図 レイヤ2スイッチの動作 ネットワーク構成

2台のレイヤ2スイッチSW1とSW2にホストA~ホストDを接続しています。ホストA~ホストDは同一ネットワークに接続していることになります。また、話を簡単にするために、各ホストのMACアドレスはそれぞれのホスト名とします。

ホストAからホストDへのイーサネットフレームの転送 SW1の動作

上記のネットワーク構成でホストAからホストDへイーサネットフレームを転送するときを考えます。ホストAは、以下のMACアドレスを指定してイーサネットフレームを送信します。(1)

宛先MACアドレス:D
送信元MACアドレス:A

TCP/IPでは本来は、IPアドレスを指定しなければいけません。ここでは、レイヤ2スイッチの動作を解説するのが目的なのでIPアドレスは意識していません。通常は、宛先IPアドレスに対する宛先MACアドレスをARPによって解決しなければいけませんが、ARPのアドレス解決の流れは省略しています。また、ARPアドレス解決の過程で、レイヤ2スイッチのMACアドレステーブルにMACアドレスが登録されます。しかし、以降の解説ではMACアドレステーブルには何も登録されていないものとしています。

SW1はポート1でイーサネットフレームを受信します。これは、流れてくる電気信号を「0」と「1」のビットに変換して、イーサネットフレームとして認識することになります。

そして、イーサネットフレームのイーサネットヘッダにある送信元MACアドレスAをMACアドレステーブルに登録します。SW1は、ポート1の先にはAというMACアドレスが接続されているということを認識していることになります。(2)

次に、SW1は宛先MACアドレスDを見て、MACアドレステーブルからどのポートに転送するべきかを判断します。MACアドレスDはMACアドレステーブルに登録されていません。MACアドレステーブルに登録されていないMACアドレスが宛先になっているイーサネットフレームをUnknownユニキャストフレームと呼びます。Unknownユニキャストフレームは、受信したポート以外のすべてのポートへ転送します。この動作を「フラッディング」と呼びます。(3)レイヤ2スイッチのイーサネットフレームの転送は、「わからなかったらとりあえず転送しておく」というちょっといい加減な動作をしているわけです。

ポート1で受信しているので、ポート2とポート3から受信したイーサネットフレームを転送します。受信したイーサネットフレームは1つだけですが、SW1がフラッディングするためにコピーします。コピーしているだけなので、受信したイーサネットフレームはいっさい変更されていません。

ポート2から転送されたイーサネットフレームは、ホストBに届きます。ホストBは、宛先MACアドレスが自身のMACアドレスではないので、イーサネットフレームを破棄します。そして、ポート3から転送されたイーサネットフレームは、SW2で処理されることになります。

 図 ホストAからホストD宛てのイーサネットフレームの転送 SW1
図 ホストAからホストD宛てのイーサネットフレームの転送 SW1

ホストAからホストDへのイーサネットフレームの転送 SW2の動作

SW1でフラッディングされたホストAからホストDへのイーサネットフレームは、SW2のポート3で受信します。動作はSW1と同じです。まず、送信元MACアドレスAをSW2のMACアドレステーブルに登録します。(1)

そして、宛先MACアドレスDはMACアドレステーブルに登録されていません。そのため、フラッディングされることになり受信したポート3以外のポート1、ポート2へ転送されます。(2)

ホストCは宛先MACアドレスが自分宛てではないので、イーサネットフレームを破棄します。ホストDは宛先MACアドレスが自分宛なので、イーサネットフレームを受信して上位プロトコルでの処理を行っていきます。

 図 ホストAからホストD宛てのイーサネットフレームの転送 SW2
図 ホストAからホストD宛てのイーサネットフレームの転送 SW2

ホストDからホストAへのイーサネットフレームの転送 SW2の動作

通信は原則として双方向で行われます。ホストAからホストDへイーサネットフレームを送信したら、たいていはホストDからホストAへ返事を返します。そこで、今度はホストDからホストAへのイーサネットフレームの転送を考えます。

ホストDからホストAへのイーサネットフレームは、以下のMACアドレスを指定します。

宛先MACアドレス:A
送信元MACアドレス:D

ホストDからホストA宛てのイーサネットフレームを送信すると、SW2のポート2で受信します。(1)これまで解説した動作と同じように、まず、送信元MACアドレスをMACアドレステーブルに登録します。SW2のMACアドレステーブルにあらたにMACアドレスDが登録されるようになります。SW2はポート2の先にMACアドレスDが接続されていると認識します。

そして、宛先MACアドレスAとMACアドレステーブルを照合します。MACアドレステーブルからMACアドレスAはポート3の先に接続されていることがわかるので、ポート3へイーサネットフレームを転送します。(3)

 図 ホストDからホストA宛てのイーサネットフレームの転送 SW2
図 ホストDからホストA宛てのイーサネットフレームの転送 SW2

ホストDからホストAへのイーサネットフレームの転送 SW1の動作

SW1がホストDからホストAへのイーサネットフレームを受信すると、やはり動作は同じです。まず、送信元MACアドレスをMACアドレステーブルに登録します。SW1は、MACアドレスDはポート3の先に接続されていると認識することになります。(1)

そして、宛先MACアドレスAはMACアドレステーブルからポート1の先に接続さていると認識しているので、ポート1へ転送します。(2)

ホストAは、SW1から転送されたイーサネットフレームを受信して上位プロトコルの処理を行います。

図 ホストDからホストA宛てのイーサネットフレームの転送 SW1
図 ホストDからホストA宛てのイーサネットフレームの転送 SW1

最終的なMACアドレステーブル

以上のように、レイヤ2スイッチは受信したイーサネットフレームの送信元MACアドレスをMACアドレステーブルにどんどん登録していきます。MACアドレスを学習できていないうちは、フラッディングが発生して余計なイーサネットフレームの転送が発生します。しかし、MACアドレステーブルができあがってくると、必要なポートにのみイーサネットフレームの転送を行うようになります。

今回解説したネットワーク構成において、SW1とSW2の最終的なMACアドレステーブルは、次のようになります。

ポートMACアドレス
1A
2B
3C
3D
表 SW1のMACアドレステーブル
ポートMACアドレス
1C
2D
3 A
3 B
表 SW2のMACアドレスレーブル

1つのポートにMACアドレスが1つだけ登録されるとは限らないことに注意してください。この例のように、レイヤ2スイッチ同士を接続しているポートでは、1つのポートに複数のMACアドレスが登録されます。

なお、MACアドレステーブルに登録されるMACアドレスの情報は、接続するポートが変わったりすることもあるので、永続的なものではありません。MACアドレステーブルに登録するMACアドレスの情報には制限時間がもうけられていて、制限時間がきれるとMACアドレスの情報は削除されます。登録されたMACアドレスが送信元となっているイーサネットフレームを受信すると、制限時間がリセットされます。ケーブルを抜いてリンクがダウンすると、そのポートのMACアドレスは削除されます。また、企業向けのレイヤ2スイッチでは、あらかじめMACアドレステーブルに特定のMACアドレスを登録しておくような設定も可能です。

MACアドレステーブルに登録できるMACアドレスの数には上限があります。ただ、通常の利用でMACアドレスの上限を考慮しなければいけないようなことはまずありません。

ブロードキャストフレームの転送

宛先MACアドレスがブロードキャストとなっているブロードキャストフレームの転送についても考えます。ここまで解説しているように、レイヤ2スイッチは宛先MACアドレスとMACアドレステーブルから転送先を判断します。ブロードキャストMACアドレス「FF-FF-FF-FF-FF-FF」はMACアドレステーブルに登録されることはありません。MACアドレステーブルは、送信元MACアドレスを登録していて、ブロードキャストMACアドレスは送信元MACアドレスになることはありえないからです。そのため、ブロードキャストフレームは必ずフラッディングされることになります。

たとえば、ホストAからブロードキャストフレームを送信すると、宛先MACアドレスはMACアドレステーブルに登録されていないので、SW1はフラッディングします。つまり、ポート2およびポート3にコピーして転送します。ポート2から転送されたブロードキャストフレームは、ホストBが受信して上位プロトコルの処理をします。また、ポート3から転送されたブロードキャストフレームはSW2が受信して、SW1と同様にフラッディングします。そして、ホストCとホストDがフラッディングされたブロードキャストフレームを受信して上位プロトコルの処理をします。このように、ブロードキャストフレームはレイヤ2スイッチで構成する1つのイーサネットネットワーク全体に転送されることになります。ブロードキャストフレームが1つのネットワーク全体に転送されることから、1つのイーサネットネットワークを「ブロードキャストドメイン」と表現することもあります。

なお、ブロードキャストフレームだけでなく、宛先MACアドレスがマルチキャストとなっているマルチキャストフレームも同様です。マルチキャストMACアドレスも送信元MACアドレスになることがありえないので、MACアドレステーブルに登録されません。マルチキャストフレームもブロードキャストフレーム同様に1つのイーサネットネットワーク全体にフラッディングされます。

図 ブロードキャストフレームの転送
図 ブロードキャストフレームの転送

IGMPスヌーピングによって、マルチキャストのMACアドレスをMACアドレステーブルに登録して、マルチキャストフレームのフラッディングを制御することもできます。

レイヤ2スイッチの仕組み