Contents
STP
スパニングツリープロトコル(Spanning Tree Protocol)は、IEEE 802.1Dで定義される複数のスイッチで構成される LAN のループ状態を回避するためのデータリンク層のプロトコルです。
- スイッチによる冗長ネットワークでループを防止する
- ブロードキャストストーム(レイヤ2ループ)を防止する
- リンク障害時に経路を自動で切り替える
機能 | 説明 |
---|---|
Port Fast | スパニングツリーの計算をせず即座にデータの送受信を可能にする |
Uplink Fast | 直接的な障害の収束を早める |
Backbone Fast | 間接的な障害の収束を早める |
ルートガード | 上位のBPDUを受信したポートを使用不能にすることで想定外のスイッチがルートブリッジになってしまうことを防ぐ。 |
BPDUガード | BPDUを受信したポートを使用不能にすることでスイッチの誤接続を防ぐ |
BPDU
スイッチ間で情報をやり取りする際の管理用のフレームをBPDU (Bridge Protocol Data Unit)といいます。
<BPDUに含まれる主な情報>
- ルートID(ルートブリッジのブリッジID)
- ブリッジID(自身のブリッジID)
- パスコスト(ルートブリッジに至るまでのルートパスコスト)
- ポートID(自身のポートID)
- Helloタイム(BPDUの送信間隔)
ブロッキングポートの選出方法
STPでは一部のポートをブロックすることによってループを防ぎます。そのブロッキングポートの決定方法は以下の通りです。最後に残ったのがブロッキングポートです。
- ルートブリッジの選出
- ルートポートの選出
- 指定ポートの選出
- ブロッキングポートの選出
1.ルートブリッジの選出
- ツリー構造の起点となる中心のスイッチをルートブリッジといいます。
- ブリッジIDを比較し最も低い値のスイッチがルートブリッジとなります。
ブリッジID
前半2バイト | 後半6バイト |
プライオリティ(優先度) | MACアドレス |
2.ルートポートの選出
ルートポートとはルートブリッジまでの最短のパスコストを持つポートのことです。
パスコストはポートの帯域幅によって決められており、通信速度が早いほど小さくなります。
【パスコストのデフォルト値】
略 | リンクの帯域幅 | パスコスト値 |
---|---|---|
E | 10Gbps | 2 |
1Gbps | 4 | |
Fa | 100Mbps(Fast Ethernet) | 19 |
10Mbps | 100 |
<ルートポート選出方法>
- 累計のパスコストが最も小さいポート
- 送信元ブリッジIDが最も小さいBPDUを受け取ったポート
- 送信元ポートIDが最も小さいBPDUを受け取ったポート
3.指定ポートの選出
スイッチ間の範囲(セグメント)で上位のBPDUを送信するポートが指定ポート(Designated Port)です。
【指定ポート選出方法】
- ルートパスコストが小さいBPDUを送信するポート
- BPDUの送信元ブリッジIDが小さいポート
- 送信元ポートIDが最も小さいBPDUを送信するポート
ルートポートの向側は指定ポートになると考えてよいです。ルートブリッジは全て指定ポートになります。
ポートロール | ステータス | 選出 | 説明 |
---|---|---|---|
ルートポート (RP) | フォワーディング | 非ルートブリッジに1つ | ルートブリッジに最も近いポート |
指定ポート (DP) | フォワーディング | 各セグメントに1つ | ルートブリッジに最も近いスイッチのポート |
非指定ポート (NDP) | ブロッキング | RP/DPに選出されなかったポート | データフレームの送受信をしない(BPDU)の受診は行う |
ポートの状態遷移とタイマー
![](https://ntorelabo.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-12-23.29.20.png)
状態 | 内容 | MACアドレスの学習 | フレームの転送 |
---|---|---|---|
Disable | シャットダウン状態または障害などにより無効になっている状態。 | 不可 | 不可 |
Blocking | BPDUは受信する。初期や非指定ポートはこの状態になる。 | 不可 | 不可 |
Listening | BPDUを受信し、各ポートの役割を決定している状態。 | 不可 | 不可 |
Learning | BPDUを送受信している状態。MACアドレスを学習している。 | 可 | 不可 |
Forwarding | データ転送可能な状態 | 可 | 可 |
タイマー | 内容 |
---|---|
Hello | スイッチは2秒ごとにBPDUを送信する。ルートブリッジ決定後、各スイッチはルートブリッジからのBPDUを受け取り、それをもとにBPDU作成して下流のスイッチに送信する。 |
最大エージ | 最後に受け取ったBPDUを保持する時間。デフォルトで20秒。 |
転送遅延 | リスニングとラーニングの状態に留まる時間。デフォルトで15秒。 |
コンバージェンスにかかる時間 | |
---|---|
直接的な障害 | 15(転送遅延)× 2 = 30 |
間接的な障害 | 15(転送遅延)× 2 + 20(最大エージタイム) = 50 |
STP各種タイマーの設定
Switch(config)#spanning-tree vlan [ VLAN番号 ] [タイマーの種類 ] [ 秒 ]
Port Fast
- リスニング状態とラーニング状態を経由せずにフォワーディング状態になり、通信が可能になります。
- PCなどのデバイスが接続されるポートにPort Fastの設定ができます。
- Cisco独自
- スイッチで設定するとループの原因になってしまう
- ※PCの電源オンオフで発生するトポロジ変更通知を抑制します。
全てのアクセスポート上でPortFastを有効化
(config)#spanning-tree portfast default
特定のポート上でPortFastを有効化
(config-if)#spanning-tree portfast
トランクポートでポートファストを有効化
(config-if)#spanning-tree portfast trunk
※インターフェイスコンフィグレーションモード
BPDUガード
BPDUガードはPort Fastが有効なポートでBPDU(Bridge Protocol Data Unit)と呼ばれるフレームを受信したとき、そのポートを無効(err-disabled)にする機能です。
PortFastは、PCやサーバなどのエンドデバイスを接続しているポートに設定することが前提です。BPDUは間違ったポートにPortFastを設定した場合ループが発生するのを回避します。
ルートガード
上位のBPDU(現在のルートブリッジよりもブリッジIDの小さいBPDU)を受信したポートを使用不能にすることで想定外のスイッチがルートブリッジになってしまうことを防ぐ。
RSTP
RSTP( Rapid Spanning Tree Protocol )
- STPを改良して高速収束を実現したプロトコルです(RSTPは数秒でコンバージェンス、STPは最大50秒)。
- STPはIEEE802.1Dで標準化されてRSTPはIEEE802.1Wで標準化されたプロトコルです。
- 正確には rapid-PVST+ として動作するモード。
STP | RSTP |
---|---|
ルートポート(RP) | ルートポート(RP) |
指定ポート(DP) | 指定ポート(DP) |
非指定ポート | 代替ポート(RPの予備) バックアップポート(DPの予備) |
![](https://ntorelabo.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-13-21.00.34.png)
RSTPでは、スイッチと接続していないポートをエッジポートと呼び、即時、フォワーディング状態へ移動します。
エッジポートでBPDUを受信すると、エッジポートを解除して標準ポートになります。
STP | RSTP | MACアドレス学習 | データ転送 |
---|---|---|---|
ブロッキング | ディスカーディング | しない | しない |
リンニング | ディスカーディング | しない | しない |
ディセーブル | ディスカーディング | しない | しない |
ラーニング | ラーニング | する | しない |
フォワーディング | フォワーディング | する | する |
シェアードリンク | STPタイマーを使った収束 |
ポイントツーポイントリンク | STPタイマーに依存しない高速収束 |
RSTPを有効にする
spanning-tree mode rapid-pvst
CST
CST(Common Spanning Tree)では複数のVLANを1つのSTPで管理する。
PVST+
- PVST(Per VLAN Spanning Tree)はCisco独自です。
- STP構成をVLANごとに構築できる
- PVSThとランキングプロトコルのISLのみの対応だったが、PVST+ではIEEE802.1Qでも使用可能になりました。
- VLANごとで任意のスイッチをルートブリッジにできます。
- Ciscoスイッチにおけるデフォルトのスパニングツリーは、PVST+になります。
- 拡張システムIDを使用します。
(VLANごとに動作するので、ブリッジプライオリティとMACアドレスだけではVLANごとのSTPを識別できないため)
機能 | デフォルト設定 |
---|---|
スパニングツリーモード | PVST+( Rapid PVST+ と MSTP はディセーブル ) |
スイッチプライオリティ値 | 32768(VLAN単位で設定可能 ) |
ポートプライオリティ値 | 128( ポート単位で設定可能 ) |
ポートコスト値 | 4(1000Mbps) 19(100Mbps) 100(10Mbps) |
VLANポートプライオリティ値 | 128(ポート単位で設定可能) |
VLANポートコスト値 | 4(1000Mbps) 19(100Mbps) 100(10Mbps) |
STPタイマー : Helloタイム | 2秒 |
STPタイマー : Forward-delayタイム | 15秒 |
STPタイマー : Max-ageタイム | 20秒 |
STPタイマー : 転送保留カウント | 6BPDU |
スパニングツリーインスタンス ( 変更不可 ) | 128( PVST+, Rapid PVST+ ) |
最大ホップカウント | 20( MSTPのみ ) |
STPのコマンド
show spanning-tree vlan [VLAN]を指定すると、そのVLANだけのSTPの状態が表示されます。
ルートブリッジの設定
<スタティック>プライオリティー値の変更するためのコマンド
「スタティック(明示的にプライオリティ値を小さくすることでルートブリッジに設定します。)なルートブリッジの設定」
(config)#spanning-tree vlan <vlan-id> priority <priority>
<ダイナミック>
(config)#spanning-tree vlan <vlan-id> root primary
「ダイナミック(自動的に他のスイッチよりもプライオリティ値を小さくすることでルートブリッジに設定します。)なルートブリッジの設定」
(config)#spanning-tree vlan root primary
「トランクポートでPost Fastを有効にするコマンド」
(config-if)#spanning-tree portfast trunk
「すべてのアクセスポート上でPost Fastを有効にするコマンド」
(config)#spanning-tree portfast default
「すべてのPost FastポートでBPDUガードを有効にするコマンド」
(config)#spanning-tree portfast bpduguard default
「特定のポート上でBPDUガードを有効にするコマンド」
(config-if)#spanning-tree bpduguard enable
「CatalystスイッチでRSTPを有効にするコマンド」
(config)#spanning-tree rapid-pvst
「STP、RSTPの動作を検証する」
#show spanning-tree
![](https://ntorelabo.com/wp-content/uploads/2022/09/スクリーンショット-2022-11-06-11.42.47.png)
- RSTPを有効にしている場合は「ieee」ではなく「rstp」と表示される
- ルートブリッジに関する情報
- プライオリティ値、MACアドレス
- 今みているブリッジはルートブリッジですよ!
- ハロータイム、マックスエイジ、フォワーディングディレイ
- 自分自身に関する情報
- プライオリティ値
- MACアドレス
- ハロータイム、マックスエイジ、フォワーディングディレイ
- エイジングタイム(過ぎると削除される)
- 役割(指定ポート)
- ポートの状態(フォワーディング)
- コスト(ルートブリッジのパスコストではない)
- ポートのプライオリティと番号
- 接続方法(ポイントツーポイント)
![](https://ntorelabo.com/wp-content/uploads/2022/09/スクリーンショット-2022-09-12-22.32.04.png)