STP【STPに関する設定と確認】


CCNAの試験に向けて学習中。
復習に見返せるようにメモしていきます。
ほぼ自分の勉強メモです。
過度な期待はしないでください。

前回投稿記事

こちらの STP【STPの概要】投稿記事と
こちらの STP【STPに関する機能】投稿記事の続きです

3.STPに関する設定と確認

3-1.STPの確認

■ 3-1-1.STPの状態の確認

STPの状態を確認するには、特権EXECモードで次のshow spanning-tree コマンド
実行します。

# show spanning-tree [vlan < VLAN番号 >]

オプションとして、[vlan ]を指定すると該当するVLANに関連する状態だけが表示されます。
指定しないと、スイッチポートが有効になっているVLANの数だけSTPの状態が表示されます。

show spanning-treeコマンドの実行結果を確認していきます。
先ずは、ルートブリッジのスイッチの確認

項番 説明                                   
VLAN1 におけるSTPのステータス情報
STPモードの情報。 [ ieee ] は PVST+ を示す
ルートブリッジのブリッジプライオリティ
ルートブリッジのMACアドレス
このスイッチ自身がルートブリッジである場合に表示される情報
ルートブリッジによりアドバタイズされるSTPの各種タイマーの情報
このスイッチ自身のブリッジプライオリティ。プライオリティ値 + VLAN IDの値の合計値
このスイッチ自身のMACアドレス
このスイッチ自身に設定されているSTPの各種タイマーの情報
MACアドレステーブルのエージングタイム※1
STPポートの役割を示す※2
STPポートのステータスを示す※3
そのポートのコスト値を示す※4
ポートIDには(Prio.Nbr)、ポートのプライオリティと番号を表示
ポートタイプの情報を表示※5

※1 エージングタイムとは、MACアドレステーブルのエントリの有効期限を表します。
  デフォルトでは、「300秒」でエントリは削除されます。
※2 [Root] はルートポート[Desg] は指定ポート[Altn] は非指定ポート
※3 [FWD] はフォワーディング[LIS] はリスニング[LRN] はラーニング[BLK] はブロッキング
※4 [2] は10Gbps[4] は1Gbps[19] は100Mbps[100]は10Mbps
※5 [P2p] はポイントツーポイント(全二重)[Shared] は間にハブ等が接続されている共有リンク
  [P2p Edge] はエッジポート(PortFastが設定されているポート)

続いて、ルートブリッジ以外のスイッチの確認

ルートブリッジの場合と異なる点は、ルートブリッジまでのパスコストが表示されている事と、
どのポートがルートブリッジに向かうポートかが表示されています。

項番 説明                                   
ルートブリッジまでのパスコストが表示
どのポートがルートブリッジに向かうポートかが表示


■ 3-1-2.STPが動作しているインターフェイスの確認

STPが動作しているインターフェイスを確認するには、特権EXECモード
次のshow spanning-tree interface コマンドを実行します。

このコマンドを実行すると、各インターフェイスがVLAN事にどの役割を与えられているかを
確認出来ます。表示内容は、show spanning-tree コマンドのインターフェイス情報と同じです。

# show spanning-tree interface < インターフェイス >

<インターフェイス>には、fastEthernet 0/0のように設定したいインターフェイスを指定


■ 3-1-3.障害発生時の確認

動作の確認の為には debugコマンドを使用します。debugコマンドは、パケットのやりとりや、
状態の変化を細かく確認でき、障害原因の究明に役に立ちます。

debugコマンドは、何かが発生する度に継続的に画面に状態を表示させる為、CPUに負荷が
掛かりやすいので、必要な時だけ動かし、それ以外の時には停止させておくのが良い。

STP動作の確認を開始するには、特権EXECモード
次のdebug spanning-tree events コマンドを実行します。

# debug spanning-tree events

debug spanning-tree events コマンドを停止するには、特権EXECモード
次のno debug spanning-tree events コマンドを実行します。

# no debug spanning-tree events



ルートブリッジと繋がっていたインターフェイスがダウン等の障害が発生した場合、
下記の例だと、「Fa1/2」が新しくルートポートになり、リスニング状態になります(①)。
その後、転送遅延タイマーの15秒が経過した後に、ラーニング状態になります(②)。
また、その15秒後にフォワーディング状態に遷移します(③)。

