STP

MSTP: Multiple Spanning Tree Protocol Explained (802.1s)

MSTP (802.1s) maps many VLANs onto a few spanning tree instances. How MST regions, instances, the IST and CIST work, with Cisco IOS XE config and verification.
MSTP Multiple Spanning Tree Protocol feature image, PingLabz
In: STP, Fundamentals

Multiple Spanning Tree Protocol (MSTP, IEEE 802.1s) exists to solve a scaling problem that the per-VLAN spanning tree variants created. Rapid-PVST+ runs one independent spanning tree instance per VLAN. That is fine with 10 VLANs. With 500 VLANs it is 500 state machines, 500 sets of BPDUs, and a switch CPU that spends real cycles just maintaining spanning tree. MSTP fixes this by mapping many VLANs onto a small number of spanning tree instances. This post explains how it works, how to configure it on Cisco IOS XE, and the one concept (the region) that trips everyone up.

For the cluster overview, see the Spanning Tree Protocol pillar. For the L2 fundamentals underneath, see the VLAN and L2 switching pillar.

The problem MSTP solves

Spanning tree's job is to build a loop-free topology. But here is the thing: if you have 500 VLANs that all run over the same physical switches and the same physical links, you do not need 500 different loop-free topologies. You need maybe two or three - enough to load-balance traffic across your redundant uplinks, and no more.

ApproachInstancesTrade-off
Common Spanning Tree (CST, 802.1Q original)1 for all VLANsZero load balancing - one uplink always blocks for everything
Rapid-PVST+ (Cisco)1 per VLANFull per-VLAN control but heavy CPU/BPDU overhead at scale
MSTP (802.1s)A few, with VLANs mapped to themLoad balancing where you want it, without the per-VLAN overhead

MSTP is the middle path. You define a handful of instances, map VLAN ranges to them, and get load balancing across uplinks without paying the per-VLAN tax.

The core concept: MST instances and VLAN mapping

An MST instance (MSTI) is one spanning tree. You decide how many you want and which VLANs belong to each. A typical design:

  • Instance 1 - all the "left uplink" VLANs (say VLANs 10, 20, 30)
  • Instance 2 - all the "right uplink" VLANs (say VLANs 40, 50, 60)

You make one switch the root for instance 1 and a different switch the root for instance 2. Now instance 1's traffic prefers the left uplink and instance 2's traffic prefers the right uplink. Two instances, full load balancing, regardless of whether you have 6 VLANs or 600.

VLANs not explicitly mapped land in instance 0, the IST (Internal Spanning Tree), which always exists.

The concept that trips everyone up: the MST region

For two switches to share MST instances, they must be in the same MST region. Two switches are in the same region only if all three of these match exactly:

AttributeMust match
Region nameConfigured string, case-sensitive
Revision numberConfigured integer
VLAN-to-instance mapping tableEvery VLAN mapped to the same instance on both switches

If any one of these differs - even one VLAN mapped to a different instance, even a typo in the name - the two switches are in different regions. They will still interoperate, but they treat each other as a single boundary and exchange only the IST. All your carefully designed per-instance load balancing silently stops at the region boundary.

This is the number one MSTP misconfiguration. A switch added later with a slightly different VLAN-to-instance map becomes its own one-switch region, and nobody notices until traffic takes a strange path.

Configuration on Cisco IOS XE

Switching a Catalyst to MST mode and defining the region:

spanning-tree mode mst
!
spanning-tree mst configuration
 name PINGLABZ-REGION
 revision 1
 instance 1 vlan 10,20,30
 instance 2 vlan 40,50,60
 exit

That config block must be identical on every switch in the region. Same name, same revision, same instance mappings.

Then set the root bridges so the two instances load-balance. On the switch you want as root for instance 1:

spanning-tree mst 1 root primary
spanning-tree mst 2 root secondary

And on the switch you want as root for instance 2, the mirror image:

spanning-tree mst 1 root secondary
spanning-tree mst 2 root primary

Now instance 1 roots on the first switch, instance 2 roots on the second, and the redundant uplinks both carry traffic instead of one sitting idle in blocking.

Verifying the region and the instances

Confirm the region is formed correctly:

SW1# show spanning-tree mst configuration
Name      [PINGLABZ-REGION]
Revision  1     Instances configured 3
Instance  Vlans mapped
--------  ---------------------------------------------------------------------
0         1-9,11-19,21-29,31-39,41-49,51-59,61-4094
1         10,20,30
2         40,50,60
-------------------------------------------------------------------------------

Run this on every switch and compare the output. If the name, revision, or any mapping differs, you have an accidental region boundary.

Then check an instance's topology:

SW1# show spanning-tree mst 1

##### MST1    vlans mapped:   10,20,30
Bridge        address 0050.7989.bbbb  priority  24577 (24576 sysid 1)
Root          this switch for MST1

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- -------------------------------
Te1/1/1          Desg FWD 2000      128.25   P2p
Te1/1/2          Desg FWD 2000      128.26   P2p

"Root this switch for MST1" confirms the root placement. Cross-check show spanning-tree mst 2 on the other switch to confirm the load-balancing split is real.

The IST and the CIST

Two more terms you will hit in the docs:

  • IST (Internal Spanning Tree) - instance 0. It always exists and carries all unmapped VLANs. It is also what represents the whole region to the outside world.
  • CIST (Common and Internal Spanning Tree) - the single spanning tree that spans across region boundaries and ties MST regions together with any legacy STP/RSTP switches. From the outside, an entire MST region looks like one big virtual bridge in the CIST.

The practical takeaway: inside a region you think in MST instances; at the boundary the whole region collapses to a single node in the CIST. This is why MSTP interoperates cleanly with older RSTP switches - they just see the region as one RSTP bridge.

MSTP vs Rapid-PVST+: which to run

ChooseWhen
Rapid-PVST+Small-to-medium networks, under ~50-75 VLANs, where per-VLAN control is convenient and CPU overhead is a non-issue. Cisco default; simplest mental model.
MSTPLarge campus networks, hundreds of VLANs, multi-vendor environments (MSTP is an IEEE standard; PVST+ is Cisco-proprietary). The right answer at scale.

Common gotchas

SymptomCause
Load balancing not happening; one uplink always blocksSwitches in different regions (name/revision/mapping mismatch). Diff show spanning-tree mst configuration across all switches.
A new switch behaves oddly after being addedIts VLAN-to-instance map differs by even one VLAN, making it its own region.
VLAN traffic follows a path you did not designThat VLAN is unmapped and landed in instance 0 (IST) instead of the instance you expected.
Convergence slower than expectedA link is half-duplex, so MSTP treats it as shared media and skips the rapid handshake (MSTP inherits RSTP's point-to-point requirement).

Key takeaways

MSTP maps many VLANs onto a few spanning tree instances, giving you load balancing across redundant uplinks without the per-VLAN overhead of Rapid-PVST+. The make-or-break concept is the region: name, revision, and VLAN-to-instance mapping must be byte-identical on every switch, or the switches silently split into separate regions and your load-balancing design stops working. Configure it once, verify with show spanning-tree mst configuration on every switch, and MSTP scales to hundreds of VLANs cleanly.

For the STP cluster, see the Spanning Tree Protocol pillar.

Written by
More from Ping Labz
Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to Ping Labz.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.