スパニングツリーの構成手順

スパニングツリープロトコルによって、ループしているトポロジからルートブリッジを中心としたツリー上のトポロジにします。そのための手順は、以下のようになります。

  1. ルートブリッジの選出
  2. ポートの役割(ルートポート、代表ポート、非代表ポート)の決定
  3. スパニングツリーの維持

例として、次の3台のレイヤ2スイッチがループ構成となっているネットワークトポロジで、スパニングツリーの構成を考えていきましょう。

図 スパニングツリーの構成
図 スパニングツリーの構成

ルートブリッジの選出

まず、スパニングツリーの中心となるスイッチであるルートブリッジを選出します。ルートブリッジは、ブリッジIDが最小のスイッチです。

スパニングツリーが標準化された当時は、ブリッジで利用していたのでルート「ブリッジ」です。ですが、今ではブリッジではなくレイヤ2スイッチでスパニングツリーを利用します。そのため、「ルートスイッチ」と表現することもよくあります。

スパニングツリーを有効にすると、スイッチは自分自身がルートブリッジと仮定して、コンフィグレーションBPDUを生成して送信します。

他のスイッチから受信したコンフィグレーションBPDUのブリッジIDが自身よりも小さければ、自分自身がルートブリッジであるという仮定が間違っていたことがわかります。そうすると、より小さいブリッジIDを持つスイッチをルートブリッジとして、自分自身がルートブリッジであるというコンフィグレーションBPDUの生成を停止します。

そして、ルートブリッジから受信したコンフィグレーションBPDUに基づいて、新しくコンフィグレーションBPDUを生成して送信します。こうして、スパニングツリーに参加するスイッチ同士で最も小さいブリッジIDを持つスイッチを認識して、ルートブリッジとして選出します。具体的に図のネットワーク構成について考えましょう。

まず、SW1、SW2、SW3は、自分自身をルートブリッジとしてコンフィグレーションBPDUを生成して送信します。自分自身がルートブリッジということはコンフィグレーションBPDUのルートIDとブリッジIDのフィールドに自身のブリッジIDを入れています。

図 ルートブリッジの選出 その1
図 ルートブリッジの選出 その1

SW2やSW3は、SW1から受信したコンフィグレーションBPDUを見ると、SW1はより小さいブリッジIDを持っていることがわかります。SW2、SW3は自分自身がルートブリッジであるという仮定が間違っていたことがわかり、SW1をルートブリッジとして認識します。SW2、SW3は自分自身をルートブリッジとするコンフィグレーションBPDUをもう生成しなくなります。

図 ルートブリッジの選出 その2
図 ルートブリッジの選出 その2

なお、2番目にブリッジIDが小さいスイッチはセカンダリルートブリッジと呼びます。現在考えているネットワーク構成では、SW2がセカンダリルートブリッジです。ブリッジIDによって、このあとの代表ポートが決まることもあるので、ルートブリッジだけでなく、セカンダリルートブリッジも明確にしておくとよいでしょう。

SW2、SW3はSW1から受信したコンフィグレーションBPDUを基にして、ブリッジIDやルートパスコスト、ポートIDなどのフィールドを書き換えたコンフィグレーションBPDUをさらに送信していきます。

図 ルートブリッジの選出 その3
図 ルートブリッジの選出 その3

ポートの役割(ルートポート、代表ポート、非代表ポート)の決定

ルートブリッジを選出すると、ルートブリッジまでの最短経路を判断するために各ポートの役割を決定します。ポートの役割として、3つあります。

  • ルートポート(RP:Root Port)
  • 代表ポート(DP:Designated Port)
  • 非代表ポート(NDP:Non Designated Port)

ルートポートは、ルートブリッジ以外のスイッチからルートブリッジまでの最短経路のポートです。ルートブリッジにはルートポートはありません。ルートブリッジ以外のスイッチで1つのルートポートが決まります。

代表ポートは、スイッチ間のリンクのうちルートブリッジまでの最短経路のポートです。スイッチ間は基本的に1対1で接続されるので、リンクを構成するポートは2つです。リンクを構成する2つのポートのうちどちらがルートブリッジに近いかを考えて代表ポートを決定します。また、代表ポートを持っているスイッチを代表ブリッジと呼びます。

ルートポートと代表ポートはルートブリッジまでの最短経路のポートになるで、イーサネットフレームを転送できるフォワーディング状態になります。ルートポートでも代表ポートでもないポートが非代表ポートです。非代表ポートはルートブリッジへの迂回経路となるので、通常時はイーサネットフレームを転送しないブロッキング状態です。

ルートポートや代表ポートを決めるには、コンフィグレーションBPDUの以下のフィールドの値を見ていきます。

  • ルートパスコスト
  • ブリッジID
  • ポートID

ルートパスコストは、スイッチからルートブリッジまでの累計のパスコストです。各スイッチのルートポートのコストをどんどん足しあわせていくことで、ルートブリッジから各スイッチまでの距離を計測しています。ブリッジIDはコンフィグレーションBPDUを送信するスイッチのブリッジIDで、ポートIDはコンフィグレーションBPDUを送信するポートのポートIDです。いずれも小さい値が優先されます。ポートIDは、ポートプライオリティとポート番号から構成されています。

