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

ネットワークは、ループが発生すると通信不可になってしまうため、回避する技術があります。

本項では、スパニングツリープロトコル(STP:Spanning Tree Protocol)について説明します。

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

LANスイッチ間でループを形成した場合、ARP(Address Resolution Protocol)などすべての装置に送る必要があるフレームは、全インターフェースに送出されるため永遠に回り続けます。

LANスイッチ間で通信がループする例

減ることがないためすぐ大量になり、LANスイッチの許容量を超えてフレームを処理しきれなくなるため、通信がほとんどできない状態になります。これを、ブロードキャストストームと言います

STPを設定すると、ループを形成した場合でも通信しないインターフェースを設けることでブロードキャストストームになりません。

通信しないインターフェースを作ってループしない例

つまり、STPを利用すればループを防止できます。

STPは、IEEE802.1Dで規定されています。

STPのしくみ

STPは、BPDU(Bridge Protocol Data Unit)というフレームをLANスイッチ間で送受信して、設定で優先度の高く設定されたLANスイッチをルートブリッジに決めます。このBPDUのやり取りの中でループを検出し、どちらのインターフェースがルートブリッジにとって最短かを判断し、フレームを転送するフォワーディング、転送しないブロッキングというインターフェースを決めます。

BPDUをLANスイッチ間で送受信してルートブリッジやブロッキングが決まる。

LANスイッチの起動直後は、ループを発生させないようにすべてのインターフェースがフレームを転送しませんが、BDPUのやり取りの中でフォワーディングやブロッキングが決まってきます。このため、フレームを転送し始めるまで少し時間がかかります。

また、インターフェースダウンなどを検知すると、ブロッキングからフォワーディングに切り替わり、他の経路を通って通信が可能になります。

フォワーディングに障害があると、ブロッキングがフォワーディングに切り替わって通信が可能になる。

つまり、ブロッキングされているインターフェースはバックアップ経路になっているということです。

パスコスト

経路を決定する時の基準は、ルートブリッジにとって最短かであって、通信にとって最短かではありません。ただし、設定を行うことで優先度を変更し、異なるインターフェースをブロッキングにすることも可能です。この設定は、パスコストと呼ばれます。

パスコストに10を設定した経路と100を設定した経路では、10を設定した経路がフォワーディングになります。

パスコストはインターフェースの帯域が大きいほど、小さな数字がデフォルトで割り当てられています。

【パスコストのデフォルト】
速度 パスコスト
10Mbps 100
100Mbps 19
1Gbps 4
10Gbps 2

ルートブリッジまで複数のLANスイッチがある場合、パスコストはLANスイッチを経由するごとに加算されます。この合計を、ルートパスコストと呼びます。このため、すべて同じパスコストを設定した場合、ルートブリッジまで3台のLANスイッチがある経路と2台のLANスイッチがある経路では2台の経路がフォワーディングになります。

なお、最近の機種の多くはデフォルトでロングパスコストと言って、大きな数字が割り当てられています。

【ロングパスコストのデフォルト】
速度 パスコスト
10Mbps 2,000,000
100Mbps 200,000
1Gbps 20,000
10Gbps 2,000

ロングパスコストとそうでないパスコストが混在している場合、どちらかに合わせる必要があります。

STPは、LANスイッチで有効にするだけで自動でルートブリッジが決定されて、デフォルトのパスコストから経路が判断されループを防止してくれます。このため、デフォルトで有効になっているLANスイッチも多くあります。つまり、その場合は何もしなくてもループは防止できます。

ネットワークの規模が大きくなってくると、ルートブリッジを変えたり、パスコストを設定して経路を変えたりする必要が出てきます。その場合、もう少し動作の内容を理解している必要があります。もし必要な方は、STP詳細も参照してみてください。

STPで困ること

STPではフレームを転送し始めるまで少し時間がかかると書きましたが、これはパソコンなどでDHCP(Dynamic Host Configuration Protocol)を使っている場合、困ります。フレームが転送されないのに、DHCPでやり取りを始めるとIPアドレスなどが取得できない可能性があります。また、サーバーなども起動するとなるべく速く通信可能な状態にする必要がある場合が多いと思います。

このため、パソコンやサーバーが接続されたインターフェースではSTPを無効、もしくは早期に通信開始できるような機能がある場合は有効にすると対応できます。

また、BPDUはMACアドレス「01-80-c2-00-00-00」を宛先としています。これはLANスイッチ間でやりとりすることを前提としているため、LANスイッチで透過しないようになっています。

すべてのLANスイッチがSTPをサポートしていれば透過しなくても問題ありませんが、途中にSTPをサポートしていないLANスイッチがある場合、STPをサポートしているLANスイッチがループを検知できずに通信がループしてしまいます。

