*** empty log message ***

This commit is contained in:
binh 2008-01-05 15:19:09 +00:00
parent 21c1272a39
commit 84c7315f0f
1 changed files with 143 additions and 118 deletions

View File

@ -3,135 +3,160 @@
<title>Overview</title>
<para>
A Brief History of Linux Networking Kernel Development.
As with the rest of the Linux operating system and its numerous components
development of networking stack within Linux has been both a slow and
complex journey that has resembled that journey that has been faced by
people in the development of networking stacks of other operating systems
such as Microsoft Windows and Free BSD.
</para>
Developing a brand new kernel implementation of the tcp/ip protocol
stack that would perform as well as existing implementations was not
an easy task. The decision not to port one of the existing
implementations was made at a time when there was some uncertainty as
to whether the existing implementations may become encumbered by
restrictive copyrights because of the court case put by U.S.L. and
when there was a lot of fresh enthusiasm for doing it differently and
perhaps even better than had already been done.
<para>
As has been stated in the Linux Networking HOWTO
(http://tldp.org/HOWTO/NET3-4-HOWTO.html)
the actual implementation of the TCP/IP protocol stack was done
basically from scratch due to concerns with regards to copyright issues
as well as the possibilty that developers would be able to come up
with a protocol stack that was superior to existing protocol stacks.
</para>
The original volunteer to lead development of the kernel network code
was Ross Biro <biro@yggdrasil.com>. Ross produced a simple and
incomplete but mostly usable implementation set of routines that were
complemented by an ethernet driver for the WD-8003 network interface
card. This was enough to get many people testing and experimenting
with the software and some people even managed to connect machines in
this configuration to live internet connections. The pressure within
the Linux community driving development for networking support was
building and eventually the cost of a combination of some unfair
pressure applied to Ross and his own personal commitments outweighed
the benefit he was deriving and he stepped down as lead developer.
Ross's efforts in getting the project started and accepting the
responsibility for actually producing something useful in such
controversial circumstances were what catalyzed all future work and
were therefore an essential component of the success of the current
product.
<para>
<screen>
The original volunteer to lead development of the kernel network code
was Ross Biro <biro@yggdrasil.com>. Ross produced a simple and
incomplete but mostly usable implementation set of routines that were
complemented by an ethernet driver for the WD-8003 network interface
card.This was enough to get many people testing and experimenting
with the software and some people even managed to connect machines in
this configuration to live internet connections. The pressure within
the Linux community driving development for networking support was
building and eventually the cost of a combination of some unfair
pressure applied to Ross and his own personal commitments outweighed
the benefit he was deriving and he stepped down as lead developer.
Ross's efforts in getting the project started and accepting the
responsibility for actually producing something useful in such
controversial circumstances were what catalyzed all future work and
were therefore an essential component of the success of the current
product.
Orest Zborowski <obz@Kodak.com> produced the original BSD socket
programming interface for the Linux kernel. This was a big step
forward as it allowed many of the existing network applications to be
ported to linux without serious modification.
Orest Zborowski <obz@Kodak.com> produced the original BSD socket
programming interface for the Linux kernel. This was a big step
forward as it allowed many of the existing network applications to be
ported to linux without serious modification.
Somewhere about this time Laurence Culhane <loz@holmes.demon.co.uk>
developed the first drivers for Linux to support the SLIP protocol.
These enabled many people who did not have access to Ethernet
networking to experiment with the new networking software. Again, some
people took this driver and pressed it into service to connect them to
the Internet. This gave many more people a taste of the possibilities
that could be realized if Linux had full networking support and grew
the number of users actively using and experimenting with the
networking software that existed.
Somewhere about this time Laurence Culhane <loz@holmes.demon.co.uk>
developed the first drivers for Linux to support the SLIP protocol.
These enabled many people who did not have access to Ethernet
networking to experiment with the new networking software. Again, some
people took this driver and pressed it into service to connect them to
the Internet. This gave many more people a taste of the possibilities
that could be realized if Linux had full networking support and grew
the number of users actively using and experimenting with the
networking software that existed.
One of the people that had also been actively working on the task of
building networking support was Fred van Kempen
<waltje@uwalt.nl.mugnet.org>. After a period of some uncertainty
following Ross's resignation from the lead developer position Fred
offered his time and effort and accepted the role essentially
unopposed. Fred had some ambitious plans for the direction that he
wanted to take the Linux networking software and he set about
progressing in those directions. Fred produced a series of networking
code called the `NET-2' kernel code (the `NET' code being Ross's)
which many people were able to use pretty much usefully. Fred formally
put a number of innovations on the development agenda, such as the
dynamic device interface, Amateur Radio AX.25 protocol support and a
more modularly designed networking implementation. Fred's NET-2 code
was used by a fairly large number of enthusiasts, the number
increasing all the time as word spread that the software was working.
The networking software at this time was still a large number of
patches to the standard release of kernel code and was not included in
the normal release. The NET-FAQ and subsequent NET-2-HOWTO's
described the then fairly complex procedure to get it all working.
Fred's focus was on developing innovations to the standard network
implementations and this was taking time. The community of users was
growing impatient for something that worked reliably and satisfied the
80% of users and, as with Ross, the pressure on Fred as lead developer
rose.
One of the people that had also been actively working on the task of
building networking support was Fred van Kempen
<waltje@uwalt.nl.mugnet.org>.After a period of some uncertainty
following Ross's resignation from the lead developer position Fred
offered his time and effort and accepted the role essentially
unopposed. Fred had some ambitious plans for the direction that he
wanted to take the Linux networking software and he set about
progressing in those directions. Fred produced a series of networking
code called the `NET-2' kernel code (the `NET' code being Ross's)
which many people were able to use pretty much usefully. Fred formally
put a number of innovations on the development agenda, such as the
dynamic device interface, Amateur Radio AX.25 protocol support and a
more modularly designed networking implementation.Fred's NET-2 code
was used by a fairly large number of enthusiasts, the number
increasing all the time as word spread that the software was working.
The networking software at this time was still a large number of
patches to the standard release of kernel code and was not included in
the normal release.The NET-FAQ and subsequent NET-2-HOWTO's
described the then fairly complex procedure to get it all working.
Fred's focus was on developing innovations to the standard network
implementations and this was taking time. The community of users was
growing impatient for something that worked reliably and satisfied the
80% of users and, as with Ross, the pressure on Fred as lead developer
rose.
Alan Cox <iialan@www.uk.linux.org> proposed a solution to the problem
designed to resolve the situation. He proposed that he would take
Fred's NET-2 code and debug it, making it reliable and stable so that
it would satisfy the impatient user base while relieving that pressure
from Fred allowing him to continue his work. Alan set about doing
this, with some good success and his first version of Linux networking
code was called `Net-2D(ebugged)'. The code worked reliably in many
typical configurations and the user base was happy. Alan clearly had
ideas and skills of his own to contribute to the project and many
discussions relating to the direction the NET-2 code was heading
ensued. There developed two distinct schools within the Linux
networking community, one that had the philosophy of `make it work
first, then make it better' and the other of `make it better first'.
Linus ultimately arbitrated and offered his support to Alan's
development efforts and included Alan's code in the standard kernel
source distribution. This placed Fred in a difficult position. Any
continued development would lack the large user base actively using
and testing the code and this would mean progress would be slow and
difficult. Fred continued to work for a short time and eventually
stood down and Alan came to be the new leader of the Linux networking
kernel development effort.
Alan Cox <iialan@www.uk.linux.org> proposed a solution to the problem
designed to resolve the situation. He proposed that he would take
Fred's NET-2 code and debug it, making it reliable and stable so that
it would satisfy the impatient user base while relieving that pressure
from Fred allowing him to continue his work. Alan set about doing
this, with some good success and his first version of Linux networking
code was called `Net-2D(ebugged)'. The code worked reliably in many
typical configurations and the user base was happy. Alan clearly had
ideas and skills of his own to contribute to the project and many
discussions relating to the direction the NET-2 code was heading
ensued. There developed two distinct schools within the Linux
networking community, one that had the philosophy of `make it work
first, then make it better' and the other of `make it better first'.
Linus ultimately arbitrated and offered his support to Alan's
development efforts and included Alan's code in the standard kernel
source distribution.This placed Fred in a difficult position. Any
continued development would lack the large user base actively using
and testing the code and this would mean progress would be slow and
difficult. Fred continued to work for a short time and eventually
stood down and Alan came to be the new leader of the Linux networking
kernel development effort.
Donald Becker <becker@cesdis.gsfc.nasa.gov> soon revealed his talents
in the low level aspects of networking and produced a huge range of
ethernet drivers, nearly all of those included in the current kernels
were developed by Donald. There have been other people that have made
significant contributions, but Donald's work is prolific and so
warrants special mention.
Donald Becker <becker@cesdis.gsfc.nasa.gov> soon revealed his talents
in the low level aspects of networking and produced a huge range of
ethernet drivers, nearly all of those included in the current kernels
were developed by Donald. There have been other people that have made
significant contributions, but Donald's work is prolific and so
warrants special mention.
Alan continued refining the NET-2-Debugged code for some time while
working on progressing some of the matters that remained unaddressed
on the `TODO' list. By the time the Linux 1.3.* kernel source had
grown its teeth the kernel networking code had migrated to the NET-3
release on which current versions are based. Alan worked on many
different aspects of the networking code and with the assistance of a
range of other talented people from the Linux networking community
grew the code in all sorts of directions. Alan produced dynamic
network devices and the first standard AX.25 and IPX implementations.
Alan has continued tinkering with the code, slowly restructuring and
enhancing it to the state it is in today.
Alan continued refining the NET-2-Debugged code for some time while
working on progressing some of the matters that remained unaddressed
on the `TODO' list.By the time the Linux 1.3.* kernel source had
grown its teeth the kernel networking code had migrated to the NET-3
release on which current versions are based. Alan worked on many
different aspects of the networking code and with the assistance of a
range of other talented people from the Linux networking community
grew the code in all sorts of directions. Alan produced dynamic
network devices and the first standard AX.25 and IPX implementations.
Alan has continued tinkering with the code, slowly restructuring and
enhancing it to the state it is in today.
PPP support was added by Michael Callahan <callahan@maths.ox.ac.uk>
and Al Longyear <longyear@netcom.com> this too was critical to
increasing the number of people actively using linux for networking.
PPP support was added by Michael Callahan <callahan@maths.ox.ac.uk>
and Al Longyear <longyear@netcom.com> this too was critical to
increasing the number of people actively using linux for networking.
Jonathon Naylor <jsn@cs.nott.ac.uk> has contributed by significantly
enhancing Alan's AX.25 code, adding NetRom and Rose protocol support.
The AX.25/NetRom/Rose support itself is quite significant, because no
other operating system can boast standard native support for these
protocols beside Linux.
Jonathon Naylor <jsn@cs.nott.ac.uk> has contributed by significantly
enhancing Alan's AX.25 code, adding NetRom and Rose protocol support.
The AX.25/NetRom/Rose support itself is quite significant, because no
other operating system can boast standard native support for these
protocols beside Linux.
There have of course been hundreds of other people who have made
significant contribution to the development of the Linux networking
software. Some of these you will encounter later in the technology
specific sections, other people have contributed modules, drivers,
bug-fixes, suggestions, test reports and moral support. In all cases
each can claim to have played a part and offered what they could. The
Linux kernel networking code is an excellent example of the results
that can be obtained from the Linux style of anarchic development, if
it hasn't yet surprised you, it is bound to soon enough, the
development hasn't stopped.
There have of course been hundreds of other people who have made
significant contribution to the development of the Linux networking
software. Some of these you will encounter later in the technology
specific sections, other people have contributed modules, drivers,
bug-fixes, suggestions, test reports and moral support. In all cases
each can claim to have played a part and offered what they could. The
Linux kernel networking code is an excellent example of the results
that can be obtained from the Linux style of anarchic development, if
it hasn't yet surprised you, it is bound to soon enough, the
development hasn't stopped.
Linux Networking HOWTO, http://tldp.org/HOWTO/NET3-4-HOWTO.html
</screen>
</para>
----------
<para>
5.1.4. IP Addresses, an Explanation.