Showing results for 
Search instead for 
Did you mean: 
Join Customer Connection to register!
Rodrigo Belo

debuging and troubleshooting MST

Hi all,

I'm new in MST and configured a switched network with Catalyst 3550, 2960, 2950 on a lab enviroment. The purpose is to test MST before getting it to production to prevent nasty surprises.

I've configured the network with 2 MST instances and everything looks fine exept on the 2950 ( IOS 12.1(22)EA13 ) where I get these messages:

Jul 23 11:18:36.291: STP: MST00 port Fa0/2 agreement from non-root/design

Jul 23 11:18:38.306: STP: MST00 port Fa0/2 agreement from non-root/design

Jul 23 11:18:40.322: STP: MST00 port Fa0/2 agreement from non-root/design


Jul 23 12:03:25.142: MST[0]: Fa0/1 ( designatedportid, fromMyregion 1)

Jul 23 12:03:25.934: MST[0]: Fa0/2 ( designatedportid, fromMyregion 1)

Jul 23 12:03:27.157: MST[0]: Fa0/1 ( designatedportid, fromMyregion 1)

Jul 23 12:03:27.945: MST[0]: Fa0/2 ( designatedportid, fromMyregion 1)

(interfaces Fa0/1 and Fa0/2 are uplinks to 2960s)

Interface        Role Sts Cost      Prio.Nbr Type

---------------- ---- --- --------- -------- --------------------------------

Fa0/1            Altn BLK 200000    128.1    P2p

Fa0/2            Root FWD 200000    128.2    P2p

Spanning Tree:
  Spanning Tree event debugging is on
Multiple Spanning Tree:
  Multiple Spanning Tree topology change notifications debugging is on
  Multiple Spanning Tree boundary port state changes debugging is on
The "debug show spanning-tree mstp boundary" brings these messages, the problem is that there is no boundary since all switches run mst.
It is my understanding that these messages represent BPDUs being exchanged, since they show every 2 seconds (hello timer), but I don't know what they mean and it would be nice to get some documentation about it.
thanks in advance


Hi Rodrigo !

I think you are experiencing this issue because the 2950 do not follow IEEE standard based MST implementation, it is a prestandard implementation and based on the draft version of the IEEE standard. (Cisco has shipped MST before the IEEE Standard release)..

A very intersting post about this behaviour =>


Cisco shipped MST before the  standard was released. Your device is probably running this  "pre-standard" version. I think 12.1 IOS only has the pre-standard  version and some switches cannot upgrade to 12.2 and will be limited to  this pre-standard version.

"Standard" Cisco bridges (12.2 and  beyond afaik) are able to form regions with pre-standard ones.  Third  party bridges (or more broadly, switches that only implement the pure  IEEE standard) won't be able to form a region with pre-standard Cisco  boxes. You will be limited to RSTP use between those (you lose the  ability to form a region, which means that you cannot do load balancing  based on instances).




You can check the mode with the command :

show spanning-tree summary

Switch is ??

Also a link explaining the interaction between the two modes =>

There is also a related command possible on the other switches => spanning-tree mst pre-standard interface configuration command to configure a port to send only prestandard bridge protocol data units (BPDUs). You can maybe play with it in your lab to see the behaviour afterwards.

Also from another previous post =>

Normally If a standard switch receives a pre-standard bpdu, it automatically  start sending pre-standard bpdus itself). Of course, the other  possibility would be that your standard switch is configured on the  interface to send pre-standard bpdus. Initially, we wanted to always auto-detect pre-standard switches. But  in some cases, the auto-detection fails. That's why we had to add the  interface command.

I hope this information will help you (if we match this scenario in your environment).


Hi Karim,

the switch is infact pre-standard and the distribution Catalyst 2960 detects it so the spanning-tre pre-standard command at the interface is implicit;

SW_2960#sh spanning-tree



  Spanning tree enabled protocol mstp


Interface           Role Sts Cost      Prio.Nbr Type

------------------- ---- --- --------- -------- --------------------------------

Gi0/1               Desg FWD 200000    128.1    P2p Pre-STD-Rx

Catalyst 2950 reached end-of-life at version 12.1 so that means I can't have 2950's(Version 12.1) and 2960's(Version 12.2) with standard connection.


A region cannot be formed between a standard and a prestandard switch, but they can interoperate before using the CIST. Only the capability of load balancing over different instances is lost in this specific situation.

"Standard" Cisco bridges (12.2 and beyond afaik) are able to form regions with pre-standard ones.  Third party bridges (or more broadly, switches that only implement the pure IEEE standard) won't be able to form a region with pre-standard Cisco boxes.

