STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
-
Upload
masahiko-kimoto -
Category
Internet
-
view
313 -
download
3
Transcript of STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPとその仲間たち 〜 STP, RSTP, MSTPの概
要 〜
STPとその仲間たち 〜 STP, RSTP, MSTPの概
要 〜
木本雅彦 <[email protected]> <[email protected]>
株式会社創夢 第三開発部 シニアプロジェクトマネージャ初版:2004年10月作成、改定版:2015年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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPとは何かIEEE 802.1D標準
スイッチ間のループを解消するプロトコル
冗長構成を作っておき、故障時に自動的に代替経路に切り替える
ブリッジ間でBPDUパケットのやりとりを行う
単一のルートブリッジを頂点にした木(Spanning Tree)を作る
ループの原因となるポートを発見したらブロックする
2/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(1)
3/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(1)の解説
ブロードキャストが伝播する範囲を単位として考える「ブロードキャストドメイン」と呼ぶ
たとえば異なるVLAN間ではブロードキャストは伝播しないので、異なるブロードキャストドメインになる
ブロドーキャストドメインをまたぐ中継はL3で行う
ブロードキャストドメインをいかに制御するかが鍵になる冗長性のために複数経路を作る
しかしループを発生させない
4/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(2)
5/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
STPの基本動作(3)
7/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
BPDUパケットの構造
9/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
ループ切断時の挙動(1)
11/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
ループ切断時の挙動(2)
13/38
(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
(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
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(1)
17/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(2)
18/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(3)
20/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(4)
21/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(5)
22/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(6)
24/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(7)
25/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(8)
26/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
RSTPでの状態遷移(9)
27/38
(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
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
VLAN環境でのSTPの利用
30/38
(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
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTP
32/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPMultiple Spanning Tree Protocol
IEEE 802.1sそれまで定義されていなかったVLANとSTPの併用を定義した
複数のVLANの情報を「インスタンス」として束ねる。
BPDUは複数のVLANの情報をまとめてやりとりする
33/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPによる複数のスパニングツリー
34/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPによる複数のスパニングツリー(2)
VLANを束ねたインスタンスを複数共存させられる
インスタンスごとにトポロジーが異なる場合がある
35/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
MSTPによる負荷分散
36/38
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
実装状況
LinuxSTPはkernl内実装
RSTP, MSTPはuserland実装
MSTPの実装は不十分
FreeBSDSTPとRSTPをif_bridge(4)にて実装している
NetBSDSTPをbridge(4)にて実装している
37/38
(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