2014-01-24 10:01 AM
STPの概要
STPとは
STP(Spanning Tree Protocol)はブリッジおよびスイッチで動作するレイヤ2のプロトコルです。
IEEEによって標準化されており、規格はIEEE 802.1Dです。
このプロトコルはCatalystスイッチではデフォルトで有効になっています。
STPの働きは冗長構成で作られているレイヤ2ネットワークで、ブロードキャストストーム等のループを防ぎます。
STPは冗長経路によるループを見つけ、通常(障害の発生していない時)はループになる冗長経路のポートをブロックしてフレームのやりとりを停止させ、ループのないネットワークを作ります。
障害が発生し、使用している通常経路が使えなくなった場合に、ブロックして使用していない冗長経路のポートをフレームが転送できるモードに切り替え通信に影響が出ないようにします。
BPDU
スイッチはBPDU(Bridge Protocol Data Unit)というフレームにSTPの情報を入れて交換します。
BPDU以下のような役割を持っています。
・ルートブリッジの選定
・ループ位置の検出
・ネットワークへの変更通知
・スパニングツリーの状態監視
これらの情報をBPDU用のマルチキャストアドレス(01:80:C2:00:00:00)を宛先として送信します。
ルートブリッジの選定
BPDUを使いネットワークの中から1台のルートブリッジを選ぶ方法について説明します。
ルートブリッジはBID(Bridge ID)が最も小さいスイッチがなります。
プライオリティとは手動で設定する2バイトの値で、0~65535の値をとります。
デフォルトは32768+VLAN番号です。
手動でプライオリティを設定しない場合は、ネットワーク内で最も小さいMACアドレスを持っているスイッチがルートブリッジになります。
ルートブリッジは2秒に1回のタイミングでBPDUを送信します。
STPではネットワーク内の1台のスイッチからルートブリッジを決め、そのルートブリッジを頂点としたループのないツリー構造(スパニングツリー)を作り、ループを排除します。
STPの計算
次にスパニングツリーの計算方法について説明します。
各スイッチはルートブリッジとの距離をリンクの速度から求められる「コスト」という値で計算します。
ルートブリッジまでのリンクのコストの合計が、そのスイッチとルートブリッジの距離になります。
このコストが小さいほどルートブリッジとの距離が近いといえます。
コストは以下の表のようになっています。
ルートブリッジからの距離を計算し、それぞれのポートの役割を決定します。
各リンク内で最もルートブリッジに近いポート(リンクに1つできる)
ルートブリッジ以外のスイッチの中で最もルートブリッジに近いポート(スイッチに1つできる)
リンク内で代表ポートでも、ルートポートでもないポート
この3つのうち、代表ポートとルートポートはフレームの送受信を行うフォワーディング状態となります。
非代表ポートはフレームの送受信を行わないブロッキング状態となり、冗長ポートとして設定されます
ポートのフォワーディングとブロッキングが決定すると、ネットワークはループのない状態になり、正常なフレームのやりとりが可能になります。
障害発生時のボートの動作
次に障害発生時のボートの動作について説明します。
障害が発生した場合、障害を検出しブロッキングである非代表ポートをフォワーディングへと移行し、スパニングツリーを再構築します。
ルートブリッジは2秒に1回BPDUを送信し、そのBPDUを受け取った各スイッチはそれをフォワーディングのポートから送信します。
正常な状態ではルートブリッジから送信されたBPDUは末端のスイッチまで流れていくため、障害の検出はこのBPDUが届くか届かないかで判別します。
障害の検出からスパニングツリーの再構築の為の計算までの間には2つのタイマがあります。
ルートブリッジからのBPDUが届かなくなり、障害と判断するまでのタイマ
中間状態へ移行する際に使用するタイマ
さらにブロッキングからフォワーディングへ移行する間には2つの状態があります。
この4つの状態と、変更にかかる時間は次のようになります。
障害を検出し、非指定ポートが転送を開始する(フォワーディングになる)までの時間は、
20 + 15 + 15 で50秒かかります。
STPの設定と確認方法
STPの無効化/有効化
STPはデフォルトで有効化されているので最初にSTPの無効化と有効化のについて説明します。
Switch(config)#no spanning-tree vlan vlan-munber
Switch(config)#spanning-tree vlan vlan-munber
無効化を行った場合ループが発生する可能性があるため、コマンドの実行には注意が必要です。
確認方法
次にSTPの状態確認方法について説明します。
STPの状態確認は下記コマンドで行います。
Switch#show spanning-tree
Root IDがルートブリッジのIDで Bridge IDがスイッチ自身のIDになります。
BIDはRoot IDとBridge IDのpriorityで確認します。
ポートの役割はRoleで確認します。
指定ポート:Desg
ルートポート:Root
非指定ポート(代替ポート):Altn
ポートの状態はStsで確認します。
フォワーディング:FWD
ブロッキング:BLK
リスニング:LSN
ラーニング:LRN
出力例は以下となります。
A#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0001.979C.DE65
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 0001.979C.DE65
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p
B#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0001.979C.DE65
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 000A.414B.8C77
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/3 Desg FWD 19 128.3 P2p
C#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0001.979C.DE65
Cost 19
Port 1(FastEthernet0/1)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 00E0.8F60.ACCC
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Root FWD 19 128.1 P2p
Fa0/4 Desg FWD 19 128.4 P2p
D#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 32769
Address 0001.979C.DE65
Cost 38
Port 3(FastEthernet0/3)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32769 (priority 32768 sys-id-ext 1)
Address 0060.4720.3D23
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/3 Root FWD 19 128.3 P2p
Fa0/4 Altn BLK 19 128.4 P2p
Aがルートブリッジであり、DのFa0/4がブロッキングポートであることがわかります。
ルートブリッジの設定
次にルートブリッジを決めるためのプライオリティの変更の仕方を紹介します。
ルートプリッジを手動で設定するには大きく2つの方法があります。
マクロコマンドによるプライオリティの設定
まずルートブリッジのプライマリーとセカンダリーをマクロコマンドで指定する方法です。
1.ルートブリッジにしたいスイッチにおいて下記コマンドを実行します。
Switch(config)#spanning-tree vlan 1 root primary
2.プライマリーの代替ルートブリッジにしたいスイッチにおいて下記コマンドを実行します。
Switch(config)#spanning-tree vlan 1 root secondary
設定と確認方法の出力例は以下となります。
A(config)#spanning-tree vlan 1 root primary
A#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 24577
Address 0001.979C.DE65
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 24577 (priority 24576 sys-id-ext 1)
Address 0001.979C.DE65
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p
B(config)#spanning-tree vlan 1 root secondary
B#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 24577
Address 0001.979C.DE65
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 28673 (priority 28672 sys-id-ext 1)
Address 000A.414B.8C77
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/3 Desg FWD 19 128.3 P2p
AとBのプライオリティが自動調整されていることがわかります。
なお、プライマリーは常に最小値となるように自動調整されますが、セカンダリーのプライオリティは「28672」固定であるため、これより小さい値のスイッチが他に存在した場合は、意図したスイッチをセカンダリールートブリッジに出来ないことがあります。
設計通り確実にプライマリールートブリッジ、セカンダリールートブリッジを設定したい場合は、以下に説明するプライオリティの値を静的に設定する方法を推奨します。
静的なプライオリティの設定(推奨)
次にプライオリティの値を静的に設定する方法です。
ルートブリッジにしたいスイッチにおいて下記コマンドを実行します。
Switch(config)#spanning-tree vlan vlan-number priority priority
priorityに指定できる値は0~61440の間の4096の倍数の値(0,4096,8192,12288,16384,20480,24576,28672等)です。
プライオリティが最小のスイッチがルートブリッジになるので全スイッチで最小の値となるように設定します。
ルートブリッジのセカンダリーに設定したいスイッチには2番目に小さい値を設定します。
設定と確認方法の出力例は以下となります。
A(config)#spanning-tree vlan 1 priority 4096
A#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 4097
Address 0001.979C.DE65
This bridge is the root
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 4097 (priority 4096 sys-id-ext 1)
Address 0001.979C.DE65
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1 Desg FWD 19 128.1 P2p
Fa0/2 Desg FWD 19 128.2 P2p
B(config)#spanning-tree vlan 1 priority 8192
B#show spanning-tree
VLAN0001
Spanning tree enabled protocol ieee
Root ID Priority 4097
Address 0001.979C.DE65
Cost 19
Port 2(FastEthernet0/2)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 8193 (priority 8192 sys-id-ext 1)
Address 000A.414B.8C77
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 20
Interface Role Sts Cost Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/2 Root FWD 19 128.2 P2p
Fa0/3 Desg FWD 19 128.3 P2p
AとBのプライオリティが設定した値になっていることがわかります。
この方法を使用することで設計通り確実にプライマリールートブリッジ、セカンダリールートブリッジを設定することが可能です。
次にSTPを高速化するための以下の3つの拡張機能の説明をします。
PortFast
エンドノード(PCやプリンタ等)を接続するポートでは本来STPの計算を行う必要がないためPortFastを設定したポートはリンク接続後にリスニングとラーニング状態をスキップして直ちにフォワーディング状態に移行します。
PortFastを設定するポートにおいて下記コマンドを実行します。
Switch(config-if)#spanning-tree portfast
スイッチが接続される可能性があるポートでPortFastを設定するとループが発生する可能性があるため、コマンドの実行には注意が必要です。
UplinkFast
ブロッキングポートがあるスイッチでフォワーディングポートの直接リンク障害が起きた場合に、リスニングとラーニング状態をスキップして直ちにフォワーディング状態に移行し、切替時間を短縮します。
切替にかかる時間は5秒程度となります。
通常ブロッキングポートはアクセススイッチ(エンドノードが接続されるアクセス層のスイッチ)のポートとなるように設計されるため、ブロッキングポートを持つ全てのアクセススイッチにおいて下記コマンドを実行します。
Switch(config)#spanning-tree uplinkfast
BackboneFast
BackboneFastは間接リンクで障害が発生したときに切替を高速にする機能です。
この機能はRLQというBPDUを使うことによって普段は50秒程度かかる間接リンク障害時の切替動作を30秒程度に短縮します。
間接リンク障害を検出する必要が有るためBackboneFastは全てのスイッチに設定する必要があります。
Switch(config)#spanning-tree backbonefast
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします
下記より関連するコンテンツにアクセスできます