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. ルートブリッジの選出
まずルートブリッジは、各スイッチのブリッジ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を受け取った際に、その送信元のポートをルート不整合としてブロックします。