ルータはパケットを転送するかどうかの判断をレイヤ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アドレスを登録していきます。
- SW-A で、MACアドレステーブルを表示させなさい。
< SW-A >
Switch# sh mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0024.900a.0000 STATIC CPU
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0100.0cdd.dddd STATIC CPU
Total Mac Addresses for this criterion: 4
Switch#
これが SW-A の現在のMACアドレステーブルです。
Ports の CPU は SW-A 自体を意味し、それぞれのMACアドレスは次の通りです。
0024.900a.0000 | ← SW-A のMACアドレス (int VLANで使用) |
0100.0ccc.cccc | ← CDP、VTP、DTP で使用するマルチキャストアドレス |
0100.0ccc.cccd | ← PVST+ (STP の拡張版、Cisco 独自) で使用するマルチキャストアドレス |
0100.0cdd.dddd | ← CGMP で使用するマルチキャストアドレス |
Catalyst スイッチは、これらのMACアドレス宛てのフレームを受け取ったら、そのフレームは転送せずに SW-A 自体で受け取ります。この他にも STP で使用するマルチキャストアドレス 0180.c200.0000 もあります。
- SW-A を、以下の情報を基に設定しなさい。
< 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#
- PC-A を、以下の情報を基に設定しなさい。
< 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-A から SW-A へ ping を実行しなさい。
< PC-A >
C:\> ping 192.168.1.1
Pinging 192.168.1.1 with 32 bytes of data:
Reply from 192.168.1.1: bytes=32 time<1ms TTL=255
Reply from 192.168.1.1: bytes=32 time<1ms TTL=255
Reply from 192.168.1.1: bytes=32 time=1ms TTL=255
Reply from 192.168.1.1: bytes=32 time=1ms TTL=255
Ping statistics for 192.168.1.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
icmp エコー応答が返ってくるので、PC-A からのフレームを SW-A が受信してしまいます。
- SW-A で、MACアドレステーブルを表示させなさい。
< SW-A >
Switch# sh mac-address-table
Mac Address Table
-------------------------------------------
Vlan Mac Address Type Ports
---- ----------- -------- -----
All 0024.900a.0000 STATIC CPU
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0100.0cdd.dddd STATIC CPU
1 009f.310a.0000 DYNAMIC Fa0/2
Total Mac Addresses for this criterion: 5
Switch#
MACアドレス 009f.310a.0000 のエントリが追加されています。
- PC-A のMACアドレスを調べなさい。
< PC-A >
C:\> ipconfig /all
Windows IP 構成
ホスト名. . . . . . . . . . . . . . .: PC-A
プライマリ DNS サフィックス . . . . .:
ノード タイプ . . . . . . . . . . . .: ハイブリッド
IP ルーティング有効 . . . . . . . . .: いいえ
WINS プロキシ有効 . . . . . . . . . .: いいえ
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
説明. . . . . . . . . . . . . . . . .: FastEthernet Adapter
物理アドレス. . . . . . . . . . . . .: 00-9F-31-0A-00-00
DHCP 有効 . . . . . . . . . . . . . .: いいえ
自動構成有効. . . . . . . . . . . . .: はい
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.2
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
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-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-B から PC-A へ ping を実行しなさい。
< PC-B >
C:\> ping 192.168.1.2
Pinging 192.168.1.2 with 32 bytes of data:
Reply from 192.168.1.2: bytes=32 time<1ms TTL=125
Reply from 192.168.1.2: bytes=32 time<1ms TTL=125
Reply from 192.168.1.2: bytes=32 time=1ms TTL=125
Reply from 192.168.1.2: bytes=32 time=1ms TTL=125
Ping statistics for 192.168.1.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
icmp エコー応答が返ってくるので、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 0024.900a.0000 STATIC CPU
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0100.0cdd.dddd STATIC CPU
1 009f.310a.0000 DYNAMIC Fa0/2
1 009f.310b.0000 DYNAMIC Fa0/3
Total Mac Addresses for this criterion: 6
Switch#
MACアドレス 009f.310b.0000 のエントリが追加されています。
- PC-B のMACアドレスを調べなさい。
< PC-B >
C:\> ipconfig /all
Windows IP 構成
ホスト名. . . . . . . . . . . . . . .: PC-B
プライマリ DNS サフィックス . . . . .:
ノード タイプ . . . . . . . . . . . .: ハイブリッド
IP ルーティング有効 . . . . . . . . .: いいえ
WINS プロキシ有効 . . . . . . . . . .: いいえ
イーサネット アダプター イーサネット:
接続固有の DNS サフィックス . . . . .:
説明. . . . . . . . . . . . . . . . .: FastEthernet Adapter
物理アドレス. . . . . . . . . . . . .: 00-9F-31-0B-00-00
DHCP 有効 . . . . . . . . . . . . . .: いいえ
自動構成有効. . . . . . . . . . . . .: はい
IPv4 アドレス . . . . . . . . . . . .: 192.168.1.3
サブネット マスク . . . . . . . . . .: 255.255.255.0
デフォルト ゲートウェイ . . . . . . .:
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 0024.900a.0000 STATIC CPU
All 0100.0ccc.cccc STATIC CPU
All 0100.0ccc.cccd STATIC CPU
All 0100.0cdd.dddd STATIC CPU
Total Mac Addresses for this criterion: 4
Switch#
MACアドレステーブルのエージングタイムはデフォルトで5分 (300秒) です。このため、ダイナミックに学習したエントリはその時間経てば自動的に消えますが、clear mac-address-table dynamic コマンドを使うとすぐに消去することができます。