Modernes TCP unter Linux
Zusammenfassung
Jörg Rödel, Kernel-Entwickler bei SUSE, erklärte bei den Chemnitzer Linux-Tagen 2016 den Aufbau und die Funktionsweise des modernen TCP im Linux-Kernel. Es ging um Verfahren zum Erkennen und Beheben von Paketverlusten und um Algorithmen zur Stauvermeidung im Netz. Fragen wie „Warum nutzt Linux CUBIC statt Reno?“ und „Was ist TCP Fast Open?“ standen im Mittelpunkt.
Was Stauvermeidung bedeutet
TCP sorgt dafür, dass Daten vollständig und in der richtigen Reihenfolge ankommen. Dabei muss es abschätzen, wie schnell es senden darf, ohne das Netz zu überlasten. Diese Aufgabe übernehmen Algorithmen zur Stauvermeidung. Das klassische Verfahren Reno halbiert bei jedem Paketverlust die Senderate und steigert sie danach nur langsam, was bei schnellen Leitungen über große Entfernungen viel Bandbreite verschenkt.
Linux nutzt seit 2006 CUBIC als Standard, das die Senderate nach einem Verlust schneller wieder anhebt. Proportional Rate Reduction verbessert die Erholung nach Verlusten, und TCP Fast Open erlaubt, schon beim Verbindungsaufbau Daten zu senden, was wiederholte Verbindungen beschleunigt.
Was danach kam
Ende 2016, wenige Monate nach dem Vortrag, kam mit Linux 4.9 BBR in den Kernel, ein von Google entwickeltes Verfahren. BBR richtet sich nicht nach Paketverlusten, sondern misst Bandbreite und Laufzeit der Verbindung. Gerade bei Leitungen mit gelegentlichen Verlusten, etwa im Mobilfunk, kann das deutlich schneller sein.
Ideen
- Stauvermeidung entscheidet, wie schnell TCP senden darf.
- Paketverluste dienen klassischen Verfahren als Signal für Überlast.
- TCP Fast Open spart bei wiederholten Verbindungen eine Runde Wartezeit.
Einsichten
- Ein Protokoll aus den 1970er-Jahren wird bis heute ständig weiterentwickelt.
- Die Wahl des Stauvermeidungsverfahrens kann die Geschwindigkeit einer Verbindung stark beeinflussen.
Fakten
- CUBIC ist seit 2006 das Standardverfahren zur Stauvermeidung in Linux.
- BBR kam Ende 2016 mit Linux 4.9 in den Kernel.
- Den Vortrag hielt Jörg Rödel von SUSE.
Referenzen
Bemerkungen
- Jörg Rödel hatte 2007, damals bei AMD, bei den Chemnitzer Linux-Tagen über KVM gesprochen.
Empfehlungen
- Prüfe mit sysctl net.ipv4.tcp_congestion_control, welches Verfahren dein System nutzt.
- Teste BBR auf Servern mit vielen entfernten Clients, bevor du es dauerhaft aktivierst.
Links zur Originalquelle und zum Webarchiv öffnen einen neuen Tab.