そもそも、なぜSTPが必要なのか?
女性笑顔
分かります。
機器間でBPDU(Bridge Protocol Data Unit)をやりとりすることで、ループを防ぐため。ループが発生すると、ネットワークが輻輳状態になって、通信ができないからです。
そのとおり。
だが、LANの設計をするときに、あえてループを作ることが一般的である。なぜだろうか?
それは、ループ構成を組んで、STPを有効にしておけば、障害時にはそのループが迂回経路になるからだ。しかも、障害時には自動的にSTPの再計算が走って、迂回経路に自動切り替えしてくれるから便利である。
従来のCSTでは、切り替えのコンバージェンス(収束)に40秒ほどかかっていたが、RSTPなどでは、数秒で切り替わる。

STPの目的を整理すると次の2つになる。

STPの目的
.襦璽廚硫麋
⊃頼性向上(冗長性の確保)

過去問では、スパニングツリーの機能を、「複数のブリッジ間で情報を交換し合い、ループ発生や障害時の迂回ルート決定を行う。(平成17年度 午前 問44)」、「BPDUと呼ばれる制御フレームをやり取りして通信のループを回避するプロトコル。(平成21年度 午後1問1)」と述べています。

デメリット
STPによるデメリットもあります。それは、「PCを接続しても直ちに通信が可能な状態にならない(H21NW午後1問1設問3(3)」ことです。
STPが有効なSwitchingHUBにPCを接続しても、IEEE802.1Dによる通常のSTPの場合、BPDUのやりとりが行われるので、正常に接続されるまでに40秒ほどかかってしまう。

PC→HUB→STP有効のSW→DHCPサーバ

という構成の場合、PCがDHCPによるIPアドレスを要求しても、STP有効のSWがリンクアップされず、DHCPサーバからIPアドレスが取得できないという問題が発生することもある。

STPの状態遷移
STPでは、ルートブリッジが2秒間隔でBPDUを送り続けています。BPDUはループ内の全てのスイッチに届きます。ブロッキングポートにも届きます。
BPDUが20秒間届かなくなると、ネットワークの状態に変化が発生したと判断し、STPを再計算します。(もちろん、この間は通信ができません。)

過去問(H30秋NW午後橘2)に「STPのポート状態がブロッキングから,リスニング,ラーニングを経て,フォワーディングに遷移した。」とありますように、STPの状態には以下の4つの状態があります。
・ブロッキング:データ転送をしない。BPDUの受信のみ(最大20秒)
・リスニング:STPの状態確認中(約15秒)
・ラーニング:STPの学習中(約15秒)
・フォワーディング:データ転送の実施
データを転送するのは、フォワーディング状態だけです。
ネットワークスペシャリストを目指す女性SEハテナ

ループが無い状態でもSTPの計算が走るんですね?
そうなんです。STPが有効になっているスイッチであれば、1ポートに接続しただけでもSTPの計算行われます。たとえば、PCを1台SWに接続した場合でも、STPの計算が行われます(もちろんループはありません。)
ですから、PCが使えるまでに、40秒ほどの時間がかかってしまいます。ですから、PCが接続するポートにはSTPを無効にする(PortFastの設定)を入れます。(以下に説明)

STPの無効化
スイッチ全体で無効にする場合と、ポート単位で無効にする(portfast)場合がある。上記で書いたような問題を回避するために、PCを接続するポートには、portfastを入れることがあります。

以下は、VLAN1でSTPを無効化する設定です。全てのVLANで無効化する場合は、vlan 1-4094とします。
Switch(config)#no spanning-tree vlan 1
Switch(config)#end

このときのスイッチのポートを見てもらうとわかりますが、ランプが高速に点滅しています。つまり、ループによってブロードキャストストームが発生しているのです。こうなると通信ができません。以下のコマンドで元に戻しておきましょう。

Switch(config)#spanning-tree vlan 1
Switch(config)#end

参考
119通報のシステムトラブルは、STPの設定をしなかったためにループを起こしたことのようだ。「システム障害はなぜ二度起きたか」(日経BP社)は、「2011年1月、消防車や救急車の出動を支援する東京消防庁の情報システムがダウンし、119通報がつながりにくくなる事態が発生した。原因は一本のLANケーブルの誤接続によって通信の「ループ」が発生したこと。予備システムも機能せず、影響は約四時間半に及んだ」と述べられている。

STPの実際の動作
CiscoのCatalystでのSTPの動作を試してみましょう。
(1)STPの有効化
Catalystの場合、デフォルトでSTPが有効になっています。有効になった上で、以下の設定がなされています。
spanning-tree mode pvst ⇒pvst(per vlan spanning tree)は、VLAN単位でSTPを有効にするというモード

(2)状態確認
では、ループを作ります。
今回はシンプルに、2台の機器を2本のLANケーブルで接続します。

sh spanning-treeで確認しましょう。(※ルータの場合は show spanning-tree brief が見やすいです)
Switch#sh spanning-tree
VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32768
             Address     2c54.2d7e.b7b2
             Cost        19
             Port        1 (FastEthernet0/1)
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
  Bridge ID  Priority    32769  (priority 32768 sys-id-ext 1)
             Address     34bd.c859.bd00
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time  300 sec
Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Fa0/1               Root FWD 19        128.1    P2p
Fa0/2               Altn BLK 19        128.2    P2p

ここで、ルートブリッジは、2c54.2d7e.b7b2のMACアドレスを持つ機器であることが分かります。今回の場合は、もう一台の機器を指しています。
また、Fa0/1がFWDですので通信がされていて、Fa0/2がBLKなので、ブロッキングされていることが分かります。

(3)切り替わり
この状態で、Fa0/1のケーブルを抜きます。
すると、通信経路がFa0/2に変わるはずです。
では、状態を順に確認しましょう。
Fa0/2がListeningになりました。
Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Fa0/2               Root LIS 19        128.2    P2p

Fa0/2がLearningになりました。
Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Fa0/2               Root LRN 19        128.2    P2p

Fa0/2がFowardingになりました。同時に、スイッチ間の通信が再開されました。
Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- --------------------------------
Fa0/2               Root FWD 19        128.2    P2p

スポンサードリンク