とあるサービスでSpanngTreeを使っていたときの経験を備忘録がてら記しておきたいと思います。
・L2スイッチが冗長化されており互いをL2接続
・サーバも両L2に接続されているが、NICのSFT(Switch Fault tolerance)は使わずNIC2枚をネットワークブリッジとして構成
特に意識せず普通に設定していたのですが、SpanngTreeをデフォルトの設定のままにしておいたところ下図のようにServerAがルートブリッジになるという事象に出くわしました。
Switch①でspanning treeを見てみると、
Swithc①# show spanning tree VLAN0100 Spanning tree enabled protocol ieee Root ID Priority 32768 Address 0216.35c4.509a →ServerAのMACアドレス Cost 4 Port 11 (GigabitEthernet1/0/11) Hello Time 2 sec Max Age 8 sec Forward Delay 5 sec Bridge ID Priority 32868 (priority 32768 sys-id-ext 100) Address 0018.73a7.f280 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- Gi1/0/11 Root FWD 4 128.11 P2p →ServerAの接続先(Gi1/0/11)がルートポート Gi1/0/12 Root FWD 4 128.12 P2p Gi1/0/24 Altn BLK 4 128.24 P2p →Switch②への接続先がブロッキングポート
Switch②でも見てみます。
Swithc②# show spanning tree VLAN0100 Spanning tree enabled protocol ieee Root ID Priority 32768 Address 0216.35c4.509a Cost 4 Port 11 (GigabitEthernet1/0/11) Hello Time 2 sec Max Age 8 sec Forward Delay 5 sec Bridge ID Priority 32868 (priority 32768 sys-id-ext 100) Address 0018.1986.5b80 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- Gi1/0/11 Root FWD 4 128.11 P2p →ServerAの接続先(Gi1/0/11)がルートポート Gi1/0/12 Root FWD 4 128.12 P2p Gi1/0/24 Desg FWD 4 128.24 P2p →Switch①への接続先が指定ポート
なんとも不思議な感じです。
年のため収束している状態でServer①でWiresharkを動かしてみると、確かに自らがルートブリッジである(Root path cost:0)BPDUを送信しています。。この結果、ServerBへの通信も必ずServerAを経由して運ばれているような動きを確認しました。
というわけでSwitch①をルートブリッジにすべくルートブリッジのプライオリティを下げました。
spanning-tree vlan 100 priority 4096
show spanning treeを見てみます。
Swithc①# show spanning tree VLAN0100 Spanning tree enabled protocol ieee Root ID Priority 4196 Address 0018.73a7.f280 This bridge is the root → ルートブリッジになった Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 4196 (priority 4096 sys-id-ext 100) Address 0018.73a7.f280 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- Gi1/0/11 Desg FWD 4 128.11 P2p Gi1/0/12 Desg FWD 4 128.12 P2p Gi1/0/24 Desg FWD 4 128.24 P2p → 指定ポートになった
Swithc②# show spanning tree VLAN0100 Spanning tree enabled protocol ieee Root ID Priority 4196 Address 0018.73a7.f280 Cost 4 Port 24 (GigabitEthernet1/0/24) Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Bridge ID Priority 8292 (priority 8192 sys-id-ext 100) Address 0018.1986.5b80 Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec Aging Time 300 Interface Role Sts Cost Prio.Nbr Type ---------------- ---- --- --------- -------- Gi1/0/11 Altn BLK 4 128.11 P2p → BLKになった Gi1/0/12 Altn BLK 4 128.12 P2p → BLKになった Gi1/0/24 Root FWD 4 128.24 P2p
これでこんな感じとなりました。
Switch②とServerA間のリンクでの指定ポート選出ですが、各スイッチのルートポートのルートパスコストを見ます。
Switch②のルートポートのルートパスコストは「4」、同じくServerAも「4」と同じなので、送信元ブリッジIDが最も小さい値のポートが指定ポートになります。MACアドレスをみると、Switch②側が指定ポートになると思いきやServerA側が指定ポートになります。昔のことなので記憶が曖昧ですが、ServerAは受信ポートのルートパスコストを加算してSTPを計算しますがこの値が帯域幅1Gbpsの「4」では無く「1」でした。(理由は不明)なので最小ブリッジIDを比較するまでもなくルートパスコストの比較でServerA側が指定ポートになってようです。