MACアドレステーブルとは?L2スイッチの学習・転送・フラッディングの仕組みを図解

  • URLをコピーしました!

前の記事では、 L2スイッチがMACアドレスを利用してEthernetフレームを転送する ことを学びました。

たとえば、L2スイッチが次のような情報を持っていれば、

MAC ADDRESS PORT
AA-AA Port 1
BB-BB Port 2
CC-CC Port 3

宛先MACアドレスが BB-BBなら、 Port 2へフレームを転送できます。

では、ここで重要な疑問があります。

L2スイッチは、
「BB-BBがPort 2にいる」とどうやって知ったのでしょうか?

実は、通常のL2スイッチは 通信を受信しながら MACアドレスとポートの対応を自動的に学習します。

その情報を保存するのが MACアドレステーブルです。

🌐 NETWORK INTERMEDIATE

この記事はネットワーク中級講座の一部です。 学習順を確認したい場合は講座一覧から確認できます。

ネットワーク中級講座を見る →
LESSON GOAL この記事のゴール

MACアドレステーブルという言葉を覚えるだけではなく、 「スイッチは受信フレームの送信元MACを学習し、 宛先MACをMACアドレステーブルで検索して ForwardまたはFloodする」 という一連の動作を説明できる状態を目指します。

目次

MACアドレステーブルとは?

MACアドレステーブルとは、 L2スイッチが保持する MACアドレスとスイッチポートの対応関係を記録したテーブル です。

VLAN MAC ADDRESS PORT
1 AA-AA-AA-AA-AA-AA Gi0/1
1 BB-BB-BB-BB-BB-BB Gi0/2
1 CC-CC-CC-CC-CC-CC Gi0/3

この表を利用することで、 L2スイッチは毎回すべてのポートへフレームを送るのではなく、 必要なポートを判断して転送できます。

MACアドレステーブル=「MACアドレスがどのポート側にいるか」を記録する表

L2スイッチの効率的なフレーム転送を支えている 非常に重要な情報です。

MACアドレステーブルは最初から完成しているわけではない

新品のL2スイッチを接続した直後など、 動的に学習するMACアドレスの情報がまだない状態では、 MACアドレステーブルはほぼ空です。

MAC ADDRESS TABLE EMPTY

まだ端末からフレームを受信していない

スイッチは通信を受信しながら、 接続されている端末のMACアドレスを学習していきます。

01 Learn 送信元MACを学習
02 Lookup 宛先MACを検索
03 Forward / Flood フレーム転送
04 Aging 古い情報を削除

STEP 1:送信元MACアドレスを学習する

ここがMACアドレステーブルを理解するうえで 最も重要なポイントです。

L2スイッチは、 受信したEthernetフレームの 送信元MACアドレス(Source MAC) を確認します。

DESTINATION MAC BB-BB
SOURCE MAC AA-AA
DATA

このフレームが Port 1から入ってきたとします。

💻 PC-A MAC:AA-AA
Port 1
L2 Switch

スイッチから見ると、

Source MAC AA-AA Port 1 から来た

ということが分かります。

そこでMACアドレステーブルへ、

AA-AA Port 1

という情報を登録します。

スイッチが学習するのは「送信元MACアドレス」

宛先MACアドレスを見て 「この端末はこのポートにいる」と学習するのではありません。 フレームが入ってきたポートとSource MACを対応付けて学習 します。

送信元MACと宛先MACでは使い方が違う

MACアドレステーブルの動作では、 Source MACとDestination MACに異なる役割があります。

SOURCE MAC 学習に使う

「このMACアドレスは、このポート側にいる」 という情報を更新します。

DESTINATION MAC 転送判断に使う

MACアドレステーブルを検索し、 どのポートへフレームを送るか判断します。

Source MAC → Learn Destination MAC → Lookup / Forward

STEP 2:宛先MACアドレスをMACアドレステーブルから検索する

送信元MACアドレスを学習したあと、 スイッチは 宛先MACアドレス(Destination MAC) を確認します。

先ほどのフレームでは、

DESTINATION MAC BB-BB

です。

スイッチはMACアドレステーブルから BB-BBを探します。

SEARCH BB-BB
MAC TABLE BB-BB → Port 2
FORWARD Port 2

宛先MACが登録済みなら該当ポートへ転送する

MACアドレステーブルに宛先MACが存在する場合を 既知のユニキャスト として考えます。

💻 PC-A AA-AA
L2 Switch BB-BB → Port 2
💻 PC-B BB-BB

