Wikipedia · einfach zusammengefasst · Stand
Bufferbloat
Bufferbloat (zu Deutsch etwa „aufgeblähter Puffer“) beschreibt in der Informatik das Problem unnötig stark gefüllter Puffer in der Netzwerk-Hardware wie etwa …
Inhalt4 Abschnitte
Begriff und Bedeutung
Bufferbloat bezeichnet unnötig stark gefüllte Puffer in Netzwerk-Hardware wie Routern. Puffer speichern Datenpakete vorübergehend und sind grundsätzlich notwendig, um kurze Überlastungen, sogenannte Bursts, abzufangen. Bleiben sie jedoch dauerhaft stark gefüllt, entsteht eine stehende Warteschlange („standing queue“). Dadurch werden Pakete unnötig verzögert, und der Puffer kann neue Lastspitzen schlechter aufnehmen.
Besonders problematisch ist die erhöhte Latenz, also die Verzögerungszeit bei der Datenübertragung. Sie beeinträchtigt Echtzeit-Anwendungen wie Internet-Telefonie, Streaming, IoT und Gaming, die für eine gute Qualität auf schnelle Reaktionen angewiesen sind. Obwohl mit CoDel und FQ-CoDel geeignete Warteschlangenalgorithmen verfügbar sind, fehlen sie weiterhin in einem Großteil der kommerziellen Router für Heimanwender.
Entstehung am Flaschenhals
Bufferbloat entsteht an einem Flaschenhals-Router, auch Bottleneck-Router genannt. Bei diesem ist die Bandbreite der eingehenden Leitungen größer als die Bandbreite der ausgehenden Leitung. Deshalb treffen Pakete schneller ein, als der Router sie weiterleiten kann, und sammeln sich in seinen Puffern.
TCP erhöht während der „Congestion Avoidance Phase“ seine Senderate langsam, um die optimale Übertragungsrate zu erreichen. Solange alle Pakete ankommen, erkennt TCP jedoch keine Überlastung, denn es wertet nur Paketverluste als entsprechendes Signal. Dadurch wächst der Pufferfüllstand weiter, ohne sich wieder abbauen zu können.
Bei einem zunächst leeren Puffer steigert eine höhere Senderate zunächst den Durchsatz. Das funktioniert, bis die Senderate genau der Geschwindigkeit des Flaschenhals-Links entspricht. Wird sie danach weiter erhöht, bleibt der tatsächliche Durchsatz durch den Flaschenhals begrenzt. Stattdessen wächst die Verzögerung: Jedes neue Paket muss warten, bis die zuvor eingereihten Pakete weitergeleitet wurden.
Ursachen und Folgen
Das Problem entsteht vor allem bei unkoordinierten und nicht administrierten Puffern. Es wurde durch günstigen Speicher und die Tendenz der Hersteller verschärft, besonders große Puffer einzubauen, um Paketverluste zu vermeiden.
Ein dauerhaft voller Puffer kann kurzfristige Paket-Bursts nicht mehr zuverlässig abfangen. Die wichtigste Folge ist jedoch der zunehmende Delay, also die Übertragungsverzögerung. Ein großer Puffer verhindert daher zwar zunächst Paketverluste, kann aber zugleich die Reaktionszeit des Netzwerks erheblich verschlechtern.
Lösungen durch Pufferbegrenzung und aktive Verwaltung
Eine mögliche Gegenmaßnahme besteht darin, Puffer stark zu verkleinern oder ganz auf sie zu verzichten. Das wurde erfolgreich getestet, eignet sich aber nur für Spezialanwendungen in Hochleistungsnetzen. Das analoge Telefonnetz war ein Beispiel für ein Netzwerk ohne Puffer. Im Internet treten dagegen häufig Bursts auf, sodass Puffer dort im Allgemeinen notwendig bleiben.
Moderne Router verwenden deshalb eine aktive Pufferverwaltung. Wird die Verzögerung zu groß, werden nach einer vorgegebenen Wahrscheinlichkeitsverteilung zufällig ausgewählte Pakete verworfen oder markiert. Sender und Empfänger können daraus auf eine Überlastung des Routers schließen und die Senderate drosseln.
Die praktisch wichtigsten Algorithmen dafür sind RED, CoDel und PIE. Für CoDel und PIE gibt es die Erweiterungen FQ-CoDel und FQ-PIE. „FQ“ sorgt dafür, dass die Kapazität der Warteschlange fair auf alle Datenflüsse verteilt wird.