spanning tree algorithm
algoritmo della diramazione ad albero

I bridge devono assicurarsi che nella rete non esistano circoli viziosi e cioè che la stessa trama non continui a girare eternamente in tondo mantenendo la rete inutilmente occupata alla ricerca di un percorso per arrivare alla propria destinazione. Questo succede quando tra due reti o due segmenti esistono più percorsi possibili. Le trame continuano a propagarsi su tutti i segmenti possibili e a volte tornano indietro creando circoli viziosi. La trama esce ¤dalla porta" e rientra ¤dalla finestra" di continuo. Per intercettare queste ¤trame vagabonde" si sceglie uno tra i vari percorsi possibili e si fanno confluire su quel percorso tutte le trame indirizzate a una certa destinazione. Il percorso che viene scelto deve essere quello più corto tra tutti quelli disponibili. La decisione viene presa seguendo un algoritmo che si chiama spanning-tree (diramazione ad albero). Se il percorso originariamente scelto venisse a mancare per un difetto della rete, il bridge passerebbe al secondo così da mantenere una continuità di connessione. Il risultato finale è che la rete appare strutturata come un grande albero gerarchico senza percorsi doppi tra nessuna delle sue stazioni.L'efficacia di questo metodo è limitata alle reti locali e non funziona bene su una connessione geografica poichè comporta il continuo scambio d'informazioni tra i bridge.Supponiamo di avere un paio di bridge che uniscono gli stessi segmenti, A e B. Sul segmento A ci sono la stazione A e D sul segmento B ci sono le stazioni B e C. Quando la stazione A spedisce una trama di broadcast indirizzata a tutte le stazioni presenti in rete, comprese quelle del segmento B, la trama passa sia dal primo bridge sia dal secondo. Avendoli attraversati entrambi, giunge sull'altro segmento dove viene ricevuta due volte dalle stazioni B e C (prima come rimando da un bridge e poi come rimando dall'altro). E anche i singoli bridge la ricevono di nuovo, scambiandosela l'uno con l'altro. A quel punto i bridge ¤credono" che la stazione A si sia trasferita nel segmento B, visto che da quest'ultimo arriva una trama il cui indirizzo di provenienza riporta appunto quello della stazione B. Perciò aggiornano la propria tabella interna. Trattandosi di un broadcast, la trama viene di nuovo trasferita sull'altro segmento, cioè sul segmento A, quello di partenza. Qui sarà distribuita a tutte le macchine presenti, compresi i due bridge che a questo punto crederanno che la macchina A si sia spostata di nuovo e spediranno la trama dall'altra parte una seconda volta, proseguendo in questa maniera all'infinito oppure fino a che si verifica una collisione o qualche altro evento che interrompe il circolo vizioso. Poichè i broadcast sono abbastanza comuni, una rete di questo genere finirebbe presto saturata di traffico parassita, che non ha alcuna ragione di esistere e che impedisce al traffico normale di fluire. Può capitare che alla trama ¤impazzita" della prima macchina si aggiungano trame di broadcast generate da altre macchine e che anche queste trame continuino a girare all'infinito, moltiplicandosi. A questo punto la rete arriva praticamente a bloccarsi, sia perchè rimane completamente congestionata da questo traffico inutile sia perchè, a quel punto, i bridge avranno l'impressione che l'intera rete stia ¤migrando" in continuazione, con macchine che passano da un segmento all'altro a una velocità fenomenale. Una condizione di questo genere viene definita broadcast storm (tempesta di broadcast). E come qualsiasi tempesta che si rispetti costituisce una calamità per la rete e i suoi utenti. Un'altra possibilità di generare confusione è quella in cui la rete viene accesa per la prima volta ed esistono due bridge che collegano tra loro gli stessi segmenti, come in figura 2. Questi bridge ricevono entrambi dalla stazione A una trama destinata alla stazione B. La prima azione che compiono è quella d'inserire l'indirizzo della stazione A nella tabella interna indicandolo come appartenente al segmento A, dopodichè entrambi trasmettono la trama sull'altro segmento. Le stazioni B e C ricevono la stessa trama due volte e ne devono scartare una, sprecando tempo di trasmissione, ma allo stesso tempo la trama viene scambiata anche tra i due bridge che adesso credono che la stazione A sia sul segmento B e modificano la propria tabella interna inserendo un'informazione sbagliata. Da quel momento sarà loro impossibile recapitare trame destinate alla stazione A fino a che questa non si farà di nuovo viva con una trasmissione sul segmento A al fine di determinare un riaggiornamento della forwarding table. L'alternativa consiste nell'evitare che esistano più percorsi possibili tra due segmenti, ma questo non è sempre possibile e in certi casi, nelle reti complesse, il secondo percorso può crearsi anche incidentalmente. Inoltre, talvolta viene costruito di proposito così da garantire la massima sicurezza di connessione: quando un bridge si rompe subentra l'altro. La vera soluzione a questo problema del circuito chiuso (loop) creato da due o più bridge è stata inventata da Digital Equipment che, lo ricordiamo, ha giocato un ruolo determinante nella prima diffusione delle reti Ethernet e che ha definito un particolare metodo, chiamato algoritmo di spanning tree (diramazione ad albero), per scegliere automaticamente un percorso primario quando esistono diversi percorsi alternativi. Il metodo consiste nel raggruppare i bridge che si trovano su un certo percorso in modo che seguano una struttura gerarchica ad albero e che non esistano doppi percorsi possibili. Questo metodo è stato successivamente standardizzato e ridefinito dall'IEEE nel documento 802.1d; oggi non esiste bridge o switch che lo utilizzi. Per prevenire il diffondersi di queste ¤trame vagabonde", si sceglie uno tra i vari percorsi possibili e s'incanalano tutte le trame lungo tale percorso che deve essere il più corto tra tutti quelli disponibili. Se il percorso originariamente scelto venisse a mancare per un difetto della rete, si passa al secondo così da mantenere la continuità di connessione.Quando la rete viene accesa per la prima volta e ogni volta che si verifica una qualsiasi variazione nella disposizione delle macchine, i bridge si scambiano un particolare tipo di messaggio chiamato Bridge Protocol Data Unit (BPDU). Questo messaggio serve a stabilire quale tra essi costruirà il percorso primario (root bridge - bridge radice o ceppo per mantenere il confronto con un albero). Una volta che lo si è definito, tutti gli altri bridge bloccano le porte che collegano il segmento A al segmento B così da eliminare qualsiasi percorso alternativo. Qualsiasi trama che debba circolare tra i due segmenti attraverserà solo il root bridge. Nel caso in cui quest'ultimo si guastasse, i suoi pacchetti BPDU smetterebbero di arrivare agli altri bridge con frequenza regolare (da uno a quattro secondi) e qualcun altro prenderebbe il suo posto. Il blocco delle porte avviene in automatico secondo questa procedura: una volta scelto il root bridge si determina sugli altri bridge quale la porta è la migliore per comunicare con esso. Questa si chiamerà root port. Inoltre, nel caso di reti composte da molti segmenti, si identifica quale bridge fungerà da intermediario per raggiungere il root bridge da un segmento periferico. L'intermediario prende il nome di designated bridge. Prese queste decisioni, si disattivano tutte le porte che non siano root port (cioè indispensabili per comunicare con il root bridge) e che non servano a collegare un segmento periferico.

Glossario dei termini dell'informatica a cura di Roberto Mazzoni
Tutti i diritti riservati