Linux 5.19: IP-Pakete in Jumbogröße und Unterstützung für LoongArch

Der Open-Source-Kernel unterstützt nun die chinesischen CPU-Eigenentwicklung LoongArch und bohrt das Netzwerk für Bandbreiten jenseits von 100 GBit/s auf.

Lesezeit: 8 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 24 Beiträge
3d,Rendering.,Word,“linux”,With,Bright,Yellow,Color,Before,Linux

(Bild: Shutterstock)

Von
  • Oliver Müller

Der neue Linux-Kernel 5.19 ist erschienen – eine Woche später als geplant: Es war einer der seltenen Fälle, in denen Linus Torvalds dem Kernel eine Extrawoche Tests verordnete. Ein Grund war Retbleed, eine Variante der CPU-Sicherheitslücke Spectre. Patches zum Beheben der Schwachstelle führten zu einem Leistungseinbruch im siebten Release-Candidate (rc7) von Linux, was weitere Korrekturen und ausgiebigere Tests nach sich zog. Auch kurzfristig in rc7 zurückgezogenen btfs-Patches brachten zusätzlichen Aufwand in einem ohnehin arbeitsreichen Entwicklungszyklus.

Neben Retbleed war auch der Grafiktreiber für Intel Alder Lake P ein Sorgenkind. Der neue Grafiktreiber setzte in rc7 voraus, dass auch die GuC-Firmware auf Version 70 aktualisiert wird. War diese nicht aktuell, arbeitete die Grafik nur noch ohne Hardware-Beschleunigung.

Das verletzte ein Grundprinzip der Kernel-Entwickler. Änderungen am Kernel dürfen niemals den Userspace beeinträchtigen ("never break the userspace"). Intel musste daraufhin einen Fix liefern, der auch mit älterer Firmware die gewohnten Features bereitstellt. Andernfalls hätte der neue Treiber aus dem Kernel herausfallen können.

Der Red-Hat-Entwickler David Airlie formulierte daraufhin Firmware-Richtlinien, um dieses ungeschriebene Gesetz festzuhalten. Die sollen im kommenden Kernel als Bestandteil der Dokumentation enthalten sein.

Für Rechenzentren und Provider hat Linux 5.19 BIG TCP im Gepäck. Um das Maximum von 64 KByte für IP-Pakete zu umgehen, können direkt verbundene Netzwerk-Hosts ("Hops") in IPv6 über spezielle Header Paketgrößen bis 4 GByte aushandeln. Dazu setzen diese "Jumbopakete" (auch Jumbogram genannt) im IP-Header das Längenfeld auf null und fügen einen Hop-by-Hop-Header mit der tatsächlichen Paketlänge hinzu.

Das in RFC 2675 definierte Hop-by-Hop beherrscht nun mit 5.19 auch der Mainline-Kernel für TCP. Damit rüstet sich der Kernel, um zukünftig Bandbreiten jenseits der 100 GBit/s bedienen zu können.

In der Praxis haben die Jumbopakete aber ihre Tücken und sind deshalb standardmäßig nicht aktiviert. Beispielsweise stolpern viele Werkzeuge wie tcpdump und einige eBPF-Programme über den zusätzlichen Header. Sie erwarten fälschlich direkt nach dem IP-Header den TCP-Header. Kommt Hop-by-Hop zum Einsatz, findet sich zwischen den beiden der Hop-by-Hop-Header, was tcpdump und einige eBPF-Programme verwirrt.

Zusätzlich müssen die Netzwerktreiber darauf ausgelegt sein. Längst sind nicht alle Treiber angepasst. Dies wird die Agenda für spätere Kernel-Releases noch füllen. Außerdem ist es keine triviale Anpassung. So können beispielsweise einige Netzwerkkarten per Segment-Offloading Pakete direkt in der Schnittstellen-Hardware erzeugen, was die Anpassung verkompliziert.

Multipath TCP (MPTCP) dient zum Bündeln von mehreren TCP-Verbindungen in eine TCP-Sitzung. Damit lassen sich mehrere Netzwerkpfade für eine Verbindung zwischen Systemen nutzen. Benötigt wird das beispielsweise, um zwei Internetzugänge parallel zu nutzen, um die Downloadgeschwindigkeit zu steigern oder sich unterbrechungsfrei gegen Ausfälle abzusichern. Die einzelnen TCP-Verbindungen, die eine MPTCP-Sitzung etablieren, werden Subflows genannt.

Bislang war eine einmal als MPTCP angelegte TCP-Verbindung grundsätzlich MPTCP, selbst wenn sie nur einen Subflow enthielt. Der neue Kernel gestattet MPTCP nun auch in ausgewählten Situationen auf "normales" TCP zurückzufallen, wenn die MPTCP-Features nicht genutzt werden können, und sich also des MPTCP-Overheads zu entledigen, wenn dieser keinen Mehrwert bringt.

Darüber hinaus hat Linux 5.19 auch eine neue Userspace-API, um Subflows zu verwalten. Subflows lassen sich hierüber beispielsweise einer MPTCP-Verbindung hinzufügen oder von dieser entfernen. Die Dokumentation ist hierzu noch recht dünn. Interessierte finden erste Informationen im Kommentar des betreffenden Commits.