スイッチはPort 2にPC-Bがいると分かっているため、 基本的には Port 2だけへフレームを転送します。

これがL2スイッチがハブより効率的に通信できる理由の一つです。

宛先MACが登録されていない場合はどうなる?

では、MACアドレステーブルに 宛先MACアドレスが存在しない場合を考えてみましょう。

AA-AA Port 1
CC-CC Port 3

ここへ、

DESTINATION MAC BB-BB MAC Tableには存在しない

というフレームが届いたとします。

この場合、 スイッチはBB-BBがどのポート側にいるか分かりません。

そこで、 フレームを受信したポートを除く同一VLAN内のポートへ転送 します。

L2 Switch BB-BB:UNKNOWN
Port 1
受信元なので送らない
→ Port 2
→ Port 3
→ Port 4

これを フラッディング(Flooding) と呼びます。

Unknown Unicast Flooding

宛先がユニキャストMACアドレスでも、 MACアドレステーブルに存在しなければ 未知のユニキャスト(Unknown Unicast) としてフラッディングされます。

通信するとMACアドレステーブルはどう埋まっていく?

空のMACアドレステーブルから、 PC-AとPC-Bが通信する例を見てみましょう。

STEP 0 MACアドレステーブルは空
登録なし
STEP 1 PC-A → PC-B

Source MAC:AA-AA
Port 1から受信

AA-AA → Port 1
STEP 2 BB-BBはまだ不明

Destination BB-BBを知らないため、 Port 2・3などへFlood

AA-AA → Port 1
STEP 3 PC-B → PC-Aへ応答

Source MAC:BB-BB
Port 2から受信

AA-AA → Port 1
BB-BB → Port 2
STEP 4 以降は直接転送できる

AA-AAとBB-BBの位置を スイッチが把握

AA-AA → Port 1
BB-BB → Port 2

同じポート側に複数のMACアドレスを学習することもある

MACアドレステーブルでは、 「1ポートにつきMACアドレス1個」 とは限りません。

たとえばスイッチ同士を接続した場合、 その先に複数の端末が存在することがあります。

Switch-A
Port 24 ─────────
Switch-B
💻 AA-AA
💻 BB-BB
💻 CC-CC

Switch-Aから見ると、 AA-AA、BB-BB、CC-CCのすべてが Port 24の先に存在します。

AA-AA Port 24
BB-BB Port 24
CC-CC Port 24
MACアドレステーブルは「端末を直接接続したポート」を表すとは限らない

正確には、 そのMACアドレスへ到達するために使うポート と考えると理解しやすくなります。

端末が別ポートへ移動するとMACアドレステーブルも更新される

端末の接続先が変わる場合もあります。

たとえばAA-AAを持つPCが、 Port 1からPort 4へ移動したとします。

BEFORE AA-AA → Port 1
PC MOVED Port 4へ接続
AFTER AA-AA → Port 4

Port 4からSource MAC AA-AAのフレームを受信すると、 スイッチは MACアドレスの学習情報を新しいポートへ更新します。

使われなくなったMACアドレスはエージングで削除される

MACアドレステーブルの動的エントリは、 永久に残るわけではありません。

一定時間そのMACアドレスから通信を受信しなければ、 古い情報として削除されます。

これを エージング(Aging) と呼びます。

LEARN AA-AA → Port 1
NO TRAFFIC 一定時間経過
AGING エントリ削除

これにより、 端末が移動したりネットワークから切断されたりしても、 古い情報がMACアドレステーブルに残り続けることを防げます。

エージング時間は機器によって異なる

Ciscoスイッチなどでは、 動的MACアドレスのエージング時間として 300秒が使われる構成もあります。 ただし値は機種や設定によって変更できます。

DynamicとStaticのMACアドレス

MACアドレステーブルには、 自動学習されたものだけでなく、 管理者が固定的に設定した情報が存在する場合もあります。

DYNAMIC 動的エントリ

フレームのSource MACから スイッチが自動的に学習する。

STATIC 静的エントリ

管理者などが固定的に登録する MACアドレス情報。

通常の端末通信では、 DynamicなMACアドレス学習 を見る機会が多いでしょう。

ここで実際に動かしてみよう:MACアドレス学習シミュレーター

空のMACアドレステーブルから、 PC-AとPC-Bの通信によって テーブルがどのように作られるか確認してみましょう。

INTERACTIVE LAB

MAC Learning Simulator

L2 SWITCH
💻 PC-A AA-AA / Port 1
L2 Switch
💻 PC-B BB-BB / Port 2
0 Empty
1 A→B
2 Flood
3 B→A
4 Learned
MAC ADDRESS TABLE
MAC PORT
登録なし
STEP 0

MACアドレステーブルは空です

まだフレームを受信していないため、 動的なMACアドレス情報は登録されていません。

Waiting for frame…

理解度チェック:Source MACとDestination MACの役割を判断しよう

RECEIVED ON PORT 3
Source MAC CC-CC
Destination MAC AA-AA

このフレームを受信したスイッチが MACアドレステーブルへ学習する情報はどれでしょうか?

回答を選択してください

スイッチがMACアドレスを学習するとき、 どちらのMACアドレスを見るのか考えてみましょう。

実際のL2スイッチでMACアドレステーブルを確認する

Cisco IOSを使用するスイッチでは、 次のコマンドでMACアドレステーブルを確認できます。

Cisco IOS
Switch> enable
Switch# show mac address-table

表示例は次のようになります。

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

Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
  10    aaaa.aaaa.aaaa    DYNAMIC     Gi0/1
  10    bbbb.bbbb.bbbb    DYNAMIC     Gi0/2
  20    cccc.cccc.cccc    DYNAMIC     Gi0/3

ここでは、 MACアドレス・Type・Portに加えて VLAN という情報も表示されています。

なぜMACアドレステーブルに「VLAN」があるの?

ここまでの例では、 すべてのPCが同じLANに存在するとして考えてきました。

しかし実際の企業ネットワークでは、 1台のL2スイッチに接続されていても、 端末を複数のグループへ分けたいことがあります。

VLAN 10 営業部
💻 PC-A
💻 PC-B
L2 SWITCH 同じ物理スイッチ
VLAN 20 開発部
💻 PC-C
💻 PC-D

このように、 同じ物理スイッチの中でLANを論理的に分割する 仕組みが VLAN(Virtual LAN) です。

MACアドレステーブルも、 実際には VLANとMACアドレスの組み合わせ を意識して管理されます。

CURRENT MAC Address Table MACとPortを学習

MACアドレステーブルはトラブルシューティングでも重要

CHECK 01 MACアドレスを学習している?

通信できない端末のMACアドレスが スイッチに学習されているか確認します。

CHECK 02 正しいポートで学習している?

想定と異なるポートへMACアドレスが 学習されていないか確認できます。

CHECK 03 正しいVLANに存在する?

VLAN番号とMACアドレス、 ポートの対応関係を確認できます。

確認問題:MACアドレステーブルの仕組みを理解できたか確認しよう

QUESTION 01

L2スイッチがMACアドレスを学習するときに確認する情報はどれですか?

正解:A

スイッチは受信したEthernetフレームのSource MACを確認し、 そのフレームが入ってきたポートと対応付けて学習します。

QUESTION 02

宛先MACアドレスがMACアドレステーブルに存在しない場合の基本動作はどれですか?

正解:C

未知のユニキャストの場合、 同一VLAN内の受信ポート以外へフラッディングします。

QUESTION 03

動的に学習したMACアドレス情報が一定時間使われなかった場合、 通常どのような処理が行われますか?

正解:B

動的なMACアドレス情報は、 一定期間利用されなければエージングによって削除されます。

YOUR SCORE 0 / 3

3問に挑戦してみましょう。

まとめ

01

MACアドレステーブルは MACアドレスとポートの対応関係を保持する

02

スイッチは 受信フレームのSource MACと受信ポート を使ってMACアドレスを学習する

03

Destination MACをMACアドレステーブルから検索し、 既知なら該当ポートへForwardする

04

宛先が未知なら 同一VLAN内でFloodingする

05

動的エントリは Agingによって古い情報が削除される

NEXT LESSON

次は「VLANとは?LANを論理的に分割する仕組み」を学びましょう

ここまでの例では、 同じL2スイッチに接続された端末を 1つのLANとして考えてきました。

しかし実際の企業ネットワークでは、 営業部・開発部・サーバーなどを 同じ物理スイッチ上でも別々のLANとして分離 したい場合があります。

次の記事では、 1台のL2スイッチを論理的に複数のLANへ分割する VLAN(Virtual LAN) の仕組みを学習します。

VLANとは?LANを論理的に分割する仕組み
NETWORK INTERMEDIATE

ネットワーク中級講座の一覧へ戻る

学習順を確認したい場合は、 ネットワーク中級講座の一覧ページへ戻れます。

← ネットワーク中級講座へ戻る
目次