STP(スパニングツリープロトコル)の状態遷移

STP(スパニングツリープロトコル)の状態遷移

ネットワークのトラブルとして多く発生するL2ループを防ぐための仕組みである『STP(スパニングツリープロトコル)』について、CMLで環境を構築し説明します。

『RSTP(ラピッドスパニングツリープロトコル)』の説明は下記を参照してください。

L2ループの説明は下記を参照してください。

目次

ネットワーク構成

CMLで下記の環境を構築します。全スイッチでVLAN1のSTP設定を有効化します。(デフォルトで有効になっています。)

ネットワーク構成
L2SW-A
hostname L2SW-A

spanning-tree vlan 1
L2SW-B
hostname L2SW-B

spanning-tree vlan 1
L2SW-C
hostname L2SW-C

spanning-tree vlan 1
L2SW-D
hostname L2SW-D

spanning-tree vlan 1
Server1
hostname Server1
ifconfig eth0 192.168.100.1 netmask 255.255.255.0 up
route add -net 0.0.0.0/0 dev eth0
PC1
hostname PC1
ifconfig eth0 192.168.100.100 netmask 255.255.255.0 up
route add -net 0.0.0.0/0 dev eth0

各スイッチ・ポートの役割決定

ルートブリッジの選出

STPが有効になっているポートがリンクアップすると、各スイッチはBPDU(Bridge Protocol Data Unit)を送信します。受信したBPDUは、受信ポート以外に転送されます。

BPDUのフレームフォーマットについては、下記を参照してください。

BPDUの送出

BPDUには、ブリッジID(ブリッジプライオリティとMACアドレス)が含まれています。

BPDUのパケットキャプチャ
L2SW-A → L2SW-BへのBPDU

ブリッジIDが一番小さいスイッチが、ルートブリッジとして選出されます。この構成の場合、ブリッジプライオリティは全スイッチがデフォルト(32768)のため、MACアドレスが一番小さい、L2SW-Aがルートブリッジとなります。

ルートブリッジの決定

ルートポート(RP)の選出

次に、ルートポート(RP)と呼ばれるポートを選出します。ルートポートは各スイッチでルートブリッジに最も近いポートです。ルートブリッジ以外の各スイッチごとに1ポートが選出されます。

各スイッチからルートブリッジまでの距離に関しては、下記の順番で比較します。

1.経由するリンクの帯域に応じたコストの合計(ルートパスコスト)を比較

リンクの帯域コスト
10Gbps2
1Gbps4
100Mbps19
10Mbps100

2.ルートパスコストが同じ場合は、ブリッジIDを比較

L2SW-Dが受け取ったBPDUの比較

L2SW-Bから受け取ったBPDU
L2SW-Bから受け取ったBPDU
L2SW-Cから受け取ったBPDU
L2SW-Cから受け取ったBPDU

この構成の場合、以下の通りルートポートが選出されます。

ルートポートの決定

指定ポート(DP)の選出

次に、指定ポート(DP – Designated Port)と呼ばれるポートを選出します。指定ポートは各リンクでルートブリッジに最も近いポートです。各リンクごとに1ポートが選出されます。

1.ルートブリッジは全てのポートが指定ポート
2.最も小さいルートパスコストのRPをもつスイッチ側のポート

この構成の場合、以下の通り指定ポートが選出されます。

指定ポートの決定

非指定ポート(NDP)の選出

ルートポート/指定ポートに選出されなかったポートが、非指定ポート(NDP – NonDesignated Port)となります。非指定ポートは、BPDUは受信しますが、通信は行わないブロッキング状態のポートとなります。

この構成の場合、以下の通り非指定ポートが選出されます。L2SW-DのGi0/0がブロッキング状態になることにより、L2ループが解消されます。

非指定ポートの決定

各ポートの状態

各スイッチ・ポートの役割決定と同時に、ポートの状態遷移が行われます。STPでは下記5つのポート状態があります。

スクロールできます
ポート状態説明
ディセーブルポートがシャットダウンされ、STPに参加しない状態。
ブロッキング(BLK)BPDUの受信のみを行う状態。データフレームは転送されない。
リスニング(LIS)BPDUの送受信を行い、スイッチ・ポートの役割を決定している状態。非指定ポートはブロッキングへ移行する。データフレームは転送されない。
ラーニング(LRN)BPDUの送受信を行い、MACアドレスの学習を始める状態。データフレームは転送されない。
フォワーディング(FWD)ルートポート・指定ポートとなり、データフレームの転送が可能な状態。

リスニング(LIS)orブロッキング(BLK)へ

ポートの役割が決定後、ルートポートと指定ポートはリスニング状態へ、非指定ポートはブロッキング状態に遷移します。※正しくは、非指定ポートに関してはリスニング状態を経由して、すぐにブロッキング状態に遷移します。

ラーニング(LRN)へ

リスニング状態のポートは15秒の転送遅延タイマーが経過した後、ラーニング状態に遷移します。

フォワーディング(FWD)へ

ラーニング状態のポートは更に15秒の転送遅延タイマーが経過した後、フォワーディング状態に遷移します。

デバッグコマンドによる状態遷移の確認

下記のコマンドを実行することで、ポート状態遷移のログが出力されます。

debug spanning-tree events
L2SW-A
07:00:00.239: STP: VLAN0001 Gi0/0 -> listening
07:00:00.240: STP: VLAN0001 Gi0/1 -> listening
07:00:15.241: STP: VLAN0001 Gi0/0 -> learning
07:00:15.242: STP: VLAN0001 Gi0/1 -> learning
07:00:30.247: STP: VLAN0001 Gi0/0 -> forwarding
07:00:30.248: STP: VLAN0001 Gi0/1 -> forwarding
L2SW-B
07:00:00.327: STP: VLAN0001 Gi0/0 -> listening
07:00:00.331: STP: VLAN0001 Gi0/1 -> listening
07:00:15.327: STP: VLAN0001 Gi0/0 -> learning
07:00:15.330: STP: VLAN0001 Gi0/1 -> learning
07:00:30.336: STP: VLAN0001 Gi0/0 -> forwarding
07:00:30.337: STP: VLAN0001 Gi0/1 -> forwarding
L2SW-C
07:00:00.489: STP: VLAN0001 Gi0/0 -> listening
07:00:00.491: STP: VLAN0001 Gi0/1 -> listening
07:00:15.489: STP: VLAN0001 Gi0/0 -> learning
07:00:15.492: STP: VLAN0001 Gi0/1 -> learning
07:00:30.493: STP: VLAN0001 Gi0/0 -> forwarding
07:00:30.495: STP: VLAN0001 Gi0/1 -> forwarding
L2SW-

非指定ポートとなったGi0/0に関しては、リスニング状態から、すぐにブロッキング状態に遷移していることが分かります。

07:00:00.485: STP: VLAN0001 Gi0/0 -> listening
07:00:00.491: STP: VLAN0001 Gi0/1 -> listening
07:00:01.995: STP: VLAN0001 Gi0/0 -> blocking
07:00:15.492: STP: VLAN0001 Gi0/1 -> learning
07:00:30.494: STP: VLAN0001 Gi0/1 -> forwarding

各スイッチのSTPステータス

各スイッチで下記のコマンドを実行し、最終的なSTPのステータスを確認します。上記のとおり、ポートの役割が決定していることが分かります。

show spanning-tree 
L2SW-A
L2SW-A#show spanning-tree 

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.000f.0d54
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.000f.0d54
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  15  sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0               Desg FWD 4         128.1    P2p 
Gi0/1               Desg FWD 4         128.2    P2p 
Gi0/2               Desg FWD 4         128.3    P2p 
L2SW-B
L2SW-C
L2SW-C#show spanning-tree

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.000f.0d54
             Cost        4
             Port        2 (GigabitEthernet0/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.001b.ef10
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  15  sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0               Desg FWD 4         128.1    P2p 
Gi0/1               Root FWD 4         128.2    P2p 
L2SW-D
L2SW-D#show spanning-tree

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32769
             Address     5254.000f.0d54
             Cost        8
             Port        2 (GigabitEthernet0/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     5254.001c.ff7a
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  15  sec

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Gi0/0               Altn BLK 4         128.1    P2p 
Gi0/1               Root FWD 4         128.2    P2p 
Gi0/2               Desg FWD 4         128.3    P2p 

以上で、STP(スパニングツリープロトコル)の状態遷移の説明は完了です!

  • URLをコピーしました!
  • URLをコピーしました!
目次