802.1w Rapid Spanning-Tree (RSTP or RST) is an evolution of the original 802.1D [[Spanning Tree Protocol (STP)]] which aims to modernize the protocol by speeding up convergence to be nearly instantaneous. However, RSTP accomplishes this without changing any of the timers in the environment. ``` (config)# spanning-tree mode rapid-pvst ``` >When using RSTP, switches will self-generate BPDUs, rather than waiting for a superior BPDU from upstream to forward it. These generations occur every time the hello timer is reached, or immediately on reception of a superior BPDU. ## Negotiations When a link comes online in RSTP, it is entered into a SYNC state. The process of a SYNC state is as follows: 1. Link comes online. 2. BPDUs are sent to each-other (one is superior). 3. After this transaction, one device knows it has the superior BPDU. 4. The superior switch then sends another BPDU with the **Proposal flag**. 5. When the other switch receives this **Proposal flag**, it responds by sending a BPDU upstream with an **Acceptance flag**. 6. Both ports have now completed the SYNC process and transition directly to their intended state, skipping the Learning state. This negotiation process works because RSTP assumes all links are point-to-point by default. The following command will specify for a link that there is a hub in between: ``` (config-if)# spanning-tree link-type shared ``` Links that are of type shared operate as if it were a normal 802.1D link, waiting for timers to establish its port state. (Although note that in RSTP the port states are different!) ### New Root Bridge When a Superior BPDU in a new location, that signals that the topology has changed. The following steps occur in this scenario: 1. A converged switch receives a superior BPDU with the **Proposal** flag. 2. The switch transitions all ports to a **Discarding** or BLK state. 3. All interfaces on the switch then enter the SYNC state. > The end of this process triggers the start of this process on downstream devices! ### Indirect Failures In RSTP, if a BPDU is missed for 3 hello times, then the BPDU is expired. By default, this is 6 seconds, rather than how it would be 20 seconds in 802.1D spanning-tree. Max Age is still used for when a interface is a Shared link type. ## BPDUv2 Format To support these new link states and the SYNC process, RSTP utilizes a new kind of BPDU standard: **BPDUv2** which supports the following: - New Flag: Proposal - New Flag: Acceptance - Port States - Incompatible with 802.1D ## Port States There are only three port states in RSTP that correspond to the three possible operational states. The 802.1D disabled, blocking, and listening states are merged into a unique 802.1w discarding state. | STP Port State | RSTP Port State | Is Port Included in Active Topology? | Is Port Learning MAC Addresses? | | -------------- | --------------- | ------------------------------------ | ------------------------------- | | Disabled | Discarding | No | No | | Blocking | Discarding | No | No | | Listening | Discarding | Yes | No | | Learning | Learning | Yes | Yes | | Forwarding | Forwarding | Yes | Yes | In summary, the 802.1w RSTP process uses the following states: - Discarding - Learning - Forwarding > The new Learning state will use the forward-time as its timer. This means that ports in the Learning state will last for 15 seconds by default before transitioning to Forwarding/Discarding. ### Alternate and Backup Ports These two port roles correspond to the blocking state of 802.1D. A blocked port is defined as not being the designated or root port. A blocked port receives a more useful BPDU than the one it sends out on its segment. Remember that a port needs to receive BPDUs in order to stay blocked. RSTP introduces these two roles for this purpose. An alternate port receives more useful BPDUs from another bridge and is a port blocked. This is shown in this diagram: ![[AlternatePort.png]] A backup port receives more useful BPDUs from the same bridge it is on and is a port blocked. This is shown in this diagram: ![[_images/BackupPort.png]] ## Topology Change Notifications When a port state change via a Blocked port transitioning to a Forwarding state, a topology change is triggered. The following process occurs when a topology change is triggered: 1. A **non-edge** port state changes from **BLK -> FWD**. 2. The detecting bridge **flushes its MAC address table** except on the interface that received the TCN. 3. For **twice the hello-timer**, the detecting bridge generates **Configuration BPDUs** with the **TNC bit set**, out all interfaces. When a neighboring bridge receives the TCN notification, it begins the process from step 2. ## Resources Cisco Whitepaper: https://www.cisco.com/c/en/us/support/docs/lan-switching/spanning-tree-protocol/24062-146.html