【スパニングツリー】収束の再計算は50秒?30秒?

 

Cisco の Catalyst スイッチにケーブルを接続すると、ポートの LED がオレンジ色になり、しばらくすると緑色になるのを見たことがある人は多いと思います。これはスパニングツリー(STP)が動いているためで、ループを防ぐために、リンクアップしてもすぐにはデータを転送しない仕組みになっています。

この記事では、STP のポート状態と、障害が起きたときの切り替え(再計算)に約50秒かかる場合と約30秒かかる場合の違いを説明します。

この記事でわかること
  1. STP のポート状態(ブロッキング・リスニング・ラーニング・転送)
  2. Max Age(最大エージ)と Forward Delay(転送遅延)の役割
  3. 切り替えに約50秒かかる場合と、約30秒で済む場合の違い

ポート状態

STP の主なポート状態は次のとおりです。

ポート状態説明
ブロッキング
(Blocking)
ルートポートにも指定ポートにもなっていないポート。データの転送はしない。BPDU は受信する(送信はしない)。スイッチの起動直後は、すべてのポートがこの状態から始まる
リスニング
(Listening)
転送に参加することが決まったポートが最初に入る状態。データの転送はせず、MAC アドレスも学習しない。BPDU のやり取りでトポロジを確認する。Forward Delay(既定 15 秒)が経つとラーニング状態に移る
ラーニング
(Learning)
データの転送はしないが、受信したフレームの送信元 MAC アドレスを学習する。先に MAC アドレスを学習しておくことで、転送状態になったときのフラッディングを減らす。Forward Delay(既定 15 秒)が経つと転送状態に移る
転送
(Forwarding)
データを転送する、通常の状態

STP が有効なポートは、ケーブルを接続すると、リスニング → ラーニング → 転送と移り、データを転送できるまでに 30 秒(リスニング 15 秒+ラーニング 15 秒)かかります。

ケーブルを接続したポート Listening(15 秒) Learning(15 秒) Forwarding 30 秒
図1 リンクアップから転送状態になるまで
補足

端末だけをつなぐポートは、PortFast を設定すると、リスニングとラーニングを飛ばしてすぐに転送状態になります。スイッチどうしをつなぐポートには設定しません。

スパニングツリーの再計算は50秒?30秒?

STP では、スイッチやケーブルの障害が起きたときの切り替えに、約50秒かかる場合と約30秒で済む場合があります。違いを理解するには、Max Age(最大エージ)というタイマーが大事です。

タイマー既定値役割
Hello Time2 秒BPDU を送る間隔
Max Age20 秒受け取った BPDU の情報を、ポートが保持しておく時間。この時間 BPDU を受け取れないと、情報を捨てて再計算を始める
Forward Delay15 秒リスニング、ラーニングのそれぞれにとどまる時間

自分のリンクがダウンした場合は、スイッチはすぐに障害を検知できます。一方、直接つながっていない場所で障害が起きた場合、自分のリンクの状態は何も変わりません。この場合スイッチは、ブロッキングポートで保持しているルートブリッジの BPDU の情報が Max Age(20 秒)で消えるまで、障害が起きたと判断できません。

収束時間が50秒の場合

次の構成で、ルートブリッジ(SW1)に障害が起きた場合です。SW4 のブロッキングポートは SW1 と直接つながっていないので、保持している BPDU の情報が Max Age で消えるのを待ちます。そのあとリスニングとラーニングを経るので、ブロッキングポートが転送状態になるまでに、Max Age(20 秒)+リスニング(15 秒)+ラーニング(15 秒)の計 50 秒かかります。

SW1(ルートブリッジ) SW3 SW2 SW4 Blocking → Forwarding 障害 Max Age(20 秒) Listening(15 秒) Learning(15 秒) Forwarding 50 秒
図2 ルートブリッジの障害。ブロッキングポートが転送状態になるまで約50秒

収束時間が30秒の場合

同じ構成で、SW3 と SW4 の間のリンクに障害が起きた場合です。SW4 は自分のルートポートのリンクがダウンしたことをすぐに検知できるので、Max Age を待ちません。ブロッキングポートがリスニング(15 秒)+ラーニング(15 秒)の計 30 秒で転送状態になり、新しいルートポートになります。

SW1(ルートブリッジ) SW3 SW2 SW4 Blocking → Forwarding 障害 Listening(15 秒) Learning(15 秒) Forwarding 30 秒
図3 SW3 と SW4 の間のリンク障害。ブロッキングポートが転送状態になるまで約30秒

まとめ

障害の場所切り替え時間内訳
直接つながっていない場所(ルートブリッジなど)約 50 秒Max Age 20 秒+リスニング 15 秒+ラーニング 15 秒
自分のルートポートのリンク約 30 秒リスニング 15 秒+ラーニング 15 秒

切り替えに 30 秒や 50 秒かかるのは非常に遅いため、今では高速スパニングツリー(RSTP)を使うのが一般的です。ただし、RSTP に対応していない機器をつなぐと、そのポートは従来の STP の動作になるので、ここで説明した動作も理解しておく必要があります。

コメント