# スパニングツリープロトコル(STP) ## 概要 ネットワーク内にループ構成が生じることを防止することで[[ブロードキャストストーム]]を回避する古典的手法。 具体的には、ループ構成となった経路の一部をフレームが流れないようブロックすることで、ループ構成を回避した論理的なネットワークを構築する。このとき、ネットワークはあるひとつのブリッジを根(ルート)とする木(ツリー)構造をなす。 また、わざとループ構成にしたうえでSTPを有効にすることで、障害時に自動的に迂回路経路に切り替わるようになり、経路の冗長性を確保できるという利点もある。 ## 詳細 ### 基本的な仕組み 1. ルートブリッジの選出 - ツリーの根となるスイッチである**ルートブリッジ**を選出する。これは最小のブリッジID(プライオリティ+[[MACアドレス]])を持つ機器が選ばれる。 2. パスコストの計算 - 各スイッチのポート毎に、ルートブリッジまでの**パスコスト**(通信経路のコスト)を計算する。パスコストは一般的にリンクの帯域幅に基づいて計算され、帯域幅が大きいほどコストは低くなる。 3. ポートの役割の決定 - 各スイッチは自身の各ポートに対してルールに従って以下の役割のうちいずれかを割り当てる: - **ルートポート** - そのスイッチにおいてルートブリッジまでの経路コストが最も小さいポート。 - スイッチごとに必ず1つだけ存在する(ルートブリッジ自身は除く)。 - **代表(指定)ポート** - 各セグメントごとに必ず1つ選ばれるポート。 - 基本的にはパスコストが小さい方のポートが代表ポートとなる。 - **ブロッキング(非指定)ポート** - 上記のいずれにも当てはまらないポート。 - ループ防止のために転送を行わず、BPDUの受信だけを行う。 4. BPDUの交換 - スイッチは**ブリッジプロトコルデータユニット**(Bridge Protocol Data Unit, **BPDU**)という特別なメッセージを一定時間ごとに交換しネットワークのトポロジ情報を共有する。 - BPDUには、ルートの識別子、パスコスト、送信スイッチの識別子などが含まれる。 5. アクティブトポロジの維持 - ネットワークの変更があった場合はトポロジを再計算し、ループフリーな状態を維持する。 ### デメリットと改良プロトコル STPには、以下のデメリットや問題があり、それらに対応するための改良プロトコルが存在する。 - PCを接続しても経路確定まで数十秒の待ち時間がかかる。 - **RSTP**(Rapid STP)は通信経路の切り替わり時間が短くなるよう改良されており、かかる時間は数秒ほどに短縮される。 - [[VLAN]]を構成する環境では上手く対応できない。 - **MSTP**(Multiple STP)は複数のVLAN毎にスパニングツリーを構成するプロトコルとして改良されている。 ## 関連ノート - [[📘『マスタリングTCP/IP 入門編』]] - [[📘『Pythonで動かしながら学ぶコンピュータネットワーク』]] ## 関連リンク - [スパニングツリープロトコル - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%91%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%84%E3%83%AA%E3%83%BC%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB)