2007.12.12 すぱつり三昧 サーバーの話じゃないけど, Catalyst 2940 買ってよかったと思った 瞬間を満喫したのでメモ。 すぱつり(スパニングツリー わざわざかっこ書きするな?!)に興味が 出たので調べてみることにした。自宅の機器で, 下記のようなルー プを発生させるネットワーク構成を行って検証した。 +-----------+ | 1 2 3 4 5 | Buffalo LSW-TX-5NP +-+-+-------+ | | +-+-+---------------+ | 1 2 3 4 5 6 7 8 A | Cisco Catalyst 2940 +-------+-+-----+-+-+ | | | | 接続前に no spanning-tree vlan 1-4094 の設定を無効にする。こ のあたりのいきさつは昔の日記参照。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enable configure terminal spanning-tree vlan 1-4094 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 接続してみる。ランプがオレンジ色になって, しばらくするとグリー ンになる。うまく行ったかなと思ってブロードキャスト ping すると フラッド起こしてネットワークが壊滅しました。自宅の基幹ネットワ ークが死んで何もできなくなったとさ(爆)。 ネタはさておき。なんで失敗したのか調べてみることにした。スパニ ングツリーについての読みが足りないのかと思って読み直すが, 基本 的に挿せば動く程度のことしかないし, 読み進めても, ネットワーク 構成に応じた最適化や得失(Cisco 拡張か汎用か)しか無く, 途方に暮 れてみる。 こういう時は直結に限る。ということで, バンと直結してみた。 +-+ | | +-+-+---------------+ | 1 2 3 4 5 6 7 8 A | +-------------------+ 実はこの時うまくいってしまって拍子抜けした。某所で愚痴ってた ところ ume さん曰く「普通のスイッチハブ相手だったら効く」と のことで, 如何に安物ハブであったかを思い知らされた。 なんにせよ色々と試行錯誤行った結果, スパニングツリーの見方で あるとか, 設定ポイントが見えて来たのでメモっておく。まず状態 のチェックの仕方であるが, これは show spanning-tree を実行す ることで得られる。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Switch#show spanning-tree VLAN0001 Spanning tree enabled protocol ieee Root ID Priority 32769 Address 0017.95d2.3480 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 0017.95d2.3480 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 15 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- -------------------------------- Fa0/1 Desg FWD 19 128.1 P2p Fa0/2 Back BLK 19 128.2 P2p Fa0/4 Desg FWD 19 128.4 Edge P2p Fa0/5 Desg FWD 19 128.5 Edge P2p Fa0/8 Desg FWD 19 128.8 Edge P2p Gi0/1 Desg FWD 4 128.9 Edge P2p - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 各インターフェースで Sts が BLK (ポートはブロックされている), LIS(BPDUが流れてないか待ちに入る), LRN(学習中 ?), FWD(パケット の転送を行える)のどれかの状態にある。 ループが発生してるポートでどれかが 1 つが FWD, それ以外が BLK になっていれば勝ちである(?)。今回の場合, fa0/1 が FWD で fa0/2 が BLK なので勝利。と。 さて。昔 no spanning-tree vlan 1-4094 を設定していたように, スパニングツリーの調停には非常に時間がかかる。このあたりは 互換性重視でディフォルトが渋く設定されているのが問題で, RSTP (Rapid Spanning Tree Protocol/IEEE802.1w)や MSP(Multiple Spanning Tree Protocol/IEEE802.1s)を選択することで回避でき る。このあたりはネットワーク内で使用する機器の最大でサポー トしているプロトコルに合わせる必要がある。まぁ Catalyst 使 ってる分には気にしなくていいかな。FreeBSD で if_bridge(4) 使っているなら, RSTP または STP を使う必要があるが, そこは それ, また別に考慮する必要があると思われ…。 Catalyst で RTSP (Rapid PVST+) か MSP のいずれかの選択が現 実的である。 Catalyst 限定で言うなら 適度にバランシングが効 いて, 目にやさしい(?) MSP であとよろしく, が良い選択に思える。 一つには VLAN のブリッジをどうするか。で, おおざっぱに言うと 個別に調停を行うのが PVST+, まとめて行う MSP となる。PVST+ の場合, VLAN 単位で適度に分散が行える設定ができるメリットは あるが面倒ではある。MSP ではポートで取り扱う VLAN まとめて …となるので, おおざっぱな分散が行える。実際には show spanning-tree で得られる結果が, 設定されている VLAN 分 見なければいけないか, 1 つにまとまったのを見るだけでいいの かの違いはある:-)。VLAN たくさん運用してるなら MSP かな。と。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enable configure terminal spanning-tree mode msp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 基本的にはこれくらいの使用で十分実用になるが, 運用上はいく らか設定見ておくと良いと思われる。 1. スパニングツリーの起点となる root を決めておく。 まぁネットワークが小さいならディフォルトでも十分かもし れないけど, 起点になるスイッチでは積極的に設定しておい た方が安全ですね。4096 というのは root の推奨値だそう で。詳細はてきとーに探してください:-)。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enable configure terminal spanning-tree vlan 1-4094 priority 4096 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2. サーバーが刺さってるポートですぱつり要らんやろ。 ということで, switchport host を実行しておく。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enable configure terminal interface fa0/3 switchport host - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - これを設定すると, 指定されたポートで下記の 2 つが有効 になる。相当というか。トランクしてるなら実行しちゃダメ。 もっとも spanning-tree portfast は有効そうに思えるけど。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enable configure terminal interface fa0/3 switchport mode access spanning-tree portfast - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3. そうそう。関係無いけど, 2940 って auto MDI に対応して たのねん。 ということで, 全部ストレートケーブルで試してたという:-)。 もっとも duplex, speed ともに auto でないと機能しないとの ことですが。。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - enable configure terminal interface fa0/2 mdix auto - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 他にもいっぱいあるけど, 最低 2 つ押さえておけばいいかな。 安全運用(portfast bpdu guard default)であるとか, 最適化 (uplinkfast, backbonefast)ネタとか, 攻めれば色々見つかる と思う。 まぁアレだ。安物ハブはやっぱ安いだけある。ってことで。 P.S. おかしい。目の黒いうちは すぱつり に手を出さないはずだったはず では…。。 > 私 SEE ALSO: http://blog.ninth-nine.com/diary/20070721.txt http://ccstudy.org/study/stp/pvst/pvst.html http://ameblo.jp/m37644912/entry-10021048360.html http://www.cisco.com/japanese/warp/public/3/jp/service/tac/473/5-j.shtml http://www.cisco.com/japanese/warp/public/3/jp/service/tac/473/MST-j.shtml Written by 重村法克