39
(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]> 株式会社創夢 第三開発部 シニアプロジェクトマネージャ 初版:200410月作成、改定版:20152月作成

STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

Embed Size (px)

Citation preview

Page 1: 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月作成

Page 2: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

はじめに

インターネット屋はL3で考えがち

ネットワークエンジニアはL2でも考える

L2ネットワーキングという考えかたがあるL2での、VLAN、帯域制御、冗長性確保、etc.

今回はL2での冗長性確保の話

1/38

Page 3: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

STPとは何かIEEE 802.1D標準

スイッチ間のループを解消するプロトコル

冗長構成を作っておき、故障時に自動的に代替経路に切り替える

ブリッジ間でBPDUパケットのやりとりを行う

単一のルートブリッジを頂点にした木(Spanning Tree)を作る

ループの原因となるポートを発見したらブロックする

2/38

Page 4: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

STPの基本動作(1)

3/38

Page 5: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

STPの基本動作(1)の解説

ブロードキャストが伝播する範囲を単位として考える「ブロードキャストドメイン」と呼ぶ

たとえば異なるVLAN間ではブロードキャストは伝播しないので、異なるブロードキャストドメインになる

ブロドーキャストドメインをまたぐ中継はL3で行う

ブロードキャストドメインをいかに制御するかが鍵になる冗長性のために複数経路を作る

しかしループを発生させない

4/38

Page 6: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

STPの基本動作(2)

5/38

Page 7: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 8: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

STPの基本動作(3)

7/38

Page 9: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 10: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

BPDUパケットの構造

9/38

Page 11: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 12: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

ループ切断時の挙動(1)

11/38

Page 13: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 14: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

ループ切断時の挙動(2)

13/38

Page 15: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 16: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 17: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 18: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(1)

17/38

Page 19: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(2)

18/38

Page 20: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 21: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(3)

20/38

Page 22: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(4)

21/38

Page 23: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(5)

22/38

Page 24: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 25: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(6)

24/38

Page 26: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(7)

25/38

Page 27: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(8)

26/38

Page 28: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

RSTPでの状態遷移(9)

27/38

Page 29: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 30: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 31: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

VLAN環境でのSTPの利用

30/38

Page 32: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 33: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

MSTP

32/38

Page 34: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 35: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

MSTPによる複数のスパニングツリー

34/38

Page 36: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

MSTPによる複数のスパニングツリー(2)

VLANを束ねたインスタンスを複数共存させられる

インスタンスごとにトポロジーが異なる場合がある

35/38

Page 37: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6

MSTPによる負荷分散

36/38

Page 38: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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

Page 39: STPとその仲間たち 〜 STP, RSTP, MSTPの概要 〜

(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