はじめに
このドキュメントでは、スパニングツリープロトコル(STP)タイマーと、タイマーを調整するために使用するルールについて説明します。
背景
このドキュメントでは、通常の 802.1D スパニング ツリーでの STP タイマーの調整方法についてのみ説明しています。このドキュメントでは、Rapid Spanning Tree Protocol(RSTP; 高速スパニング ツリー プロトコル)(IEEE 802.1w)や Multiple Spanning Tree(MST; 多重スパニング ツリー)プロトコル(IEEE 802.1s)については説明していません。
RSTP と MST の詳細は、下記のドキュメントを参照してください。
前提条件
要件
このドキュメントでは、STPについて十分に理解していることを前提としています。STPの動作の詳細については、『Catalystスイッチでのスパニングツリープロトコル(STP)についての説明と設定方法』を参照してください。
注意:このドキュメントは、プロセスに精通しているか、プロセスに精通した人の指示があった場合に限り、ネットワークの問題の解決に役立ちます。STP に精通していない場合、変更を行うことによって次のいずれかの現象が起こる可能性があります。
- 不安定な動作
- アプリケーション速度の低下
- CPU 使用率の急激な上昇
- LAN のメルトダウン
『802.1D - IEEE Standards for Local and Metropolitan Area Networks: Media Access Control (MAC) Bridges』を参照してください。
使用するコンポーネント
このドキュメントの内容は、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
表記法
表記法の詳細については、『シスコ テクニカル ティップスの表記法』を参照してください。
スパニング ツリー プロトコル タイマー
STP のタイマーには、次のものがあります。
-
hello(hello):helloタイムは、ポートで送信される各ブリッジプロトコルデータユニット(BPDU)間の時間です。この時間はデフォルトでは2秒(秒)ですが、1 ~ 10秒の間で調整できます。
-
forward delay(転送遅延):転送遅延は、リスニングおよびラーニングの状態で経過する時間です。この時間はデフォルトでは15秒ですが、4 ~ 30秒の間で調整できます。
-
max age(最大経過時間):最大経過時間タイマーは、ブリッジポートがコンフィギュレーションBPDUの情報を保存するまでの最大経過時間を制御します。この時間はデフォルトでは20秒ですが、6 ~ 40秒の間で調整できます。
これら 3 つのパラメータは、各コンフィギュレーション BPDU に含まれています。また、各 BPDU のコンフィギュレーションには、別の時間に関係するパラメータが含まれており、これは message age(メッセージ経過時間)と呼ばれています。
メッセージ経過時間は、固定値ではありません。message age(メッセージ経過時間)には、ルート ブリッジが最初に BPDU を発信してからの経過した時間が含まれています。
ルート ブリッジでは message age(メッセージ経過時間)の値を 0 としてすべての BPDU を送信し、この後、通過するすべてのスイッチでこの値に 1 が加算されます。
実質的に、この値には、BPDU を受信した側がルート ブリッジからどのくらい離れているかという情報が含まれます。次の図はこの概念を示しています。

