RSTPの設定
・全てのスイッチにRSTPを設定して,通常のSTPより高速に経路を切り替える
・経路が切り替わる際に,SwitchBとSwitchCがメッセージを交換していることを確認する
ネットワーク構成(画像を別ウインドウで表示)
SwitchAのコンフィグ
!
version 12.2
no service pad
service timestamps debug datetime localtime
service timestamps log uptime
no service password-encryption
!
hostname SwitchA
!
spanning-tree mode rapid-pvst ←RSTPを有効にする
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
spanning-tree vlan 1 priority 0 ←ブリッジ・プライオリティ値を0にして,このスイッチをルート・ブリッジにする
!
interface FastEthernet1/0/1
!
interface FastEthernet1/0/3
!
interface Vlan1
no ip address
no ip route-cache
shutdown
!
line con 0
line vty 0 4
no login
line vty 5 15
no login
!
end
SwitchBのコンフィグ
!
version 12.2
no service pad
service timestamps debug datetime localtime
service timestamps log uptime
no service password-encryption
!
hostname SwitchB
!
spanning-tree mode rapid-pvst ←RSTPを有効にする
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
spanning-tree vlan 1 priority 4096 ←ブリッジ・プライオリティ値を4096に設定する
!
interface FastEthernet1/0/1
!
interface FastEthernet1/0/2
!
interface Vlan1
no ip address
no ip route-cache
shutdown
!
line con 0
line vty 0 4
no login
line vty 5 15
no login
!
end
SwitchCのコンフィグ
!
version 12.2
no service pad
service timestamps debug datetime localtime
service timestamps log uptime
no service password-encryption
!
hostname SwitchC
!
!
spanning-tree mode rapid-pvst ←RSTPを有効にする
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
spanning-tree vlan 1 priority 12288 ←ブリッジ・プライオリティ値を12288に設定する
!
vlan internal allocation policy ascending
!
interface FastEthernet1/0/2
!
interface FastEthernet1/0/3
!
interface Vlan1
no ip address
no ip route-cache
shutdown
!
line con 0
line vty 0 4
no login
line vty 5 15
no login
!
end
確認
RSTP(Rapid STP)は,スパニング・ツリーにおける経路切り替え時間を速くした「高速版スパニング・ツリー」です。
通常のスパニング・ツリーのようにタイマーによる経路切り替えはせずに,スイッチ同士が情報を交換してやりとりして切り替えを判断します。
経路切り替えにかかる時間が,BackboneFastで30秒かかるところを,1秒以内に切り替えられます。

●RSTPの特徴
RSTPの特徴は以下の二つです。

・経路切り替え時に各種タイマーを使わない
 (各種タイマー…ブロッキングからリスニングに変わるまでの20秒,リスニングの15秒,ラーニングの15秒)
・スイッチ同士のやりとりによって切り替えを判断する
 (切り替えを提案する「プロポーザル」と,切り替えを同意する「アグリーメント」のフラグを立てたBPDUをやりとりする)
・あらかじめ代替ポートを決めておく
 (2番目のルート・ポート…オルタネート・ポート,2番目の代表ポート…バックアップ・ポート)

こうすることによって,経路を高速に切り替えます。
RSTPは,ルート・ブリッジやコストといった概念は,従来のスパニング・ツリーとまったく同じです。
そのため,RSTPでできるツリー構成は,通常のスパニング・ツリーとまったく同じ構成になります。
※RSTPの動作のしくみは,シスコのWebサイトが参考になります。

●設定の確認
RSTPを動作させるには,全てのスイッチでRSTPを有効にします。
グローバルコンフィグレーション・モードで,以下のコマンドを入力します。

spanning-tree mode rapid-pvst

今回はSwitchA,SwitchB,SwitchCのすべてのスイッチに設定します。
ブリッジ・プライオリティやコストの設定は,通常のスパニング・ツリーと変わりません。

●動作の確認
ネットワークの構成は,3台のスイッチをトライアングル状につないだ構成です。
SwitchCのスパニング・ツリーの状態を見てみましょう。

SwitchC#show spanning-tree

