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

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

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

データ転送の例

レイヤ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へのイーサネットフレームの転送 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

ホスト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へのイーサネットフレームの転送 SW1の動作

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

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

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

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

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

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

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

表 SW1 MACアドレステーブル

ポート

MACアドレス

1

A

2

B

3

C

3

D

表 SW2 MACアドレステーブル

ポート

MACアドレス

1

C

2

D

3

A

3

B

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

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