so wich one is it...does this mean I'll have diferent regions for every 2950 access switch?

I don't think so because it shows the switch as internal and not boundary!

SW_2950#sh spanning-tree mst interface f0/2

FastEthernet0/2 of MST00 is root forwarding

Edge port: no             (default)        port guard : none        (default)

Link type: point-to-point (auto)           bpdu filter: disable     (default)

Boundary : internal                        bpdu guard : disable     (default)

Bpdus sent 14, received 11678

I tried configuring the 2950 with a diferent configuration name and revision number and the debug spanning-tre mstp boundary messages still show every 2 seconds.
Jul 27 17:45:16.934: MST[0]: Fa0/2 ( designatedportid, fromMyregion 0)
IOS Version 12.2 doesn't have this command...could that be something to ignore?
On link failure the debugging spanning-tree mst tc has different outputs.
In all core 3550's distribution 2960's and access 2950's it outpus topolofy change messages:
SW_2950#sh logging
Jul 28 01:00:37.761: MSTP(1): port Fa0/1 initiating tc
Jul 28 01:01:10.711: MSTP(1): port Fa0/1 received tc
Jul 28 01:01:10.711: MSTP(0): port Fa0/1 received tc
Jul 28 01:01:12.759: MSTP[0]: tc timer expired
But on access 2960's it shows nothing:
SW_2960#sh logging
Jul 21 17:47:14.268: %SYS-5-CONFIG_I: Configured from console by user on vty1
they're all on the same region!! Am I missing something??
Mohamed Sobair
Rising star


A boundary Switch is a switch that connects to MST different regions. In your case, your 2950 runs prestandard MST, your 3560 and 2960 are running standard MST with a single region.

The output of sh spanning-tree on the port of 2950 shows the port as internal because the MST bridge will revert back to normal RSTP with this bridge.

MSTP is backword compatible with RSTP.

-- You cant have loadbalancing in this situation, all MST instances will be using a single link between the MST bridge and the RSTP bridge (2950).




that is what I expected to see but it's not what it shows...

SW_2950#sh spanning-tree summary

Switch is in mst mode

Root bridge for: none


Name                   Blocking Listening Learning Forwarding STP Active

---------------------- -------- --------- -------- ---------- ----------

MST00                        1         0        0          1          2

MST01                        1         0        0          1          2

---------------------- -------- --------- -------- ---------- ----------

2 msts                       2         0        0          2          4

SW_2950#sh spanning-tree detail
MST00 is executing the mstp compatible Spanning Tree protocol

Plus if the bridge was running rapid stp I should get logs from debug spanning-tre events but I only get them from debug spanning-tree mst tc...

.Jul 28 09:56:39.238: MSTP(1): port Fa0/2 received tc

.Jul 28 09:56:39.238: MSTP(0): port Fa0/2 received tc



Hello Rodrigo!

I think you have the expected behaviour in your lab.

IEEE Standard switch (2960,3750..with correct ios) are working in Pre-STD mode with the 2950 in the same region.


SW_2950#sh spanning-tree summary

Switch is in mst mode

and the same command on the 2960 (or other ieee std mstp) should switch give you

Sw_2960#sh spanning-tree summary
Switch is in mst mode (IEEE Standard)


I have set up the same architecture as yours, IEEE mst switches (3750 in my case) are running mst Pre-std (on interface basis) with the 2950, and they all are in the same region, with possible load-balancing between vlans (for example with command => spanning-tree mst instance_n°  priority ....).

If they were not you should see on the MST switch interface type as P2p Bound(xxx)

About the debug commands:

debug spanning-tre events => I suppose debug ouptuts when in pvst or rstp mode defined in the configuration and indeed not in MST (just tested it).

Also an important information just like Mohamed stated => After MST is enabled and configured, PVST+ operation stops and the switch changes to RSTP operation.

And when I want to see related MST related debugs I had to issue 'debug spanning-tree mst xxxx' , just like tc as you did for topology changes.

Hope it helps!


No questions there, what made me suspicious (and still does )was the fact that in all access layer (2950 and 2960) I only see topology change messages on the pre-standard 2950.

Even when I break links or change root priority, access layer 2960 change root ports but no tc messages show up.

Am I missing something or topology changes are sent only to root ports and pre-standard ports...or something like that ?!?!

thanks for your help


Mohamed Sobair
Rising star


You will not actually see the bridge running RSTP from the show command because its already running pre-standard MST.

However, the BPDU interpreted by the 2950 from the MST bridge will be treated as normal RSTP BPDU and the whole MST region will be visible as a single RSTP bridge with respect to the 2950.

So, the BPDUs recieved are actually treated as RSTP BPDUs.