Understanding and Configuring STP


This chapter describes how to configure the Spanning Tree Protocol (STP) on a Catalyst 4500 series switch. It also provides guidelines, procedures, and configuration examples.

This chapter includes the following major sections:

Overview of STP

Default STP Configuration

Configuring STP


Note For information on configuring the PortFast, UplinkFast, and BackboneFast, and other spanning tree enhancements, see Chapter 13, "Configuring STP Features."



Note For complete syntax and usage information for the switch commands used in this chapter, first look at the Cisco Catalyst 4500 Series Switch Command Reference and related publications at this location:

http://www.cisco.com/en/US/products//hw/switches/ps4324/index.html

If the command is not found in the Catalyst 4500 Command Reference, it will be found in the larger Cisco IOS library. Refer to the Catalyst 4500 Series Switch Cisco IOS Command Reference and related publications at this location:

http://www.cisco.com/en/US/products/ps6350/index.html


Overview of STP

STP is a Layer 2 link management protocol that provides path redundancy while preventing undesirable loops in the network. For a Layer 2 Ethernet network to function properly, only one active path can exist between any two stations. A loop-free subset of a network topology is called a spanning tree. The operation of a spanning tree is transparent to end stations, which cannot detect whether they are connected to a single LAN segment or a switched LAN of multiple segments.

A Catalyst 4500 series switch use STP (the IEEE 802.1D bridge protocol) on all VLANs. By default, a single spanning tree runs on each configured VLAN (provided you do not manually disable the spanning tree). You can enable and disable a spanning tree on a per-VLAN basis.

When you create fault-tolerant internetworks, you must have a loop-free path between all nodes in a network. The spanning tree algorithm calculates the best loop-free path throughout a switched Layer 2 network. Switches send and receive spanning tree frames at regular intervals. The switches do not forward these frames, but use the frames to construct a loop-free path.

Multiple active paths between end stations cause loops in the network. If a loop exists in the network, end stations might receive duplicate messages and switches might learn end station MAC addresses on multiple Layer 2 interfaces. These conditions result in an unstable network.

A spanning tree defines a tree with a root switch and a loop-free path from the root to all switches in the Layer 2 network. A spanning tree forces redundant data paths into a standby (blocked) state. If a network segment in the spanning tree fails and a redundant path exists, the spanning tree algorithm recalculates the spanning tree topology and activates the standby path.

When two ports on a switch are part of a loop, the spanning tree port priority and port path cost setting determine which port is put in the forwarding state and which port is put in the blocking state. The spanning tree port priority value represents the location of an interface in the network topology and how well located it is to pass traffic. The spanning tree port path cost value represents media speed.

Understanding the Bridge ID

Each VLAN on each network device has a unique 64-bit bridge ID consisting of a bridge priority value, an extended system ID, and an STP MAC address allocation.

Bridge Priority Value

The bridge priority value determines whether a given redundant link will be given priority and considered part of a given span in a spanning tree. Preference is given to lower values, and if you want to manually configure a preference, assign a lower bridge priority value to a link than to its redundant possibility. With releases prior to 12.1(12c)EW, the bridge priority is a 16-bit value (see Table 12-1).With Release 12.1(12c)EW and later releases, the bridge priority is a 4-bit value when the extended system ID is enabled (see Table 12-2). See the "Configuring the Bridge Priority of a VLAN" section.

Extended System ID

Extended system IDs are VLAN IDs between 1025 and 4096. Releases 12.1(12c)EW and later releases support a 12-bit extended system ID field as part of the bridge ID (see Table 12-2). Chassis that support only 64 MAC addresses always use the 12-bit extended system ID. On chassis that support 1024 MAC addresses, you can enable use of the extended system ID. STP uses the VLAN ID as the extended system ID. See the "Enabling the Extended System ID" section.

Table 12-1 Bridge Priority Value with the Extended System ID Disabled

Bridge Priority Value
Bit 16
Bit 15
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1

32768

16384

8192

4096

2048

1024

512

256

128

64

32

16

8

4

2

1


Table 12-2 Bridge Priority Value and Extended System ID with the Extended System ID Enabled

Bridge Priority Value
Extended System ID (Set Equal to the VLAN ID)
Bit 16
Bit 15
Bit 14
Bit 13
Bit 12
Bit 11
Bit 10
Bit 9
Bit 8
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1

32768

16384

8192

4096

VLAN ID


STP MAC Address Allocation

A Catalyst 4500 series switch chassis has either 64 or 1024 MAC addresses available to support software features like STP. Enter the show module command to view the MAC address range on your chassis.

Release 12.1(12c)EW and later releases support chassis with 64 or 1024 MAC addresses. For chassis with 64 MAC addresses, STP uses the extended system ID plus a MAC address to make the bridge ID unique for each VLAN.

Earlier releases support chassis with 1024 MAC addresses. With earlier releases, STP uses one MAC address per VLAN to make the bridge ID unique for each VLAN.

Bridge Protocol Data Units

The following elements determine the stable active spanning tree topology of a switched network:

The unique bridge ID (bridge priority and MAC address) associated with each VLAN on each switch

The spanning tree path cost (or bridge priority value) to the root bridge

The port identifier (port priority and MAC address) associated with each Layer 2 interface

Bridge protocol data units (BPDUs) contain information about the transmitting bridge and its ports, including the bridge and MAC addresses, bridge priority, port priority, and path cost. The system computes the spanning tree topology by transmitting BPDUs among connecting switches, and in one direction from the root switch. Each configuration BPDU contains at least the following:

The unique bridge ID of the switch that the transmitting switch believes to be the root switch

The spanning tree path cost to the root

The bridge ID of the transmitting bridge

The age of the message

The identifier of the transmitting port

Values for the hello, forward delay, and max-age protocol timers

When a switch transmits a BPDU frame, all switches connected to the LAN on which the frame is transmitted receive the BPDU. When a switch receives a BPDU, it does not forward the frame but instead uses the information in the frame to calculate a BPDU and, if the topology changes, initiate a BPDU transmission.

A BPDU exchange results in the following:

One switch is elected as the root bridge.

The shortest distance to the root bridge is calculated for each switch based on the path cost.

A designated bridge for each LAN segment is selected. This is the switch closest to the root bridge through which frames are forwarded to the root.

A root port is selected. This is the port providing the best path from the bridge to the root bridge.

Ports included in the spanning tree are selected.

Election of the Root Bridge

For each VLAN, the switch with the highest bridge priority (the lowest numerical priority value) is elected as the root bridge. If all switches are configured with the default priority value (32,768), the switch with the lowest MAC address in the VLAN becomes the root bridge.

The spanning tree root bridge is the logical center of the spanning tree topology in a switched network. All paths that are not required to reach the root bridge from anywhere in the switched network are placed in spanning tree blocking mode.

A spanning tree uses the information provided by BPDUs to elect the root bridge and root port for the switched network, as well as the root port and designated port for each switched segment.

STP Timers

Table 12-3 describes the STP timers that affect the performance of the entire spanning tree.

Table 12-3 Spanning Tree Protocol Timers

Variable
Description

hello_time

Determines how often the switch broadcasts hello messages to other switches.

forward_time

Determines how long each of the listening and learning states will last before the port begins forwarding.

max_age

Determines the amount of time that protocol information received on a port is stored by the switch.


Creating the STP Topology

The goal of the spanning tree algorithm is to make the most direct link the root port. When the spanning tree topology is calculated based on default parameters, the path between source and destination end stations in a switched network might not be optimal according to link speed. For instance, connecting higher-speed links to a port that has a higher number than the current root port can cause a root-port change.

In Figure 12-1, Switch A is elected as the root bridge. (This could happen if the bridge priority of all the switches is set to the default value [32,768] and Switch A has the lowest MAC address.) However, due to traffic patterns, the number of forwarding ports, or link types, Switch A might not be the ideal root bridge. By increasing the STP port priority (lowering the numerical value) of the ideal switch so that it becomes the root bridge, you force a spanning tree recalculation to form a new spanning tree topology with the ideal switch as the root.

Figure 12-1 Spanning Tree Topology

For example, assume that one port on Switch B is a fiber-optic link, and another port on Switch B (an unshielded twisted-pair [UTP] link) is the root port. Network traffic might be more efficient over the high-speed fiber-optic link. By changing the spanning tree port priority on the fiber-optic port to a higher priority (lower numerical value) than the priority set for the root port, the fiber-optic port becomes the new root port.

STP Port States

Propagation delays can occur when protocol information passes through a switched LAN. As a result, topology changes can take place at different times and at different places in a switched network. When a Layer 2 interface transitions directly from nonparticipation in the spanning tree topology to the forwarding state, it can create temporary data loops. Ports must wait for new topology information to propagate through the switched LAN before starting to forward frames. They must allow the frame lifetime to expire for frames that have been forwarded under the old topology.

Each Layer 2 interface on a switch that uses spanning tree exists in one of the following five states:

Blocking—In this state, the Layer 2 interface does not participate in frame forwarding.

Listening—This state is the first transitional state after the blocking state when spanning tree determines that the Layer 2 interface should participate in frame forwarding.

Learning—In this state, the Layer 2 interface prepares to participate in frame forwarding.

Forwarding—In this state, the Layer 2 interface forwards frames.

Disabled—In this state, the Layer 2 interface does not participate in spanning tree and does not forward frames.

MAC Address Allocation

The supervisor engine has a pool of 1024 MAC addresses that are used as the bridge IDs for the VLAN spanning trees. You can use the show module command to view the MAC address range (allocation range for the supervisor) that the spanning tree uses for the algorithm.

MAC addresses for the Catalyst 4506 switch are allocated sequentially, with the first MAC address in the range assigned to VLAN 1, the second MAC address in the range assigned to VLAN 2, and so forth. For example, if the MAC address range is 00-e0-1e-9b-2e-00 to 00-e0-1e-9b-31-ff, the VLAN 1 bridge ID is 00-e0-1e-9b-2e-00, the VLAN 2 bridge ID is 00-e0-1e-9b-2e-01, the VLAN 3 bridge ID is 00-e0-1e-9b-2e-02, and so on. On other Catalyst 4500 series platforms, all VLANS map to the same MAC address rather than mapping to separate MAC addresses.

STP and IEEE 802.1Q Trunks

802.1Q VLAN trunks impose some limitations on the spanning tree strategy for a network. In a network of Cisco switches connected through 802.1Q trunks, the switches maintain one instance of spanning tree for each VLAN allowed on the trunks. However, non-Cisco 802.1Q switches maintain only one instance of spanning tree for all VLANs allowed on the trunks.

When you connect a Cisco switch to a non-Cisco device (that supports 802.1Q) through an 802.1Q trunk, the Cisco switch combines the spanning tree instance of the 802.1Q native VLAN of the trunk with the spanning tree instance of the non-Cisco 802.1Q switch. However, all per-VLAN spanning tree information is maintained by Cisco switches separated by a network of non-Cisco 802.1Q switches. The non-Cisco 802.1Q network separating the Cisco switches is treated as a single trunk link between the switches.


Note For more information on 802.1Q trunks, see Chapter 10, "Configuring Layer 2 Ethernet Interfaces."


Per-VLAN Rapid Spanning Tree

Per-VLAN Rapid Spanning Tree (PVRST+) is the same as PVST+, although PVRST+ utilizes a rapid STP based on IEEE 802.1w rather than 802.1D to provide faster convergence. PVRST+ uses roughly the same configuration as PVST+ and needs only minimal configuration. In PVRST+, dynamic CAM entries are flushed immediately on a per-port basis when any topology change is made. UplinkFast and BackboneFast are enabled but not active in this mode, since the functionality is built into the Rapid STP. PVRST+ provides for rapid recovery of connectivity following the failure of a bridge, bridge port, or LAN.

For enabling information, see "Enabling Per-VLAN Rapid Spanning Tree" on page 20.

Default STP Configuration

Table 12-4 shows the default spanning tree configuration.

Table 12-4 Spanning Tree Default Configuration Values 

Feature
Default Value

Enable state

Spanning tree enabled for all VLANs

Bridge priority value

32,768

Spanning tree port priority value (configurable on a per-interface basis—used on interfaces configured as Layer 2 access ports)

128

Spanning tree port cost (configurable on a per-interface basis—used on interfaces configured as Layer 2 access ports)

Gigabit Ethernet: 4

Fast Ethernet: 19

Fast Ethernet 10/100: 19

Spanning tree VLAN port priority value (configurable on a per-VLAN basis—used on interfaces configured as Layer 2 trunk ports)

128

Spanning tree VLAN port cost (configurable on a per-VLAN basis—used on interfaces configured as Layer 2 trunk ports)

Gigabit Ethernet: 4

Fast Ethernet: 19

Hello time

2 sec

Forward delay time

15 sec

Maximum aging time

20 sec


Configuring STP

The following sections describe how to configure spanning tree on VLANs:

Enabling STP

Enabling the Extended System ID

Configuring the Root Bridge

Configuring a Secondary Root Switch

Configuring STP Port Priority

Configuring STP Port Cost

Configuring the Bridge Priority of a VLAN

Configuring the Hello Time

Configuring the Maximum Aging Time for a VLAN

Configuring the Forward-Delay Time for a VLAN

Disabling Spanning Tree Protocol

Enabling Per-VLAN Rapid Spanning Tree


Note The spanning tree commands described in this chapter can be configured on any interface except those configured with the no switchport command.


Enabling STP


Note By default, spanning tree is enabled on all the VLANs.


You can enable a spanning tree on a per-VLAN basis. The switch maintains a separate instance of spanning tree for each VLAN (except on VLANs on which you have disabled a spanning tree).

To enable a spanning tree on a per-VLAN basis, perform this task:

 
Command
Purpose

Step 1 

Switch# configure terminal

Enters global configuration mode.

Step 2 

Switch(config)# spanning-tree vlan vlan_ID 

Enables spanning tree for VLAN vlan_id. The vlan_ID value can range from 1 to 4094.

Step 3 

Switch(config)# end 

Exits configuration mode.

Step 4 

Switch# show spanning-tree vlan vlan_ID 

Verifies that spanning tree is enabled.

This example shows how to enable a spanning tree on VLAN 200:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 200 
Switch(config)# end 
Switch#

Note Because spanning tree is enabled by default, issuing a show running command to view the resulting configuration will not display the command you entered to enable spanning tree.


This example shows how to verify that spanning tree is enabled on VLAN 200:

Switch# show spanning-tree vlan 200 

 VLAN200 is executing the ieee compatible Spanning Tree protocol
  Bridge Identifier has priority 32768, address 0050.3e8d.6401
  Configured hello time 2, max age 20, forward delay 15
  Current root has priority 16384, address 0060.704c.7000
  Root port is 264 (FastEthernet5/8), cost of root path is 38
  Topology change flag not set, detected flag not set
  Number of topology changes 0 last change occurred 01:53:48 ago
  Times:  hold 1, topology change 24, notification 2
          hello 2, max age 14, forward delay 10
  Timers: hello 0, topology change 0, notification 0

 Port 264 (FastEthernet5/8) of VLAN200 is forwarding
   Port path cost 19, Port priority 128, Port Identifier 129.9.
   Designated root has priority 16384, address 0060.704c.7000
   Designated bridge has priority 32768, address 00e0.4fac.b000
   Designated port id is 128.2, designated path cost 19
   Timers: message age 3, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   BPDU: sent 3, received 3417

Switch#

Enabling the Extended System ID


Note The extended system ID is enabled permanently on chassis that support 64 MAC addresses.


You can use the spanning-tree extend system-id command to enable the extended system ID on chassis that support 1024 MAC addresses. See the "Understanding the Bridge ID" section.

To enable the extended system ID, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# spanning-tree extend system-id 

Enables the extended system ID.


Disables the extended system ID.

Note You cannot disable the extended system ID on chassis that support 64 MAC addresses or when you have configured extended range VLANs (see "Spanning Tree Default Configuration Values" section).

Step 2 

Switch(config)# end 

Exits configuration mode.

Step 3 

Switch# show spanning-tree vlan vlan_ID 

Verifies the configuration.


Note When you enable or disable the extended system ID, the bridge IDs of all active STP instances are updated, which might change the spanning tree topology.


This example shows how to enable the extended system ID:

Switch# configure terminal 
Switch(config)# spanning-tree extend system-id 
Switch(config)# end 
Switch#

This example shows how to verify the configuration:

Switch# show spanning-tree summary | include extended
Extended system ID is enabled.

Configuring the Root Bridge

A Catalyst 4000 family switch maintains an instance of spanning tree for each active VLAN configured on the switch. A bridge ID, consisting of the bridge priority and the bridge MAC address, is associated with each instance. For each VLAN, the switch with the lowest bridge ID will become the root bridge for that VLAN. Whenever the bridge priority changes, the bridge ID also changes. This results in the recomputation of the root bridge for the VLAN.

To configure a switch to become the root bridge for the specified VLAN, use the spanning-tree vlan vlan-ID root command to modify the bridge priority from the default value (32,768) to a significantly lower value. The bridge priority for the specified VLAN is set to 8192 if this value will cause the switch to become the root for the VLAN. If any bridge for the VLAN has a priority lower than 8192, the switch sets the priority to 1 less than the lowest bridge priority.

For example, assume that all the switches in the network have the bridge priority for VLAN 100 set to the default value of 32,768. Entering the spanning-tree vlan 100 root primary command on a switch will set the bridge priority for VLAN 100 to 8192, causing this switch to become the root bridge for VLAN 100.


Note The root switch for each instance of spanning tree should be a backbone or distribution switch. Do not configure an access switch as the spanning tree primary root.


Use the diameter keyword to specify the Layer 2 network diameter (the maximum number of bridge hops between any two end stations in the network). When you specify the network diameter, a switch automatically picks an optimal hello time, forward delay time, and maximum age time for a network of that diameter. This can significantly reduce the spanning tree convergence time.

Use the hello-time keyword to override the automatically calculated hello time.


Note We recommend that you avoid manually configuring the hello time, forward delay time, and maximum age time after configuring the switch as the root bridge.


To configure a switch as the root switch, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spanning-tree vlan vlan_ID 
root primary [diameter hops [hello-time seconds]] 

Configures a switch as the root switch.

You can use the no keyword to restore the defaults.

Step 2 

Switch(config)# end 

Exits configuration mode.

This example shows how to configure a switch as the root bridge for VLAN 10, with a network diameter of 4:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 10 root primary diameter 4 
Switch(config)# end 
Switch#

This example shows how the configuration changes when a switch becomes a spanning tree root. This is the configuration before the switch becomes the root for VLAN 1:

Switch#show spanning-tree vlan 1

VLAN1 is executing the ieee compatible Spanning Tree protocol
  Bridge Identifier has priority 32768, address 0030.94fc.0a00
  Configured hello time 2, max age 20, forward delay 15
  Current root has priority 32768, address 0001.6445.4400
  Root port is 323 (FastEthernet6/3), cost of root path is 19
  Topology change flag not set, detected flag not set
  Number of topology changes 2 last change occurred 00:02:19 ago
          from FastEthernet6/1
  Times: hold 1, topology change 35, notification 2
          hello 2, max age 20, forward delay 15
  Timers:hello 0, topology change 0, notification 0, aging 300

 Port 323 (FastEthernet6/3) of VLAN1 is forwarding
   Port path cost 19, Port priority 128, Port Identifier 129.67.
   Designated root has priority 32768, address 0001.6445.4400
   Designated bridge has priority 32768, address 0001.6445.4400
   Designated port id is 129.67, designated path cost 0
   Timers:message age 2, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   BPDU:sent 3, received 91

 Port 324 (FastEthernet6/4) of VLAN1 is blocking
   Port path cost 19, Port priority 128, Port Identifier 129.68.
   Designated root has priority 32768, address 0001.6445.4400
   Designated bridge has priority 32768, address 0001.6445.4400
   Designated port id is 129.68, designated path cost 0
   Timers:message age 2, forward delay 0, hold 0
   Number of transitions to forwarding state:0
   BPDU:sent 1, received 89

Now, you can set the switch as the root:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 1 root primary 
Switch(config)# spanning-tree vlan 1 root primary
 VLAN 1 bridge priority set to 8192
 VLAN 1 bridge max aging time unchanged at 20
 VLAN 1 bridge hello time unchanged at 2
 VLAN 1 bridge forward delay unchanged at 15
Switch(config)# end

This is the configuration after the switch becomes the root:

Switch# show spanning-tree vlan 1

VLAN1 is executing the ieee compatible Spanning Tree protocol
  Bridge Identifier has priority 8192, address 0030.94fc.0a00
  Configured hello time 2, max age 20, forward delay 15
  We are the root of the spanning tree
  Topology change flag set, detected flag set
  Number of topology changes 3 last change occurred 00:00:09 ago
  Times: hold 1, topology change 35, notification 2
          hello 2, max age 20, forward delay 15
  Timers:hello 0, topology change 25, notification 0, aging 15

Port 323 (FastEthernet6/3) of VLAN1 is forwarding
   Port path cost 19, Port priority 128, Port Identifier 129.67.
   Designated root has priority 8192, address 0030.94fc.0a00
   Designated bridge has priority 8192, address 0030.94fc.0a00
   Designated port id is 129.67, designated path cost 0
   Timers:message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   BPDU:sent 9, received 105

 Port 324 (FastEthernet6/4) of VLAN1 is listening
   Port path cost 19, Port priority 128, Port Identifier 129.68.
   Designated root has priority 8192, address 0030.94fc.0a00
   Designated bridge has priority 8192, address 0030.94fc.0a00
   Designated port id is 129.68, designated path cost 0
   Timers:message age 0, forward delay 5, hold 0
   Number of transitions to forwarding state:0
   BPDU:sent 6, received 102

Switch#

Note Because the bridge priority is now set at 8192, this switch becomes the root of the spanning tree.


Configuring a Secondary Root Switch

When you configure a switch as the secondary root, the spanning tree bridge priority is modified from the default value (32,768) to 16,384. This means that the switch is likely to become the root bridge for the specified VLANs if the primary root bridge fails (assuming the other switches in the network use the default bridge priority of 32,768).

You can run this command on more than one switch to configure multiple backup root switches. Use the same network diameter and hello time values that you used when configuring the primary root switch.


Note We recommend that you avoid manually configuring the hello time, forward delay time, and maximum age time after configuring the switch as the root bridge.


To configure a switch as the secondary root switch, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spanning-tree vlan vlan_ID 
root secondary [diameter hops [hello-time 
seconds]] 

Configures a switch as the secondary root switch.

You can use the no keyword to restore the defaults.

Step 2 

Switch(config)# end 

Exits configuration mode.

This example shows how to configure the switch as the secondary root switch for VLAN 10, with a network diameter of 4:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 10 root secondary diameter 4 
VLAN 10 bridge priority set to 16384
 VLAN 10 bridge max aging time set to 14
 VLAN 10 bridge hello time unchanged at 2
 VLAN 10 bridge forward delay set to 10
Switch(config)# end 
Switch#

This example shows how to verify the configuration of VLAN 1:

Switch#sh spanning-tree vlan 1

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32768
             Address     0003.6b10.e800
             This bridge is the root
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec

  Bridge ID  Priority    32768
             Address     0003.6b10.e800
             Hello Time   2 sec  Max Age 20 sec  Forward Delay 15 sec
             Aging Time 300

Interface        Role Sts Cost      Prio.Nbr Status
---------------- ---- --- --------- -------- --------------------------------
Fa3/1            Desg FWD 19        128.129  P2p 
Fa3/2            Desg FWD 19        128.130  P2p 
Fa3/48           Desg FWD 19        128.176  Edge P2p 

Switch#

Configuring STP Port Priority

In the event of a loop, a spanning tree considers port priority when selecting an interface to put into the forwarding state. You can assign higher priority values to interfaces that you want a spanning tree to select first and lower priority values to interfaces that you want a spanning tree to select last. If all interfaces have the same priority value, a spanning tree puts the interface with the lowest interface number in the forwarding state and blocks other interfaces. The possible priority range is 0 through 240, configurable in increments of 16 (the default is 128).


Note The Cisco IOS software uses the port priority value when the interface is configured as an access port and uses VLAN port priority values when the interface is configured as a trunk port.


To configure the spanning tree port priority of an interface, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# interface {{fastethernet 
|gigabitethernet} slot/port} | {port-channel 
port_channel_number}

Specifies an interface to configure.

Step 2 

Switch(config-if)# [no] spanning-tree 
port-priority port_priority 

Configures the port priority for an interface. The port_priority value can be from 0 to 240, in increments of 16.

You can use the no keyword to restore the defaults.

Step 3 

Switch(config-if)# [no] spanning-tree vlan 
vlan_ID port-priority port_priority 

Configures the VLAN port priority for an interface. The port_priority value can be from 0 to 240, in increments of 16.

You can use the no keyword to restore the defaults.

Step 4 

Switch(config-if)# end 

Exits configuration mode.

Step 5 

Switch# show spanning-tree interface 
{{fastethernet | gigabitethernet} slot/port} | 
{port-channel port_channel_number}
show spanning-tree vlan vlan_ID 

Verifies the configuration.

This example shows how to configure the spanning tree port priority of a Fast Ethernet interface:

Switch# configure terminal 
Switch(config)# interface fastethernet 5/8 
Switch(config-if)# spanning-tree port-priority 100 
Switch(config-if)# end 
Switch#

This example shows how to verify the configuration of a Fast Ethernet interface when it is configured as an access port:

Switch# show spanning-tree interface fastethernet 3/1

Vlan             Role Sts Cost      Prio.Nbr Status
---------------- ---- --- --------- -------- --------------------------------
VLAN0001         Desg FWD 19        128.129  P2p 
VLAN1002         Desg FWD 19        128.129  P2p 
VLAN1003         Desg FWD 19        128.129  P2p 
VLAN1004         Desg FWD 19        128.129  P2p 
VLAN1005         Desg FWD 19        128.129  P2p 
Switch#

This example shows how to display the details of the interface configuration when the interface is configured as an access port:

Switch# show spanning-tree interface fastethernet 3/1 detail
Port 129 (FastEthernet3/1) of VLAN0001 is forwarding 
   Port path cost 19, Port priority 128, Port Identifier 128.129.
   Designated root has priority 32768, address 0003.6b10.e800
   Designated bridge has priority 32768, address 0003.6b10.e800
   Designated port id is 128.129, designated path cost 0
   Timers:message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   Link type is point-to-point by default
   BPDU:sent 187, received 1

 Port 129 (FastEthernet3/1) of VLAN1002 is forwarding 
   Port path cost 19, Port priority 128, Port Identifier 128.129.
   Designated root has priority 32768, address 0003.6b10.ebe9
   Designated bridge has priority 32768, address 0003.6b10.ebe9
   Designated port id is 128.129, designated path cost 0
   Timers:message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   Link type is point-to-point by default
   BPDU:sent 94, received 2

 Port 129 (FastEthernet3/1) of VLAN1003 is forwarding 
   Port path cost 19, Port priority 128, Port Identifier 128.129.
   Designated root has priority 32768, address 0003.6b10.ebea
   Designated bridge has priority 32768, address 0003.6b10.ebea
   Designated port id is 128.129, designated path cost 0
   Timers:message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   Link type is point-to-point by default
   BPDU:sent 94, received 2

 Port 129 (FastEthernet3/1) of VLAN1004 is forwarding 
   Port path cost 19, Port priority 128, Port Identifier 128.129.
   Designated root has priority 32768, address 0003.6b10.ebeb
   Designated bridge has priority 32768, address 0003.6b10.ebeb
   Designated port id is 128.129, designated path cost 0
   Timers:message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   Link type is point-to-point by default
   BPDU:sent 95, received 2

 Port 129 (FastEthernet3/1) of VLAN1005 is forwarding 
   Port path cost 19, Port priority 128, Port Identifier 128.129.
   Designated root has priority 32768, address 0003.6b10.ebec
   Designated bridge has priority 32768, address 0003.6b10.ebec
   Designated port id is 128.129, designated path cost 0
   Timers:message age 0, forward delay 0, hold 0
   Number of transitions to forwarding state:1
   Link type is point-to-point by default
   BPDU:sent 95, received 2
Switch# 

Note The show spanning-tree port-priority command displays only information for ports with an active link. If there is no port with an active link, enter a show running-config interface command to verify the configuration.


This example shows how to configure the spanning tree VLAN port priority of a Fast Ethernet interface:

Switch# configure terminal 
Switch(config)# interface fastethernet 5/8 
Switch(config-if)# spanning-tree vlan 200 port-priority 64 
Switch(config-if)# end 
Switch#

This example shows how to verify the configuration of VLAN 200 on the interface when it is configured as a trunk port:

Switch# show spanning-tree vlan 200 
<...output truncated...>

Port 264 (FastEthernet5/8) of VLAN200 is forwarding
Port path cost 19, Port priority 64, Port Identifier 129.8.
   Designated root has priority 32768, address 0010.0d40.34c7
   Designated bridge has priority 32768, address 0010.0d40.34c7
   Designated port id is 128.1, designated path cost 0
   Timers: message age 2, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   BPDU: sent 0, received 13513

<...output truncated...>
Switch#

Configuring STP Port Cost

The default value for spanning tree port path cost is derived from the interface media speed. In the event of a loop, spanning tree considers port cost when selecting an interface to put into the forwarding state. You can assign lower cost values to interfaces that you want spanning tree to select first, and higher cost values to interfaces that you want spanning tree to select last. If all interfaces have the same cost value, spanning tree puts the interface with the lowest interface number in the forwarding state and blocks other interfaces. The possible cost range is 1 through 200,000,000 (the default is media-specific).

Spanning tree uses the port cost value when the interface is configured as an access port and uses VLAN port cost values when the interface is configured as a trunk port.

To configure the spanning tree port cost of an interface, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# interface {{fastethernet 
|gigabitethernet} slot/port} | {port-channel 
port_channel_number}

Specifies an interface to configure.

Step 2 

Switch(config-if)# [no] spanning-tree cost 
port_cost 

Configures the port cost for an interface. The port_cost value can be from 1 to 200,000,000.

You can use the no keyword to restore the defaults.

Step 3 

Switch(config-if)# [no] spanning-tree vlan 
vlan_ID cost port_cost 

Configures the VLAN port cost for an interface. The port_cost value can be from 1 to 200,000,000.

You can use the no keyword to restore the defaults.

Step 4 

Switch(config-if)# end 

Exits configuration mode.

Step 5 

Switch# show spanning-tree interface 
{{fastethernet | gigabitethernet} slot/port} | 
{port-channel port_channel_number} 
show spanning-tree vlan vlan_ID 

Verifies the configuration.

This example shows how to change the spanning tree port cost of a Fast Ethernet interface:

Switch# configure terminal 
Switch(config)# interface fastethernet 5/8 
Switch(config-if)# spanning-tree cost 18 
Switch(config-if)# end 
Switch#

This example shows how to verify the configuration of the interface when it is configured as an access port:

Switch# show spanning-tree interface fastethernet 5/8 
 Port 264 (FastEthernet5/8) of VLAN200 is forwarding
   Port path cost 18, Port priority 100, Port Identifier 129.8.
   Designated root has priority 32768, address 0010.0d40.34c7
   Designated bridge has priority 32768, address 0010.0d40.34c7
   Designated port id is 128.1, designated path cost 0
   Timers: message age 2, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   BPDU: sent 0, received 13513
