BackboneFastの設定
・SwitchCにBackboneFastを設定して,直接つながっていないリンクの障害を素早く検知させる
・SwitchCのブロッキング・ポートが通常より速くフォワーディングになることを確認する
ネットワーク構成(画像を別ウインドウで表示)
SwitchAのコンフィグ
!
version 12.1
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname SwitchA
!
spanning-tree mode pvst
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
spanning-tree backbonefast ←BackboneFastを有効にする
spanning-tree vlan 1 priority 0 ←プライオリティを0に設定して,このスイッチをルート・ブリッジにする
!
interface FastEthernet0/1
no ip address
!
interface FastEthernet0/3
no ip address
!
interface Vlan1
no ip address
no ip route-cache
shutdown
!
line con 0
line vty 0 4
login
line vty 5 15
login
!
end
SwitchBのコンフィグ
!
version 12.1
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname SwitchB
!
spanning-tree mode pvst
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
spanning-tree backbonefast ←BackboneFastを有効にする
!
interface FastEthernet0/1
!
interface FastEthernet0/2
!
interface Vlan1
no ip address
no ip route-cache
shutdown
!
line con 0
line vty 0 4
login
line vty 5 15
login
!
end
SwitchCのコンフィグ
!
version 12.1
no service pad
service timestamps debug uptime
service timestamps log uptime
no service password-encryption
!
hostname SwitchC
!
spanning-tree mode pvst
spanning-tree extend system-id
spanning-tree backbonefast ←BackboneFastを有効にする
!
interface FastEthernet0/2
switchport mode access
no ip address
!
interface FastEthernet0/3
switchport mode access
no ip address
!
interface Vlan1
no ip address
shutdown
!
line con 0
line vty 0 4
login
line vty 5 15
login
!
end
確認
BackboneFastは,直接接続していない間接リンクの障害を検知して,通常のスパニング・ツリーのときよりも速く経路を切り替える機能です。
通常ならば,経路の切り替えに50秒かかるところを30秒にまで短縮できます。

●通常のスパニング・ツリーの動作を確認
最初に,BackboneFastを設定していないときの動作を見てみましょう。
ネットワークの構成は逆三角形の構成で,動作検証の主人公は,一番下のSwitchCです。
ネットワーク上に何も障害が発生していないときのSwitchCの状態を見ると,Fa0/2がブロッキングになっています(赤字の部分)。

SwitchC#show spanning-tree

VLAN0001
 Spanning tree enabled protocol ieee
 Root ID  Priority  1
         Address   000a.8a7e.ebc0
         Cost    19
         Port    3 (FastEthernet0/3)
         Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec

 Bridge ID Priority  32769 (priority 32768 sys-id-ext 1)
         Address   000e.d7f6.9180
         Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec
         Aging Time 15

Interface       Role Sts   Cost    Prio.Nbr  Type
---------------- ---- --- --------- -------- ----------------
Fa0/2         Altn BLK   19      128.2   P2p
Fa0/3         Root FWD  19      128.3   P2p


この状態で,SwitchAとSwitchBをつないでいるケーブルを抜いたときのSwitchCの動作を調べます。
そのため,SwitchCにデバッグ・コマンドを入力しておきます。

SwitchC#debug spanning-tree events
Spanning Tree event debugging is on


準備は整いました。SwitchAとSwitchBをつないでいるケーブルを抜きます。

06:53:52: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:53:54: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:53:56: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:53:58: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:54:00: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:54:02: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:54:04: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:54:06: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:54:08: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:54:10: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2

06:54:10: STP: VLAN0001 Fa0/2 -> listening
06:54:11: STP: VLAN0001 Topology Change rcvd on Fa0/2
06:54:11: STP: VLAN0001 sent Topology Change Notice on Fa0/3
06:54:25: STP: VLAN0001 Fa0/2 -> learning
06:54:40: STP: VLAN0001 sent Topology Change Notice on Fa0/3
06:54:40: STP: VLAN0001 Fa0/2 -> forwarding