VLAN0001
 Spanning tree enabled protocol rstp
 Root ID  Priority  1
        Address   0011.92cc.fc00
        Cost    19
        Port    5 (FastEthernet1/0/3)
        Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec

 Bridge ID Priority  12289 (priority 12288 sys-id-ext 1)
        Address   0011.92cc.f080
        Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec
        Aging Time 300

Interface       Role  Sts Cost    Prio.Nbr  Type
---------------- ---- --- --------- -------- ---------------
Fa1/0/2        Altn  BLK 19     128.4    P2p
Fa1/0/3        Root FWD 19     128.5    P2p


「Spanning tree enabled protocol rstp」とあり,RSTPが動いていることが確認できます(赤字の部分)。
また,Fa1/0/2がブロッキングになっており,代替ポート(オルタネート・ポート)になっているのがわかります。

SwitchAとSwitchBをつないでいるケーブルを抜いたときの動作を確かめてみます。
切り替え時間に,通常のスパニング・ツリーなら50秒,BackboneFastでも30秒かかるケースです。
SwitchBでデバッグ機能をオンにします。

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


この状態でSwitchAとSwitchBをつないでいるケーブルを抜くと,SwitchBに以下のメッセージが出ます。

SwitchB#
*Mar 1 00:24:27: RSTP(1): updt roles, root port Fa1/0/1 going down ←@
*Mar 1 00:24:27: RSTP(1): we become the root bridge
 ←A
*Mar 1 00:24:27: RSTP(1): updt roles, received superior bpdu on Fa1/0/2 ←B
*Mar 1 00:24:27: RSTP(1): Fa1/0/2 is now root port ←C
*Mar 1 00:24:27: RSTP(1): synced Fa1/0/2 ←D
*Mar 1 00:24:27: RSTP(1): transmitting an agreement on Fa1/0/2 as a response to a proposal ←E
00:24:28: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0/1, changed state to down
00:24:29: %LINK-3-UPDOWN: Interface FastEthernet1/0/1, changed state to down

メッセージの内容を解読してみます。
@ルート・ポートだったFa1/0/1がダウンした
A自分がルート・ブリッジなってBPDUを発信する
Bと思ったら,これまでより優先順位の高い(ブリッジID値の小さい)BPDUをFa1/0/2から受信した
Cということは,Fa1/0/2はルート・ポートだ
D同期(再構成)完了
E変更提案の同意(アグリーメント)をFa1/0/2に送る

このメッセージをやりとりしているのはSwitchCです。
SwitchCでは以下のログが出力されます。

SwitchC#
*Mar 1 00:20:53: RSTP(1): updt roles, received superior bpdu on Fa1/0/2 ←@
*Mar 1 00:20:53: RSTP(1): Fa1/0/2 is now designated ←A

*Mar 1 00:20:53: RSTP(1): transmitting a proposal on Fa1/0/2
 ←B
*Mar 1 00:20:53: RSTP(1): received an agreement on Fa1/0/2
 ←C


こちらも解読してみます。
@Fa1/0/2の役割変更
AFa1/0/2は代表ポートだ
BFa1/0/2の変更提案(プロポーザル)を送る
CFa1/0/2の変更同意(アグリーメント)を受信した

SwitchBとSwitchCがプロポーザルとアグリーメントをやりとりして,ポートの役割を変更しているのがわかります(青字の部分)。
かかった時間を見てみると,この作業が1秒以内に実行されたことがわかります。

再びSwitchCの状態を見てみましょう。
Fa1/0/2が代表ポート(Degn)になってフォワーディングに変わっています。

SwitchC#show spanning-tree

VLAN0001
 Spanning tree enabled protocol rstp
 Root ID  Priority  1
        Address   0011.92cc.fc00
        Cost    19
        Port    5 (FastEthernet1/0/3)
        Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec

 Bridge ID Priority  12289 (priority 12288 sys-id-ext 1)
        Address   0011.92cc.f080
        Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec
        Aging Time 300

