Portfast is a Cisco proprietary solution to deal with spanning tree topology changes. If you don’t know how spanning tree reacts to topology changes then I highly recommend you to read this lesson before you continue reading. It helps to understand why we need portfast.
Portfast does two things for us:
• Interfaces with portfast enabled will go to forwarding mode immediately. The interface will skip the listening and learning state.
• A switch will never generate a topology change notification for an interface that has portfast enabled.
It’s a good idea to enable portfast on interfaces connected to hosts because these interfaces are likely to go up and down all the time. Don’t enable portfast on an interface to another hub or switch.
Let’s look at the difference between an interface with and without portfast. I’ll be using the following topology for this:
I have two switches and one host connected to SW1. The only reason I have two switches is so SW1 has another switch that it can send topology notification changes to. Let’s look at the without portfast scenario first…
To see the interesting stuff, I will enable a debug on SW1:
SW1#debug spanning-tree events
Spanning Tree event debugging is on
Once I plug in the cable to connect the host to SW1, this is what happens:
STP: VLAN0001 Fa0/1 -> listening
STP: VLAN0001 Fa0/1 -> learning
STP: VLAN0001 Fa0/1 -> forwarding
This is just normal spanning tree behavior. It walks through the listening and learning states and ends up in forwarding.
Each time I unplug the cable, spanning tree will generate a topology change notification. There’s a nice command that you can use to check how many have been sent so far:
SW1#show spanning-tree detail
VLAN0001 is executing the ieee compatible Spanning Tree protocol
Bridge Identifier has priority 32768, sysid 1, address 0019.569d.5700
Configured hello time 2, max age 20, forward delay 15
Current root has priority 32769, address 0011.bb0b.3600
Root port is 26 (FastEthernet0/24), cost of root path is 19
Topology change flag not set, detected flag not set
Number of topology changes 5 last change occurred 00:02:09 ago
Times: hold 1, topology change 35, notification 2
hello 2, max age 20, forward delay 15
Timers: hello 0, topology change 0, notification 0, aging 300
As you can see, there have been five topology changes on VLAN 1. Let’s unplug the cable to the host to see what happens:
STP: VLAN0001 sent Topology Change Notice on Fa0/24
Spanning tree will send a topology change notification on the interface towards SW2, and the counter will increase:
SW1#show spanning-tree detail | include changes
Number of topology changes 6 last change occurred 00:01:12 ago
In short, whenever we unplug the cable, the switch generates a TCN. Let’s see the difference when we enable portfast…