Wikiwand AI

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

LAN内でループ構成を回避するためのデータリンク層の通信プロトコル From Wikipedia, the free encyclopedia

スパニングツリープロトコル(英語: spanning tree protocol、STP)は、LAN内でループ構成を回避するためのデータリンク層の通信プロトコルである。IEEE 802.1Qで規格化されている[1]。

概要

用途

スパニングツリープロトコル(STP)の最も重要な役割は、LANにおけるループ構成を避けることにある[2]。ネットワークにおいてループ構成を構築した場合、いくつかの問題が発生する。

LAN接続のループ構成例。ブロードキャストストームが発生する。

STPを利用すれば、ネットワーク利用者が不用意にループを構成した場合もスイッチが自律的にループを解消し、上記のようなネットワークの不正動作を防ぐことができる。

STPではグラフ理論のアルゴリズムを応用している。LAN接続のスイッチと配線を、点と線によって構成されるグラフとみなし、接続の一部をあえて遮断することでスパニング木を構成する。すると、木構造は閉路を持たないことから、LAN内部でのループが回避されたことになる。

また、STPは冗長化用途として予備経路の確保に使われることがある。ネットワーク設計では、重要なパスが寸断した場合の予備として冗長なリンクを設けることが望ましい。しかしある2点間の経路を複数作ると、その2点間にループが構成されてしまい、LANが正常に動作しない。ここでSTPを用いることで、リンクの冗長化を実現しつつループ構成を防ぐことができる。

歴史

STPはラディア・パールマンがDEC社員時代に発明したアルゴリズムを基礎としている[3]。主に以下の種類がある。

  • DECオリジナル版 - 1985年に初めて製品実装されたもの。以降のものと互換性なし。
  • 初期STP - 1990年にIEEE 802.1Dで初めて標準化された。
  • RSTP (Rapid STP) - 収束時間短縮版。2001年に IEEE 802.1w で初めて標準化された。
  • MSTP (Multiple STP) - VLAN対応版。2002年に IEEE 802.1s で初めて標準化された。

DEC版と以降の各種IEEE版STPの間に互換性はなく、同時に運用した場合は正常に動作しない。

IEEE版の各種STPはすべて、2014年以降はIEEE 802.1Qに統合されている[1]。この中ではRSTPのアルゴリズムをベースに動作が規定されており、現在LAN接続で一般的に用いられる。RSTPでは、初期STPが木構造を構成するのに時間がかかる欠点を克服しており、(ネットワークの大きさにもよるが)40〜50秒かかる従来の収束時間を数秒に抑えることができる[4]。

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

STPでは、BPDU (bridge protocol data unit) と呼ばれるフレームをスイッチ間でやり取りすることで経路を決定する。なお、以降ではブリッジとスイッチとを同義語として用い、特に断りのない限りRSTPの動作に基づいて記述する。

まず、LAN内の全スイッチがBPDUを送り合い、木構造の根となるスイッチを「ルートブリッジ」として定める。さらに、このルートブリッジとのBPDUの交換で、各スイッチポートのルートブリッジまでの仮想的な距離を「パスコスト」として算出する。これらパスコストをもとに不要な経路を遮断する。

BPDUにはスイッチ固有のブリッジIDと前述のパスコストの累計値が含まれており、以下の手順で経路を決定する[5]。

ポート分類の概観図: 図中のスイッチ枠内の数値はブリッジID。スイッチの各ポートのうちルートブリッジに近い側にRPが振られる。各セグメントa~fにつながるポートのうちRP以外でルートブリッジに近い側にDPが振られる。残ったものはBPとして遮断される。
  1. 各スイッチがBPDUを送り合う。BPDU内のブリッジID値の比較により、最小の値を持つものをルートブリッジとして決定する。
  2. ルートブリッジが再びBPDUを送る。全スイッチは隣接スイッチから来たBPDU内のパスコスト値に自身のパスコストを加算してBPDUで通知する。これによりLAN内の全ポートのパスコストが算出される。
  3. スイッチは、パスコストに基づいて自身の各ポートの役割を以下の3種類に分類する[6](図参照)。
    • ルートブリッジ以外の各スイッチにおいて、最短のパスコストを持つポートをルートポート(Root Port, RP)とし、ルートブリッジに向かう最も近いポートとして扱う。
    • 各セグメントの両端ポートにおいて、短いパスコストのRPを持つスイッチ側のものを指定ポート(Designated Port, DP)とし、ルートブリッジから送り出す最も近いポートとして扱う。
    • その他は予備ポートとする。RPの予備をAP (Alternate Port)、DPの予備をBP (Backup Port)としてそれぞれ割り付ける。
  4. 予備ポート(AP・BP)を閉塞することでスパニング木を形成する。

ブリッジIDは、スイッチに設定された優先度とスイッチのMACアドレスで構成される。パスコストは、リンク速度に対応する値が決められており、一般に高速なほど小さい値を取る。この優先度とパスコストは、スイッチ設定として任意に設定変更できる。

