STP come lo conosciamo, mantiene libero il loop di rete, ma a quale costo? Il costo esatto per te e per me è di 50 secondi! Questo è un tempo molto lungo in termini di networking. Per quasi un minuto i dati non possono fluire attraverso la rete. Nella maggior parte dei casi questo è un problema critico, soprattutto per importanti servizi di rete.
Per affrontare questo problema (prima della ratifica dello standard di settore), Cisco ha aggiunto le seguenti funzionalità all’implementazione STP sui suoi switch:
- PortFast, BPDUGuard e BPDUFilter
- UplinkFast
- BackboneFast
Portfast
Se hai un laptop o un server connesso a uno switchport, allora sai che:
- Non sarà necessario ascoltare i BPDU perché non è un dispositivo di livello 2
- Non creerà loop perché ha un unico collegamento alla rete di livello 2
Pertanto, è possibile disabilitare in modo sicuro Spanning Tree su tali porte. È molto importante assicurarsi che tali porte non abbiano mai un dispositivo di livello 2 abilitato STP collegato su di esse (pensa alla sicurezza delle porte!), Altrimenti è del tutto possibile un loop o un’interruzione della rete. Riceverai anche un messaggio di avviso su alcuni switch che lo informano quando abiliti portfast su uno switchport!
Quando si configura uno switchport come portfast, STP verrà disabilitato su quella porta e passerà allo stato di inoltro quando si apre e non verrà mai bloccato.
Il comando per configurare portfast è spanning-tree portfast :
SwitchA(config)#int fastEthernet0/44
SwitchA(config-if)#spanning-tree portfast
%Warning: portfast should only be enabled on ports connected to a single
host. Connecting hubs, concentrators, switches, bridges, etc… to this
interface when portfast is enabled, can cause temporary bridging loops.
Use with CAUTION
%Portfast has been configured on FastEthernet0/44 but will only
have effect when the interface is in a non-trunking mode.
Come abbiamo appreso, Portfast disabilita STP su uno switchport ma un fatto importante è che uno switchport Portfast continuerà ad ascoltare BDPU. Se qualcuno aggiunge uno switch a una porta che è stata configurata come Portfast, le conseguenze saranno imprevedibili e in alcuni casi disastrose.
Per proteggersi da questa situazione, Cisco fornisce le funzionalità BPDUGuard e BPDUFilter.
BPDUGuard
Se uno switch è collegato a una switchport configurata come Portfast, potrebbe cambiare la topologia STP senza che l’amministratore lo sappia e potrebbe persino arrestare la rete. Per evitare ciò, BPDUGuard può essere configurato sullo switchport. Con questa configurazione, se una BPDU viene ricevuta su una porta di commutazione, verrà messa in modalità di disabilitazione degli errori e un amministratore dovrà aprire la porta. Questo può essere configurato sulla porta utilizzando il comando ” spanning-tree bpduguard enable “.
BPDUFilter
Quando BPDUFilter è configurato su una porta switch che è stata configurata come Portfast, la porta perderà lo stato di Portfast se su di essa viene ricevuta una BPDU. Ciò costringerà la porta a partecipare alla convergenza STP. Questo è diverso dal comportamento visto con BPDUGuard dove la porta viene messa in una modalità disabilitata dagli errori. BPDUFilter può essere abilitato su switchport utilizzando il comando ” spanning-tree bpdufilter enable “.
UplinkFast
Per capire come UplinkFast aiuta ad accelerare la convergenza, si consideri la rete mostrata nella Figura 6-10. SwitchA è il Root Bridge nella rete.
Figura 6-10 UplinkFast
Consideriamo ora il seguente output da SwitchB
SwitchB#show spanning-tree vlan 5
VLAN0005
Spanning tree enabled protocol ieee
Root ID Priority 32773
Address 0013.c3e8.2500
Cost 19
Port 14 (FastEthernet0/14)
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Bridge ID Priority 32773 (priority 32768 sys-id-ext 5)
Address 0017.94bd.1680
Hello Time 2 sec Max Age 20 sec Forward Delay 15 sec
Aging Time 300
Interface          Role Sts Cost     Prio.Nbr Type
——————- —- — ——— ——– ——————————–
Fa0/14Â Â Â Â Â Â Â Â Â Â Â Â Â Root FWD 19Â Â Â Â Â Â Â 128.14Â Â P2p
Fa0/15Â Â Â Â Â Â Â Â Â Â Â Â Â Altn BLK 19Â Â Â Â Â Â Â 128.15Â Â P2p
 SwitchB#show spanning-tree uplinkfast
UplinkFast is disabled
Useremo i seguenti comandi di debug sullo switch.
SwitchB#debug spanning-tree event
Spanning Tree event debugging is on
SwitchB#debug spanning-tree uplinkfast
Spanning Tree uplinkfast debugging is onÂ
SwitchB#debug spanning-tree event
Spanning Tree event debugging is on
SwitchB#debug spanning-tree uplinkfast
Spanning Tree uplinkfast debugging is onÂ
Questi debug ci mostreranno eventi STP e messaggi veloci di uplink. Ora chiudiamo la porta fa0 / 14 su SwitchB che è attualmente la porta root come da output dato sopra.
SwitchB(config-if)#shutdown
*Mar 2 22:14:30.504: STP: VLAN0005 new root port Fa0/15, cost 19
*Mar 2 22:14:30.504: STP: VLAN0005 Fa0/15 -> listening
*Mar 2 22:14:30.504: STP: UFAST: removing prev root port Fa0/14 VLAN0005 port-id 800E
*Mar 2 22:14:32.420: %LINK-5-CHANGED: Interface FastEthernet0/14, changed state to administratively down
*Mar 2 22:14:32.504: STP: VLAN0005 sent Topology Change Notice on Fa0/15
*Mar 2 22:14:33.420: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/14, changed state to down
*Mar 2 22:14:45.504: STP: VLAN0005 Fa0/15 -> learning
*Mar 2 22:15:00.504: STP: VLAN0005 Fa0/15 -> forwardingÂ
Notare che il tempo impiegato da fa0 / 15 per passare allo stato di inoltro è di 30 secondi. Questo è più veloce dei 50 secondi previsti perché i tempi di ascolto e apprendimento erano brevi in ​​questo collegamento P2P tra switch e nessun altro host / switch è collegato qui.
Abilitare UplinkFast su SwitchB e ripetere il processo:
SwitchB(config)#spanning-tree uplinkfast
SwitchB#show spanning-tree vlan 5
–output truncated–
Uplinkfast enabled
Interface Role Sts Cost Prio.Nbr Type
——————- —- — ——— ——– ——————————–
Fa0/14 Root FWD 3019 128.14 P2p
Fa0/15 Altn BLK 3019 128.15 P2p
SwitchB(config)#int fa0/14
SwitchB(config-if)#shutdown
*Mar 2 22:28:23.300: STP: VLAN0005 new root port Fa0/15, cost 3019
*Mar 2 22:28:23.300: STP FAST: UPLINKFAST: make_forwarding on VLAN0005 FastEthernet0/15 root port id new: 128.15 prev: 128.14
*Mar 2 22:28:23.300: %SPANTREE_FAST-7-PORT_FWD_UPLINK: VLAN0005 FastEthernet0/15 moved to Forwarding (UplinkFast).
*Mar 2 22:28:23.300: STP: UFAST: removing prev root port Fa0/14 VLAN0005 port-id 800E
*Mar 2 22:28:25.216: %LINK-5-CHANGED: Interface FastEthernet0/14, changed state to administratively down
*Mar 2 22:28:25.300: STP: VLAN0005 sent Topology Change Notice on Fa0/15
*Mar 2 22:28:26.216: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/14, changed state to down
SwitchB(config-if)#do show spanning-tree vlan 5
— output truncated–
Uplinkfast enabled
Interface          Role Sts Cost     Prio.Nbr Type
——————- —- — ——— ——– ——————————–
Fa0/15Â Â Â Â Â Â Â Â Â Â Â Â Â Root FWD 3019Â Â Â Â Â 128.15Â Â P2p
Notare che il tempo impiegato da fa0 / 15 per passare all’inoltro è inferiore a un secondo! Da 30 secondi di inattività a meno di un secondo con UplinkFast abilitato. Ora che hai visto la differenza che fa, definiamo cosa fa esattamente.
Se uno switch ha più collegamenti verso il bridge root, UplinkFast contrassegna il collegamento ridondante come porta alternativa e lo richiama rapidamente nel caso in cui la porta root non funzioni. Ciò è possibile perché le porte bloccate continuano ad ascoltare BDPU.
Cisco consiglia di prestare attenzione quando si utilizza UplinkFast. Dovresti abilitarlo solo sugli switch che hanno porte bloccate.
BackboneFast
UplinkFast funziona trovando porte alternative per collegamenti connessi direttamente. Allo stesso modo BackboneFast lavora per trovare un percorso alternativo quando un collegamento indiretto alla porta root si interrompe. Per capire come funziona BackboneFast, si consideri la rete mostrata nella Figura 6-11. SwitchA è il Root Bridge qui e Fa0 / 20 su SwitchD nella porta root.
Se SwitchC perde la connessione a SwitchA, si annuncia come root bridge di SwitchD. SwitchD confronterà le informazioni note precedenti con le nuove informazioni e apprenderà che SwitchC ha perso la connessione con SwitchA. Poiché il nuovo BPDU afferma che uno switch designato (SwitchC) è ora il bridge root, questo BDPU è noto come BDPU inferiore.
Alla fine SwitchD riceverà una BDPU da SwitchB che dichiara che SwitchA è ancora il Root Bridge e SwitchD ora segnerà fa0 / 17 come porta root invece di fa0 / 20. Questo perché le informazioni da SwitchB corrispondono alle informazioni esistenti su SwitchD. BackboneFast garantisce un rapido failover non appena viene ricevuto il BPDU inferiore. Risparmia circa 20 secondi sui 50 secondi di tempo di convergenza.
Il comando spanning-tree backbonefast può essere utilizzato nella modalità di configurazione globale per abilitare BackBoneFast come mostrato di seguito:
Switch#configure terminal
Switch(config)#spanning-tree backbonefast