Linux 5.19: Unterstützung für große IP-Pakete und LoongArch ودعم

Der neue Linux-Kernel 5.19 wurde veröffentlicht – eine Woche später als geplant: Es war einer der seltenen Fälle, in denen Linus Torvalds einen Kernel für eine zusätzliche Testwoche bestellte. Einer der Gründe war Retbleed, eine Variante der Spectre-CPU-Schwachstelle. Patches zur Behebung der Schwachstelle führten zu einer erfolgreichen Leistung in Linux Candidate 7 (rc7), was zu mehr Fixes und umfangreicheren Tests führte. Sogar btfs-Patches, die in kurzer Zeit in rc7 eingezogen wurden, brachten zusätzlichen Aufwand in einen ohnehin geschäftigen Entwicklungszyklus.

Neben Retbleed war auch der Grafiktreiber für den Intel Alder Lake P ein Kinderproblem. In rc7 erforderte der neue Grafiktreiber ein GuC-Firmware-Update ebenfalls auf Version 70. Wenn dies nicht aktualisiert wird, funktioniert die Grafik nur ohne Hardwarebeschleunigung.

Dies verstößt gegen das Grundprinzip der Kernel-Entwickler. Änderungen am Kernel sollten sich niemals auf den Userspace auswirken (“do not break userspace”). Intel musste dann einen Fix nachliefern, der auch mit älterer Firmware die gewohnten Features bereitstellt. Andernfalls ist der neue Treiber möglicherweise aus dem Kernel herausgefallen.

Red Hat-Entwickler David Airlie entwarf dann Anweisungen für die Firmware, um dieses ungeschriebene Gesetz aufrechtzuerhalten. Es sollte im nächsten Kernel als Teil der Dokumentation enthalten sein.

Linux 5.19 hat BIG TCP für Rechenzentren und Dienstanbieter im Gepäck. Um die 64-Kilobyte-Grenze für IP-Pakete zu umgehen, können Netzwerk-Hosts, die sich direkt (“Hops”) in IPv6 verbinden, Paketgrößen von bis zu 4 GB mit privaten Headern aushandeln. Dazu setzen diese „Jumbo-Pakete“ (auch Jumbogramme genannt) das Längenfeld im IP-Header auf Null und fügen einen Jump-Header mit der tatsächlichen Paketlänge hinzu.

Das ist in RFC 2675 Spezifischer Hop-Hop wird nun vom TCP-Hauptkernel mit 5.19 gemeistert. Damit ist der Kernel gerüstet, um zukünftig Frequenzbänder über 100 Gbit/s bedienen zu können.

In der Praxis haben Jumbo-Pakete jedoch ihre Nachteile und werden daher standardmäßig nicht aktiviert. Beispielsweise navigieren viele Tools wie tcpdump und einige eBPF-Programme über den zusätzlichen Header. Sie erwarten unmittelbar nach dem IP-Header einen TCP-Header. Wenn ein Hop verwendet wird, wird ein Hop-Header zwischen den beiden gefunden, wodurch tcpdump mit einigen eBPF-Programmen verwechselt wird.

Außerdem müssen Netzwerktreiber dafür ausgelegt sein. Längst nicht alle Fahrer haben sich angepasst. Dies wird die Agenda zukünftiger Kernel-Releases füllen. Außerdem ist es keine einfache Anpassung. Beispielsweise können einige Netzwerkkarten Pakete über Segment-Offloading direkt in Schnittstellengeräten generieren, was den Anpassungsprozess erschwert.

Multipath TCP (MPTCP) wird verwendet, um mehrere TCP-Verbindungen in einer einzigen TCP-Sitzung zu gruppieren. Dadurch können mehrere Netzwerkpfade für die Kommunikation zwischen Systemen verwendet werden. Dies wird beispielsweise benötigt, um zwei Internetzugangspunkte parallel zu nutzen, die Downloadgeschwindigkeit zu erhöhen oder sich vor unterbrechungsfreien Ausfällen zu schützen. Die einzelnen TCP-Verbindungen, die eine MPTCP-Sitzung aufbauen, werden Substreams genannt.

Bisher war eine als MPTCP angelegte TCP-Verbindung immer MPTCP, auch wenn sie nur einen Substream hatte. Der neue Kernel ermöglicht es MPTCP jetzt auch, in bestimmten Situationen, in denen MPTCP-Funktionen nicht verwendet werden können, auf “normales” TCP zurückzugreifen, wodurch MPTCP-Overhead eliminiert wird, wenn es keinen Mehrwert bringt.

Darüber hinaus verfügt Linux 5.19 auch über eine neue Userspace-API zur Verwaltung von Substreams. Substreams können beispielsweise einer MPTCP-Verbindung hinzugefügt oder entfernt werden. Die Dokumentation dazu ist noch sehr schwach. Interessenten finden Vorabinformationen unter Kommentar zum fraglichen Commit.

Mit der neuen Version 5.19 unterstützt Linux erstmals die chinesische LoongArch-CPU-Architektur. Die Architektur von RISC ist MIPS und RISC-V sehr ähnlich. Neben der Standard-32-Bit-Variante (LA32S) bietet es auch eine dünnere 32-Bit-Version (LA32R) und eine 64-Bit-Architektur (LA64).