STP未サポートでBPDUが透過しないと通信がループする例

このため、最近ではSTPをサポートしていなくてもBPDUを透過できるLANスイッチも出てきています。BPDUが透過できればSTPをサポートするLANスイッチでブロッキングを作れるため、通信がループしません。

STP未サポートでもBPDUが透過できれば通信はループしない。

このように、STPを構成する際に間にSTPをサポートしない機器を接続する場合、BPDUを透過できるか確認が必要です。

PVST+

STPは、通常すべてのVLANでルートブリッジ、フォワーディング、ブロッキングなどが共通ですが、PVST+(Per VLAN Spanning Tree Plus)ではBPDUにタグVLANを利用し、VLANごとにBPDUを送受信することでVLAN単位にSTPを構成できます。

このため、VLANごとに通信経路を変えることができます。

PVST+でVLAN10と20で通信経路が異なる例

VLANごとにBPDUを送信するため、VLANが多くなってくるとLANスイッチが処理できなくなる可能性があります。その場合、VLANごとに通信路を変えたい時は後述するMSTP(Multiple Spanning Tree Protocol)を利用する必要があります。

RSTP

通常のSTPはブロッキングからフォワーディングになるまで数十秒くらい時間がかかり、その間通信ができません。RSTP(Rapid Spanning Tree Protocol)では、場合によっては一瞬で切り替えが可能です。RSTPは、IEEE802.1wで規定されています。

RSTPは、ブロッキングの代わりに代替ポートやバックアップポートを作成します。フォワーディングしているインターフェースに障害があると、代替ポートやバックアップポートが瞬時にフォワーディングを始めるしくみになっているためです。

障害発生時に代替ポートがすぐにフォワーディングに切り替わる例

RSTPは、通常のSTPと似たしくみですが、このように高速に切り替えるしくみを持っています。

また、VLAN単位でRSTPを構成するRapid PVST+もあります。

RSTPの動作を詳しく知りたい方は、RSTP詳細をご参照ください。

MSTP

PVST+はVLANごとにSTPを構成できますが、BPDUがVLANの数流れてそれをLANスイッチが処理する必要があるため、VLANの数が多くなると処理しきれなくなってきます。

このため、VLAN10,20,30をグループ1、VLAN40,50をグループ2などグループ化して、グループ単位でSTPを構成すれば、VLANの数ではなくグループの数分処理すればよいことになり、LANスイッチの負荷が下がります。これをMSTPと言い、IEEE802.1sで規定されています。

MSTPで、グループ1と2で通信経路が異なる例

MSTPは、グル−プ1はVLAN10〜30、グループ2はVLAN40,50などといった設定をします。また、グループごとにBPDUを送信するのではなく、1つのBPDUで複数グループの情報を送信できます。

MSTPは、RSTPの高速切り替え機能も合わせ持っています。

MSTPの動作を詳しく知りたい方は、MSTP詳細をご参照ください。

STPの混在

上記で説明したSTPは混在も可能です。例えば、通常のSTPとPVST+ではLANスイッチ間がポートVLANになっていれば正常にSTPを構成できます。

VLAN1しかなければSTPとPVST+でも構成可能な例

PVST+はVLANごとにBPDUを流しますが、VLANが1つの場合は通常のSTPと同じで1つしか流さないためです。

逆に、タグVLANの場合は正常にSTPが構成できない場合があります。

VLAN1と2があると、VLAN2はBPDUが透過しないため、ブロッキングが作られずに通信がループする。

PVST+はVLANごとにBPDUを流しますが、通常のSTPをサポートしているLANスイッチではタグを利用したBPDUは破棄してしまいます。PVST+側のLANスイッチがブロッキングになる場合、「STPで困ること」で示した通り、途中にBPDUを破棄するLANスイッチがいると通信がループしてしまいます。

また、RSTPとSTP、もしくはRapid PVST+とPVST+で接続した場合、高速切り替えはできませんが、STPを正常に構成できます。

このようにSTPの種類が混在する場合、正常に構成できるパターン、制限があるパターン、構成できないパターンがあるため、可能な限り同じ種類のSTPで統一することが望ましいとは言えます。

関連ページ

応用編「スパニングツリー代替え機能
STPよりも扱いが簡単な代替え機能を説明しています。
応用編「ループ対策
エッジスイッチの配下でループを防止するための、STP以外の対策方法を説明しています。
追補版「BPDUフレームフォーマット
BPDUのフレームフォーマットを説明しています。
設定編「スパニングツリーの設定 - Catalyst
CatalystでのPVST+、Rapid PVST+、MSTPの設定方法を説明しています。