802.1s – MSTP

The number of STP or RSTP instances that can run on a switch is limited. It is usually enough for most implementations but if you need to run STP on more VLANs, then MSTP is the solution. MSTP maps multiple VLANs to the same STP instance. Even when PVST or Rapid PVST is used, chances are that more than one instance will use the same loop-free topology and this is a waste of resources.

In PVST+ and Rapid PVST, one BPDU is sent on each VLAN on a trunk port. In 802.1q – there was only one STP instance, the CST, so only one BPDU was sent for all VLANs over the 802.1q links. To enable MSTP, use:

Sw(config)# spanning-tree mode mst

MST Regions

802.1s – MSTP uses the concept of regions. A MST region is represented by all connected switches that have the same VLAN to MSTP instance mapping. A MST Region is identified by:

  • a 32 Bytes alpahnumeric identifier

  • a 2 Bytes revision number

  • a table that maps each VLAN to a STP instance

Switches that share the same identification information are part of the same MST Region. When sending BPDUs, switches send a message digest of the VLAN-to-instance table. If the received digest is different then the one computed using its own data, the port where this BPDU is received is considered a Boundary Port.

MST Instances

Cisco’s implementation of 802.1s supports 16 instances, 1 IST (Internal Spanning Tree) and 15 MSTIs(MST Instances). To configure the MST instances, use:

Sw(config)# spanning-tree mst configuration
Sw(config-mst)# name MST-DOMAIN-NAME
Sw(config-mst)# revision MST-DOMAIN-REVISION
Sw(config-mst)# instance INSTANCE-ID vlan VLAN-LIST

Configuration will only be applied when you exit the mst configuration mode. To verify pending config, use:

Sw(config-mst)# show pending

When you first enable MSTP, Instance 0 is created and all VLANs are allocated to it.


The IST runs on all bridges inside a MST Region and also provides interaction with the other MST Regions or other STP flavours (802.1d STP, 802.1q CST, PVST+). IST runs like a RSTP instance, but it also carries timer information in order to interact with legacy STP regions.


The MSTIs are RSTP instances that exist only within a MST region, with no outside interaction. MSTIs do not send their own BPDUs, instead MSTI information is attached to the IST BPDUs as M-Records. M-Records do not contain timer information so all instances use the same timers as the IST. MSTIs follow the IST topology at boundary port, so a boundary port will FWD or BLK for all VLANs.

MST Hop Count

MSTP Root Bridges send BPDUs with a default hop count of 20, and each bridge along the way decrements this value. If the hop count reaches 0, the incoming BPDU is discarded. To change the default value, use:

Sw(config)# spanning-tree mst max-hops HOP-COUNT

MST Configuration

MST Configuration is similar to the other STP flavours but it uses the mst keyword, like this:

! Configuring Root Bridge
Sw(config)# spanning-tree mst INSTANCE-LIST root {primary|secondary} [diameter DIA [hello-time HELLO]]
! Configuring Bridge Priority
Sw(config)# spanning-tree mst INSTANCE-LIST priority PRI
! Configuring Port Priority
Sw(config-if)# spanning-tree mst INSTANCE-LIST port-priority PRI
! Configuring Port Cost
Sw(config-if)# spanning-tree mst INSTANCE-LIST cost COST

Timers are only configured for IST, so there is no configuration per-instance:

Sw(config)# spanning-tree mst {hello-time HELLO|forward-time FORWARD|max-age MAXAGE}

RSTP Link Types are configured just link in RapidPVST

Sw(config-if)# spanning-tree link-type {point-to-point|shared}

Interoperability with other STP flavours

MSTP seamlessly interoperates with 802.1q CST. When interconnected with a PVST bridge, the MST bridge will replicate the IST out all VLANs. Not all possible configurations will be considered valid and an invalid configuration will put the boundary ports into a Root Inconsistent mode. A valid configuration can be achieved in the following cases:

  • If the MSTP is the root bridge, it must be the root for all VLANs (recommended)

  • If the PVST+ is the root bridge, it must be the root for all VLANs

Any other configuration will fail. (E.g. when the MSTP bridge is the root for the CST while the PVST+ bridge is the root for one or more VLANs) You can manually set the neighbor type to non-MSTP, using:

Sw(config)#spanning-tree mst pre-standard

Last updated