Kernel-Log – Was 3.15 bringt (3): Netzwerk

Der Berkley Packet Filter soll nicht nur viel schneller arbeiten, sondern kann jetzt auch viel mehr. Der Kernel 3.15 wird mehr Realtek-WLAN-Chips als zuvor unterstützen und die Round Trip Time von TCP-Übertragungen genauer abschätzen.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
Lesezeit: 4 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Die Kernel-Entwickler haben den im Netzwerk-Subsystem angesiedelten Berkeley Packet Filter (BPF) grundlegend überarbeitet; er eignet sich dadurch für zahlreiche weitere Aufgaben und arbeitet schneller. Das ist für die Netzwerktraffic-Steuerung über tc oder Sniffer Tools wie Tcpdump relevant, die auf den BPF zurückgreifen; auch der Browser Chromium profitiert indirekt von den Änderungen, denn er nutzt zum Filtern der Syscalls für Sandboxen den bei 3.5 eingeführten Seccomp Filters Mechanism, der den BPF verwendet.

Da der neue Code mehr Möglichkeiten bietet, wollen einige Kernel-Entwickler auch den Funktions-Tracer Ftrace anpassen, damit auch er den BPF nutzt. Ftrace soll dadurch erheblich effizienter arbeiten und das System bei der Ablaufverfolgung erheblich weniger bremsen; das vermeidet Störeffekte, die die Arbeit mit Ftrace behindern können.

Die Verbesserungen des BPF-Interpreters im Kurzüberblick.

(Bild: Screenshot)

Der Kernel-intern verwendbare BPF hat durch die grundlegende Überarbeitung einen neuen Interpreter erhalten, der einen anderen Befehlssatz verwendet. Mit ihm lassen sich nicht mehr nur zwei, sondern zehn Register nutzen, die statt 32- jetzt 64-Bit-Werte aufnehmen können; zudem ähnelt der Befehlssatz mehr dem von modernen Prozessoren. Diese und andere Änderungen sollen den Befehlssatz laut einem der zuständigen Entwickler so ummodellieren, dass sich der BPF wie eine generische Abstraktion von plattformspezifischem Assembler einsetzen lässt.

Der neue Befehlssatz eignet sich durch solche Anpassungen auch besser zur Codeverarbeitung durch Just-In-Time-Compiler (JIT). Solche gibt es seit Linux 3.0 für den alten Interpreter; sie liegen auch weiterhin bei und kommen zum Einsatz, wenn der Kernel BPF-Code verarbeitet, der den alten Interpreter erwartet. Ein x86-64-JIT-Compiler für den neuen BPF-Befehlssatz soll bei Linux 3.16 folgen; die JIT-Compiler für andere Architekturen sollen nach und nach konvertiert werden.

Weitere Details zum deutlich aufgebohrten BPF erläutern ein Commit-Kommentar und die für 3.15 vorgenommen Änderungen an der Dokumentation; noch mehr Details liefern die Commits der für Entwickler gedachten BPF-Toolchain (1, 2, 3).

Mehr Infos

Die "Was Linux 3.15 bringt"-Serie

Das Kernel-Log kann bereits jetzt einen Überblick über die wichtigsten Neuerungen der Linux-Version 3.15 geben, da alle größeren Änderungen bereits in den ersten zwei Entwicklungswochen integriert wurden; das Ende Mai oder Anfang Juni erwartete Linux 3.15 befindet sich seit dem in der Stabilisierungsphase, in der die Kernel-Hacker nur selten größere Umbauten vornehmen.

Über einige der Neuerungen von Linux 3.15 hat das Kernel-Log bereits im Rahmen der Artikelserie "Was 3.15 bringt" berichtet:

  1. Dateisysteme & Storage
  2. Performance-Optimierungen

In der kommenden Woche folgen noch Artikel zu Infrastruktur und Treibern.

In den Kernel ist ein WLAN-Treiber für den PCIe-80211n-Chip RTL8723BE von Realtek eingezogen (u. a. 1, 2). Der WLAN-Treiber RTL8180 unterstützt nun auch den Realtek RTL8187SE; der im Staging-Bereich für schlechten Code liegende Treiber für diesen Chip wurde daher rausgeworfen. Dieser von Realtek selbst beigesteuerte Treiber bestand aus fast zwanzigtausend Zeilen Code – die für 3.15 integrierten Änderungen, durch die der RTL8180-Treiber jetzt den RTL8187SE unterstützt, summieren sich laut dem Entwickler auf noch nicht einmal 1500 neue oder geänderten Zeilen. Einige Grundlagen zur Unterstützung dieses Chips waren aber schon vorher gelegt worden; der ganze RTL8180-Treiber besteht aber nur aus rund viereinhalbtausend Codezeilen und unterstützt neben den Chips RTL8180 und RTL8187SE auch noch den RTL8185.

Es ist häufig der Fall, dass Open-Source-Treiber der Hersteller um ein vielfaches komplexer sind als reguläre Kernel-Treiber. Das zeigte auch der Treiber für den USB-WLAN-Chip RTL8723AU, der unter anderem in Lenovos Tablet Yoga 13 sitzt: Dieser von Realtek selbst beigesteuerte Treiber, der bei im Kernel 3.15 in den Bereich für schlechten Code eingezogen ist, besteht aus fast 90.000 Codezeilen (1, 2, 3, 4).

Der Kernel liefert Schätzungen zur Round Trip Time (RTT) von TCP-Übertragungen nicht mehr nur in Millisekunden, sondern jetzt auch in Mikrosekunden; eine Abfrage mit solch einer Genauigkeit ist zur Optimierungen der Netzwerkinfrastruktur interessant und gelingt über erweiterte Version der Userspace-Werkzeugsammlung Iproute2.

Mehr Infos

Entwicklungsstand

In der Nacht auf Donnerstag hat Linus Torvalds die sechste Vorabversion von Linux 3.15 freigegeben. Dort erwähnt er, der wöchentliche Freigabe-Rhythmus mit einer Freigabe am Sonntag sei gestört, weil er reise. Er will zum gewohnten Rhythmus zurück und offenbar am 1. Juni eine weitere Vorabversion veröffentlichen. Torvalds deutet an, das es die letzte sein könnte; wenn das der Fall ist, dürfte Linux 3.15 am Pfingstwochenende erscheinen.

Über den neuen Typ "hash:ip,mark" kann Ipset beim Filtern von Paketen jetzt Kennzeichnungen erkennen, die Layer-7-Filterprogramme wie Opendpi zuvor in Netzwerkpakete eingefügt haben. Das ist nicht nur zum Blocken bestimmter Pakete nützlich, sondern auch zur Analyse der Datenmengen, die einzelne Protokolle generieren.

Unter den wichtigsten Änderungen an Netzwerk-Treibern und -Infrastruktur waren zudem Patches, die einen Flaschenhals im Connection-Tracking-Code beseitigen sollen, der sich beim Erstellen oder Löschen von Verbindungen gezeigt hat (u. a. 1).

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf dem Twitter-Konto "@kernellog" annonciert. (thl) (thl)