【Cisco】 STPとは
STP(Spanning Tree Protocol)
ネットワーク内のループを防ぐことでブロードキャストストームを防ぐために使用されるプロトコル。
ブロードキャストストーム
大量のブロードキャストパケットがネットワーク上を循環し続ける現象。ブロードキャストパケットの急増によってネットワークの帯域幅が消費され、ネットワークパフォーマンスが大幅に低下する。
ルートブリッジ
スパニングツリーの中心に位置するスイッチで、ネットワーク上の他のスイッチとの通信の起点となります。ルートブリッジは、各スイッチが持つブリッジID(BID)に基づいて選出されます。ブリッジIDは、スイッチの優先度(デフォルトは32,768)とMACアドレスから構成され、最も低いBIDを持つスイッチがルートブリッジになります。
ルートポート
ネットワーク上の非ルートブリッジスイッチ(ルートブリッジ以外のスイッチ)が、ルートブリッジへの最短パスを持つポートです。ルートポートは、パスコストを最小にするように選ばれます。パスコストは、リンク速度に基づいて計算され、低速なリンクは高いコストが割り当てられます。各スイッチは、ルートブリッジへの最短パスを維持するために、1つのルートポートを持ちます。
指定ポート
スパニングツリー内の各ネットワークセグメント上で、他のスイッチとの通信を担当するポートです。指定ポートは、ルートポートと同様に、パスコストが最小になるように選ばれ
STPの流れ
ルートブリッジ選出
全てのスイッチから送られるBPDU(Bridge Protocol Data Unit)フレームを使用して、最も優先度の高いスイッチをルートブリッジとして選出します。優先度とMACアドレスの組み合わせで選出されます。
ルートポート選出
各スイッチは、ルートブリッジまでのコストが最小となるポートをルートポートとして選択します。コストは、伝送速度に基づく値です。
指定ポート選出
各セグメント上で、最もルートブリッジまでのコストが低いスイッチが指定ポートを選出します。指定ポートは、そのセグメントからルートブリッジへのパスを提供します。
ブロックされたポート
ルートポートと指定ポート以外のポートは、ブロック状態に遷移します。これにより、ループが形成されることを防ぎます。
ポート状態の遷移
Disabled
ポートが管理上の理由でシャットダウンされている状態。
Blocking
この状態では、ポートはスパニングツリーの構築に参加していますが、データフレームの転送は行われません。ポートはBPDU(Bridge Protocol Data Unit)を受信し、スパニングツリーの情報を更新します。ブロッキング状態にあるポートは、ループを回避するためにブロックされています。
Listening
ポートがルートブリッジや指定ポートに選出される可能性がある場合、リスニング状態に遷移します。この状態では、ポートはBPDUを受信し、送信しますが、データフレームの転送は行われません。リスニング状態は、スパニングツリーが安定化するまでの待機時間であり、通常は15秒(フォワーディングディレイタイマー)です。
Learning
リスニング状態の後、ポートはラーニング状態に遷移します。この状態では、ポートは依然としてデータフレームの転送を行いませんが、MACアドレステーブルへの学習が開始されます。ラーニング状態も通常15秒間(フォワーディングディレイタイマー)続きます。
Forwarding
ラーニング状態が終了すると、ポートはフォワーディング状態に遷移し、データフレームの転送が開始されます。この状態では、ポートはBPDUの受信と送信を続ける。
障害からの復旧例
スイッチ4つ構成で仮に1つのスイッチが障害を起こした場合を想定
スイッチAとスイッチBが接続
スイッチAとスイッチCが接続
スイッチBとスイッチCが接続
スイッチBとスイッチDが接続
スイッチCとスイッチDが接続
[Switch A]
/ \
[Switch B] [Switch C]
\ /
[Switch D]
スイッチAがルートブリッジです。スイッチBとスイッチCのポートはルートポートになります。スイッチDについては、スイッチB経由かスイッチC経由のいずれかが指定ポートになります。
収束
障害発生後、スイッチCはルートブリッジからのBPDUを受信できなくなります。Max Age(20秒)の時間経過後、スイッチCは現在の情報が古くなったと判断します。
スイッチCはスイッチD経由でスイッチA(ルートブリッジ)との接続を確立しようとします。このとき、スイッチCとスイッチDは、Listening状態(Forward Delayの15秒)とLearning状態(さらにForward Delayの15秒)を経る必要があります。
BPDUの伝播時間は、ネットワーク機器やリンクの速度に依存しますが、通常は数ミリ秒から数十ミリ秒程度です。ただし、この時間は状況によって異なります。
したがって、収束までの時間は、おおよそ 20秒(Max Age)+ 15秒(Forward Delay: Listening)+ 15秒(Forward Delay: Learning)+ BPDU伝播時間 となります。この場合、合計約50秒(+BPDU伝播時間)が収束までにかかる時間となります。
関連機能
PortFast
主にエッジポート(エンドデバイスに接続されたポート)に適用される機能で、ポートがすぐにフォワーディング状態に遷移することを許可します。通常、STPがポートの状態を調整する際には、リスニング、ラーニング、フォワーディングの各状態を経由するため、遅延が発生します。PortFastを有効にすることで、エッジポートがすぐにフォワーディング状態になり、エンドデバイスとの通信が迅速に開始されます。
PortFastは、ネットワークにループが発生するリスクが高まる。スイッチがSTPによるループ防止メカニズムをバイパスしてしまうためスイッチ間の接続には適用しない。
BPDUガード
エッジポートでの不正なBPDU(ブリッジプロトコルデータユニット)の受信を検出するための機能です。通常、エッジポートからBPDUが送信されることはありません。BPDUガードが有効なポートでBPDUが受信されると、スイッチはそのポートをエラーディスエイブル状態にし、管理者が問題を解決するまで通信をブロックします。これにより、ネットワークトポロジに予期しない変更が発生することを防ぎます。
ルートガード
不適切なルートブリッジの選出を防止するための機能です。ルートガードが有効なポートでは、スイッチはスーペリアBPDU(優先度が高いBPDU)を受信した場合、ポートを一時的にリスニング状態に戻します。これにより、不適切なルートブリッジがネットワークトポロジに影響を与えることを防ぎます。ルートガードは、ネットワーク内のルートブリッジ選出を制御するために使用されます。