1.スパニングツリープロトコル(STP)
(1)STPの必要性と目的
LANの設計をするときに、あえてループを作ることが一般的である。なぜだろうか?
それは、ループ構成を組んで、STPを有効にしておけば、障害時にはそのループが迂回経路になるからだ。しかも、障害時には自動的にSTPの再計算が走って、迂回経路に自動切り替えしてくれるから便利である。
STPの目的を整理すると次の2つになる。
①ループの回避
②信頼性向上(冗長性の確保)
過去問では、スパニングツリーの機能を、「複数のブリッジ間で情報を交換し合い、ループ発生や障害時の迂回ルート決定を行う。(平成17年度 午前 問44)」、「BPDUと呼ばれる制御フレームをやり取りして通信のループを回避するプロトコル。(平成21年度 午後1問1)」と述べています。
■参考
119通報のシステムトラブルは、STPの設定をしなかったためにループを起こしたことのようだ。「システム障害はなぜ二度起きたか」(日経BP社)は、「2011年1月、消防車や救急車の出動を支援する東京消防庁の情報システムがダウンし、119通報がつながりにくくなる事態が発生した。原因は一本のLANケーブルの誤接続によって通信の「ループ」が発生したこと。予備システムも機能せず、影響は約四時間半に及んだ」と述べられている。
■デメリット
STPによるデメリットもあります。それは、「PCを接続しても直ちに通信が可能な状態にならない(H21NW午後1問1設問3(3)」ことです。
STPが有効なSwitchingHUBにPCを接続しても、IEEE802.1Dによる通常のSTPの場合、BPDUのやりとりが行われるので、正常に接続されるまでに40秒ほどかかってしまう。
PC→HUB→STP有効のSW→DHCPサーバ
という構成の場合、PCがDHCPによるIPアドレスを要求しても、STP有効のSWがリンクアップされず、DHCPサーバからIPアドレスが取得できないという問題が発生することもある。
(2)ブロードキャストフレームがループして輻輳する様子
ループが発生すると、ネットワークが輻輳状態になって、通信ができない。でも、ループになっただけで、通信ができなくなるのか。その仕組みについて簡単に説明する。
その前に質問。
▼Q.ループが起こるのは、どんなフレームによるものか |
↓
↓
↓
↓
↓
A.(基本的には)ブロードキャスト
※宛先が不明なユニキャストであるUnknown Unicastでも同様の現象は起こる。なぜなら、スイッチは、宛先が不明なMACアドレスの場合、ブロードキャストと同様にすべてのポートからフラッディングするからである。しかし、普通にネットワークを組んだだけではUnknown Unicastがループすることはあまりない。どこかに宛先となる機器が存在するからである。
順に説明します。
PC1からSW1の1番ポートにARPを送信したとします(図①)。
ARPのフレームはブロードキャストなので、フレームを受信したポート以外のすべてのポートにフレームが転送されます(図のポート2、3)。したがって、SW2とSW3にもこのブロードキャストフレームが届きます(図②、③)。
SW2は、受信した1番ポート以外のすべてのポートにフレームを転送するので、SW3にもフレームを届けます(図④)。SW3は、SW2から受信したフレーム(図④)をSW1に(図⑤)、SW1から受信したフレーム(図③)をSW2に転送します(図⑥)。SW2はSW3から受信したフレームをSW1に転送します(図には書いていませんが・・・)。
こうして、無限ループになるだけでなく、最初はたった1つだったフレームの数が、転送されるにつれてどんどん増えていくのです。こうなると、フレームが無限に流れ続けるブロードキャストストーム状態になり、通信ができなくなります。
(3)ループ検知の仕組み
STPでは、BPDUフレームを送信することで、ループを検出します。
少し具体的に説明します。
まず、スイッチの中で、ルートブリッジと呼ばれる親の役割を果たすスイッチを1台決めます。
ルートブリッジがBPDUというフレームを流しますが、複数の経路からこのBPDUが届けば、ループが発生していることが検知できます。
(4)STPの状態遷移
STPでは、ルートブリッジが2秒間隔でBPDUを送り続けています。BPDUはループ内の全てのスイッチに届きます。ブロッキングポートにも届きます。
BPDUが20秒間届かなくなると、ネットワークの状態に変化が発生したと判断し、STPを再計算します。(もちろん、この間は通信ができません。)
ネットワークスペシャリスト試験の過去問(H30秋NW午後Ⅰ問2)に「STPのポート状態がブロッキングから,リスニング,ラーニングを経て,フォワーディングに遷移した。」とありますように、STPの状態には以下の4つの状態があります。
ポートの状態 (Sts) |
概要 | (次の状態遷移までの)所要時間 |
---|---|---|
ブロッキング (BLK) |
データ転送をしない。BPDUの受信のみ | 最大エージタイマ(※注1):約20秒 |
リスニング (LIS) |
BPDUを送信して状態を確認。ルートブリッジ,ルートポートなどを選定 | 転送遅延タイマ(※注2):約15秒 |
ラーニング(LRN) | 流れるトラフィックからMACアドレスを学習(※注3) | 転送遅延タイマ:約15秒 |
フォワーディング (FWD) |
データ転送の実施 | ― |
※注1:最大エージタイマは,リンクが障害したことを認定するまでの時間です。ルートブリッジから2秒間隔でBPDU送信しています。このBPDUを最大エージタイマである20秒間受信しなくなると,障害が発生したと判断します。スイッチに直接接続されたリンクが切れた場合はすぐに障害とわかるので,この時間は0秒です。
※注2:転送遅延タイマは,状態の確認や学習が終わるのを待つ「待ち時間」と考えてください。
※注3:MACアドレスの学習をしないと,すべてのポートからフレームが流れることになってしまいます。
データを転送するのは、フォワーディング状態だけです。
ループが無い状態でもSTPの計算が走るんですね?
そうなんです。STPが有効になっているスイッチであれば、1ポートに接続しただけでもSTPの計算行われます。たとえば、PCを1台SWに接続した場合でも、STPの計算が行われます(もちろんループはありません。)
ですから、PCが使えるまでに、40秒ほどの時間がかかってしまいます。ですから、PCが接続するポートにはSTPを無効にする(PortFastの設定)を入れます。(以下に説明)
(5)ブロックされるポート(NDP)の決め方
・ルートブリッジは、ネットワークの状態を自分を中心としたツリー構造として把握する。
・一定間隔でBPDU(Bridge Protocol Data Unit)パケットを交換する。ルートブリッジ以外は転送するだけ。RSTPでは全スイッチが相互に交換する仕組みとなり、高速な収束を可能にしている。
・最小のブリッジID(プライオリティ+MACアドレス)を持つ機器がルートブリッジ。デフォルトのプライオリティは32768
[BID(8byte)]=[ プライオリティ(2byte)][ MACアドレス(6byte)] で構成されるため、MACアドレスよりもプライオリティが優先される。
・ステータスは ブロッキング(20秒)→リスニング(15秒)→ラーニング(15秒)→フォワーディング
RSTP(802.1w)ではブロッキングやリスニングをまとめてディスカーディングとしている。
・ブロッキングポート(非指定ポート)の決め方。
1)各スイッチで、ルートブリッジに最も近いポートがルートポート
2)各セグメント(機器と機器をつないだ線)で、ルートブリッジに最も近いポートが指定ポート
3)それ以外がブロック(非指定)ポートでブロックされる。
※ややこしいが、実際には結構シンプル。ルートブリッジに最も遠いところがブロックされるだけ。
▼過去問にて
STPによる経路に関する出題があるので紹介する。
過去問H20NW午前 問44 |
---|
問44 図は、レイヤ2スイッチによって、スパニングツリープロトコルを用いて構成されるLANを示す。各スイッチにブリッジプライオリティ設定値は等しく、パスコストは10Mビット/秒ポートに100、100Mビット/秒ポートに19が設定されている。PC1とPC2の通信に使用される経路はどれか。ここで、i,j,kはそれぞれ同じ数値を示す。 本来は4択であるが、自分の言葉で解答を考えてほしい。 |
↓
↓
↓
↓
↓
正解:スイッチA-C-Bを使用
※H20NW午後1問4には、SWのブリッジのプライオリティの決め方を問う問題があった。
ブロックされたポート(NDP)では、フレームの転送は行わない。
NDPのつながっている両方をNDPとしてブロックしては?
どうせ、通信はしないんでしょ。
NDPはBPDUの受信をするが、送信もしない。BPDUを交換しないと、STPのトポロジー変更に対応できない。なので、両方NDPにするのではなく、片方は、BPDUを送信するDPにする。
(6)STPの過去問
過去問(平成25年NW午後Ⅱ問1) |
---|
・L2SWとL3SWでは, STP (Spanning Tree Protocol)が動作している。L3SW1をルートブリッジとするために,L3SW1のブリッジIDは〔 イ 〕の値となっている。 |
↓
↓
↓
↓
↓
スパニングツリーは、言葉の通りツリー(tree)構造になっています。そのツリー構造の根(root)、つまり起点になるのがルートブリッジです。ルートブリッジとなるためにはブリッジIDがどのような値であるべきかを問われています。ルートブリッジとして選出されるのは、最小のブリッジIDを設定されたスイッチと決められています。
解答 イ:最小
過去問(平成17年度午前 問44) |
---|
問44 スパニングツリーの機能を説明したものはどれか。 ア MACアドレスを見て、フレームを廃棄するか中継するかを決める。 イ 一定時間通信が行われていないMACアドレスを、MACアドレステーブルから消去する。 ウ 経路が複数存在する場合、アプリケーションやアドレスごとに経路を振り分けて、負荷を分散する。 エ 複数のブリッジ間で情報を交換し合い、ループ発生や障害時の迂回ルート決定を行う。 |
↓
↓
↓
↓
↓
正解:エ
過去問(H29秋NW午前Ⅱ) |
---|
問5 スパニングツリープロトコルに関する記述のうち,適切なものはどれか。 ア OSI基本参照モデルにおけるネットワーク層のプロトコルである。 イ ブリッジ間に複数経路がある場合,同時にフレーム転送することを可能にするプロトコルである。 ウ ブロードキャストフレームを,ブリッジ間で転送しない利点がある。 エ ルートブリッジの決定には,ブリッジの優先順位とMACアドレスが使用される。 |
↓
↓
↓
↓
↓
正解:エ
2.STPの実際の動作
CiscoのCatalystでのSTPの動作を試してみましょう。
❶STPの有効化
Catalystの場合、デフォルトでSTPが有効になっています。有効になった上で、以下の設定がなされています。
spanning-tree mode pvst ⇒pvst(per vlan spanning tree)は、VLAN単位でSTPを有効にするというモード
ちなみに、STPの無効化に関して説明します。ネットワークスペシャリスト試験には出ませんので、参考程度に。
スイッチ全体で無効にする場合と、ポート単位で無効にする(というか、STPの計算をしない)(portfast)場合がある。上記で書いたような問題を回避するために、PCを接続するポートには、portfastを入れることがあります。
以下は、VLAN1でSTPを無効化する設定です。全てのVLANで無効化する場合は、vlan 1-4094とします。
Switch(config)#no spanning-tree vlan 1 Switch(config)#end
このときのスイッチのポートを見てもらうとわかりますが、ランプが高速に点滅しています。つまり、ループによってブロードキャストストームが発生しているのです。こうなると通信ができません。以下のコマンドで元に戻しておきましょう。
Switch(config)#spanning-tree vlan 1 Switch(config)#end
❷ループを作る
今回はシンプルに、2台の機器を2本のLANケーブルで接続します。
❸状態確認
sh spanning-treeで状態を確認しましょう。(※ルータの場合は show spanning-tree brief が見やすいです)
Switch#sh spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 32768 Address 2c54.2d7e.b7b2 Cost 19 Port 1 (FastEthernet0/1) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address 34bd.c859.bd00 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Fa0/1 Root FWD 19 128.1 P2p Fa0/2 Altn BLK 19 128.2 P2p
ここで、ルートブリッジは、2c54.2d7e.b7b2のMACアドレスを持つ機器であることが分かります。今回の場合は、もう一台の機器を指しています。
また、Fa0/1がFWDですので通信がされていて、Fa0/2がBLKなので、ブロッキングされていることが分かります。
参考までに、ポートの状態を説明します。
Role | 説明 |
---|---|
Root | ルートポート |
Desg | 指定ポート |
Altn | 非指定ポート |
Back | バックアップポート |
❹切り替わり
この状態で、Fa0/1のケーブルを抜きます。
すると、通信経路がFa0/2に変わるはずです。
では、状態を順に確認しましょう。
①Fa0/2がListeningになりました。
Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Fa0/2 Root LIS 19 128.2 P2p
②Fa0/2がLearningになりました。
Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Fa0/2 Root LRN 19 128.2 P2p
③Fa0/2がFowardingになりました。同時に、スイッチ間の通信が再開されました。
Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Fa0/2 Root FWD 19 128.2 P2p
3.Rapid STP
スパニングツリーの種類として、以下があります。
プロトコル | 解説 |
---|---|
STP(Spanning Tree Protocol) | IEEE 802.1Dで規定 ←Dは大文字が正式。 |
PVST(Per VLAN Spaninng Tree) | VLANごとのSpaninng Tree。※CiscoではPVST+ |
RSTP(Rapid Spanning Tree) | IEEE 802.1wで切り替えが速いSTP。現在はIEEE802.1Dに統合されている。CSTPの場合、トポロジー変更があったことをTCN(Topology Change Notification)BPDUで知らせ、そこから再計算をスタートさせる。RSTPではTCN BPDUをネットワーク全体に伝えることはせず、変更が必要なスイッチと直接やりとり(Handshake方式)を行うことで、高速化している。ただ、リンクダウンなどではなく、リンクアップや機器が追加された場合は、全体の再計算が必要なので、通常のSTPと同様の収束時間が必要。 |
・Ciscoの場合、設定は以下です。
(config)# spanning-tree mode rapid-pvst
・では、状態を見てみましょう。ポート5とポート7を直結して、ループを作っています。通常のSTP(PVST)と比べて、すぐに通信ができるようになりました。ランプを見てもわかりますし、以下の状態を見ても状態遷移が早いです。
Switch#sh spanning-tree VLAN0001 Spanning tree enabled protocol rstp Root ID Priority 32769 Address 34bd.c86b.1880 This bridge is the root Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 32769 (priority 32768 sys-id-ext 1) Address 34bd.c86b.1880 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 sec Interface Role Sts Cost Prio.Nbr Type ------------------- ---- --- --------- -------- -------------------------------- Fa0/5 Desg FWD 19 128.5 P2p Fa0/7 Back BLK 19 128.7 P2p
4.MSTP(Multiple Spanning Tree Protocol)
MSTP(Multiple Spanning Tree Protocol)は、IEEE802.1s。PVSTはVLANごとのSTP。しかし、VLANが増えてくると、それぞれでSTPを処理すると負荷が増える。そこで、VLANをまとめてインスタンスというグループを作り、そのグループでSTPを設定する。
※ただし、ネットワークスペシャリスト試験には出ないと思いますので、学習する必要はないでしょう。
ネットワークスペシャリスト試験の過去問(H24年NW午後Ⅱ問2)を見てみよう。
STPを調査したところ,今回設定したSTPは,ツリーをVLANごとに構成できないことが分かった。詳しく調べると,VLANごとにツリーを構成するためには. IEEE802.1sで規定されているMSTP (Multiple spanning Tree Protocol)を使うことが必要であった。 MSTPは,複数のVLANをインスタンスと呼ばれるグループにまとめ,インスタンス単位でスパニングッリーの計算を行う。このとき,インスタンスごとにルートブリッジ及びブロッキングポートが決定され,インスタンス単位にツリーが構成される。 |