Die Neuerungen von Linux 4.15

Seite 5: Netzwerk-Support

Inhaltsverzeichnis

Linux bringt jetzt alles mit, um zwei Rechner über ein Thunderbolt-Kabel per Internet Protocol (IP) zu vernetzen. Das gelingt über das von Apple entwickelte Protokoll ThunderboltIP, das den IP-Ethernet-Verkehr über die Thunderbolt-Verbindung tunnelt. Der dafür zuständige Code baut auf einer dazu geschaffenen Infrastruktur auf, die prinzipiell auch andere Protokolle übertragen könnte (u. a. 1, 2).

Beim Verbinden von macOS oder Windows mit Linux wird das für ThunderboltIP zuständige Kernel-Modul automatisch aktiv; zum Verbinden zweier Linux-Systeme muss man das Modul thunderbolt-net auf einem von beiden manuell laden, wie die Dokumentation erläutert. Der Treiber legt automatisch ein Ethernet-Device mit einem Namen wie thunderbolt0 an, das wie eine normale Netzwerkschnittstelle konfiguriert werden will.

In einem speziell konstruierten Test konnte die neuen Retransmit-Datentrstuktur den Durchsatz um ein vielfaches steigern.

(Bild: git.kernel.org – ca82214144 )

Geringere Latenzen und höherer Datendurchsatz bei Verbindungen mit hohen Verlustraten – das ist ein Ziel der neuen Datenstruktur für TCP-Pakete, die der Kernel bei Verlust abermals versenden muss. Für diese Retransmit Queue nutzt Linux jetzt einen Red-black Tree. Aufgrund seiner Komplexität hatten die Entwickler einen solchen bislang zu vermeiden versucht. Durch die immer schneller werdenden Netzwerkschnittstellen und somit größer gewordenen Warteschlangen wiegen die Vorteile einer solchen Datenstruktur die Nachteile aber nun eher auf. Das unterstreicht der Entwickler mit Testergebnissen im Commit-Kommentar, laut denen der Datendurchsatz von 284 auf 1805 Mbit/s steige – das Testszenario hatte er aber auch konstruiert, um die Vorteile des Verfahrens zu demonstrieren. Der bei Google arbeitende Entwickler erwähnte die konkrete Motivation für die Umbauten jüngst auf einer Konferenz: Bei 100-Gigabit-Netzen mit großen Round Trip Times (RTT) würden sie schwere Skalierbarkeitsprobleme im TCP-Stack sehen.

Ähnlich wie der Kernel von FreeBSD kann nun auch Linux die Sendereihenfolge der Daten verändern, die zum Verschicken per Stream Control Transmission Protocol (SCTP) bereitliegen. Das gelingt über eine neue Infrastruktur für SCTP Stream Scheduler, die ein IETF-Entwurf definiert, der unter Beteiligung deutscher Entwickler entstand. Der Kernel erhielt auch gleich drei SCTP-Scheduler, die mit verschiedenen Herangehensweisen arbeiten (u. a. 1, 2, 3, 4, 5).

Einen ganzen Schwung von Verbesserungen gab es wieder rund um BPF. Dabei handelt es sich um einen auch eBPF (Enhanced BPF) genannten und aus dem Berkeley Packet Filter (BPF; dieser Tage oft auch als Classic BPF/cBPF bezeichnet) hervorgegangene Virtual Machine, die Programme im Kernel-Kontext ausführen kann. Zahlreiche Subsysteme nutzen BPF mittlerweile für die verschiedensten Aufgaben, etwa um Daten zu filtern, Berechtigungen zu regeln oder größere Datenströme zu analysieren.

Programme, die mit dem auf BPF zurückgreifenden XDP (eXpress Data Path) laufen, können Dank des neuen "Meta Pointer For Direct Access" nun Metadaten im Socket Buffer (SKB) ablegen. Das beschleunigt die weitere Verarbeitung des Pakets, weil eine weitere Paketanalyse an anderer Stelle entfallen kann. BPF-Programme zum Ingress Filtering können dadurch beispielsweise effizienter arbeiten. Einige Hardware-Hersteller arbeiten wohl schon daran, die Metadaten gleich von der Netzwerk-Hardware für XDP bereit zu legen, um den Verarbeitungsweg noch weiter zu optimieren.

Das Netzwerk-Subsystem bringt jetzt eine Userspace-API mit, über die sich die Ausführung von BPF-Programmen an darauf ausgelegte Netzwerkchips delegieren lässt. Letzteres gelang schon vorher – die Programmierschnittstelle vereinfacht aber Verwendung und Fehlerhandhabung.

Einige Design-Aspekte von BPF erläutert jetzt eine FAQ in der Dokumentation von Linux. Zu den im Rahmen des Kernels entwickelten Userspace-Werkzeugen stieß das simple bpftool, mit dem sich BPF-Objekte abfragen und aktualisieren lassen. Das ist etwa für Debugging und Introspektion von BPF-Programmen und Maps gedacht.

19 von rund 2400 Änderungen am Netzwerksubsystem fand dessen Betreuer hervorhebenswert.

(Bild: git.kernel.org – 5bbcc0f595 )

Der Kommentar zum Merge-Commit mit den wesentlichsten Änderungen am Netzwerk-Subsystem nennt noch einige weitere Neuerungen. Darunter etwa den neuen Qdisc-Scheduler Credit Based Shaper (CBS) oder Feintuning & Dokumentation für Identifier-locator addressing (ILA) mit IPv6. Außerdem bietet Open vSwitch jetzt Meter Support und unterstützt Network Service Headers (NSH). Darüber hinaus gab es Optimierungen an zahlreichen Stellen des Netzwerk-Subsystems, um die Netzwerk-Performance zu verbessern (u. a. 1, 2, 3, 4, 5).

Die vielen Änderungen unterstreichen, dass sich beim Netzwerk-Support in Linux nach wie vor viel wandelt. Einen tieferen Einblick in diesen Aspekt geben bei LWN.net verfügbare Berichte und Notizen von zwei Konferenzen, auf der zahlreiche Entwickler des Linux-Netzwerk-Codes jüngst zusammengekommen sind. In mehreren Vorträgen und Diskussionen ging es etwa um aktuelle oder in Entwicklung befindliche Einsatzmöglichkeiten von BPF und XDP. Außerdem haben die Entwickler über die Entschlackung einiger Strukturen im Netzwerk-Subsystem von Linux gesprochen, um Overhead zu reduzieren und Performance zu steigern. Das sind aber nur einige von mehreren Dutzend Themen, die in den fünf Tagen auf der Netconf 2017 (Part 2) und Netdev 2.2 zur Sprache kamen. Viele der Präsentationsfolien von der Netdev 2.2 finden sich über die Programmseite der Konferenz.