キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
43480
閲覧回数
0
いいね!
0
コメント
1201436YK
Community Member

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)が最も小さいスイッチがなります。

図1_BIDフォーマット.jpg


プライオリティとは手動で設定する2バイトの値で、0~65535の値をとります。

デフォルトは32768+VLAN番号です。

手動でプライオリティを設定しない場合は、ネットワーク内で最も小さいMACアドレスを持っているスイッチがルートブリッジになります。

ルートブリッジは2秒に1回のタイミングでBPDUを送信します。

STPではネットワーク内の1台のスイッチからルートブリッジを決め、そのルートブリッジを頂点としたループのないツリー構造(スパニングツリー)を作り、ループを排除します。

図2_ツリー構造.jpg

STPの計算

次にスパニングツリーの計算方法について説明します。

各スイッチはルートブリッジとの距離をリンクの速度から求められる「コスト」という値で計算します。

ルートブリッジまでのリンクのコストの合計が、そのスイッチとルートブリッジの距離になります。

このコストが小さいほどルートブリッジとの距離が近いといえます。

コストは以下の表のようになっています。

表1_コスト一覧.jpg

ルートブリッジからの距離を計算し、それぞれのポートの役割を決定します。

  • 代表ポート

各リンク内で最もルートブリッジに近いポート(リンクに1つできる)

  • ルートポート

ルートブリッジ以外のスイッチの中で最もルートブリッジに近いポート(スイッチに1つできる)

  • 非代表ポート

リンク内で代表ポートでも、ルートポートでもないポート

この3つのうち、代表ポートとルートポートはフレームの送受信を行うフォワーディング状態となります。

非代表ポートはフレームの送受信を行わないブロッキング状態となり、冗長ポートとして設定されます

ポートのフォワーディングとブロッキングが決定すると、ネットワークはループのない状態になり、正常なフレームのやりとりが可能になります。

障害発生時のボートの動作

次に障害発生時のボートの動作について説明します。

障害が発生した場合、障害を検出しブロッキングである非代表ポートをフォワーディングへと移行し、スパニングツリーを再構築します。

ルートブリッジは2秒に1回BPDUを送信し、そのBPDUを受け取った各スイッチはそれをフォワーディングのポートから送信します。

正常な状態ではルートブリッジから送信されたBPDUは末端のスイッチまで流れていくため、障害の検出はこのBPDUが届くか届かないかで判別します。

障害の検出からスパニングツリーの再構築の為の計算までの間には2つのタイマがあります。

  • 最大時間(MAX AGE)タイマ ・・・ 20秒

ルートブリッジからのBPDUが届かなくなり、障害と判断するまでのタイマ

  • 転送遅延(Delay)タイマ ・・・ 15秒

中間状態へ移行する際に使用するタイマ

さらにブロッキングからフォワーディングへ移行する間には2つの状態がありま

表2_ポートの状態一覧.jpg

この4つの状態と、変更にかかる時間は次のようになります。

図3_ポート状態遷移.jpg

障害を検出し、非指定ポートが転送を開始する(フォワーディングになる)までの時間は、

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

出力例は以下となります。

図4_show_spanning_tree.jpg

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

設定と確認方法の出力例は以下となります。

図5_Rootマクロコマンド.jpg

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番目に小さい値を設定します。

設定と確認方法の出力例は以下となります。

図6_静的なプライオリティ設定.jpg

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
  • UplinkFast
  • BackboneFast

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

Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします