STP

スパニングツリープロトコル(Spanning Tree Protocol)は、IEEE 802.1Dで定義される複数のスイッチで構成される LAN のループ状態を回避するためのデータリンク層のプロトコルです。

  • スイッチによる冗長ネットワークでループを防止する
  • ブロードキャストストーム(レイヤ2ループ)を防止する
  • リンク障害時に経路を自動で切り替える
機能説明
Port Fastスパニングツリーの計算をせず即座にデータの送受信を可能にする
Uplink Fast直接的な障害の収束を早める
Backbone Fast間接的な障害の収束を早める
ルートガード上位のBPDUを受信したポートを使用不能にすることで想定外のスイッチがルートブリッジになってしまうことを防ぐ。
BPDUガードBPDUを受信したポートを使用不能にすることでスイッチの誤接続を防ぐ

BPDU

スイッチ間で情報をやり取りする際の管理用のフレームをBPDU (Bridge Protocol Data Unit)といいます。

<BPDUに含まれる主な情報>

  • ルートID(ルートブリッジのブリッジID)
  • ブリッジID(自身のブリッジID)
  • パスコスト(ルートブリッジに至るまでのルートパスコスト)
  • ポートID(自身のポートID)
  • Helloタイム(BPDUの送信間隔)

ブロッキングポートの選出方法

STPでは一部のポートをブロックすることによってループを防ぎます。そのブロッキングポートの決定方法は以下の通りです。最後に残ったのがブロッキングポートです。

  1. ルートブリッジの選出
  2. ルートポートの選出
  3. 指定ポートの選出
  4. ブロッキングポートの選出

1.ルートブリッジの選出

  • ツリー構造の起点となる中心のスイッチをルートブリッジといいます。
  • ブリッジIDを比較し最も低い値のスイッチがルートブリッジとなります。

ブリッジID

前半2バイト後半6バイト
プライオリティ(優先度)MACアドレス

2.ルートポートの選出

ルートポートとはルートブリッジまでの最短のパスコストを持つポートのことです。

パスコストはポートの帯域幅によって決められており、通信速度が早いほど小さくなります。

【パスコストのデフォルト値】

リンクの帯域幅パスコスト値
E10Gbps2
1Gbps4
Fa100Mbps(Fast Ethernet)19
10Mbps100

<ルートポート選出方法>

  1. 累計のパスコストが最も小さいポート
  2. 送信元ブリッジIDが最も小さいBPDUを受け取ったポート
  3. 送信元ポートIDが最も小さいBPDUを受け取ったポート

3.指定ポートの選出

スイッチ間の範囲(セグメント)で上位のBPDUを送信するポートが指定ポート(Designated Port)です。

【指定ポート選出方法】

  • ルートパスコストが小さいBPDUを送信するポート
  • BPDUの送信元ブリッジIDが小さいポート
  • 送信元ポートIDが最も小さいBPDUを送信するポート

ルートポートの向側は指定ポートになると考えてよいです。ルートブリッジは全て指定ポートになります。

ポートロールステータス選出説明
ルートポート
(RP)
フォワーディング非ルートブリッジに1つルートブリッジに最も近いポート
指定ポート
(DP)
フォワーディング各セグメントに1つルートブリッジに最も近いスイッチのポート
非指定ポート
(NDP)
ブロッキングRP/DPに選出されなかったポートデータフレームの送受信をしない(BPDU)の受診は行う

ポートの状態遷移とタイマー

状態内容MACアドレスの学習フレームの転送
Disableシャットダウン状態または障害などにより無効になっている状態。不可不可
BlockingBPDUは受信する。初期や非指定ポートはこの状態になる。不可不可
ListeningBPDUを受信し、各ポートの役割を決定している状態。不可不可
LearningBPDUを送受信している状態。MACアドレスを学習している。不可
Forwardingデータ転送可能な状態
タイマー内容
Helloスイッチは2秒ごとにBPDUを送信する。ルートブリッジ決定後、各スイッチはルートブリッジからのBPDUを受け取り、それをもとにBPDU作成して下流のスイッチに送信する。
最大エージ最後に受け取ったBPDUを保持する時間。デフォルトで20秒
転送遅延リスニングとラーニングの状態に留まる時間。デフォルトで15秒
コンバージェンスにかかる時間
直接的な障害15(転送遅延)× 2 = 30
間接的な障害15(転送遅延)× 2 + 20(最大エージタイム)
= 50

STP各種タイマーの設定

Switch(config)#spanning-tree vlan [ VLAN番号 ] [タイマーの種類 ] [ ]

Port Fast

  • リスニング状態とラーニング状態を経由せずにフォワーディング状態になり、通信が可能になります。
  • PCなどのデバイスが接続されるポートにPort Fastの設定ができます。
  • Cisco独自
  • スイッチで設定するとループの原因になってしまう
  • ※PCの電源オンオフで発生するトポロジ変更通知を抑制します。

全てのアクセスポート上でPortFastを有効化
(config)#spanning-tree portfast default

特定のポート上でPortFastを有効化
(config-if)#spanning-tree portfast

トランクポートでポートファストを有効化
(config-if)#spanning-tree portfast trunk
※インターフェイスコンフィグレーションモード

BPDUガード

