STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
- 1. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPとその仲間たち
〜 STP, RSTP, MSTPの概
要 〜
STPとその仲間たち
〜 STP, RSTP, MSTPの概
要 〜
木本雅彦 <kimoto@soum.co.jp>
<kimoto@ohnolab.org>
株式会社創夢 第三開発部 シニアプロジェクトマネージャ
初版:2004年10月作成、改定版:2015年2月作成
- 2. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
はじめに
インターネット屋はL3で考えがち
ネットワークエンジニアはL2でも考える
L2ネットワーキングという考えかたがある
L2での、VLAN、帯域制御、冗長性確保、etc.
今回はL2での冗長性確保の話
1/38
- 3. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPとは何か
IEEE 802.1D標準
スイッチ間のループを解消するプロトコル
冗長構成を作っておき、故障時に自動的に代替経路
に切り替える
ブリッジ間でBPDUパケットのやりとりを行う
単一のルートブリッジを頂点にした木(Spanning
Tree)を作る
ループの原因となるポートを発見したらブロックす
る
2/38
- 5. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(1)の解説
ブロードキャストが伝播する範囲を単位として考える
「ブロードキャストドメイン」と呼ぶ
たとえば異なるVLAN間ではブロードキャストは伝播しないので、異なる
ブロードキャストドメインになる
ブロドーキャストドメインをまたぐ中継はL3で行う
ブロードキャストドメインをいかに制御するかが鍵になる
冗長性のために複数経路を作る
しかしループを発生させない
4/38
- 7. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(2)の解説
STPがトポロジーを作るまでの動作
トポロジーの根(root bridge)を決める
最初にすべてのスイッチが自分がrootだと主張する
受信したメッセージと自分のbridge IDを比較する
6/38
- 9. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(3)の解説
bridge IDが小さいほうをroot bridgeだと認識する
root bridgeを下流に広告する
ふたつのポートから同じrootの通知が来たら、IDが大き
いポートを「ブロッキング状態」にする
ブロッキング状態のポートは、パケットの送受信を行わな
い
8/38
- 11. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
BPDUパケットの構造(2)
STPパケットはL2のパケットである
Etherヘッダに続いてBPDUが格納される
宛先はL2マルチキャスト
インテリジェントスイッチは、BPDUを中継してはいけない
ただのHUBはBPDUを中継しないといけない
たまに、ただのSW HUBが勘違いしてBPDUを中継し
ないことがあるので注意すること
10/38
- 12. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
ループ切断時の挙動(1)
11/38
- 13. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
ループ切断時の挙動(1)の解説
Bridge 1とBridge 0の間のリンクが切断された場合
トポロジーの再構築が起こる
Bridge 1は自分がrootだと宣言する(Bridge 0が見
えなくなるので)
Bridge 3は異なるroot bridgeの情報を受け取り混
乱する
12/38
- 14. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
ループ切断時の挙動(2)
13/38
- 15. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
ループ切断時の挙動(2)の解説
Bridge 3はIDが小さい方の情報(Bridge 0がroot)
を広告する
Bridge 1はBridge 0の存在を知る
Bridge 1はBridge 0がroot bridgeであると認識
する
14/38
- 16. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPは遅い
リンクが落ちた時
様子を見る時間 (max-age)
デフォルトで20秒
BPDUを聞く時間 (forward-delay)
デフォルトで15秒
学習する時間 (forward-delay)
デフォルトで15秒
復旧までに50秒かかる(デフォルト設定の場合)
15/38
- 17. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPによるSTPの問題の解決
IEEE 802.1w標準(2004年当時)
現在ではIEEE 802.1Dに含まれている
STPの状態遷移を高速化したもの
状態遷移時にhandshakeを行なう
切り替えは高速(数秒)で行なわれる
作られるSpanning TreeはSTPと同じ
下位互換性を持つ
16/38
- 18. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(1)
17/38
- 19. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(2)
18/38
- 20. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(2)の解説
リンク状態が変化すると、Bridge 1は下流のBridge
3に対して「Topology Change」を通知する
19/38
- 21. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(3)
20/38
- 22. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(4)
21/38
- 23. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(5)
22/38
- 24. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(5)の解説
Bridge 1とBridge 3との間で、Proposal,
Agreementのやりとりが行われる
Bridge 1のポートがRoot Port (そのリンクの中で中
継を行うポート)になる
23/38
- 25. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(6)
24/38
- 26. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(7)
25/38
- 27. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(8)
26/38
- 28. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(9)
27/38
- 29. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(9)の解説
proposal, agreementのhandshakeは下流に伝
播する
STPでは「確実に落ち着くまで待ってから通信可能にす
r」
RSTPでは「積極的に相互に確認して通信可能にす
る」
28/38
- 30. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
VLAN環境でのSTPの利用
VLAN環境下では、VLANごとにSTPのトポロジーを構
築する必要がある
タグ付きVLANでは物理トポロジーとSTPのトポロジー
が異なる可能性がある
VLANごとにroot bridgeが異なる可能性がある
物理リンクがダウンした時のトポロジー変化がVLANご
とに異なる可能性がある
物理リンクに異常がなくてもVLANの論理ポートだけ落
とす場合がある
29/38
- 31. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
VLAN環境でのSTPの利用
30/38
- 32. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
VLAN環境でのSTPの利用
VLANごとにBPDUを流す方法
VLANヘッダに続いてBPDUが格納される
CISCOのPVST+などの実装がある
簡単な方式ではある
パケットの流量が相対的に大きくなる
31/38
- 34. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTP
Multiple Spanning Tree Protocol
IEEE 802.1s
それまで定義されていなかったVLANとSTPの併用を定義した
複数のVLANの情報を「インスタンス」として束ねる。
BPDUは複数のVLANの情報をまとめてやりとりする
33/38
- 35. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPによる複数のスパニングツリー
34/38
- 36. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPによる複数のスパニングツリー(2)
VLANを束ねたインスタンスを複数共存させられる
インスタンスごとにトポロジーが異なる場合がある
35/38
- 37. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPによる負荷分散
36/38
- 38. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
実装状況
Linux
STPはkernl内実装
RSTP, MSTPはuserland実装
MSTPの実装は不十分
FreeBSD
STPとRSTPをif_bridge(4)にて実装している
NetBSD
STPをbridge(4)にて実装している
37/38
- 39. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
まとめ
L2ネットワークでの冗長化を行うにはSTPを用いる
STPは状態遷移が遅いので現在ではRSTPを用いるの
がよい
VLANを駆使している環境ではMSTPを用いる
多くのL2スイッチ製品では、STP, RSTP, MSTPをサポ
ートしている
PC-UNIXでのSTPサポートは遅れている
製品も中身はLinuxなどなので、オープンソースのSTP実装が不十分
というのが正確
38/38