目次
RSTPの概要
標準のスパニングツリープロトコルでは、経路の切り替えに数十秒単位の時間がかかってしまいます。障害が発生して数十秒もの間、通信ができなくなってしまうのは現在のシステムでは許容できないことがほとんどでしょう。経路の切り替えをより高速にできるようにしているスパニングツリーの規格がIEEE802.1w RSTP(Rapid STP)です。
RSTPでは、スイッチ間のリンクは原則として、ポイントツーポイントの全二重であることを前提としています。ポイントツーポイントリンク間で、ハンドシェイクすることで素早くポートの役割を決定することができます。標準のスパニングツリーは、タイマベースでの処理を行っているのに比べると、迅速にポートの役割を決定できます。そして、ポートの役割も標準のスパニングツリープロトコルから拡張しています。
RSTPのポートの役割と状態
RSTPでのポートの役割として、以下があります。
- ルートポート
- 代表ポート
- 代替ポート(Alternate Port)
- バックアップポート(Backup Port)
ルートポート、代表ポートは標準のスパニングツリープロトコルと同じです。標準のスパニングツリープロトコルではブロックされる非代表ポートが、代替ポートとバックアップポートに細分化されています。代替ポートはルートポートのバックアップです。ルートポートがダウンしたときに代替ポートが新しいルートポートの候補です。そして、バックアップポートは代表ポートのバックアップです。次の図は、RSTPのポートの役割をまとめています。
ルートポート、代表ポートについては、以下の記事で解説しています。
また、RSTPではポートの状態としてブロッキング、リスニング状態がディスカーディング(破棄)状態となっています。
標準STPポート状態 | RSTPのポート状態 |
ブロッキング | ディスカーディング |
リスニング | |
ラーニング | ラーニング |
フォワーディング | フォワーディング |
RSTP BPDU
RSTPのBPDUは標準スパニングツリープロトコルのBPDUとよく似ています。RSTP BPDUのフォーマットは以下のとおりです。
フィールド | 概要 |
プロトコルID | RSTPでは、「0x0002」で固定 |
バージョン | RSTPでは、「0x02」で固定 |
BPDUタイプ | RSTPでは、「0x02」で固定 |
フラグ |
ビット7-TCACKフラグ ビット6:アグリーメントフラグ ビット5:フォワーディングフラグ ビット4:ラーニングフラグ ビット3、ビット2:ポート役割 00-Unknown 01-代替ポートまたはバックアップポート 10-ルートポート 11-代表ポート ビット1:プロポーザルフラグ ビット0-TCフラグ |
ルートID | ルートブリッジのブリッジID |
パスコスト | ルートブリッジまでの累積コスト |
ブリッジID | BPDUを送信するスイッチのブリッジID |
ポートID | ポートプライオリティとポート番号から構成されるポートの識別情報 |
メッセージエージタイマ | BPDUが生成されてからの時間 |
最大エージタイマ | BPDUの有効時間 |
ハロータイマ | ルートブリッジがBPDUを送信する間隔 |
転送遅延タイマ | ラーニング状態の時間 |
バージョン1長さ | 「0x0000」将来使用 |
RSTPでは、標準のSTPのようにコンフィグレーションBPDUとTCN BPDUの2種類のBPDUを使っているわけではありません。RSTPにおけるトポロジ変更通知は、TCフラグをセットしたBPDUを利用します。
プロポーザル/アグリーメントによるポートの役割の決定
標準のスパニングツリープロトコルでは、ルートブリッジからのコンフィグレーションBPDUに基づいて、ルートポートや代表ポートを決定しています。それに対して、RSTPではポイントツーポイントリンクの2つのポート間でハンドシェイク(交渉)して、代表ポートとルートポートを決定できるようにしています。そのために利用するBPDUのフラグがプロポーザルフラグとアグリーメントフラグです。プロポーザルフラグはポートを代表ポートとして振る舞おうとするフラグです。アグリーメントフラグは対向ポートを代表ポートとして受け入れて、自身のポートをルートポートとするためのフラグです。
2台のスイッチをポイントツーポイントリンクで接続すると、それぞれのスイッチはポートをブロッキング状態にしたうえで自身をルートブリッジであると仮定して、代表ポートとしてプロポーザルフラグをセットしたBPDU(プロポーザルBPDU)を送信します。
プロポーザルBPDUを受信すると、ルートブリッジの情報やコストをチェックします。相手の方がよい場合は、対向のポートを代表ポートとして認めます。プロポーザルBPDUを受信したポートをルートポートとし、アグリーメントフラグをセットしたBPDU(アグリーメントBPDU)を送信します。
自身のポートのほうがよい場合は、対向のポートからアグリーメントBPDUを受信するとすぐに代表ポートとしてフォワーディング状態にします。
もし、プロポーザルBPDUを受信したポートよりもルートポートとして適切なポートがある場合は、アグリーメントBPDUは送信しません。対向のポートは通常のスパニングツリープロトコルと同じように転送遅延タイマ2回分を待って代表ポートになりフォワーディング状態に移行します。
3台のスイッチがループ構成になっている場合、プロポーザル/アグリーメントによって、次の図のようにポートの役割が決定されるようになります。
エッジポート
PCやIP Phone、サーバなどが接続されるポートは必ず代表ポートです。PCなどはスパニングツリーに関与せず、それらが接続されるスイッチのポートは必ずルートブリッジへの最短のポートになるからです。ただし、デフォルトでは代表ポートに決まるのに時間がかかってしまいます。
エッジポートは、PC、IP Phone、サーバなどが接続されるポートをすぐにフォワーディング状態に移行させる機能です。ループしない端っこ(エッジ)のポートは速やかに代表ポートとしてフォワーディング状態にします。
Ciscoでは、PortFast機能でエッジポートと同様にPCなどが接続されるポートをすぐにフォワーディング状態とします。以下のPortFastの設定でRSTPのエッジポートとして設定することになります。
(config-if)#spanning-tree portfast
Cisco Portfastについて、以下の記事で解説しています。
RSTPの設定と確認
RSTPの設定
RSTPの設定は、通常のスパニングツリーの設定の前にRSTPを有効化するだけです。そのために、グローバルコンフィグレーションモードで次のコマンドを入力します。
(config)#spanning-tree mode rapid-pvst
すべてのスイッチでRSTPを有効化しないと、標準のスパニングツリーとして動作するので注意してください。そして、標準のスパニングツリーの設定と同様に、ルートブリッジを決定するためにブリッジプライオリティの設定を行います。コマンドは標準のスパニングツリーと同じです。
(config)#spanning-tree vlan <vlan-num> root primary
(config)#spanning-tree vlan <vlan-num> root secondary
(config)#spanning-tree vlan <vlan-num> priority <priority>
さらに、PCなどが接続されるポートはエッジポートとして設定するだけです。
(config-if)#spanning-tree portfast
RSTPの確認
RSTPの確認は、通常のSTPと同じshow spanning-tree vlanコマンドです。RSTPを有効にしているときのshow spanning-tree vlanコマンドの出力例は、次のようになります。
SW11#show spanning-tree vlan 1 VLAN1 Spanning tree enabled protocol rstp Root ID Priority 4096 Address 0009.b744.eec1 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 4096 Address 0009.b744.eec1 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Gi1/0/1 Desg FWD 4 128.1 Edge P2p Gi1/0/7 Desg FWD 4 128.7 P2p Gi1/0/9 Desg FWD 4 128.9 P2p
「Spanning tree enabled protocol rstp」の部分からRSTPが有効になっていることがわかります。また、spanning-tree portfastコマンドでエッジポートとして設定したポートには、「Edge」と表示されます。
レイヤ2スイッチの仕組み
- レイヤ2スイッチの概要 ~ひとつのネットワークを作る~
- レイヤ2スイッチの動作 ~MACアドレスに基づいて転送~
- 演習:レイヤ2スイッチの動作[Cisco]
- コリジョンドメインとブロードキャストドメイン
- レイヤ2スイッチの転送方式
- 全二重通信 ~送信も受信も同時に~
- オートネゴシエーション ~両端のポートの一番いい速度/モードにする~
- Cisco 全二重/半二重の不一致(duplex mismatch)
- ポートセキュリティ ~つながっているPCは正規のPCですか?~
- Cisco ポートセキュリティの設定
- Ciscoポートセキュリティの設定例
- SPAN ~ネットワークのモニタリング~
- スパニングツリーの概要 ~イーサネットフレームの転送経路を冗長化~
- BPDU ~スパニングツリーの制御情報~
- スパニングツリーの仕組み ~ルートブリッジを中心とした転送経路を決める~
- スパニングツリー ポートIDでルートポートが決まるとき
- スパニングツリーのポートの状態 ~ブロッキング/リスニング/ラーニング/フォワーディング~
- TCN BPDUによるトポロジ変更通知
- PVST ~VLANごとにスパニングツリーを考える~
- スパニングツリー(PVST)の設定と確認
- PortFast ~すぐにフォワーディング状態にする~
- スパニングツリーの設定例
- RSTP ~高速なスパニングツリー~
- RSTPの設定例
- ルートガード
- BPDUガード/BPDUフィルタ
- PoE ~UTPケーブルで電源供給~
- イーサチャネルの概要 ~複数のイーサネットリンクをまとめる~
- イーサチャネルの負荷分散 ~単純に帯域幅が増えるわけではない~
- L2イーサチャネルの設定 ~スイッチポートをまとめる~
- L3イーサチャネル ~ルーテッドポートをまとめる~
- イーサチャネルの設定例 L3イーサチャネルとL2イーサチャネルの接続
- LACP/PAgPのshowコマンド
- [Juniper-Cisco相互接続] L2リンクアグリゲーションの設定例
- [Juniper-Cisco相互接続] L3リンクアグリゲーションの設定例
- ストームコントロール