# Bufferbloat

Bufferbloat és una causa d'alta latència i fluctuació a les xarxes de commutació de paquets causada per l'excés de memòria intermèdia de paquets. Bufferbloat també pot provocar una variació del retard de paquets (també conegut com a jitter), així com reduir el rendiment global de la xarxa. Quan un encaminador o commutador està configurat per utilitzar buffers excessivament grans, fins i tot les xarxes d'alta velocitat poden esdevenir pràcticament inutilitzables per a moltes aplicacions interactives com la veu sobre IP (VoIP), la transmissió d'àudio, els jocs en línia i fins i tot la navegació web normal.
Alguns fabricants d'equips de comunicacions van dissenyar buffers innecessàriament grans en alguns dels seus productes de xarxa. En aquests equips, el bufferbloat es produeix quan un enllaç de xarxa es congestiona, fent que els paquets quedin en cua durant llargs períodes en aquests buffers sobredimensionats. En un sistema de cua de primer en entrar, primer en sortir, els buffers massa grans donen lloc a cues més llargues i una latència més alta, i no milloren el rendiment de la xarxa. També pot ser induït per connexions específiques de velocitat lenta que dificulten el lliurament puntual d'altres paquets.
El fenomen bufferbloat es va descriure ja el 1985. Va guanyar una atenció més generalitzada a partir del 2009.
Segons algunes fonts, la causa més freqüent d'alta latència ("lag") en els videojocs en línia és el bufferbloat de la xarxa domèstica local. L'alta latència pot fer que els jocs en línia moderns siguin impossibles.

## Buffering

Una regla general establerta per als fabricants d'equips de xarxa era proporcionar buffers prou grans per acomodar almenys 250 ms de memòria intermèdia per a un flux de trànsit que passa per un dispositiu. Per exemple, la interfície Gigabit Ethernet d'un encaminador requeriria un 32 relativament gran Buffer MB. Aquest dimensionament dels buffers pot provocar un fracàs de l'algorisme de control de congestió TCP. Aleshores, els búfers triguen un temps a esgotar-se, abans que el control de la congestió es restableixi i la connexió TCP torni a augmentar la velocitat i ompli els búfers de nou. Per tant, el bufferbloat causa problemes com ara una latència alta i variable i sufoca colls d'ampolla de xarxa per a tots els altres fluxos a mesura que el buffer s'omple dels paquets d'un flux TCP i després s'eliminen altres paquets.

## Mecanisme

La majoria dels algorismes de control de congestió TCP es basen en mesurar l'ocurrència de caigudes de paquets per determinar l'amplada de banda disponible entre dos extrems d'una connexió. Els algorismes acceleren la transferència de dades fins que els paquets comencen a caure, i després alenteixen la velocitat de transmissió. L'ideal és que segueixin ajustant la velocitat de transmissió fins que arribi a una velocitat d'equilibri de l'enllaç. Perquè els algorismes puguin seleccionar una velocitat de transferència adequada, la retroalimentació sobre les caigudes de paquets s'ha de produir de manera oportuna. Amb un buffer gran que s'ha omplert, els paquets arribaran al seu destí, però amb una latència més gran. Els paquets no s'han deixat caure, de manera que TCP no s'alenteix un cop l'enllaç ascendent s'ha saturat, omplint encara més la memòria intermèdia. Els nous paquets que arriben només s'eliminen quan el buffer està completament saturat. Una vegada que això succeeixi, TCP pot fins i tot decidir que el camí de la connexió ha canviat i tornar a buscar un nou punt de funcionament més agressiu.

## Referències

* ↑ «On Packet Switches with Infinite Storage» (en anglès), 31-12-1985.
* ↑ van Beijnum, Iljitsch. «Understanding Bufferbloat and the Network Buffer Arms Race» (en anglès). Ars Technica, 07-01-2011. [Consulta: 12 novembre 2011].
* ↑ Queue. DOI: 10.1145/2063166.2071893 [Consulta: lliure].
* ↑ Guido Appenzeller. «Sizing Router Buffers» (en anglès). ACM SIGCOMM. ACM. [Consulta: 15 octubre 2013].
* ↑ Nichols, Kathleen. «Controlling Queue Delay» (en anglès). ACM Queue. ACM Publishing, 06-05-2012. [Consulta: 27 setembre 2013].
* ↑ Jacobson, Van; Karels, MJ «Còpia arxivada». ACM SIGCOMM Computer Communication Review, 18, 4, 1988, pàg. 314–329. Arxivat de l'original el 2004-06-22. DOI: 10.1145/52325.52356 [Consulta: 11 novembre 2023].