# CSMA/CD

In telecomunicazioni CSMA/CD (acronimo inglese di Carrier Sense Multiple Access with Collision Detection, ovvero accesso multiplo tramite rilevamento della portante con rilevamento delle collisioni) è un protocollo di accesso multiplo, evoluzione del protocollo di livello MAC CSMA, nato per la risoluzione dei conflitti di trasmissione, ovvero collisioni, dovuti al CSMA puro, presenti in un certo dominio di collisione su reti locali cablate di tipo broadcast.
In pratica, il protocollo CSMA/CD consente ad un computer di utilizzare la rete Ethernet soltanto se nessun altro elaboratore la sta già utilizzando.

## Descrizione

Il protocollo implementa la direttiva: "Ascolta prima di trasmettere e mentre trasmetti. Se mentre trasmetti rilevi collisioni, fermati, segnala a tutte le altre stazioni la collisione e riprova più tardi secondo modalità di ritrasmissione stabilite."
L'algoritmo è dunque il seguente:
* L'adattatore sistema il frame da trasmettere in un buffer;
* Se il canale è inattivo (idle), cioè non si rilevano altri pacchetti trasmessi da altre stazioni, si attende un tempo di 96 bit-time e si procede alla trasmissione, se invece è occupato (busy) si attende che il canale torni libero prima di ritrasmettere;
* Durante l'intera trasmissione l'adattatore monitora la rete (è questo il vero e proprio Collision Detection): se non riceve segnali da altri adattatori considera il frame spedito. Il segnale che valuta l'eventuale collisione o meno si ricava confrontando il segnale ricevuto con quello trasmesso: se i due differiscono è avvenuta una collisione;
* Se l'adattatore riceve, durante una trasmissione, un segnale da un altro adattatore, arresta la trasmissione e trasmette un segnale di disturbo (jamming signal) di 32 bit che avverte le altre stazioni dell'avvenuta collisione bloccandone la contemporanea trasmissione. Questo passaggio è necessario perché sulle lunghe distanze il segnale potrebbe essere attenuato a tal punto da non permettere alle altre stazioni di rilevarlo, generando quindi un'inconsapevole collisione;
* Dopo aver abortito la trasmissione le stazioni trasmittenti applicano ciascuna un algoritmo di subentro attendendo in maniera esponenziale randomizzata il tempo per la ritrasmissione (algoritmo di backoff esponenziale binario).
L'attesa esponenziale funziona in questo modo: gli adattatori di ciascuna stazione aspettano un tempo casuale entro un valore massimo d (il protocollo che usa il CSMA/CD, ad esempio Ethernet, fissa tale valore). Se si genera una nuova collisione il valore d viene raddoppiato, così fino a che questo risulti sufficientemente grande da non produrre collisioni. Questa tecnica viene chiamata recessione binaria esponenziale ed avviene perché tutti gli altri adattatori che sono contemporaneamente in attesa potrebbero simultaneamente tentare di ritrasmettere generando nuove collisioni, da cui appunto la necessità di estendere il tempo massimo di subentro.

## Condizione necessaria per il Collision Detection

Condizione necessaria per la rilevazione della collisione da parte di una stazione trasmittente è che il tempo di trasmissione $T_{t}$ cioè il tempo di immissione in rete della trama di dimensione minima sia maggiore o al più uguale al tempo massimo di andata e ritorno (RTT Round trip Time):
$\ T_{t}=L/C>=RTT=2D/V$/K
dove L è lunghezza della trama di dimensione minima, C è la velocità di trasmissione, D la lunghezza del segmento di rete e V la velocità di propagazione del segnale nel mezzo trasmissivo. Considerando che C, L e V sono quantità prefissate, questa relazione si traduce a sua volta in un limite massimo sulla lunghezza D del segmento di rete. Esplicitando infatti la relazione rispetto a D nel caso limite di uguaglianza si trova che:
$\ Dmax=(LV)/(2C)=T_{t}V/2$
In generale la distanza massima percorribile dalla trama (D) aumenta proporzionalmente con L (lunghezza della trama minima) e V (velocità di propagazione) e diminuisce proporzionalmente con C. Per cui si scopre anche che se si aumenta la velocità di trasmissione per avere prestazioni di collegamento più elevate, se si vuole mantenere immutata la lunghezza D del segmento di rete e continuare ad usufruire della tecnica di Collision Detection si dovrà necessariamente aumentare anche L. Questa condizione sul diametro massimo di una rete locale basata su CSMA/CD CD impone quindi un limite sull'estensione della rete locale stessa, ma ne favorisce a suo tempo anche più elevate velocità di trasmissione.

## Applicazioni

Il CSMA/CD era utilizzato nelle ormai obsolete varianti di Ethernet su mezzo condiviso (10BASE5, 10BASE2) e in quelle su rame che usavano gli hub. Le moderne reti Ethernet, che fanno uso di switch con connessioni full-duplex, non usano il CSMA/CD in quanto i segmenti sono isolati.