Cisco STPの説明 | ちゃぶのブログ

Cisco STPの説明

■STPの説明
冗長構成をとりながら、ループのないループフリー環境を作り出す

■BPDUが持つ情報(2秒に1回送信される)
・ルート情報・・・ルートに設定されたブリッジのID
・パスコスト・・・そのリンクのルートブリッジからの距離
・ブリッジ情報・・BPDUを送信したブリッジの情報
・ポート情報・・・BPDUを送信したポートの情報
・タイマ・・・・・スパニングツリーを構成するための時間
           ↓
ループが起きないように転送を停止するポートを決める
STPはルートブリッジを中心としてループの有無を判断する


■STPの順序

①ルートブリッジ の選択

  最も小さいブリッジIDを持つものが、ルートブリッジとなる。
  STPが稼動(enable)されているブリッジでは、BPDU(STPのHelloパケット)が交換される。
  BPDUには、ブリッジID (※ブリッジのプライオリティ+ブリッジのMACアドレス)が含まれている。
  このブリッジIDが最も小さい値を持つものが、ルートブリッジとなる。
  
  ※0~65535の値が入る。デフォルトはCatalystでは32768。Switchが起動した直後は全てのSwitchが
    自分がRoot Bridgeであると認識している

  1、各ブリッジは自分がルートブリッジだと思っている。
             ↓
  2、自分のブリッジIDをBPDUにいれブロードキャストを発信
             ↓
  3、他のブリッジが自分のブリッジIDよりも低いブリッジIDを受信
             ↓
  4、自分よりも低いブリッジIDを受け取ったブリッジはルートブリッジ
    を自分から他のブリッジに変更する。
             ↓
  5、変更したルートブリッジ情報を今度から発信するようになり、これを
    繰り返し全体の中のルートブリッジを決定する。

②Rootポートの選択

  ブリッジから、ルートブリッジへ最短経路となるポートがRootポートになる。
  最短経路とは通信速度のことであり、10Mbps と 100Mbps のポートでは、後者が最短経路のポートとなる。
  通信速度が同じ場合、最も小さいブリッジIDを受け取ったポートがRootポートになる。
  ブリッジIDも同じ場合、上位ブリッジの最も小さいポート番号と接続しているポートがRootポートになる。
  
  ※1)RootブリッジからRoot Path Cost = "0"のBPDUが下流のSwitchめがけて送信される
    2)BPDUを受信したSwitchは受信したPortのCostをBPDUに付加する
    3)新たなRoot Path CostとなったBPDUを更に下流のSwitchに対して送信する。
      送信時にはPort Costは付加されない。
      上述の作業を延々と繰り返し、複数のBPDUを受信し、最も値が小さかったBPDUを受信したPortが
      Rootポートとなる。


③Designatedポート(代表ポート)とBlockedポートの選択

  セグメントから、ルートブリッジへ最短経路となるポートがDesignatedポートになる。
  RootポートにもDesignatedポートにも選択されなかったポートが、Blockedポートになる。
  ループ構成のポートにおいて、ルートブリッジの全てのポートはDesignatedポートになる。
  代表ポートは、ネットワークループを防ぐためのもので、各セグメントへのパスが複数ある場合に
  選択される。
  
  ※ルートポートは上から下(つまり、ルートブリッジから各スイッチ)をイメージし、
    代表ポートは下から上(つまり、各スイッチからルートブリッジをイメージ)




■さまざまなリンク速度のスパニングツリー パスコスト
リンク速度 コスト(改正後のIEEE仕様) コスト(改正前のIEEE仕様)
10Gbps
2
1
1Gbps
4
1
100Mbps
19
10
10Mbps
100
100
■STPステータスの移行 初期納入時等では、全てのBridgeが自身をRootと認識しているためRootが複数存在していると いったような状態となり、全てのBridgeのInterfaceが常にForwarding状態であったとした場合 深刻な Loop 障害を引き起こす原因となってしまう。 こういった障害を防ぐため、STPには5つの状態があり、まず、Blocking状態から開始し BPDUの受信のみを行いデータフレームの転送は実施しない。 Loop状態にならない事を確認した上で初めてPortはForwarding状態となり、データフレームの 転送を可能にする。 ①ブロッキング状態(20秒 Switchの電源投入時にはSwitchのどれかのPortからBPDUを受信するのを待つ。 BPDUを自身のどのPortからも受信しなかった場合、Switchは自分がRootであると判断する。 自分以外の他のSwitchからBPDUを受信した場合には、BPDUを受信したPortはListening状態となり BLocking状態から解除される。 ・Neighbore Segment から受信したFrameを破棄する ・自身の他のPortから内部SwitchingされたFrameを破棄する ・MAC Addressの学習を行わない ・BPDUを受信のみ実施し、Sytem Moduleに転送する ・System Moduleから受信したBPDUを送信しない ②リスニング状態(15秒 ブロッキング状態の次にSTPはListening Stateの状態になる。 この状態からBPDUの送受信を行う事が出来るようになり、Root情報の比較による、Rootの決定 Cost等の比較による最適経路を決定する。 ・Neighbore Segment から受信したFrameを破棄する ・自身の他のPortから内部SwitchingされたFrameを破棄する ・MAC Addressの学習を行わない ・BPDUを受信しSystem Moduleに転送する ・System Moduleから受信したBPDUを処理する ・Network 管理メッセージを受信して応答する ③ラーニング状態(15秒 リスニング状態が終了すると、次はラーニング状態となる。 この状態でもPortはまだ監視状態であり、Frameの転送は行えない。 但し、リスニング状態とは異なりMACアドレスの情報を学習し、 Frame転送の準備を行います。 ・Neighbore Segment から受信したFrameを破棄する ・自身の他のPortから内部SwitchingされたFrameを破棄する ・MAC Addressの学習を行う ・BPDUを受信しSystem Moduleに転送する ・System Moduleから受信したBPDUを処理して送信する ・Network 管理メッセージを受信して応答する ④フォワーディング状態 最終的にフォワーディング状態になるとSwitchは初めてData Frameの送受信を行う事が 出来るようになる。 ・Neighbore Segment から受信したFrameを転送する ・自身の他のPortから内部SwitchingされたFrameを転送する ・MAC Addressの学習を行う ・BPDUを受信しSystem Moduleに転送する ・System Moduleから受信したBPDUを処理して送信する ・Network 管理メッセージを受信して応答する