Kernel-Log – Was 3.3 bringt (1): Netzwerk

Kernel 3.3 bietet eine neue Möglichkeit zum Zusammenschalten von Netzwerk-Ports. Neu ist auch Unterstützung für den virtuellen Netzwerk-Switch "Open vSwitch", der speziell zur Virtualisierung entwickelt wurde. Byte Queue Limits sollen die Wartezeiten reduzieren, die zum viel diskutierten "Buffer Bloat" führen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 15 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Mit der Freigabe von Linux 3.3-rc1 hat Linus Torvalds letzte Woche das Merge Window von Kernel 3.3 beendet. Bis zur Fertigstellung von Linux 3.3 wird er jetzt nur noch Fehlerkorrekturen und kleine Verbesserungen integrieren – die erste Vorabversion von Linux 3.3 enthält daher bereits die wichtigen Neuerungen der März erwarteten Kernel-Version. Es ist selten, dass die Kernel-Entwickler in der Stabilisierungsphase des Entwicklungszyklus noch größere Änderungen aufnehmen oder bereits aufgenommene Änderungen wieder rauswerfen oder deaktivieren.

Das Kernel-Log kann daher bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen der Kernel-Version 3.3 geben.Wie gewohnt erfolgt die Übersicht in einer Artikelserie "Was 3.3 bringt", die sich nacheinander den unterschiedlichen Funktionsbereichen des Kernels annimmt. Den Anfang macht die Beschreibung der wichtigsten Änderungen am Netzwerk-Stack und an den Treibern für LAN- und WLAN-Hardware; in den kommenden Wochen folgen Artikel zu Storage, Dateisystemen, Architektur-Code, Infrastruktur sowie zu Treibern für sonstige Hardware.

Die Kernel-Entwickler haben einen Ethernet-Teaming-Treiber aufgenommen, der mehrere Netzwerk-Ports zu einem virtuellen verbindet (Link Aggregation/802.1AX). Dieses virtuelle Netzwerk-Device kann die Arbeit in einem Round-Robin-Verfahren über mehrere Ports verteilen; alternativ kann ein Port auch als "Active-backup" bereitstehen und einspringen, wenn es Probleme mit dem primär genutzten Netzwerk-Anschluss gibt. Die Entwickler empfehlen den Treiber als sehr schnelle, einfache und gut skalierende Alternative zum Bonding-Treiber, der ähnliches schon länger ermöglicht. Der Team-Treiber macht die Arbeit allerdings nicht komplett alleine, sondern arbeitet mit der Userspace-Bibliothek Libteam zusammen.

In Linux 3.3 sind die Kernel-Komponenten von Open vSwitch eingeflossen. Dieser Multilayer Virtual Switch kann auf den Layern 2, 3 oder 4 arbeiten und wurde speziell für den Einsatz im Virtualisierungsumfeld entwickelt; er kommt unter anderem beim XenServer 6.0 im Einsatz, um den Netzwerkverkehr zwischen Wirt, Gästen und Außenwelt zu steuern. Hintergründe zur Technik liefert die Open-vSwitch-Website, die dort angebotene Dokumentation, die Kernel-Dokumentation und ein als Video abrufbarer Vortrag, den Simon Horman Mitte Januar auf der Open-Source-Konferenz linux.conf.au 2012 gehalten hat:

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Über die Network Priority Cgroup Infrastructure können Administratoren bei Linux 3.3 dynamisch die Priorität festlegen, mit der Prozesse einer Control Group (Cgroup) die Netzwerk-Ressourcen nutzen können; Details erläutert die zugehörige Dokumentation. Durch den ebenfalls neuen "TCP buffer size controller" kann der Memory Controller die Menge des Arbeitsspeichers begrenzen, den die bei der TCP-Kommunikation verwendeten Puffer belegen dürfen (u. a. 1, 2, 3, 4, 5); diese Zwischenspeicher können recht groß werden und daher Systeme mit knapp bemessenen Arbeitsspeicher ins Straucheln bringen, wie ein LWN.net-Artikel zu einer früheren Variante der jetzt eingeflossenen Patches erläutert.

Über die von einem Google-Entwickler eingebrachten "Dynamic Queue Limits" und den darauf aufbauenden "Byte Queue Limits" kann der Kernel steuern, wie viele Daten sich in der Sende-Warteschlange ansammeln dürfen. Das soll die Netzwerk-Latenzen reduzieren helfen, die gelegentlich durch zu ausgiebige Nutzung der Zwischenspeicher in modernen Netzwerkchips entstehen, ohne den Durchsatz zu verringern und so das "Buffer Bloat"-Problem mindern, das durch zu exzessives Puffern von Daten in Netzwerk-Hardware entstehen. Die wichtigsten Netzwerk-Treiber – darunter bnx2, bnx2x, forcedeth, e1000e, igb, niu, tg3, sfc und sky2 -- erhielten Anpassungen, um Byte Queue Limits zu unterstützen. Einige Hintergründe zur Technik erläutert der LWN.net-Artikel "Network transmit queue limits".