La Trinakria.it
  Segnala errore sito
Glossario informatico
 
 
CSMA/CD
Carrier Sense Multiple Access/Collision Detection
accesso multiplo a rilevazione di portante con individuazione delle collisioni
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.

 Indietro