Un dispositivo che selettivamente crea una connessione tra un canale o
porta entrante e un canale o porta uscente. Nel mondo telefonico lo switch
s'identifica con un centralino o con una centrale telefonica, nel mondo
delle reti locali è invece un dispositivo che collega tra loro diversi
segmenti smistando selettivamente i pacchetti in transito così che vadano
unicamente al segmento di destinazione e non agli altri. In questo modo
si aumenta la banda passante di ogni singolo segmento poiché si toglie
il traffico non necessario. Lo switch è un'apparecchiatura che, alla pari
di un bridge, collega tra loro diversi segmenti logici di una rete (diversi
domini di collisione - vedi la prima parte) e che consente il passaggio
d'informazioni dall'uno all'altro, impedendo tuttavia che l'intero traffico
presente su uno di essi si riversi negli altri, e viceversa, come invece
accadrebbe se la LAN Ethernet non disponesse di alcun filtro al proprio
interno. Lo switch deve disporre almeno di due porte, anche se nelle configurazioni
più comuni ne troviamo almeno 8. La sola differenza rispetto al bridge
è che lo switch esegue tutte le proprie elaborazioni in hardware e non
via software, perciò non rallenta il fluire del traffico tra i segmenti.
In gergo tecnico si dice che la connessione sia wire speed cioè lasci
transitare i pacchetti alla velocità massima consentita dal tipo di conduttore
usato per il cablaggio. Nella realtà, un rallentamento esiste sempre,
anche se marginale, e la sua entità dipende dal modo in cui lo switch
funziona. La primissima tecnica di switching, che eredita in toto la modalità
operativa dei bridge, si chiama store-and-forward. Ogni trama che arriva
su una delle porte dello switch viene incamerata per intero in una speciale
porzione di memoria (buffer) e quindi scartata o trasferita a un altro
segmento a seconda dell'indirizzo di destinazione (MAC address) indicato
al suo interno. L'operazione è velocissima, ma comporta in ogni caso un
certo rallentamento perché la trama deve arrivare per intero nel buffer
dello switch prima di cominciare a essere ritrasmessa su un altra porta
(a cui corrisponde un altro segmento, appunto). È la tecnica di commutazione
più affidabile, poiché prima di rispedire il pacchetto ci si accerta di
averlo per intero e se ne verifica la correttezza attraverso il calcolo
del CRC (Cyclic Redundancy Check), ed è l'unica utilizzabile quando si
collegano segmenti funzionanti a velocità diverse, come Ethernet e Fast
Ethernet, per esempio. Tuttavia su impianti molto veloci, come nel caso
di una dorsale che funziona tutta a 100 Mbps o più, il numero di trame
in circolazione è molto elevato e il ritardo che si accumula per la registrazione
di ciascuna si fa sentire. L'alternativa ideata per eliminare quest'ultimo
inconveniente si chiama commutazione cut-through. La parola significa
"tagliare attraverso", "prendere una scorciatoia" e in effetti è proprio
quello che accade. Non appena lo switch comincia a ricevere una trama
su una qualsiasi delle sue porte, ne legge l'indirizzo di destinazione
e, se questo corrisponde a un segmento collegato a un'altra porta, inizia
immediatamente a trasmettere la trama senza aspettare che questa sia arrivata
per intero. In questo modo, dopo aver letto l'indirizzo, la trasmissione
in uscita avviene quasi in contemporanea con la ricezione, e il ritardo
è minimo (fino a 20 volte inferiore a quello della tecnica store-and-forward).
Benché molto efficace sotto il profilo della velocità, questa tecnica
presenta il difetto di far passare anche porcheria. Infatti vengono ritrasmesse
anche le trame difettose (troppo corte) risultanti da collisioni o da
altri problemi nel segmento di provenienza. Lo switch si limita a controllare
l'indirizzo e quindi fa passare tutto quel che segue senza controllo alcuno.
Inoltre il beneficio del sistema cut-through diminuisce quando il traffico
diventa molto intenso e continuo. In questa circostanza è facile che una
trama trovi la porta di uscita ancora occupata a trasmettere la trama
precedente e perciò deve comunque essere memorizzata per intero nel l'attesa
di essere trasmessa (si torna alla modalità store-and-forward). Tale fenomeno
è ancora più visibile con switch dotati di numerose porte visto che la
quantità di traffico complessiva che si genera al loro interno è sempre
elevata. Dal confronto di questi due approcci, ne è stato ideato un terzo,
intermedio, che si chiama fragment-free switching. Alla pari della modalità
cut-through, anche qui si aspetta di ricevere l'intera trama prima di
iniziare a trasmetterla, però ci si assicura che questa sia almeno lunga
64 byte (il minimo consentito dallo standard Ethernet) e si scarta qualsiasi
frammento di trama che abbia dimensioni inferiori. In una rete Ethernet
progettata con cura, gli unici errori ricorrenti sono le trame corte provocate
da collisioni (runt) e per definizione queste hanno una dimensione inferiore
ai 64 byte. Uno switch fragment-free è più veloce di un modello store-and-forward
e al contempo non inonda il segmento di destinazione con frammenti di
trama inutilizzabili. Il controllo, tuttavia, non è completo visto che
continuano in ogni caso a passare le trame troppo lunghe (che sono peraltro
il prodotto di malfunzionamenti sulla rete, come abbiamo visto sullo scorso
numero, e che vengono risolte sostituendo i componenti difettosi). Per
filtrare queste ultime non esiste alternativa se non quella di utilizzare
il sistema store-and-forward: si aspetta che la trama arrivi per intero,
la si misura e la si fa proseguire solo se va tutto bene. Ciascuna di
queste tre modalità offre vantaggi specifici e l'impiego dell'una piuttosto
che dell'altra è anche determinato dallo stato contingente in cui si trova
la rete: un'alta percentuale di collisioni e di errori oppure un traffico
normale. Di conseguenza gli switch più moderni ed evoluti offrono una
funzione che alcuni chiamano switching adattativo e che consiste nel monitorare
costantemente lo stato della LAN e nel passare in modo dinamico a una
delle tre modalità di commutazione che abbiamo prima visto. Questo genere
di switch consente all'amministratore di regolare le soglie di errore
oltre le quali l'apparato abbandona la modalità cut-thorugh per scendere
al sistema fragment-free oppure al sistema store-and-forward. Diventa
così possibile definire un modello di comportamento che si adatta perfettamente
al proprio impianto. Controllo di flusso e buffering Un'ultima caratteristica
di differenziazione tra i commutatori Ethernet è il modo in cui regolano
il flusso di traffico. In condizioni normali il traffico in uscita dovrebbe
stare al passo con quello in entrata, ma quando questo non avviene e le
trame in ingresso si accumulano oltre la ricettività dei buffer interni,
lo switch inizia a scartarle, il che introduce ritardi significativi sulla
rete. Infatti la stazione mittente non ha modo di sapere che sono state
scartate perciò continua a trasmettere peggiorando ancora di più la situazione
e alla fine, non ricevendo risposta, si accorge che qualcosa è andato
storto e riprende a trasmettere da capo. Alcuni switch ovviano a questo
inconveniente con buffer più capienti, però questo aggiunge ritardi di
propagazione perché, prima di essere trasmessi, i pacchetti in entrata
devono attendere che tutti quelli in attesa siano stati spediti prima
di uscire a loro volta. Un'altra soluzione consiste nell'usare il sistema
delle collisioni per costringere a rallentare la stazione che sta trasmettendo
troppo. Esistono due modi per farlo. Vediamo il più rudimentale: non appena
una porta diventa saturata di traffico lo switch manda un segnale di collisione
su tutte le altre. In tal modo si costringe l'intera rete a rallentare
fino a quando la situazione è tornata normale su quel particolare segmento.
Il metodo più avanzato è invece quello di simulare la collisione solo
su quei pacchetti che sono destinati alla porta congestionata, lasciando
le altre porte libere di trasmettere tra loro. In pratica non appena si
presenta sulla porta A una trama che deve andare sul segmento B congestionato,
lo switch "collega" le porte A e B di modo che le collisioni presenti
sull'una seconda, quella congestionata, si propaghino anche sull'altra,
quella che trasmette. In questo modo si rallenteranno le trasmissioni
solo delle macchine collegate a quest'ultima. Anche il modo in cui i buffer
interni vengono utilizzati ha la sua importanza. Il buffer può trovarsi
alla porta di entrata, alla porta di uscita oppure nel mezzo del percorso
che la trama segue all'interno dello switch. Nel primo caso si sviluppano
colli di bottiglia ogni volta che i pacchetti in entrata devono essere
trasmessi su più porte una delle quali è molto occupata. Fino a che questa
si decongestiona, anche i pacchetti destinati alla porta libera verranno
ritardati. Nel secondo caso l'impiccio nasce con la situazione inversa;
cioè ogni volta che diverse porte devono trasmettere tutte alla stessa
porta e una delle porte in entrata è molto trafficata. La porta di entrata
meno impegnata si troverà esclusa dall'accesso al buffer di uscita fino
a quando l'altra non avrà terminato di monopolizzarlo. La soluzione preferita
da alcuni è la terza, che consiste nel costruire due buffer separati per
ciascun paio di porte. In questo modo la porta A può ricevere dalla porta
B usando un buffer riservato, rispondere alla porta B usando un altro
buffer riservato e al tempo stesso dialogare con le porte C, D, eccetera
usando due buffer per ciascuna di queste (uno di andata e uno di ritorno).
Questi buffer possono essere piccoli e contenere un solo pacchetto, eliminando
così tutti gli inconvenienti legati alla presenza di pacchetti multipli
nel medesimo buffer. Differenza tra switching statico e switching dinamico
L'uso degli switch è diventato talmente popolare negli ultimi due o tre
anni che si cerca di spacciare per tali anche cose che non lo sono. Quando
si parla di switching statico oppure di port switching (sono sinonimi)
ci si riferisce in realtà a un hub (semplice ripetitore) che può accorpare
liberamente le proprie porte in segmenti autonomi, spostando a volontà
una porta da un segmento all'altro, così da ripartire il traffico. Resta
inteso che tutte le porte così "commutate" condividono la banda passante
con le altre porte dello stesso gruppo e l'unico modo in cui uno di questi
gruppi di porte può comunicare con un altro gruppo di porte dello stesso
hub è quello di collegare i due gruppi ad altrettante porte di uno switch
oppure di un router. Praticamente tutti gli hub di grandi dimensioni dispongono
della funzione di port switching: semplifica la riorganizzazione periodica
dei gruppi di lavoro senza costringere a interventi manuali: la configurazione
avviene via software. Tuttavia lo switch autentico è quello dinamico,
che si comporta come abbiamo visto prima. Tra gli switch dinamici esistono
però altre due divisioni: lo switching hub è un dispositivo che accetta
una sola macchina per porta. Benché questa sia la situazione ideale visto
che garantisce la massima larghezza di banda a ciascuna stazione, è poco
pratica poiché raramente la singola macchina riesce davvero a sfruttarla
appieno e il costo non è giustificato. I segment switch (commutatori di
segmento) accettano invece la connessione di un intero segmento a ciascuna
delle proprie porte, consentendo anche la connessione di una singola macchina
se lo si desidera. Questa soluzione è la più diffusa poiché suddivide
la rete in aree omogenee in termini di traffico, aumentandone subito la
capienza senza investimenti significativi: un semplice segment switch
con otto porte a 10 Mbps e 1 porta a 100 Mbps può fare miracoli.
|