ルートポートを決めるには、ルートパスコストをもとにして各ポートのパスコストを考えます。各ポートで受信したコンフィグレーションBPDUのルートパスコストに受信したポートのコストを足し合わせることで各ポートからルートブリッジまでの累計のコストを考えます。

ルートブリッジであるSW1にはルートポートはなく、SW2とSW3のルートポートを決定します。ルートブリッジであるSW1がコンフィグレーションBPDUを送信します。ルートIDとブリッジIDはともに100(SW1)です。ルートブリッジ自身なので、距離つまりルートパスコストは「0」です。SW2、SW3はポート1でコンフィグレーションBPDUを受信します。受信したポート1のコストは4なので、SW2 ポート1のパスコストは4です。同様にSW3 ポート1のパスコストも4です。

SW2、SW3はSW1から受信したコンフィグレーションBPDUをもとにコンフィグレーションBPDUを生成します。ルートIDのフィールドはそのままですが、ブリッジIDのフィールドは自身のブリッジIDに書き換えます。そして、ルートパスコストはコンフィグレーションBPDUを受信したポートのパスコストを足します。1Gbpsのポートなのでパスコストは「4」となります。また、ポートIDのフィールドも書き換えます。

図 ルートポートの決定 その1

SW2に注目すると、SW1から直接受信したコンフィグレーションBPDUとSW3を経由してきて受信したコンフィグレーションBPDUの2つあります。BPDUのルートパスコストと受信したポートのコストを見ると、SW2のポート1とポート2がルートブリッジまでどれぐらいの距離があるのかがわかります。SW2のポート1は「4」で、ポート2は「8」です。パスコストからSW2のルートポートはポート1に決まります。SW3でも同様に考えて、SW3のルートポートはポート1です。

図 ルートポートの決定 その2
図 ルートポートの決定 その2

そして、代表ポートを決定する基準は、以下の優先度で見ていきます。

  1. ルートパスコスト
  2. ブリッジID
  3. ポートID

代表ポートは各リンクのルートブリッジへの最短のポートであるため、ルートブリッジのポートは必ず代表ポートです。つまり、SW1-SW2間のリンクでSW1のポート1、SW1-SW3間のリンクでポート2は代表ポートです。あとは、SW2-SW3間のリンクでの代表ポートを考えるだけです。SW2-SW3間のリンクは、SW2 ポート2とSW3ポート2で構成されています。

まず、SW2とSW3のどちらがルートブリッジに近いかを考えます。コンフィグレーションBPDUのルートパスコストの値を見ると、SW2もSW3も同じです。つまり、SW2もSW3もルートブリッジまでの近さは同じです。そのあとは、ブリッジIDを比較します。ルートパスコストが同じ場合は、ブリッジIDが小さいスイッチの方がルートブリッジにより近いとみなします。SW2のブリッジIDの方が小さいので、SW2-SW3間のリンクにおいてはSW2 ポート2が代表ポートです。また、代表ポートを持つスイッチはそのリンクの代表ブリッジとなります。

図 SW2-SW3間のリンクの代表ポート
図 SW2-SW3間のリンクの代表ポート

そして、ルートポートでもなく代表ポートでもないSW3 ポート2が非代表ポートとしてブロッキング状態になります。最終的なスパニングツリーの状態は次の図のようになります。

図 最終的なスパニングツリーの状態
図 最終的なスパニングツリーの状態

こうして最終的なスパニングツリーの状態が決まることを「コンバージェンス(収束)する」と呼びます。

スパニングツリーのポートの役割のポイント

以上のような、スパニングツリーのポートの役割を簡単に判断するためのポイントをまとめます。

  • ルートブリッジのポートはすべて代表ポート
  • ホストやサーバなどループしない部分のポートは代表ポート
  • ルートポートの対向ポートは代表ポート
  • ルートブリッジに直接接続されているポートはルートポート
  • 3台のループ構成では、ルートブリッジでもセカンダリルートブリッジでもないスイッチにブロッキング状態のポートがあらわれる。セカンダリルートブリッジ側のポートが非代表ポート(スイッチ間のリンクはすべて同じ帯域幅のとき)
図 スパニングツリーのポートの役割のポイント
図 スパニングツリーのポートの役割のポイント

スパニングツリーの維持

スパニングツリーが完成したあとは、その構成に変更がないかどうかを確認します。スパニングツリーの維持でもコンフィグレーションBPDUを利用します。ルートブリッジは定期的にコンフィグレーションBPDUを送信しています。ルートブリッジ以外のスイッチは定期的にコンフィグレーションBPDUを受信することで、スパニングツリーの構成に変更がないことを確認しています。

ルートブリッジがコンフィグレーションBPDUを送信するということは、代表ポートからコンフィグレーションBPDUが送信されることになります。そして、ルートポートでコンフィグレーションBPDUを受信します。代表ポートはコンフィグレーションBPDUを送信するポートで、ルートポートはコンフィグレーションBPDUを受信するポートであるともいえます。まだ、非代表ポートもコンフィグレーションBPDUを受信するポートです。

図 スパニングツリーの維持
図 スパニングツリーの維持

レイヤ2スイッチの仕組み