STP直径とタイマー計算

STPの最大エージタイマー(max age)は20秒、転送遅延タイマー(forward delay)は15秒と何故こんなに長いのでしょうか?

本項では、最大エージタイマーと転送遅延タイマーの根拠を説明すると共に、直径やタイマーの計算方法を説明します。

最大エージタイマーの根拠

 BPDUはルートブリッジから2秒間隔(Hello Time)で送信されますが、7台のスイッチが接続されたネットワークで最後まで届き渡る時間は、ロストする可能性も考慮して最大14秒が想定されています。これを到達遅延時間と言います。

BPDU転送時間

 このため、最低14秒は受信したBPDUの情報を保持する必要があります。

 又、ルートブリッジでBPDUが送信されてからの時間をメッセージ経過時間(message age)と呼び、BPDUの中に含まれています。BPDUは、1台のスイッチを介する度に1秒かかる前提のため、スイッチはメッセージ経過時間に1プラスしてBPDUを転送します。このため、7台のスイッチが接続されたネットワークで、BPDUのメッセージ経過時間は最大6秒です

メッセージ経過時間

 最大エージタイマーを経過した古いBPDUの情報は、ネットワーク上に残らないようにしたいとします。これは、スイッチがBPDUを受信した時、メッセージ経過時間を開始時間としてタイマーを動作させ、最大エージタイマーを超えると破棄する事で可能です。

メッセージ経過時間

 スイッチのメッセージ経過時間は最大6秒から始まります。その後14秒はBPDUが届かない可能性があるため、保持する必要があります。つまり、最大エージタイマーは20秒必要です。最大エージタイマーが20秒の時、古い情報は20秒以内にネットワーク上から消えます。

転送遅延タイマーの根拠

 トポロジーチェンジが発生した時、最大20秒間は古い情報を保持するため、必要なインターフェースで状態遷移しない可能性があります。状態遷移が必要と分かってからブロッキング状態になるまで1秒かかる前提とします。この場合、リスニング状態になったインターフェースは、21秒(20秒+1秒)待ってからフォワーディングに遷移しないと、フレームがループする可能性があります。

 又、ネットワーク上でフレームが残っている間に経路が切り替わると、2重に転送される可能性があります。このため、既にネットワーク内にあるフレームが消えるまで待つ必要があります。これは、8秒かかる事を想定しています。

転送遅延タイマーの根拠

 このように、ループやフレームの2重転送を防ぐためには、29秒間(20秒+1秒+8秒)フレームを転送しないようにする必要があります。このため、転送遅延タイマーは15秒がデフォルトになっています。リスニング状態15秒、ラーニング状態15秒を経てフォワーディング状態になります。

直径と計算式

 最大エージタイマーと転送遅延タイマーのデフォルト値は、かなり状態が悪いネットワークを想定した安全値で算出されています。又、パソコン等が通信する時に経由するスイッチ(直径)が、最大7段である事を前提に計算されています。従って、STPでの推奨構成は、直径が最大7です。

 直径が7の時、到達遅延時間、最大エージタイマー、転送遅延タイマーは、以下で算出されています。

到達遅延時間 = (ロスト回数 + 成功回数) × Hello Time + BPDU転送時間
= (3 + 1) × 2 + 6
= 14

最大エージタイマー = 到達遅延時間 + 最大メッセージ経過時間
= 14 + 6
= 20

転送遅延タイマー = (最大エージタイマー + ブロッキング時間 + フレーム消失時間) ÷ 2
= (20 + 1 + 8) ÷ 2
≒ 15

 ロスト回数は、BPDUが途中で3回ロストする事を前提にしているため、最悪4回目で成功する場合は送信までに8秒((3 +1)×2)かかります。BPDU転送時間は末端のスイッチでBPDUを受信するまでの時間で、スイッチ1台につき1秒かかる事を前提にしています。つまり、直径が7の場合は6秒です。又、フレーム消失時間は、フレームが2重に転送されないように待つ時間で、直径 + 1秒です。

タイマーの調整

 最大エージタイマーと転送遅延タイマーの調整例です。

 直径が5の場合、スイッチは最大4台経由するためBPDU転送時間は4となり、到達遅延時間は以下になります。

到達遅延時間 = (3 + 1) × 2 + 4
= 12

 メッセージ経過時間も4になり、フレーム消失時間は6になるため、最大エージタイマーと転送遅延タイマーは、以下に変更出来ます。

最大エージタイマー = 12 + 4
= 16

転送遅延タイマー = (16 + 1 + 6) ÷ 2
≒ 12

 更にHello Timeを1秒にすると、到達遅延時間は以下になります。

到達遅延時間 = (3 + 1) × 1 + 4
= 8

 このため、最大エージタイマーと転送遅延タイマーは、以下に変更出来ます。

最大エージタイマー = 8 + 4
= 12

転送遅延タイマー = (12 + 1 + 6) ÷ 2
≒ 10

 この時のブロッキング状態からフォワーディング状態になるまでの最大時間は、32秒(12 + 10 × 2)です。

 Hello Timeを短くするとスイッチのBPDUを処理する数が多くなり、負荷につながる等弊害もあるため、デフォルトからの変更は推奨しませんが、変更する時はSTPを構成する全てのスイッチで同じ設定にする必要があります。

STP詳細を最初から「STPの役割決定手順

  • このエントリーをはてなブックマークに追加