BPDUガードはPort Fastが有効なポートでBPDU(Bridge Protocol Data Unit)と呼ばれるフレームを受信したとき、そのポートを無効(err-disabledにする機能です。

PortFastは、PCやサーバなどのエンドデバイスを接続しているポートに設定することが前提です。BPDUは間違ったポートにPortFastを設定した場合ループが発生するのを回避します。

ルートガード

上位のBPDU(現在のルートブリッジよりもブリッジIDの小さいBPDU)を受信したポートを使用不能にすることで想定外のスイッチがルートブリッジになってしまうことを防ぐ

RSTP

RSTP( Rapid Spanning Tree Protocol )

  • STPを改良して高速収束を実現したプロトコルです(RSTPは数秒でコンバージェンス、STPは最大50秒)。
  • STPはIEEE802.1Dで標準化されてRSTPはIEEE802.1Wで標準化されたプロトコルです。
  • 正確には rapid-PVST+ として動作するモード。
STPRSTP
ルートポート(RP)ルートポート(RP)
指定ポート(DP)指定ポート(DP)
非指定ポート代替ポート(RPの予備)
バックアップポート(DPの予備)

RSTPでは、スイッチと接続していないポートをエッジポートと呼び、即時、フォワーディング状態へ移動します。

エッジポートでBPDUを受信すると、エッジポートを解除して標準ポートになります。

STPRSTPMACアドレス学習データ転送
ブロッキングディスカーディングしないしない
リンニングディスカーディングしないしない
ディセーブルディスカーディングしないしない
ラーニングラーニングするしない
フォワーディングフォワーディングするする
シェアードリンクSTPタイマーを使った収束
ポイントツーポイントリンクSTPタイマーに依存しない高速収束

RSTPを有効にする

spanning-tree mode rapid-pvst

CST

CST(Common Spanning Tree)では複数のVLANを1つのSTPで管理する。

PVST+

  • PVST(Per VLAN Spanning Tree)はCisco独自です。
  • STP構成をVLANごとに構築できる
  • PVSThとランキングプロトコルのISLのみの対応だったが、PVST+ではIEEE802.1Qでも使用可能になりました。
  • VLANごとで任意のスイッチをルートブリッジにできます。
  • Ciscoスイッチにおけるデフォルトのスパニングツリーは、PVST+になります。
  • 拡張システムIDを使用します。
    (VLANごとに動作するので、ブリッジプライオリティとMACアドレスだけではVLANごとのSTPを識別できないため)

拡張システムID

  • プライオリティは4096の倍数
  • 拡張システムIDは12ビット
  • プライオリティ値は4ビット
機能デフォルト設定
スパニングツリーモードPVST+( Rapid PVST+ と MSTP はディセーブル )
スイッチプライオリティ値32768(VLAN単位で設定可能 )
ポートプライオリティ値128( ポート単位で設定可能 )
ポートコスト値4(1000Mbps) 19(100Mbps) 100(10Mbps)
VLANポートプライオリティ値128(ポート単位で設定可能)
VLANポートコスト値4(1000Mbps) 19(100Mbps) 100(10Mbps)
STPタイマー : Helloタイム2秒
STPタイマー : Forward-delayタイム15秒
STPタイマー : Max-ageタイム20秒
STPタイマー : 転送保留カウント6BPDU
スパニングツリーインスタンス ( 変更不可 )128( PVST+, Rapid PVST+ )
最大ホップカウント20( MSTPのみ )

STPのコマンド

show spanning-tree vlan [VLAN]を指定すると、そのVLANだけのSTPの状態が表示されます。

ルートブリッジの設定

<スタティック>プライオリティー値の変更するためのコマンド
「スタティック(明示的にプライオリティ値を小さくすることでルートブリッジに設定します。)なルートブリッジの設定」

(config)#spanning-tree vlan <vlan-id> priority <priority>

<ダイナミック>

(config)#spanning-tree vlan <vlan-id> root primary

「ダイナミック(自動的に他のスイッチよりもプライオリティ値を小さくすることでルートブリッジに設定します。)なルートブリッジの設定」

(config)#spanning-tree vlan root primary

「トランクポートでPost Fastを有効にするコマンド」

(config-if)#spanning-tree portfast trunk

「すべてのアクセスポート上でPost Fastを有効にするコマンド」

(config)#spanning-tree portfast default

「すべてのPost FastポートでBPDUガードを有効にするコマンド」

(config)#spanning-tree portfast bpduguard default

「特定のポート上でBPDUガードを有効にするコマンド」

(config-if)#spanning-tree bpduguard enable

「CatalystスイッチでRSTPを有効にするコマンド」

(config)#spanning-tree rapid-pvst

「STP、RSTPの動作を検証する」

#show spanning-tree

  1. RSTPを有効にしている場合は「ieee」ではなく「rstp」と表示される
  2. ルートブリッジに関する情報
  3. プライオリティ値、MACアドレス
  4. 今みているブリッジはルートブリッジですよ!
  5. ハロータイム、マックスエイジ、フォワーディングディレイ
  6. 自分自身に関する情報
  7. プライオリティ値
  8. MACアドレス
  9. ハロータイム、マックスエイジ、フォワーディングディレイ
  10. エイジングタイム(過ぎると削除される)
  11. 役割(指定ポート)
  12. ポートの状態(フォワーディング)
  13. コスト(ルートブリッジのパスコストではない)
  14. ポートのプライオリティと番号
  15. 接続方法(ポイントツーポイント)