Spanning Tree Protocol (STP) is a Layer 2 protocol that prevents network loops in Ethernet networks with redundant paths. It creates a loop-free logical topology by selectively blocking certain redundant paths while maintaining backup connections for fault tolerance.
STP operates through a distributed algorithm that:
- Elects a root bridge (the reference point for all path calculations)
- Determines the least-cost path from each switch to the root bridge
- Blocks redundant paths that could cause loops
// Simplified STP state machine logic
switch(stp_state) {
case DISABLED:
port_down_actions();
break;
case BLOCKING:
drop_non_bpdu_frames();
break;
case LISTENING:
process_bpdus();
break;
case LEARNING:
build_mac_table();
break;
case FORWARDING:
forward_frames();
break;
}
Here's how STP configuration might look on a Cisco switch:
Switch(config)# spanning-tree vlan 1 priority 4096
Switch(config)# spanning-tree mode rapid-pvst
Switch(config)# interface fastEthernet 0/1
Switch(config-if)# spanning-tree portfast
Protocol | Standard | Convergence Time |
---|---|---|
STP | 802.1D | 30-50 seconds |
RSTP | 802.1w | 1-2 seconds |
MSTP | 802.1s | Varies |
When troubleshooting STP problems, these commands are invaluable:
show spanning-tree summary
show spanning-tree vlan 1
debug spanning-tree events
Remember that STP problems often manifest as unexplained network slowdowns or intermittent connectivity issues rather than complete outages.
Spanning Tree Protocol (STP) is a layer 2 protocol that prevents broadcast storms by logically disabling redundant paths in Ethernet networks while maintaining fault tolerance. The protocol creates a loop-free logical topology by blocking certain ports, automatically activating backup paths when primary links fail.
The protocol works through a distributed algorithm where bridges exchange BPDUs (Bridge Protocol Data Units) to:
- Elect a root bridge (the reference point for all paths)
- Determine root ports (the best path to the root)
- Select designated ports (which forward traffic)
- Block alternate paths (creating a loop-free tree)
Here's how STP configuration typically looks on Cisco switches:
Switch(config)# spanning-tree vlan 1 priority 4096
Switch(config)# spanning-tree mode rapid-pvst
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# spanning-tree portfast
Modern networks use enhanced versions of STP:
- RSTP (802.1w): Faster convergence (1-2 seconds vs 30-50 seconds)
- MSTP (802.1s): Maps multiple VLANs to a single spanning tree instance
- PVST+: Cisco's per-VLAN spanning tree implementation
Common problems and their solutions:
Symptom | Possible Cause | Solution |
---|---|---|
Port stuck in blocking | Incorrect root bridge election | Verify bridge priorities |
Network flaps | BPDU misconfiguration | Check for BPDU filters/guards |
Slow convergence | Using legacy STP | Upgrade to RSTP |
With software-defined networking, STP's role is evolving. Many modern solutions use alternative loop prevention mechanisms like:
// Example SDN controller rule to prevent loops
flow = {
'priority': 40000,
'match': {'in_port': 1},
'actions': [{'type': 'OUTPUT', 'port': 'FLOOD'}],
'flags': ['NO_PACKET_IN']
}