Kernel-Log – Was 3.6 bringt (2): Netzwerk
Kleinere Puffer sollen bei der Vermeidung von Bufferbloat helfen. "TCP Fast Open" verspricht schnellere HTTP-Verbindungen. Die Netfilter-Infrastruktur kann zum Connection Tracking nun auf Userspace-Programme zurückgreifen.
- Thorsten Leemhuis
Durch "TCP small queues" (TSQ) nutzt Linux 3.6 pro Netzwerksocket standardmäßig nur mehr 128 KByte kleine Puffer. Ähnlich wie einige andere jüngst vorgenommene Kernel-Änderungen soll auch diese zur Vermeidung von "Bufferbloat" beitragen; der Begriff umschreibt Probleme wie hohe Netzwerklatenzen und Verbindungsabbrüche, die durch zu umfangreiches Puffern zu übertragender Daten entstehen. Die kleineren Zwischenspeicher pro Socket sollen den Durchsatz laut verschiedenen Messungen des zuständigen Entwicklers nicht beeinträchtigen; Administratoren könne den Wert bei Bedarf über die Datei /proc/sys/net/ipv4/tcp_limit_output_bytes zur Laufzeit anpassen.
Verbindungsaufbau
In den Kernel ist Client-Unterstützung für "TCP Fast Open" (TFO) eingeflossen (u. a. 1, 2, 3, 4, 5); die Server-seitige Unterstützung soll bei Linux 3.7 folgen. TFO ist eine experimentelle, von der Internet Assigned Numbers Authority (IANA) noch nicht abgesegnete TCP-Erweiterung von Google, die den Overhead beim Verbindungsaufbau senken soll, indem die ersten beiden Schritte beim normalerweise genutzten "TCP three-way handshake" kombiniert werden: Bei der Anfrage zum Aufbau einer TCP-Verbindung schickt der Client auch gleich Datenanfragen mit, sofern Server und Client zuvor schon kommuniziert haben. Das soll unter anderem HTTP-Verbindungen beschleunigen. Weitere Hintergründe zur Technik erläutert der LWN.net-Artikel "TCP Fast Open: expediting web services".
Treiber
Der für einige Ethernet-Chips von Broadcom zuständige Treiber bnx2x unterstützt nun das in IEEE 802.3az spezifizierte Energy-Efficient Ethernet (EEE); auch der Treiber stmmac, der Embedded-Ethernet-Kerne von Stmicro anspricht, beherrscht nun die Technik, über die sich Hardware-Parameter konfigurieren lassen, die für die Leistungsaufnahme von Ethernet-Chips wichtig sind. Anwender können EEE-Parameter mit Hilfe der kürzlich veröffentlichten Version 3.5 von Ethtool auslesen und setzen.
Der Ethernet-Treiber r8169 erhielt Unterstützung für die Realtek-Ethernet-Chips RTL8168G und RTL8106E. Der Team-Treiber beherrscht jetzt einen Broadcast-Modus, bei dem er alle Pakete über alle passenden Ports versendet. Der WLAN-Treiber rt2800pci spricht nun auch die Ralink-Chips RF5360 und RT5392 an; zudem erhielt er experimentelle Unterstützung für die WLAN-Chips der RT3290-Familie.
Verschiedenes
Entwicklungsstand
Am Wochenende hat Linus Torvalds die vierte Vorabversion von Linux 3.6 freigegeben. Es sei ziemlich ruhig gewesen, merkte er dabei an; er vermutet, daran seien die kürzlich in San Diego abgehaltenen Konferenzen mit Schuld, die zahlreiche Kernel-Entwickler besucht haben.
Die für Firewalls genutzte Netfilter-Infrastruktur kann zum Connection Tracking nun auf Hilfsprogramme zurückgreifen, die im Userspace laufen. Das soll die Entwicklung von Code zum Connection Tracking erleichtern – etwa wenn Nutzer spezielle Module für proprietäre Protokolle benötigen.
Über das neue Virtual Tunnel Interface (VTI) kann Linux 3.6 IPSec-Datenströme tunneln.
Durch einige von Volkswagen-Mitarbeiter Oliver Hartkopp beigesteuerte Änderungen unterstützt Linux jetzt CAN FD (CAN with flexible data rate) – eine von Bosch vorangetriebene Erweiterung des Feldbus CAN (Controller Area Network), der vorwiegend in Autos und zur Steuerung von Industrieanlagen genutzt wird. Einige Hintergründe zur Erweiterung und der Unterstützung durch Linux erläutert ein Beitrag im CAN-Newsletter. Neu ist auch die ebenfalls von Volkswagen geförderte Unterstützung für Ematch-basiertes Traffic Shaping für CAN-Botschaften. Das soll zur Lösung von Problemen beitragen, die auftreten, wenn mehrere Nutzer simultan auf den CAN-Bus schreiben; Details liefert die Studie "SocketCAN and queueing disciplines" und der Abschnitt "CAN frame traffic shaping" in einem Dokument, in dem Hartkopp die CAN-Unterstützung von Linux beschreibt.
Der Betreuer des Netzwerk-Codes, David Miller, erläutert einige weitere Änderungen in der Mail mit seinen Haupt-Git-Pull-Request für Linux 3.6. Dazu gehört die schon länger vorbereitete Entfernung des Routing-Caches, der anfällig für einen Denial-of-Service-Angriff gewesen sein soll.
Die kleinen Perlen
Die kleinen Perlen
Die folgenden Links führen zu einigen kleineren, aber keineswegs unbedeutenden Änderungen:
Ethernet
- [
I N1
] asix: Add a new driver for the AX88172A - [
- [
- [
- [
1
] bnx2x: 1G sfp+ module handling - [
- [
I
] bnx2x: Add new 57840 device IDs - [
- [
N3
] bnx2x, bnx2fc, bnx2i, cnic: Add statistics support and FCoE capabilities advertisement - [
- [
- [
- [
- [
- [
2
] ixgbe: Add support for SR-IOV w/ DCB or RSS - [
- [
- [
- [
I 1
] mlx4_en: map entire pages to increase throughput - [
C N2
] net: add support for NS8390 based eth controllers on some ColdFire CPU boards - [
C DN
] netdev/phy: Add driver for Broadcom BCM87XX 10G Ethernet PHYs - [
DN
] net: ethernet: davinci_emac: add OF support - [
N
] net/ethernet: ks8851_mll mac address configuration support added - [
1
] net/mlx4_en: Add accelerated RFS support - [
- [
C
] net: sh_eth: Add eth support for R8A7779 device - [
D
] net: stmmac: Add ip version to dts bindings - [
D
] net-tcp: Fast Open client - cookie-less mode - [
D
] net-tcp: Fast Open client - sendmsg(MSG_FASTOPEN) - [
- [
- [
I
] sky2: Added support for Optima EEE - [
D
] stmmac: update the driver Documentation and add EEE - [
- [
- [
I
] tg3: add device id of Apple Thunderbolt Ethernet device - [
- [
WiFI
- [
C
] ath5k: replace modparam_all_channels with CONFIG_ATH5K_TEST_CHANNELS - [
- [
N5
] ath9k: add initvals for AR9550 - [
I
] ath9k: Add PID/VID support for AR1111 - [
1
] ath9k: Add WoW related mac80211 callbacks - [
- [
- [
N1
] ath9k_hw: Add hardware code for WoW - [
- [
- [
- [
D 1
] batman-adv: Add get_ethtool_stats() support - [
I
] bcma: add PCI ID for BCM43224 - [
C N
] bcma: add place for flash memory support - [
- [
C N
] bcma: add trivial GBIT MAC COMMON driver - [
- [
- [
- [
1
] cfg80211: add cellular base station regulatory hint support - [
C
] cfg80211: add CONFIG_CFG80211_CERTIFICATION_ONUS - [
C D
] cfg80211: deprecate CFG80211_WEXT - [
C 5
] i2400m: remove SDIO device support - [
C 1
] iwlwifi: implement dynamic opmode loading - [
C 6
] iwmc3200top: remove driver for unavailable hardware - [
C 9
] iwmc3200wifi: remove driver for unavailable hardware - [
C
] mac80211: remove TKIP debug - [
C
] mac80211: trace debug messages - [
4
] mac80211: unify SW/offload remain-on-channel - [
N1
] mac802154: add wpan device-class support - [
- [
- [
I
] rt2x00: Add support for BUFFALO WLI-UC-GNM2 to rt2800usb. - [
- [
C D
] wireless: remove wext sysfs - [
I
] wireless: rtl818x: rtl8180 add devices ids - [
- [
- [
- [
- [
- [
- [
C N
] wl18xx: add new module - [
- [
1
] wl18xx: add runtime configuration parameters - [
- [
- [
- [
Various
- [
- [
- [
- [
N
] Bluetooth: A2MP: AMP Manager basic functions - [
N
] Bluetooth: A2MP: Create A2MP channel - [
- [
- [
- [
- [
- [
- [
- [
- [
- [
I
] Bluetooth: add support for atheros 0489:e057 - [
- [
1
] Bluetooth: Add the ERTM receive state machine - [
- [
- [
I
] Bluetooth: btusb: Add vendor specific ID (0a5c:21f4) BCM20702A0 - [
- [
- [
C N
] Bluetooth: Initial skeleton for Three-wire UART (H5) support - [
D
] bridge: update documentation references - [
C
] can: c_can: Add support for Bosch D_CAN controller - [
- [
- [
- [
- [
- [
D
] can: update documentation wording error frames -> error messages - [
CI N
] c_can_pci: generic module for C_CAN/D_CAN on PCI - [
D
] connector: Move cn_test.c away from NLMSG_PUT(). - [
D
] Documentation/networking/caif: Update documentation - [
C N2
] drivers/ieee802154: add support for the at86rf230/231 transceivers - [
- [
D
] ipv4: Add interface option to enable routing of 127.0.0.0/8 - [
D
] ipv4: Clarify in docs that accept_local requires rp_filter. - [
- [
- [
D
] netdev/phy/of: Handle IEEE802.3 clause 45 Ethernet PHYs in of_mdiobus_register() - [
- [
D
] net: fec: add phy-reset-duration for device tree probe - [
D
] net: fec: phy-reset-gpios is optional - [
- [
1
] netfilter: nf_conntrack: add namespace support for cttimeout - [
1
] netfilter: nf_conntrack: prepare namespace support for l3 protocol trackers - [
2
] netfilter: nf_conntrack: prepare namespace support for l4 protocol trackers - [
- [
- [
- [
- [
- [
- [
- [
1
] netfilter: nf_ct_sctp: add namespace support - [
1
] netfilter: nf_ct_tcp: add namespace support - [
- [
- [
D
] netfilter: remove include/linux/netfilter_ipv4/ipt_addrtype.h - [
D
] netfilter: xt_connlimit: remove revision 0 - [
D
] netfilter: xt_recent: add address masking option - [
D
] net: flexcan: clock-frequency is optional for device tree probe - [
- [
I
] net: qmi_wwan: add ZTE MF821D - [
- [
I
] net: qmi_wwan: new devices: UML290 and K5006-Z - [
C N
] net: sched: add ipset ematch - [
I
] NFC: Add initial Sony RC-S360 support to pn533 - [
- [
- [
D
] NFC: Error management documentation - [
1
] NFC: Implement pn533 polling loop - [
- [
- [
D 1
] sctp: Implement quick failover draft from tsvwg - [
- [
- [
- [
2
] tcp: Maintain dynamic metrics in local cache. - [
- [
1
] team: lb: introduce infrastructure for userspace driven tx loadbalancing - [
C 1
] tipc: remove print_buf and deprecated log buffer code - [
C 1
] tipc: remove TIPC packet debugging functions and macros - [
Ein "C" im Bereich "[ ]" kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "I" ausgezeichneten Patches rüsten neue PCI- oder USB-IDs nach; jene mit "D" verändern die dem Kernel beiliegende Dokumentation; Commits mit "N" legen neue Dateien an. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: Eine "1" kennzeichnet Patches, die inklusive Kommentar zwischen 10 und 20 KByte groß sind; Patches mit einer "9" sind 90 KByte oder größer.
Die "Was Linux 3.6 bringt"-Serie
Das Kernel-Log kann bereits jetzt einen Überblick über die wichtigsten Neuerungen der Ende September erwarteten Linux-Version 3.6 geben, da alle größeren Neuerungen bereits in den ersten zwei Entwicklungswochen integriert wurden; Linux 3.6 befindet sich seit dem in der Stabilisierungsphase, in der die Kernel-Hacker normalerweise keine größeren Änderungen mehr vornehmen.
Über einige der Neuerungen von Linux 3.6 hat das Kernel-Log bereits im Rahmen der Artikelserie "Was 3.6 bringt" berichtet:
In den kommenden Wochen werden noch Artikel erscheinen, die sich mit Infrastruktur, Architektur-Unterstützung und Treibern beschäftigen.
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 den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl) (thl)