Il protocollo STP (Spanning Tree Protocol) risolve le topologie fisicamente ridondanti in topologie senza loop e di tipo albero. Il problema più grande con STP è che alcuni guasti hardware possono causarne il malfunzionamento. Questo errore crea loop di inoltro (o loop STP). Le principali interruzioni di rete sono causate da loop STP.
Questo documento descrive la funzione loop guard STP che ha lo scopo di migliorare la stabilità delle reti di layer 2. Questo documento descrive anche il rilevamento di inclinazioni BDPU (Bridge Protocol Data Unit). Il rilevamento dello skew della BPDU è una funzione diagnostica che genera messaggi syslog quando i BPDU non vengono ricevuti in tempo.
In questo documento si presume che il lettore abbia familiarità con le operazioni di base di STP. per ulteriori informazioni sul funzionamento del protocollo STP sugli switch Catalyst, fare riferimento a Comprensione e configurazione dello Spanning Tree Protocol (STP).
Il documento può essere consultato per tutte le versioni software o hardware.
Per ulteriori informazioni sulle convenzioni usate, consultare il documento Cisco sulle convenzioni nei suggerimenti tecnici.
CatOS
La funzione STP loop guard è stata introdotta nella versione 6.2.1 del software Catalyst per le piattaforme Catalyst 4000 e Catalyst 5000 e nella versione 6.2.2 per la piattaforma Catalyst 6000.
La funzione di rilevamento dell'inclinazione della BPDU è stata introdotta nella versione 6.2.1 del software Catalyst per le piattaforme Catalyst 4000 e Catalyst 5000 e nella versione 6.2.2 per la piattaforma Catalyst 6000.
Cisco IOS®
La funzione STP loop guard è stata introdotta nel software Cisco IOS versione 12.1(12c)EW per gli switch Catalyst 4500 e nel software Cisco IOS versione 12.1(11b)EX per Catalyst 6500.
La funzione di rilevamento dell'inclinazione della BPDU non è supportata sugli switch Catalyst con software di sistema Cisco IOS.
Internamente, STP assegna a ciascuna porta bridge (o switch) un ruolo basato su configurazione, topologia, posizione relativa della porta nella topologia e altre considerazioni. Il ruolo porta definisce il comportamento della porta dal punto di vista STP. In base al ruolo della porta, la porta invia o riceve BPDU STP e inoltra o blocca il traffico di dati. Di seguito viene riportato un breve riepilogo di ciascun ruolo della porta STP:
Designato (Designated) - Viene selezionata una porta designata per ciascun collegamento (segmento). La porta designata è la porta più vicina al bridge radice. Questa porta invia pacchetti BPDU sul collegamento (segmento) e inoltra il traffico verso il bridge radice. In una rete convergente STP, ciascuna porta designata si trova nello stato di inoltro STP.
Radice (Root) - Il bridge può avere una sola porta radice. La porta radice è la porta che conduce al bridge radice. In una rete convergente STP, la porta radice si trova nello stato di inoltro STP.
Alternativo: le porte alternative conducono al bridge radice, ma non sono porte radice. Le porte alternative mantengono lo stato di blocco STP.
Backup: si tratta di un caso particolare quando due o più porte dello stesso bridge (switch) sono connesse tra loro, direttamente o tramite supporti condivisi. In questo caso, viene designata una porta e le porte rimanenti vengono bloccate. Il ruolo per questa porta è backup.
La funzione di protezione loop STP fornisce una protezione aggiuntiva contro i loop di inoltro di livello 2 (loop STP). Un loop STP viene creato quando una porta di blocco STP in una topologia ridondante passa erroneamente allo stato di inoltro. Questo in genere accade perché una delle porte di una topologia fisicamente ridondante (non necessariamente la porta di blocco STP) non riceve più BPDU STP. Nel suo funzionamento, il protocollo STP si basa sulla ricezione o trasmissione continua di BPDU in base al ruolo della porta. La porta designata trasmette i BPDU e la porta non designata riceve i BPDU.
Quando una delle porte di una topologia fisicamente ridondante non riceve più BPDU, l'STP presume che la topologia sia priva di loop. Alla fine, la porta che blocca la porta alternativa o di backup diventa designata e passa a uno stato di inoltro. Questa situazione crea un loop.
La feature di protezione loop esegue ulteriori controlli. Se i BPDU non vengono ricevuti su una porta non designata e la funzione di protezione loop è abilitata, tale porta viene spostata nello stato di blocco non coerente con il loop STP, anziché nello stato di ascolto/apprendimento/inoltro. Senza la funzione di protezione del loop, la porta assume il ruolo di porta designato. La porta si sposta sullo stato di inoltro STP e crea un loop.
Quando il controllo loop blocca una porta incoerente, viene registrato questo messaggio:
CatOS
%SPANTREE-2-LOOPGUARDBLOCK: No BPDUs were received on port 3/2 in vlan 3. Moved to loop-inconsistent state.
Cisco IOS
%SPANTREE-2-LOOPGUARD_BLOCK: Loop guard blocking port FastEthernet0/24 on VLAN0050.
Dopo aver ricevuto la BPDU su una porta in uno stato STP con loop incoerente, la porta passa a un altro stato STP. Secondo la BPDU ricevuta, questo significa che il ripristino è automatico e non è necessario alcun intervento. Dopo il ripristino, viene registrato questo messaggio:
CatOS
%SPANTREE-2-LOOPGUARDUNBLOCK: port 3/2 restored in vlan 3.
Cisco IOS
%SPANTREE-2-LOOPGUARD_UNBLOCK: Loop guard unblocking port FastEthernet0/24 on VLAN0050.
Per illustrare questo comportamento, prendere in considerazione questo esempio:
Lo switch A è lo switch radice. Lo switch C non riceve le BPDU dallo switch B a causa di un errore di collegamento unidirezionale sul collegamento tra lo switch B e lo switch C.
Senza protezione loop, la porta di blocco STP sullo switch C passa allo stato di ascolto STP quando il timer max_age scade, quindi passa allo stato di inoltro in due volte il tempo forward_delay. Questa situazione crea un loop.
Con la protezione loop abilitata, la porta di blocco sullo switch C passa in stato di loop incoerente con il protocollo STP quando il timer max_age scade. Una porta in stato di loop incoerente STP non passa il traffico utente, quindi non viene creato un loop. Lo stato di incoerenza del ciclo è in effetti uguale allo stato di blocco.
La funzione di protezione loop è abilitata per ciascuna porta. Tuttavia, finché blocca la porta a livello STP, il controllo loop blocca le porte incoerenti per singola VLAN (a causa del protocollo STP per VLAN). In altri termini, se i BPDU non vengono ricevuti sulla porta trunk per una sola VLAN specifica, solo la VLAN viene bloccata (spostata in stato STP non coerente nel loop). Per lo stesso motivo, se abilitato su un'interfaccia EtherChannel, l'intero canale viene bloccato per una VLAN specifica, non solo per un collegamento (perché EtherChannel è considerato come una porta logica dal punto di vista STP).
Su quali porte deve essere abilitato il controllo loop? La risposta più ovvia è data dal blocco delle porte. Tuttavia, non è del tutto corretto. È necessario abilitare la protezione loop sulle porte non designate (più precisamente, sulle porte radice e alternative) per tutte le possibili combinazioni di topologie attive. Finché il controllo del loop non è una funzione per VLAN, la stessa porta (trunk) può essere designata per una VLAN e non per l'altra. È inoltre opportuno tenere conto dei possibili scenari di failover.
Considerate questo esempio:
Per impostazione predefinita, la protezione loop è disattivata. Questo comando viene utilizzato per abilitare la protezione loop:
CatOS
set spantree guard loopConsole> (enable) set spantree guard loop 3/13 Enable loopguard will disable rootguard if it's currently enabled on the port(s). Do you want to continue (y/n) [n]? y Loopguard on port 3/13 is enabled.
Cisco IOS
spanning-tree guard loop Router(config)#interface gigabitEthernet 1/1 Router(config-if)#spanning-tree guard loop
Con la versione 7.1(1) del software Catalyst (CatOS), la protezione loop può essere abilitata a livello globale su tutte le porte. In effetti, la protezione loop è attivata su tutti i collegamenti point-to-point. Il collegamento point-to-point viene rilevato dallo stato duplex del collegamento. Se il duplex è pieno, il collegamento viene considerato point-to-point. È ancora possibile configurare o ignorare le impostazioni globali per ciascuna porta.
Per abilitare la protezione loop a livello globale, eseguire questo comando:
CatOS
Console> (enable) set spantree global-default loopguard enable
Cisco IOS
Router(config)#spanning-tree loopguard default
Per disabilitare la protezione loop, usare questo comando:
CatOS
Console> (enable) set spantree guard none
Cisco IOS
Router(config-if)#no spanning-tree guard loop
Per disabilitare globalmente la protezione loop, usare questo comando:
CatOS
Console> (enable) set spantree global-default loopguard disable
Cisco IOS
Router(config)#no spanning-tree loopguard default
Per verificare lo stato di protezione del loop, usare questo comando:
CatOS
show spantree guardConsole> (enable) show spantree guard 3/13 Port VLAN Port-State Guard Type ------------------------ ---- ------------- ---------- 3/13 2 forwarding loop Console> (enable)
Cisco IOS
show spanning-tree Router#show spanning-tree summary Switch is in pvst mode Root bridge for: none EtherChannel misconfig guard is enabled Extended system ID is disabled Portfast Default is disabled PortFast BPDU Guard Default is disabled Portfast BPDU Filter Default is disabled Loopguard Default is enabled UplinkFast is disabled BackboneFast is disabled Pathcost method used is short Name Blocking Listening Learning Forwarding STP Active ---------------------- -------- --------- -------- ---------- ---------- Total 0 0 0 0 0
La funzionalità Loop Guard e UDLD (Unidirectional Link Detection) si sovrappongono, in parte nel senso che entrambe proteggono dagli errori STP causati dai collegamenti unidirezionali. Tuttavia, queste due caratteristiche differiscono per funzionalità e per il modo in cui affrontano il problema. Nella tabella seguente vengono descritte le funzionalità di protezione loop e UDLD:
Funzionalità | Protezione ciclo | UDLD |
---|---|---|
Configurazione | Per porta | Per porta |
Granularità azione | Per VLAN | Per porta |
Salvataggio automatico | Sì | Sì, con la funzione di timeout di errr-disable |
Protezione da errori STP causati da collegamenti unidirezionali | Sì, se abilitata su tutte le porte principali e alternative nella topologia ridondante | Sì, se abilitato su tutti i collegamenti nella topologia ridondante |
Protezione da errori STP causati da problemi software (lo switch designato non invia BPDU) | Sì | No |
Protezione contro cavi errati. | No | Sì |
In base alle diverse considerazioni di progettazione, è possibile scegliere il protocollo UDLD o la funzione di protezione del loop. Per quanto riguarda l'STP, la differenza più evidente tra le due caratteristiche è l'assenza di protezione in UDLD dagli errori STP causati da problemi nel software. Di conseguenza, lo switch designato non invia pacchetti BPDU. Tuttavia, questo tipo di errori è (per un ordine di grandezza) più raro rispetto a quelli causati da collegamenti unidirezionali. In cambio, il protocollo UDLD potrebbe essere più flessibile nel caso di collegamenti unidirezionali su EtherChannel. In questo caso, il protocollo UDLD disabilita solo i collegamenti non riusciti e il canale deve rimanere funzionante anche dopo i collegamenti rimanenti. In questo caso, la protezione del loop lo mette in stato di loop incoerente per bloccare l'intero canale.
Inoltre, la protezione loop non funziona sui collegamenti condivisi o nelle situazioni in cui il collegamento è stato unidirezionale dopo l'attivazione del collegamento. Nell'ultimo caso, la porta non riceve mai BPDU e viene designata. Poiché questo comportamento potrebbe essere normale, questo caso particolare non è coperto da protezione in loop. Il protocollo UDLD offre protezione contro questo scenario.
Come descritto, il livello di protezione più alto viene fornito quando si abilita il protocollo UDLD e la protezione loop.
Protezione radice
La protezione root si esclude a vicenda con la protezione loop. La protezione root viene utilizzata sulle porte designate e non consente alla porta di diventare non designata. Il controllo loop funziona su porte non designate e non consente che la porta venga designata fino alla scadenza di max_age. Impossibile abilitare la protezione radice sulla stessa porta della protezione del loop. Quando il controllo loop è configurato sulla porta, disabilita il controllo radice configurato sulla stessa porta.
Uplink Fast e Backbone Fast
Sia uplink fast che backbone fast sono trasparenti alla protezione del loop. Quando max_age viene saltato dalla backbone rapidamente al momento della riconvergenza, non attiva la protezione del loop. Per ulteriori informazioni su uplink fast e backbone fast, fare riferimento a questi documenti:
Descrizione e configurazione della funzione Cisco Uplink Fast
Comprensione e configurazione di Backbone Fast sugli switch Catalyst
PortFast e BPDU Guard e VLAN dinamica
Non è possibile abilitare la protezione del loop per le porte su cui è abilitata portfast. Poiché BPDU Guard funziona sulle porte abilitate portfast, alcune restrizioni si applicano a BPDU Guard. Non è possibile abilitare la funzione di protezione in loop sulle porte VLAN dinamiche perché per queste porte è abilitata la funzione portfast.
Collegamenti condivisi
Non abilitare la protezione del ciclo nei collegamenti condivisi. Se si abilita la protezione loop sui collegamenti condivisi, il traffico proveniente dagli host connessi ai segmenti condivisi potrebbe essere bloccato.
MST (Multiple Spanning Tree)
La protezione in loop funziona correttamente nell'ambiente MST.
Rilevamento inclinazione BPDU
La protezione loop deve funzionare correttamente con il rilevamento di distorsione BPDU.
Il funzionamento dell'STP dipende in larga misura dalla ricezione tempestiva delle BPDU. Ad ogni messaggio hello_time (2 secondi per impostazione predefinita), il bridge radice invia pacchetti BPDU. I bridge non radice non rigenerano BPDU per ogni messaggio hello_time, ma ricevono BPDU inoltrati dal bridge radice. Pertanto, ciascun bridge non radice deve ricevere i BPDU su ciascuna VLAN per ciascun messaggio hello_time. In alcuni casi, le BPDU vengono perse o la CPU del bridge è troppo occupata per inoltrare le BPDU tempestivamente. Questi problemi, così come altri, possono causare ritardi nell'arrivo delle BPDU (se raggiunti). Questo problema compromette potenzialmente la stabilità della topologia Spanning Tree.
Il rilevamento dell'inclinazione della BPDU consente allo switch di tenere traccia delle BPDU che arrivano in ritardo e di informare l'amministratore con i messaggi syslog. Per ogni porta sulla quale una BPDU è arrivata in ritardo (o ha inclinato), il rilevamento di inclinazione segnala l'inclinazione più recente e la durata dell'inclinazione (latenza). Segnala anche il ritardo BPDU più lungo su questa particolare porta.
Per proteggere la CPU del bridge dall'overload, non viene generato un messaggio syslog ogni volta che si verifica uno skewing BPDU. La velocità dei messaggi è limitata a un messaggio ogni 60 secondi. Tuttavia, se il ritardo della BPDU supera il valore di max_age diviso per 2 (che per impostazione predefinita è pari a 10 secondi), il messaggio viene stampato immediatamente.
Nota: il rilevamento dell'inclinazione della BPDU è una funzione diagnostica. Quando viene rilevato un distorsione della BPDU, invia un messaggio syslog. Il rilevamento dell'inclinazione della BPDU non intraprende ulteriori azioni correttive.
Questo è un esempio di messaggio syslog generato dal rilevamento di distorsioni BPDU:
%SPANTREE-2-BPDU_SKEWING: BPDU skewed with a delay of 10 secs (max_age/2)
Il rilevamento dello skew della BPDU è configurato per ciascuno switch. L'impostazione predefinita è disattivata. Per abilitare il rilevamento dell'inclinazione della BPDU, usare questo comando:
Cat6k> (enable) set spantree bpdu-skewing enable Spantree bpdu-skewing enabled on this switch.
Per visualizzare le informazioni sull'inclinazione della BPDU, usare il comando show spantree bpdu-skewing <vlan>|<mod/porta>come mostrato nell'esempio:
Cat6k> (enable) show spantree bpdu-skewing 1 Bpdu skewing statistics for vlan 1 Port Last Skew (ms) Worst Skew (ms) Worst Skew Time -------------- --------------- --------------- ------------------------- 3/12 4000 4100 Mon Nov 19 2001, 16:36:04
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
02-Dec-2013 |
Versione iniziale |