# Spanning Tree Protocol (STP)

Lo Spanning Tree Protocol (STP) è un protocollo di livello 2 progettato per creare una topologia virtuale priva di loop, mantenendo invariata la topologia fisica della rete.

In un grafo connesso, i nodi sono interconnessi tramite il massimo numero di archi, garantendo che tutti i nodi siano correttamente collegati tra loro. Con l'implementazione dello spanning tree, gli archi vengono ridotti al numero minimo necessario per mantenere la connettività tra i nodi, creando così una struttura loop-free.

## Standard IEEE 802.1D

Il protocollo STP è definito dallo standard IEEE 802.1D e opera secondo i seguenti passaggi:

1. **Elezione del Root Bridge**: tra gli switch interconnessi, viene eletto un *root bridge*, che funge da punto centrale di riferimento per la rete. Ogni switch ha un Bridge ID (BID) di 8 byte, composto da 2 byte per il campo di priorità (priority field) e 6 byte per l'indirizzo MAC. Il root bridge è scelto in base al valore più basso del campo di priorità; in caso di parità, viene selezionato lo switch con l'indirizzo MAC più basso
2. Ogni switch non root bridge calcola il percorso a minor costo per raggiungere il root bridge, garantendo che i dati seguano il percorso più efficiente.
3. **Blocco dei Link Inutilizzati**: STP identifica e disabilita i link non necessari, mantenendo attivi solo quelli essenziali per la comunicazione. I link bloccati rimangono in uno stato di standby e possono essere attivati automaticamente in caso di guasto di un link attivo, garantendo così la ridondanza e la resilienza della rete.

Grazie a questi meccanismi, STP previene la formazione di loop e assicura una comunicazione stabile e affidabile all'interno della rete.

Il comando `show spanning-tree` è utilizzato sugli switch Cisco per visualizzare informazioni dettagliate sulla configurazione e lo stato del protocollo Spanning Tree (STP) attivo. Questo comando fornisce una panoramica della topologia STP, inclusi dettagli sul root bridge, i costi dei percorsi, le porte e il loro stato (ad esempio, forwarding o blocking).
