PVST+ vs Rapid PVST+ vs MST vs 802.1D: STP Variants Compared

Five major STP variants exist today, each with different convergence speeds, VLAN handling, and design requirements. Understanding their differences is essential to choosing the right protocol for your network.

802.1D vs PVST+ vs Rapid PVST+ vs MST: Comparing STP Variants - PingLabz STP article title card

The STP Variant Landscape

Since its introduction in 1992, Spanning Tree Protocol has evolved significantly. Five major variants are used in production networks today:

(This article is part of the PingLabz STP series - the full spanning-tree guide maps the whole cluster in reading order.)

  1. IEEE 802.1D - Original protocol (slow, single tree)
  2. Cisco PVST+ - Proprietary extension (per-VLAN trees, faster)
  3. IEEE 802.1w (RSTP) - Rapid Spanning Tree (faster, standard)
  4. Cisco Rapid PVST+ - Per-VLAN RSTP (fast, per-VLAN, proprietary)
  5. IEEE 802.1s (MST) - Multiple Spanning Tree (fast, aggregates VLANs)

Each addresses limitations in its predecessor. Understanding the progression helps you choose the right variant for your architecture.

IEEE 802.1D (Original Spanning Tree)

Overview

802.1D, published in 1992, is the baseline STP. It creates a single spanning tree for the entire network, regardless of VLAN configuration.

Key Characteristics

Convergence Time
30-50 seconds
Per-VLAN Support
No (single tree for all VLANs)
BPDU Format
Configuration BPDU only
Port States
5 (Disabled, Blocking, Listening, Learning, Forwarding)
Compatibility
All 802.3 switches

How It Works

All VLANs share one spanning tree:

VLAN 10 (Users)
VLAN 20 (Servers)
VLAN 30 (Mgmt)
    ↓ (all merged)
Single STP instance
    ↓
All links in blocked or forwarding state, regardless of VLAN

All three VLANs are blocked on the same redundant link.

Limitations

No Per-VLAN Load Balancing: If you have redundant links, one is always blocked for all traffic:

[SW1] ─ Eth0/0 ─ [SW2]
 |         Link blocked
 Eth0/1 ─ [SW3]

Both SW2 and SW3 connect to SW1, but the link to SW3 is blocked even if SW3 has capacity. You're paying for hardware you can't use.

Slow Convergence: 30-50 second failover time is unacceptable for modern applications.

When to Use 802.1D

  • Legacy networks with very old switches that don't support newer variants
  • Simple, single-switch designs (unnecessary, but functional)
  • Strictly standards-compliant environments where proprietary protocols are forbidden

Almost all modern networks use newer variants instead.

Cisco PVST+ (Per-VLAN Spanning Tree Plus)

Overview

PVST+ is Cisco's proprietary extension to 802.1D. It runs a separate spanning tree instance for each VLAN.

Key Characteristics

Convergence Time
30-50 seconds (per VLAN)
Per-VLAN Support
Yes (one tree per VLAN)
BPDU Format
Cisco proprietary (encapsulated in ISL or 802.1Q)
Port States
5 (same as 802.1D)
Compatibility
Cisco switches only
Standards
Proprietary

How It Works

Each VLAN has its own spanning tree:

VLAN 10 tree:
[SW1] ─ (FWD) ─ [SW2]
 |        (BLK)
[SW3] ──────

VLAN 20 tree:
[SW1] ─ (BLK) ─ [SW2]
 |        (FWD)
[SW3] ──────

Link between SW1-SW2: FWD for VLAN 10, BLK for VLAN 20
Link between SW1-SW3: BLK for VLAN 10, FWD for VLAN 20

Load Balancing Example

Data Center example:
  Users (VLAN 10): Root on SW1, prefer SW1-SW2 link
  Servers (VLAN 20): Root on SW2, prefer SW2-SW3 link

[SW1] ─────── [SW2]
  |  VLAN 10: ↓ (forwarding)
  |  VLAN 20: ↓ (blocked)
  |
[SW3]
  VLAN 10: ↓ (blocked)
  VLAN 20: ↓ (forwarding)

User traffic flows: Access → SW1 → SW2 (via VLAN 10 tree)
Server traffic flows: Access → SW1 → SW3 (via VLAN 20 tree)

Both links are utilized. Bandwidth is efficiently distributed.

Configuration

PVST+ is the default on older Cisco switches:

SW1# show spanning-tree vlan 1 root

VLAN0001
  Spanning tree enabled protocol ieee
  Root ID    Priority    32768
             Address     aabb.cc00.1100

Protocol shows "ieee" but is actually PVST+ on Cisco hardware.

Limitations

Slow Convergence: Still 30-50 seconds per VLAN (or multiple VLANs × 50 seconds = several minutes for hundreds of VLANs).

CPU Overhead: Running separate STP instances for 100+ VLANs consumes significant CPU on older switches.

Proprietary: Non-Cisco switches don't understand PVST+ BPDUs.

IEEE 802.1w (Rapid Spanning Tree Protocol)

Overview

RSTP (802.1w, published 2001) is the IEEE standard response to STP's slow convergence. It's a completely redesigned algorithm that converges in 2-6 seconds while maintaining compatibility with 802.1D.

Key Characteristics

Convergence Time
2-6 seconds
Per-VLAN Support
No (single tree)
BPDU Format
Enhanced with proposal/agreement bits
Port States
3 (Discarding, Learning, Forwarding)
Compatibility
Backward-compatible with 802.1D
Standards
IEEE standard

How It Works

RSTP uses an active proposal and agreement mechanism instead of waiting for timers:

Traditional 802.1D Convergence

t=0s:   Link failure
t=20s:  Max age expires
t=35s:  Port in listening state
t=50s:  Port in learning state
t=65s:  Port in forwarding state
Total: 65 seconds or more

RSTP Convergence

t=0s:    Link failure, alternate port detected
t=0.2s:  Alternate port sends "proposal"
t=0.4s:  Upstream switch agrees ("agreement" BPDU)
t=0.6s:  Port transitions to forwarding
Total: <1 second

Port States Simplified

RSTP collapses five states into three:

802.1D States          RSTP Equivalent
────────────────────────────────────
Disabled        →      Discarding
Blocking        →      Discarding
Listening       →      (eliminated)
Learning        →      Learning
Forwarding      →      Forwarding

Backward Compatibility

If an RSTP switch sees an 802.1D switch on the link:

RSTP switch: Sends enhanced BPDUs with proposal/agreement
802.1D switch: Ignores the new fields, responds with old BPDUs
RSTP switch: Detects 802.1D and falls back to 30-50 second mode

The port reverts to 802.1D convergence speed for safety. All ports on the mixed topology must reach stability before convergence completes.

Configuration

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

