RTS/CTS
In telecomunicazioni e informatica, la tecnica RTS/CTS (acronimo dell'inglese Request to Send / Clear to Send, in italiano "Richiesta di invio / Via libera all'invio") è un meccanismo opzionale di controllo del flusso utilizzato dal protocollo di accesso al mezzo CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance) nelle reti locali senza fili (WLAN), in particolare quelle basate sullo standard IEEE 802.11 (Wi-Fi).
Il suo scopo principale è mitigare il cosiddetto problema del terminale nascosto, riducendo le collisioni di trama che possono verificarsi quando due nodi non si "sentono" a vicenda ma trasmettono verso lo stesso destinatario.
Funzionamento
Il meccanismo si basa sullo scambio di due brevi messaggi di controllo, detti frame, prima dell'invio effettivo dei dati. Questa procedura avviene nell'ambito della Distributed Coordination Function (DCF).
- RTS (Request to Send): Quando un nodo sorgente (es. uno smartphone o un laptop) desidera trasmettere un pacchetto dati e il canale risulta libero, invia prima un frame RTS al nodo di destinazione (solitamente un Access point o un altro client in modalità ad-hoc). All'interno del frame RTS è incluso un campo "duration" (durata), che specifica il tempo necessario per trasmettere il pacchetto dati successivo e ricevere il relativo ACK (acknowledgement).
- CTS (Clear to Send): Se il nodo di destinazione riceve correttamente l'RTS e il mezzo è libero nelle sue vicinanze, risponde dopo un breve intervallo (SIFS - Short Interframe Space) con un frame CTS. Anche il CTS contiene un campo "duration", copiato dal tempo rimanente dichiarato nell'RTS. Sebbene il CTS sia indirizzato al mittente, viene ascoltato da tutti i nodi nel raggio di copertura del destinatario.
- NAV (Network Allocation Vector): Tutti gli altri nodi che ricevono l'RTS o il CTS leggono il campo "duration" e impostano il loro vettore di allocazione di rete (NAV). Il NAV agisce come un meccanismo di rilevamento virtuale della portante: dice ai nodi per quanto tempo il canale sarà occupato, obbligandoli a rimandare qualsiasi tentativo di trasmissione fino allo scadere del timer, anche se rilevano fisicamente il canale come libero.
- Trasmissione Dati e ACK: Una volta ricevuto il CTS, il nodo sorgente trasmette il pacchetto dati. Se la trasmissione ha successo, il destinatario risponde con un frame di conferma (ACK).
Risoluzione del problema del terminale nascosto
Il problema del terminale nascosto si verifica quando un nodo A e un nodo C vogliono comunicare con un nodo B (l'Access Point), ma A e C sono troppo distanti tra loro per rilevare le rispettive trasmissioni. Senza RTS/CTS, se A sta trasmettendo a B, C non se ne accorge e potrebbe iniziare a trasmettere a sua volta, causando una collisione presso B e la perdita di entrambi i pacchetti.
Con il meccanismo RTS/CTS:
- Il nodo A invia un RTS a B.
- Il nodo B risponde con un CTS.
- Poiché il nodo C si trova nel raggio di copertura di B, riceve il frame CTS.
- Il CTS informa C che B sta per ricevere dati da A; di conseguenza, C imposta il suo NAV e attende, evitando la collisione.
Soglia RTS (RTS Threshold)
Nonostante i benefici, l'invio di frame RTS e CTS introduce un overhead (sovraccarico) che consuma larghezza di banda e aumenta la latenza. Per pacchetti di piccole dimensioni, il costo temporale dello scambio RTS/CTS potrebbe superare il tempo necessario a ritrasmettere il pacchetto in caso di collisione.
Per questo motivo, lo standard e la maggior parte dei dispositivi di rete permettono di configurare una Soglia RTS (RTS Threshold):
- Sotto la soglia: Per pacchetti dati con dimensione (in byte) inferiore alla soglia, il meccanismo RTS/CTS non viene utilizzato e si procede con l'accesso CSMA/CA standard.
- *Sopra la soglia: Per pacchetti più grandi della soglia, viene attivato lo scambio RTS/CTS.
Il valore di default è spesso impostato al massimo (es. 2347 byte), disabilitando di fatto la funzione a meno che non venga configurata manualmente in ambienti ad alta densità di nodi o con forti interferenze.
Vantaggi e Svantaggi
- Vantaggi
- Riduzione delle collisioni: Fondamentale in reti con molti client sparsi che non si vedono tra loro.
- Protezione dei frame lunghi: Evita di dover ritrasmettere pacchetti dati molto grandi (costosi in termini di tempo) a causa di collisioni, "prenotando" il canale in anticipo.
- Svantaggi
- Overhead: L'aggiunta di due frame extra per ogni trasmissione dati riduce il throughput (velocità effettiva) totale della rete se non vi sono terminali nascosti.
- Problema del terminale esposto: L'uso di RTS/CTS può aggravare il problema del terminale esposto. Un nodo vicino al mittente (che sente l'RTS) ma lontano dal destinatario potrebbe inibirsi inutilmente, aspettando che il canale si liberi anche se la sua trasmissione verso un altro destinatario non avrebbe causato interferenze.