Networking has always been one of Linux's strongest features. Even in the early days when hardware support lagged behind, Linux had a fantastic network core that made it a go-to operating system for the Internet set. Linux 3.0 includes many improvements to the network core including overall better performance and hundreds of new supported devices.

Perhaps the most noteworthy feature addition in Linux 3.0 is the inclusion of IPv6. IPv6 is the so-called sixth release of the IP protocol, the underpinning of the entire Internet and most modern networking. The current version of the protocol, IPv4, is starting to show its age and may shortly run out of available network addresses. While this problem has been addressed in the past through the adoption of some new technologies (NAT and classless routing, to name two), it's increasingly clear that a move to IPv6 (or some other technology) will need to be made at some point. The sixth version of the protocol supports a significantly lengthened addressing scheme, built in security features, larger datagram sizes, and other improvements. When and if we Internet users switch en masse to the new protocol has yet to be determined, Linux is ready.

Linux 3.0 also includes many other tweaks and improvements to the core TCP/IP stack. Based on work being done at Google (per a recent Internet Draft standard document), Linux has updated its TCP implementation to use a larger initial window size. In order to prevent congestion on a TCP/IP network, the TCP protocol will “slow start” to gradually consume more and more bandwidth until either it runs out of data to send or until it detects congestion. This larger window size means that the “slow start” starts somewhat less slow. The end result is that short burst connections will be handled more efficiently and systems will scale up more quickly to use all available bandwidth. In addition to this change, Linux's TCP stack now allows administrators to select from several congestion control algorithms which each have advantages in certain situations, such as very high-bandwidth links or wireless devices.

Two other core network features are worthy of note. First, the Linux network subsystem has been made considerably faster on multi-processor systems. Unlike under Linux 2.6, incoming network traffic on different interfaces can now be handled on multiple CPUs. This will ensure that Linux can deal with multiple high-throughput network devices with less latency. And second, the Linux wireless driver system has been completely rewritten. In addition to just supporting many new devices, these devices are now supported in a more uniform way and with more features available on more of the cards. Key here are improvements to the low-level Ethernet implementation (including a complete software stack where necessary), QoS support, and others.

One increasingly important area of network development is in the wide use of VPN protocols. VPN, or Virtual Private Network, protocols connect your personal computer or network to a remote private network such as at an office. Linux 2.6 already supported several types of VPNs including those run using IPSec (IP Security) and other forms of IP-over-IP tunneling. Linux 3.0 builds on this support by adding L2TP, the Layer 2 Tunneling Protocol. This protocol standard is gaining traction in the VPN world and is supported on Windows. (L2TP doesn't actually provide encryption on its own and uses IPSec for that purpose.) The most common form of Windows VPN connection, PPTP or the “Point to Point Tunneling Protocol” does have a Linux driver, however it is still considered experimental in Linux 3.0.

Linux 3.0 includes several other new network stacks which have varying rates of adoption. BATMAN, or the “Better Approach to Mobile Adhoc Networking” is new in Linux 3.0 and allows for the creation of a decentralized network where each node participates in a mesh format. This could be used in regions where network infrastructure is limited or monitored. WiMax is also new in Linux 3.0. This technology, with the correct hardware, allows for joining wide area wireless networks such as over a rural region where providing wired connectivity is difficult or impossible.

Continue on to Device Busses...