In una rete Ethernet locale tutti i par­te­ci­pan­ti alla rete si in­con­tra­no su un mezzo di tra­smis­sio­ne condiviso: un cavo. Questo incontro va ne­ces­sa­ria­men­te regolato per evitare con­fu­sio­ne durante il tra­sfe­ri­men­to dati, che potrebbe portare alla perdita o al dan­neg­gia­men­to di questi ultimi. A tale riguardo il CSMA/CD consente di eseguire un processo che organizza una corretta tra­smis­sio­ne dei dati.

Questa tecnica non è indicata in una WLAN. Per questo motivo è stato svi­lup­pa­to un ag­gior­na­men­to del processo con il pro­to­col­lo CSMA/CA. Il CSMA/CD non riveste im­por­tan­za nemmeno per le reti via cavo, poiché le nuove tec­no­lo­gie dei cavi offrono altre pos­si­bi­li­tà. Tuttavia, tentare di com­pren­de­re anche questo vecchio pro­ce­di­men­to può aiutare.

Che cos’è CSMA/CD? Una de­fi­ni­zio­ne

CSMA/CD sta per Carrier Sense Multiple Access/Collision Detection. La Collision Detection è un'e­sten­sio­ne del pro­to­col­lo CSMA. Questa definisce un processo che regola lo svol­gi­men­to della co­mu­ni­ca­zio­ne in rete su un mezzo di tra­smis­sio­ne condiviso. L'e­sten­sio­ne regola anche come procedere quando si ve­ri­fi­ca­no le col­li­sio­ni, cioè quando due o più par­te­ci­pan­ti tentano di inviare pacchetti di dati con­tem­po­ra­nea­men­te sul mezzo di tra­smis­sio­ne (bus), in­ter­fe­ren­do tra loro.

De­fi­ni­zio­ne

Per capire come funziona il CSMA/CD, è utile ana­liz­za­re le singole com­po­nen­ti dell’espres­sio­ne:

Carrier Sense (CS): il ri­le­va­men­to della portante sta­bi­li­sce che tutti i par­te­ci­pan­ti alla rete debbano ve­ri­fi­ca­re se il supporto è libero in quel de­ter­mi­na­to momento. Solo allora il pro­to­col­lo avvia una tra­smis­sio­ne dei dati.

Multiple Access (MA): più par­te­ci­pan­ti (computer provvisti di col­le­ga­men­to alla rete) con­di­vi­do­no un mezzo di tra­smis­sio­ne.

Collision Detection (CD): il ri­le­va­men­to delle col­li­sio­ni è un'e­sten­sio­ne del pro­to­col­lo originale e definisce come procedere in caso di una col­li­sio­ne di pacchetti di dati.

Fun­zio­na­men­to del processo CSMA/CD

Il CSMA/CD è suddiviso in diverse fasi. Il pro­ce­di­men­to si svolge come una normale e ri­spet­to­sa con­ver­sa­zio­ne di gruppo: per una buona co­mu­ni­ca­zio­ne è ne­ces­sa­rio che tutti i par­te­ci­pan­ti non si parlino l’uno sopra l’altro, ma che in­ter­ven­ga­no uno dopo l’altro, in modo tale da com­pren­de­re in maniera completa ed esaustiva i con­tri­bu­ti alla di­scus­sio­ne di ogni par­te­ci­pan­te. Ten­den­zial­men­te nelle con­ver­sa­zio­ni ci si comporta quasi come se in­con­scia­men­te si stesse seguendo un pro­to­col­lo: se uno parla, l’altro ascolta.

Quando l’in­ter­lo­cu­to­re termina di parlare, aspet­tia­mo un istante prima di prendere la parola, per as­si­cu­rar­ci che l'in­ter­lo­cu­to­re non debba ag­giun­ge­re altro e che altri par­te­ci­pan­ti non vogliano in­ter­ve­ni­re. Se dovesse capitare che iniziamo a parlare nello stesso momento di un'altra persona, allora ci in­ter­rom­pia­mo e aspet­tia­mo nuo­va­men­te per fare un altro tentativo.

Il CSMA/CD ha un fun­zio­na­men­to molto simile. In primo luogo la stazione controlla il mezzo di tra­smis­sio­ne. Il mo­ni­to­rag­gio continua finché tale mezzo risulta occupato. Solo quando il supporto è libero, e resta tale per un de­ter­mi­na­to tempo (In­ter­fra­me Spacing), la stazione invia un pacchetto dati. Nel frattempo il tra­smet­ti­to­re continua a mo­ni­to­ra­re il supporto per rilevare le col­li­sio­ni di dati. Se nessun altro par­te­ci­pan­te tenta di inviare i propri dati at­tra­ver­so il supporto prima della fine della tra­smis­sio­ne, e quindi non si verifica alcuna col­li­sio­ne, la tra­smis­sio­ne ha successo.

