STPによりレイヤ2構成を冗長化する

STPによりレイヤ2構成を冗長化する

ブロードキャストストームについて

スイッチにおける冗長化構成

スイッチの冗長化では、同じネットワーク内で、スイッチの故障など障害の発生に備えて、スイッチの台数を増やすことで迂回路を設けることが一般的です。

この時、迂回路を設けるために、円環状のネットワークになるように、スイッチを配置します。

ブロードキャストフレームとは

しかしこの時、あるホストがブロードキャストした場合、受け取ったスイッチは、フラッディング(宛先不明のため全ポートへ転送する機能)をします。

フラッディングにより転送データを受け取ったスイッチも全てのポートに転送し、ネットワークが円環状のため、永遠にスイッチ間で全ポートから転送し合うことになります。

このような現象をブロードキャストストームと呼びます。

STPの概要

冗長構成によるブロードキャストストームの回避技術

このような現象を回避するためにSTP(Spanning Tree Protocol)があります。

STPは、円環状のネットワークにおける、ブロードキャストストームを回避するためのプロトコルです。

特定のスイッチの、一方の経路に通じるポートをブロッキング状態にし、もう一方の経路だけで通信を行えるようにすることで、ブロードキャストストームを防ぎます。

※ブロッキング状態のポートをブロッキングポートと呼びます。

また使用中の経路が何かしらの障害で使用できなくなったら、使用停止中の経路を復活する(ポートをフォワーディング状態にする)ことで対応します。

このように障害時にも対応できるので、STPによりブロードキャストストームを起こさないような冗長化を実現できることがわかります。

また一部の経路が使用停止になるため、ネットワークの形が円環状からツリー状になります。

冗長構成によるブロードキャストストームの回避技術

ブロッキングポートの決定要素①

STPでは、特定のスイッチの、特定のポートをブロッキングポートに指定することで、冗長化に伴うブロードキャストストームを避けることができることがわかりました。

ではどのようにしてブロッキングポートが決まっていくのでしょうか?

まず、決定方法について理解するためには、ルートブリッジやルートポートといった要素について、理解する必要があります。

次のページから、これらの決定要素について、一つずつ解説します。

ブロッキングポートの決定要素①各ポートの役割

ルートブリッジとは

ルートブリッジはSTPの基準となるスイッチです。ルートブリッジを決めることで、ルートポートが決まり、結果的にブロッキングポートが決まります。

ルートポート(RP:Root Port)

ルートポートとは、ルートブリッジ以外の各スイッチに、割り当てられるポートです。

各スイッチの複数のポートの中から、ルートブリッジから距離の近いポートが、ルートポートに選ばれます。

距離の近さは、パスコスト、送信元ブリッジID、送信元ポートIDの順番で、決まります。

※パスコスト、ブリッジID、ポートIDは次のページで紹介します。

ルートポート(RP:Root Port)

【例】スイッチA内のルートポートについて

指定ポート(DP:Designated Port)

各リンク(経路)には、宛先と転送元用に二つのポートがあります。

指定ポートは、各経路(リンク)にあるポートの中から、よりルートブリッジに近いポートを指します。リンクごとに必ず指定ポートが一つ選ばれ、またルートブリッジのポートは全て指定ポートになります。

また経路内におけるルートポートではない方のポートは必然的に指定ポートになります。

非指定ポート-ブロッキングポート(NDP:Non Designated Port)

ルートポート、指定ポートに選出されないポートが、非指定ポートとなりブロッキングポートになります。このポートではBPDUの受信のみしか行うことができません。

指定ポート(DP:Designated Port)

【例】経路2内の指定ポートについて

ブロッキングポートの決定要素②

ブロッキングポートを決める上でルーティングブリッジやルートポート、指定ポートを決める必要があることがわかりましたが、ではこれらの役割はどのように決まっていくのでしょうか?

これらのスイッチ、ポートの役割を決めるための、代表的な要素としてBPDU、ブリッジID、ポートID、パスコストについてまとめました。

BPDU(Bridge Protocol Data Unit ):スイッチ間の連絡手段

どのスイッチがルートブリッジで、どのポートがルートポートやブロッキングポートになるのかを決めるためには、当然、ネットワーク内でスイッチ同士で連絡を取り合う必要があります。

BPDUは、スイッチ間で連絡を取り合う(情報交換する)ために使用するフレーム(レイヤ2のPDU)で、他のスイッチやネットワークの状況を把握することができます。

このBPDUは、2秒に一回、ルートブリッジから、マルチキャスト(特定のグループに属するホスト全員への通信方式)で送ります。

このBPDUには、ブリッジID、パスコスト、ポートIDを始め、各スイッチ、ポートの役割を決めるために必要な情報が含まれており、この情報を交換することで、これらの役割を決めることができます。

