CSMA
Nelle telecomunicazioni CSMA, (acronimo inglese di Carrier Sense Multiple Access traducibile come: protocollo ad accesso multiplo con rilevamento della portante) indica una tecnica di trasmissione dati che si basa sull'accesso multiplo tramite rilevamento della portante. È un protocollo MAC (Media Access Control), quindi posto al secondo livello del modello ISO/OSI, utilizzato nelle reti a bus per condividere tra più host la capacità della rete evitando che due dispositivi trasmettano contemporaneamente generando una collisione.
Descrizione
Il protocollo implementa la direttiva: "Ascolta prima di trasmettere. Se trovi il canale occupato aspetta e riprova più tardi secondo una modalità di ritrasmissione stabilita".
Quando un calcolatore trasmette dati sul cavo è presente un segnale elettrico chiamato portante (da non confondere con l'onda portante utilizzata nelle telecomunicazioni per la modulazione).
Sulla rete ci sono nodi multipli che possono trasmettere e ricevere in maniera concorrente (Multiple Access). Ogni dispositivo prima di avviare la trasmissione dei dati deve verificare se sul canale altri nodi stiano già trasmettendo, rilevando la portante (Carrier Sense). Se il canale è libero inizia la trasmissione, altrimenti aspetta per un tempo arbitrario prima di riprovare a trasmettere. Le diverse metodologie di attesa forniscono tre varianti di questa tecnica di attesa per la trasmissione:
- CSMA persistente (1-persistente): si controlla continuamente se il canale è libero, appena è libero si trasmette; in caso di collisione si attende un intervallo casuale prima di ritrasmettere.
- CSMA non-persistente (0-persistente): è detto non persistente perché si controlla una prima volta se il canale è libero, se non lo è si attende un intervallo casuale prima di ricontrollare il canale.
- CSMA p-persistente: viene utilizzato nei canali divisi in intervalli temporali. Una volta controllato il canale:
- Se è libero si trasmette con probabilità p o si rimanda fino all'intervallo successivo con probabilità 1-p.
- Ad ogni intervallo si itera l'operazione descritta sopra finché il canale è libero o tutto il frame è stato trasmesso.
- Se ad un certo intervallo il canale è occupato si attende un intervallo di tempo casuale e si ricomincia.
Vantaggi
Il CSMA rappresenta il protocollo più facilmente implementabile che consente l'accesso multiplo ad un canale di comunicazione condiviso tra più utenti ed allo stesso tempo anche molto efficiente/flessibile in funzione del numero di terminali cioè in termini di scalabilità della rete. Un protocollo TDMA ad esempio avrebbe lo svantaggio rispetto al CSMA di necessitare di un meccanismo di sincronizzazione nello slot temporale di competenza sia in trasmissione che in ricezione da parte delle stazioni ricetrasmittenti cioè dunque di un apparato ricetrasmittente più complesso e costoso da implementare. Un protocollo FDMA avrebbe invece lo svantaggio di richiedere un'allocazione statica di banda per ciascuna stazione trasmittente, che di per sè si esaurirebbe molto rapidamente al crescere del numero dei terminali di rete, e anch'esso la necessità di un apparato molto più complesso in ricezione per poter ricevere su tutte le bande di trasmissione. Una situazione analoga di complessità dell'apparato ricetrasttente e grossi problemi di scalabilità si avrebbero anche con il CDMA. Nel CSMA invece tutto ciò non è necessario, gli utenti possono trasmettere sull'intera banda del canale senza alcun tipo di sincronizzazione, ma col solo vincolo delle regole di accesso dettate dal protocollo stesso.
Risoluzione dei conflitti
Da solo il protocollo CSMA non è sufficiente per impedire che si verifichino conflitti. Può capitare infatti che il ritardo di propagazione del segnale sul canale faccia sì che un dispositivo non riesca ad accorgersi che un altro terminale ha già avviato la trasmissione. In questo caso entrambi trasmettono dati, che inevitabilmente interferiranno quando raggiungeranno uno stesso punto del cavo. Tale interferenza è chiamata collisione. Essa non causa alcun danno ai dispositivi, ma rende impossibile la corretta ricezione dei dati.
Nel CSMA puro il trasmettitore non è in grado quindi di rivelare le collisioni durante una trasmissione, pertanto non è in grado di sapere se la trama inviata è stata ricevuta correttamente. Se le trame sono perse con una frequenza troppo elevata si può implementare un meccanismo di riscontro da parte del ricevitore. Se il riscontro non arriva entro un certo tempo (chiamato timeout), il trasmettitore tenta una nuova trasmissione della trama collisa.
In alcune reti si può usare la tecnica Collision Detection (CD) che permette al trasmettitore di rivelare rapidamente eventuali collisioni durante la trasmissione migliorando la tecnica di CSMA classico. In questo modo il trasmettitore sa che deve interrompere la trasmissione della trama collisa e che deve ritrasmetterla senza aspettare il timeout. Perché si possa usare il protocollo CSMA/CD è necessario che:
- il trasmettitore possa ascoltare il canale su cui sta trasmettendo;
- il doppio del tempo di propagazione del segnale tra le due stazioni (RTT Round Trip time) più lontane sia inferiore al tempo di trasmissione di una trama.
Queste condizioni sono rispettate nelle reti locali (LAN) via cavo.
Se il canale non rispetta le condizioni per usare il CSMA/CD, si può comunque ridurre la frequenza delle collisioni usando tecniche come il Collision Avoidance (CA). Questo avviene, per esempio, nel canale radio, in cui il trasmettitore non può ascoltare il canale durante la trasmissione.