Bufferbloat
Bufferbloat bezeichnet die stark erhöhte Laufzeit, die entsteht, wenn zu groß bemessene Zwischenspeicher (engl. Buffer) in Netzwerkgeräten volllaufen. Die Übertragungsrate bleibt dabei unverändert hoch — verzögert wird jedes einzelne Paket, das sich hinter dem gefüllten Speicher anstellen muss.
Woran zeigt sich Bufferbloat
Der Befund ist charakteristisch und wird trotzdem fast nie richtig zugeordnet: Die Geschwindigkeitsmessung zeigt die volle gebuchte Rate, und trotzdem ruckelt die Videokonferenz, bricht das Online-Spiel ab oder reagiert die Fernwartung träge — immer dann, wenn gleichzeitig eine größere Übertragung läuft. Endet sie, ist alles wieder in Ordnung.
Eine Störungsmeldung beim Anbieter führt zu nichts, weil dessen Messung die Rate prüft und die stimmt. Gemessen wird die falsche Größe: Nicht die Übertragungsrate ist das Problem, sondern die Laufzeit unter Last.
Wie entsteht Bufferbloat
Jedes Gerät auf dem Weg hat einen Zwischenspeicher für Pakete, die es nicht sofort weiterschicken kann. Solche Speicher sind sinnvoll — sie fangen kurze Spitzen ab, die sonst zu Paketverlust führen würden.
Über Jahre wurden sie immer größer bemessen, weil Speicher billig wurde und Paketverlust als das zu vermeidende Übel galt. Genau darin liegt das Problem.
TCP erkennt eine Überlastung daran, dass Pakete verloren gehen. Es steigert seine Senderate so lange, bis das eintritt, und drosselt dann. Ist der Speicher vor der Engstelle sehr groß, tritt der Verlust erst spät ein — vorher füllt sich der Speicher bis zum Rand.
Die Größenordnung zeigt eine einfache Rechnung. Ein Speicher für 256 Pakete zu je 1500 Byte fasst rund 3 Megabit. An einer Engstelle mit 10 Mbit/s in Senderichtung dauert es gut 300 Millisekunden, ihn zu leeren. So lange wartet jedes Paket, das jetzt ankommt — auch das Sprachpaket, das in 20 Millisekunden am Ziel sein müsste.
Aus einer Grundlaufzeit von 20 Millisekunden werden so mehrere hundert, in ungünstigen Fällen über eine Sekunde.
Wo es auftritt
Immer an der Engstelle, also dort, wo der Weg schmaler wird. Im Heimnetz sind das typischerweise drei Orte.
Die Senderichtung des Anschlusses. Der häufigste Fall. Privatanschlüsse sind stark unsymmetrisch; die Senderichtung läuft deshalb zuerst voll. Weil die Empfangsbestätigungen (ACK) von TCP ebenfalls dort hindurchmüssen, bricht danach auch der Empfang ein — ein einzelner Upload bringt den gesamten Anschluss zum Stocken.
Das WLAN. Hier kommt hinzu, dass sich alle Teilnehmer ein Medium teilen und die Rate je Gerät schwankt. Ein langsames Gerät am Rand der Reichweite kann die Warteschlange für alle anderen füllen.
Der Übergang vom lokalen Netz zum Anschluss. Ein Gigabit-Netz, das auf eine deutlich langsamere Leitung trifft, erzeugt die Engstelle im Router.
Warum mehr Bandbreite nicht hilft
Die naheliegende Reaktion ist ein schnellerer Tarif. Sie greift daneben.
Bufferbloat ist ein Problem der Warteschlange, nicht des Durchsatzes. Eine doppelt so schnelle Leitung leert den Speicher doppelt so schnell — aber die Anwendungen füllen ihn auch doppelt so schnell wieder, weil TCP bis zur neuen Grenze aufdreht. Die Wartezeit sinkt anfangs und stellt sich nach kurzer Zeit wieder ein.
Was hilft, ist kein größeres Rohr, sondern ein Verfahren, das die Warteschlange kurz hält.
Was dagegen wirkt
Aktive Warteschlangensteuerung greift ein, bevor der Speicher voll ist. Statt zu warten, bis nichts mehr hineinpasst, verwirft sie gezielt einzelne Pakete oder markiert sie — und zwar anhand der Zeit, die ein Paket in der Schlange verbringt, nicht anhand ihrer Länge. Das Signal kommt damit früh genug, dass TCP drosselt, bevor die Laufzeit einbricht.
Faire Aufteilung in Teilschlangen ist der zweite Baustein. Jeder Datenstrom bekommt eine eigene Warteschlange, sodass ein großer Download die kleinen Pakete einer Sprachverbindung nicht blockiert.
Beides zusammen ist in den gebräuchlichen Verfahren kombiniert. Damit eine Steuerung im eigenen Gerät überhaupt greifen kann, muss die Warteschlange dort entstehen und nicht in einem Gerät weiter außen — was sich durch eine bewusst knapp gesetzte Senderate erreichen lässt.
Messgröße
Maßgeblich ist die Laufzeit unter Last, also der Anstieg der Laufzeit gegenüber dem Ruhezustand, während die Leitung ausgelastet ist. Ein gut eingestellter Anschluss bleibt dabei im Bereich weniger Dutzend Millisekunden über dem Ruhewert; bei Bufferbloat steigt der Wert um ein Vielfaches.
Die Rate allein sagt darüber nichts aus — weshalb gängige Geschwindigkeitsmessungen das Problem nicht sichtbar machen.
Einordnung
Der Begriff wurde um 2010 geprägt, nachdem das Phänomen über Jahre als „das Internet ist heute langsam" fehlgedeutet worden war. Die maßgeblichen Gegenmaßnahmen entstanden in den Jahren danach.
Heute ist die Lage geteilt. In quelloffenen Router-Betriebssystemen und in Linux ist eine brauchbare Warteschlangensteuerung seit Jahren voreingestellt. Bei handelsüblichen Heimroutern fällt es sehr unterschiedlich aus: Manche bringen eine wirksame Steuerung mit, andere bieten lediglich eine Priorisierung einzelner Geräte, die das eigentliche Problem nicht angeht.
Auf der Anbieterseite gibt es Bewegung. In der aktuellen Kabelnorm ist eine Warteschlangensteuerung in Senderichtung vorgeschrieben, und mit L4S ist ein Verfahren normiert, das Überlast durch Markierung statt durch Verwerfen signalisiert und Laufzeiten im einstelligen Millisekundenbereich auch unter Last ermöglicht — sofern Anbieter und Anwendung beide mitspielen.
Abgrenzung
Die Latenz beschreibt die Laufzeit allgemein. Bufferbloat ist ein bestimmter Grund für ihren Anstieg — Warteschlangen, nicht Entfernung oder Vermittlungsaufwand.
Jitter bezeichnet die Schwankung der Laufzeit. Bufferbloat erzeugt beides, erhöhte Laufzeit und starke Schwankung.
Priorisierung ordnet bestimmten Verkehr vor. Gegen Bufferbloat hilft das nur begrenzt, weil das bevorzugte Paket weiterhin hinter dem wartet, was bereits im Speicher liegt. Eine kurze Warteschlange ist wirksamer als eine gut sortierte lange.
Paketverlust gilt hier ausdrücklich nicht als Fehler, sondern als notwendiges Signal. Ein Netz ganz ohne Verlust ist ein Netz mit langen Warteschlangen.
Bufferbloat erkennen und selbst beheben
Unser Guide Bufferbloat erkennen und beheben erklärt an praktischen Beispielen wie Sie das Problem erkennen und im eigenen Netz auch lösen können.
Quellen
- Gettys, Nichols: Bufferbloat — Dark Buffers in the Internet, ACM Queue