BPDU書式

BPDUのイーサネットフレーム書式を以下に示す[7]。

さらに見る 宛先MAC, 送信元MAC ...
宛先MAC送信元MAC長さLLCヘッダBPDUペイロードFCS
6バイト
01:80:C2:00:00:00
6バイト 2バイト 3バイト
0x424203
35バイト以上 4バイト
閉じる

上記のBPDUペイロードは、以下のようなパラメータを含む[8]。

さらに見る サイズ, データ ...
BPDUペイロード書式
サイズデータ内容
2バイトプロトコルID 0x0000 固定
1バイトバージョン[9] 00: 初期STP, 02: RSTP, 03: MSTP, 04: SPB
1バイトBPDUタイプ[9] 0x00: 初期STP設定, 0x02: RSTP/MSTP/SPB, 0x80: 初期STPトポロジ変更 (Topology Change Notification)
1バイト
(8ビット)
フラグ[10] ビット7 (=0x80): (シェアードリンク環境でトポロジ変更通知に対してACK応答)
ビット6 (=0x40): 同期提案に対して合意応答
ビット5 (=0x20): 送信ポートが転送状態
ビット4 (=0x10): 送信ポートが学習状態
ビット3-2: 送信ポートの役割[11]。0x0C: DP, 0x08: RP, 0x04: AP/BP
ビット1 (=0x02): 対向スイッチへの同期提案
ビット0 (=0x01): トポロジ変更通知
8バイトルートブリッジのブリッジID[12] 前半2バイトは優先度 (デフォルト0x8000)、後半6バイトはMACアドレス。
4バイトパスコスト ルートブリッジまでの累計距離。詳細後述。
8バイト自身のブリッジID 前半2バイトは優先度 (デフォルト0x8000)、後半6バイトはMACアドレス。
2バイトポートID ポート番号。
2バイトMessage Age BPDUがルートブリッジから送付されてからの時間。ホップ数に比例。1/256秒単位。
2バイトMax Age 障害発生扱いするまでのBPDU未受信時間。デフォルト20秒 (1/256秒単位で0x1400)。
2バイトHello Time BPDU送信間隔。デフォルト2秒 (1/256秒単位で0x0200)。
2バイトForward Delay シェアードリンク環境でポート遮断解除を待機する時間。デフォルト15秒 (1/256秒単位で0x0F00)。
閉じる

このうち、ユーザ設定可能な主なパラメータには以下のものがある。

タイマー

以下の各種タイマーが設けられており、標準値として最大7台のスイッチを経由する構成を元にした値が定められている[13]。

  • Hello Time (ハロータイム) - BPDUを送信する間隔。標準値2秒。
  • Forward Delay (転送遅延タイム) - ポートの状態遷移にかかる時間。標準値15秒。4~30秒が設定可能。
  • Max Age (最大エージタイム) - BPDUを受信しなくなってから、障害が発生したと見なすまでの時間。標準値20秒。6~40秒が設定可能。

パスコスト

ルートブリッジまでの距離(ルートブリッジへの近さ)を求めるため、リンク速度ごとに 1 ~ 200,000,000 のパスコスト値が任意に設定できる。 推奨値として下表に示す値が与えられており、リンク速度に反比例する値が規定されている。 世代によって2系統あり、初期STPでは16bit値、後発のRSTP/MSTPでは32bit値のパスコスト値が使用されることが多い。

さらに見る 速度/帯域, 16bit ...
パスコスト値の推奨値[14]
速度/帯域16bit32bit
1Tbps-20
100Gbps-200
10Gbps22,000
1Gbps420,000
100Mbps19200,000
10Mbps1002,000,000
閉じる

シェアードリンクとポイントツーポイントリンク

スイッチ間のリンクは、以下2つの種別によってSTP動作が異なる[15]。

  • シェアードリンク(Shared media LAN) - ハブを介してスイッチが複数接続しているもの。半二重通信など。
  • ポイントツーポイントリンク(point-to-point LAN) - ハブを介さず直接スイッチ同士が全二重通信で接続されているもの。

ポイントツーポイント接続では、1対1接続されたスイッチ2台が提案・合意フラグを用いてポート遮断解除や経路切替を高速に行っている。この方式が Rapid STP (RSTP)の名称の由来となっている。

一方で、シェアードリンク接続では、リンク上に未知スイッチが他に存在する可能性があり、1対1の合意だけで即座に遮断解除するとループ発生の恐れがある。そのため、指定ポート(DP)の遮断解除にはForward Delay (転送遅延)タイムによる待機時間が設けられている[16]。この待機動作は初期STPで規定されたもので、当初は提案・合意フラグは設けられていなかった。

脚注

関連項目

Related Articles

Timelines

Top Qs

Fact Checks