Kernel Log: Coming in 3.0 (Part 1) - Networking
by Thorsten Leemhuis
A Just-in-Time compiler promises to provide fast network packet filtering. The Wi-Fi stack now supports the Wake-on-Wireless-LAN standard, and unprivileged users are allowed to "ping". New and improved drivers enhance the kernel's support of network components by Ralink and Realtek.
At the beginning of the week, Linus Torvalds issued the second release candidate of Linux 3.0. After a rather surprising version jump from 2.6.39 to 3.0, RC2 has internally presented itself as another Linux 3.0.0 release candidate for reasons of compatibility, although the eventual kernel is to be called 3.0. In his release email for RC2, Torvalds writes that things have been reasonably quiet, although a Btrfs update was bigger than he had hoped; "hopefully things will stay calm", he continued.
As scheduled, most of the changes for the next major kernel revision were incorporated into the main development branch of Linux during the merge window. As only corrections and minor improvements are likely to be incorporated from now on, the Kernel Log is already in a position to provide a comprehensive overview of the most important advancements of Linux 3.0, which is expected to be completed near the middle or end of July.
Several articles in the "Coming in 3.0" series will gradually cover the kernel's various functional areas. The first part in this mini series follows below and describes the most important changes to the network stack and the drivers that are based on it. Over the coming weeks, further articles will discuss the kernel's graphics drivers, storage support, file systems, architecture code, infrastructure and other hardware drivers.
Just in time
The netfilter code now includes a "Berkeley Packet Filter Just-in-Time Compiler" for x86-64 systems. It generates assembler code at rumtime that carries out some of the network packet filtering tasks set by sniffer tools such as Tcpdump. Disabled by default, the JIT compiler can be enabled by writing "1" into the /proc/sys/net/core/bpf_jit_enable file; when testing an earlier version of the compiler, its developer managed to measure savings of 50 nanoseconds per packet. Further background about this approach is available in an article on LWN.net.
Samba developer Anton Blanchard has submitted the new sendmmsg syscall. It is the sending equivalent to recvmmsg and allows multiple messages to be sent with only one function call. This reduces the syscall overhead and can increase the network's sending throughput; according to measurements by the developer, the increase was 20 per cent for UDP transmissions and 30 per cent when using raw sockets.
Ping for everyone
Ping programs can use the new IPPROTO_ICMP socket to enable unprivileged users to send and receive ICMP_ECHO packets; previously, ping under Linux required root privileges or received the necessary operational privileges via capabilities. Mac OS X has offered a similar function for some time; the commit comment and a short article on LWN.net offer some background on this.
A network scheduler has been added to the kernel that implements the Quick Fair Queue (QFQ) mechanism, which is said to generate less overhead. The new setns syscall allows a namespace to be created that can be submitted to various processes; according to the Git-Pull request such a namespace can, for instance, allow VPN connections to be isolated. Background details on this approach that are also interesting for container virtualisation can be found in an article on LWN.net. The Bluetooth stack now offers Extended Inquiry Response (EIR) support, and the Bluetooth USB driver supports the MacBook Pro "8,2".