# debug spanning-tree events
(省略)
*Mar  1 00:04:44.607: STP: VLAN1 Fa1/2 -> listening ★★<--新しくルートポートになる①
(省略)
*Mar  1 00:04:59.607: STP: VLAN1 Fa1/2 -> learning ★★<--15秒経過(15秒経過)②
(省略)
*Mar  1 00:05:14.607: STP: VLAN1 Fa1/2 -> forwarding ★★<--15秒経過(30秒経過)③

このように、タイマーによる状態遷移が確認出来ます。
障害が起きても自動で経路が切り替わり、この例の場合30秒程で通信が回復します。


3-2.トポロジ変更に関するオプション

STPのトポロジを変更させて事前に管理者が意図する構成にする為のコマンドを確認します。

■ 3-2-1.ブリッジプライオリティの変更

ブリッジプライオリティを変更するには、グローバルコンフィギュレーションモード
次のspanning-tree vlan priority コマンドを実行します。

(config)# spanning-tree vlan < VLAN番号 > priority < プライオリティ >

<VLAN番号>には、対象のVALNの番号を指定します
<プライオリティ>には、ブリッジプライオリティの値を指定します。
<プライオリティ>は、4096の倍数で指定します。
プライオリティに指定できる値(0, 4096, 8192, 12288, 16384, 20480, 24576, 28672, 32768,..61440)

ルートブリッジにしたいスイッチでは、ブリッジプライオリティを小さくします。
ブリッジプライオリティを変更してルートブリッジを変更すると、各スイッチのポートの役割も
変更されます。



また、任意のスイッチをルートブリッジにする方法は、ダイナミックにルートブリッジを
指定する方法もあります。

ダイナミックにルートブリッジを指定するには、グローバルコンフィギュレーションモード
次のspanning-tree vlan root priority コマンドを実行します。

(config)# spanning-tree vlan < VLAN番号 > root priority

このコマンドを実行すると、指定したVLAN上のルートブリッジに選出されているスイッチの
ブリッジプライオリティをチェックし、そのスイッチのブリッジプライオリティより小さい値が
自動的に設定され、自身がルートブリッジに選出されます。

例えば、現在のルートブリッジのブリッジプライオリティが 16384だった場合、
コマンドを実行したスイッチのブリッジプライオリティはその値より小さい 12288に
自動的に設定されます。


■ 3-2-2.パスコストの変更

ポートのパスコストを変更する事で、ポートの役割を変更出来ます。
ポートのパスコストを変更するには、グローバルコンフィギユレーションモード
次のspanning-tree vlan cost コマンドを実行します。

(config)# spanning-tree vlan < VLAN番号 > cost < パスコスト値 >

コストは、1〜200,000,000の間で指定出来ます。
デフォルト値は、[2] は10Gbps、[4] は1Gbps、[19] は100Mbps、[100]は10Mbps


■ 3-2-3.パスコストのデフォルト値の変更

パスコストのデフォルトでは、ショート法が採用されていますが、コマンドによって
ショート法とロング法を切り替える事が出来ます。

パスコストのデフォルト値を変更するには、グローバルコンフィギュレーションモード
次のspanning-tree pathcost method コマンドを実行します。

(config)# spanning-tree pathcost method < short | long >


■ 3-2-4.ポートプライオリティの変更

ポートプライオリティを指定するには、インターコンフィギュレーションモード
次のspanning-tree vlan port-priority コマンドを実行します。

(config-if)# spanning-tree vlan < VLAN番号 > port-priority < プライオリティ >

ポートIDのプライオリティも役割の選択基準になります


3-3.PortFastの設定と確認

STPでは、PCやルータがなどが接続されているポートでも通常の状態遷移を行いますが、
PortFastを設定する事でこれらのポートを即座にフォワーディング状態に遷移させる事が可能です。

PortFastを設定するには、インターフェイスコンフィギュレーションモード
次のspanning-tree portfast コマンドを実行します。

(config-if)# spanning-tree portfast  [ default | disable ]

「default」と設定すると、全てのインターフェースでPortFastが有効になります。
「disable」と設定すると、指定したインターフェースだけ無効にする事が出来ます。

※ PortFastの設定を行うと以下のようなメッセージが出力されます、

%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc... to this
interface  when portfast is enabled, can cause temporary bridging loops. Use with CAUTION

%Portfast has been configured on GigabitEthernet0/1 but will only
have effect when the interface is in a non-trunking mode.

「ハブやスイッチなどが接続されたポートでは、フレームのループが発生するかもしれないため
注意して使用してください」といった警告メッセージです。

PortFastの設定後、debug spanning-tree events コマンドを実行して動作の確認を
してみると、

*Mar  1 00:01:04.607: STP: VLAN0001 Fa0/1 -> jump to forwarding from blocking

「jump to forwarding from blocking」と表示されれば、ブロッキングからフォワーディングに
遷移出来ている事が確認出来ます。


3-4.BPDUガードの設定と確認

■ 3-4-1.BPDUガードの有効化

BPDUガードを有効化にするには、グローバルコンフィギュレーションモードまたは、
インターフェイスコンフィギュレーションモードで使用します。



▶︎ グローバルコンフィギュレーションモードの場合
グローバルコンフィギュレーションモードの場合、PortFastが設定されているポートの全てで
BPDUガードが有効になります。グローバルコンフィギュレーションモードでBPDUガードを
有効にするには spanning-tree portfast bpduguard default コマンドを実行します。

(config)# spanning-tree portfast bpduguard default

BPDUガードを無効にするには、noを付けて実行します。

(config)# no spanning-tree portfast bpduguard default



▶︎ インターフェイスコンフィギュレーションモードの場合
インターフェイスコンフィギュレーションモードでは、PortFastが設定されているかどうかに関係なく
そのインターフェイスのみで有効になります。
インターフェイスコンフィギュレーションモードでBPDUガードを
有効にするには spanning-tree bpduguard コマンドを実行します。

(config)# spanning-tree bpduguard < enable | disable >

<enable>を指定すると有効になり、<disable>を指定すると無効になります。

■ 3-4-2.BPDUガードの設定の確認


BPDUガードが有効になっているFa0/3ポートにBPDUが届い際に、インターフェイスを確認すると、

FastEthernet 0/3 is down, line protocol is down (err-disabled)

と表示されていれば、Fa0/3ポートがエラーディーゼル状態になった事を示している。

エラーディーゼル状態になったポートは、スイッチを外してサーバを接続しても
デフォルトの設定では自動復旧しません。
手動で復旧させるには、一度shutdown コマンドを実行してから no shutdown コマンドを
実行すれば
復旧します。

また、以下のrecoveryコマンドを設定しておけば300秒(デフォルト)ごとに自動的に
ポートを復旧させる事が出来ます。

(config) # errdisable recovery cause bpduguard


3-5.ルートガードの設定と確認

ルートガードを有効にするには、インターフェイスコンフィギュレーションモード
次のspanning-tree guard root コマンドを実行します。

(config-if)# spanning-tree guard root

ルートガードを無効にするには、noを付けて実行します。

(config-if)# no spanning-tree guard root




ルートガードを使用すれば、ルートガードを適用したポートで上位BPDUを受信しても
root-inconsistent(ルート不整合)になりポートがブロックされることから、既存のSTPトポロジーは
保護され、通信断の問題は発生しません。
なお、不正なBPDUを受信したポートはroot-inconsistent状態になりますが、
不正BPDUを受信しなくなると root-inconsistent から回復してフレームの転送ができるようになります。

ルートガードの設定がされているインターフェイス情報を確認すると、

Interface  Role  Sts  Cost   Prio.Nbr  Type
Fa0/3    Desg BKN* 19    128.3    P2p *ROOT-Inc

インターフェイスのTypeに 「ROOT-Inc」表示され、ルート不整合となっている事が確認出来ます。
Stsに表示されている 「BKN
」はbrokenという意味です。


3-6.RSTPの設定と確認

RSTPを利用するには、全てスイッチで spanning-tree mode rapid-pvst コマンドを実行し、
動作モードをRSTPに変更する必要があります。
RSTPとSTPは相互性がある為、RSTPとSTPは混在させる事は可能ですが、RSTPとSTPは混在していると
RSTPの高速なコンバージェンスを利用出来ません。
その為、全てのスイッチで動作モードをRSTPに変更させる必要があります。

動作モードをSTPからRSTPに変更させるには、グローバルコンフィギュレーションモード
次のspanning-tree mode rapid-pvst コマンドを実行します。

(config)# spanning-tree mode < pvst | rapid-pvst >

<pvst>は、STP(IEEE802.1D)のモード。正確には PVST+ として動作するモード
<rapid-pvst>は、RSTP(IEEE802.1W)のモード。正確には rapid-PVST+ として動作するモード



spanning-tree mode rapid-pvst コマンドの実行結果を確認していきます。

Spanning tree enabled protocolが、「rstp」に変わっています。
これによりスイッチが現在 rapid-pvstで動作していることが確認出来ます。