Kernel-Log – Was 3.10 bringt (1): Netzwerk
Linux 3.10 handhabt Paketverluste am Ende von TCP-Verbindungen effizienter und beschleunigt so HTTP-Übertragungen. Neu sind auch Unterstützung für VLAN Stacking und den WLAN-Chip Realtek RTL8188EE.
- Thorsten Leemhuis
Am Wochenende hat Linus Torvalds die vierte Vorabversion von Linux 3.10 freigegeben. Aufgrund technischer Probleme gab es sie anfangs nur über das Quellcodeverwaltungssystem git; Torvalds betont in der Freigabe-Mail, dies sei ohnehin die effizienteste Art der Beschaffung. Mittlerweile ist Linux 3.10-rc4 aber als Quellcode-Archiv über kernel.org abrufbar.
Alle größeren Neuerungen von Linux 3.10 haben Torvalds und seine Mitstreiter wie gewohnt in den zwei Wochen nach Freigabe der Version 3.9 in den Kernel integriert. Linux 3.10 befindet sich daher jetzt in der Stabilisierungsphase; umfangreichere Umbauten gibt es in diesem Entwicklungsabschnitt nur in Ausnahmefällen, daher können wir bereits jetzt einen umfassenden Überblick über die wichtigsten Neuerungen geben, die der Ende Juni oder Anfang Juli erwartete Kernel 3.10 bringen wird. Eine Artikelserie wird nacheinander die verschiedenen Bereiche des Kernels behandeln.
Den Anfang macht die folgende Beschreibung zu den Neuerungen rund um Netzwerk-Unterstützung. In den nächsten Wochen folgen Artikel zu Storage-Techniken, Dateisystemen, Grafiktreibern, Kernel-Infrastruktur, Prozessor/Plattform-Unterstützung und Treibern für andere Hardware.
Netzwerk-Infrastruktur
Durch Unterstützung für das experimentelle Tail Loss Probe (TLP) handhabt der TCP-Stack nun Paketverluste am Ende einer TCP-Verbindung effizienter. Das Konzept von TLP und die Implementation für Linux stammen von Google-Entwicklern; laut einigen im Commmit-Kommentar angegebenen Messungen soll die Technik bei kurzen Transaktionen die Retransmission Timeouts um 15 Prozent reduzieren und die HTTP-Antwortzeit um durchschnittlich 6 Prozent verkürzen. Details zur Funktionsweise liefert der Commit-Kommentar und der bei der TCP Maintenance Working Group vorliegende Internet-Draft zu TLP.
Das für die Kommunikation und Datenaustausch zwischen Kernel und manchen Userspace-Programmen verwendete Netlink-Interface beherrscht nun Memory Mapped I/O (MMIO); dadurch kann das bislang bei der Interaktion nötige Kopieren der ausgetauschten Daten entfallen, was den Overhead reduziert und die Performance steigert.
Der Kernel unterstützt jetzt die Spezifikation IEEE 802.1ad. Über das auch "VLAN Stacking" oder "Q-in-Q" bekannte Verfahren lassen sich mehrere VLAN-Tags in ein Ethernet-Frame einfügen; die Konfiguration der relevanten Netzwerk-Parameter erfolgt über das Tool ip.
Die Mesh-Implementierung batman-adv beherrscht nun "network coding" – durch diese Technik kann ein Mesh-Relay mit Hilfe eines XOR-Tricks in einer Übermittlung zwei Netzwerkpakete an unterschiedliche Systeme senden, mit denen das Relay zuvor kommuniziert hat.
Die Entwickler haben den unfertigen und bremsenden Code für TCP Cookie Transactions (TCPCT) rausgeschmissen – eine Technik, die bei der Abwehr einiger Denial-Of-Service-Attacken hätte helfen können.
Netzwerktreiber
Mit Linux 3.10 stoßen Treiber zum Kernel, die den USB-2.0-Netzwerkchip RTL8152 und den 11n-WLAN-Chip RTL8188EE (u. a. 1, 2) ansteuern; beide Netzwerkbausteine stammen von Realtek. Für den RT5592 von Ralink gibt es jetzt experimentelle Unterstützung. Der für neuere Broadcom-Chips zuständige Treiber brcmsmac kann jetzt im Access-Point-Modus arbeiten.
Der Treiber für Netzwerkverbindungen über FireWire unterstützt IPv6 erheblich besser. Der Team-Treiber entscheidet im neuen "Random Mode" jeweils zufällig, über welchen der vom Treiber virtuell verbundenen Netzwerkschnittstellen ein Paket das System verlässt.
Einige weitere Neuerungen rund um Netzwerk-Treiber und -Infrastruktur listet der Betreuer des Netzwerksubsystems in seinem Haupt-Git-Pull-Request für Linux 3.10.
Die kleinen Perlen
Die kleinen Perlen
Einige weitere für Sie vielleicht interessante Neuerungen liefert die folgenden Liste mit den englischen Commit-Überschriften ausgewählter Änderungen, die es in den beschriebenen Kernel-Subsystemen gab. Wie viele Verweise im vorangegangenen Text verlinken die Einträge auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs auf Kernel.org. Der über diese Links angezeigte Commit-Kommentar und der darunter ausgegebene Patch liefern oft zahlreiche Hintergrundinformationen zur jeweiligen Änderung.
Ethernet
- [
- [
1
] bnx2x: Add iproute2 support for vfs - [
- [
- [
1
] bnx2x: Support reading I2C EEPROM SFF8472 - [
N1
] csiostor: Add T5 adapter operations. - [
- [
- [
- [
I 2
] cxgb4: Initialize T5 - [
D
] drivers: net: ethernet: cpsw: change cpts_active_slave to active_slave - [
- [
- [
N1
] firewire net, ipv4 arp: Extend hardware address and remove driver-level packet inspection. - [
I 2
] ixgbe: add SFP+ LX module support - [
C 1
] mv643xx_eth: convert to use the Marvell Orion MDIO driver - [
N
] mwifiex: add "ethtool wol" command support - [
N2
] net/mlx4_en: Add HW timestamping (TS) support - [
1
] netxen: write IP address to firmware when using bonding - [
- [
1
] qlcnic: Support atomic commands - [
C N2
] qlcnic: Support SR-IOV enable and disable - [
I 4
] qlcnic: Support VF-PF communication channel commands. - [
2
] qlcnic: Support VLAN id config. - [
1
] qlcnic: VF FLR implementation. - [
4
] qlcnic: VF-PF communication channel implementation - [
2
] qlcnic: VF reset recovery implementation. - [
- [
- [
- [
3
] sfc: Enable RX DMA scattering where possible - [
C
] sh_eth: add R8A77781 support - [
N3
] stmmac: add IEEE PTPv1 and PTPv2 support. - [
C N1
] stmmac: add the support for PTP hw clock driver - [
C 2
] stmmac: reorganize chain/ring modes removing Koptions - [
4
] stmmac: support extend descriptors - [
D
] stmmac: update the Doc and Version (PTP+SGMII) - [
Wifi
- [
C N
] ath6kl: add tracing support and tracing points for wmi packets - [
- [
1
] ath9k: Update initvals for AR9565 - [
C DN1
] batman-adv: network coding - add the initial infrastructure code - [
1
] brcmfmac: add dedicated log level for low-level sdio debugging - [
- [
1
] brcmfmac: add support for dongle ARM CR4 core - [
N2
] brcmfmac: add support for TLV based firmware signalling - [
C N2
] brcmfmac: define and use platform specific data for SDIO. - [
3
] brcmfmac: enable sk_buff queueing when credits deplete - [
N
] brcmfmac: introduce tracepoints for message logging - [
- [
N2
] brcmfmac: support critical protocol API for DHCP - [
1
] brcmfmac: support save&restore firmware feature - [
C N
] brcmsmac: radio on led support - [
N1
] brcmutil: add new d11 interface support - [
1
] cfg80211: Extend support for IEEE 802.11r Fast BSS Transition - [
1
] cfg80211: introduce critical protocol indication from user-space - [
3
] cfg80211: move exported event functions into nl80211 - [
I
] iwlwifi: add a subdevice ID for 7000 series - [
C
] iwlwifi: allow selecting only MVM driver - [
C 1
] iwlwifi: export symbols only conditionally - [
N1
] iwlwifi: mvm: add BT Coex FW API - [
N1
] iwlwifi: mvm: begin basic BT-Coex implementation - [
- [
1
] iwlwifi: mvm: implement reduced Tx power - [
1
] iwlwifi: mvm: implement remote wake - [
- [
- [
2
] mac80211: improve the rate control API - [
- [
D
] mac80211: provide ieee80211_sta_eosp() - [
- [
1
] mac80211: support secondary channel offset in CSA - [
- [
1
] mwifiex: add WOWLAN support - [
I
] mwl8k: Adding support for 8764 4x4 AP - [
I
] qmi_wwan/cdc_ether: add device IDs for Dell 5804 (Novatel E371) WWAN card - [
I
] rt2800: 5592: add more USB devices IDs - [
5
] rt2x00: Use more current logging styles, shrink object size - [
7
] rtlwifi Modify existing bits to match vendor version 2013.02.07 - [
- [
4
] rtlwifi: rtl8192c: rtl8192ce: rtl8192cu: rtl8192de: rtl8723ae: Add changes required by adding rtl81988ee - [
3
] rtlwifi: rtl8192c: rtl8192ce: Update to vendor driver of 2013.02.07 - [
I
] rtlwifi: rtl8192cu: Add new USB ID - [
2
] rtlwifi: rtl8192se: Update driver to match vendor driver of 2013.02.07 - [
1
] rtlwifi: rtl8723ae: Update to vendor driver of 2013.02.07 - [
2
] tg3: Use bool not int - [
2
] wil6210: sync with new firmware
Various
- [
I 1
] Bluetooth: Add support for Intel Bluetooth device [8087:07dc] - [
2
] Bluetooth: hidp: add new session-management helpers - [
1
] Bluetooth: Update mgmt powered HCI commands to use async requests - [
C 2
] caif: remove caif_shm - [
C N2
] caif_virtio: Introduce caif over virtio - [
DN
] can: at91_can: add dt support - [
D
] doc: packet: add minimal TPACKET_V3 example code - [
DN
] Documentation: cgroup: add documentation for net_cls cgroups. - [
- [
N
] filter: add minimal BPF JIT image disassembler - [
- [
D
] ieee802154/nl-mac.c: make some MLME operations optional - [
C 2
] IPIP: Use ip-tunneling code. - [
N
] ipv6: Kill ipv6 dependency of icmpv6_send(). - [
4
] ipvs: convert services to rcu - [
1
] net: add ETH_P_802_3_MIN - [
1
] net: Add MIB counters for checksum errors - [
- [
- [
1
] netfilter: ipset: Introduce extensions to elements in the core - [
1
] netfilter: ipset: The bitmap types with counter support - [
2
] netfilter: ipset: The hash types with counter support - [
N
] netfilter: make /proc/net/netfilter pernet - [
- [
2
] netfilter: nf_log: prepare net namespace support for loggers - [
1
] netfilter: nfnetlink_log: add net namespace support for nfnetlink_log - [
1
] netfilter: nfnetlink_queue: add net namespace support for nfnetlink_queue - [
- [
- [
- [
C N
] netlink: Diag core and basic socket info dumping (v2) - [
- [
C 1
] netlink: mmaped netlink: ring setup - [
- [
D
] net: mv643xx_eth: add shared clk and cleanup existing clk handling - [
D
] net: mvmdio: add clocks property to binding documentation - [
- [
4
] net: vlan: add protocol argument to packet tagging functions - [
2
] net: vlan: prepare for 802.1ad support - [
4
] net: vlan: prepare for 802.1ad VLAN filtering offload - [
C N1
] NFC: mei: Add a common mei bus API for NFC drivers - [
C
] NFC: Move LLCP code to the NFC top level diirectory - [
C N
] NFC: pn544: Add MEI physical layer - [
D
] packet: doc: update timestamping part - [
N2
] packet: packet fanout rollover during socket overload - [
- [
N2
] selftests: net: add PF_PACKET TPACKET v1/v2/v3 selftests - [
D
] stmmac: review driver documentation - [
D
] tcp: implement RFC5682 F-RTO - [
D 2
] tcp: refactor F-RTO - [
- [
C N1
] tipc: add InfiniBand media type - [
- [
C
] Tunneling: use IP Tunnel stats APIs. - [
- [
C
] VXLAN: Fix vxlan stats handling.
Ein "C" im Bereich "[ ]" kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "I" ausgezeichnete 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.
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)