PREMESSA

Normalmente il mio lavoro si colloca a "livello ISO/OSI" > 4 dato che di solito i miei compiti sono legati ai sistemi operativi, ai demoni/servizi e all'interazioni tra loro: certamente lo strato "network" è fondamentale, ma lascio volentieri ad altri tutte le rogne legate alla configurazione degli apparati di rete (così come gli altri lasciano a me le rogne dei sistemi operativi e degli applicativi). Ciò nonostante, la cooperazione con i "network guys" (preferirei lavorare con delle "network girls" ma in questo settore le donne scarseggiano...sad smile) è senza dubbio necessaria per risolvere i quotidiani problemi che affliggono le nostre reti e i nostri sistemi (e non sempre è colpa degli utenti). Per inciso: lavorare con i responsabili della rete è è MOOOOOOOOOOOOOOLTO più interessante e appagante (sentitevi liberi di aggiungere quante O volete) che non lavorare con gli sviluppatori teeth smile.

Questa premessa è necessaria per giustificare le eventuali imprecisioni (dicesi: "pararsi il culo angel smile)di quanto sto per raccontare, dato che appunto fa riferimento alla "parrocchia" del networking.

Le basi dell'STP

L'STP, per gli amici Spanning Tree Protocol, è un protocollo il cui compito è "allineare" tutti gli switch presenti in una rete. In altre parole, ogni switch, attraverso lo spanning tree, annuncia a tutti gli altri switch la sua presenza (oltre a ricevere gli annunci degli altri switches): in questo modo, ogni macchina può "ricostruire" la TOPOLOGIA di rete, ovvero sapere esattamente come sono collegati tra loro i vari switch.

L'STP è un protocollo di Livello 3 (ISO/OSI) e fa parte dell'insieme di specifiche IEEE 802.1D denominato "MAC Bridges Standards" (il termine bridge identifica proprio un dispositivo il cui compito è l'inoltro dei pacchetti/frames in una rete a commutazione di pacchetto). Sebbene l'STP si collochi allo stesso livello ISO/OSI dell'IP, non c'è alcun legame tra di loro, tant'è che l'STP può funzionare a prescindere dal protocollo "di alto livello" usato nella rete. Volendo trovare una collocazione all'STP nel modello a 4/5 strati del TCP, l'STP andrebbe sicuramente collocato al primo Layer (il Network Layer) dato che è strettamente legato alla topologia di rete impiegata (e tutti sappiamo che l'IP di base "se ne frega" del tipo di rete di trasporto utilizzata).

Uno dei motivi principali che ha portato alla nascita dell'STP è quello di evitare dei loop nella rete: tanto per capire, supponiamo di collegare tra loro due switch (detti A e B, tanto per essere fantasiosi) attraverso non un solo cavo ma due (cosa che spesso si fa per "ridondare" il collegamento fisico dato che i due cavi seguono anche percorsi fisici diversi).

stp

Supponiamo ora che A debba recapitare il pacchetto ad un client connesso allo switch B: se abbiamo appena acceso la rete, A non avrà alcun MAC address nella sua tabella (per gli amici "switch forwarding table") e non potrà far altro che "forwardare" il pacchetto su tutte le porte, comprese le due che lo collegano con B.

Trasferiamoci ora sullo switch B: il poveretto si vedrà arrivare un pacchetto, con lo stesso MAC address mittente, su due porte distinte. Peccato però che quasi sicuramente questo pacchetto non arriverà contemporaneamente su entrambe le porte (o comunque B avrà una sua coda di elaborazione dei pacchetti per cui i due pacchetti non verranno trattati insieme). Se supponiamo che anche B sia stato appena acceso (e quindi con una bella switch forwarding table linda e pulita), il poveretto non potrà far altro che "rimandare" questo pacchetto su tutte le sue porte (ad eccezione di quella da cui l'ha ricevuto).

Peccato però che una di queste porte rimandi verso A che quindi si troverà a ricevere lo stesso pacchetto che lui ha inviato. Se però ricordate bene l'inizio, A ha dovuto inviare il pacchetto su tutte le porte perchè non aveva nella sua tabella informazioni sul destinatario... E non le ha ancora, e quindi il poveretto reinvierà il pacchetto su tutte le porte (questa operazione prende anche il nome di flooding = allagamento).

Ora, sebbene l'esempio facesse riferimento alle macchine "appena accese" la stessa situazione si può ripetere non appena collegate un nuovo PC alla rete perchè il suo MAC address sarà nuovo ai due switch.

Uno dei compiti dell'STP è proprio quello di evitare che si formino dei "loop" a livello di topologia di rete, designando, tra gli n possibili percorsi che connettono i vari punti di rete, uno preferenziale ed usando soltanto quello disabilitando gli altri. In questo modo è possibile implementare una struttura mesh dove cioè esistono più percorsi tra due punti, lasciando allo spanning tree il compito di decidere quale "cavo fisico" utilizzare.

Volendo fare una analogia, l'STP è equivalente al routing IP: volendo metterli in relazione, potremmo dire che l'STP si occupa di trovare il miglior percorso fisico all'interno della stessa subnet IP, mentre il routing IP si occupa di trovare il miglior percorso fisico tra due subnet IP diverse.

Dato che ci siamo, forse conviene anche ripassare il termine broadcast domain che identifica un segmento di rete all'interno del quale due macchine possono direttamente comunicare tra di loro senza necessità di alcun dispositivo di routing (ovvero senza bisogno di nessun altro dispositivo a livello 3 ISO/OSI): nella pratica quindi un broadcast domain altro non è che la subnet IP dove è collegata la nostra macchina. Si parla di broadcast domain perchè un eventuale pacchetto/frame di broadcast (es. il classico ARP) NON esce da questo "dominio" (=confine).

L'STP è normalmente presente laddove gli switch sono di tipo "managed", mentre gli switch "unmanaged"  (che ormai si trovano a pochi euri anche al supermercato nello scaffale tra i deodoranti e la carta igenica Smiley) ne sono ovviamente privi.

I pacchetti

I pacchetti STP sono scambiati tra le macchine attraverso dei frames particolari chiamati BDPU (Bridge Protocol Data Unit) che non è infrequente vedere quando si fa un po' di sano "sniffing" di rete: si tratta di pacchetti il cui MAC address mittente è quello dello switch (gli switch managed devono avere un MAC Address!) mentre il destinatario è uno speciale indirizzo multicast sul quale tutti gli switch con STP sono in ascolto.

Tipicamente questi pacchetti vengono inviati una volta ogni due secondi: sebbene possa sembrare "eccessivo" non dobbiamo dimenticare che si tratta di frames con pochissimo overhead (ovvero spreco dovuto alle intestazioni e non al carico utile - un po' come la tara di un camion) e sono di dimensione effettivamente piccola.

ATTENZIONE: l'STP si occupa solo di scambiare informazioni relative agli switch e di capire come gli switch sono collegati tra loro! L'STP NON si occupa di scambiarsi le informazioni relative alla switch forwading table che ogni switch ha; in altre parole, lo STP si occupa dei collegamenti tra gli apparati di rete e non di quelli con i client, lasciando a ciascun switch il compito di mantenersi la propria tabella (nota: normalmente gli switch "di base" acquistati al supermercato hanno una tabella dell'ordine di 4000 voci, ben sufficienti per qualunque rete si voglia implementare senza subnetting!).

Vai alla parte 2