(There's no "pure" RSTP mode on Catalyst; the switch uses per-VLAN RSTP.)

Cisco Rapid PVST+

Overview

Rapid PVST+ combines PVST+ (per-VLAN trees) with RSTP (rapid convergence). It's Cisco's recommended STP variant for modern networks.

Key Characteristics

Convergence Time
2-6 seconds per VLAN
Per-VLAN Support
Yes (RSTP per VLAN)
BPDU Format
RSTP within ISL/802.1Q encapsulation
Port States
3 (Discarding, Learning, Forwarding)
Compatibility
Cisco switches only
Standards
Proprietary variant of 802.1w
Default on Modern Catalyst
Yes

Advantages Over PVST+

  • Fast convergence per VLAN (2-6 seconds vs 30-50 seconds)
  • Keeps per-VLAN load balancing (load-balancing capability from PVST+)
  • Proposal/agreement mechanism prevents temporary loops

Example: Campus Network

     [SW1] Core1
      / \
   (RSTP VLAN 10, 20, 30 trees)
    /   \
[SW2]   [SW3] Access
  Dist   Dist

VLAN 10 root: SW1
VLAN 20 root: SW2
VLAN 30 root: SW3

SW2 link to SW1 failure:
  t=0s: Failure detected
  t=1s: Alternate port (to SW3) becomes active
  t=2s: All traffic rerouted

VLAN 20 sees SW2 preferred root is unreachable
→ Selects new root (SW1 or SW3, depending on config)
→ Reconvergence completes in 2-3 seconds

Configuration and Verification

Enable Rapid PVST+:

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

Verify:

SW1# show spanning-tree summary

Switch is in rapid-pvst mode
Root bridge for: VLAN0010, VLAN0020
Regional root for: VLAN0030

Show detailed output:

SW1# show spanning-tree vlan 10 detail

VLAN0010 is executing the rstp compatible Spanning Tree protocol
  Bridge Identifier has priority 24576, sysid 10, address aabb.cc00.1100
  Configured hello time 2, forward delay 15, max age 20
  Current root has priority 4096, address aabb.cc00.1100
  Root is bridge (this bridge is the root)

Port 1 (Ethernet0/0)
  Port priority 128, Port Identifier 128.1
  Designated root has priority 4096, address aabb.cc00.1100
  Designated bridge has priority 24576, address aabb.cc00.1100
  Number of transitions to forwarding state: 1
  BPDU: sent 5062, received 0

Note "rstp compatible" in the output.

IEEE 802.1s (Multiple Spanning Tree Protocol)

Overview

MST (802.1s, published 2002) takes a different approach: instead of one tree per VLAN, it maps multiple VLANs to a smaller number of spanning tree instances.

Key Characteristics

Convergence Time
2-6 seconds
Per-VLAN Support
VLANs grouped into instances
BPDU Format
M-BPDU (MST BPDU)
Port States
3 (Discarding, Learning, Forwarding)
Compatibility
Not compatible with 802.1D or PVST+
Standards
IEEE standard

How It Works

Instead of 100 separate spanning trees (one per VLAN), you define logical instances:

Instance 0 (Common Internal Spanning Tree):
  All switches participate, establishes region topology

Instance 1:
  VLAN 10, 11, 12 → single STP tree
  Root: SW1

Instance 2:
  VLAN 20, 21, 22 → single STP tree
  Root: SW2

Instance 3:
  VLAN 30, 31, 32 → single STP tree
  Root: SW3

Regional root ports:
  [SW1] ─ (FWD for I1) ─ [SW2] ─ (FWD for I2) ─ [SW3]
          (I2 BLK)              (I1 BLK)         (etc)

CPU Efficiency

With 100 VLANs divided into 10 instances, the switch runs 10 STP processes instead of 100:

PVST+:     100 STP instances (one per VLAN)
Rapid PVST+: 100 STP instances (RSTP per VLAN)
MST:        10 STP instances (RSTP per instance)

CPU load drops significantly. Message overhead decreases (fewer BPDUs).

Interoperability Challenges

MST doesn't understand PVST+ or RSTP BPDUs. If you mix:

SW1 (MST) ─ SW2 (Rapid PVST+)

MST BPDU from SW1 → SW2 (ignored)
RSTP BPDU from SW2 → SW1 (not recognized as MST)

Result: STP stops at the interconnection point.
Network may have loops or poor convergence.

You must use MST on all switches in the region, or use Rapid PVST+ throughout.

Configuration (IOS XE)

SW1(config)# spanning-tree mode mst

SW1(config)# spanning-tree mst configuration
SW1(config-mst)# name MyRegion
SW1(config-mst)# revision 1

! Map VLANs to instances
SW1(config-mst)# instance 1 vlan 10-12
SW1(config-mst)# instance 2 vlan 20-22
SW1(config-mst)# instance 3 vlan 30-32

SW1(config-mst)# exit

! Set regional root for instance 1
SW1(config)# spanning-tree mst 1 priority 4096

Verification

SW1# show spanning-tree mst configuration

Name      : MyRegion
Revision  : 1
Instances :
  Instance Vlans mapped
  ──────────────────────
  0        1-9,13-19,23-29,99
  1        10-12
  2        20-22
  3        30-32

Show per-instance spanning tree:

SW1# show spanning-tree mst 1

CIST(Instance 0)
  Root ID    Priority    32768
             Address     aabb.cc00.1100
             Cost        0
             Port        1

Instance 1
  Root ID    Priority    4096
             Address     aabb.cc00.1100
             Cost        0
             Port        -
  Bridge ID  Priority    4096
             Address     aabb.cc00.1100

Comparison Table

Convergence
802.1D30-50s
PVST+30-50s
RSTP2-6s
Rapid PVST+2-6s
MST2-6s
Per-VLAN
802.1DNo
PVST+Yes
RSTPNo
Rapid PVST+Yes
MSTGrouped
Load Balance
802.1DNo
PVST+Yes
RSTPNo
Rapid PVST+Yes
MSTYes
Standard
802.1DIEEE
PVST+Cisco
RSTPIEEE
Rapid PVST+Cisco
MSTIEEE
CPU Efficiency
802.1DLow
PVST+Low (100 instances)
RSTPHigh
Rapid PVST+Medium (100 instances)
MSTHigh
Compatibility
802.1DAll
PVST+Cisco
RSTPMixed
Rapid PVST+Cisco
MSTAll (within region)

Choosing the Right Variant

For Campus Networks (Catalyst 9300)

Use Rapid PVST+:

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

Pros:

  • Default on modern Catalyst switches
  • Per-VLAN load balancing (useful for distributing root across switches)
  • Fast convergence (2-6 seconds)
  • Well-understood by most engineers

Cons:

  • Proprietary (non-Cisco switches need compatibility mode)
  • Slightly more CPU than MST (if 100+ VLANs)

For Data Centers (Standard-Compliant)

Use MST if all switches support it and you have 50+ VLANs:

SW1(config)# spanning-tree mode mst

Pros:

  • IEEE standard (portable across vendors)
  • Efficient for large numbers of VLANs
  • Lower CPU usage than Rapid PVST+

Cons:

  • More complex to configure and troubleshoot
  • Not suitable for mixed vendor environments (all must support MST)

For Mixed Vendor Networks

Use Rapid PVST+ in "compatibility mode":

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

! Arista/Juniper switches must support RSTP
! They'll see Rapid PVST+ BPDUs and treat them as RSTP (similar behavior)

For Legacy Networks

If forced to support 802.1D (very rare):

SW1(config)# spanning-tree mode pvst

Most modern switches default to PVST+ or Rapid PVST+, not pure 802.1D.

Migration Path

Typical upgrade path:

802.1D (1990s) → PVST+ (2000s) → Rapid PVST+ (2010+)
                           ↓
                    (or MST if large scales)

To upgrade from PVST+ to Rapid PVST+:

! Make the change on the root bridge first
SW1(config)# spanning-tree mode rapid-pvst

! BPDUs now use RSTP format
! Non-root switches will detect the change and gradually upgrade

! Verify convergence works
SW1# show spanning-tree summary
Switch is in rapid-pvst mode

! Check all switches are converged
SW1# show spanning-tree vlan 1 root
Root ID Priority 4096, Address aabb.cc00.1100
Root is bridge

! Once all switches are upgraded, Rapid PVST+ is active network-wide

PPVST / Rapid PVST naming

Search and vendor docs sometimes say PPVST or Per-VLAN Rapid Spanning Tree. On Cisco IOS that is spanning-tree mode rapid-pvst — Rapid PVST+, i.e. RSTP (802.1w) running one instance per VLAN. Classic spanning-tree mode pvst is PVST+ (802.1D per VLAN). The variant comparison above is the map; the commands and sys-id-ext behavior below are what you use day to day.

PVST+ / Rapid PVST+ operations detail

The variant overview above covers when to choose PVST+ or Rapid PVST+. These sections add the operational detail that used to live in a separate Per-VLAN Spanning Tree article: Bridge ID and sys-id-ext, per-VLAN root load-balancing, reading the topology, scale cost, and common gotchas.

The Bridge ID and the sys-id-ext trick

Per-VLAN spanning tree needs a separate Bridge ID per VLAN, but a switch has one MAC address. Cisco solved this by splitting the Bridge ID priority field.

The 16-bit Bridge ID priority became: a 4-bit configurable priority + a 12-bit "system ID extension" that holds the VLAN number. So a switch running spanning tree for VLAN 10 with priority 32768 actually advertises a Bridge ID priority of 32768 + 10 = 32778. For VLAN 20 it is 32768 + 20 = 32788.

This is why show spanning-tree reports lines like priority 32778 (priority 32768 sys-id-ext 10). The base priority is 32768; the 10 is the VLAN. It also explains why switch priority must be set in multiples of 4096 - only the top 4 bits are yours; the bottom 12 belong to the VLAN ID.

Setting the root: the load-balancing config

You steer each VLAN's tree by setting the root bridge per VLAN. Two ways:

! Explicit priority - multiples of 4096
spanning-tree vlan 10,20,30 priority 24576
spanning-tree vlan 40,50,60 priority 28672

Or the macro that picks a low priority for you:

spanning-tree vlan 10,20,30 root primary
spanning-tree vlan 40,50,60 root secondary

On distribution switch A you make VLANs 10-30 primary and 40-60 secondary. On distribution switch B you do the mirror image. The result: VLANs 10-30 root on A, VLANs 40-60 root on B, and the access switch's two uplinks both forward - each carrying the VLANs whose root they point toward.

Reading the per-VLAN topology

SW-ACCESS# show spanning-tree vlan 10

VLAN0010
  Spanning tree enabled protocol rstp
  Root ID    Priority    24586
             Address     0050.7989.aaaa
             Cost        4
             Port        25 (TenGigabitEthernet1/1/1)

  Bridge ID  Priority    32778  (priority 32768 sys-id-ext 10)
             Address     0050.7989.cccc

Interface           Role Sts Cost      Prio.Nbr Type
------------------- ---- --- --------- -------- ----------------
Te1/1/1             Root FWD 4         128.25   P2p
Te1/1/2             Altn BLK 4         128.26   P2p

For VLAN 10, the access switch's uplink Te1/1/1 is the Root port and forwards; Te1/1/2 is Alternate and blocks. Run show spanning-tree vlan 40 and you should see the roles swapped - Te1/1/2 forwarding, Te1/1/1 blocking - because VLAN 40 roots on the other distribution switch. That swap is the proof your load balancing is working.

The summary view across all VLANs:

SW-ACCESS# show spanning-tree summary
Switch is in rapid-pvst mode
Name                   Blocking Listening Learning Forwarding STP Active
---------------------- -------- --------- -------- ---------- ----------
VLAN0010                      1         0        0          1          2
VLAN0040                      1         0        0          1          2

The cost of per-VLAN: scale

Per-VLAN spanning tree's strength - an independent tree per VLAN - is also its limit. Every VLAN is a full state machine, a set of BPDUs sent every 2 seconds on every trunk, and CPU to maintain. With 20 or 50 VLANs this is a non-issue. With 500 VLANs across a large campus it becomes real overhead, and the BPDU volume on trunks adds up.

That is the point where MSTP takes over: it keeps the load-balancing benefit by letting you map many VLANs onto a few instances, instead of one instance per VLAN. The rule of thumb: Rapid-PVST+ up to roughly 50-75 VLANs, MSTP beyond that.

Common gotchas

"Priority must be a multiple of 4096" rejected your value
Only the top 4 bits of the priority field are yours; the rest is the VLAN sys-id-ext. Use 0, 4096, 8192, ... 61440.
Both uplinks forward for every VLAN - no blocking anywhere
The two links are an EtherChannel (correct) - or a real loop with STP disabled (dangerous). Confirm which.
One uplink carries all VLANs; the other blocks for all
All VLANs share one root bridge. Split the root placement per VLAN range to load-balance.
BPDU load high on a big campus switch
Too many per-VLAN instances. Migrate to MSTP.
Native VLAN inconsistency warnings
Trunk native VLAN mismatch - unrelated to PVST roles but flagged in the same logs.
📐
Worked election example: walk a multi-switch topology through root-port cost, neighbor BID, and port ID tie-breakers in the STP root port election worked example.

What's Next

The foundational series ends here. Article 8 (starting the Intermediate series) will cover STP Topology Changes and TCN (Topology Change Notification), explaining how switches detect topology changes and propagate them to the entire network.

Read next