Linux-Kernel 6.8.1: Korrekturen für Kernel 6.8

Seite 2: Hausputz beim Netzwerk

Inhaltsverzeichnis

Linux 6.8 reorganisiert einige Kern-Netzwerk-Strukturen wie socks, netdev, netns und mibs neu, um die Cache-Effizienz zu verbessern. Was langweilig und unspektakulär klingt, verspricht doch eine erhebliche TCP-Performance-Steigerung. Bei "vielen" parallelen Netzwerkverbindungen soll diese bis zu 40 % betragen. Leider erläutert das entsprechende Patch-Set nicht, was unter "vielen" parallelen Netzwerkverbindungen zu verstehen ist.

Das bpfilter-Subsystem war angetreten, um Firewall-Regeln vom Format für Packet-Filter (iptables) in Berkley Packet Filter (BPF) zu übersetzen. Bereits 2018 mit Linux 4.18 in den Kernel aufgenommen, konnte es keinen praxistauglichen Stand erreichen. Zudem ebbte das Interesse, daran zu arbeiten, zunehmend ab. Als Konsequenz entledigt sich der Kernel nun des bpfilter-Subsystems. Die Weiterentwicklung soll in einem eigenen Repository bei GitHub erfolgen.

In den Anfängen von Linux und Unix war die Zahl der eingehängten (mounted) Dateisysteme überschaubar und statisch. Spätestens seit dem Siegeszug von Containern hat sich das geändert. Bei jedem Start eines Containers mountet das System Dateisysteme und hängt sie beim Herunterfahren des Containers wieder aus. Dabei müssen es nicht unbedingt die Container von Docker, LXC & Co. sein. Der Einsatz von AppImages oder snap reicht völlig aus, um die kommenden und gehenden Mounts zu erzeugen. Dafür war das Betriebssystem nicht ausgelegt und hatte über die Jahre kaum nachgezogen.

Natürlich lässt sich über /proc/self/mountinfo die aktuelle Liste der Dateisysteme samt systeminterner ID auslesen. Einerseits ist diese Liste aufwendiger zu verarbeiten und bei der Zunahme der dynamischen Mount-Einträge mehr und mehr ein unschönes Relikt. Andererseits sind die IDs der Dateisysteme dem "Verfall" unterworfen. Soll heißen: wird ein Dateisystem ausgehängt, wird seine ID wiederverwendet. IDs sind also nicht über die Laufzeit des Systems eindeutig. Grundsätzlich gäbe es keinen Grund fürs ID-Recycling, schon jetzt ist die ID ein 64-Bit-Wert, was mehr als 18 Trillionen Mount-Vorgänge abbilden könnte. Gäbe es da nicht einige Userspace-Programme, die (fälschlich) nur 32 Bit dieser ID verwenden. Unglücklicherweise ist systemd eines dieser Programme.

Einem Vorschlag von Miklos Szeredi folgend, führt Linux 6.8 zwei neue Systemcalls ein. listmount() gibt eine Liste der eingehängten Dateisysteme zurück. statmount() ruft die Details über einen Mount auf. Beide Systemcalls bauen auf einer neuen eindeutigen, nicht wiederverwendeten 64-Bit-ID auf. Das Einführen einer zusätzlichen ID ist notwendig, da der Stand der ursprünglichen ID durchs falsche Verwenden in den Userspace-Programmen ziemlich festgefahren ist. Die verkorkste ursprüngliche ID muss (vorerst) weiter existieren. Das System führt sie als "alte ID" fort. Sämtliche bestehenden Wege abseits der neuen Systemcalls bauen unverändert auf dieser alten ID auf.

XFS führt die notwendigen Arbeiten für eine zukünftige Online-Reparatur fort. Leider ist die Online-Reparatur, also bei eingehängtem Dateisystem, noch immer nicht möglich. bcachefs ist hier bereits einen Schritt weiter. Das Dateisystem wartet im neuen Kernel mit einem zwar noch nicht vollständigen, aber im begrenztem Rahmen funktionierenden Online-Check- und -Reparaturmechanismus auf. SMB (CIFS) erhält die Möglichkeit, Block- und Character-Special-Files zu erzeugen.

Linux 6.8 unterstützt nun die "Intel Trust Domain Extension" (TDX) auf Host-ebene. Damit soll es zukünftig möglich sein, in KVM durch TDX Hardware-geschützte virtuelle Maschinen ausführen zu können. Zudem wechselt das Security-Modul AppAmor (endlich) bei den Hashes zur Policy-Prüfung von SHA-1 auf SHA-256. Ebenfalls als Altlast ist das Entfernen von strlcpy() aus dem Kernel abgeschlossen.

Der neue Kernel Linux 6.8 ist kein großer Wurf, was neue für den Benutzer sichtbare Funktionalität angeht. Der erste funktionierende Treiber in Rust ist jedoch erwähnens- und testenswert. Die Geschwindigkeit bei der Integration von Rust ist enorm. Es wird spannend zu beobachten sein, was sich dort zukünftig finden wird.

Insgesamt stellt Linux 6.8 sich für die Zukunft auf. Den Mut, den Mount-Mechanismus anzupacken, zeugt von keiner Scheu davor, das System für neue Trends fit zu machen. Konsequent optimiert das Entwicklerteam den Kernel, wie die Arbeiten am Scheduler und der TCP-Implementierung zeigen.

(dmk)