CSMA/CA: definizione e spiegazione del procedimento
CSMA è un procedimento basilare che regola la comunicazione di più partecipanti su un mezzo trasmissivo utilizzato in comune e organizzato in modo decentralizzato. Ora è disponibile in tre diverse varianti in base al mezzo trasmissivo. Mentre il protocollo CSMA/CA si utilizza soprattutto nelle reti Wi-Fi, il CSMA/CD è sviluppato per l’Ethernet e il CSMA/CR viene usato nelle Controller Area Networks (CAN), tipico soprattutto nelle auto e nelle macchine.
Per comprendere cosa esattamente si nasconda dietro il Carrier Sense Multiple Access with Collision Avoidance è utile considerare i singoli componenti di cui si compone:
- Carrier Sense (CA): il pensiero alla base è che i partecipanti possono inviare dati attraverso la rete solo se il mezzo trasmissivo è libero. Il riconoscimento dello stato da parte della portante verifica perciò sempre ogni canale. Solo se è libero vengono inviati i dati.
- Multiple Access (MA): diverse stazioni si spartiscono un mezzo trasmissivo. In questo caso è decisivo per una comunicazione funzionante che tutti si attengano a un protocollo vincolante.
- Collision Avoidance (CA): un processo complesso tenta di garantire che due o più membri non comincino contemporaneamente una trasmissione per evitare collisioni. Se tuttavia si dovessero verificare delle sovrapposizioni, verrà rilevato e si tenterà di nuovo la trasmissione.
Che cos’è CSMA/CA e a che cosa serve?
In una Local Area Network (LAN) tutti i partecipanti della rete si spartiscono un mezzo trasmissivo, ovvero un cavo chiamato BUS. Le reti senza fili sono per loro natura senza cavi, ma anche in questo caso tutti i dispositivi coinvolti inviano e ricevono solo tramite un mezzo trasmissivo, ovvero una precisa sezione radio. Per questo il Wi-Fi (IEEE 802.11) è comparabile con le reti precedenti Ethernet half-duplex. Così anche per una rete senza fili deve esserci un protocollo che regola l’utilizzo del mezzo.
La regola più importante, che ricorre anche in altre situazioni comunicative con altri partecipanti (ad esempio una conversazione con i familiari a tavola), risulta essere: si devono sempre inviare i dati a una persona alla volta. Se tutti parlano contemporaneamente nessuno riesce a capire cosa viene detto. Anche nelle reti si possono sovrapporre gli input inviati, in questo caso sotto forma di pacchetti. Questo processo prende il nome di collisione: i pacchetti si scontrano e presentano così in una maniera diversa i loro contenuti.
CSMA/CA tenta di diminuire la frequenza di queste collisioni e propone allo stesso tempo un piano su come si debba procedere nel caso di una collisione. Il protocollo è perciò importante perché nelle reti senza fili le trasmissioni non si possono svolgere in modo ordinato, per via della tecnologia utilizzata, come succede, invece, nelle reti cablate. In una rete decentralizzata è necessario che tutti i partecipanti seguano una serie di regole e organizzino così la comunicazione tra di loro.
Il problema del terminale nascosto
Le differenze tecniche tra le reti senza fili e quelle cablate portano anche al problema del terminale nascosto. Le stazioni in una rete Wi-Fi hanno un’estensione limitata. Così può succedere che i partecipanti di una rete non si riconoscano.
È ipotizzabile (e affatto improbabile) che due stazioni che non si riconoscono vogliano raggiungere contemporaneamente una stazione che si trova sul tragitto in comune. Le trasmissioni si possono sovrapporre nei nodi dei destinatari e i dati vanno così persi. Entrambi i trasmittenti non riconoscono la collisione e non intraprendono perciò un nuovo tentativo di invio. Il protocollo CSMA/CA non può risolvere da solo questo problema, perciò è stata creata un’estensione opzionale: RTS/CTS (“Request to Send“ e “Clear to Send“).
CSMA/CA vs CSMA/CD
CSMA/CA adatta il procedimento per trattare le collisioni (CSMA/CD) che avvengono nelle reti Ethernet half-duplex alle sfide poste alle reti wireless. Il fine di CSMA/CD non è quindi quello di evitare le collisioni, al contrario il protocollo le considera scontate e stabilisce un meccanismo su come devono procedere i partecipanti della rete nel caso in cui si verificasse una collisione, per evitare che avvengano di nuovo anche nel secondo tentativo. A metterlo in atto è un intervallo di tempo casuale (backoff) che le stazioni devono attendere dopo una trasmissione non andata a buon fine, di modo che i partecipanti coinvolti non inizino di nuovo a inviare dati nello stesso momento.
Una rete senza fili non si può controllare in modo così sicuro come una rete cablata. Le collisioni possono essere causate da un secondo trasmittente che si trova oltre l’estensione del primo. Nessuno dei due ha la possibilità di rilevare il tentativo di invio dell’altro. Perciò ci si deve concentrare nel ridurre la probabilità delle collisioni. CSMA/CA procede con l’esecuzione del backoff e lo utilizza già precedentemente al primo invio. Ciò assicura che sia più improbabile che i partecipanti in una rete inizino una trasmissione contemporaneamente e quindi causino delle collisioni.
Il funzionamento di CSMA/CA
L’idea di base dietro il protocollo CSMA/CA è il principio “Listen before Talk“, ciò vuol dire che deve prima di tutto essere verificato se la linea sia libera (“idle”), prima che la stazione possa iniziare una trasmissione. Ma questo è solo il primo passo: vi sono anche altre funzioni all’interno del processo che consentono di evitare la maggior parte delle collisioni.
Distributed Coordination Function (DCF)
La Distributed Coordination Function (DCF) regola l’intervallo che attende una stazione prima che venga iniziata la trasmissione in un mezzo libero all’interno del protocollo CSMA/CA. Anche per altre operazioni DCF assegna a ciascuno dei partecipanti della rete un time slot preciso e crea così una divisione a tempo vincolante. Questo procedimento è il focus della Collision Avoidance. Tramite una struttura temporale complessa è possibile innanzitutto evitare le collisioni, di modo che la DCF consideri diversi intervalli.
- DCF Interframe Space (DIFS): nel primo passaggio i partecipanti devono controllare la rete per la durata del DIFS per stabilire se al momento è libera. Per CSMA/CA ciò significa che al momento dell’invio non ci sono altri invii da parte di altre stazioni nello stesso raggio di azione. Il DIFS deriva dal SIFS e da un time slot doppio con una lunghezza dai 28 ai 50 µs.
- Contention Window: se i partecipanti stabiliscono che il canale è libero, aspettano ancora per un intervallo di tempo casuale prima di cominciare con l’invio. Questa durata corrisponde al cosiddetto Contention Window e raddoppia a ogni collisione che si verifica; corrisponde al Binary Exponential Backoff (BEB) che si conosce da CSMA/CD.
- Short Interframe Space (SIFS): dopo l’invio dei pacchetti il nodo del destinatario invia una notifica, nel caso in cui venga utilizzato in aggiunta il procedimento RTS/CTS. Tuttavia prima dell’invio anche questa stazione aspetta un intervallo di tempo predefinito. SIFS è il tempo che serve per elaborare un pacchetto. La durata dipende dallo standard IEEE-802.11 utilizzato e si attesta tra 10 µs e 16 µs.
Il time slot indica il tempo di cui i dati hanno bisogno per attraversare la lunghezza massima della rete. Nelle reti senza fili varia a seconda dello standard utilizzato e si attesta tra i 9 µs e i 20 µs.
Request to Send e Clear to Send (RTS/CTS)
I frame Request to Send (RTS) e Clear to Send (CTS) sono parte dell’estensione opzionale CSMA/CA RTS/CTS. Questo procedimento precede la vera e propria trasmissione dei dati. Se un partecipante stabilisce che il mezzo trasmissivo è libero, il dispositivo invia prima di tutto un frame RTS al partecipante che dovrebbe essere il destinatario dei dati. In questo caso il computer di partenza rende chiaro che vorrebbe iniziare una trasmissione e occupare così il mezzo trasmissivo per un certo periodo.
Il destinatario invia a sua volta un frame CTS al trasmittente originario. In questo modo da una parte vengono informati tutti gli altri partecipanti che si trovano nella stessa estensione, com’è il caso con il frame RTS, e dall’altra il trasmittente riceve il via libera per la trasmissione. Solo allora il dispositivo originario comincia la trasmissione dei dati. Ora non è possibile per i partecipanti in una rete senza fili stabilire l’insorgenza di collisioni o altri disturbi nella trasmissione. Per questo motivo è necessario che la stazione di destinazione invii una conferma (ACK), non appena il pacchetto sarà arrivato correttamente.
Se il frame ACK non arriva, il trasmittente dei dati presume che sia sopraggiunta una complicazione e invia di nuovo il pacchetto. La stazione ha in questo caso il diritto di priorità sull’utilizzo del mezzo, non deve quindi di nuovo aspettare finché il canale sarà libero. I tre tipi di frame sono composti ciascuno da più campi.
- Frame Control: il campo FC compreso in ogni frame 802.11 è di 2 byte (16 bit) e a sua volta suddiviso in più elementi:
- Protocol Version (versione del protocollo): indica la versione del protocollo utilizzato.
- Type (tipo): indica se si tratta di un Control Frame (come per RTS/CTS e ACK), di un Data Frame o di un Management Frame.
- Sub-Type (sottotipo): specifica il tipo di frame indicando una delle 25 sottocategorie.
- To Distribution System (sistema di distribuzione di destinazione): impostato se il frame va a un sistema di distribuzione.
- From Distribution System (sistema di distribuzione di partenza): impostato se il frame arriva da un sistema di distribuzione.
- More Fragments (più frammenti): campo presente solo se seguono più frame (rilevante solo nei Data Frames e nei Management Frames).
- Retry (nuovo tentativo): indica se e con quale frequenza è già avvenuto l’invio dei frame.
- Power Management (gestione dell’alimentazione): indica la modalità risparmio.
- More Data (più dati): indica che devono essere inviati più dati.
- WEP: indica se i dati sono crittografati con WEP.
- Order (ordine): comunica al destinatario se i dati vengono inviati nella giusta sequenza.
- Duration: indica il tempo necessario al trasmittente per la trasmissione dei dati. L’informazione è decisiva per il Network Allocation Vector. Anche questo campo è di 2 byte.
- Receiver Address: comprende l’indirizzo MAC del destinatario (6 byte).
- Transmitter Address: comprende l’indirizzo MAC del mittente (6 byte); è necessario solo per RTS, non per CTS e ACK.
- Frame Check Sequence: la sequenza di verifica dei blocchi di 4 byte consiste in una checksum. In questo modo la stazione ricevente può stabilire se il Data Frame è arrivato correttamente, come pianificato. Il trasmittente calcola così le checksum dai dati del frame. Lo stesso procedimento si trova anche dalla parte del destinatario, se il frame è giunto a destinazione. Se il risultato del destinatario coincide con quello che il mittente ha allegato al frame come FCS, la trasmissione è andata a buon fine.
Fino al campo che indica il Transmitter Address sono compresi essenzialmente tutti quelli in RTS, CTS e ACK. Il campo del mittente è però interessante solo per il primo contatto, per fare in modo che il destinatario sappia con quali nodi comunica.
Tramite l’estensione del protocollo CSMA/CA con RTS/CTS è possibile ridurre le collisioni al frame RTS iniziale. Così è nonostante tutto possibile che i due partecipanti inviino contemporaneamente una Request to Send alla stessa stazione. In un caso simile il destinatario non invia però nessun frame CTS, visto che i frame RTS non sono arrivati correttamente. In questo modo RTS/CTS può risolvere il problema del terminale nascosto: anche se i due trasmittenti non si riconoscono per via dell’estensione limitata, sono solo i frame RTS a essere a rischio e non i dati veri e propri. Infine si ricorre a CSMA/CA e la trasmissione può avvenire in modo ordinato.
Con lo scambio RTS/CTS viene risolto il problema del terminale nascosto, ma l’estensione è responsabile di un’altra difficoltà: il problema della stazione esposta. La situazione è la stessa del problema del terminale nascosto: una stazione si trova in mezzo ad altre due stazioni che non si possono raggiungere. Uno dei due dispositivi vorrebbe inviare i dati alla stazione nel mezzo. Tutti i nodi raggiungibili ricevono il frame CTS che evita di iniziare un invio di dati. Ciò permette di superare il problema del terminale nascosto, ma ne crea uno nuovo.
A una terza stazione viene infatti impedito di iniziare un invio, anche se l’obiettivo sarebbe una quarta stazione. Questa trasmissione non genererebbe nessuna collisione, ma viene comunque interrotta, cosa che comporta un rallentamento dell’intera rete.
Network Allocation Vector (NAV)
Prima che un dispositivo nella rete cominci con una trasmissione, invia prima di tutto un’informazione (nel campo Duration del frame RTS) a tutti gli altri partecipanti. Così la stazione comunica per quanto tempo la rete debba rimanere riservata per la trasmissione. Ogni altro dispositivo inserisce questa informazione nel suo personale Network Allocation Vector (anche se da un punto di vista matematico non si tratta davvero di un vettore). Questo viene gestito internamente e indica quando è di nuovo possibile un tentativo di invio. Il Network Allocation Vector (NAV) conta progressivamente e viene aggiunto di nuovo dalle altre stazioni solo in presenza di nuove informazioni.
Un NAV può aumentare il timer fino a un massimo di 33 ms (32.767 µs). Questa è la durata massima per la quale un mittente può bloccare il mezzo. I dispositivi nella rete sono inattivi, mentre il Network Allocation Vector non è ancora scaduto, sprecando così meno energia. Solo quando il contatore è su 0, il partecipante è di nuovo attivo e verifica la rete. Il NAV non solo si adatta tramite RTS, ma è condizionato anche da CTS e ACK. Quest’ultimo è il segnale dato a tutti i partecipanti per reimpostare il campo di nuovo su 0: il mezzo è ora libero.
Lo svolgimento del processo CSMA/CA in sintesi
Se i partecipanti in una rete senza fili seguono le direttive del Carrier Sense Multiple Access with Collision Avoidance devono rispettare dei precisi passaggi: prima di tutto le stazioni controllano il mezzo trasmissivo. Ciò significa nel caso del Wi-Fi che il Carrier Sense controlla il canale radio e verifica così se gli altri partecipanti della rete (per quanto visibile per il rispettivo dispositivo) stanno inviando dei dati.
Se risulta che il mezzo trasmissivo è al momento riservato, viene avviato un backoff casuale: la stazione attende un intervallo di tempo casuale fino a quando non viene effettuata di nuovo una verifica. Succede lo stesso in tutte le altre stazioni che non sono al momento occupate con l’invio e la ricezione. Il tempo di attesa stabilito casualmente garantisce che i partecipanti non comincino a verificare la rete contemporaneamente e quindi non possono neanche iniziare contemporaneamente la trasmissione dei dati. Ciò succede però solo se, per via del Network Allocation Vector (NAV), alla stazione non è chiaro che il mezzo è occupato.
Se la rete dovesse essere libera, la stazione avvia la modalità DCF: prima di tutto viene verificato nuovamente il canale per la durata del DIFS. Nel caso in cui dovesse rimanere libero per questo intervallo di tempo, inizia un backoff casuale e solo dopo comincia lo scambio RTS/CTS, qualora venga utilizzato questo meccanismo aggiuntivo. Se la Request to Send è arrivata correttamente al destinatario e quindi non si verifica nessuna collisione, il mittente riceve tramite il frame CTS l’autorizzazione a riservare il mezzo trasmissivo.
Contemporaneamente tutti gli altri partecipanti vengono informati che la rete è occupata. In questo modo fissano di nuovo i loro Network Allocation Vector e aspettano fino a quando la verifica non segnalerà che il canale è di nuovo libero. Ora la stazione comincia la trasmissione. Una volta terminata, il destinatario aspetta per la durata di un SIFS e risponde poi con un frame ACK per confermare al mittente la ricezione completa e impostare il Network Allocation Vector su 0; la rete è quindi libera per una nuova trasmissione.
I vantaggi e gli svantaggi del protocollo CSMA/CA
CSMA/CA risolve alcuni problemi che si verificano nelle reti senza fili e che non possono essere risolti tramite CSMA/CD. Tuttavia il procedimento presenta anche degli svantaggi: da una parte alcuni casi non possono essere risolti interamente e dall’altra il protocollo CSMA/CA porta con sé delle nuove difficoltà.
Vantaggi | Svantaggi |
---|---|
Protegge efficacemente dalle collisioni di dati | Fissa dei tempi di attesa |
Grazie a verifiche i dati non vengono persi senza accorgersene | Provoca un traffico dati aggiuntivo |
Evita con l’estensione RTS/CTS un traffico dati inutile | Risolve il problema del terminale nascosto solo tramite l’estensione RTS/CTS |
Crea il problema della stazione esposta tramite RTS/CTS |
Che cosa sono gli accessi multipli in modo coordinato?
Visto che il procedimento CSMA/CA è ben lontano dall’essere perfetto, si pensa di ampliarlo in modo da riuscire a eliminare i punti deboli. I due procedimenti che seguono l’approccio di accessi multipli in modo coordinato sono stati ampliati, ma per diversi motivi sono utilizzati solo di rado. Gli accessi multipli in modo coordinato stabiliscono un’organizzazione centralizzata: i permessi di accesso delle singole stazioni sul mezzo trasmissivo non devono essere coordinati solo tra di loro; infatti le richieste avvengono tramite l’Access Point (ad esempio tramite il router del Wi-Fi).
Point Coordination Function
Il Point Coordination Function (PCF) viene inserito in aggiunta nel procedimento CSMA/CA e sostituisce o aggiunge la Distributed Coordination Function (DCF). L’Access Point funge da coordinatore (Point Coordinator) e si rivolge in modo mirato alle stazioni presenti nella rete. Prima che questo accada, nessuno può occupare il mezzo trasmissivo. Per la classificazione delle singole stazioni il coordinatore possiede una cosiddetta lista di polling.
In base a questa lista a ogni partecipante della rete viene richiesto di disporsi in ordine sequenziale o per priorità, nel caso in cui voglia avviare una comunicazione. Tuttavia prima che l’Access Point cominci la richiesta, come per la DCF deve trascorrere un intervallo di tempo ma solo per la lunghezza di un PIFS. Il PCF Interframe Space è un time slot più breve rispetto al DIFS e ha così una priorità maggiore. PCF ha la precedenza su DCF.
Il procedimento fornisce un approccio per risolvere il problema del terminale nascosto: grazie a un buon posizionamento dell’Access Point il necessario raggio di azione può essere dimezzato. Tramite il PCF non è più necessario che i partecipanti si rilevino. Basta che l’Access Point sia posizionato centralmente e possa raggiungere così tutte le stazioni, creando una struttura a forma di stella.
Dalla funzione Point Coordination deriva però un altro punto debole: per poter utilizzare la tecnologia, tutti i partecipanti della rete devono poter usufruire del PCF. Non è però sempre così: se i dispositivi non partecipano al procedimento PCF, vengono semplicemente ignorati insieme ai loro desideri di trasmissione. Così è stato sviluppato un sistema alternante: qui si possono alternare PCF e DCF per dare a tutti i dispositivi nella rete la possibilità di trasmissione.
Perciò l’Access Point mette a disposizione due intervalli di tempo: da una parte c’è il Contention Free Period (CFP), in cui il PCF garantisce l’accesso multiplo in modo coordinato, e dall’altra il Contention Period (CP), in cui è in uso la DCF, che evita le collisioni tramite CSMA/CA, come descritto sopra. Questa alternanza viene avviata da un beacon frame, che il coordinatore invia a tutte le stazioni.
Hybrid Coordination Function Controlled Channel Access (HCCA)
L’altro procedimento con gli accessi multipli in modo coordinato, l’HCF Controlled Channel Access, si orienta molto al procedimento PCF. Tuttavia HCCA regola diversamente il cambio tra il Contention Period e il Contention Free Period. Al posto di un sistema alternato, HCCA stabilisce la possibilità che l’Access Point possa essere sempre convertito da CP a CFP, che nell’HCCA si chiama però Controlled Access Phase (CAP). In questo periodo l’Hybrid Coordinator coordina (anche qui l’Access Point), chi può inviare i dati e quando, in base alla priorità. Il coordinatore lo comunica tramite Traffic Classes (TC), che indicano pure le stazioni. Così a diverse classi possono essere assegnate diverse priorità.
Inoltre è da considerare il fatto che nell’HCCA l’intervallo di trasmissione diventa una Transmit Opportunity (TXOP), che descrive un intervallo di tempo in cui il mittente può inviare non uno solo ma tanti frame di dati, come è possibile all’interno della fase TXOP. Se un frame dovesse essere troppo grande per un intervallo di tempo, deve essere diviso e inviato in più parti. Così si evita che le stazioni più lente rallentino quelle più veloci.
Durante il Contention Period vale invece l’Enhanced Distributed Channel Access (EDCA), che segue a sua volta una classificazione per priorità. Questo ordine non viene però organizzato in modo centralizzato, ma le stazioni partecipanti si strutturano tra di loro, in maniera analoga a quanto avviene nella DCF. I nodi che hanno l’incarico di trasmettere un traffico importante non hanno bisogno di dover aspettare un DIFS pieno, ma basterà mettere in pausa stazioni simili solo per la lunghezza dell’Arbitration Interframe Space (AIFS). Per essere precisi ci sono diversi AIFS che sono numerati in base alla priorità. Qui AIFS1 ha il livello di priorità più alto ed è perciò più piccolo del DIFS ma più lungo di un SIFS. Anche nell’EDCA è in uso il TXOP.