Google rende il suo nuovo algoritmo TCP BBR disponibile al pubblico
Google ha da poco annunciato la disponibilità su Google Cloud Platform di BBR, il suo nuovo algoritmo di controllo della congestione di rete.
Perché un nuovo algoritmo?
Quando Internet fu inventato, il principio che vigeva era che fosse tutto riducibile a una serie di circuiti e switch: man mano che un pacchetto attraversa la rete, viene di fatto passato di switch in switch.
Lo switch sceglie il prossimo “circuito” verso cui indirizzare il pacchetto avvicinandolo alla destinazione; se il circuito in questione è occupato, il pacchetto viene messo in una coda ed elaborato appena il circuito è disponibile. Se la coda è piena, il pacchetto viene scartato.
Dal momento che questo comportamento non è soddisfacente se quello che si vuole è un flusso di dati affidabile attraverso la rete, la responsabilità della gestione del flusso viene demandata a un protocollo apposito, il Transmission Control Protocol (TCP/IP).
Senza entrare troppo nel dettaglio tecnico, TCP cerca di mandare pacchetti attraverso la rete il più velocemente possibile, ma non troppo velocemente in modo da evitare congestioni.
L’assunzione di base degli algoritmi su cui si basa TCP è che il segnale di congestione di rete è la perdita di pacchetti: se non ci sono pacchetti persi, TCP continua ad aumentare la velocità di trasmissione, fino alla saturazione del canale. Appena TCP si accorge che alcuni pacchetti non riescono pià a raggiungere la destinazione, reagisce dimezzando la velocità di trasmissione, ricominciando il ciclo e dando origine ad un andamento a “dente di sega” (fig. sotto).

Ora, come spiegato nell’articolo presentato su ACM Queue, la relazione tra perdita dei pacchetti e congestione era vera negli anni ’80, per limiti tecnologici, ma con l’evoluzione delle schede di rete dai Megabit ai Gigabit, questa correlazione è divenuta molto più tenue.
La conclusione raggiunta è che l’attuale gestione del traffico si basa su indici non più validi, risultando inefficiente.
La proposta di Google: BBR
Bottleneck Bandwidth and Roundtrip propagation time (BBR) di Google si basa sia sulla banda disponibile sul “collo di bottiglia”, ovvero l’anello più lento del circuito, e sulla velocità di trasmissione.
Il modello seguito è quello di passare pacchetti a una velocità che non “dovrebbe” incontrare accodamenti, al contrario dei modelli attuali (Reno e CUBIC), in cui il protocollo invia i dati a picchi di velocità facendo affidamento sulle code per gestire eventuale traffico eccedente la capacità del collo di bottiglia.

Nei test, Google riporta un miglioramento in alcuni casi fino a 2700 volte rispetto a CUBIC, mentre in test più “reali” di streaming con Youtube il miglioramento globale arriverebbe comunque fino al 15% (vedi sotto)