Nadměrné ukládání do vyrovnávací paměti ( angl. Bufferbloat - buffer opuch) je jev, který se vyskytuje v sítích s přepojováním paketů, kdy nadměrné ukládání do vyrovnávací paměti způsobuje zvýšení doby přenosu paketů (latence) a šíření zpoždění paketů (jitter) a v důsledku toho dochází ke snížení v propustnosti. Projekt www.bufferbloat.net tento pojem posměšně definoval jako „zhoršení výkonu internetu způsobené předchozími pokusy o jeho vylepšení“ [1] .
Termín Bufferbloat byl vytvořen koncem roku 2010 Jimem Gettysem z Bell Labs , členem výboru W3C a jedním z editorů specifikace HTTP/1.1 [2] .
Problém overbufferingu nastává, když je na cestě od zdroje k cíli paketů zařízení s příliš velkou vyrovnávací pamětí. Vyrovnávací paměti jsou zpravidla přítomny téměř ve všech síťových uzlech: přepínače, směrovače, zásobníky operačního systému atd. Jsou navrženy tak, aby dočasně ukládaly pakety „navíc“, aby se neztratily, když odesílatel přenáší data do uzlu rychleji než on. může získat příjemce. K tomu dochází, když je šířka pásma odesílatele vyšší než šířka pásma příjemce. Ukládání do vyrovnávací paměti zpozdí přenos paketu o několik milisekund. Pokud se vyrovnávací paměť zaplní, další paket je zahozen. Protokoly řízení přetížení to detekují na straně odesílatele a snižují přenosovou rychlost. Data jsou nadále přenášena pomocí maximální možné šířky pásma.
Ale pokud je vyrovnávací paměť v některém síťovém uzlu příliš velká, pak se v ní pakety hromadí po dlouhou dobu. Kvůli této dlouhé pauze se algoritmy řízení přetížení ztratí a nefungují tak, jak by měly. Začíná docházet k fenoménu velkého a variabilního zpoždění paketů, úzká hrdla sítě se „dusí“ nadbytkem paketů z jednoho TCP streamu a další pakety jsou zahazovány. Dochází k zácpě. Po chvíli se buffery uvolní, pak se přenosová rychlost zvyšuje, dokud se buffery zase nezaplní, až do dalšího zahlcení.
Z pohledu běžných uživatelů jsou hlavními příznaky nadměrného vyrovnávací paměti sítě zatížená síť (přenese se hodně dat), běžné webové stránky se načítají velmi dlouho (několik sekund, nebo i minut) ; jakékoli služby, které vyžadují konstantní šířku pásma (ať už vysokou nebo nízkou), jako je VoIP, síťové hry, chat, interaktivní aplikace, jako je vzdálený přístup, se stanou nepoužitelnými. Prioritizační metody (QoS), ve kterých je pro určitý typ provozu vytvořena samostatná fronta paketů, problém nevyřeší.
Problém nadměrného vyrovnávací paměti způsobují především výrobci routerů, přepínačů a vývojáři operačních systémů, kteří v posledních letech začali do zařízení instalovat příliš velké vyrovnávací paměti (několik megabajtů), což je zase způsobeno prudkým snížením náklady na paměť.
Problém lze vyřešit jednoduše zmenšením velikosti vyrovnávacích pamětí na síťovém zařízení. Na většině routerů a přepínačů však není nakonfigurován, zvláště pokud jsou umístěny mimo dosah běžných uživatelů.
Přílišné ukládání do vyrovnávací paměti sítě může být způsobeno jakoukoli službou nebo aktivitou v síti, která posílá velké množství dat nebo velké množství paketů sítí. Mezi nimi:
Tento jev může nastat všude tam, kde dochází k ukládání do vyrovnávací paměti. Za prvé, přetížení je vytvořeno na uzlu, za kterým je nejužší šířka pásma. Například:
Mnoho protokolů a síťových služeb trpí přetížením a pomalou dobou odezvy. Například:
Ke správnému zpracování paketů s velkou MTU , jako jsou jumbo rámce , jsou však potřeba velké síťové vyrovnávací paměti .
Problém přetížení sítě je starý problém sítí, který existuje od počátků jejich existence. Přetížení sítě způsobuje snížení propustnosti, delší dobu přenosu paketů a ztrátu paketů. V důsledku přetížení sítě některé síťové služby jednoduše přestanou fungovat.
K prvnímu projevu přetížení sítě ve velkém měřítku došlo v roce 1986 na NSFNet [3] . V reakci na tuto událost byl v roce 1988 vyvinut Van Jacobsonův protokol Congestion Control .
Internet nadále rostl. V roce 1993 S. Floyd a W. Jacobson vyvinuli algoritmus RED ( Random early detection - Arbitrary Early Detection) pro řízení přetečení front routerů [ 4] .
V roce 1997 byl publikován RFC 2068 , který formuloval „princip dvou připojení“: jeden klient by neměl používat více než dvě připojení současně se stejným serverem [5] . Podle stejného RFC je toto doporučení dáno „pro snížení doby odezvy HTTP a zabránění nadměrnému zatížení internetu nebo jiných sítí“.
O rok později vychází RFC 2309 „Doporučení pro správu internetových front a zabránění přetížení“, které navrhuje opatření ke zlepšení a zachování výkonu internetu.
V roce 2001 byl vydán RFC 3168 : „Přidání Explicitního upozornění o přetížení (ECN) k IP“, který navrhoval přidání pole ECN do paketů IP a TCP s rezervou 2 bitů.
V letech 2004-2007 se Comcast, jeden z největších poskytovatelů internetových služeb v USA, potýká s problémy kvůli přetížení sítě. Svědčí o tom opakované vypínání internetu pro „těžké“ uživatele [6] . A v roce 2007 se Comcast podle Jima Gettise „udusil“ bittorrenty [7] . Společnost byla obviněna z blokování torrentového provozu [8] [9] a je dokonce žalována [10] .
Podle Jima Gettise byl prvním člověkem, který objevil problém ukládání do vyrovnávací paměti sítě, Dave Clark [7] . V roce 2004 pozoroval tento jev na svém DSLAMu a využil toho, aby svého syna odradil od hraní dlouhých hodin WOW [11] .
V roce 2007 začíná Jim Gettis sám dostávat stížnosti od své rodiny na špatný internet a dochází k poškození zařízení v důsledku přepětí bleskem [7] .
V roce 2009 Dave Reed nahlásil příliš dlouhou dobu zpětného přenosu (RTT) paketů (až 30 sekund) s nízkou ztrátou paketů v sítích 3G zveřejněním na seznamu adresátů celého cyklu. Jim Gettis sám zaznamenal v 3G RTT sítích až 6 sekund.
Gettys nadále dostává od rodiny stížnosti na pomalý internet. V dubnu 2010 provedl test šířky pásma/latence [12] . Výsledek testu ukázal, že čekací doba (zpoždění) paketů se zvyšuje s dlouhým přenosem dat. 15. července 2010 měl Gettys společný oběd se zástupci Comcast [13] , kde byla navržena příčina problému: příliš velké buffery. Důvod zase navrhl společnosti Dave Clark o dva roky dříve, ale společnost o tom nemohla najít důkaz. Další důvody pro nafouknutí vyrovnávací paměti: RED často není součástí sítí, protože vyžaduje složitou konfiguraci; Sítě ECN jsou v některých sítích blokovány, protože zhroutí domácí směrovače.
Gettys pokračoval ve svém výzkumu a prováděl měření doma i na služebních cestách. Měření z 20. září ukázalo zpoždění 8 s na dráze, která bývá uražena za 10 ms [14] . Pak to Gettis reprodukoval na dalších routerech od různých výrobců.
V listopadu Gettys reprodukoval problém na různých operačních systémech. Ukázalo se, že pod Linuxem a Macem je tento problém snadněji reprodukovatelný než pod Windows. Gettys uzavřel: „něco je v síťových hromadách operačních systémů“ [15] .
3. prosince 2010 Jim Gettis publikuje na svém blogu článek „The kriminální mozek: bufferbloat!“, kde dává tomuto fenoménu jméno – bufferbloat . V tomto a následujících článcích Gettis hovoří o podstatě jevu, místech výskytu, příčinách a následcích [16] .
Robert Kringley, novinář píšící pro InfoWorld, ve svém článku „Predictions of 2011: One word – bufferbloat. Nebo jsou to dvě slova? předpovídá, že největším problémem roku 2011 bude nadměrné ukládání do vyrovnávací paměti sítě [17] . S odkazem na Gettyse uvádí popis problému. O 3 dny později publikovala ars technica článek Ilyicha van Beinuma, ve kterém poukázal na to, že některé detaily popsané Kringleym byly nesprávné, ale zároveň potvrdil existenci problému nadměrného vyrovnávací paměti sítě [18] .
Brzy byl vytvořen projekt www.bufferbloat.net Archived 4. prosince 2012 na Wayback Machine , který měl koordinovat úsilí dotčených jednotlivců řešit problém nadměrného ukládání do vyrovnávací paměti sítě. Hlavní úkoly projektu: