Catalyst STP ( Spanning Tree Protocol ) の概要

スポンサーリンク

Spanning-Treeはレイヤー2の冗長化プロ トコルです。ひと昔前では冗長化といえばSTPとHSRPの合わせ技というのが定番でしたがStackWiseやVSSの普及により今では前ほど使用され ることはなくなってきました。


といえど、今でも使用することは少なからずあります。建屋間をリング構成で接続し冗長化しておきたいなどといった場合には選択肢は二つありSTPか FlexLinkということになりますが、両者の機能を説明したときにお客さんは大抵STPを選択されます。FlexLinkは機器単体で実装しているも のであり、障害によっては正確に検知できない可能性がSTPより高いからです。


そういうわけで私の嫌いなSTPですが、使わざるを得ないときのことを考えてメモ書き程度で下記に記載しておきます。


■STPの概要

レイヤー2レベルのネットワークを構成した時に構成に よってはループ構成になる場合があります。もっともわかりやすい例が以下です。

L2スイッチ同士が同一VLANのポートに2本づつケーブルで接続されており、これにブロードキャストが流れた場合そのパケットは2台の間で永遠にループすることになります。 ( 実際にはTTLの設定で自動消滅します )


1パケットや2パケット程度であれば問題にならないかもしれませんが大量に流れると機器の負荷が一気にあがりネットワーク麻痺状態となってしまいます。


こういったループ構成を排除しループが生じないように強制的にループフリーな構成を構築するのがSTPです。上記の例ではケーブルが接続されている口が4 つありますが、4ポートのうち3ポートが転送状態、残り1ポートがブロック状態となることで無限ループになるのを防止します。そして3つの転送ポートのいずれかで障害が発生すればブロックしていたポートを転送状態にして通信を再開することで冗長化を実現しています。

■STPの動作概要

STPに参加しているスイッチは同一VLANの中で各 機器同士で2秒ごとにBPDUというコントロールメッ セージを交換しあうことで連携して動作します。BPDUを交換しあうことでVLAN単位でルートブリッジを選定し、以降、このルートブリッジを中心としてポートの転送可 否 などを決定していくことになります。


大まかには以下の動作フローとなります。

  1. ルートブリッジの選出
  2. 非ルートブリッジでルート ( Root ) ポートの 選出
  3. 指定ポート ( Designated ) の選出
  4. ブロックポートの選出

ルートブリッジは2バイトのプライオリティとMACア ドレスから構成されます。プライオリティはデフォルトで32768であり、任意に変更可能で値が小さいほうが優先されることになります。このプライオリ ティの変更により意図的にルートブリッジを選択 することが可能となります。


ルートブリッジが選定されたら各スイッチ上のポートの転送可否が決定されます。ポートの種類には以下の3つが存在します。

ポートの種類  説明 
ルートポート ( Root Port )  各スイッチからルートブリッジに最も近いポート 
指定ポート ( Designated Port )   各セグメント ( ケーブル ) からルートブリッジに最も近いポート 
ブロックポート ( Block Port )  ルートポートにも指定ポートにも選定されなかったポート 


まず、ルートブリッジのポートは必ず指定ポートになります。ルートブリッジにおいてルートポートは存在しません。


非ルートブリッジにおいてはルートポート、指定ポート、ブロッキングポートの全てが存在します。ルートブリッジに直接接続されているポートはルートブリッ ジに最も近いポートなのでルート ポートになります。ルートポート選定基準はパスコストになりますが、パスコストはイン ターフェイスの帯域幅で自動設定されます。デフォルトのパスコストは帯域ごとで以下のようになりますが任意に変更可能です。

帯域 パスコスト
10Gbps 2
1Gbps 4
100Mbps 19
10Mbps 100


値が小さいほど優先度が高いということになり、これらの値は任意に変更可能です。ルートポートまたは指定ポートに選ばれなかったポートはブロックポートと いうことになります。

ちなみに各機器とBPDUを交換し連携して動くSTP ですが、その過程および結果でポートの状態には以下のものがあります。

ステータス 説明 秒数
Blocking BPDUの交換は実施しますがフレームの転送は実施しない。 デフォルト
Listening ルートポート、指定ポート、ブロックポートを選択している状態。
フレームは転送しない。
20 秒
Learning フレームの転送の参加に準備を行っている段階。
フレームは転送しない。
15 秒
Forwarding フレームの転送を行っている状態。 15 秒

上から順番に偏移していくことになりま すのでスイッチが起動した直後の状態はBlockingです。ここから20秒経過後にListeningとなり、15秒経過後にLearning、さらに 15秒たってようやくForwardingとなります。つまり起動直後から20+15+15=50秒後にフレームが転送開始されるわけです。


■構成例

下記の例を考えてみます。実務では下記のような単純な 構成というのはまずありませんがSTPの例ということで。

各スイッチが起動しBPDUを交換し合った結果、スイッチAが最も小さいブリッジIDを保持していることが判明したので、スイッチAを中心にツリーが作ら れます。スイッチAのポートは、全て「各セグメント(1つのケーブル)上で、最もルートブリッジに近いポート」という定義に一致するため、全てのポートが DPとなりForwardingに決定されます。

次に、パスコストを基にルートブリッジになることができなかったスイッチBとスイッチC上で「非ルートブリッジのポートの中で、もっともルートブリッジに 近いポート」であるRPが1つずつ選出されます。問題はスイッチB~スイッチCを繋いでいるセグメントですが、スイッチBのルートポートからルートブリッ ジまでのパスコストは2であり、スイッチCのルートポートからルートブリッジまでのパスコストは4であるため、このセグメント上のDPはスイッチB側に決 定されます。ここまで計算して、最終的にDPにもRPにもなれなかったスイッチC上のポートにBPが定義され、以後Blockingとなります。もちろ ん、Forwardingしているリンクに障害が発生した場合、再計算が行われて、自動的にForwardingに切り替わります。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする