障害発生時のSTPの動作について、CMLで環境を構築し説明します。
ネットワーク構成
CMLで下記の環境を構築します。全スイッチでVLAN1のSTP設定を有効化します。(デフォルトで有効になっています。)
初期構築時のSTPの収束に関しては、下記を参照してください。
hostname L2SW-A
spanning-tree vlan 1
hostname L2SW-B
spanning-tree vlan 1
hostname L2SW-C
spanning-tree vlan 1
hostname L2SW-D
spanning-tree vlan 1
hostname Server1
ifconfig eth0 192.168.100.1 netmask 255.255.255.0 up
route add -net 0.0.0.0/0 dev eth0
hostname PC1
ifconfig eth0 192.168.100.100 netmask 255.255.255.0 up
route add -net 0.0.0.0/0 dev eth0
正常時の通信経路
PC1とServer1間の正常時の通信経路は下記の通りです。
障害時の動作
L2SW-AとL2SW-Bの間のリンク障害を想定し、障害時のSTPの動作を確認します。
PC1からServer1へ連続Pingを実施し、通信断時間を測定します。
ping 192.168.1.1
PC1:~$ ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1): 56 data bytes
64 bytes from 192.168.100.1: seq=0 ttl=42 time=21.733 ms
64 bytes from 192.168.100.1: seq=1 ttl=42 time=33.141 ms
64 bytes from 192.168.100.1: seq=2 ttl=42 time=36.440 ms
障害発生
L2SW-AとL2SW-Bの双方で下記コマンドを実行します。※CMLの場合、対向機器のインターフェースをシャットダウンしても、自機器のインターフェースのダウンを検知しないため、双方で”shutdown”コマンドを実施します。
interface GigabitEthernet0/0
shutdown
L2SW-A#
07:00:18.311: %LINK-5-CHANGED: Interface GigabitEthernet0/0, changed state to administratively down
ポート役割の再選出
障害発生から20秒の最大エージングタイマーが経過した後、L2SW-BとL2SW-Dのポートの役割が再選出されます。
Gi0/1から受信したBPDUから、L2SW-Aがルートスイッチであることを認識し、ルートポートに選出されます。
07:00:38.578: STP: VLAN0001 new root is 32769, 5254.000f.0d54 on port Gi0/1, cost 12
Gi0/0がルートポートに選出され、リスニング状態に遷移します。※STPのトポロジーに変更が生じ、ブロッキング状態のインターフェースでBPDUを受信できなくなると、最大エージングタイマー経過後に、リスニング状態になります。
07:00:37.445: STP: VLAN0001 new root port Gi0/0, cost 8
07:00:37.446: STP: VLAN0001 Gi0/0 -> listening
ポート状態の遷移
ラーニング状態に遷移
15秒の転送遅延タイマー経過後にL2SW-DのGI0/0がラーニング状態に遷移します。
07:00:52.447: STP: VLAN0001 Gi0/0 -> learning
フォーワーディング状態に遷移
更に15秒の転送遅延タイマー経過後にL2SW-DのGI0/0がフォワーディング状態に遷移し、通信が復旧します。
07:01:07.453: STP: VLAN0001 Gi0/0 -> forwarding
通信断時間の確認
PC1で実施していた連続Pingを確認すると、約50秒で通信が復旧していることが分かります。(seq=6〜57が通信NGでPing応答が無い時間です。)
PC1:~$ ping 192.168.100.1
PING 192.168.100.1 (192.168.100.1): 56 data bytes
64 bytes from 192.168.100.1: seq=0 ttl=42 time=21.733 ms
64 bytes from 192.168.100.1: seq=1 ttl=42 time=33.141 ms
64 bytes from 192.168.100.1: seq=2 ttl=42 time=36.440 ms
64 bytes from 192.168.100.1: seq=3 ttl=42 time=32.478 ms
64 bytes from 192.168.100.1: seq=4 ttl=42 time=19.146 ms
64 bytes from 192.168.100.1: seq=5 ttl=42 time=20.507 ms
64 bytes from 192.168.100.1: seq=58 ttl=42 time=1075.887 ms
64 bytes from 192.168.100.1: seq=59 ttl=42 time=82.602 ms
64 bytes from 192.168.100.1: seq=60 ttl=42 time=29.826 ms
64 bytes from 192.168.100.1: seq=61 ttl=42 time=21.476 ms
64 bytes from 192.168.100.1: seq=62 ttl=42 time=25.002 ms
64 bytes from 192.168.100.1: seq=63 ttl=42 time=31.335 ms
^C
--- 192.168.100.1 ping statistics ---
64 packets transmitted, 12 packets received, 81% packet loss
round-trip min/avg/max = 19.146/119.131/1075.887 ms
STPの収束にかかる時間
ブロック状態のポートが変更になるような障害の場合、STPの収束時間は下記の通りとなります。
以上で、STP(スパニングツリープロトコル)の障害時動作の説明は完了です!