スパニングツリープロトコル
ネットワークは、ループが発生すると通信不可になってしまうため、回避する技術があります。
本項では、スパニングツリープロトコル(STP:Spanning Tree Protocol)について説明します。
スパニングツリープロトコルとは
LANスイッチ間でループを形成した場合、ARP(Address Resolution Protocol)などすべての装置に送る必要があるフレームは、全インターフェースに送出されるため永遠に回り続けます。
減ることがないためすぐ大量になり、LANスイッチの許容量を超えてフレームを処理しきれなくなるため、通信がほとんどできない状態になります。これを、ブロードキャストストームと言います
STPを設定すると、ループを形成した場合でも通信しないインターフェースを設けることでブロードキャストストームになりません。
つまり、STPを利用すればループを防止できます。
STPは、IEEE802.1Dで規定されています。
STPのしくみ
STPは、BPDU(Bridge Protocol Data Unit)というフレームをLANスイッチ間で送受信して、設定で優先度の高く設定されたLANスイッチをルートブリッジに決めます。このBPDUのやり取りの中でループを検出し、どちらのインターフェースがルートブリッジにとって最短かを判断し、フレームを転送するフォワーディング、転送しないブロッキングというインターフェースを決めます。
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を透過できるLANスイッチも出てきています。BPDUが透過できればSTPをサポートするLANスイッチでブロッキングを作れるため、通信がループしません。
このように、STPを構成する際に間にSTPをサポートしない機器を接続する場合、BPDUを透過できるか確認が必要です。
PVST+
STPは、通常すべてのVLANでルートブリッジ、フォワーディング、ブロッキングなどが共通ですが、PVST+(Per VLAN Spanning Tree Plus)ではBPDUにタグVLANを利用し、VLANごとにBPDUを送受信することでVLAN単位にSTPを構成できます。
このため、VLANごとに通信経路を変えることができます。
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はVLAN10〜30、グループ2はVLAN40,50などといった設定をします。また、グループごとにBPDUを送信するのではなく、1つのBPDUで複数グループの情報を送信できます。
MSTPは、RSTPの高速切り替え機能も合わせ持っています。
MSTPの動作を詳しく知りたい方は、MSTP詳細をご参照ください。
STPの混在
上記で説明したSTPは混在も可能です。例えば、通常のSTPとPVST+ではLANスイッチ間がポートVLANになっていれば正常にSTPを構成できます。
PVST+はVLANごとにBPDUを流しますが、VLANが1つの場合は通常のSTPと同じで1つしか流さないためです。
逆に、タグVLANの場合は正常にSTPが構成できない場合があります。
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の設定方法を説明しています。