RSTP(Rapid Spanning Tree Protocol)とは
RSTPは従来のSTPを改良し、高速収束を可能にしたプロトコルです。STPがIEEE 802.1Dとして標準化されていたのに対して、RSTPはIEEE 802.1Wとして標準化されています。基本的なツリー形成の流れはSTPと同じで、ルートブリッジの選出、ルートポートの選出、指定ポートの選出という手順で進みます。ただしRSTPでは非指定ポートの代わりに代替ポートやバックアップポートという役割が追加され、収束速度が格段に向上しました。
RSTPの特徴
- トポロジー変更があった場合、STPが最大50秒かかるのに対し、RSTPでは数秒以内に収束できる
- ツリーは「ルートブリッジ選出 → ルートポート選出 → 指定ポート選出 → 代替ポート選出」という流れで形成
- ポート役割は4種類(ルートポート、指定ポート、代替ポート、バックアップポート)
- ポート状態は3種類(ディスカーディング、ラーニング、フォワーディング)に簡略化
- STPとの互換性があり、RSTPモードとSTPモードを混在させることも可能
- BPDUに「提案(Proposal)」と「合意(Agreement)」を含めることで迅速なネゴシエーションが可能
RSTPのポート役割
RSTPではSTPに存在しなかった新しい役割が追加されています。ルートポートと指定ポートはSTPと同じですが、代替ポートとバックアップポートはRSTP独自のものです。
| ポートの種類 | 状態 | 説明 |
|---|---|---|
| ルートポート(RP) | Forwarding | 非ルートブリッジごとに1つだけ選ばれる。ルートブリッジに最も近いポート。パスコスト、ブリッジID、ポートIDの順で比較。 |
| 指定ポート(DP) | Forwarding | 各リンクで必ず1つ選ばれる。ルートブリッジに最も近いポートが選ばれる。 |
| 代替ポート(AP) | Discarding | ルートポートのバックアップ用ポート。ルートポート障害時に即座に役割を引き継ぐ。STPの非指定ポートに相当し、CiscoのUplinkFastと同等。 |
| バックアップポート(BP) | Discarding | 指定ポートのバックアップ。指定ポート障害時に即座に役割を引き継ぐ。リピータハブなど共有メディア接続で発生し、ポートIDが小さい方がDPになり、もう一方がBPになる。 |
代替ポートはSTPの非指定ポートと同じ選出方法ですが、切り替えが数秒で完了します。バックアップポートはRSTP特有のもので、主に共有メディア環境でのみ出現します。
RSTPのポート状態
RSTPではSTPの5段階のポート状態が整理され、3つに統合されました。これによりシンプルで分かりやすくなっています。
| STPの状態 | RSTPの状態 | 動作 | MAC学習 |
|---|---|---|---|
| ディセーブル | ディスカーディング | フレームを転送せず、MAC学習もしない。BPDUは受信する。 | × |
| ブロッキング | ディスカーディング | 同上 | × |
| リスニング | ディスカーディング | 同上 | × |
| ラーニング | ラーニング | フレームは転送しないが、MACアドレスを学習する。BPDUは送受信する。 | ○ |
| フォワーディング | フォワーディング | フレーム転送とMAC学習、BPDU送受信を行う。 | ○ |
このようにRSTPでは「ディスカーディング → ラーニング → フォワーディング」の流れで収束が行われ、従来のSTPに比べて圧倒的に高速に切り替わります。
RSTP – BPDUフォーマット
RSTPでもBPDU(Bridge Protocol Data Unit)の基本構造はSTPと同じですが、いくつかのフィールドの値や意味が変更されています。特に「バージョン」「メッセージタイプ」「フラグ」がSTPと異なる点です。
RSTPのBPDUフォーマット
| フィールド | 日本語表記 | 説明 | サイズ(byte) |
|---|---|---|---|
| Protocol ID | プロトコルID | 常に 0 | 2 |
| Version | バージョン | RSTPでは 802.1w = 2 | 1 |
| Message Type | メッセージタイプ | RSTPのBPDUタイプは 0x02 | 1 |
| Flags | フラグ | 各種制御ビット(詳細は後述) | 1 |
| Root ID | ルートID | ルートブリッジのブリッジID | 8 |
| Path Cost | パスコスト | ルートに至るまでの累積コスト | 4 |
| Bridge ID | ブリッジID | 送信元スイッチのブリッジID | 8 |
| Port ID | ポートID | ポートプライオリティ+ポート番号 | 2 |
| Message Age | メッセージエージ | BPDU生成からの経過秒数(実質ホップ数) | 2 |
| Max Age | 最大エージ | BPDU保持時間。デフォルト20秒 | 2 |
| Hello Time | Helloタイム | BPDU送信間隔。デフォルト2秒 | 2 |
| Forward Delay | 転送遅延 | Listening/Learningに滞在する時間(デフォルト15秒)。RSTP同士ではほぼ使われず、STP互換時のみ有効。 | 2 |
フラグの役割
RSTPでは、STPでは未使用だったビットを活用しています。これにより、タイマーに依存せずにネゴシエーションによる高速収束を実現しています。
- bit1(Proposal)
提案ビット。あるポートを指定ポートとして使いたい場合に送信。 - bit2-3(Port Role)
ポートの役割を示す2ビット。- 00 = 不使用
- 01 = ルートポート
- 10 = 指定ポート
- 11 = 代替ポートまたはバックアップポート
- bit4(Learning)
学習状態にあることを示す。MACアドレスを学習中であることを意味する。 - bit5(Forwarding)
フォワーディング状態にあることを示す。実際にフレームを転送中。 - bit6(Agreement)
合意ビット。相手からの提案に同意したことを示し、即座にポートをフォワーディングへ移行可能にする。
高速収束の仕組み
RSTPでは、スイッチ間がポイントツーポイントで接続されている場合、プロポーザルBPDU(提案)とアグリーメントBPDU(合意)をやり取りします。
- あるスイッチが「このポートを指定ポートにしたい」と提案する(Proposal)。
- 相手スイッチがその提案を受け入れれば、Agreementビットを立てたBPDUを返信する。
- この合意により、両方のポートは即座にフォワーディングへ移行する。
このようにRSTPは、従来のSTPのようにHelloタイマーやForward Delayを待たずに、ネゴシエーションだけでポートを有効化できるため、数秒以内の収束が可能になります。
RSTP – プロポーザルとアグリーメント
RSTPが高速収束を実現できる理由のひとつが「Proposal(提案)」と「Agreement(合意)」によるハンドシェイクです。従来のSTPでは、ポートを有効化する際にリスニング状態やラーニング状態を順番に経由する必要があり、その結果として収束に最大50秒かかっていました。RSTPではこのプロセスを大幅に簡略化しています。
スイッチ間が接続されると、それぞれのスイッチは「自分がルートブリッジであり、このポートは指定ポートである」という内容のProposal BPDUを送信します。BPDUにはブリッジプライオリティやルートパスコストといった情報が含まれており、どちらが優先されるべきかを判断する材料になります。
もし受信したProposalの方が自分より強ければ、相手のポートを指定ポートとして認め、自分のポートをルートポートに設定します。そして残りのポートを一時的にディスカーディングにしてからAgreement BPDUを返信します。逆に自分が強い場合は、相手からのAgreementを受信した時点で即座にフォワーディングを開始できます。このように、提案と合意によるハンドシェイクでポートを迅速に有効化するのがRSTPの特徴です。
RSTP – 障害発生時の動作
RSTPは障害発生時の挙動もSTPとは異なります。非ルートブリッジが持つ代替ポート(AP)は、ルートポートの障害を検知するとすぐにフォワーディングへ切り替わります。STPのようにリスニングやラーニング状態を経由する必要がないため、切り替えは数秒で完了します。
さらに、トポロジー変化を検知したスイッチはBPDUのTC(Topology Change)ビットをセットしてネットワーク全体に通知します。この情報はProposal & Agreementの仕組みと組み合わせて拡散され、全体の収束が高速に進みます。STPのようにルートブリッジに変更通知を送って応答を待つ必要もなく、従来の50秒待機が不要になっているのです。
RSTP – リンクタイプ
RSTPでは、接続形態によってリンクを次の2種類に分類しています。
| リンクタイプ | 説明 |
|---|---|
| ポイントツーポイントリンク | 全二重で動作するポート。スイッチ間が1対1で接続されており、高速収束を実現できるリンク。Proposal & Agreementのハンドシェイクが可能。 |
| シェアードリンク | 半二重で動作するポート。リピータハブを介するなど、複数のスイッチが同一セグメントに存在する可能性がある接続。高速収束は行えず、従来のSTPタイマーに依存する。 |
RSTPの高速収束の恩恵を受けるためには、スイッチ間は必ず全二重・ポイントツーポイント接続にすることが重要です。もしシェアードリンクになっている場合、RSTPでも従来のSTPと同じタイマーに頼る動作になってしまいます。
RSTP(rapid-PVST+)の設定:スパニングツリーモードの変更
CatalystスイッチはデフォルトでSTP(PVST+)モードになっています。高速収束を実現するために、RSTP(rapid-PVST+)へモードを変更することができます。モード切替のコマンドは以下の通りです。
(config)# spanning-tree mode [ mst | pvst | rapid-pvst ]
- pvst
STPモード(IEEE 802.1D)。正確にはPVST+として動作。(config)# spanning-tree mode pvst - rapid-pvst
RSTPモード(IEEE 802.1W)。正確にはrapid-PVST+として動作。(config)# spanning-tree mode rapid-pvst - mst
MSTモード(IEEE 802.1S)。複数のVLANを1つのインスタンスにまとめるモード。(config)# spanning-tree mode mst
RSTP(rapid-PVST+)の有効化と無効化
RSTPはデフォルトで全VLANに対して有効化されています。特定のVLANでのみ無効化したい場合は以下のコマンドを使用します。
- 有効化
(config)# spanning-tree vlan vlan-id - 無効化
(config)# no spanning-tree vlan vlan-id
例:VLAN10でRSTPを無効化する場合
(config)# no spanning-tree vlan 10
RSTP(rapid-PVST+)のブリッジプライオリティ設定
ブリッジプライオリティの設定はSTPと同じ仕組みで、VLANごとに設定可能です。
(config)# spanning-tree vlan vlan-id priority priority
- priorityの範囲:0~61440(4096刻みで指定)
- 例:VLAN10でブリッジプライオリティを4096に設定する場合
(config)# spanning-tree vlan 10 priority 4096
※ルートブリッジにしたい場合はpriorityを「0」、セカンダリールートにしたい場合は「4096」と設定するのが一般的です。
RSTP(rapid-PVST+)のエッジポート設定
RSTPではSTPで用意されていたUplinkFastやBackboneFastの設定は不要です。なぜならRSTP自体が高速収束できるからです。ただし、PCやルータなどBPDUをやり取りしない機器が接続されるポートでは、PortFastを設定して即座にフォワーディングへ移行させる必要があります。
- 特定インターフェースへのPortFast適用(推奨)
(config-if)# spanning-tree portfast - 全アクセスポートに一括適用(非推奨)
(config)# spanning-tree portfast default
参考1:ポートコストの設定(STP/RSTP共通)
デフォルトコスト値は以下の通りです。
- 10Gbps = 2
- 1Gbps = 4
- 100Mbps = 19
- 10Mbps = 100
変更する場合は次のように設定します。
(config-if)# spanning-tree vlan vlan-id cost cost
例:GigabitEthernet0/1のトランクポートにおいて、VLAN10のコストを1に設定
(config)# interface GigabitEthernet0/1
(config-if)# spanning-tree vlan 10 cost 1
※VLANを指定せずに設定すると、そのインターフェース上の全VLANに適用されます。
参考2:ポートプライオリティの設定(STP/RSTP共通)
ポートプライオリティのデフォルト値は128で、16の倍数で設定可能です(範囲0~240)。
(config-if)# spanning-tree vlan vlan-id port-priority priority
例:GigabitEthernet0/1のVLAN10において、ポートプライオリティを144に設定する場合
(config)# interface GigabitEthernet0/1
(config-if)# spanning-tree vlan 10 port-priority 144
※VLANを指定しなければ、そのインターフェース上の全VLANに設定が適用されます。
Catalystスイッチにおけるスパニングツリーのデフォルト値
Catalystスイッチでは、スパニングツリー関連の多くのパラメータがあらかじめデフォルトで設定されています。これらを理解しておくと、試験の設問やトラブルシューティング時に役立ちます。
デフォルト設定一覧
| 機能 | デフォルト設定 |
|---|---|
| スパニングツリーモード | PVST+(Rapid PVST+ と MSTP は無効) |
| スイッチプライオリティ値 | 32768(VLAN単位で設定可能) |
| ポートプライオリティ値 | 128(ポート単位で設定可能) |
| ポートコスト値 | 1000Mbps = 4、100Mbps = 19、10Mbps = 100 |
| VLANポートプライオリティ値 | 128(ポート単位で設定可能) |
| VLANポートコスト値 | 1000Mbps = 4、100Mbps = 19、10Mbps = 100 |
| Helloタイム | 2秒 |
| Forward Delayタイム | 15秒 |
| Max Ageタイム | 20秒 |
| 転送保留カウント | 6BPDU |
| スパニングツリーインスタンス数(変更不可) | 128(PVST+、Rapid PVST+) |
| 最大ホップカウント | 20(MSTPのみ) |
ここで注意しておきたいのは、スイッチプライオリティ値は32768が標準であるという点です。そのため、ルートブリッジを意図的に指定する場合は0や4096など明示的に変更する必要があります。
また、STPタイマー関連はHelloが2秒、Forward Delayが15秒、Max Ageが20秒という組み合わせで、従来のSTPで収束に最大50秒かかる仕組みと関連しています。
Catalyst – MSTモード時のパスコスト値
MST(Multiple Spanning Tree Protocol)モードでは、パスコストの計算基準が従来のPVST+やRapid PVST+とは異なります。より高いリンク速度に対応できるよう、値が大きく定義されています。
| リンク速度 | パスコスト値 |
|---|---|
| 10 Mbps | 2,000,000 |
| 100 Mbps | 200,000 |
| 1 Gbps | 20,000 |
| 10 Gbps | 2,000 |
| 100 Gbps | 200 |