Linux 4.19: Schöner starten und bereit für das WLAN von Morgen

Seite 5: Mehr Netzwerk-Performance und Treiber für AVM FRITZ! AC 430 & 860

Inhaltsverzeichnis

Sofern der Kernel die Netzwerkpakete gebündelt bei der Netzwerkhardware abruft, kann er diese jetzt länger als solches zusammenhalten, wenn der Netzwerkstack mit der Verarbeitung beginnt. Das verbessert die Netzwerk-Performance, weil es Overhead zu Beginn der Paketverarbeitung vermeidet und Prozessor-Caches besser greifen.

Die längere Bündelung von Netzwerkpaketen kann die Netzwerk-Performance in manchen Tests deutlich steigern.

(Bild: git.kernel.org – 2d1b138505dc )

Der für das längere Zusammenhalten der Pakete zuständige Code stammt von einem Solarflare-Mitarbeiter, der den für Netzwerkchips des Unternehmens zuständigen Treiber Sfc auch gleich erweitert hat, damit der das Verfahren nutzt. Andere Treiber verwenden es bislang nicht: Deren Entwickler sind sich noch uneins, ob die Vorteile den Implementierungsaufwand wert sind. Es muss sich daher noch zeigen, ob andere Treiber den Ansatz aufgreifen.

Die Idee hinter der Optimierung ist ohnehin alt, denn die hatte der Entwickler bereits 2016 vorgestellt. Damals fand der Ansatz noch weniger Anklang bei den anderen Entwicklern. Das hat sich unter anderem durch die Maßnahmen gegen die Prozessor-Sicherheitslücke Spectre v2 geändert, denn die haben Overhead mit sich gebracht, den die längere Bündelung wieder deutlich reduziert. Details und Testergebnisse nennt ein Merge-Commit-Kommentar zum neuen Ansatz und der LWN.net-Artikel "Batch processing of network packets".

Kürzere Latenzen bei Internet-Anbindungen sowie eine bessere, störungsfreie Koexistenz von durchsatz- und latzenzsensitiven Übertragungen verspricht "Common Applications Kept Enhanced (CAKE)". Dabei handelt es sich um eine neue Queuing Discipline (Qdisc) zur Steuerung des Netzwerkverkehrs via tc (Traffic Control).

Der neue Netzwerk-Scheduler zielt auf Internet-Provider ab und soll Probleme auf Anwenderseite beseitigen, die durch zu starkes Puffern von Paketen in den Zwischenstationen entstehen; solche Schwierigkeiten sind unter dem Oberbegriff "Bufferbloat" bekannt, gegen das eine Reihe von Entwicklern seit Jahren an vielen Fronten ankämpft. Details zum Ansatz des neuen Scheduling-Verfahrens finden sich in einem Commit-Kommentar zu CAKE, dem LWN.net-Artikel "Let them run CAKE", einer Webseite zu CAKE und einem Paper, das auch Testergebnisse nennt. Die Dokumentation zu CAKE findet sich im Entwicklerzweig von Iproute2, in dem die Version 4.19 vorbereitet wird und wie gewohnt kurz nach Freigabe des Kernels mit eben dieser Versionsnummer erscheinen dürfte.

Ebenfalls neu ist die Qdisc SKB Priority Queue (Skbprio): Dieser Scheduler soll bei der Abwehr von DoS-Attacken helfen, indem er Pakete geringerer Priorität fallen lässt, damit mehr der wichtigeren durchkommen. Die zugehörige Dokumentation steckt im Entwicklerzweig von Iproute2.

Der auf "Virtual Ethernet Tunnel" aufsetzende Treiber Veth hat XDP-Unterstützung erhalten, was Overhead beim Einsatz der Netzwerkschnellstraße reduziert und die Performance steigert. Laut dem Commit-Kommentar zum XDP-Support in Veth haben die Entwickler die Änderung vorgenommen, um Container besser zu vernetzen, XDP-Programme hintereinander zu hängen oder eine interne Netzwerkschnittstelle an eine XDP-Bridge einzuklinken.

Anwendungen können den Kernel nun über die neue setsockopt()-Option SO_TXTIME anweisen, die darüber verschickten Netzwerkpakete nicht möglichst zügig, sondern später innerhalb eines bestimmten Zeitfensters zu verschicken. Das ist vor allem für Realtime-Anwendungen gedacht, damit die den richtigen Moment zum Verschicken nicht mehr selbst anpassen brauchen. Außerdem müssen sie nicht mehr fürchten, dass ihre Pakete womöglich zu spät rausgehen, weil zufällig parallel eine andere Anwendung das Netzwerkinterface stark belastet. Details zum Ganzen finden sich im Merge Commit zu "Scheduled packet Transmission/ETF" und dem LWN.net-Artikel "Time-based packet transmission".

Der Kernel kann das Entschlüsseln von TLS (Transport Layer Security) jetzt an Netzwerkchips delegieren, die diese Aufgabe beherrschen. Das gelingt durch eine Erweiterung der Kernel-eigenen TLS-Unterstützung (Kernel TLS/KTLS), die bei Linux 4.13 eingeführt und jüngst bei 4.17 und 4.18 erweitert wurde. Der Netzwerktreiber muss die Hardware-seitige TLS-Entschlüsselung aber auch beherrschen, was bislang nur bei Mlx5 der Fall ist.

Eine Reihe weiterer Neuerungen nennt der Kommentar des Git-Merges, der den Hauptschwung der Änderungen am Netzwerkstack enthalten hat. Darunter ist etwa noch eine Backup-Port-Funktion im Bridge-Code oder das "Virtual XFRM Interface", das Verbindungen tunnelt und dabei einige Schwierigkeiten von anderen Tunnel-Ansätzen wie Virtual Tunnel Interfaces (VTI) vermeiden soll; XFRM soll etwa zuverlässig sicherstellen, dass über die virtuelle Netzwerkschnittstelle geroutete Pakete zuverlässig fallengelassen werden, falls es mit dem Tunnel irgendwo hakt.