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 s tessa 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.
|