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 truly understand why we need portfast.
Portfast does two things for us:
• Interfaces with portfast enabled that come up 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 that are 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 take a look at the difference of 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:
SW1# 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 from FastEthernet0/1 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 5 topology changes so far on VLAN 1. Let’s unplug the cable to the host to see what happens:
SW1# 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, everytime we unplug the cable the switch will generate a TCN. Let’s see the difference when we enable portfast…