Fatto

Le col­li­sio­ni provocano uno spo­sta­men­to di corrente sul cavo. In questo modo anche le stazioni sono in grado di rilevare le col­li­sio­ni.

Se invece viene rilevata una col­li­sio­ne, il par­te­ci­pan­te in­ter­rom­pe im­me­dia­ta­men­te la tra­smis­sio­ne e invia un segnale di in­ter­fe­ren­za (segnale JAM), in modo che anche tutte le altre stazioni possano rilevarla. A questo punto il par­te­ci­pan­te aspetta un in­ter­val­lo di tempo casuale (Backoff) e ritenta la tra­smis­sio­ne dei dati. Il Backoff deve essere casuale in modo che non insorga di­ret­ta­men­te un’ulteriore col­li­sio­ne. Dal momento che entrambe le stazioni se­le­zio­na­no un valore casuale, la pro­ba­bi­li­tà che entrambe riavviino un tentativo di tra­smis­sio­ne nello stesso momento è bassa.

I tentativi di tra­smis­sio­ne vengono con­teg­gia­ti. Se anche i tentativi suc­ces­si­vi fal­li­sco­no e se si raggiunge il massimo di tentativi possibili (16), la stazione segnala l'errore al livello della rete im­me­dia­ta­men­te superiore e in­ter­rom­pe de­fi­ni­ti­va­men­te la tra­smis­sio­ne. Poiché è molto im­pro­ba­bi­le che un par­te­ci­pan­te raggiunga il massimo dei tentativi durante un normale processo, si può presumere, in tal caso, un errore di sistema.

Fatto

L’algoritmo di Backoff espo­nen­zia­le binario, relativo al mec­ca­ni­smo di ri­so­lu­zio­ne della con­ge­stio­ne del traffico Ethernet, viene uti­liz­za­to per di­sin­ne­sca­re le col­li­sio­ni per­ma­nen­ti. Prima che questo possa fare un nuovo tentativo dopo una col­li­sio­ne, il par­te­ci­pan­te deve attendere un in­ter­val­lo di tempo. Tale in­ter­val­lo è sempre un multiplo casuale del co­sid­det­to slot time. Lo slot time dipende dalla velocità di tra­smis­sio­ne e dura pochi mi­cro­se­con­di. Il tempo tra i multipli possibili raddoppia a ogni tentativo fallito, cosicché la pro­ba­bi­li­tà di una tra­smis­sio­ne si­mul­ta­nea diventi espo­nen­zial­men­te più bassa.

Le col­li­sio­ni

Per rilevare una col­li­sio­ne la stazione verifica con­tem­po­ra­nea­men­te che il segnale trasmesso sia identico a quello del mezzo di tra­smis­sio­ne. Se non è questo il caso, significa che c’è un'altra stazione che trasmette si­mul­ta­nea­men­te, alterando il segnale sul bus. Queste col­li­sio­ni si ve­ri­fi­ca­no re­go­lar­men­te e fanno parte del normale fun­zio­na­men­to di una Local Area Network (LAN). All’aumentare delle di­men­sio­ni della rete, però, aumenta anche la pro­ba­bi­li­tà di col­li­sio­ni. In questo caso la di­men­sio­ne si riferisce non solo al numero di par­te­ci­pan­ti, ma anche alla lunghezza dei percorsi di tra­smis­sio­ne.

Nel caso di linee lunghe può capitare più fre­quen­te­men­te che un par­te­ci­pan­te invii un segnale senza che questo riesca a essere rilevato da un altro par­te­ci­pan­te. Ciò comporta un maggior numero di col­li­sio­ni e rallenta la rete in generale.

Che cos'è un dominio di col­li­sio­ne?

Un dominio di col­li­sio­ne è l'area di una rete in cui i par­te­ci­pan­ti con­di­vi­do­no un mezzo di tra­smis­sio­ne. I par­te­ci­pan­ti ricevono l'accesso tramite il pro­to­col­lo CSMA/CD. Tuttavia il dominio di col­li­sio­ne non può superare una certa di­men­sio­ne: se le reti vengono in­gran­di­te ar­bi­tra­ria­men­te, il processo di col­li­sio­ne potrebbe non risultare efficace. Questo è dovuto alla velocità di tra­smis­sio­ne e al percorso da seguire.

Fatto