Mit der neuen Version 5.19 unterstützt Linux erstmals die chinesische CPU-Architektur LoongArch. Die RISC-Architektur ist MIPS und RISC-V sehr ähnlich. Sie bietet neben einer 32-Bit-Standardvariante (LA32S) auch eine abgespeckte 32-Bit-Version (LA32R) sowie eine 64-Bit-Architektur (LA64).

Im x86-Umfeld streicht der neue Kernel eine Reihe von Boot-Optionen: nosep, nosmap, nosmep, noexec und noclflush. Mit den Schaltern in der Kernel-Kommandozeile (cmdline) war es bislang möglich, sicherheitsrelevante Features auszuschalten. Ursprünglich zur Abwärtskompatibilität zu alter Hardware eingeführt, machen diese Schalter aus heutiger Sicht keinen Sinn mehr. Auf dieses heute als Standard angesehene Plus an Sicherheit soll zukünftig nicht mehr verzichtet werden.

Linux 5.19 streicht das alte a.out-Format für ausführbare x86-Programme. Das historisch bedingte und mit mehreren Nachteilen versehene a.out wurde in Linux bereits seit Langem durch das modernere ELF (Executable and Linking Format) verdrängt. Bereits Version 5.1 markierte das a.out-Format als veraltet (deprecated).

Ein Wechselbad der Gefühle erlebt die h8300-Architektur. Die Mikrocontroller waren bereits 2013 als obsolet aus dem Kernel entfernt worden. Zwei Jahre später kehrten sie zurück in den Mainline-Kernel. Da seither nun (wieder) keine nennenswerten Arbeiten daran stattfanden, entfernt Linux h8300 erneut. Ob ein erneutes Revival folgt, bleibt abzuwarten. Im Embedded-Umfeld werden H8/300-CPUs noch immer eingesetzt.

Beim Power-Management behebt der Kernel ein erhebliches Problem auf Intel-Notebooks. Wenn das System in den Tiefschlaf (deep sleep) wechseln wollte, kam es zum schnellen Leerlaufen des Akkus. Intel hat nachgelegt und für Linux 5.19 das Problem behoben.

Abseits dessen verbessert der jüngste Kernel das Power-Management auf Intel, legt bei APCI nach und aktualisiert die Temperaturüberwachung. Vom verbesserten Power-Management profitieren auch die neu aufgenommenen Prozessoren der noch nicht erschienenen Generationen Raptor Lake und Alder Lake N.

Bei den Dateisystemen stechen die Neuerungen in XFS hervor. Das Dateisystem wurde in die Lage versetzt, nicht nur 4 Milliarden an erweiterten Attributen in einem Inode zu speichern, sondern nun bis zu 2⁴⁷. Was nach maßlosem Übertreiben klingt, hat konkrete Anwendungsbereiche im Fokus. Die XFS-Entwickler wollen darin beispielsweise umgekehrte Verzeichnisreferenzen für das Online-Prüfen und das Reparieren des Dateisystems ablegen und auch Daten zu internen Baumstrukturen für fsverify darin ablegen. Statt eine zusätzliche Datenbank für derartige Informationen zu entwickeln, entschieden sich die Entwickler den implizit bereits vorhandenen Key-Value-Store in Form der erweiterten Attribute zu nutzen.

Außerdem spendiert Linux 5.19 XFS das "logged attribute replay". Dieser Mechanismus ermöglicht es, mehrere erweiterte Attribute einer Datei in einer einzigen atomaren Operation zu verändern. Damit lassen sich über mehrere Attribute gehende Zustände des Dateisystems stets konsistent halten.

In seiner Release-Meldung bringt Linus Torvalds einen persönlichen Hinweis unter. Erstmals gab er einen Kernel auf einem ARM64-basierten System frei. Er hatte hierauf bereits eine "lange" Zeit gewartet. ARM64 unterstütze Linux zwar schon geraume Zeit, aber kein System hätte bis jetzt als Entwicklungsplattform dienen können.

Er nutzt für die Freigabe von 5.19 ein M1-basiertes MacBook. Es sei das dritte Mal, dass er Apple-Hardware für die Linux-Entwicklung nutze. Einige Jahre zuvor ein PowerMac G5 (ppc970) für die PowerPC-Entwicklung sowie ein MacBook Air als zum damaligen Zeitpunkt leichteste Intel-Notebook-Variante.

Er wolle das M1-System nun auch auf Reisen nutzen, um so auch auf der ARM64-Seite seine eigenen Entwicklungen nutzen zu können. Er spricht von "dogfooding", was als "sein eigenes Hundefutter zu essen" im Wesentlichen "eigene Produkte und Services nutzen" bedeutet.

Seit kurz nach dem Release von Linux 5.19 steht das zweiwöchige Patch-Window zum Einreichen von Neuerungen und Änderungen für den nächsten Kernel offen. Wie Linus Torvalds in seiner Release-Meldung durchblicken lässt, wird der neue Kernel nicht die erwartete Versionsnummer 5.20 tragen. Getreu einer "Abneigung gegen große Versionsnummern" plant Torvalds den nächsten Kernel 6.0 zu taufen. Es wird kein technisch bedingter Versionssprung sein, sondern lediglich ein organisatorischer. Ähnlich verhielt es sich bereits beim Sprung von 4.22 auf 5.0.

Alle Änderungen und Neuerungen von 5.19 stehen zum Nachlesen im ChangeLog bereit. Die Kernel-Quellen stehen auf kernel.org zum Download bereit.

(axk)