In einer x86-Umgebung lässt der neue Kernel eine Reihe von Boot-Optionen fallen: nosp, nosmap, nosmep, noexec und nocflush. Bisher war es möglich, sicherheitsrelevante Funktionen mit den Schaltern auf der Kernel-Befehlszeile (cmdline) auszuschalten. Diese Schalter wurden ursprünglich zur Kompatibilität mit älterer Hardware eingeführt und sind aus heutiger Sicht nicht mehr sinnvoll. Darauf sollte neben der inzwischen als Standard geltenden Sicherheit auch in Zukunft nicht verzichtet werden.

Linux 5.19 lässt das alte a.out-Format für ausführbare x86-Programme fallen. Das historische und mit vielen Fehlern behaftete a.out wurde unter Linux längst durch das modernere ELF (Executable and Linked Format) ersetzt. Version 5.1 hat das a.out-Format bereits als veraltet markiert.

Die Architektur des h8300 erlebte eine emotionale Achterbahnfahrt. Der Mikrocontroller wurde 2013 tatsächlich als veraltet aus dem Kernel entfernt. Zwei Jahre später kehrten sie zum Kern der Hauptstrecke zurück. Da (wieder) keine nennenswerte Arbeit daran geleistet wurde, hat Linux h8300 wieder entfernt. Ob ihm eine weitere Renaissance folgen wird, bleibt abzuwarten. H8/300-CPUs werden immer noch im Embedded-Umfeld verwendet.

Bei der Energieverwaltung behebt der Kernel ein großes Problem bei Intel-Laptops. Als das System versuchte, in einen Tiefschlaf zu gehen, war der Akku schnell leer. Intel ist dem nachgegangen und hat das Problem für Linux 5.19 behoben.

Abgesehen davon hat der neueste Kernel ein verbessertes Energiemanagement auf Intel, eine verbesserte APCI und eine aktualisierte Temperaturüberwachung. Auch neu hinzugekommene Prozessoren der noch nicht erschienenen Generationen Raptor Lake und Alder Lake N profitieren von einem verbesserten Powermanagement.

Wenn es um Dateisysteme geht, stechen die Innovationen in XFS hervor. Das Dateisystem konnte nicht nur 4 Milliarden erweiterte Attribute in einem Inode speichern, sondern jetzt sogar 2⁴⁷. Was wie ein Overkill erscheint, konzentriert sich auf bestimmte Anwendungsbereiche. Beispielsweise wollen XFS-Entwickler umgekehrte Verzeichnisreferenzen für das Scannen und Reparieren von Dateisystemen im Internet speichern und darin auch Daten zu den internen Baumstrukturen von fsverify speichern. Anstatt eine zusätzliche Datenbank für solche Informationen zu entwickeln, entschieden sich die Entwickler dafür, den bereits vorhandenen impliziten Schlüsselwertspeicher in Form von erweiterten Attributen zu verwenden.

Linux 5.19 XFS bietet auch “Registered Theme neu starten”. Dieser Mechanismus macht es möglich, viele erweiterte Attribute einer Datei in einer einzigen atomaren Operation zu ändern. Das bedeutet, dass Dateisystemzustände, die sich über mehrere Attribute erstrecken, immer konsistent gehalten werden können.

Linus Torvalds fügte seinem Entlassungsbrief eine persönliche Notiz hinzu. Zum ersten Mal einen Kernel auf einem ARM64-basierten System veröffentlicht. Darauf habe ich lange gewartet. ARM64 unterstützt seit einiger Zeit Linux, aber noch kein System konnte als Entwicklungsplattform dienen.

Es verwendet ein M1-basiertes MacBook der Version 5.19. Es ist das dritte Mal, dass er Apple-Geräte für die Linux-Entwicklung verwendet. Vor einigen Jahren war der PowerMac G5 (ppc970) für die PowerPC-Entwicklung und das MacBook Air die damals leichteste Version von Intels Laptop.

Jetzt will er den M1 auch auf Reisen nutzen, um auch eigene Entwicklungen auf der ARM64-Seite nutzen zu können. Er spricht von “Hundefutter”, was im Grunde bedeutet, “Ihre Produkte und Dienstleistungen zu verwenden” wie “Essen Sie Ihr Hundefutter”.

Kurz nach der Veröffentlichung von Linux 5.19 öffnete sich das Patch-Fenster für zwei Wochen, um neue Funktionen und Änderungen für den folgenden Kernel vorzustellen. Wie Linus Torvalds in seiner Release Note andeutet, wird der neue Kernel nicht den erwarteten Build 5.20 haben. Entsprechend seiner “Abneigung gegen große Versionsnummern” will Torvalds den nächsten Kernel auf 6.0 taufen. Es wird kein Sprung in der technischen Version sein, es wird nur ein organisatorischer Sprung sein. Die Situation war ähnlich wie bei einem Sprung von 4,22 auf 5,0.

Alle Änderungen und Neuerungen ab 5.19 stehen zum Nachlesen bereit im Changelog Bereit. Kernel-Ressourcen stehen zum Download auf kernel.org zur Verfügung.


(seufzen)

zur Homepage

Leave a Comment

%d bloggers like this: