Multiple Spanning Tree (802.1s)

The IEEE Multiple Spanning Tree Protocol (MST) is in essence an extension of the Rapid Spanning Tree Protocol (RSTP). MST allows multiple spanning trees to coexist on the same bridged network. A group of VLANs can be mapped to its own independent instance of spanning tree, this allows for design flexibility and better resource utilizaton.

MST was originally defined in IEEE 802.1s, and it is based on Cisco’s Multiple Instances Spanning Tree Protocol (MSTIP).  MST uses the same BPDU format as RSTP, therefore it is backward compatible with both STP and RSTP.

In order to understand MST, we must first define its components:

  • MST Region: A group of Bridges with identical MST Configuration Identifiers
  • Multiple Spanning Tree Instance(MSTI): Independent Spanning Tree topology defined within an MST Region
  • MST Configuration Identifier: The MST region name, revision number, and VLAN to MSTI mappings
  • Internal Spanning Tree(IST): Extends the CST inside an MST Region, the IST is referred to as MSTI 0. By default, all VLANs are mapped to MSTI 0. The IST is used to propagate STP topology information for all the MSTIs.
  • Common and Internal Spanning Tree(CIST): Single overall spanning tree topology plus the ISTs from all regions.
  • Common Spanning Tree(CST): Single overall spanning tree used to interconnect MST regions and to connect to  RSTP/STP bridges. CST views an entire MST region as a virtual bridge. 

MST uses the concept of a region to create and manage a subset of independent spanning tree topologies. A group of switches must have identical MST Configuration Identifiers in order to be in the same region. The MST Configuration Identifier includes a configuration digest used to identify switches within the same region; if two switches have matching configuration digest, then they must be in the same MST Region. All MST specific information (MST Configuration Identifier and MST instances) are carried as MST Extension fields within the classic RSTP BPDU.

MST_BPDU

MST Single Region

First, the MST needs to generate the CIST so that MST Regions can be created (remember MST inserts control information in the BPDUs). Once a root bridge has been elected for the CIST (using the same criteria as 802.1D), and the shortest path to the root has been determined, each MST region will then elect a CIST Regional Root. If an MST Region is not connecting to any other regions or STP/RSTP clusters, then the CIST Root will automatically become the CIST Regional Root. However, when multiple MST Regions are interconnected and the CIST Root resides in a different region, the  CIST Regional Root becomes that one bridge with the best path to the CIST Root that doesn’t go through other bridges in the same MST Region.

Once the CIST Root and CIST Regional Root have been elected, each region will then elect a MSTI Regional Root for each configured MSTI, all switches within a Region will calculate the best path to each one of the MSTI Regional Roots.

Configuring 3 switches in the same MST Region

Three switches, two Cisco (Catalyst) and one Brocade (FastIron), are configured in the same MST Region named “ONE”, all inter-switch links are 802.1Q trunks:

    • CISCO.SW1 is the root for MSTI 0
    • BRCD.SW3 is the root for MSTI 1
    • CISCO.SW2 is the root for MSTI  2

The STP topology for each MSTI will look like this:

mstp_single_region

Configuration for CISCO.SW1

CISCO.SW1(config)#vlan 12
CISCO.SW1(config)#vlan 13
CISCO.SW1(config)#vlan 254
CISCO.SW1(config)#interface FastEthernet0/1
CISCO.SW1(config-if)#switchport trunk encapsulation dot1q
CISCO.SW1(config-if)#switchport mode trunk
CISCO.SW1(config-if)#switchport nonegotiate
CISCO.SW1(config)#interface FastEthernet0/24
CISCO.SW1(config-if)#switchport trunk encapsulation dot1q
CISCO.SW1(config-if)#switchport mode trunk
CISCO.SW1(config)#spanning-tree mst configuration
CISCO.SW1(config-mst)#name ONE
CISCO.SW1(config-mst)#revision 1
CISCO.SW1(config-mst)#instance 1 vlan 13
CISCO.SW1(config-mst)#instance 2 vlan 23
CISCO.SW1(config-mst)#exit
CISCO.SW1(config)#spanning-tree mst 0 priority 4096
CISCO.SW1(config)#spanning-tree mode mst

Configuration for CISCO.SW2

CISCO.SW2(config)#vlan 12
CISCO.SW2(config)#vlan 13
CISCO.SW2(config)#vlan 254
CISCO.SW1(config)#interface FastEthernet0/1
CISCO.SW1(config-if)#switchport trunk encapsulation dot1q
CISCO.SW1(config-if)#switchport mode trunk
CISCO.SW1(config-if)#switchport nonegotiate
CISCO.SW2(config)#spanning-tree mst configuration
CISCO.SW2(config-mst)#name ONE
CISCO.SW2(config-mst)#revision 1
CISCO.SW2(config-mst)#instance 1 vlan 13
CISCO.SW2(config-mst)#instance 2 vlan 23
CISCO.SW2(config-mst)#exit
CISCO.SW2(config)#spanning-tree mst 2 priority 4096
CISCO.SW2(config)#spanning-tree mode mst