I pro­to­col­li di rete possono essere suddivisi in sette livelli astratti secondo il modello OSI. Il livello più alto, ovvero il livello di ap­pli­ca­zio­ne (Ap­pli­ca­tion Layer), fornisce i servizi per i processi delle ap­pli­ca­zio­ni, con­sen­ten­do agli utenti anche l'im­mis­sio­ne e la re­sti­tu­zio­ne dei dati. Seguono, tra gli altri, il livello di trasporto (dove si trova, ad esempio, TCP) e di rete (dove si trova il pro­to­col­lo Internet). Il livello più basso (Physical Layer) si occupa di tradurre i bit del computer in un segnale fisico che cor­ri­spon­da al mezzo di tra­smis­sio­ne. A questo livello si trova anche il dominio di col­li­sio­ne.

Affinché il CSMA/CD funzioni, i messaggi di errore devono arrivare a tutti i par­te­ci­pan­ti del dominio di col­li­sio­ne entro un certo tempo: un pacchetto dati va da un'e­stre­mi­tà del dominio all'altra e durante questo percorso può ve­ri­fi­car­si una col­li­sio­ne. Il segnale cor­ri­spon­den­te deve rag­giun­ge­re la prima stazione, ancora prima che questa completi la tra­smis­sio­ne del pacchetto dati. In caso contrario la stazione non riconosce i dati in via di tra­smis­sio­ne come già dan­neg­gia­ti, considera la tra­smis­sio­ne riuscita e il pacchetto dati va perso. Questi casi sono chiamati "col­li­sio­ni tardive" e portano alla perdita di dati.

Grazie a queste nozioni e alle in­for­ma­zio­ni sulla tec­no­lo­gia di rete uti­liz­za­ta è possibile calcolare la di­men­sio­ne massima di un dominio di col­li­sio­ne. Ipo­tiz­zia­mo una classica rete Ethernet half-duplex; questa ha una velocità di tra­smis­sio­ne dati di 10 Mbit/s. Il pacchetto dati più piccolo, che di con­se­guen­za richiede il tempo più breve per una tra­smis­sio­ne completa ed è quindi il caso più estremo con la sua di­men­sio­ne di 512 Bit (64 Byte). Ne risulta uno slot time di 51,2 μs (mi­cro­se­con­di). Lo slot time descrive il tempo che un segnale può impiegare per giungere all’estremità del dominio di col­li­sio­ne e tornare indietro.

I dati in rete, però, non vengono inviati nel vuoto alla velocità della luce. Sono vincolati alle con­di­zio­ni fisiche del mezzo di tra­smis­sio­ne. Grazie al calcolo della “Nominal Velocity of Pro­pa­ga­tion” (NVP), si indica la per­cen­tua­le di velocità della luce che viene raggiunta nel mezzo. I cavi a doppino in­trec­cia­to, 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, rag­giun­ge­re una velocità di 180.000 km/s (60%) o circa 230.000 km/s (77%) della velocità della luce.

Tutti questi dati con­sen­to­no di calcolare l'e­sten­sio­ne massima di un dominio di col­li­sio­ne per garantire l'ef­fi­ca­cia del CSMA/CD:

Velocità dei dati * Durata della tra­smis­sio­ne = Lunghezza massima rad­dop­pia­ta

230.000 km/s * 0,0000512s = 11,776 km

Un dominio di col­li­sio­ne in una rete basata su cavi coassiali può quindi avere una pro­pa­ga­zio­ne massima di 5,89 km. Per ef­fet­tua­re il calcolo, bisogna con­si­de­ra­re il percorso del segnale in entrambe le direzioni. La di­men­sio­ne massima di un dominio di col­li­sio­ne non può essere estesa nemmeno in­ter­po­nen­do am­pli­fi­ca­to­ri di segnale (ri­pe­ti­to­ri), poiché questi non hanno alcuna influenza sul processo CSMA/CD.

Come prevenire le col­li­sio­ni?

In generale non è possibile evitare com­ple­ta­men­te le col­li­sio­ni in sistemi half-duplex. Sono dei disturbi previsti e il CSMA/CD assicura che non causino problemi di tra­smis­sio­ne. Questo vale uni­ca­men­te per la perdita di dati. La velocità di tra­smis­sio­ne, invece, di­mi­nui­sce a causa di molte col­li­sio­ni. Come si ve­ri­fi­ca­no tante col­li­sio­ni? Un numero eccessivo di par­te­ci­pan­ti in un dominio di col­li­sio­ne aumenta il numero di col­li­sio­ni e, quindi, il numero di ral­len­ta­men­ti. Nei casi più gravi è possibile che venga raggiunto solo il 30% della velocità effettiva.

