CSMA/CD
accesso multiplo a rilevazione di portante con individuazione delle collisioni (Carrier Sense Multiple Access/Collision Detection)

Nella rete Ethernet non esiste un arbitro degli accessi bensì un meccanismo in base al quale le singole stazioni di lavoro si ¤autodisciplinano", astenendosi dal trasmettere quando qualcun'altra lo sta già facendo. Tecnicamente questo sistema prende il nome di CSMA/CD (Carrier Sense Multiple Access/Collision Detection - accesso multiplo a rilevazione di portante con segnalazione di collisione). Vedi CSMA.Interpretando il significato di questa sigla si comprende anche l'anatomia del meccansimo. La prima azione che qualsiasi scheda d'interfaccia esegue prima d'iniziare a trasmettere consiste nell'ascoltare se qualcuno lo sta già facendo, ecco la rilevazione della portante. Nel caso qualcuno stia trasmettendo, sul cavo sarà presente un segnale a 20 MHz su cui viaggiano 10 Mbit per secondo (codificati con il sistema di Manchester). In caso di ¤occupato" la workstation desiste e tenta di ritrasmettere più tardi. L'accesso alla rete è multiplo, perciò tutte le stazioni hanno la stessa facolta di parlare a condizione di accertarsi prima che la linea sia libera, operazione che possono eseguire tutte in contemporanea.Supponiamo, a questo punto, che due stazioni siano pronte a trasmettere e
che abbiano trovato la linea libera. La trasmissione parte nello stesso
momento e quella della prima inevitabilmente collide con quella della
seconda provocando l'ingarbugliamento del segnale elettrico e
l'impossibilità di riconoscere i bit che vi erano contenuti. Se non
esistesse nessun sistema che segnalasse l'avvenuta collisione, le due
stazioni continuerebbero a trasmettere i rispettivi messaggi per intero,
nella convinzione che questi arriveranno a buon fine. Per questo motivo i
progettisti hanno inserito nella scheda d'interfaccia un ulteriore
circuito che rimane sempre in ascolto, anche quando la scheda medesima sta
trasmettendo, per verificare che non siano avvenute collisioni. Il
circuito in sè non è complesso, infatti tutto quel che deve verificare è
l'esistenza di valori di tensione superiori alla norma. In caso di
collisione, infatti, i segnali elettrici delle due stazioni si mescolano e
finiscono anche per sommarsi, perciò la tensione risultante che circola in
rete è maggiore. Non appena la collisione viene rilevata, le schede
d'interfaccia di entrambe le stazioni non interrompono immediatamente la
trasmissione, ma continuano a inviare bit fino a raggiungere la dimensione
minima di un pacchetto di 64 Byte.

Questo per fare in modo che anche tutte le altre macchine sulla rete si
accorgano che la collisione è in corso e che la rete è momentaneamente
bloccata. Dopo di che interrompono la trasmissione e attivano un timer di
durata casuale prima di ritentare la trasmissione. Il fatto che il timer
sia casuale impedisce che entrambe ripartano nello stesso istante,
causando una nuova collisione. Se, nonostante l'uso dei timer, la
collisione si verificasse ancora, il timer verrebbe allungato
progressivamente fino a un punto in cui il continuare delle collisioni
indicherebbe un guasto fisico sulla rete e le singole schede
d'interfaccia comunicherebbero al rispettivo computer l'impossibilità di
trasmettere.

Nella realtà le collisioni sono più frequenti di quello che a prima vista
potrebbe sembrare. Infatti, oltre al caso fortuito visto prima di due
stazioni che trasmettono esattamente nello stesso momento, esistono anche
altri casi in cui due o più macchine cercano di prendere possesso della
linea con la convinzione che sia libera, quaundo questa in realtà non lo è
e c'è già qualcun altro che ha cominciato a trasmettere.
Per capire come questo possa accadere dobbiamo parlare di tempi: alla
velocità di 10 Mbit per secondo ci vogliono 100 nanosecondi per inviare un
singolo bit. Trattandosi di un impulso elettrico che viaggia alla velocità
della luce, la propagazione non è istantanea anche se molto veloce. Si
verifica quello che in termini tecnici si chiama ¤ritardo di
propagazione". Ci vuole circa un nanosecondo per percorrere 30 centimetri
e, prima che il secondo bit sia uscito dalla scheda di rete che sta
trasmettendo, il primo bit ha circa trenta metri di vantaggio.

Le reti Ethernet hanno lunghezze di centinaia di metri perciò può
benissimo accadere che una seconda stazione, diciamo a 90 metri distanza
dalla prima, ascolti la linea nel momento in cui la prima ha iniziato a
trasmettere e la troveri comunque libera, visto che il primo bit non è
ancora arrivato fino a lei. In tal caso la seconda stazione inizierebbe la
propria trasmissione e quasi subito si troverebbe coinvolta in una
collisione. Anzi, anche una terza stazione, ancora più distante potrebbe
partire nel frattempo e provocare un vero e proprio ¤tamponamento a
catena". Questo ci fa capire per quale motivo, al crescere del numero di
stazioni presenti sulla rete, aumenti anche il numero di collisioni e ci
spiega anche perchè una rete Ethernet non possa superare una certa
lunghezza. Il problema viene ulterioremente complicato dal fatto che,
mentre la seconda e la terza stazione si accorgono della collisione quasi
immediatamente, la prima non se ne rende conto fino a quando il segnale di
collisione rimbalza indietro lungo la rete e ritorna fino a lei. Quindi si
aggiungono ulteriori tempi morti perchè, come abbiamo visto prima, bisogna
continuare a trasmettere almeno 64 Byte anche in caso di collisione, così
da far proseguire la collisione abbastanza a lungo da consentire a tutte
le stazioni coinvolte di accorgersene. La quantità di Byte da trasmettere
è legata al tempo che il segnale elettrico impiega per completare un
viaggio di andata e ritorno (round trip) sull'intera rete.

Per l'Ethernet a 10 Mbps le specifiche dicono che, qualunque sia il tipo
di cavo utilizzato, un singolo bit non deve impiegare più di 50
microsecondi per coprire l'intera lunghezza della rete nei due sensi, il
che equivale a trasmettere 500 bit, cioè 62,5 Byte, arrotondati a 64. Da
questi parametri di partenza derivano una serie di vincoli di lunghezza
del cavo, di numero massimo delle stazioni per tratta di cavo e di numero
massimo di ripetitori. Questi vincoli cambiano per i vari tipi di
Ethernet, come vedremo più avanti.

Per estendere il limite della rete oltre il valore di 50 microsecondi, per
l'andata e ritorno, è nececessario creare una seconda rete e collegarla
alla prima attraverso un dispositivo ¤ponte" (chiamato bridge) che
memorizza ogni messaggio in arrivo da una parte e lo ritrasmette alla rete
successiva solo se è destinato a questa, oppure lo scarta se si tratta di
un messaggio che deve rimanere all'interno della prima rete. Così facendo
svincoliamo le temporizzazioni della prima rete (che da punto di vista del
bridge diventa un ¤segmento") dalla temporizzazione della seconda.
Inoltre riduciamo il traffico generale e le collisioni, visto che evitiamo
il propagarsi di traffico inutile tra le due.

La velocità massima di trasmissione per una rete Ethernet classica è di 10
Mbit per secondo, ma esiste anche una versione a 1 Mbit per secondo creata
da AT&T col nome di StarLAN e usata per un certo periodo tra il 1985 e il
1987 come sistema per sfruttare il doppino telefonico per la trasmissione
dati (decaduta con l'avvento dell'Ethernet su doppino che trasmette 10
Mbps su cavo di tipo telefonico). Negli ultimi due anni, poi, ha
cominciato a diffondersi anche una versione a 100 Mbps, chiamata Fast
Ethernet.

Qualunque sia la velocità massima nominale di queste tre varianti, la
pratica ci dice che è difficile sfruttarne più del 40% quando le si
utilizza nella loro forma originale, cioè numerose macchine connesse a un
singolo percorso trasmissivo. Talvolta si arriva anche al 50 e al 60%, ma
non in modo continuativo. Oltre il 40%, infatti, le collisioni aumentano
molto rapidamente e oltre il 60% diventano predominanti. In ragione di
questo fatto Ethernet ha dovuto per anni respingere la concorrenza di
Token Ring che, in quanto priva di collisioni, riusciva con i propri 4
Mbps a far viaggiare tante informazioni di quante ne conteneva
un'Ethernet a 10 Mbps. Una Token Ring a 16 Mbps si difende meno bene
rispetto a una Fast Ethernet a 100 Mbps, ma il divario non è enorme visto
che quest'ultima, in realtà, non riesce a mettere in campo più di 40 o 60
Mbps reali quando deve servire diverse macchine contemporaneamente.

Esistono modi per ridurre l'effetto delle collisioni, a fronte di un
maggiore investimento sull'hardware, ma questi sono possibili solo con le
reti che usano il doppino oppure la fibra, perciò li vedremo più avanti.






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