HOME > コンテンツリスト > ラボ・シナリオ for CCNA > [ < 前へ 次へ > ]

STPについて理解する

次のスイッチネットワークで、SW-A-SW-B 間のケーブルが断線してしまった場合、SW-A-SW-B 間の通信はできなくなってしまいます。



これを防ぐには、スイッチネットワークに冗長性を持たせなければなりません。冗長性を持たせるには、次図のように構成しなくてはいけませんが、そうすると、ループを構成してしまい、フレームがそのループ上を回り続けてしまう場合があります。



この物理的に接続されたループを論理的に切断し、ループを回避するためのプロトコルが STP (スパニングツリープロトコル) です。SW-A-SW-B 間のケーブルが断線してしまった場合は、STP により無効化していたポートを有効化することにより、SW-A と SW-B の間のルートを確保することができ、通信の継続ができるようになっています。



STP は IEEE802.1d で標準化されていますが、Catalyst 2940/2950/2960 は、IEEE802.1d 標準ではなく、STP を Cisco 独自に拡張した PVST+ を搭載し、デフォルトで動作しています。PVST+ は VLAN 毎に STP を実行できるように拡張されたプロトコルです。
STP を実装したスイッチ同士は、ネットワークトポロジーの変更や障害に迅速に対応するため、BPDU (ブリッジプロトコルデータユニット) と呼ばれるフレームを定期的 (デフォルトで 2秒) に交換しています。この BPDU により、物理的にループを構成したスイッチネットワークでも、論理的にループフリーなスイッチネットワークの構築・維持が行えます。

STP が動作するスイッチのポートの状態には、次の5つのポートステータスがあります。



スイッチの起動時は、ブロッキングステートからリスニングステートにすぐに移行します。そして、スイッチ間で BPDU を送受信し、ラーニングステートを経て、フォワーディングステートかブロッキングステートに移行します。STP では、全てのスイッチポートがフォワーディングステートかブロッキングステートに移行した時点で収束したことになります。ディセーブルステートは、管理者が shutdown しているポートや、ケーブルがささっていないポートの状態です。
ステートユーザフレームBPDUMACアドレスの学習
ブロッキング送受信しない受信のみしない
リスニング送受信しない送受信するしない
ラーニング受信のみ送受信するする
フォワーディング送受信する送受信するする
ディセーブル送受信しない送受信しないしない
ラーニングステートで、ユーザフレームの受信は行いますが、このフレームはMACアドレスの学習に使うのみで、受信フレーム自体は破棄されます。
STP では、スイッチの起動から収束する (全てのスイッチポートが、フォワーディングステートかブロッキングステートに移行する) までの間に、BPDU を使って次のことが行われます。

1) ルートスイッチの選出 (ルートブリッジとも言いますが、本ラボ・シナリオではルートスイッチで統一)
2) ルートポートの選出
3) 指定ポートの選出 (代表ポートとも言いますが、本ラボ・シナリオでは指定ポートで統一)
4) 非指定ポート (ブロックポート) の決定
ルートスイッチ基準 (ルート) となる1台のスイッチ
非ルートスイッチルートスイッチ以外のスイッチ
ルートポートフォワーディング各スイッチからルートスイッチに最も近道になるポート
指定ポートフォワーディング各セグメントからルートスイッチに最も近道になるポート
非指定ポートブロッキングルートポートにも指定ポートにも選ばれなかったポート

■ BPDU
ルートスイッチは全てのポートから 2秒毎 に BPDU を送信します。
BPDU は、ヘッダーなどを除くと次のフォーマットになっています。



スイッチプライオリティは、スイッチに設定されているプライオリティで、デフォルトは 32768 です。
拡張システムIDには、VLAN ID (VLAN1 の場合は 1) が入ります。
MACアドレスには、スイッチのMACアドレスが入ります。
ルートパスコストには、ルートスイッチまでのパスコストの累計が入ります。
ポートプライオリティは、BPDU を送信するポートに設定されているプライオリティで、デフォルトは 128 です。
内部ポート番号は、BPDU を送信するポートの番号です。
■ ルートスイッチの選出
STP ではルートスイッチを決定するために、スイッチプライオリティ (+システムID) とMACアドレスからなるブリッジIDを使用します。そして、最も小さいブリッジIDを持つスイッチがルートスイッチになります。ブリッジIDでは、MACアドレスよりもスイッチプライオリティが優先されますので、MACアドレスの値に関係なく、スイッチプライオリティの最も小さい値を持つスイッチがルートスイッチになることになります。ただし、スイッチプライオリティが同じであれば、MACアドレスの最小のスイッチがルートスイッチになります。

SW-A、SW-B、SW-C のブリッジIDが 1111、2222、3333 だとした場合、起動時に各スイッチは自身をルートスイッチと判断して、ルートIDとブリッジIDの両方に自身のブリッジIDを入れた BPDU を送信します。



SW-A の BPDU を受信した SW-B は、BPDU の中のルートID (1111) と自身のブリッジID (2222) を比較して、値の小さい方 (1111) を BPDU の中のルートIDに入れて送信します。SW-B はこの時点で、自身がルートスイッチでないことがわかります。



