CSMA/CD: spiegazione del processo
In una rete Ethernet locale tutti i partecipanti alla rete si incontrano su un mezzo di trasmissione condiviso: un cavo. Questo incontro va necessariamente regolato per evitare confusione durante il trasferimento dati, che potrebbe portare alla perdita o al danneggiamento di questi ultimi. A tale riguardo il CSMA/CD consente di eseguire un processo che organizza una corretta trasmissione dei dati.
Questa tecnica non è indicata in una WLAN. Per questo motivo è stato sviluppato un aggiornamento del processo con il protocollo CSMA/CA. Il CSMA/CD non riveste importanza nemmeno per le reti via cavo, poiché le nuove tecnologie dei cavi offrono altre possibilità. Tuttavia, tentare di comprendere anche questo vecchio procedimento può aiutare.
Che cos’è CSMA/CD? Una definizione
CSMA/CD sta per Carrier Sense Multiple Access/Collision Detection. La Collision Detection è un'estensione del protocollo CSMA. Questa definisce un processo che regola lo svolgimento della comunicazione in rete su un mezzo di trasmissione condiviso. L'estensione regola anche come procedere quando si verificano le collisioni, cioè quando due o più partecipanti tentano di inviare pacchetti di dati contemporaneamente sul mezzo di trasmissione (bus), interferendo tra loro.
Per capire come funziona il CSMA/CD, è utile analizzare le singole componenti dell’espressione:
Carrier Sense (CS): il rilevamento della portante stabilisce che tutti i partecipanti alla rete debbano verificare se il supporto è libero in quel determinato momento. Solo allora il protocollo avvia una trasmissione dei dati.
Multiple Access (MA): più partecipanti (computer provvisti di collegamento alla rete) condividono un mezzo di trasmissione.
Collision Detection (CD): il rilevamento delle collisioni è un'estensione del protocollo originale e definisce come procedere in caso di una collisione di pacchetti di dati.
Funzionamento del processo CSMA/CD
Il CSMA/CD è suddiviso in diverse fasi. Il procedimento si svolge come una normale e rispettosa conversazione di gruppo: per una buona comunicazione è necessario che tutti i partecipanti non si parlino l’uno sopra l’altro, ma che intervengano uno dopo l’altro, in modo tale da comprendere in maniera completa ed esaustiva i contributi alla discussione di ogni partecipante. Tendenzialmente nelle conversazioni ci si comporta quasi come se inconsciamente si stesse seguendo un protocollo: se uno parla, l’altro ascolta.
Quando l’interlocutore termina di parlare, aspettiamo un istante prima di prendere la parola, per assicurarci che l'interlocutore non debba aggiungere altro e che altri partecipanti non vogliano intervenire. Se dovesse capitare che iniziamo a parlare nello stesso momento di un'altra persona, allora ci interrompiamo e aspettiamo nuovamente per fare un altro tentativo.
Il CSMA/CD ha un funzionamento molto simile. In primo luogo la stazione controlla il mezzo di trasmissione. Il monitoraggio continua finché tale mezzo risulta occupato. Solo quando il supporto è libero, e resta tale per un determinato tempo (Interframe Spacing), la stazione invia un pacchetto dati. Nel frattempo il trasmettitore continua a monitorare il supporto per rilevare le collisioni di dati. Se nessun altro partecipante tenta di inviare i propri dati attraverso il supporto prima della fine della trasmissione, e quindi non si verifica alcuna collisione, la trasmissione ha successo.
Le collisioni provocano uno spostamento di corrente sul cavo. In questo modo anche le stazioni sono in grado di rilevare le collisioni.
Se invece viene rilevata una collisione, il partecipante interrompe immediatamente la trasmissione e invia un segnale di interferenza (segnale JAM), in modo che anche tutte le altre stazioni possano rilevarla. A questo punto il partecipante aspetta un intervallo di tempo casuale (Backoff) e ritenta la trasmissione dei dati. Il Backoff deve essere casuale in modo che non insorga direttamente un’ulteriore collisione. Dal momento che entrambe le stazioni selezionano un valore casuale, la probabilità che entrambe riavviino un tentativo di trasmissione nello stesso momento è bassa.
I tentativi di trasmissione vengono conteggiati. Se anche i tentativi successivi falliscono e se si raggiunge il massimo di tentativi possibili (16), la stazione segnala l'errore al livello della rete immediatamente superiore e interrompe definitivamente la trasmissione. Poiché è molto improbabile che un partecipante raggiunga il massimo dei tentativi durante un normale processo, si può presumere, in tal caso, un errore di sistema.
L’algoritmo di Backoff esponenziale binario, relativo al meccanismo di risoluzione della congestione del traffico Ethernet, viene utilizzato per disinnescare le collisioni permanenti. Prima che questo possa fare un nuovo tentativo dopo una collisione, il partecipante deve attendere un intervallo di tempo. Tale intervallo è sempre un multiplo casuale del cosiddetto slot time. Lo slot time dipende dalla velocità di trasmissione e dura pochi microsecondi. Il tempo tra i multipli possibili raddoppia a ogni tentativo fallito, cosicché la probabilità di una trasmissione simultanea diventi esponenzialmente più bassa.
Le collisioni
Per rilevare una collisione la stazione verifica contemporaneamente che il segnale trasmesso sia identico a quello del mezzo di trasmissione. Se non è questo il caso, significa che c’è un'altra stazione che trasmette simultaneamente, alterando il segnale sul bus. Queste collisioni si verificano regolarmente e fanno parte del normale funzionamento di una Local Area Network (LAN). All’aumentare delle dimensioni della rete, però, aumenta anche la probabilità di collisioni. In questo caso la dimensione si riferisce non solo al numero di partecipanti, ma anche alla lunghezza dei percorsi di trasmissione.
Nel caso di linee lunghe può capitare più frequentemente che un partecipante invii un segnale senza che questo riesca a essere rilevato da un altro partecipante. Ciò comporta un maggior numero di collisioni e rallenta la rete in generale.
Che cos'è un dominio di collisione?
Un dominio di collisione è l'area di una rete in cui i partecipanti condividono un mezzo di trasmissione. I partecipanti ricevono l'accesso tramite il protocollo CSMA/CD. Tuttavia il dominio di collisione non può superare una certa dimensione: se le reti vengono ingrandite arbitrariamente, il processo di collisione potrebbe non risultare efficace. Questo è dovuto alla velocità di trasmissione e al percorso da seguire.
I protocolli di rete possono essere suddivisi in sette livelli astratti secondo il modello OSI. Il livello più alto, ovvero il livello di applicazione (Application Layer), fornisce i servizi per i processi delle applicazioni, consentendo agli utenti anche l'immissione e la restituzione dei dati. Seguono, tra gli altri, il livello di trasporto (dove si trova, ad esempio, TCP) e di rete (dove si trova il protocollo Internet). Il livello più basso (Physical Layer) si occupa di tradurre i bit del computer in un segnale fisico che corrisponda al mezzo di trasmissione. A questo livello si trova anche il dominio di collisione.
Affinché il CSMA/CD funzioni, i messaggi di errore devono arrivare a tutti i partecipanti del dominio di collisione entro un certo tempo: un pacchetto dati va da un'estremità del dominio all'altra e durante questo percorso può verificarsi una collisione. Il segnale corrispondente deve raggiungere la prima stazione, ancora prima che questa completi la trasmissione del pacchetto dati. In caso contrario la stazione non riconosce i dati in via di trasmissione come già danneggiati, considera la trasmissione riuscita e il pacchetto dati va perso. Questi casi sono chiamati "collisioni tardive" e portano alla perdita di dati.
Grazie a queste nozioni e alle informazioni sulla tecnologia di rete utilizzata è possibile calcolare la dimensione massima di un dominio di collisione. Ipotizziamo una classica rete Ethernet half-duplex; questa ha una velocità di trasmissione dati di 10 Mbit/s. Il pacchetto dati più piccolo, che di conseguenza richiede il tempo più breve per una trasmissione completa ed è quindi il caso più estremo con la sua dimensione di 512 Bit (64 Byte). Ne risulta uno slot time di 51,2 μs (microsecondi). Lo slot time descrive il tempo che un segnale può impiegare per giungere all’estremità del dominio di collisione e tornare indietro.
I dati in rete, però, non vengono inviati nel vuoto alla velocità della luce. Sono vincolati alle condizioni fisiche del mezzo di trasmissione. Grazie al calcolo della “Nominal Velocity of Propagation” (NVP), si indica la percentuale di velocità della luce che viene raggiunta nel mezzo. I cavi a doppino intrecciato, tipici delle reti locali, hanno un valore NVP di 0,6, mentre i cavi coassiali, un po’ più datati, hanno un valore di 0,77. I dati possono, dunque, raggiungere una velocità di 180.000 km/s (60%) o circa 230.000 km/s (77%) della velocità della luce.
Tutti questi dati consentono di calcolare l'estensione massima di un dominio di collisione per garantire l'efficacia del CSMA/CD:
Velocità dei dati * Durata della trasmissione = Lunghezza massima raddoppiata
230.000 km/s * 0,0000512s = 11,776 km
Un dominio di collisione in una rete basata su cavi coassiali può quindi avere una propagazione massima di 5,89 km. Per effettuare il calcolo, bisogna considerare il percorso del segnale in entrambe le direzioni. La dimensione massima di un dominio di collisione non può essere estesa nemmeno interponendo amplificatori di segnale (ripetitori), poiché questi non hanno alcuna influenza sul processo CSMA/CD.
Come prevenire le collisioni?
In generale non è possibile evitare completamente le collisioni in sistemi half-duplex. Sono dei disturbi previsti e il CSMA/CD assicura che non causino problemi di trasmissione. Questo vale unicamente per la perdita di dati. La velocità di trasmissione, invece, diminuisce a causa di molte collisioni. Come si verificano tante collisioni? Un numero eccessivo di partecipanti in un dominio di collisione aumenta il numero di collisioni e, quindi, il numero di rallentamenti. Nei casi più gravi è possibile che venga raggiunto solo il 30% della velocità effettiva.
Per evitare che ciò accada conviene formare domini di collisione più piccoli. A tal fine la rete deve essere suddivisa. A questo proposito si utilizzano switch o bridge, entrambi basati su MAC. Media Access Control funziona al secondo livello OSI (Data link Layer), consentendo una trasmissione esente da errori. È una buona idea formare delle sottoreti in modo da riunire le stazioni che devono comunicare molto tra loro. In questo modo si evita che le congestioni sui bridge vanifichino il vantaggio dato dalla velocità.
Half-duplex vs full-duplex
Nella tecnologia di rete si distingue tra half-duplex e full-duplex. Entrambi i modelli sono legati alla tecnologia utilizzata. Nel contesto delle reti o di altre tecnologie di comunicazione il duplex designa fondamentalmente le modalità di trasmissione dei dati. Il sistema half-duplex, ad esempio, consente la trasmissione in entrambe le direzioni, ma con la possibilità di usare soltanto una sola direzione alla volta. Con il full-duplex, invece, una stazione può trasmettere e ricevere simultaneamente.
Inoltre nella tecnologia di rete si usa anche la distinzione tra simplex e dual-simplex. Il primo sistema consente la trasmissione in una sola direzione alla volta. Un buon esempio è quello della radiodiffusione. Qui è possibile solo inviare e mai ricevere. Il dual-simplex, invece, corrisponde piuttosto al principio del full-duplex: sia l'invio che la ricezione sono possibili in qualsiasi momento. A differenza del full-duplex, però, ciò avviene in due direzioni diverse.
La distinzione tra half-duplex e full-duplex ha un impatto significativo sul metodo CSMA/CD: proprio perché nell’half-duplex è possibile una sola trasmissione alla volta, è necessario un metodo per evitare collisioni. Ci si può fare un’idea più chiara immaginandosi il canale di trasmissione come una strada a corsia unica. Se il traffico proviene da entrambe le direzioni allo stesso tempo, si verifica una collisione. Il full-duplex, invece, è sempre in due direzioni. Il traffico può passare in entrambe le direzioni simultaneamente. Pertanto il Carrier Sense Multiple Access/Collision Detection non è necessario nelle reti che utilizzano il full-duplex: le collisioni non possono verificarsi.
Il tipo di duplex è legato alle condizioni tecniche e in particolare ai tipi di cavi utilizzati. Le reti collegate da cavi coassiali possono funzionare solo in modalità half-duplex. Il full-duplex è stato introdotto con la diffusione dei cavi a doppino intrecciato e di fibre ottiche. Allo stesso tempo ciò significa anche che Fast Ethernet (100 Mbit/s) e Gigabit Ethernet (1 Gbit/s) vengono realizzate principalmente come reti full-duplex e CSMA/CD nella pratica ricopre un ruolo prettamente secondario.
CSMA/CD vs CSMA/CA
Oltre all'estensione di Carrier Sense Multiple Access con Collision Detection, l'accesso ai supporti può anche essere esteso con CSMA/CA. Questo è particolarmente indicato nelle connessioni senza fili. Il CSMA/CD non funziona correttamente nelle reti wireless per diversi motivi. Il problema principale è posto dalla stazione nascosta. Questo si verifica quando due stazioni non si percepiscono a vicenda, ma allo stesso tempo comunicano con una terza stazione nel mezzo, il che porta inevitabilmente a collisioni.
Il CSMA/CA, come suggerisce il nome, cerca di evitare collisioni invece di limitarsi a riconoscerle. In caso di collisione viene stabilito un protocollo corrispondente. In questo senso il CSMA/CA è un adattamento del CSMA/CD a un altro mezzo di trasmissione.