1.3. Linux Networking
As it is the
result of a concerted effort of programmers around the world, Linux
wouldn't have been possible without the global
network. So it's not surprising that in the early
stages of development, several people started to work on providing it
with network capabilities. A UUCP implementation was running on Linux
almost from the very beginning, and work on TCP/IP-based networking
started around autumn 1992, when Ross Biro and others created what
has now become known as Net-1.
After Ross quit active
development in May 1993, Fred van Kempen began to work on a new
implementation, rewriting major parts of the code. This project was
known as Net-2. The first public release, Net-2d, was made in the
summer of 1993 (as part of the 0.99.10 kernel), and has since been
maintained and expanded by several people, most notably Alan Cox.
Alan's original work was known as Net-2Debugged.
After heavy debugging and numerous improvements to the code, he
changed its name to Net-3 after Linux 1.0 was released. The Net-3
code was further developed for Linux 1.2 and Linux 2.0. The 2.2 and
later kernels use the Net-4 version network support, which remains
the standard official offering today.
The Net-4 Linux Network code offers a wide
variety of device drivers and advanced features. Standard Net-4
protocols include SLIP and PPP (for sending network traffic over
serial lines), PLIP (for parallel lines), IPX (for Novell compatible
networks), Appletalk (for Apple networks) and AX.25, NetRom, and Rose
(for amateur radio networks). Other standard Net-4 features include
IP firewalling (discussed in Chapter 7), IP
accounting (Chapter 8), and IP Masquerade
(Chapter 9). IP tunneling in a couple of
different flavors and advanced policy routing are supported. A very
large variety of Ethernet devices are supported, in addition to
support for some FDDI, Token Ring, Frame Relay, and ISDN, and ATM
cards.Additionally, there are a number of other
features that greatly enhance the flexibility of Linux. These
features include interoperability with the Microsoft Windows network
environment, in a project called Samba, discussed in Chapter 16, and an implementation of the Novell NCP
(NetWare Core Protocol).[4][4] NCP is the protocol on which
Novell file and print services are based.
1.3.1. Different Streaks of Development
There
have been, at various times, varying network development efforts
active for Linux.Fred continued development after Net-2Debugged was made the official
network implementation. This development led to the Net-2e, which
featured a much revised design of the networking layer. Fred was
working toward a standardized Device Driver Interface (DDI), but the
Net-2e work has ended now. Yet another implementation of TCP/IP
networking came from Matthias Urlichs, who wrote an ISDN driver for
Linux and FreeBSD. For this driver, he integrated some of the BSD
networking code in the Linux kernel. That project, too, is no longer
being worked on.There has been a lot of rapid change in the Linux kernel networking
implementation, and change is still the watchword as development
continues. Sometimes this means that changes also have to occur in
other software, such as the network configuration tools. While this
is no longer as large a problem as it once was, you may still find
that upgrading your kernel to a later version means that you must
upgrade your network configuration tools, too. Fortunately, with the
large number of Linux distributions available today, this is a quite
simple task.The Net-4 network
implementation is now a standard and is in use at a very large number
of sites around the world. Much work has been done on improving the
performance of the Net-4 implementation, and it now competes with the
best implementations available for the same hardware platforms. Linux
is proliferating in the Internet Service Provider environment, and is
often used to build cheap and reliable World Wide Web servers, mail
servers, and news servers for these sorts of organizations. There is
now sufficient development interest in Linux that it is managing to
keep abreast of networking technology as it changes, and current
releases of the Linux kernel offer the next generation of the IP
protocol, IPv6, as a standard offering, which will be discussed at
greater detail in Chapter 13.
1.3.2. Where to Get the Code
It seems odd now to remember that in the
early days of the Linux network code development, the standard kernel
required a huge patch kit to add the networking support to it. Today,
network development occurs as part of the mainstream Linux kernel
development process. The latest stable Linux kernels can be found on
http://www.kernel.org. There are
Linux kernel source mirrors all over the world.