c't 21/2016
S. 46
Kernel-Log
Linux 4.8
Aufmacherbild

Kernel-Log

Linux 4.8: Netzwerk-Schnellstraße und Vorboten eines verbesserten XFS-Dateisystems

Der neue Kernel soll robuster gegen Angriffe sein und unterstützt einen Open-Source-Prozessor mit SH2-Architektur. Linux 4.8 bringt zudem Support für neue Grafikprozessoren von Intel und Nvidia.

Kurz nach Erscheinen dieser c’t sollte auch der Linux-Kernel 4.8 erhältlich sein. Zu den wichtigsten Neuerungen zählt der „Express Data Path“ (XDP), durch den der Kernel bestimmte Netzwerkpakete schneller handhabt. Dank XDP können beim Berkeley Packet Filter (BPF) des Kernels hinterlegte Programme die eingehenden Netzwerkpakete fallen lassen (drop), weiterleiten (forward) oder umschreiben (rewrite), sobald der Netzwerktreiber sie angenommen hat. Die selbst erstellbaren BPF-Programme greifen die Pakete so vor dem Netzwerk-Stack ab, um den damit einhergehenden Aufwand für Prozessor und Arbeitsspeicher zu vermeiden. Das macht Forwarding effizienter und verbessert die Abwehr von Denial-of-Service-Angriffen.

Das maßgeblich von Facebook-Entwicklern vorangetriebenen XDP eignet sich für viele Aufgaben, die bislang oft mit dem Data Plane Development Kit (DPDK) umgesetzt werden. Darauf aufbauende Programme greifen Pakete früh beim Netzwerktreiber des Kernels ab, um diese dann im Userspace zu verarbeiten und so den Overhead des Netzwerk-Stacks im Kernel zu vermeiden. Grob gesagt kann man sich beide Ansätze wie eine Schnellstraße im Kernel (im Fall von XDP) beziehungsweise eine Kernel-Umgehungsstraße (im Fall von DPDK) vorstellen. Beide Lösungen bieten dabei viel weniger Funktionen als der Kernel-Netzwerk-Stack, erledigen bestimmte Aufgaben dafür aber viel schneller.

Wandel bei XFS

Die Kernel-Entwickler haben eine neue Infrastruktur in XFS geschaffen, mit der das Dateisystem in naher Zukunft eine Reihe von Funktionen lernen soll, die bislang Btrfs und ZFS auszeichnen. Zu den in Vorbereitung befindlichen Features zählt Data Scrubbing, mit dem sich durch Übertragungs- oder Medienfehler entstehende Datenverfälschungen erkennen lassen. Ebenfalls in Arbeit sind Copy-On-Write (COW) für Daten und die dadurch möglichen Reflink-Kopien (cp –reflink); über Letztere lassen sich selbst riesige Dateien in Sekundenbruchteilen kopieren, weil nur Meta- und keine Nutzdaten vervielfältigt werden. Die XFS-Macher planen zudem Support zur Daten-Deduplizierung. Auch die Rekonstruktion beschädigter Dateisysteme soll dank der Erweiterungen deutliche Fortschritte machen.

Durch diese und weitere Features würde XFS ein wenig zu Btrfs und ZFS aufschließen, die solche Funktionen seit langem bieten. Diese beiden Dateisysteme würden sich allerdings nach wie vor durch direkt integrierte Volume-Manager-Funktionen abheben – XFS wäre diesbezüglich weiter auf Device Mapper, LVM, Mdraid & Co. angewiesen. Wie schon bei früheren XFS-Erweiterungen gelten auch die jetzt begonnen vorerst als experimentell. Sie verändern die Dateisystemstrukturen von XFS ähnlich, wie Ext4 das On-Disk-Format von Ext3 erweitert hat; ältere Kernel fassen XFS-Dateisysteme mit den neuen Features daher nicht an.

Einfallstore sichern

Ein ganzer Schwung von Änderungen verspricht die Angriffsfläche des Kernels zu reduzieren. Gleich mehrere Verbesserungen gab es bei KASLR (Kernel Address Space Layout Randomization), das Kernel-interne Speicheradressen verwürfelt. Das erschwert es Angreifern, beim Ausnutzen einer Kernel-Lücke Speicherbereiche zu finden, die sie für ihre Zwecke missbrauchen können. Durch die Verbesserungen wird die Technik bald auf mehr Systemen genutzt, weil KASLR nicht mehr mit der Unterstützung zum Hibernate (Ruhezustand/Suspend-to-Disk) kollidiert, die viele Distributoren in ihren Kerneln aktivieren. Ferner verteilt KASLR die Einsprungpunkte bei 64-Bit-x86-Systemen (x86-64) nun über den gesamten Adressraum und durchmischt die Speicheradressen noch besser.