赤字の部分は,これまでルート・ブリッジから来ていたBPDUが来なくなったことを示すメッセージです。
32769-000a.8a0d.4180という数値は,SwitchBのブリッジIDです。
「Fa0/2の先にあるSwitchBからルート・ブリッジがあると聞いていた(けど来なくなった)」というわけです。
これまでSwitchCは,ルート・ブリッジ(SwitchA)からBPDUを,SwitchAから直接受信するのと,SwitchB経由で受信していました。
ところが,SwitchAとSwitchB間のリンクを切断したことによって,SwitchB経由でBPDUを受信できなくなりました。
SwitchCはそれを検知して,20秒間BPDUが来なくなったらネットワーク上に経路変更があったとみなして,ブロッキングだったポートをリスニングに移行します。
その後,リスニング(15秒)とラーニング(15秒)を経て,最終的にフォワーディングになっています(青字の部分)。

経路切り替え後のSwitchCの状態を確認してみます。

SwitchC#show spanning-tree

VLAN0001
 Spanning tree enabled protocol ieee
 Root ID  Priority  1
         Address   000a.8a7e.ebc0
         Cost    19
         Port    3 (FastEthernet0/3)
         Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec

 Bridge ID Priority  32769 (priority 32768 sys-id-ext 1)
         Address   000e.d7f6.9180
         Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec
         Aging Time 300

Interface        Role Sts  Cost    Prio.Nbr  Type
---------------- ---- --- --------- -------- -----------------
Fa0/2          Desg FWD  19     128.2   P2p
Fa0/3          Root FWD  19     128.3   P2p


Fa0/2がフォワーディングになっているのがわかります。

●BackboneFastを設定する
BackboneFastを使うとどうなるでしょうか。
SwitchCにBackboneFastを設定します。

SwitchC#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
SwitchC(config)#spanning-tree backbonefast


BackboneFastは,他のスイッチとメッセージをやりとりするため,ネットワークにあるすべてのスイッチでBackboneFastを有効にする必要があります。
そのため,SwitchAとSwitchBも同様にBackboneFastを設定します。

SwitchA(config)#spanning-tree backbonefast

SwitchB(config)#spanning-tree backbonefast

以上で準備はOKです。

●BackboneFast設定時の切り替え動作を確認
それでは,BackboneFast設定時の切り替え動作を見てみます。
SwitchCのBackboneFasの動作を確認するため,デバッグ・コマンドを入力します。

SwitchC#debug spanning-tree backbonefast
Spanning Tree backbonefast general debugging is on


先程と同じように,SwitchAとSwitchB間のケーブルを抜きます。

06:58:00: STP: VLAN0001 heard root 32769-000a.8a0d.4180 on Fa0/2
06:58:00: STP FAST: received inferior BPDU on VLAN0001 FastEthernet0/2. ←@
06:58:00: STP FAST: sending RLQ request PDU on VLAN0001 FastEthernet0/3 
←A
06:58:00: STP FAST: Received RLQ response PDU on VLAN0001 FastEthernet0/3. 
←B
06:58:00: STP FAST: received RLQ response PDU was expected on VLAN0001 FastEthernet0/3 - resp root id 1-000a.8a7e.ebc0 . 
←C
06:58:00: STP FAST: received_rlq_bpdu on VLAN0001 FastEthernet0/2 - making FastEthernet0/2 a designated port 
←D
06:58:00: STP: VLAN0001 Fa0/2 -> listening
06:58:01: STP: VLAN0001 Topology Change rcvd on Fa0/2
06:58:01: STP: VLAN0001 sent Topology Change Notice on Fa0/3
06:58:15: STP: VLAN0001 Fa0/2 -> learning
06:58:30: STP: VLAN0001 sent Topology Change Notice on Fa0/3
06:58:30: STP: VLAN0001 Fa0/2 -> forwarding


赤字部分の5行のメッセージがBackboneFastのメッセージです。
上から順番に解読してみると,以下のようになります。

@.優先順位の低い(inferior)BPDUをFa0/2から受信した
A.RLQリクエストをFa0/3に送信した
B.RLQレスポンスをFa0/3から受信した
C.RLQレスポンスを受信したことによって,Fa0/3の先にルート・ブリッジ(ブリッジIDが1-000a.8a7e.ebc0)があると考えられる
D.Fa0/2を代表ポートにした