Interface       Role  Sts Cost     Prio.Nbr  Type
---------------- ---- --- --------- -------- -----------------
Fa1/0/2        Desg FWD 19      128.4    P2p
Fa1/0/3        Root FWD 19      128.5    P2p



●エッジ・ポートにはPortfastを設定する
ここで,SwitchBにパソコンが接続されているケースを見てみましょう。
以下のような構成です。



この状態で,先程と同じように,SwitchAとSwitchBの間のケーブルを抜きます。
するとSwitchBには以下のメッセージが出ます。

SwitchB#
*Mar 1 01:06:20: RSTP(1): updt roles, root port Fa1/0/1 going down
*Mar 1 01:06:20: RSTP(1): we become the root bridge
*Mar 1 01:06:20: RSTP(1): updt roles, received superior bpdu on Fa1/0/2
*Mar 1 01:06:20: RSTP(1): Fa1/0/2 is now root port
*Mar 1 01:06:20: RSTP(1): syncing port Fa1/0/10
*Mar 1 01:06:20: RSTP(1): synced Fa1/0/2
*Mar 1 01:06:20: RSTP(1): transmitting an agreement on Fa1/0/2 as a response to a proposal
*Mar 1 01:06:20: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:20: RSTP(1): transmitting a proposal on Fa1/0/10

01:06:21: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0/1, changed state to down
01:06:22: %LINK-3-UPDOWN: Interface FastEthernet1/0/1, changed state to down
*Mar 1 01:06:22: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:24: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:24: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:26: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:28: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:30: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:32: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:34: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:35: RSTP(1): Fa1/0/10 fdwhile Expired
*Mar 1 01:06:36: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:38: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:40: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:42: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:44: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:46: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:48: RSTP(1): transmitting a proposal on Fa1/0/10
*Mar 1 01:06:50: RSTP(1): Fa1/0/10 fdwhile Expired


先程と違うのは,赤字の部分が付け加わっているところです。
transmitting a proposal on Fa1/0/10」は,SwitchCから受け取ったプロポーザルを,Fa1/2/10に送信していることを示しています。
でもFa1/0/10にはスイッチはつながっていないので,応答がありません。
なので,30秒間続けてプロポーザルを送り続けているのです。
つまり,SwitchBがポートを切り替えるのに結局30秒かかってしまい,結局,通常のスパニング・ツリーのときの動作と同じになってしまいます。

この問題を解消するには,パソコンがつながっているSwitchBのFa1/0/10にportfastを設定します。

SwitchB(config)#interface fastEthernet 1/0/10
SwitchB(config-if)#spanning-tree portfast
%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc... to this
interface when portfast is enabled, can cause temporary bridging loops.
Use with CAUTION

%Portfast has been configured on FastEthernet1/0/10 but will only
have effect when the interface is in a non-trunking mode.


設定すると「portfastコマンドは,ホストがつながっているポートにのみ設定すべき」という警告メッセージが出ます。
portfastを設定したポートには,エッジ・ポートであることを示す「Edge」が表示されます。

SwitchB#show spanning-tree

VLAN0001
 Spanning tree enabled protocol rstp
 Root ID  Priority  1
        Address   0011.92cc.fc00
        Cost    19
        Port    3 (FastEthernet1/0/1)
        Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec

 Bridge ID Priority  4097  (priority 4096 sys-id-ext 1)
        Address   0011.92cd.0280
        Hello Time  2 sec Max Age 20 sec Forward Delay 15 sec
        Aging Time 300

Interface        Role Sts  Cost    Prio.Nbr  Type
---------------- ---- --- --------- -------- ----------------
Fa1/0/2        Root FWD  19     128.4   P2p
Fa1/0/10        Desg FWD  19     128.12   Edge P2p


エッジ・ポートに設定したポートは,RSTPにおいてBPDUを送信しません。
なので,最初に見たような1秒以内の切り替えが可能になります。
「RSTPを使うときには,パソコンがつながるポートにはportfastを入力してエッジ・ポートにする」と覚えておきましょう。

●高速スパニングツリー プロトコル(802.1w)
http://www.cisco.com/japanese/warp/public/3/jp/service/tac/473/146-j.html

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