Configuration for BRCD.SW3

BRCD.SW.3(config)#vlan 13 by port
BRCD.SW.3(config-vlan-13)#tagged ethernet 1 to 2
BRCD.SW.3(config)#vlan 23 by port
BRCD.SW.3(config-vlan-23)#tagged ethernet 1 to 2
BRCD.SW.3(config)#vlan 254 by port
BRCD.SW.3(config-vlan-254)#tagged ethernet 1 to 2
BRCD.SW.3(config)#mstp scope all
BRCD.SW.3(config)#mstp name ONE
BRCD.SW.3(config)#mstp revision 1
BRCD.SW.3(config)#mstp instance 1 vlan 13
BRCD.SW.3(config)#mstp instance 1 priority 4096
BRCD.SW.3(config)#mstp instance 2 vlan 23
BRCD.SW.3(config)#mstp start

MST Instance 0 on CISCO.SW1

CISCO.SW1#sho spanning-tree mst 0
##### MST0    vlans mapped:   1-12,14-22,24-4094
Bridge        address 000a.f42b.e680  priority      4096  (4096 sysid 0)
Root          this switch for the CIST
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 200000    128.1    P2p
Fa0/24           Desg FWD 200000    128.24   P2p

MST Instance 2 on CISCO.SW2

CISCO.SW.2#sho spanning-tree mst 2

##### MST2    vlans mapped:   23
Bridge        address 000a.4114.7900  priority      4098  (4096 sysid 2)
Root          this switch for MST2

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 200000    128.1    P2p
Fa0/24           Desg FWD 200000    128.24   P2p

MSTP Instance 1 on BRCD.SW3

BRCD.SW.3#show mstp 1
MSTP Instance 1 - VLANs: 13
----------------------------------------------------------------------------
Bridge           Max RegionalRoot     IntPath   Designated       Root  Root
Identifier       Hop Bridge           Cost      Bridge           Port  Hop
hex              cnt hex                        hex                    cnt
1001001bed545e80 20  1001001bed545e80 0         1001001bed545e80 Root  20

Port  Pri Port PortPath  Role      State   Designa-  Designated
Num       Id   Cost                        ted cost  bridge
1     128 1    200000    DESIGNATE FORWARD 0         1001001bed545e80
2     128 2    200000    DESIGNATE FORWARD 0         1001001bed545e80

MST with multiple Regions and RSTP

An additional Catalyst switch, CISCO.SW3,  and an Ruggedcom switch, RSTP.SW.4, will be added to the topology. CISCO.SW3 will be configured in MST Region “TWO”, with a priority of 0 for the IST (MSTI 0), while RSTP.SW4 will be added with its default configuration.

Configuration on CISCO.SW3

CISCO.SW3(config)#vlan 254
CISCO.SW3(config)#interface FastEthernet0/1
CISCO.SW3(config-if)#switchport trunk encapsulation dot1q
CISCO.SW3(config-if)#switchport mode trunk
CISCO.SW3(config-if)#switchport nonegotiate
CISCO.SW3(config)#interface FastEthernet0/2
CISCO.SW3(config-if)#switchport trunk encapsulation dot1q
CISCO.SW3(config-if)#switchport mode trunk
CISCO.SW3(config-if)#switchport nonegotiate
CISCO.SW3(config)#spanning-tree mst configuration
CISCO.SW3(config-mst)#name TWO
CISCO.SW3(config-mst)#revision 10
CISCO.SW3(config-mst)#exit
CISCO.SW3(config)#spanning-tree mst 0 priority 0

The new topology for MSTI 0 (the CST from the perspective of RSTP.SW4)  looks like this:

mstp_multiple_reg

The following events will take place:

  1. CISCO.SW3 has the lowest Bridge ID, so it will become the CIST Root and CIST Regional Root for MST Region “TWO”
  2. BRCD.SW3 will now become the CIST Regional Root for MIST Region “ONE” even though CISCO.SW1 has a lower Bridge ID, this is because BRCD.SW3 has the best path (directly connected) to the new CIST Root (CISCO.SW3)
  3. CISCO.SW1 and CISCO.SW2 will mark port Fa0/1 as the new root port for MSTI 0
  4. RSTP.SW4 sees MST Regions “ONE” and “TWO” as virtual bridges and will designate the direct path via port ethernet 2 as the root port

CISCO.SW3 becomes the new CIST Root

CISCO.SW.3#sho spanning-tree mst 0

