STPループが発生している際に問題個所の特定を行うためには、まず、意図せずフォワーディング状態に遷移しているブロッキングポートを特定します。
STPが動作しているポートのステータスは、以下の様なコマンドで確認する事が出来ます。
show spanning-tree vlan <vlan_id>
show spanning-tree vlan <vlan_id> detail
show spanning-tree interface <IF_NAME>
show spanning-tree interface <IF_NAME> detail
以下は、'show spanning-tree vlan <vlan_id>'の出力例です。
このスイッチでは、Gi1/0/2がVLAN20のルートポートであり、Gi1/0/3がVLAN20のブロッキングポートである事が確認出来ます。
WS-C3750E-48PD#show spanning-tree vlan 20
VLAN0020
Spanning tree enabled protocol ieee
Root ID Priority 32788
Address 0018.ba87.c880
Cost 4
Port 2 (GigabitEthernet1/0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32788 (priority 32768 sys-id-ext 20)
Address 0018.ba87.cb00
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300 sec
Interface Role Sts Cost Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi1/0/2 Root FWD 4 128.2 P2p
Gi1/0/3 Altn BLK 4 128.3 P2p
また、該当VLANのルートブリッジが、意図されたスイッチであるかどうかという点に関しても、同時に確認していきます。
上記の例では、0018.ba87.c880というMAC Addressの機器が、VLAN20のルートブリッジになっています。
次回は、該当スイッチからルートブリッジまでの経路上で、BPDUが問題なく送受信されているかどうかといった点を確認していきます。
-------------------------------------------------------------
フォワーディング状態に遷移してしまったブロッキングポートを特定した後のステップとしては、該当スイッチからルートブリッジまでの経路上で、BPDUが問題なく送受信されているかどうかといった点を確認していきます。
BPDUの送受信に関しては、以下の様なコマンドで確認する事が出来ます。
show spanning-tree vlan <vlan_id> detail
show spanning-tree interface <IF_NAME> detail
以下は、'show spanning-tree interface <IF_NAME> detail'コマンドの出力例です。
数秒間隔で複数回実行し、'sent'や'received'が正常に増加するかどうかを確認します。
下記の例では、'received'が正常に増加しています。
この例では'sent'は増加していませんが、このポートはブロッキングポートなので、'sent'は通常は増加しません。
WS-C3750E-48PD#show spanning-tree interface gig 1/0/3 detail
Port 3 (GigabitEthernet1/0/3) of VLAN0020 is alternate blocking
Port path cost 4, Port priority 128, Port Identifier 128.3.
Designated root has priority 32788, address 0018.ba87.c880
Designated bridge has priority 32788, address 0018.ba87.c880
Designated port id is 128.165, designated path cost 0
Timers: message age 2, forward delay 0, hold 0
Number of transitions to forwarding state: 0
Link type is point-to-point by default
BPDU: sent 1, received 162
WS-C3750E-48PD#
WS-C3750E-48PD#
WS-C3750E-48PD#show spanning-tree interface gig 1/0/3 detail
Port 3 (GigabitEthernet1/0/3) of VLAN0020 is alternate blocking
Port path cost 4, Port priority 128, Port Identifier 128.3.
Designated root has priority 32788, address 0018.ba87.c880
Designated bridge has priority 32788, address 0018.ba87.c880
Designated port id is 128.165, designated path cost 0
Timers: message age 2, forward delay 0, hold 0
Number of transitions to forwarding state: 0
Link type is point-to-point by default
BPDU: sent 1, received 165
WS-C3750E-48PD#
WS-C3750E-48PD#
WS-C3750E-48PD#show spanning-tree interface gig 1/0/3 detail
Port 3 (GigabitEthernet1/0/3) of VLAN0020 is alternate blocking
Port path cost 4, Port priority 128, Port Identifier 128.3.
Designated root has priority 32788, address 0018.ba87.c880
Designated bridge has priority 32788, address 0018.ba87.c880
Designated port id is 128.165, designated path cost 0
Timers: message age 2, forward delay 0, hold 0
Number of transitions to forwarding state: 0
Link type is point-to-point by default
BPDU: sent 1, received 168
BPDUの送受信に問題が発生しているリンクを特定した後は、BPDUが送受信されているインターフェースでエラー等がカウントされていないか、CPU等のリソース使用状況に問題はないか、機器内部のトラフィックパスに問題がないか等、状況に応じて更に細かく切り分けて行く事になります。
障害時にSTPループを防止するという観点では、UDLDやLoop guardが有効ですので、こういった機能の使用に関しても、ご検討頂くと良いと思います。