STPは、レイヤー2のイーサネットフレームのループを回避するためのプロトコル。LANスイッチの機能の1つで、IEEE 802.1D規格として標準化されており、異なるベンダーのスイッチ同士でも使える。ネットワークが物理的にループ状になっても、スイッチでSTPが有効なら、論理的にはループのないツリー構成に自動変更する。ネットワークの冗長化と障害回避に使われる。
図のように3つのスイッチを使って通信経路を冗長化しようとすると、経路がループ状になる。このままではネットワーク内で、ブロードキャスト通信のイーサネットフレームを転送し続ける「ブロードキャストストーム」が発生する。その結果、ネットワークの帯域やスイッチのリソースを消費して、ネットワークがダウンする。(図のa)。
STPを使えばこのようなトラブルを回避できる。物理的な冗長構成を維持しながら、スイッチの特定のポートをブロック状態にし、ブロードキャストフレームがループしないようにするのだ(同b)。
STPを有効にしたスイッチ同士は制御フレームをやり取りし、どのスイッチのどのポートをブロック状態にするのかを自動的に決める。図のbでは、スイッチAとつながっているスイッチCのポートをブロック状態にしている。
通常時においては、パソコンからサーバーへのアクセスは、スイッチAとスイッチBを経由する。スイッチAとスイッチBの間の接続で障害が発生したら、スイッチCはブロック状態だったポートを自動的に開放し、スイッチCを経由する経路で通信できるようにするのである(同c)。
またSTPは、突発的なブロードキャストストームを防止するためなど、障害回避の用途にも使われる。不注意でスイッチにLANケーブルの両端を接続してしまった場合などだ。STPを有効にしたスイッチはループを検知すると、自動的にポートの1カ所をブロックし、ブロードキャストストームを防ぐのである。