STP
STPは
ネットワークのループを検出し、ポートの一つを論理的にダウン状態にすることでループを解消するプロトコルです。現在はネットワークを冗長化する手段として使われることが多いです。
STPの概要
STPは以下のようにして論理的にダウン状態にするポートを決定します。
- ルートブリッジの決定:優先度(ブリッジID)にもとづいてルートとなるブリッジを選出します。
- ルートポート(RP)の選出:ルートブリッジ以外のスイッチで、ルートブリッジに最も近いポートを選出します。
- 指定ポート(DP)の選出:すべてのリンクについて、ルートブリッジに近いポートを選出します。
- 非指定ポート(NDP)が決定:RPとDPのどちらにも指定されていないポートをダウン状態にします。
STPの詳細
4つのスイッチでループさせた場合を例に、STPの動作を見ていきます。
ルートブリッジの決定
STPが有効なスイッチ間でブリッジIDをやりとりし、ブリッジIDが一番小さいスイッチがルートブリッジになります。やりとりはBPDUというフレームにより行われます。
- 最初は各スイッチが自身がルートブリッジと思っています。
- 各スイッチは自身をルートとするBPDUを送信します。
- 各スイッチは他のスイッチからのBPDUを受信します。
- ここで自身がルートブリッジでないことに気が付きます。
- これを繰り返すことでルートブリッジが決定されます。
ブリッジ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を受信します。
- 以下の基準に従いルートポートを決定します。
- パスコストの値が一番小さい
- 「ルートまでのパスコスト」=「受信したパスコスト」+「BPDUを受信したインタフェースの帯域から求められるパスコスト」
- 送信元ブリッジIDの値が小さい
- 送信元ポート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