Per evitare che ciò accada conviene formare domini di col­li­sio­ne più piccoli. A tal fine la rete deve essere suddivisa. A questo proposito si uti­liz­za­no switch o bridge, entrambi basati su MAC. Media Access Control funziona al secondo livello OSI (Data link Layer), con­sen­ten­do una tra­smis­sio­ne esente da errori. È una buona idea formare delle sottoreti in modo da riunire le stazioni che devono co­mu­ni­ca­re molto tra loro. In questo modo si evita che le con­ge­stio­ni sui bridge va­ni­fi­chi­no il vantaggio dato dalla velocità.

Half-duplex vs full-duplex

Nella tec­no­lo­gia di rete si distingue tra half-duplex e full-duplex. Entrambi i modelli sono legati alla tec­no­lo­gia uti­liz­za­ta. Nel contesto delle reti o di altre tec­no­lo­gie di co­mu­ni­ca­zio­ne il duplex designa fon­da­men­tal­men­te le modalità di tra­smis­sio­ne dei dati. Il sistema half-duplex, ad esempio, consente la tra­smis­sio­ne in entrambe le direzioni, ma con la pos­si­bi­li­tà di usare soltanto una sola direzione alla volta. Con il full-duplex, invece, una stazione può tra­smet­te­re e ricevere si­mul­ta­nea­men­te.

Inoltre nella tec­no­lo­gia di rete si usa anche la di­stin­zio­ne tra simplex e dual-simplex. Il primo sistema consente la tra­smis­sio­ne in una sola direzione alla volta. Un buon esempio è quello della ra­dio­dif­fu­sio­ne. Qui è possibile solo inviare e mai ricevere. Il dual-simplex, invece, cor­ri­spon­de piuttosto al principio del full-duplex: sia l'invio che la ricezione sono possibili in qualsiasi momento. A dif­fe­ren­za del full-duplex, però, ciò avviene in due direzioni diverse.

La di­stin­zio­ne tra half-duplex e full-duplex ha un impatto si­gni­fi­ca­ti­vo sul metodo CSMA/CD: proprio perché nell’half-duplex è possibile una sola tra­smis­sio­ne alla volta, è ne­ces­sa­rio un metodo per evitare col­li­sio­ni. Ci si può fare un’idea più chiara im­ma­gi­nan­do­si il canale di tra­smis­sio­ne come una strada a corsia unica. Se il traffico proviene da entrambe le direzioni allo stesso tempo, si verifica una col­li­sio­ne. Il full-duplex, invece, è sempre in due direzioni. Il traffico può passare in entrambe le direzioni si­mul­ta­nea­men­te. Pertanto il Carrier Sense Multiple Access/Collision Detection non è ne­ces­sa­rio nelle reti che uti­liz­za­no il full-duplex: le col­li­sio­ni non possono ve­ri­fi­car­si.

Il tipo di duplex è legato alle con­di­zio­ni tecniche e in par­ti­co­la­re ai tipi di cavi uti­liz­za­ti. Le reti collegate da cavi coassiali possono fun­zio­na­re solo in modalità half-duplex. Il full-duplex è stato in­tro­dot­to con la dif­fu­sio­ne dei cavi a doppino in­trec­cia­to e di fibre ottiche. Allo stesso tempo ciò significa anche che Fast Ethernet (100 Mbit/s) e Gigabit Ethernet (1 Gbit/s) vengono rea­liz­za­te prin­ci­pal­men­te come reti full-duplex e CSMA/CD nella pratica ricopre un ruolo pret­ta­men­te se­con­da­rio.

CSMA/CD vs CSMA/CA

Oltre al­l'e­sten­sio­ne di Carrier Sense Multiple Access con Collision Detection, l'accesso ai supporti può anche essere esteso con CSMA/CA. Questo è par­ti­co­lar­men­te indicato nelle con­nes­sio­ni senza fili. Il CSMA/CD non funziona cor­ret­ta­men­te nelle reti wireless per diversi motivi. Il problema prin­ci­pa­le è posto dalla stazione nascosta. Questo si verifica quando due stazioni non si per­ce­pi­sco­no a vicenda, ma allo stesso tempo co­mu­ni­ca­no con una terza stazione nel mezzo, il che porta ine­vi­ta­bil­men­te a col­li­sio­ni.

Il CSMA/CA, come sug­ge­ri­sce il nome, cerca di evitare col­li­sio­ni invece di limitarsi a ri­co­no­scer­le. In caso di col­li­sio­ne viene stabilito un pro­to­col­lo cor­ri­spon­den­te. In questo senso il CSMA/CA è un adat­ta­men­to del CSMA/CD a un altro mezzo di tra­smis­sio­ne.

Vai al menu prin­ci­pa­le