BPDUのフォーマット

ブリッジID

ブリッジIDは、スイッチ自身を決める識別子であり、プライオリティ(16ビット)とMACアドレス(48ビット)によって構成されます。

このブリッジIDの値が低くなるほど、優先順位の高いスイッチとして判断され、ルートブリッジに選出されます。

プライオリティの値は、デフォルトでは32768となっており、値を変更(設定)できます。

ポートID

ポートIDは、ポートプライオリティ(4ビット)、ポート番号(12BIT)で構成されています。デフォルト値が128となってお、値には16の倍数を指定します。

ポートIDは主に、各スイッチのルートポートや、指定ポートを決めるための要素になります。

パスコスト

パスコストは、ルートブリッジまでの距離を示す情報であり、ルートポートや指定ポートを決めるために使用します。

パスコストの値は、各リンクの帯域幅によって算出され、ルートブリッジまでの経路のパスコストの合計値をルートパスコストとと呼びます。

このコスト値が低いほど、ルートブリッジまでの距離が短いと判断されるため、ルートポートに選ばれる基準になります。

パスコスト

パスコストはリンクの帯域幅で決められた値であり、主に以下の通りです。

ブロッキングポートの決定手順

先ほどの内容を踏まえ、ブロッキングポートの決定手順について紹介していきたいと思います。

まずブロッキングポートは以下の手順によって決まります。

  1. ルートブリッジの選出
  2. ルートポートの選出
  3. 指定ポートの選出(=ブロッキングポートの選出)

各手順の詳細を次のページから確認していきましょう。

1. ルートブリッジの選出

まずルートブリッジは、各スイッチのブリッジID(プライオリティ(16ビット)とMACアドレス(48ビット)によって構成された識別子)によって決まります。

このブリッジIDを確認するために各スイッチがBPDUを送信し合います。

① プライオリティを比較し、最も低いスイッチがルートブリッジになります。

② 同じ値が設定されていて決まらない場合、MACアドレスが最も低いスイッチがルートブリッジになります。

ルートブリッジの決定後は、ルートブリッジのみが2秒おきにBPDUを送ります。

1. ルートブリッジの選出 – 例【補足】

2. ルートポートの選出

ルートポートは、ルートブリッジ以外の各スイッチから選出します。ルートポートはルートブリッジに距離が近いポートが選ばれますが、この距離はパスコストによって算出します。

① パスコストが最も低いポートが、ルートポートに選ばれます。

② パスコストで決まらなかった場合、送信元ブリッジIDが一番小さいBPDUを受け取ったポートがルートポートに選ばれます。

③ それでも決まらない場合、送信元ポートIDが一番小さいBPDUを受け取ったポートがルートポートに選ばれます。

2. ルートポートの選出 – 例【補足】