##### MST0    vlans mapped:   1-4094
Bridge        address 0013.60bf.db80  priority      0     (0 sysid 0)
Root          this switch for the CIST
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Desg FWD 200000    128.1    P2p
Fa0/2            Desg FWD 200000    128.2    P2p

When Ethernet 3 comes up BRCD.SW3 starts receiving superior BPDUs and converges accordingly

BRCD.SW.3#debug mstp events
SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 3 - DISCARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 1 Port 3 - DISCARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 2 Port 3 - DISCARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 System: Interface ethernet 3, state up

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 - New RootBridge 0000001360bfdb80 RootPort 3

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 1 - DISCARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 3 - LEARNING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 3 - FORWARDING
SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 3 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 1 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 1 Port 3 - LEARNING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 1 Port 3 - FORWARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 1 Port 3 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 1 Port 1 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 1 Port 2 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 2 Port 3 - LEARNING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 2 Port 3 - FORWARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 2 Port 3 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 2 Port 2 - Bridge TC Event

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 1 - LEARNING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 2 - LEARNING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 1 - FORWARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 2 - FORWARDING

SYSLOG: Jan  1 00:00:00 BRCD.SW.3 MSTP: MST 0 Port 2 - Bridge TC Event

BRCD.SW.3#sho mstp 0
MSTP Instance 0 (CIST) - VLANs: 1 254
----------------------------------------------------------------------------
Bridge           Bridge Bridge Bridge Bridge Root   Root  Root   Root
Identifier       MaxAge Hello  FwdDly Hop    MaxAge Hello FwdDly Hop
hex              sec    sec    sec    cnt    sec    sec   sec    cnt
8000001bed545e80 20     2      15     20     20     2     15     20

Root             ExtPath   RegionalRoot     IntPath   Designated       Root
Bridge           Cost      Bridge           Cost      Bridge           Port
hex                        hex                        hex
0000001360bfdb80 200000    8000001bed545e80 0         0000001360bfdb80 3

CISCO.SW1 receives superior root bridge information on Fa0/1 and converges accordingly

CISCO.SW1#debug spanning-tree mst roles
CISCO.SW1#
MST[0]: updt roles, received superior bpdu on Fa0/1
MST[0]: Fa0/1 is now root port
MST[1]: updt roles, CIST reconcile on Fa0/1
MST[2]: updt roles, CIST reconcile on Fa0/1

CISCO.SW1#show spanning-tree mst 0

##### MST0    vlans mapped:   1-12,14-22,24-4094
Bridge        address 000a.f42b.e680  priority      4096  (4096 sysid 0)
Root          address 0013.60bf.db80  priority      0     (0 sysid 0)
              port    Fa0/1           path cost     200000
Regional Root address 001b.ed54.5e80  priority      32768 (32768 sysid 0)
                                      internal cost 200000    rem hops 19
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Root FWD 200000    128.1    P2p
Fa0/24           Desg FWD 200000    128.24   P2p

CISCO.SW1#

CISCO.SW2 elects Fa0/1 as the new root port and marks Fa0/2 as a RSTP Boundary port

CISCO.SW.2#sho spanning-tree mst 0

##### MST0    vlans mapped:   1-12,14-22,24-4094
Bridge        address 000a.4114.7900  priority      32768 (32768 sysid 0)
Root          address 0013.60bf.db80  priority      0     (0 sysid 0)
              port    Fa0/1           path cost     200000
Regional Root address 001b.ed54.5e80  priority      32768 (32768 sysid 0)
                                      internal cost 200000    rem hops 19
Operational   hello time 2 , forward delay 15, max age 20, txholdcount 6
Configured    hello time 2 , forward delay 15, max age 20, max hops    20

Interface        Role Sts Cost      Prio.Nbr Type
---------------- ---- --- --------- -------- --------------------------------
Fa0/1            Root FWD 200000    128.1    P2p
Fa0/2            Altn BLK 200000    128.2    P2p Bound(RSTP)
Fa0/24           Altn BLK 200000    128.24   P2p

From RSTP.SW4’s perspective, it is connected to two RSTP switches.

System Name                 Bridge RSTP Statistics                    3 ALARMS!


             Bridge Status             Designated Bridge
             Bridge ID                 32768/00-0A-DC-55-DB-00
             Root ID                       0/00-13-60-BF-DB-80
             Root Port                 3

System Name                  Port RSTP Statistics                     3 ALARMS!

Port(s) Status     Role       Cost       RX RSTs    TX RSTs    RX Configs
1       Link Down             0          0          0          0
2       Forwarding Designated 19         29         1843       0
3       Forwarding Root       19         3949       165        0

References

About Carlos Bauer

I am a Network Engineer certified with Cisco (CCNP R&S) and Brocade (BCNE). My interests include: Computer networks, Linux, and Python.
This entry was posted in Uncategorized and tagged , , , , . Bookmark the permalink.

Leave a comment