Spanning Tree Explained

The following is an explanation of all the spanning-tree versions available to the Cisco switching platform.

Consider the following illustration:

Small Office Network Environment Illustration

In the above illustration, switchA and switchB is considered the core/distribution switches in this small office scenario. Switch A & B have a Layer 2 connection between them for high speed switching in this collapsed core layer. Servers connect to both core/distribution switches with NIC teaming configured in the Operating System. The switches C & D serve as access switches in the wiring closets for office workstations. The access switches have dual uplinks, one to each core/distribution switch for redundancy.

There are 10 vlans configured in this example network, half of them are load balanced on one uplink connection and the other half of the vlans are forwarded on the second uplink connection. Each access switch uplink also serves as a backup to the other.

PVST - Per Vlan Spanning Tree - This is the original Cisco proprietary, per vlan spanning tree protocol. It maintains a spanning tree instance for each VLAN configured in the network.

Configuration Example:

switchA(config)# spanning-tree mode pvst
switchA(config)# spanning-tree vlan 1,2,3,4,5 root primary
switchA(config)# spanning-tree vlan 6,7,8,9,10 root secondary
switchA(config)# spanning-tree backbonefast

switchB(config)# spanning-tree mode pvst
switchB(config)# spanning-tree vlan 1,2,3,4,5 root secondary
switchB(config)# spanning-tree vlan 6,7,8,9,10 root primary
switchB(config)# spanning-tree backbonefast

switchC(config)# spanning-tree mode pvst
switchC(config)# spanning-tree uplinkfast

switchD(config)# spanning-tree mode pvst
switchD(config)# spanning-tree uplinkfast

PVST+ - Per Vlan Spanning Tree Plus - It can be thought of as PVST version 2, still Cisco proprietary, with enhancements added to the original version. The difference between the two protocols is PVST supports ISL as the trunking protocol, where PVST+ makes use of the 802.1Q trunking protocol.

RSTP - Rapid Spanning Tree Protocol - This is the standards based (802.1w) spanning tree protocol that is very similar to Cisco's proprietary PVST+. Many of the previously Cisco proprietary methods of speeding up convergence, such as Portfast, Uplinkfast, Backbone now have standards based equivalents that are built into RSTP.

Configuration Example: switchA(config)# spanning-tree mode rapid-pvst switchA(config)# spanning-tree vlan 1,2,3,4,5 root primary switchA(config)# spanning-tree vlan 6,7,8,9,10 root secondary

switchB(config)# spanning-tree mode rapid-pvst
switchB(config)# spanning-tree vlan 1,2,3,4,5 root secondary
switchB(config)# spanning-tree vlan 6,7,8,9,10 root primary

switchC(config)# spanning-tree mode rapid-pvst

switchD(config)# spanning-tree mode rapid-pvst

MST - Multiple Spanning Tree - It can be thought of as RSTP version 2. Known as 802.1s, this version of spanning tree takes 802.1w and builds on the standard. MISTP allows you to selectively map/group multiple vlans to a single instance of spanning tree.

For Example: There are 10 vlans defined in the network, instead of having 10 instances of spanning tree running (using PVST), you can shrink it down to say two instances of spanning tree running on a switch by mapping half the vlans to one instance and the other half to the second instance. The biggest advantage is the reduced resource footprint on the switch, requiring less memory and processor utilization for the spanning tree process.

Configuration Example:

switchA(config)# spanning-tree mst configuration
switchA(config-mst)# name corpbuilding
switchA(config-mst)# revision 1
switchA(config-mst)# instance 1 vlan 1 - 5
switchA(config-mst)# instance 2 vlan 6 - 10
switchA(config-mst)# exit
switchA(config)# spanning-tree mst 1 root primary
switchA(config)# spanning-tree mst 2 root secondary
switchA(config)# spanning-tree mode mst

switchB(config)# spanning-tree mst configuration
switchB(config-mst)# name corpbuilding
switchB(config-mst)# revision 1
switchB(config-mst)# instance 1 vlan 1 - 5
switchB(config-mst)# instance 2 vlan 6 - 10
switchB(config-mst)# exit
switchB(config)# spanning-tree mst 1 root secondary
switchB(config)# spanning-tree mst 2 root primary
switchB(config)# spanning-tree mode mst