Linux 4.8 sichert den Datenaustausch zwischen Anwendungen und Kernel besser ab. Ferner kann es nun Datenstrukturen mit einem Schreibschutz versehen, die Module bei der Initialisierung im Arbeitsspeicher anlegen und danach nicht mehr verändern. Die neue GCC-Plug-in-Infrastruktur, die aus dem Grsecurity-Projekt übernommen wurde, hilft Kernel-Entwicklern beim Aufspüren potenzieller Schwachstellen im Code.

Durch einigen Umbauten am Pseudo-Random Number Generator (RNG) arbeitet dieser beim Ausliefern von Zufallsdaten via /dev/urandom nun mit dem ChaCha20-Verfahren, das effizienter und schneller sein soll. Der überarbeitete Generator soll zudem auf NUMA-Systemen besser skalieren und bindet jetzt Hardware RNGs bei der Initialisierung des Urandom-Pools ein. Das Crypto-Subsystem des Kernels beherrscht nun auch die Algorithmen SHA3 und ECDH (Elliptic Curve Diffie-Hellman).

Treiber

Linux 4.8 unterstützt laut Linux Kernel Driver DataBase (LKDDb) rund 175 weitere ACPI-, PCI-, USB- und Eingabegeräte. Darunter sind etwa neun weitere Ausführungen von Intels WLAN-Bausteinen 8260 und 8265, die häufiger in Notebooks stecken. Erstmals dabei ist auch ein Treiber für den Intel Virtual Button, der zur Unterstützung der Ein/Aus-Taste mancher Notebooks erforderlich ist – darunter etwa neuere Modelle der XPS-13-Serie von Dell.

Linux 4.8 spricht automatisch die HD-Graphics-Grafikprozessoren 500 und 505 an, die in den Anfang September vorgestellten Celeron- und Pentium-Prozessoren der „Apollo Lake“-Generation stecken. Der Nouveau-Treiber unterstützt nun Nvidias Pascal-Grafikkerne, die auf der GeForce GTX Titan oder den GeForce-GTX-Modellen 1070 und 1080 sitzen. Bei den beiden Letztgenannten beherrscht der Treiber allerdings vorerst nicht viel mehr als die Bildausgabe, weil 3D-Beschleunigung und viele andere Funktionen eine von Nvidia signierte Firmware erfordern, die das Unternehmen bislang nicht veröffentlicht hat.

Über Sysfs-Einträge des Amdgpu-Treibers lassen sich neuere Radeon-GPUs nun per „AMD OverDrive“ um bis zu 20 Prozent übertakten. Noch nicht recht einsatzbereit ist ein neuer Ansatz zur Unterstützung der Intel Graphics Virtualization Technology (GVT-g). Mit dieser sollen in einer Virtual Maschine (VM) laufende Betriebssysteme die 3D- oder Video-Beschleunigung der Prozessorgrafik des Hosts nutzen können. Das Ganze funktioniert aber derzeit nur mit Broadwell-Prozessoren, zu denen die Core-i-Prozessoren der 5000er-Reihe gehören. Außerdem ist Support in den Grafiktreibern und den Virtualisierungslösungen nötig, der für KVM und Xen erhältlich ist.

Open-Source-Prozessor

Der Kernel unterstützt jetzt den Prozessor „J-Core J2“, dessen in VHDL (VHSIC Hardware Description Language) erhältliches Design unter einer BSD-Lizenz steht und frei von Patenten sein soll. Dieses mit FPGAs verwendbare Prozessordesign implementiert die Befehlssatzarchitektur SuperH 2 (SH2); diese ISA (Instruction Set Architecture) wurde gewählt, weil alle wesentlichen Patente zu ihrem Schutz ausgelaufen sind oder in naher Zukunft auslaufen.

Durch Umbauten an KVM lassen sich nun VMs mit mehr als 255 CPU-Kernen aufsetzen. Mit Hilfe von Qemu 2.7 führt der Kernel nun für andere Prozessorarchitekturen gedachte Container aus. Durch diese „Architecture Emulation Containers“ lassen sich auf x86-64-Systemen beispielsweise Container bauen und testen, in denen für ARM64-Prozessoren kompilierte Software steckt.

Nach einigen Vorarbeiten bei Linux 4.7 haben die Kernel-Entwickler die neue Infrastruktur zum Schreiben von Kernel-Dokumentation jetzt komplettiert. Sie verwendet reStructuredText (RST) als Dateiformat und das vom Python-Projekt eingesetzte Sphinx zum Aufbereiten in Formaten wie PDF oder HTML. Einige Subsysteme haben ihre Dokumentation bereits auf den neuen Ansatz umgestellt, der die Kernel-Dokumentation besser und übersichtlicher machen soll.

Netzwerk

Linux 4.8 soll Latenzen bei WLAN-Übertragungen zu reduzieren und so Datentransfers beschleunigen. Diese potenziellen Performance-Zuwächse sind dem Umstieg auf den Netzwerkpaket-Scheduling-Mechanismus „CoDel Fair-queuing“ zu verdanken, der die WLAN-Sendezeiten effizienter zu nutzen verspricht.

Einen einfacheren und effizienteren Datenaustausch zwischen einem Linux-Host und darunter laufenden Linux-VMs verspricht die neue Virtio-Vsock-Infrastruktur. Der Datenaustausch zwischen Wirt und Gast erfolgt dabei mit bekannten Paravirtualisierungstechniken, die sich dank der neuen Schnittstellen jetzt über Posix-Sockets nutzen lassen. Daher sind oft nur kleine Anpassungen nötig, damit zur Netzwerkkommunikation ausgelegte Programme den neuen Datenaustauschweg nutzen können, ohne dass der Admin eine Netzwerkverbindung zwischen Host und Gast konfigurieren muss. Es gibt bereits Anpassungen für NFS-Server und -Client, damit sich diese über die neue Infrastruktur austauschen können.

Zur besseren Steuerung des Netzwerkverkehrs und speziell der Stauvermeidung kann Linux nun den TCP-Congestion-Control-Algorithmus „New Vegas“ verwenden, eine grundlegend überarbeitete Variante des Vegas-Algorithmus. Sie soll den Anforderungen moderner Rechenzentrumsnetzwerke besser gerecht werden, wo Datenübertragungen mit 10 GBit/s und mehr erfolgen und Round-Trip Times (RTT) unterhalb von 10 Mikrosekunden gefragt sind.

Entfernte PCIe-SSDs anbinden

Das RAID-Target des vom Logical Volume Manager (LVM) verwendeten Device Mapper (DM) beherrscht nun Raid Level Takeover und Raid Reshaping. Durch die Takeover-Funktion kann DM zwischen RAID-Arrays verschiedenster Level konvertieren, die der Device Mapper über den Software-RAID-Code des Multiple-Devices-Treiber (aka Mdraid) anspricht. Dadurch lässt sich beispielsweise ein per DM/LVM administriertes RAID 0 in ein RAID 5 verwandeln oder ein RAID 5 in ein RAID 6; das Ganze funktioniert auch in die entgegengesetzten Richtungen. Durch den Reshaping-Support lassen sich Array-Parameter wie Stripe-Größe oder Mapping-Algorithmus verändern.

Über neue Treiber kann Linux jetzt per NVM Express over Fabrics (NVMf) auf NVMe-Datenträger von Storage-Servern zugreifen oder solche selbst als NVMf-Storage-Server im Netz bereitstellen. NVMf ist ein für verschiedene Netzwerkverkabelungstechniken geeignetes Übertragungsprotokoll, das von Non-Volatile Memory Express (NVMe) abgeleitet wurde, das SSDs mit PCIe-Schnittstelle typischerweise nutzen. NVMf unterstützt die Übertragung mit den Netzwerktechniken InfiniBand, iWARP und RoCE (RDMA over Converged Ethernet).

Um letztgenannten Übertragungsweg zu ermöglichen, haben die Kernel-Entwickler parallel einen Treiber für „Software RoCE“ integriert. Mit ihm funktioniert Remote Direct Memory Access (RDMA) über beliebige Ethernet-Hardware. Bislang wird oft das teurere InfiniBand für Remote DMA genutzt, das Overhead beim Zugriff auf Daten entfernter Systeme vermeidet. (thl@ct.de)