SW-B の BPDU を受信した SW-C も、BPDU の中のルートID (1111) と自身のブリッジID (3333) を比較して、値の小さい方 (1111) を BPDU の中のルートIDに入れて送信します。SW-C はこの時点で、自身がルートスイッチでないことがわかります。



最終的に全てのスイッチが送信する BPDU のルートIDが、最も小さいブリッジIDを持つ SW-A のルートIDとなり、ルートスイッチが確定します。 スイッチプライオリティは設定可能ですので、ルートスイッチは管理者が決めることができます。
■ ルートポートの選出
ルートポートは、各非ルートスイッチからそれぞれ1つだけ選出されます。非ルートスイッチが持つポートの中で、ルートスイッチに最も近道になるポートがルートポートになります。この近道かどうかの判断をパスコストにより算出します。パスコストの小さい方が近道になり、ルートポートになります。

ポートのコストは、ポートの帯域幅 (速度) によって次のように決まっています。
帯域幅コスト
10Gbps2
1Gbps4
100Mbps19
10Mbps100
次図のネットワークの場合は、ルートスイッチまでのパスコストの一番小さい G0/1 がルートポートに選出されます。



では、パスコストが同じ場合はどうなるのでしょうか?
この場合は、ポートIDの小さい方がルートポートに選ばれます。



ポートプライオリティのデフォルトは 128 ですが変更可能です。内部ポート番号は、スイッチのインターフェイスが全て同じ種類であればスイッチのポート番号と同じです。そのため、ポートプライオリティがデフォルトのままであれば、ポートの若番の方がポートIDは小さくなります。

したがって、次図のネットワークの場合は、ポートの若番の F0/1 がルートポートになります。



次のようにスイッチが3台あっても同じです。ルートスイッチまでの累積パスコストで比較されますので、SW-B は累積パスコストの小さい F0/2 がルートポートに選ばれます。



ルートポートの選定は次の2つで行われますが、パスコストの方が優先されます。また、どちらも小さい方が選ばれます。

1) ルートスイッチまでの累積パスコスト
2) ポートID
■ 指定ポートの選出の選出
まず、ルートスイッチの全てのポートは指定ポートになります。そして、指定ポートは1つのセグメントの中から1つだけ選出されます。各セグメントの中で、ルートスイッチに最も近道になるポートが指定ポートになります。この近道かどうかの判断は、該当スイッチからルートスイッチに行くための最も近いパスを通った時の累積パスコストにより行います。このパスコストの小さい方が近道になり、指定ポートになります。

次図のネットワークでは、ルートスイッチ側のポートが全て指定ポートになるので、各セグメント (S1、S2、S3) の指定ポートは全て決定し、SW-B 側には指定ポートはありません。このルートポートにも指定ポートにもなれなかった F0/1 と F0/2 は、非指定ポート (ブロックポート) になります。



次図のネットワークでは、ルートスイッチ側のポートが全て指定ポートになるので、これでセグメント S1 と S2 の指定ポートは決定しました。セグメント S3 では、そのセグメントに既にルートポートがあるので、必然的に SW-C の G0/1 が指定ポートになります。これは1つのセグメントに必ず1つ指定ポートがあるからです。したがって、残った SW-B の F0/1 が非指定ポート (ブロックポート) になります。



次図のネットワークでは、ルートスイッチ側のポートが全て指定ポートになるので、これでセグメント S1 と S2 の指定ポートは決定しました。セグメント S3 のどちらのポートが指定ポートになるかは、該当スイッチからルートスイッチに行くための最も近いパスを通った時の累積パスコストの比較で行われます。

非ルートスイッチがルートスイッチに行くための最も近道になるポートはルートポートです。そのため、ルートポートからルートスイッチまでの累積パスコストを比較します。SW-B は 4 で、SW-C は 19 ですので、SW-B の方が小さくなります。そのため、SW-B の F0/1 が指定ポートになり、残った SW-C の F0/1 が非指定ポート (ブロックポート) になります。



次図のネットワークでは、ルートスイッチ側のポートが全て指定ポートになるので、これでセグメント S1 と S2 の指定ポートは決定しました。セグメント S3 のどちらのポートが指定ポートになるかは、該当スイッチからルートスイッチに行くための最も近いパスを通った時の累積パスコストの比較で行われますが、SW-B、SW-C ともにルートスイッチまでのパスコストが等しいため、パスコストではセグメント S3 の指定ポートは選定できません。

この場合は、ブリッジIDの小さい方のスイッチのポートが指定ポートに選ばれます。



それぞれのスイッチのブリッジIDが図の通りだとした場合、SW-B のブリッジIDが SW-C のブリッジIDよりも小さいので、SW-B の F0/1 が指定ポートになり、残った SW-C の F0/1 が非指定ポート (ブロックポート) になります。



全てのポートの選定が終わった時点でツリーは完成し、ルートスイッチはツリーを監視するために BPDU を 2秒毎 に送信続けます。

指定ポートの選定は次の2つで行われますが、パスコストの方が優先されます。また、どちらも小さい方が選ばれます。

1) スイッチからルートスイッチに行くための最も近いパスを通った時の累積パスコスト
2) ブリッジID