⌘ Reti domestiche

Bufferbloat e SQM: eliminare il lag quando la linea è carica

Perché videochiamate e giochi rallentano quando qualcuno scarica o carica file, come misurare il bufferbloat e come risolverlo con SQM, fq_codel e CAKE.

Capita in molte case: la connessione è veloce, lo speed test dà numeri ottimi, eppure appena qualcuno avvia un backup nel cloud o carica un video, la videochiamata dell'altro si blocca e il gioco online diventa ingiocabile. Il problema quasi mai è la banda. È la latenza sotto carico, e ha un nome preciso: bufferbloat.

Che cos'è il bufferbloat

Ogni apparato di rete ha delle code, cioè memorie dove i pacchetti aspettano il loro turno quando arrivano più velocemente di quanto possano uscire. Le code servono, ma se sono troppo grandi e gestite male si riempiono e restano piene. Un pacchetto della videochiamata finisce in fondo a una fila lunghissima di pacchetti del backup e aspetta decine o centinaia di millisecondi prima di partire.

Il punto critico è quasi sempre il collegamento più lento del percorso, cioè la linea verso il provider. In upload, soprattutto su connessioni asimmetriche, la coda si forma nel modem o nel router di casa. In download si forma spesso negli apparati del provider, dove non abbiamo controllo diretto.

Come riconoscerlo e misurarlo

Il sintomo tipico è un ping che resta basso a linea scarica e sale bruscamente appena la linea viene saturata. Per misurarlo bastano due finestre di terminale:

ping 1.1.1.1

Lascia il ping in esecuzione, poi avvia un download pesante o uno speed test. Se i tempi passano, per esempio, da 15 a 300 millisecondi, il bufferbloat è evidente. Esistono anche test online dedicati che misurano la latenza durante download e upload e assegnano un giudizio sintetico: sono comodi per confrontare la situazione prima e dopo le modifiche.

Aumento della latenza sotto carico Effetto pratico
Pochi millisecondi Nessun problema percepibile
Qualche decina di millisecondi Accettabile per quasi tutto
Oltre cento millisecondi Videochiamate a scatti, gioco online difficile
Diverse centinaia di millisecondi Navigazione lenta anche per siti leggeri

La soluzione: SQM

SQM (Smart Queue Management) è un insieme di tecniche che fanno due cose. Primo, limita volutamente la velocità in uscita dal router poco sotto la capacità reale della linea, così la coda si forma nel router, dove possiamo gestirla, e non nel modem o presso il provider. Secondo, gestisce quella coda con algoritmi intelligenti che danno spazio a tutti i flussi e la mantengono corta.

Gli algoritmi più diffusi sono due:

  • fq_codel: separa il traffico in tante piccole code, una per flusso, e scarta o segnala i pacchetti che restano in attesa troppo a lungo;
  • CAKE: evoluzione più completa, che integra limitazione di banda, equità tra dispositivi, gestione dell'overhead della linea e configurazione più semplice.

Una telefonata e un backup non si contendono più la stessa fila: la telefonata passa subito, il backup usa la banda rimanente.

Come configurarlo

SQM è disponibile su router con firmware come OpenWrt, su diverse distribuzioni per firewall e su alcuni router commerciali, a volte sotto nomi come "QoS adattivo" o "Smart Queue". Il procedimento è simile ovunque:

  1. Misura la velocità reale della linea con un cavo, in un momento tranquillo, più volte.
  2. Imposta i limiti di download e upload a circa l'85-95% dei valori misurati. Si parte prudenti e si sale per gradi.
  3. Scegli l'algoritmo: CAKE dove disponibile, altrimenti fq_codel.
  4. Indica il tipo di linea se il pannello lo chiede, così l'algoritmo calcola correttamente l'overhead per pacchetto.
  5. Ripeti il test di latenza sotto carico e regola i valori finché l'aumento resta contenuto.

Il prezzo da pagare è una piccola perdita di banda massima, che negli speed test si vede come qualche punto percentuale in meno. In cambio la rete resta reattiva anche quando è piena, che nella vita reale conta molto di più.

Limiti da conoscere

Lo shaping software richiede potenza di calcolo. Su linee molto veloci, nell'ordine di diverse centinaia di megabit o del gigabit, un router economico può non farcela e diventare esso stesso il collo di bottiglia: in quel caso la CPU del router va al massimo e la velocità crolla. Le linee con velocità variabile, come quelle radio o mobili, sono più difficili da gestire con limiti fissi, perché il valore giusto cambia durante la giornata.

Nel mio lavoro ho visto spesso famiglie cambiare provider o comprare router costosi per un problema che si risolveva con una corretta gestione delle code. Prima di spendere, misurare la latenza sotto carico è il passo più utile.

In sintesi

  • Il bufferbloat è latenza che esplode quando la linea è saturata, non mancanza di banda.
  • Si misura facendo un ping mentre un download o un upload occupa la linea.
  • SQM sposta la coda nel router e la gestisce con fq_codel o CAKE.
  • I limiti vanno impostati poco sotto la velocità reale, poi affinati con i test.
  • Su linee molto veloci serve un router con CPU adeguata.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche