A few months ago, before I started working for the company I now work for, one of the store outlets of the company had a big networking issues.
They figured out that the source of the problem was a local employee of the store who had connected a small US Robotics switch to the outlet, to provide for more UTP connections.
Recently, I had to logon to that switch and noticed that Spanning Tree had been enabled, and because I was told that the switch configuration had never been changed since the issue, I thought this was strange. Spanning Tree should have seen the loop, and prevented it by just disabling the port with the switch on it.
So I decided to test the situation by taking a spare Cisco 3560 switch, a Sweex 8 ports switch and my laptop.
I cabled the situation as illustrated above, and tried to ping the IP Adress of the 3560 switch. At first I got a few replies, but after a minute replies failed and the following message was shown on the cisco IOS console:
%C4K_EBM-4-HOSTFLAPPING:Host [mac-addr] in vlan 1 is flapping between port FastEthernet 0/1 and port FastEthernet 0/2
Now I had found the cause of the problem, I wanted to find a solution to the problem. The first thing I tried was setting another STP version. When I had set the version to PVST ( Per Vlan Spanning Tree ) it went trough all STP states, and finally blocked the port as it should have.
What happend in the first situation was that broadcast packages from my laptop were sent to port1, which contained the loop. It went through the loop, back to port1. At this point the 3560 switch reads the source mac-address from the package that went through the loop, and it then thought my laptop is connected to port1.
The second situation with PVST turned on, it detected the loop and blocked the port. It turned out that a few old stores had some old IOSes which could not speak RSTP. So all other switches in those stores were configured to use the old MST protocol. After a nights work, all switches were upgraded to the newest version and problems should not occur anymore.
But why did MST not detect the loop? It should have received back the same BPDU packages as PVST did, and therefore know there was a loop on that port.
I am still not sure why. As I remember correctly PVST and MST use slight different BPDU packages and this could have made the difference between detecting and not detecting the loop. Or perhaps MST was not designed to detect loops on the same port, but designed to detect loops through out the network?
I am still not sure, but if you have read this keep it in mind. It could save you a lot of trouble.