What a great story. The spanning tree algo is under appreciated: this allowed people who didn’t understand networking to plug networks together the way you would plug extension power cables together,* making networking simple ( or alternatively insanely broken, when people had 400 computers on a single LAN with a rat’s nest of bridges and hubs…but unlike the extension cord case, nothing would catch literal fire).
Occasionally people don't understand how to plug extension power cables together, either, especially during times of high stress and low sleep.
Once upon a time, when I was in IT support, I got a call from someone in a satellite office across town saying that their computer wouldn't turn on. A new production had begun and everyone was a bit frantic, so this was an urgent request. After asking them to hold the power switch in for a few seconds and try to turn it on again, I asked them to make sure the power cable was secure and that the computer was plugged in. It was, of course, but the computer still wouldn't turn on, so it was time to jump on the bicycle and ride across town with a new power supply in tow, figuring it would be a quick fix.
When I arrive, I see that, indeed, the computer was plugged in to a power strip. And that power strip was plugged in to itself. From then on, I always made sure to ask, "Is the computer plugged into the wall?" Saved myself a few bicycle trips that way.
My Audio Video buddy has a very similar story. A school called because their newish PA system wasn’t working. Turns out the usual lady was out. The usual lady would rip the cord out of the wall every evening instead of pressing the power button. The stand in announcer was just trying to press the on off button like most normal people.
They ended up having to replace expensive equipment because the person wouldn’t stop ripping the cord out of the wall to turn it of.
I think American houses don't have a power switch per outlet like the rest of the world. The only way some (most?) devices can be turned off is by pulling the cord.
Not it’s not at all. Do you turn a computer or tv off by pulling the cord? No, you turn it off by a switch/button or in the GUI if it has one. I’m from the US.
If you had a stero system at your house you would not pull the cord to turn it off. Wow.
In all fairness, the person had obviously been awake for over 24 hours and was on their 1,001st cup of coffee. And since earlier in the summer I had crashed the entire ticket scanner network the night before the opening of the weekend festival we had put on by creating a network loop between a couple of non-spanning-tree-speaking network devices, I didn't feel I was in a place to be snarky about it!
A couple of decades ago I witnessed a classic demonstration of Weinberg's Corollary¹ when a spanning tree misconfiguration on a freshly-installed BlackDiamond disabled LINX for hours, throwing half of Britain's ISP peering into chaos. The switch in question was evidently cursed: it'd been dropped on my foot earlier that week, thus disabling me for hours, and everyone else involved in that project was dead within two years.
__
[1] "an expert is a person who avoids the small errors while sweeping on to the grand fallacy"
That's why the new Ethernet protocol 802.11aq is recommending Shortest Path Bridging (SPB) as a robust alternative to Spanning Tree Protocol (STP). Not only it's more robust, but it is more secure with extra resilience against broadcast storm. It also can support multi-cast function more easily and intuitively at data-link layer [1],[2]. Compared to the new SPB, STP looks like an immature hacks and why it took so long to be replaced is beyond me.
> That's why the new Ethernet protocol 802.11aq is recommending Shortest Path Bridging (SPB) as a robust alternative to Spanning Tree Protocol (STP).
This is a dead letter standard: most folks who would 'need' SPB are probably using BGP EVPN to reduce the Layer 2 'blast radius'.
It should also be noted that the IEEE was dragged kicking and screaming towards SPB: originally TRILL was proposed, but the IEEE rejected it, and so the IETF published:
It was in the kitchen, cause that was also where the utility closet is. and our 100+ year old building has crappy/dirty power, frequent brown-outs.
So, a few weeks of splashing coffee, tea and other crap around, and our crap power the thing started humming (60Hz). Then one day POP! Cap blew out and there was a little smoke.
> but unlike the extension cord case, nothing would catch literal fire
I might be taking this too literally (I fell down the Kunsberg Bridge rabbithole recently), but with only one input on nearly all extension cords, I don't see how you'd get into a position of "fire" rather than "nothing happening".
Even if you did have two ways of putting power into your extension lead, it wouldn't necessarily lead to fire; household "ring" circuits (still very common in UK houses) are by definition a loop.
I feel like STP is basically magic when you first learn it in a course (usually sponsored by Cisco) but the illusion is broken when you learn computer science principles like a graph data structure and how to build an acyclic graph.
STP handles this through sending little messages with every node receiving the message appending themselves after whoever sent it. Then a node just checks if it sees itself in the message. If I DO see myself in the chain, I know now I need to not send information to the previous node that sent me the message.
The message just needs to be something that'll never succeed but flow through the network. If I have three nodes labeled "A", "B", and "C" then I could send a message intended for "D" (which does not exist in my network). A has a path to B and A has a path to C. B has a path to C and vice versa. Each node can talk to another.
A send to B. B checks if its in the chain and if not, it appends itself in the chain. A -> B. B knows it received the message from A so it will ignore this connection and send the message to all of its neighbors. C receives the message from B. C checks if its in the chain and if not, it appends itself in the chain. A > B -> C. C got the message from B so it ignores this path and sends the message to all of its other neighbors (in this case, A).
A receives the message and checks if its in the chain (it is). A knows it received the message from C. A now knows that a cycle has been detected, so A disables its connection to C.
Congrats! You've designed a tree! Its a graph that contains no cycles. All we had to do was send a message and check if we see ourselves in the chain. If we do, we disable our path to the last node that sent us a message.
Of course STP gets more complicated from here as we factor in path costs as weights to measure the decision to axe a connection. Maybe A -> B is a 1G connection and A -> C is a 10G connection, in this case A may disable the path to B.
I do agree that reducing reconvergence time is magic. I don't understand that one.
* don’t try this at home or work!