Switch#

This example shows how to configure the spanning tree VLAN port cost of a Fast Ethernet interface:

Switch# configure terminal 
Switch(config)# interface fastethernet 5/8 
Switch(config-if)# spanning-tree vlan 200 cost 17 
Switch(config-if)# end 
Switch#

This example shows how to verify the configuration of VLAN 200 on the interface when it is configured as a trunk port:

Switch# show spanning-tree vlan 200 
<...output truncated...>
Port 264 (FastEthernet5/8) of VLAN200 is forwarding
Port path cost 17, Port priority 64, Port Identifier 129.8.
   Designated root has priority 32768, address 0010.0d40.34c7
   Designated bridge has priority 32768, address 0010.0d40.34c7
   Designated port id is 128.1, designated path cost 0
   Timers: message age 2, forward delay 0, hold 0
   Number of transitions to forwarding state: 1
   BPDU: sent 0, received 13513

<...output truncated...>
Switch#

Note The show spanning-tree command displays only information for ports with an active link (green light is on). If there is no port with an active link, you can issue a show running-config command to confirm the configuration.


Configuring the Bridge Priority of a VLAN


Note Exercise care when configuring the bridge priority of a VLAN. In most cases, we recommend that you enter the spanning-tree vlan vlan_ID root primary and the spanning-tree vlan vlan_ID root secondary commands to modify the bridge priority.


To configure the spanning tree bridge priority of a VLAN, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spanning-tree vlan vlan_ID 
priority bridge_priority 

Configures the bridge priority of a VLAN. The bridge_priority value can be from 1 to 65,535.

You can use the no keyword to restore the defaults.

Step 2 

Switch(config)# end 

Exits configuration mode.

Step 3 

Switch# show spanning-tree vlan vlan_ID bridge 
[brief]

Verifies the configuration.

This example shows how to configure the bridge priority of VLAN 200 to 33,792:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 200 priority 33792 
Switch(config)# end 
Switch#

This example shows how to verify the configuration:

Switch# show spanning-tree vlan 200 bridge brief
                                      Hello Max  Fwd
Vlan                   Bridge ID      Time  Age Delay  Protocol
---------------- -------------------- ---- ---- -----  --------
VLAN200          33792 0050.3e8d.64c8    2   20    15  ieee
Switch# 

Configuring the Hello Time


Note Exercise care when configuring the hello time. In most cases, we recommend that you use the spanning-tree vlan vlan_ID root primary and the spanning-tree vlan vlan_ID root secondary commands to modify the hello time.


To configure the spanning tree hello time of a VLAN, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spanning-tree vlan vlan_ID 
hello-time hello_time 

Configures the hello time of a VLAN. The hello_time value can be from 1 to 10 seconds.

You can use the no keyword to restore the defaults.

Step 2 

Switch(config)# end 

Exits configuration mode.

Step 3 

Switch# show spanning-tree vlan vlan_ID bridge 
[brief]

Verifies the configuration.

This example shows how to configure the hello time for VLAN 200 to 7 seconds:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 200 hello-time 7 
Switch(config)# end 
Switch#

This example shows how to verify the configuration:

Switch# show spanning-tree vlan 200 bridge brief
                                      Hello Max  Fwd
Vlan                   Bridge ID      Time  Age Delay  Protocol
---------------- -------------------- ---- ---- -----  --------
VLAN200          49152 0050.3e8d.64c8    7   20    15  ieee
Switch# 

Configuring the Maximum Aging Time for a VLAN


Note Exercise care when configuring aging time. In most cases, we recommend that you use the spanning-tree vlan vlan_ID root primary and the spanning-tree vlan vlan_ID root secondary commands to modify the maximum aging time.


To configure the spanning tree maximum aging time for a VLAN, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spanning-tree vlan vlan_ID 
max-age max_age 

Configures the maximum aging time of a VLAN. The max_age value can be from 6 to 40 seconds.

You can use the no keyword to restore the defaults.

Step 2 

Switch(config)# end 

Exits configuration mode.

Step 3 

Switch# show spanning-tree vlan vlan_ID bridge 
[brief] 

Verifies the configuration.

This example shows how to configure the maximum aging time for VLAN 200 to 36 seconds:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 200 max-age 36 
Switch(config)# end 
Switch#

This example shows how to verify the configuration:

Switch# show spanning-tree vlan 200 bridge brief
                                      Hello Max  Fwd
Vlan                   Bridge ID      Time  Age Delay  Protocol
---------------- -------------------- ---- ---- -----  --------
VLAN200          49152 0050.3e8d.64c8    2   36    15  ieee
Switch#

Configuring the Forward-Delay Time for a VLAN


Note Exercise care when configuring forward-delay time. In most cases, we recommend that you use the spanning-tree vlan vlan_ID root primary and the spanning-tree vlan vlan_ID root secondary commands to modify the forward delay time.


To configure the spanning tree forward delay time for a VLAN, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spanning-tree vlan vlan_ID 
forward-time forward_time 

Configures the forward time of a VLAN. The forward_time value can be from 4 to 30 seconds.

You can use the no keyword to restore the defaults.

Step 2 

Switch(config)# end 

Exits configuration mode.

Step 3 

Switch# show spanning-tree vlan vlan_ID bridge 
[brief]

