STP


STPはネットワークのループを検出し、ポートの一つを論理的にダウン状態にすることでループを解消するプロトコルです。現在はネットワークを冗長化する手段として使われることが多いです。

STPの概要

STPは以下のようにして論理的にダウン状態にするポートを決定します。
  1. ルートブリッジの決定:優先度(ブリッジID)にもとづいてルートとなるブリッジを選出します。
  2. ルートポート(RP)の選出:ルートブリッジ以外のスイッチで、ルートブリッジに最も近いポートを選出します。
  3. 指定ポート(DP)の選出:すべてのリンクについて、ルートブリッジに近いポートを選出します。
  4. 非指定ポート(NDP)が決定:RPとDPのどちらにも指定されていないポートをダウン状態にします。
STPの歴史は古く

STPの詳細

4つのスイッチでループさせた場合を例に、STPの動作を見ていきます。

ルートブリッジの決定

STPが有効なスイッチ間でブリッジIDをやりとりし、ブリッジIDが一番小さいスイッチがルートブリッジになります。やりとりはBPDUというフレームにより行われます。
  1. 最初は各スイッチが自身がルートブリッジと思っています。
  2. 各スイッチは自身をルートとするBPDUを送信します。


  3. 各スイッチは他のスイッチからのBPDUを受信します。
    • ここで自身がルートブリッジでないことに気が付きます。

  4. これを繰り返すことでルートブリッジが決定されます。

ブリッジID
ブリッジIDはブリッジプライオリティとスイッチMACアドレスにより決まります。プライオリティのデフォルトは0x8000(32768)です。
ブリッジID
ブリッジプライオリティ
2バイト
スイッチMACアドレス
6バイト
プライオリティがどのスイッチにも設定されていない場合、スイッチMACアドレスによってルートブリッジが決定されます。たまたま一番小さいMACアドレスを持っていたスイッチがルートブリッジになります。
本ページではスイッチMACアドレスを省略してプライオリティのみ表記しています。
BPDU
BPDUのフォーマットは以下のとおりです。
フィールド名 サイズ(バイト) 説明
プロトコルID 2 常に0
バージョン 1 STPのバージョン。802.1Dは0
タイプ 1 0x00…コンフィギュレーションBPDU
0x80…TCN BPDU
フラグ 1 0ビット目が1…トポロジ変更
7ビット目が1…トポロジ変更の確認
ルートブリッジID 8 ルートとなるスイッチのブリッジID
パスコスト 4 ルートブリッジまでのパスコスト
送信元ブリッジID 8 BPDUを送信したブリッジID
送信元ポートID 2 BPDUを送信したポートのID
メッセージエージタイマー 2 ルートブリッジからスイッチまでのホップ数
マックスエージ 2 ルートブリッジがダウンしたと判断するまでの時間
ハロータイム 2 BPDUの送信間隔
フォワードディレイ 2 リスニング、ラーニングする時間

ルートポートの選出

ルートブリッジが決定したら、ルートポートを選出します。ルートポートはルートブリッジに最も近いポートです。
  • ループがない場合
    • BPDUを受信するポートは1つのみです。
    • 受信したポートがルートポートになります。
  • ループがある場合
    • 複数のポートからBPDUを受信します。
    • 以下の基準に従いルートポートを決定します。
      1. パスコストの値が一番小さい
        • 「ルートまでのパスコスト」=「受信したパスコスト」+「BPDUを受信したインタフェースの帯域から求められるパスコスト」
      1. 送信元ブリッジIDの値が小さい
      2. 送信元ポートIDの値が小さい

下の図の場合、A-B-Dのパスコストは10+100=110になります。A-C-Dのパスコストは10+10=20になります。

パスコスト
パスコストは帯域幅によって決まります。
帯域幅 パスコスト 旧パスコスト
10Mbps 100 100
100Mbps 19 10
1Gbps 4 1
10Gbps 2 1
旧パスコストは1Gbpsと10Gbpsが同じになってしまっているため、新たに定義されました。

指定ポートの選出

最終更新:2014年01月13日 23:08