SwitchBは,ルート・ポートのリンクがダウンしたので,ルート・ブリッジへの道がなくなりました。
そのためSwitchBは,「自身がルート・ブリッジです」という内容のBPDUを全ポートに送信します。
このBPDUを受信したSwitchCは,BackboneFast機能を使い,RLQ(root link query)メッセージをスイッチ同士でやりとりして,ルート・ブリッジまでの経路が存在するかを確認します。
ルート・ブリッジまでの経路が確認できたSwitchCは,ブロッキング・ポートを即座にリスニングに移行します。
このため,BPDUが来なくなったことを確かめるための20秒間をカットできます。
BackboneFastを使うと,通常ならば50秒かかっていた切り替え時間を,30秒に短縮できるわけです。

最終的に,ブロッキング・ポートだったFa0/2は代表ポートになりました。
「ポートを代表ポートにする」ということを言い換えると,「配下のスイッチにルート・ブリッジへの道を提供する」ということでもあります。
SwitchCは,ルート・ブリッジへの道がなくなったとSwitchBから報告がありました。
そこでSwitchCは,自分自身がルート・ブリッジにつながっているかどうかを確した上で,SwitchBがつながっているFa0/2を代表ポートにして,SwitchBをツリー構造の配下に加えたわけです。
これが,BackboneFastの動作のしくみです。

show spanning-treeコマンドにbackbonefastオプションを付けると,RLQリクエストやRLQレスポンスをやりとりした数を確認することができます。

SwitchC#show spanning-tree backbonefast
BackboneFast is enabled

BackboneFast statistics
-----------------------
Number of transition via backboneFast (all VLANs)        : 1
Number of inferior BPDUs received (all VLANs)          : 1
Number of RLQ request PDUs received (all VLANs)        : 0
Number of RLQ response PDUs received (all VLANs)      : 1
Number of RLQ request PDUs sent (all VLANs)          : 1
Number of RLQ response PDUs sent (all VLANs)         : 0


●おまけ SwitchAとSwitchBのメッセージも確認
SwitchAとAwitchB間のケーブルを外したときに,SwitchAとAwitchBにどんなメッセージが表示されるか見てみましょう。
SwitchBのメッセージは以下です。

07:03:35: STP: VLAN0001 we are the spanning tree root
07:03:36: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
07:03:36: STP: VLAN0001 heard root   1-000a.8a7e.ebc0 on Fa0/2
07:03:36:   supersedes 32769-000a.8a0d.4180
07:03:36: STP: VLAN0001 new root is 1, 000a.8a7e.ebc0 on port Fa0/2, cost 38
07:03:36: STP: VLAN0001 sent Topology Change Notice on Fa0/2
07:03:37: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down


最初に「自分がルートだ」というBPDUを送信しているのがわかります(赤字の1行目)。
その後Fa0/2でBPDUを受信し,SwitchA(ブリッジID:1-000a.8a7e.ebc0)がルート・ブリッジと認識しました(赤字の2行目)。

SwitchAのメッセージは以下です。

07:06:53: STP FAST: Received RLQ request PDU on VLAN0001 FastEthernet0/3.
07:06:53: STP FAST: VLAN0001 FastEthernet0/3: sending requested RLQ response PDU
07:06:53: STP FAST: sending RLQ response PDU on VLAN0001 FastEthernet0/3
07:06:53: STP: VLAN0001 Topology Change rcvd on Fa0/3
07:06:54: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
07:06:55: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down
07:07:23: STP: VLAN0001 Topology Change rcvd on Fa0/3


RLQリクエストをFa0/3で受信しています(赤字の1行目)。
これは,SwitchCが送信したRLQリクエストです。
これに応えて,RLQレスポンスをFa0/3に送信しています(赤字の2行目)。

BackboneFastの動作の詳細は,以下のシスコのWebページが参考になります。

●CatalystスイッチのBackboneFastの説明と設定
http://www.cisco.com/support/ja/473/18.shtml

スパニングツリー・ラボ
STPの基本動作
ルート・ブリッジの設定
パス・コストの設定
PortFast
UplinkFast
BackboneFast
PVST
RSTP
MSTP