Spanning Tree: perché serve e come sceglie la topologia

In una rete Layer 2 con link ridondanti, i frame in broadcast circolerebbero all’infinito generando broadcast storm e instabilità delle MAC address table. Lo Spanning Tree Protocol (STP) costruisce una topologia logica ad albero senza loop, bloccando selettivamente le porte in eccesso. Su ENCOR il focus è RSTP (802.1w) e MST (802.1s), evoluzioni del legacy 802.1D.

Elezione del root bridge

Tutto parte dal root bridge, l’unico switch verso cui tutti calcolano il percorso migliore. L’elezione avviene confrontando il Bridge ID (BID), composto da:

Campo Bit Valore
Bridge Priority 4 default 32768, a step di 4096
Extended System ID 12 VLAN ID (PVST+/Rapid-PVST)
MAC Address 48 MAC dello switch

Vince il BID più basso: prima la priority, e a parità la MAC. Con l’extended system ID la priority effettiva è 32768 + VLAN. Per forzare un root si usa spanning-tree vlan X root primary (imposta priority 24576) oppure priority esplicita, sempre multiplo di 4096.

Port cost e ruoli

Ogni switch non-root elegge una root port, quella con il root path cost cumulativo minore verso il root. Il costo dipende dalla banda del link:

Velocità Cost (short/default) Cost (long)
10 Mbps 100 2.000.000
100 Mbps 19 200.000
1 Gbps 4 20.000
10 Gbps 2 2.000

A parità di costo si spareggia con il BID del vicino e poi con il port ID (priority + numero). In RSTP i ruoli sono: Root, Designated (una per segmento, verso il root), Alternate (backup della root port, in discarding) e Backup (backup di una designated sullo stesso segmento condiviso).

Stati e convergenza in RSTP

RSTP collassa i cinque stati di 802.1D in tre: Discarding, Learning, Forwarding. La convergenza rapida (sub-secondo) nasce dal meccanismo proposal/agreement sui link point-to-point full-duplex e dalla classificazione delle edge port. RSTP non attende timer come Listening/Learning: negozia esplicitamente il passaggio a Forwarding con il sync, mettendo temporaneamente in discarding le altre designated per evitare loop transitori.

Regioni MST

MST risolve lo spreco di 802.1s/PVST mappando più VLAN su poche istanze (MSTI), riducendo il numero di calcoli. Uno switch appartiene a una regione MST solo se coincidono tre attributi:

  • Region name
  • Revision number
  • Mappatura VLAN → istanza

Se anche uno solo differisce, lo switch è in un’altra regione. Internamente MST usa l’IST (istanza 0); verso l’esterno l’intera regione appare come un singolo bridge virtuale nel Common Spanning Tree, garantendo interoperabilità con RSTP legacy.

Protezioni

  • PortFast: sulle porte edge (verso host/server) porta la porta subito in Forwarding, saltando la negoziazione. Da usare solo dove non ci sono switch.
  • BPDU guard: protegge le porte edge. Se una porta PortFast riceve un BPDU, va in err-disabled (spenta). Difende dall’inserimento accidentale di uno switch su una porta access.
  • Root guard: si applica su una designated port verso segmenti dove il root non deve mai comparire (es. verso lo strato access o un partner). Se riceve un BPDU superiore, mette la porta in stato root-inconsistent (discarding), impedendo un cambio di root. Recupera automaticamente quando i BPDU superiori cessano.
  • Loop guard: complementare, protegge root/alternate port da un link unidirezionale che smette di ricevere BPDU, evitando che diventino designated e creino loop.

Trappole tipiche d’esame

  • Scenario: uno switch non autorizzato viene collegato a una porta access e “ruba” il ruolo di root → la protezione corretta è BPDU guard (o root guard se serve solo bloccare il root, non spegnere), applicata sul lato access; non loop guard.
  • Scenario: bisogna impedire che un vicino downstream diventi root ma senza disabilitare la porta → root guard, non BPDU guard: root guard blocca solo i BPDU superiori mettendo la porta root-inconsistent, e riabilita da solo.
  • Scenario: si confonde su quale porta applicare le protezioni → BPDU guard va sulle porte edge/PortFast, root guard va sulle designated verso cui il root non deve apparire. Invertirle rende inefficace la protezione.
  • Scenario: priority impostata a 8192 “non prende” → la priority deve essere multiplo di 4096; valori arbitrari vengono rifiutati.
  • Scenario: due switch non formano la stessa regione MST pur avendo stesso name → verificare revision number e mapping VLAN-istanza: devono coincidere tutti e tre gli attributi, altrimenti la regione appare come un singolo bridge esterno.