The purpose of the
spanning tree protocol (STP) is to allow switches to automatically create a
loop-free set of paths, even in a complex network with multiple paths
connecting multiple switches. It provides the ability to dynamically create a
tree topology in a network by blocking any packet forwarding on certain ports,
and ensures that a set of Ethernet switches can automatically configure
themselves to produce loop-free paths.
Operation of the
spanning tree algorithm is based on configuration messages sent by each switch
in packets called Bridge Protocol Data Units, or BPDUs. Each BPDU packet is
sent to a destination multicast address that has been assigned to spanning tree
operation.
The process of
creating a spanning tree begins by using the information in the BPDU
configuration messages to automatically elect a root bridge. The election is
based on a bridge ID (BID) which, in turn, is based on the combination of a
configurable bridge priority value (32,768 by default) and the unique Ethernet
MAC address assigned on each bridge for use by the spanning tree process,
called the system MAC. Bridges send BPDUs to one another, and the bridge with
the lowest BID is automatically elected to be the root bridge.
Once a root bridge
is chosen, each non-root bridge uses that information to determine which of its
ports has the least-cost path to the root bridge, then assigns that port to be
the root port (RP).
All other bridges determine which of their ports connected to other links has
the least-cost path to the root bridge. The bridge with the least-cost path is
assigned the role of designated bridge (DB), and the ports on the DB are assigned
as designated ports (DP).
The bridge multicast
group MAC address is 01-80-C2-00-00-00. Vendor-specific spanning tree
enhancements may also use other addresses. For example, Cisco per-VLAN spanning
tree (PVST) sends BPDUs to address 01-00-0C-CC-CC-CD.
The path cost is
based on the speed at which the ports operate, with higher speeds resulting in
lower costs. As BPDU packets travel through the system, they accumulate
information about the number of ports they travel through and the speed of each
port. Paths with slower speed ports will have higher costs. The total cost of a
given path through multiple switches is the sum of the costs of all the ports
on that path.
While blocked ports
do not forward packets, they continue to receive BPDUs.
The Rapid Spanning
Tree Protocol (RSTP) sends BPDU packets every two seconds to monitor the state
of the network, and a blocked port may become unblocked when a path change is
detected.
Spanning Tree Port States
Disabled
A port in this state
has been intentionally shut down by an administrator, or has automatically shut
down because the link was disconnected. This also could be a port that has
failed, and is no longer operational.
Blocking
A port that is
enabled, but is not a root port or designated port could cause a switching loop
if it were active. To avoid that, the port is placed in the blocking state. No
station data is sent or received over a blocking port. A blocking port may also transition to the
forwarding state if other links fail. BPDU data is still received while a port
is in the blocking state.
Listening
In this state, the
port discards traffic but continues to process BPDUs received on the port, and
acts on any new information that would cause the port to return to the blocked
state. Based on information received in BPDUs, the port may transition to the
learning state. The listening state allows the spanning tree algorithm to
decide whether the attributes of this port, such as port cost, would cause the
port to become part of the spanning tree or return to the blocking state.
Learning
In this state, the
port does not yet forward frames, but it does learn source addresses from any
frames received and adds them to the filtering database. The switch will populate the MAC address table with packets heard
on the port (until the timer expires), before moving to the forwarding state.
Forwarding
This is the
operational state in which a port sends and receives station data. Incoming
BPDUs are also monitored to allow the bridge to detect if it needs to move the
port into the blocking state to prevent a loop.