はじめに
LAN内では、複数の端末がL2スイッチにつながっていても、すべてのフレームが毎回すべてのポートへ送られるわけではありません。L2スイッチは、どのMACアドレスがどのポートの先にあるかを学習し、その情報を使って転送先を絞り込みます。
このとき使われるのがMACアドレステーブルです。L2スイッチは受信したフレームの送信元MACアドレスから端末の位置を学習し、次に宛先MACアドレスを調べてフレームをどのポートへ出すかを判断します。
この記事では、MACアドレス学習、MACアドレステーブル、宛先が分かる場合と分からない場合のフレーム転送を、通信の流れに沿って解説します。
この記事で分かること
- L2スイッチが何を「学習」しているのか
- MACアドレステーブルに何が記録されるのか
- 宛先MACアドレスを学習済みの場合の転送
- 宛先MACアドレスが未学習の場合のフラッディング
- 通信を繰り返すと転送先を絞り込める理由
L2スイッチのMACアドレス学習とは
L2スイッチのMACアドレス学習とは、受信したフレームの送信元MACアドレスと、そのフレームを受信したポートの対応を記録する仕組みです。
たとえば、端末Aから届いたフレームをポート1で受信した場合、L2スイッチは「端末AのMACアドレスはポート1の先にある」と学習します。この対応関係はMACアドレステーブルに記録され、以後のフレーム転送に利用されます。
ここで重要なのは、学習に使うのが宛先MACアドレスではなく、受信したフレームの送信元MACアドレスだという点です。L2スイッチは実際にフレームが入ってきたポートを見ることで、そのMACアドレスへ到達するためのポートを知ることができます。MACアドレスそのものの役割や48ビットの構造は、「MACアドレスとは?48ビットの構造と役割をわかりやすく解説」で解説しています。
MACアドレステーブルを作る仕組み
MACアドレステーブルには、MACアドレスと、そのMACアドレスへ到達するためのポートの対応が記録されます。ここでは同じVLAN内の通信を例に、MACアドレスとポートの対応だけを簡略化して示します。
| MACアドレス | ポート |
|---|---|
| 端末AのMACアドレス | ポート1 |
| 端末BのMACアドレス | ポート2 |
L2スイッチは最初からすべての端末の位置を知っているわけではありません。端末からフレームを受信するたびに送信元MACアドレスを確認し、必要に応じてMACアドレステーブルへ対応を追加します。同じMACアドレスのフレームを別のポートから受信した場合は、新しい受信位置に合わせて学習情報が更新されます。
宛先MACアドレスから転送先を決める
送信元MACアドレスの学習後、L2スイッチはフレームの宛先MACアドレスをMACアドレステーブルで検索します。ここからは、宛先をすでに学習しているかどうかで処理が変わります。
宛先を学習済みの場合
宛先MACアドレスに対応するポートがMACアドレステーブルに存在すれば、L2スイッチはそのポートへフレームを転送します。
たとえば端末BのMACアドレスがポート2に対応していると分かっていれば、端末Aから端末Bへ送られたフレームをポート2へ転送できます。他の関係ないポートへ同じフレームを送る必要はありません。
なお、宛先MACアドレスが受信したポートと同じポートの先にあると判断できる場合は、そのポートへ同じフレームを送り返す必要がないため転送しません。
宛先が分からない場合
宛先MACアドレスがMACアドレステーブルに存在しない場合、L2スイッチはどのポートの先に宛先があるか判断できません。このような未知のユニキャストフレームは、受信したポートを除き、同じVLAN内の転送可能なポートへ送られます。この処理をフラッディングと呼びます。
その後、宛先側の端末からフレームが返ってくれば、L2スイッチはそのフレームの送信元MACアドレスから端末の位置を学習できます。以後はMACアドレステーブルを使って、必要なポートへ絞って転送できるようになります。
MACアドレス学習とフレーム転送の具体例
端末Aがポート1、端末Bがポート2につながっている状態を考えます。ここではフレーム転送の仕組みに絞るため、端末Aは端末BのMACアドレスをすでに知っている一方、L2スイッチは端末Bの位置をまだ学習していないものとします。IPv4でIPアドレスからMACアドレスを調べる仕組みは、「ARPとは?IPv4でIPアドレスからMACアドレスを調べる仕組みを解説」で解説しています。
- 端末Aが端末B宛てのフレームを送る
- L2スイッチはポート1で受信し、端末AのMACアドレスをポート1として学習する
- 端末BのMACアドレスは未学習なので、同じVLAN内へフレームをフラッディングする
- 端末Bからフレームが返ると、L2スイッチは端末BのMACアドレスをポート2として学習する
- 以後、端末Aから端末Bへのフレームはポート2へ絞って転送できる
この流れを見ると、L2スイッチが「送信元から学習し、宛先を見て転送する」ことが分かります。学習と転送では、参照するMACアドレスの役割が異なる点がポイントです。
Ethernetフレームの送信元MACアドレスや宛先MACアドレスがどこに格納されているかは、「イーサネットフレームとは?構造と各フィールドの役割を解説」で確認できます。
MACアドレステーブルは更新される
動的に学習したMACアドレステーブルの情報は、永久に残り続けるわけではありません。一定時間その送信元MACアドレスからフレームを受信しなければ、古い動的エントリは削除されます。この仕組みをエージングと呼びます。
端末の接続ポートが変わった場合も、新しいポートからその端末のフレームを受信することで対応関係を学習し直します。MACアドレステーブルを現在の接続状態に合わせて更新することで、L2スイッチは適切なポートへフレームを転送できます。
まとめ
L2スイッチは、MACアドレスを見て単純にフレームを転送するだけではありません。受信したフレームから端末の位置を学習し、その結果をMACアドレステーブルへ記録して転送判断に利用します。
- 送信元MACアドレスと受信ポートの対応を学習する
- 学習した情報をMACアドレステーブルに記録する
- 宛先MACアドレスが分かれば対応するポートへ転送する
- 宛先が未学習なら同じVLAN内でフラッディングする
- 動的な学習情報は更新・エージングされる
「送信元から学習し、宛先を見て転送する」と整理すると、MACアドレス学習とフレーム転送の関係を理解しやすくなります。