Cisco の Catalyst スイッチにケーブルを接続すると、ポートの LED がオレンジ色になり、しばらくすると緑色になるのを見たことがある人は多いと思います。これはスパニングツリー(STP)が動いているためで、ループを防ぐために、リンクアップしてもすぐにはデータを転送しない仕組みになっています。
この記事では、STP のポート状態と、障害が起きたときの切り替え(再計算)に約50秒かかる場合と約30秒かかる場合の違いを説明します。
- STP のポート状態(ブロッキング・リスニング・ラーニング・転送)
- Max Age(最大エージ)と Forward Delay(転送遅延)の役割
- 切り替えに約50秒かかる場合と、約30秒で済む場合の違い
ポート状態
STP の主なポート状態は次のとおりです。
| ポート状態 | 説明 |
|---|---|
| ブロッキング (Blocking) | ルートポートにも指定ポートにもなっていないポート。データの転送はしない。BPDU は受信する(送信はしない)。スイッチの起動直後は、すべてのポートがこの状態から始まる |
| リスニング (Listening) | 転送に参加することが決まったポートが最初に入る状態。データの転送はせず、MAC アドレスも学習しない。BPDU のやり取りでトポロジを確認する。Forward Delay(既定 15 秒)が経つとラーニング状態に移る |
| ラーニング (Learning) | データの転送はしないが、受信したフレームの送信元 MAC アドレスを学習する。先に MAC アドレスを学習しておくことで、転送状態になったときのフラッディングを減らす。Forward Delay(既定 15 秒)が経つと転送状態に移る |
| 転送 (Forwarding) | データを転送する、通常の状態 |
STP が有効なポートは、ケーブルを接続すると、リスニング → ラーニング → 転送と移り、データを転送できるまでに 30 秒(リスニング 15 秒+ラーニング 15 秒)かかります。
端末だけをつなぐポートは、PortFast を設定すると、リスニングとラーニングを飛ばしてすぐに転送状態になります。スイッチどうしをつなぐポートには設定しません。
スパニングツリーの再計算は50秒?30秒?
STP では、スイッチやケーブルの障害が起きたときの切り替えに、約50秒かかる場合と約30秒で済む場合があります。違いを理解するには、Max Age(最大エージ)というタイマーが大事です。
| タイマー | 既定値 | 役割 |
|---|---|---|
| Hello Time | 2 秒 | BPDU を送る間隔 |
| Max Age | 20 秒 | 受け取った BPDU の情報を、ポートが保持しておく時間。この時間 BPDU を受け取れないと、情報を捨てて再計算を始める |
| Forward Delay | 15 秒 | リスニング、ラーニングのそれぞれにとどまる時間 |
自分のリンクがダウンした場合は、スイッチはすぐに障害を検知できます。一方、直接つながっていない場所で障害が起きた場合、自分のリンクの状態は何も変わりません。この場合スイッチは、ブロッキングポートで保持しているルートブリッジの BPDU の情報が Max Age(20 秒)で消えるまで、障害が起きたと判断できません。
収束時間が50秒の場合
次の構成で、ルートブリッジ(SW1)に障害が起きた場合です。SW4 のブロッキングポートは SW1 と直接つながっていないので、保持している BPDU の情報が Max Age で消えるのを待ちます。そのあとリスニングとラーニングを経るので、ブロッキングポートが転送状態になるまでに、Max Age(20 秒)+リスニング(15 秒)+ラーニング(15 秒)の計 50 秒かかります。
収束時間が30秒の場合
同じ構成で、SW3 と SW4 の間のリンクに障害が起きた場合です。SW4 は自分のルートポートのリンクがダウンしたことをすぐに検知できるので、Max Age を待ちません。ブロッキングポートがリスニング(15 秒)+ラーニング(15 秒)の計 30 秒で転送状態になり、新しいルートポートになります。
まとめ
| 障害の場所 | 切り替え時間 | 内訳 |
|---|---|---|
| 直接つながっていない場所(ルートブリッジなど) | 約 50 秒 | Max Age 20 秒+リスニング 15 秒+ラーニング 15 秒 |
| 自分のルートポートのリンク | 約 30 秒 | リスニング 15 秒+ラーニング 15 秒 |
切り替えに 30 秒や 50 秒かかるのは非常に遅いため、今では高速スパニングツリー(RSTP)を使うのが一般的です。ただし、RSTP に対応していない機器をつなぐと、そのポートは従来の STP の動作になるので、ここで説明した動作も理解しておく必要があります。
コメント