新しいコンフィギュレーション BPDU が受信された際に、BPDU の情報がポートに記録されている情報と同等かそれ以上の場合、BPDU の情報がすべて保存されます。
経過時間タイマーの実行が開始されます。経過時間タイマーは、受信時にコンフィギュレーション BPDU に含まれていた message age(メッセージ経過時間)からスタートします。
タイマーを更新する別の BPDU が受信されるまでに経過時間タイマーが max age(最大経過時間)に達した場合、そのポートの情報はエージング アウトされます。
このセクションの図に当てはめた例を次に示します。
-
スイッチ B と C は、スイッチ A から message age(メッセージ経過時間)が 0 のコンフィギュレーション BPDU を受信します。Aに向かうポートでは、情報は(max age - 0)秒でエージングアウトします。この時間は、デフォルトでは20秒です。
-
スイッチ D と E は、スイッチ B から message age(メッセージ経過時間)が 1 の BPDU を受信します。Bに向かうポートでは、(max age - 1)秒で情報がエージングアウトします。この時間は、デフォルトでは19秒です。
-
スイッチ F は、スイッチ E から message age(メッセージ経過時間)が 2 の BPDU を受信します。Eに向かうポートでは、情報は(max age - 2)秒でエージングアウトします。この時間は、デフォルトでは18秒です。
スパニング ツリー プロトコルのその他のパラメータ
STP は IEEE 802.1D で定義されています。「スパニング ツリー プロトコル タイマー」セクションで説明したタイマーに加え、IEEE では STP に関連する次のパラメータも定義されています。
-
diameter of the STP domain(dia):この値は、端末が接続された任意の2つのポイント間にあるブリッジの最大数です。IEEE では、デフォルトの STP タイマーに最大直径 7 ブリッジを考慮するように推奨しています。
-
bridge transit delay(transit delay):この値は、ブリッジが同じフレームを受信してから送信するまでに経過する時間です。これは、論理的にはブリッジにおける遅延です。IEEEでは、ブリッジの最大伝送遅延を1秒と見なすことを推奨しています。
-
BPDU transmission delay(bpdu_delay):この値は、ポートでBPDUを受信する時間と、コンフィギュレーションBPDUが別のポートに実際に送信される時間との間の遅延です。IEEEでは、BPDUの最大伝送遅延を1秒にすることを推奨しています。
-
message age increment overestimate(msg_overestimate):この値は、各ブリッジがBPDUを転送する前にmessage age(メッセージ経過時間)に追加する増分値です。「スパニングツリープロトコルタイマー」セクションで説明したとおり、Ciscoスイッチ(そしておそらくは全スイッチ)は、BPDUを転送する前にメッセージ経過時間に1秒加算します。
-
lost message(lost_msg):この値は、ブリッジ型ネットワークの1つの端から相手側の端にBPDUが移動する間に失われる可能性のあるBPDUの数です。IEEE では、消失する可能性のある BPDU 数を 3 に設定するように推奨しています。
-
transmit halt delay(Tx_halt_delay):この値は、ポートをブロックする必要があると判断してから、ブリッジがポートを実際にブロック状態に移行させるのに必要な最大時間です。IEEEでは、このパラメータに1秒を使用することを推奨しています。
-
medium access delay(med_access_delay):この値は、デバイスが初回伝送時にメディアにアクセスするために必要な時間です。これは、CPU がフレーム送信を決定してから、フレームが実際にブリッジを離れ始める瞬間までの時間です。IEEEでは、最大時間を0.5秒にすることを推奨しています。
これらのパラメータから、他の値を計算できます。その他のパラメータと計算を次に示します。この計算では、すべてのパラメータに IEEE の推奨するデフォルト値を使用するものと仮定しています。
-
End-to-end BPDU propagation delay:この値は、BPDUがネットワークの1つの端末から相手側の端末に移動するのに必要な時間です。直径を7ホップ、消失する可能性のあるBPDUを3つ、ハロータイムを2秒と仮定します。この場合、式は次のようになります。
End-to-end_BPDU_propa_delay
= ((lost_msg + 1) x hello) + ((BPDU_Delay x (dia – 1))
= ((3 + 1) x hello) + ((1 x (dia – 1))
= 4 x hello + dia – 1
= 4 x 2 + 6
= 14 sec
-
Message age overestimate:このパラメータは、BPDUが発信されてからのメッセージ経過時間を勘定するためのものです。各ブリッジがBPDUメッセージ経過時間を1秒増加させていると仮定します。式は次のようになります。
Message_age_overestimate
= (dia – 1) x overestimate_per_bridge
= dia – 1
= 6
-
Maximum frame lifetime:この値は、ブリッジ型ネットワークに送信されたフレームが、宛先に到着する前にそのネットワークに存続する最長時間です。式は次のようになります。
Maximum_frame_lifetime
= dia x transit_delay + med_access_delay
= dia + 0.5
= 7.5
= 8 (rounded)
-
Maximum transmission halt delay:この値は、ポートのブロックが決定されてから、実際にブロックされるまでに必要な時間です。IEEEでは、このイベントの最大値として1秒をカウントしています。式は次のようになります。
Maximum_transmission_halt_delay
= 1
スパニング ツリー プロトコル タイマーのデフォルト値
このセクションでは、各パラメータに推奨値を使用した場合の max age(最大経過時間)と forward delay(転送遅延)のデフォルト値を算出する方法について説明しています。
推奨値はdiameterが7、hello timeが2秒です。
最大経過時間
最大経過時間は、ネットワークの周辺にあるスイッチが安定した状態(つまり、ルートがまだ有効な場合)ではルート情報をタイムアウトしないという事実を考慮します。
max age(最大経過時間)の値には、BPDU transmission delay の合計と message age increment overestimate が反映される必要があります。したがって、max age(最大経過時間)の式は次のようになります。
max_age
= End-to-end_BPDU_propa_delay + Message_age_overestimate
= 14 + 6
= 20 sec
この計算によって、IEEE がどのようにして推奨される max age(最大経過時間)のデフォルト値を算出しているかがわかります。
転送遅延
ポートをリスニングステートに移動すると、アクティブなSTPトポロジに変更があり、ポートがブロックから転送に移行したことを示します。
そのため、転送遅延が発生するリスニング期間とラーニング期間は、次の連続した期間をカバーする必要があります。
-
最初のブリッジポートがlisten状態になってから(その後の再設定を通じてそこに留まります)、ブリッジされたLANの最後のブリッジがアクティブなトポロジの変更を受信するまでの時間
また、max age(最大経過時間)の計算に使用するのと同じ遅延(message age overestimate と BPDU propagation delay)が反映される必要があります。
-
最後のブリッジが、前のトポロジで受信されるフレームの転送を停止するための時間(maximum transmission halt delay)から、前のトポロジで転送される最後のフレームが消えるまでの時間(maximum frame lifetime)
この時間は、フレームの重複を防ぐために必要です。
したがって、転送遅延の2倍の時間(リスニング時間+ラーニング時間)には、これらすべてのパラメータが含まれています。式は次のようになります。
2 x forward delay
= end-to-end_BPDU_propagation_delay + Message_age_overestimate +
Maximum_frame_lifetime + Maximum_transmission_halt_delay
= 14 + 6 + 7.5 + 1 = 28.5
forward_delay
= 28.5 /2
= 15 (rounded)
max age(最大経過時間)タイマーと forward delay(転送遅延)タイマーの調整
これらのパラメータの中で、調整できるのは次のパラメータだけです。
注:これらのパラメータを調整できるかどうかは、ネットワークによって異なります。
次の値はいずれも変更しないでください。これらの値は、IEEE の推奨値のままにします。
これらの値は、3つのBPDUを失ったり、スイッチを経由するフレームに対して1秒間の遅延が発生したりする可能性が低い現代のネットワークでは、かなり保守的に見えます。
しかし、これらの値は次のようなストレス状態で起こる STP ループを防止するために存在することを忘れないでください。
したがって、これらのパラメータを固定値として考慮する必要があります。「スパニング ツリー プロトコル(STP)タイマーのデフォルト値」セクションに示した式を使用すると、次のようになります。
max_age
= End-to-end_BPDU_propa_delay + Message_age_overestimate
= ((lost_msg + 1) x hello) + ((BPDU_Delay x (dia – 1)) + (dia – 1) x overestimate_per_
bridge
= (4 x hello) + dia – 1 + dia – 1
= (4 x hello) + (2 x dia) – 2
forward_delay
= (End-to-end_BPDU_propa_delay + Message_age_overestimate +
Maximum_frame_lifetime + Maximum_transmission_halt_delay ) / 2
= ((lost_msg + 1) x hello) + ((BPDU_Delay x (dia – 1)) + ((dia – 1)
x overestimate_per_bridge) + (dia x transit_delay) + med_access_delay
+ Maximum_transmission_halt_delay) / 2
= ((4 x hello) + dia – 1 + dia – 1 + dia + 0.5 + 1) / 2
= ((4 x hello) + (3 x dia) – 0.5) / 2
以上の計算の後、最後に次の 2 つの式が残っています(0.5 を丸めた場合)。
max_age = (4 x hello) + (2 x dia) – 2
forward_delay = ((4 x hello) + (3 x dia)) / 2
コンバージェンス時間を改善するためにSTPタイマーを調整する場合は、次の2つの式を厳密に使用する必要があります。
次に例を示します。ブリッジ型ネットワークの直径(diameter)が 4 の場合、次のパラメータを使用する必要があります。
hello = 2 (default) then
max_age = 14 sec
forward_delay = 10 sec
If hello = 1 then
max_age = 10 sec
forward_delay = 8 sec
注:HELLO = 1 は、最小の値です。直径(diameter)が4の場合、最大経過時間を10秒未満に調整し、転送遅延を8秒未満に調整することはできません。
ハロータイムが1秒へ減少
STPパラメータを減らす最も簡単で確実な方法は、ハロータイムを1秒に減らすことです。
ただし、ハロータイムを2秒から1秒に下げると、各ブリッジで送受信されるBPDUの数が2倍になることに注意してください。
この増加によって、BPDU を 2 倍処理する必要が出るため、CPU の負荷が加算されます。VLAN やトランクが複数ある場合には、この負荷が問題となる可能性があります。
直径の計算
直径(diameter)は、ネットワーク設計によってまったく異なります。直径(diameter)とは、ブリッジ型ネットワーク内の任意の 2 つのスイッチをリンクさせるために横断するスイッチ(発信元と宛先を含む)の、最悪の場合を想定した最大数です。直径を算出する際には、同じスイッチを二度通過することはありません。このドキュメントの「スパニング ツリー プロトコルのタイマー」セクションの図では、直径(diameter)が 5 になっています(パス F-E-B-A-C)。
ここで、このセクションの図を確認します。
この図では、いくつかのアクセス スイッチ(スイッチ C、D、および E)が 2 つのディストリビューション スイッチ(スイッチ A および B)に接続しています。
ディストリビューション スイッチとコアの間には、レイヤ 3(L3)の境界があります。ブリッジ ドメインは、ディストリビューション スイッチで終わっています。STP の直径(diameter)は 5 です。

直径(diameter)が 5 より大きいスイッチのペアはないことが図からわかります。
スパニングツリープロトコルタイマーの変更
「スパニング ツリー プロトコルのタイマー」セクションで説明しているとおり、各 BPDU には hello、forward delay(転送遅延)、および max age(最大経過時間)という STP タイマーが含まれています。
IEEE ブリッジは、ローカルなタイマー値の設定には関係しません。IEEE ブリッジでは、ブリッジが受け取る BPDU 内のタイマーの値が考慮されます。
実際には、STP のルート ブリッジに設定されているタイマーだけが重要です。ルートが失われると、新しいルートが起動して、そのローカルなタイマー値がネットワーク全体に適用されます。
したがって、同じタイマー値をネットワーク全体に設定する必要はありませんが、ルート ブリッジとバックアップ ルート ブリッジでのタイマーの変更は最低限設定する必要があります。
Catalyst OS(CatOS)ソフトウェアが稼働する Cisco スイッチを使用する場合は、ルートを設定し、式に従ってパラメータを調整できるマクロがいくつかあります。
set spantree root vlan dia diameter hello hello_time
コマンドを発行して、diameter(直径)とhello timeを設定します。ランダム データの例は次のとおりです。
Taras> (enable) set spantree root 8 dia 4 hello 2
VLAN 8 bridge priority set to 8192.
VLAN 8 bridge max aging time set to 14.
VLAN 8 bridge hello time set to 2.
VLAN 8 bridge forward delay set to 10.
Switch is now the root switch for active VLAN 8.
STPネットワークの直径(diameter)が設定されていても、コンフィギュレーションにもshow
コマンドの出力にも設定されている直径(diameter)の値は表示されません。
関連情報