STP【STPに関する機能】

CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

前回投稿記事
-
こちらの [STP【STPの概要】](https://qiita.com/k-yasuhiro/items/b6f5ceb6a03a6ebd532d)投稿記事の続きです。

2.STPに関する機能
-
#### 2-1.PortFast
PortFastとは、Cisco独自のSTPにおける拡張機能の事です。
PortFastが設定がされているポートは、接続された場合にすぐにリンクアップ（フォワーディング状態に）
する事が出来ます。


##### ■ 2-1-1.ポートの状態移行にかかる時間
STPでは、コンバージェンス ※1 する迄に 30 ~ 50秒 ※2 程度掛かってしまいます。
コンバージェンスする迄に遷移するリスニングやラーニングの状態の間は、
データの転送をしない（BPDUは送受信されますが）為、その間は通信不可の状態に
なってしまいます。

障害から復旧する迄に掛かる時間が長過ぎると、アプリケーションやプロトコルによっては、
サービスが完全にダウンしてしまったり、そもそも現在のネットワークで事情からすると50秒は
やや長過ぎるかもしれません。

そこでより高速にコンバージェンスさせる必要があり、Ciscoが独自でに高速化する方法を
考えたのが <font color="red"><b>PortFast</b></font>という技術になります。

>
※1 コンバージェンスとは、全てのスイッチでポートの役割が決定し収束した状態
※2 最大エージタイマー（20秒）経過後 → リスニング状態からラーニング状態遷移（15秒）
→ ラーニング状態からフォワーディング状態遷移（15秒）という流れでポート状態が整う迄に
50秒程の時間が掛かる

##### ■ 2-1-2.PortFastとは?
そもそも、ルータが接続しているポートやPCが接続されているポートは最数的にフォワーディング状態に
なり、ブロッキングの状態になることはありません。なので、いちいちトポロジを再計算して状態遷移を
行うのは時間の無駄です。そこで、PCやルータなどのデバイスが接続されているポートは
すぐにフォワーディング状態にして、ポートのアップ/ダウンをトポロジの変化とみなされないように
すれば良いという考え方から生まれたのが PortFastです。

PortFastを設定を行う事で、<font color="red">リスニングとラーニングの状態をスキップし、
すぐにフォワーディング状態になり、通信が可能</font>になります。
すなわち、クライアントPC間やサーバ間ではすぐに通信出来るようになります。

只、PortFastはPCなどが接続され、<font color="green">フォワーディング状態になる事が確定しているポートのみに
設定します。スイッチ間のリンクでは、ループの原因になってしまう可能性があるので設定
してはいけません。</font>

<br>
#### 2-2.BPDUガード
BPDUガードとは、PortFastが設定されているスイッチポートでBPDUを受信した時や個別の
インターフェイスでBPDUを受信した時、そのポートを<font color="red"><b>エラーディーゼブル状態</b></font>にする機能です。
<font color="green">エラーディーゼブル状態のポートはシャットダウンされる為、データの送受信が出来なくなります。</font>
復旧させるには管理者のコマンドが必要になります。

BPDUガード機能は、BPDUを受け取るべきでないPortFastの設定されているようなポートが
BPDUを受け取る事によるトラブルを防ぐ為に利用します。

例えば、ループする心配がないポートに対してPortFastを有効にすると、
すぐにフォワーディング状態に移行させる事が出来ます。しかし、PortFastが有効なポートに、
他のスイッチ等が接続されるとループ構成となってしまう可能性があります。
PortFastのポートの先がループ構成になると、スパニングツリーの計算を正常に行う事がで出来ずに、
フレームがループする危険性があります。
このような事態を防ぐ為に利用しています。
<img width="500" alt="ファイル名" src="https://i.gyazo.com/d52d0ef8afac5e0832615d8c38658831.png">

#### 2-3.ルートガード
ルートガードとは、設定しているポートにルートブリッジよりも上位のBPDUが送信されてくると、
ポートを<font color="red"><b>ルート不整合（root-inconsistent）</b></font>という状態にし、新たに導入されたL2機器がルートブリッジに
なる事を防止する機能です。下位のBPDUが送信されて来た場合は特に何もしません。
>
BPDUガードとルートガードとの違い
⚫️ BPDUガードは、上位のBPDU、下位のBPDUに関わらずBPDUを受信すると
エラーディーゼブル状態へ遷移します。それに対して、ルートガードは上位のBPDUが送信されてくると
ポートをルート不整合にしますが、下位のBPDUが送信されて来た場合は何もしません。
>
⚫️ BPDUガードのエラーディーゼブル状態は、ポートをシャットダウンし復旧させるには管理者の
コマンドが必要になります。それに対して、ルートガードは一時的に通信不可状態にするだけであり、
上位のBPDUを受信しなくなると自動的に回復してポートエラー状態は解消されます。

以下の図の通り、ルードガードを実装していれば、例え優先度の高い機器が接続されても
ルートブリッジになる事はありません。
<img width="750" alt="ファイル名" src="https://i.gyazo.com/89551b3d8176afe317febc39c8f7b0e1.png">

ルートガードが有効になっている場合、上位のBPDUが送信されて来たとしても
ルート不整合となり、ブロッキングされます。また上位のBPDUが送信されてこなくなれば
通常のポートに戻るというが、ルートブロックになります。

<br>
#### 2-4.RSTP

##### ■ 2-4-1.RSTPとは?
RSTP（Rapid Spanning Tree Protocol）は、<font color="green"><b>STPを改良してコンバージェンス迄の時間を数秒迄に
短縮させた</b></font>プロトコルです。STPは <font color="green">IEEE802.1D</font>で標準化されて、RSTPは<font color="red"><b>IEEE802.1W</b></font>で標準化された
プロトコルです。STPと同様に、RSTPではツリーを作成する為に、ルートブリッジの選出 
→ ルートポートの選出 → 指定ポートの選出 → 非指定ポートの選出を、同じアルゴリズムで行いますが
ポートの役割やスターテスがSTPと異なります。

RSTPの目的は、STPと同様にブロードキャストストームをを防ぐ事です。また、
RSTPはSTPの拡張である為、RSTPとSTPは混在させて動作する事が可能になります。

##### ■ 2-4-2.ポートの役割
STPでは、ポートの役割はルートポート、指定ポート、非指定ポートの3つがありましたが、
RSTPでは、<font color="green"><b>非指定ポートをさらに2つに分割</b></font>して役割を与えます。
それが、<font color="red"><b>代替ポート</b></font>と<font color="red"><b>バックアップポート</b></font>です。

▶︎ 代替ポート
代替ポートは、<font color="red"><b>ルートポートの予備</b></font>になります。
下記の画像で、スイッチのポート①がルートポート、ポート②が非指定ポートになります。
ポート②はブロックされていますが、スイッチではルートポートの次に上位のBPDUを受け取る為、
代替ポートになります。なので、ルートブリッジとスイッチの間で障害が起きた場合、ポート②が
すぐにルートポートとして代用されフォワーディング状態に遷移します。
<img width="550" alt="ファイル名" src="https://i.gyazo.com/204ea453ec28ae56dfedfb9581443a0f.png">

▶︎ バックアップポート
バックアップポートは、<font color="red"><b>指定ポートの予備</b></font>になります。
バックアップポートは、ブロックされており、複数の接続を持つポートが該当します。
スイッチには、STPが対応していないリピータハブの機器が接続されています。そこで、スイッチと
リピータハブの間でループが発生しないようにするには、スイッチでブロックするポートを選出
しなければなりません。なので、ポート③を指定ポート、ポート④をバックアップポートとして、
ポート③がダウンするとポート④がバックアップポートになります。
<img width="550" alt="ファイル名" src="https://i.gyazo.com/97f51193a1ac8437fa9f53956a7e834e.png">

##### ■ 2-4-3.ポートのステータス
STPでは、ディセーブル、ブロッキング、リスニング、ラーニング、フォワーディングという
5つのステータスがあります。このうち、ディセーブル、ブロッキング、リスニングでは、
<font color="red"><b>ディスカーディング</b></font>というステータスに統合しています。

下記の画像はSTPとRSTPのステータスの違いを纏めたものです。
<img width="700" alt="ファイル名" src="https://i.gyazo.com/dde9eb6afcefd7f9e34915bba204d168.png">

##### ■ 2-4-4.BPDUのやり取り
STPでは、ルートブリッジから2秒事にBPDUが送信され、各スイッチがそれぞれを受け取り、
そのBPDUを基に下流のスイッチにBPDU送信されます。その為、ルートブリッジから何台分
離れているかを考える必要があり、最大エージタイマーや転送遅延タイマーが用意されています。

タイマーに依存した切り替えしか出来ない為、そこでRSTPでは、<font color="green"><b>タイマーによる管理を行わず、
スイッチ間で直接やり取りして役割を決定する仕組み</b></font>を採用しています。
ルートブリッジからBPDUを受け取った時に下流に送信するのではなく、BPDUを受け取ったか
どうかに関係無くそれぞれのスイッチがBPDUを作成して下流のスイッチの送信します。

その為、BPDUが届かなくなった時に、隣のスイッチとの間で問題が発生した事を早い段階で
判断出来ます。

##### ■ 2-4-5.ルートの切り替え
ルートを切り替える場合には、<font color="red"><b>プロポーザル</b></font>と<font color="red"><b>アグリーメント</b></font>をやり取りする事で、
役割がすぐに決定します。

先ず、スイッチ間の接続が行われると各スイッチは、自身のポートを指定ポートとしプロポーザル
というBPDUを送信します。BPDUにはブリッジIDやルートパスコスト情報があります。
<img width="600" alt="ファイル名" src="https://i.gyazo.com/e5b6630c40fe3f8d3cdfdfec296e18a8.png">

受信したBPDUの中身からブリッジIDやルートパスコストの情報を比較して、どちらのスイッチが
送信したBPDUが上位かが分かります。相手が上位のBPDUだった場合、下位のスイッチは
アグリーメントというBPDUを送信して相手が指定ポートになる事に同意します。
上位のスイッチは何もしません。
<img width="600" alt="ファイル名" src="https://i.gyazo.com/5dc6f1bea0153fda8917c3a0891b9b29.png">

このようなSTPも違いによってコンバージェンス迄の時間が短縮されます。ただし、
高速に切り替えられるのは、スイッチが1対1（ポイントツーポイント ※3）で繋がっている場合です。
相手のスイッチがSTPで動いていたり、ハブを介して接続になっていたりする所では、通常の
STPの時間でコンバージェンスします。
>
※3 ポイントツーポイントは、全二重で動作するポートで、スイッチ間が1対1で直接接続される、
高速収束可能なリンク（下記の画像参照）
<img width="200" alt="ファイル名" src="https://i.gyazo.com/80b271e244cef3a425dac2ea125cc794.png">

##### ■ 2-4-6.エッジポート
RSTPでは、PCなどが接続するポートを<font color="red"><b>エッジポート</b></font>、スイッチを接続するポートを<font color="green"><b>非エッジポート</b></font>と
して扱います。エッジポートは即座にフォワーディング状態に遷移します。Cisco製のスイッチでは
PortFastを有効にしたポートをエッジポートになります。

<br>
#### 2-5.VLANとSTPの組み合わせ

##### ■ 2-5-1.CST
CST（Common Spanning Tree）とは、複数のVLANが存在するスイッチドネットワークでも
1つのトポロジー構成を考える方法です。

CSTでは、VLANの数に関係なく全体で１つのトポロジーとなる為、VLANごとに最適のルートの通信を
する訳ではありません。下図はCSTによる構成です。VLANごとにスパニのングツリーのトポロジーが
ある訳ではないので、下図通り複数のVLANがあるとしても、VLAN10のホストA、VLAN20のホストB共に
PCのトラフィックはセグメント 1 経由で伝送されます。
<img width="600" alt="ファイル名" src="https://i.gyazo.com/c76468f0904451b29b372de78aca06cb.png">

##### ■ 2-5-2.CSTの特徴
CSTの特徴として、下記のものがあげられます。

⚫️ 複数のVLANを 1つのSTPインスタンスで管理する為、所属するVLANによって通信が効率の悪い
　 ルートを通る必要がある
⚫️ STPの構成が１種類になる為、ユーザトラフィックが特定のリンクに集中してしまう。
⚫️ STPインタスタスを 1つだけ記憶しておけばいいので、メモリの負荷は少ない。
⚫️ BPDUが 1種類で済む為、スイッチ間のトラフィックが少ない。


##### ■ 2-5-3.PVST＋
PVST+ではVLANごとにSTPトポロジーを構成できる為、VLANごとの最適のルートの通信を
する事が可能です。スイッチのプライオリティをVLAN事に設定出来る為、各VLANで最適と
思われるスイッチをルートブリッジにする事が可能です。
ルートブリッジの位置が変わるとブロックするポートも変わる為、VLANごとに効率の良いルートを
利用する事が可能になります。

下図はPVST＋による構成では、1台のスイッチでVLANごとにブリッジプライオリティを設定出来る為、
SWAがVLAN10のルートブリッジ、SWBがVLAN20のルートブリッジになる事が出来ます。
<img width="600" alt="ファイル名" src="https://i.gyazo.com/b7547a143b665a4d23be9fa5726fff0e.png">

##### ■ 2-5-4.PVST＋の特徴
PVST＋の特徴として、下記のものがあげられます。
⚫️ 複数のVLAN事にSTPインスタンスを管理する為、各VLANの通信が最適と思われるルートを
　 通る事が出来る
⚫️ VLAN事にSTPの構成が異なる為、ユーザのトラフィックが分散される。
⚫️ STPインスタンスを複数記憶しなければならないので、メモリへの負荷は大きい。
⚫️ BPDUがVLAN事に作成される為、スイッチ間のトラフィックが増加する。

<br>
## 関連投稿記事
[STP【STPに関する設定と確認】](https://qiita.com/k-yasuhiro/items/0a495df9b522fa5412b7)