高速スパニングツリー(RSTP)は、STPの切り替わり動作を高速化する為に作られました。RSTP同期メカニズムにより、切り替え時間を大幅に高速化することができました。
RSTP同期のイメージ
スイッチがジャンケンをするイメージを持ってください。例えば、以下のような構成を考えます。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/B25BC248-4722-4FBA-8722-CE8DBF14194D.png)
SW1とSW2それぞれの電源を起動します。起動直後は、まだ、周りのスイッチの情報がわからないため、ルートブリッジは自分自身だと思っています。 そこで、SW1とSW2間でルートブリッジ関連の情報をお互い出し合い、ジャンケンをします。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/B1834EAB-8B97-4F92-B6D4-75FFCDD87A39.png)
この勝負はSW1の勝ちです。SW2は自身の他のポートをDiscarding状態にして、SW1へ負けました・・・と送ります。 RSTPでのDiscarding状態はSTPでのブロッキング状態と似ており、データ転送を行わない状態を示します。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/E6141469-CA25-405C-BE01-4C0F8D758C2C.png)
ここで、負けた方のポートがルートポート、勝った方のポートは指定ポートになります。 次に、SW2のDiscarding状態のポートで対向のスイッチと同じようにジャンケンをし、これを順次実行していきます。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/F6D0AF27-4DAF-4B03-AE74-472A9CE5524B.png)
これがRSTP同期のイメージです。 実際の動作は、ルートブリッジ情報をBPDU提案(プロポーサル)としてお互いのスイッチが投げ合い、条件の悪い方が、BPDU同意(アグリーメント)を送ります。
RSTP同期の構成
以下のような構成を考えます。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/6DDBEEB9-34DA-42C8-A703-6ACEC4906010.png)
SW1とSW2間のRSTP同期
まず、SW1とSW2間でRSTP同期を見ていきます。SW1、SW2それぞれが自身をルートブリッジとして、 お互いのBPDU提案(プロポーサル:Proposal)を送信します。自分自身がルートブリッジだと思っているので、コストはゼロです。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/CEA7D8C5-8DBB-496C-81CE-2D4ED9DA0B80.png)
SW1の優先度が4096でルートブリッジになる設計しているので、SW1が勝ちます。 その場合は、SW2は、SW4との接続など他のポートを一旦、Discarding状態にして、SW1にBPDU合意(アグリーメント:agreement)を送信します。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/1C263749-78F6-4634-804E-F2EA86EE6CD0.png)
BPDU アグリーメントを受信したポートは指定ポート(DP)、BPDU アグリーメントを送信したポートはルートポート(RP)になります。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/0EB88877-4C59-42F1-9A75-4BE1DB27B936.png)
SW2とSW4間のRSTP同期
SW2とSW4間でRSTP同期を見ていきます。SW2は、SW1がルートブリッジだと合意しています。 SW4はまだ、自分自身がルートブリッジだと思っています。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/666B6363-931E-4289-A821-1275029DE8B3.png)
SW2とSW4でBPDUプロポーサルを送り合い、SW2のBPDUの方が条件が良いため、SW4がBPDU アグリーメントを送信します。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/EB72043C-D9EA-4DD3-811D-2682ABF6BA0F.png)
BPDU アグリーメントを受信したポートは指定ポート(DP)、BPDU アグリーメントを送信したポートはルートポート(RP)になります。
SW1とSW3間のRSTP同期
上の同じ動きをします。最終的には、SW1〜SW3間のポートの役割は以下のようになります。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/E7C63389-C5B3-42B9-BA11-3AC5EEE89417.png)
SW3〜SW4間のRSTP同期
最後にSW3とSW4のRSTP同期を見ていきます。 SW3、SW4それぞれ、BPDUプロポーサルを送信します。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/04837A94-87A4-453D-ADC7-B425C4DEFBFC.png)
この場合、SW3のBPDUの方が条件が良いため、SW4がBPDU アグリーメントを送信するように見えますが、ここではBPDUアグリーメントは送信しません。
BPDUアグリーメントを送信したポートは必ずルートポートにならないといけません。SW4では、Fa0/24ではなく、Fa0/23の方がポート識別子が小さいため、ルートポートになります。そのため、BPDUアグリーメントを投げず、無視します。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/350EEB7B-3925-4E00-9882-129B3D5868E1.png)
SW3から見ると、BPDUプロポーサルを送信しているのに、アグリーメントが返ってきません。そのため、SW3はSW4をRSTPに対応していないスイッチなんだと解釈し、通常のSTPのポートとして、動作します。
結局、SW3〜SW4間は通常のSTPと同じような動作となります。
SW3〜SW4間では、指定ポートはSW3側になり、30秒(Discarding:15秒+Learing:15秒)後に、転送状態になります。SW4側はDisgarding状態(ブロッキング状態)であり、RSTPでは、2番目のルートポートの候補という意味で、オルタネートポート(alternate port)と呼ばれます。
![](https://hirotanoblog.com/wp-content/uploads/2020/07/4670567B-E98E-46FC-A40C-68DE5616E52B.png)
SW3〜SW4間のリンクは通常STPのように30秒時間がかかりますが、それ以外のポートは瞬時にポートを転送状態に推移させます。
結局、SW3〜SW4間のリンクはSW4がDisgarding状態であるため、通常は使われず、転送状態が遅れても問題にはなりません。
また、RSTPのBPDUプロポーサル、BPDUアグリーメントはスイッチが1対1(point-to-point)で接続されている必要があります。
最後までお読み頂きありがとうございました。
コメント