RSTPの概要

標準のスパニングツリープロトコルでは、経路の切り替えに数十秒単位の時間がかかってしまいます。障害が発生して数十秒もの間、通信ができなくなってしまうのは現在のシステムでは許容できないことがほとんどでしょう。経路の切り替えをより高速にできるようにしているスパニングツリーの規格がIEEE802.1w RSTP(Rapid STP)です。

RSTPでは、スイッチ間のリンクは原則として、ポイントツーポイントの全二重であることを前提としています。ポイントツーポイントリンク間で、ハンドシェイクすることで素早くポートの役割を決定することができます。標準のスパニングツリーは、タイマベースでの処理を行っているのに比べると、迅速にポートの役割を決定できます。そして、ポートの役割も標準のスパニングツリープロトコルから拡張しています。

RSTPのポートの役割と状態

RSTPでのポートの役割として、以下があります。

  • ルートポート
  • 代表ポート
  • 代替ポート(Alternate Port)
  • バックアップポート(Backup Port)

ルートポート、代表ポートは標準のスパニングツリープロトコルと同じです。標準のスパニングツリープロトコルではブロックされる非代表ポートが、代替ポートとバックアップポートに細分化されています。代替ポートはルートポートのバックアップです。ルートポートがダウンしたときに代替ポートが新しいルートポートの候補です。そして、バックアップポートは代表ポートのバックアップです。次の図は、RSTPのポートの役割をまとめています。


ルートポート、代表ポートについては、以下の記事で解説しています。


図 RSTPのポートの役割
図 RSTPのポートの役割

現在のネットワーク構成で共有ハブを利用することは、ほとんどありません。そのため、バックアップポートを考慮する必要はほとんどありません。

また、RSTPではポートの状態としてブロッキング、リスニング状態がディスカーディング(破棄)状態となっています。

表 標準STPとRSTPのポート状態
標準STPポート状態 RSTPのポート状態
ブロッキング ディスカーディング
リスニング
ラーニング ラーニング
フォワーディング フォワーディング
RSTPであっても「ブロッキング状態」という表現はよく使われます。

RSTP BPDU

RSTPのBPDUは標準スパニングツリープロトコルのBPDUとよく似ています。RSTP BPDUのフォーマットは以下のとおりです。

図 RSTP BPDU
図 RSTP 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

もし、プロポーザルBPDUを受信したポートよりもルートポートとして適切なポートがある場合は、アグリーメントBPDUは送信しません。対向のポートは通常のスパニングツリープロトコルと同じように転送遅延タイマ2回分を待って代表ポートになりフォワーディング状態に移行します。

3台のスイッチがループ構成になっている場合、プロポーザル/アグリーメントによって、次の図のようにポートの役割が決定されるようになります。

図 プロポーザル/アグリーメントによるポートの役割の決定の例
図 プロポーザル/アグリーメントによるポートの役割の決定の例

エッジポート

PCやIP Phone、サーバなどが接続されるポートは必ず代表ポートです。PCなどはスパニングツリーに関与せず、それらが接続されるスイッチのポートは必ずルートブリッジへの最短のポートになるからです。ただし、デフォルトでは代表ポートに決まるのに時間がかかってしまいます。

エッジポートは、PC、IP Phone、サーバなどが接続されるポートをすぐにフォワーディング状態に移行させる機能です。ループしない端っこ(エッジ)のポートは速やかに代表ポートとしてフォワーディング状態にします。

図 エッジポート(Cisco PortFast)
図 エッジポート(Cisco PortFast)

Ciscoでは、PortFast機能でエッジポートと同様にPCなどが接続されるポートをすぐにフォワーディング状態とします。以下のPortFastの設定でRSTPのエッジポートとして設定することになります。

Cisco Portfast(RSTPエッジポート)の設定

(config-if)#spanning-tree portfast

PortFast自体はRSTPを有効化していない標準のスパニングツリーのときでも利用できます。

Cisco Portfastについて、以下の記事で解説しています。


RSTPの設定と確認

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などが接続されるポートはエッジポートとして設定するだけです。

RSTPエッジポートの設定

(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スイッチの仕組み