スパニングツリープロトコル

スパニングツリープロトコル（、STP）は、LAN内でループ構成を回避するためのデータリンク層の通信プロトコルである。IEEE 802.1Dで定義、および規格化されている。
概要.
本プロトコルはDECで働いていたラディア・パールマンによって発明されたアルゴリズムを基礎としている。LANを点と線によって構成されるグラフとみなし、LAN接続の一部をあえて利用禁止とすることでスパニング木を構成する。すると、木構造はループ（閉路）を持たないことから、LAN内部でのループが回避されたことになる。
STPの標準にはIEEEとDECが制定した2つの異なる規格が存在するが、コンピュータネットワークにおいて一般的に利用されるのはIEEEのものである。これらの間に互換性はなく、両方のSTPを同時に運用した場合は正常に動作しない。
スパニングツリーの必要性.
本プロトコルの本質的な必要性は、LANにおけるループ構成を避けることにある。
ネットワークにおいてループ構成を構築した場合、いくつかの問題が発生する。第一に、スイッチの間でブロードキャストフレームがループすることで、ブロードキャストストームと呼ばれる現象が起き、CPUリソースと帯域幅を消費する。そして第二に、自分が発信したはずのフレームが別の場所から戻ってくる為、スイッチが行うMACアドレステーブルの学習が正しく動作しない。
本プロトコルを利用すれば、ネットワーク利用者が不用意にループを構成した場合もスイッチが自律的にループを解消し、上記のようなネットワークの不正動作を防ぐことが出来る。
また、本プロトコルは実質的な冗長化プロトコルとして使われることがある。
ネットワークデザインにおいては、重要なパスが故障した場合の代理として予備の(冗長な)リンクを作ることが望ましい。しかしある2点間の経路を複数作ると、その2点間にループが構成されてしまい、LANが正常に動作しない。ここで本プロトコルを用いることで、リンクの冗長化を実現しつつループ構成を防ぐことができる。
スパニングツリープロトコルの動作.
本プロトコルは、BPDU(bridge protocol data unit)と呼ばれるフレームのやり取りによって、木構造の根となるブリッジ（ルートブリッジ）を定める。その上でさらにBPDUを交換することでルートブリッジまでの仮想的な距離をしらべ、その情報をもとに不要な経路を遮断する。
BPDUはブリッジID（ブリッジの優先度とMACアドレスで構成）とパスコスト（通信速度などを基に設定）から成り立つ。
スパニングツリープロトコルのパラメーター.
タイマー.
スパニングツリープロトコルは、経由するスイッチの最大数が7台の構成を基準に各種タイマーが設定されている（標準値）。
パスコスト.
ルートブリッジまでの距離（ルートブリッジへの近さ）を求めるため、リンク速度ごとにパスコストの初期値（推奨値）が決められている。16bit版のパスコスト値はSTP(802.1D)で使用され、RSTPでは32bitが使われることが多い。
スパニングツリープロトコルの発展形.
スパニングツリーの動作上の欠点として、収束までの時間が長いことや、VLANを構成する環境での動作が難しいことが挙げられる。収束までの時間短縮を図った規格として、IEEE 802.1wにラピッドスパニングツリープロトコル（Rapid Spanning Tree Protocol、RSTP）が、またVLAN環境での動作を考慮した規格として、IEEE 802.1sにマルチプルスパニングツリープロトコル（Multiple Spanning Tree Protocol、MSTP）が、それぞれ規定されている。なお、IEEE 802.1s は後に IEEE 802.1Q に統合されている。
RSTPによって、通常のSTPが(ネットワークの大きさにもよるが)40〜50秒かかる収束時間を、数秒に抑えることができる。
シェアードリンクとポイントツーポイントリンク.
スパニングツリープロトコルのトポロジーは、ハブの有無によって「シェアードリンク」と「ポイントツーポイントリンク」に大別される。ハブを介してスイッチが複数接続しているのがシェアードリンク、ハブを介さず直接スイッチ同士で接続されているのがポイントツーポイントリンクである。