ルータはパケットを転送するかどうかの判断をレイヤ3アドレスのIPアドレスを見て行いますが、スイッチはこの判断をレイヤ2アドレスのMACアドレスを見て行います。
PC-A のMACアドレスが 1111.1111.1111 で、PC-B のMACアドレスが 2222.2222.2222 とします。
SW-A は、PC-A から受信したフレームの送信元MACアドレスを受信したポート情報とセットで、自身のMACアドレステーブルに登録します。
同様に、PC-B からフレームを受信した時も受信したフレームの送信元MACアドレスを受信したポート情報とセットで、自身のMACアドレステーブルに登録します。
このようにスイッチはフレームを受信するたびに、自身のMACアドレステーブルにフレームの送信元MACアドレスを登録していきます。
想定するネットワーク構成図
ラボ・シナリオで使用するネットワーク構成図
・物理 PC の VirtualBox 上に、PC-A、PC-B の2つの仮想 PC を構成する。
・PC-A は物理 PC に標準搭載している LAN ポートを使用するように VirtualBox を設定する。
・物理 PC に USB-LAN 変換ケーブルを1つ接続し、PC-B がそれを使用するように VirtualBox を設定する。
・物理 PC の全ての LAN ポートのプロパティで、
[VirtualBox Bridged Networking Driver] 以外の全てのチェックを外す。
- PC-A と PC-B それぞれに、ネットワーク構成図に示す通りIPアドレスとサブネットマスクを設定しなさい。
< PC-A >
C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.2 255.255.255.0
C:\> ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.2
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
C:\>
< PC-B >
C:\> netsh interface ipv4 set address "イーサネット" static 192.168.1.3 255.255.255.0
C:\> ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.3
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
C:\>
PC-A、PC-B が DHCP クライアントのままだと DHCP パケットを流すため、先に固定IPを設定します。
- SW-A で、clear mac address-table dynamic コマンドを実行後、MACアドレステーブルを表示しなさい。
< SW-A >
Switch# clear mac address-table dynamic
Switch# sh mac address-table ← スイッチの機種によっては show mac-address-table コマンドの場合あり。
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU ← CDP、DTP、VTP、PAgP、UDLD で使用するマルチキャストアドレス
All 0100.0ccc.cccd STATIC CPU ← PVST+、Rapid PVST+ の BPDU が使用するマルチキャストアドレス
All 0180.c200.0000 STATIC CPU ← STP (IEEE 802.1D) の BPDU が使用するマルチキャストアドレス
All 0180.c200.0001 STATIC CPU
All 0180.c200.0002 STATIC CPU
All 0180.c200.0003 STATIC CPU
All 0180.c200.0004 STATIC CPU
All 0180.c200.0005 STATIC CPU
All 0180.c200.0006 STATIC CPU
All 0180.c200.0007 STATIC CPU
All 0180.c200.0008 STATIC CPU
All 0180.c200.0009 STATIC CPU
All 0180.c200.000a STATIC CPU
All 0180.c200.000b STATIC CPU
All 0180.c200.000c STATIC CPU
All 0180.c200.000d STATIC CPU
All 0180.c200.000e STATIC CPU
All 0180.c200.000f STATIC CPU
All 0180.c200.0010 STATIC CPU
All ffff.ffff.ffff STATIC CPU
Total Mac Addresses for this criterion: 20
Switch#
これが初期状態の Catalyst 2960 スイッチのMACアドレステーブルです。
Ports の CPU は SW-A 自体を意味し、Catalyst スイッチは、これらのMACアドレス宛てのフレームを受け取ったら、そのフレームは転送せずに SW-A 自体で受け取ります。
- SW-A に、ネットワーク構成図に示す通りIPアドレスとサブネットマスクを設定しなさい。
< SW-A >
Switch# conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)# int vlan 1
Switch(config-if)# ip add 192.168.1.1 255.255.255.0
Switch(config-if)# no shut
Switch(config-if)# ^Z
Switch#
スイッチにIPアドレスを設定しなさいとの指示があった場合、管理 VLAN に設定します。
- PC-A から SW-A へ ping を実行しなさい。
< PC-A >
C:\> ping 192.168.1.1
192.168.1.1 に ping を送信しています 32 バイトのデータ:
192.168.1.1 からの応答: バイト数 =32 時間 =4ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =2ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =2ms TTL=255
192.168.1.1 からの応答: バイト数 =32 時間 =2ms TTL=255
192.168.1.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 2ms、最大 = 4ms、平均 = 2ms
C:\>
ping が成功していますので、PC-A からのフレームを SW-A は受信しています。
- SW-A で、MACアドレステーブルを表示させなさい。
< SW-A >
Switch# sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0180.c200.0000 STATIC CPU
All 0180.c200.0001 STATIC CPU
All 0180.c200.0002 STATIC CPU
All 0180.c200.0003 STATIC CPU
All 0180.c200.0004 STATIC CPU
All 0180.c200.0005 STATIC CPU
All 0180.c200.0006 STATIC CPU
All 0180.c200.0007 STATIC CPU
All 0180.c200.0008 STATIC CPU
All 0180.c200.0009 STATIC CPU
All 0180.c200.000a STATIC CPU
All 0180.c200.000b STATIC CPU
All 0180.c200.000c STATIC CPU
All 0180.c200.000d STATIC CPU
All 0180.c200.000e STATIC CPU
All 0180.c200.000f STATIC CPU
All 0180.c200.0010 STATIC CPU
All ffff.ffff.ffff STATIC CPU
1 009f.310a.0000 DYNAMIC Fa0/2
Total Mac Addresses for this criterion: 21
Switch#
MACアドレス 009f.310a.0000 のエントリが追加されています。
- PC-A のMACアドレスを調べなさい。
< PC-A >
C:\> ipconfig /all
Windows IP 構成
ホスト名. . . . . . . . . . . . . . .: PC-A
プライマリ DNS サフィックス . . . . .:
ノード タイプ . . . . . . . . . . . .: ハイブリッド
IP ルーティング有効 . . . . . . . . .: いいえ
WINS プロキシ有効 . . . . . . . . . .: いいえ
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
説明. . . . . . . . . . . . . . . . .: Intel(R) PRO/1000 MT Desktop Adapter
物理アドレス. . . . . . . . . . . . .: 00-9F-31-0A-00-00
DHCP 有効 . . . . . . . . . . . . . .: いいえ
自動構成有効. . . . . . . . . . . . .: はい
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.2(優先)
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
NetBIOS over TCP/IP . . . . . . . . .: 無効
C:\>
MACアドレス 009f.310a.0000 は、PC-A のMACアドレスでした。
PC-A から SW-A に ping を実行ことにより、SW-A は PC-A から icmp エコー要求パケットを受け取ります。SW-A はそのパケットを受け取った時に、そのパケットの中の送信元MACアドレスを自身のMACアドレステーブルに登録します。
※ 実際にはこの前に arp があり、その時に SW-A のMACアドレステーブルに PC-A のMACアドレスが登録されますが、説明の簡便上ここでは省きます。また、PC-A の設定によっては、PC-A を SW-A に接続した時点で、PC-A のMACアドレスが SW-A のMACアドレステーブルに登録される場合があります。
- PC-B から PC-A へ ping を実行しなさい。
< PC-B >
C:\> ping 192.168.1.2
192.168.1.2 に ping を送信しています 32 バイトのデータ:
192.168.1.2 からの応答: バイト数 =32 時間 =2ms TTL=128
192.168.1.2 からの応答: バイト数 =32 時間 =2ms TTL=128
192.168.1.2 からの応答: バイト数 =32 時間 =2ms TTL=128
192.168.1.2 からの応答: バイト数 =32 時間 =1ms TTL=128
192.168.1.2 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 1ms、最大 = 2ms、平均 = 1ms
C:\>
ping が成功していますので、PC-B からのフレームを SW-A を経由して PC-A は受信してしまいます。
- SW-A で、MACアドレステーブルを表示させなさい。
< SW-A >
Switch# sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0180.c200.0000 STATIC CPU
All 0180.c200.0001 STATIC CPU
All 0180.c200.0002 STATIC CPU
All 0180.c200.0003 STATIC CPU
All 0180.c200.0004 STATIC CPU
All 0180.c200.0005 STATIC CPU
All 0180.c200.0006 STATIC CPU
All 0180.c200.0007 STATIC CPU
All 0180.c200.0008 STATIC CPU
All 0180.c200.0009 STATIC CPU
All 0180.c200.000a STATIC CPU
All 0180.c200.000b STATIC CPU
All 0180.c200.000c STATIC CPU
All 0180.c200.000d STATIC CPU
All 0180.c200.000e STATIC CPU
All 0180.c200.000f STATIC CPU
All 0180.c200.0010 STATIC CPU
All ffff.ffff.ffff STATIC CPU
1 009f.310a.0000 DYNAMIC Fa0/2
1 009f.310b.0000 DYNAMIC Fa0/3
Total Mac Addresses for this criterion: 22
Switch#
MACアドレス 009f.310b.0000 のエントリが追加されています。
- PC-B のMACアドレスを調べなさい。
< PC-B >
C:\> ipconfig /all
Windows IP 構成
ホスト名. . . . . . . . . . . . . . .: PC-B
プライマリ DNS サフィックス . . . . .:
ノード タイプ . . . . . . . . . . . .: ハイブリッド
IP ルーティング有効 . . . . . . . . .: いいえ
WINS プロキシ有効 . . . . . . . . . .: いいえ
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
説明. . . . . . . . . . . . . . . . .: Intel(R) PRO/1000 MT Desktop Adapter
物理アドレス. . . . . . . . . . . . .: 00-9F-31-0B-00-00
DHCP 有効 . . . . . . . . . . . . . .: いいえ
自動構成有効. . . . . . . . . . . . .: はい
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.2(優先)
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
NetBIOS over TCP/IP . . . . . . . . .: 無効
C:\>
MACアドレス 009f.310b.0000 は、PC-B のMACアドレスでした。
PC-B から PC-A に ping を実行することにより、SW-A は PC-B から icmp エコー要求パケットを受け取ります。SW-A はそのパケットを受け取った時に、そのパケットの中の送信元MACアドレスを自身のMACアドレステーブルに登録します。
※ 実際にはこの前に arp があり、その時に SW-A のMACアドレステーブルに PC-B のMACアドレスが登録されますが、説明の簡便上ここでは省きます。また、PC-B の設定によっては、PC-B を SW-A に接続した時点で、PC-B のMACアドレスが SW-A のMACアドレステーブルに登録される場合があります。
自身のMACアドレステーブルに送信元MACアドレスを登録した SW-A は、その後、受け取ったパケットの宛先MACアドレス (今回は PC-A 宛てなので、宛先MACアドレスは 009f.310a.0000 です) を見て、自身のMACアドレステーブルにその宛先MACアドレスが登録されているかチェックします。そして、登録されていれば、そのMACアドレスとマッピングして登録されているポートから受け取ったパケットを送出します。
※ ここでは説明の簡便上、パケットという表現をしていますが、レイヤ2ですので、本来はフレームという方が適切です。
- SW-A で、clear mac address-table dynamic コマンドを実行後、MACアドレステーブルを表示しなさい。
< SW-A >
Switch# clear mac address-table dynamic
Switch# sh mac address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0180.c200.0000 STATIC CPU
All 0180.c200.0001 STATIC CPU
All 0180.c200.0002 STATIC CPU
All 0180.c200.0003 STATIC CPU
All 0180.c200.0004 STATIC CPU
All 0180.c200.0005 STATIC CPU
All 0180.c200.0006 STATIC CPU
All 0180.c200.0007 STATIC CPU
All 0180.c200.0008 STATIC CPU
All 0180.c200.0009 STATIC CPU
All 0180.c200.000a STATIC CPU
All 0180.c200.000b STATIC CPU
All 0180.c200.000c STATIC CPU
All 0180.c200.000d STATIC CPU
All 0180.c200.000e STATIC CPU
All 0180.c200.000f STATIC CPU
All 0180.c200.0010 STATIC CPU
All ffff.ffff.ffff STATIC CPU
Total Mac Addresses for this criterion: 20
Switch#
MACアドレステーブルのエージングタイムはデフォルトで5分 (300秒) です。このため、ダイナミックに学習したエントリはその時間経てば自動的に消えますが、clear mac address-table dynamic コマンドを使うとすぐに消去することができます。