3. 指定ポートの選出(=ブロッキングポートの選出

続いて各リンクの中から、それぞれ指定ポートを選びます。指定ポートは、各リンク(経路)にあるポートの中から、よりルートブリッジに近いポートを指します。

先ほどと同様以下の順番で比較しながら決定します。

① パスコストが最も低いポートが、指定ポートに選ばれます。

② パスコストが最も低いポートが、指定ポートに選ばれます。

③ それでも決まらない場合、送信元ポートIDが一番小さいBPDUを受け取ったポートが指定ポートに選ばれます。

ルートブリッジのポートは、またルートポートの向いのポートは指定ポートになります。

またルートポートと指定ポート以外のポートが、非指定ポート(ブロッキングポート)となるので、指定ポートが決まった段階でブロッキングポートが決まります。

3. 指定ポートの選出(=ブロッキングポートの選出) – 例【補足】

各ポートの状態遷移について

STPが有効なスイッチのポートの状態にはフレームを送受信できるフォワーディングや、フレームの転送ができないブロッキング以外にも、リスニング、ラーニング、フォワーディングといった状態があります。

これらの状態は新しく機器を繋いでから、または障害などにより再度経路が変わる際に、各スイッチ、ポートの役割を決める過程で、状態が遷移するもので、①ブロッキング、②リスニング、③ラーニング、④フォワーディング(またはブロッキング)の順番で遷移します。

各処理のタイマー(制限時間)について

SPTでは以下3つのタイマーで指定された時間を元に、同一ネットワーク内の状況を判断します。例えばMAX Ageは障害発生の検知を行うために用いられます。

STPの構成ではルートブリッジが決まってから、ルートブリッジ以外のスイッチはBPDUを送信しません。そのため指定時間以上、ルートブリッジからBPDUが送られなかった場合、障害が発生したと判断され、再度、ルートブリッジ、ルートポートなど各自の役割を決定し直します。

このようにネットワークの状況を判断する上で、タイマーで設けた時間を基準にします。

コンバージェンスまでの時間

新しくSTPによるネットワーク構築したり、また障害発生などによる経路、切り替えにより、ルートブリッジやルートポートなど各自の役割を決定する必要が発生します。

各自の役割が決まり、ポートの状態がフォワーディングまたはブロッキングに落ち着くことを、コンバージェンスと呼びます。

このコンバージェンスまでの最大時間は、先ほどのタイマーから「最大エージタイマー20秒 + 転送遅延 15秒 × 2 = 50秒」になります。

STPを高速化する拡張機能

この通り、コンバージェンスまでの時間は最大50秒かかりますが、この時間を短縮するためにCiscoでは以下3つの機能が開発されました。

PortFast

PortFastは早くフォワーディング状態にしたいポートに設定する機能です。PortFastが設定されたポートは、通常のポートと違いネットワーク機器に接続するとSTPの状態遷移を飛ばして、すぐフォワーディング状態になります。

PCやサーバ、ルータなどの端末と接続するポートに設定するのが一般的的です。

UplinkFast

UplinkFastはスイッチに設定する機能です。

この機能が設定されたスイッチは、ルートポート側のリンクに障害が起こると、代わりにブロッキング状態の非指定ポートが、状態遷移を飛ばして5秒以内にフォワーディング状態になることができます。

BackboneFast

STPではコンバージェンスまでの時間が最大50秒でしたが、この機能ではこの時間を30秒に短縮します。

通常、BPDUを定期的に送るのはルートブリッジの役割ですが、この機能では障害を検知したスイッチが、ルートブリッジに代わりBPDUを送信し、他のスイッチはデータを受け取ったことで障害を検知します。

障害発生を検知するのにはMax Age(最大エージタイマー)のため20秒の時間を要しますが、BackboneFastを使えばすぐ障害発生を検知できるので、最初の20秒が短縮されます。

またこの機能は全スイッチに設定が必要です。

RSTPについて- STPを高速化させたプロトコル

概要

RSTPは、STPのコンバージェンスまでの時間を大幅に改良したものです。STPでは障害発生時などネットワークの構成(トポロジー)に変更があると、コンバージェンスまでに50秒の時間を要しましたが、RSTPでは数秒まで短縮されます。

各ポートの役割について

STPと同様に、RSTPでもルートポート、指定ポートがある一方、RSTPでは非指定ポートの代わりに新しく代替ポート、バックアップポートの2種類の役割が追加されています。

状態遷移について

RSTPでのポートの状態は、ディスカーディング、ラーニング、フォワーディングの3種類です。STPにおける ディセーブル、ブロッキング、リスニングの代わりに、ディスカーディングが設けられています。

各状態の内容をまとめると以下の通りになります。

高速化が実現できる理由

それぞれのスイッチがBPDUの通信を行うから

STPでは、ルートブリッジ以外のスイッチは、B P D Uを送信しません。

ルートブリッジからのB P D Uを頼りにするため、障害発生時などを検知するまでに、時間がかかりますが、

RSTPでは、互いにB P D Uを送り合うので、 すぐに障害を検知でき、 STPのような時間のロスがありません。

STPの保護機能

続いてSTPの構成(各ポートの役割分担)が崩れないような保護機能を紹介します。

BPDUガード

B P D Uガードは、Port Fastを有効にした場合に、起こり得る弊害を防ぐための機能です。Port Fastは、コンピュータに直接、繋がっているポートに設定するものであり、本来、ブロッキングキャストストームのが起こり得るであろう、環状のネットワークの構成に、直接、組み込まれていないポートに、設定します。

しかし、間違って、こういったポートに、Port Fastを設定した場合、ブロッキング状態であるべきだったポートが、Port Fastによりフォワード状態になり、結果的にブロードキャストストームが、発生するかもしれません。

こういった事態を防ぐために、B P D Uガードを使用します。具体的には、B P D Uガードが有効なポートが、B P D Uを受信しても、そのポートは、「error-disable」状態となり、ポートが無効化になります。

ルートガード

ルートガードは、本来、意図していないスイッチが、ルートブリッジになることを防ぐための機能です。

ルートブリッジよりプライオリティ値の低い(優先順位の高い)スイッチが接続された場合、ルートブリッジの役割がそのスイッチに移ってしまいます。このように思わぬスイッチの接続で、ルートブリッジの役割の変更を防ぐための仕組みが、ルートガードです。

自身より上位(プライオリティ値の低い)のBPDUを受け取った際に、その送信元のポートをルート不整合としてブロックします。


NEXT>> EtherChannelで耐障害性を向上する