Verifies the configuration.

This example shows how to configure the forward delay time for VLAN 200 to 21 seconds:

Switch# configure terminal 
Switch(config)# spanning-tree vlan 200 forward-time 21 
Switch(config)# end 
Switch#

This example shows how to verify the configuration:

Switch# show spanning-tree vlan 200 bridge brief
                                      Hello Max  Fwd
Vlan                   Bridge ID      Time  Age Delay  Protocol
---------------- -------------------- ---- ---- -----  --------
VLAN200          49152 0050.3e8d.64c8    2   20    21  ieee
Switch#

This example shows how to display spanning tree information for the bridge:

Switch# show spanning-tree bridge

                                                   Hello  Max  Fwd
Vlan                         Bridge ID              Time  Age  Dly  Protocol
---------------- --------------------------------- -----  ---  ---  --------
VLAN200               49152 0050.3e8d.64c8           2    20   15  ieee        
VLAN202               49152 0050.3e8d.64c9           2    20   15  ieee        
VLAN203               49152 0050.3e8d.64ca           2    20   15  ieee        
VLAN204               49152 0050.3e8d.64cb           2    20   15  ieee        
VLAN205               49152 0050.3e8d.64cc           2    20   15  ieee        
VLAN206               49152 0050.3e8d.64cd           2    20   15  ieee        
Switch# 

Disabling Spanning Tree Protocol

To disable spanning tree on a per-VLAN basis, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# no spanning-tree vlan vlan_ID 

Disables spanning tree on a per-VLAN basis.

Step 2 

Switch(config)# end 

Exits configuration mode.

Step 3 

Switch# show spanning-tree vlan vlan_ID 

Verifies that spanning tree is disabled.

This example shows how to disable spanning tree on VLAN 200:

Switch# configure terminal 
Switch(config)# no spanning-tree vlan 200 
Switch(config)# end 
Switch#

This example shows how to verify the configuration:

Switch# show spanning-tree vlan 200 
Spanning tree instance for VLAN 200 does not exist.
Switch#

Enabling Per-VLAN Rapid Spanning Tree

Per-VLAN Rapid Spanning Tree (PVRST+) uses the existing PVST+ framework for configuration purposes and for interaction with other features. It also supports some of the PVST+ extensions.

To configure PVRST+, perform this task:

 
Command
Purpose

Step 1 

Switch(config)# [no] spantree mode rapid-pvst

Enables rapid-PVST+.

Step 2 

Switch(config)# interface interface/port

Switches to interface configuration mode.

Step 3 

Switch(config)#  
spanning-tree link-type point-to-point 

Sets the link-type to point-to-point mode for the port.

Step 4 

Switch(config-if)# exit

Exits interface mode.

Step 5 

Switch(config)# exit

Exits configuration mode.

Step 6 

Switch(config-if)# clear spantree 
detected-protocols mod/port

Detects any legacy bridges on the port

Step 7 

Switch# show spanning-tree summary total

Verifies the rapid-PVST+ configuration.

The following example shows how to configure Rapid-PVST+:

Switch# config t
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)# spanning-tree mode rapid-pvst
Switch(config)# int fa 6/4
Switch(config-if)# spanning-tree link-type point-to-point 
Switch(config-if)# end
Switch(config)# end
Switch#
23:55:32:%SYS-5-CONFIG_I:Configured from console by console    
Switch# clear spanning-tree detected-protocols

The following example shows how to verify the configuration:

Switch# show spanning-tree summary totals 
Switch is in rapid-pvst mode
Root bridge for:VLAN0001
Extended system ID           is disabled
Portfast Default             is disabled
PortFast BPDU Guard Default  is disabled
Portfast BPDU Filter Default is disabled
Loopguard Default            is disabled
EtherChannel misconfig guard is enabled
UplinkFast                   is disabled
BackboneFast                 is disabled
Pathcost method used         is short
Name                   Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
1 vlan                       0         0        0          2          2
Switch#

Specifying the Link Type

Rapid connectivity is established only on point-to-point links. Spanning tree views a point-to-point link as a segment connecting only two switches running the spanning tree algorithm. Because the switch assumes that all full-duplex links are point-to-point links and that half-duplex links are shared links, you can avoid explicitly configuring the link type. To configure a specific link type, use the spanning-tree linktype command.

Restarting Protocol Migration

A switch running both MSTP and RSTP supports a built-in protocol migration process that enables the switch to interoperate with legacy 802.1D switches. If this switch receives a legacy 802.1D configuration BPDU (a BPDU with the protocol version set to 0), it sends only 802.1D BPDUs on that port. Furthermore, when an MSTP switch receives a legacy BPDU, it can also detect the following:

that a port is at the boundary of a region

an MST BPDU (version 3) associated with a different region, or

an RST BPDU (version 2).

The switch, however, does not automatically revert to the MSTP mode if it no longer receives 802.1D BPDUs because it cannot determine whether or not the legacy switch has been removed from the link unless the legacy switch is the designated switch. A switch also might continue to assign a boundary role to a port when the switch to which it is connected has joined the region.

To restart the protocol migration process on the entire switch (that is, to force renegotiation with neighboring switches), use the clear spanning-tree detected-protocols commands in privileged EXEC mode. To restart the protocol migration process on a specific interface, enter the clear spanning-tree detected-protocols interface command in interface-id privileged EXEC mode.