Eine völlig neue Implementation des TCP/IP Protokolles im Kernel zu entwickeln, die mindestens so schnell ist wie bereits vorhandene war keine leichte Aufgabe. Die Entscheidung, keinen der bereits vorhandenen Treiber zu übertragen, fiel zu einem Zeitpunkt, an dem es einige Unsicherheiten darüber gab, ob ebendiese Implementationen mit einem restriktiven Copyright belegt werden würden. Außerdem war zu diesem Zeitpunkt der Enthusiasmus recht groß, diese Aufgabe auf eine andere Weise und womöglich sogar besser als in den vorhandenen Treibern zu lösen.
Der erste, der die Entwicklung des Linux Netzwerk-Codes leitete, war
Ross Biro (biro@yggdrasil.com
). Er schrieb einen zwar nicht ganz
vollständigen aber dennoch gut brauchbaren Code, der durch einen Treiber
für die WD-8003 Netzwerk-Karte vervollständigt wurde. Dies reichte aus,
um viele andere dazu zu bringen, diesen Code zu testen und mit ihm zu
experimentieren. Manchen ist es sogar bereits mit dieser Konfiguration
gelungen, ihren Rechner an das Internet anzuschließen. Dadurch stieg im
Linux-Umfeld der Druck, die Entwicklung des Netzwerk-Codes
voranzutreiben. Dieser unfaire Druck, wohl zusammen mit seinen privaten
Verpflichtungen, veranlaßten Ross, diese Rolle als Hauptentwickler
aufzugeben. Seine Bemühungen, das ursprünglich Projekt ins Rollen zu
bringen und die Verantwortung dafür zu übernehmen, daß dabei auch unter
schwierigen Bedingungen etwas brauchbares herauskam, wirkten als
Katalysator für alle folgenden Arbeiten und sind aus diesem Grund ein
wesentlicher Baustein des Erfolges des heutigen Produktes.
Die Programmierung des originalen BSD Socket Interface im Linux Kernel
wurde von Orest Zborowski
(obz@Kodak.COM
)
durchgeführt. Dies war ein gewaltiger Schritt nach vorne, da es dadurch
möglich wurde, eine große Zahl von Netzwerkanwendungen ohne großen
Aufwand für Linux zu portieren.
Ungefähr zu diesem Zeitpunkt schrieb Laurence Culhane (loz@holmes.demon.co.uk
)
den ersten SLIP-Treiber für Linux. Dadurch konnten endlich auch solche
Leute mit dem Netzwerk experimentieren, die nicht über Zugang zu einem
Ethernet verfügten. Auch dieser Treiber wurde weiterentwickelt, um eine
Internetanbindung über SLIP zu ermöglichen. Erneut stieg die Zahl
derjeniger, die aktiv an der Erprobung und Weiterentwicklung der
Netzwerk-Software mitarbeiten konnten; auch wurde vielen jetzt vor Augen
geführt, was mit Linux alles möglich ist, wenn man erst einmal eine
vollständige Netzwerkunterstützung hat.
Einer dieser Personen, die aktiv an der Netzwerkunterstützung für
Linux arbeiteten, war Fred van Kempen
(waltje@uwalt.nl.mugnet.org
). Nach einer Phase der
Ungewißheit, die auf den Rückzug von Ross folgte, bot Fred seine
Zeit und Arbeitskraft für diesen Posten an.
Fred hatte einige sehr ambitionierte Pläne bezüglich der Richtung, in
die die Entwicklung des Linux Netzwerk-Codes gehen sollte, und er begann
damit, die notwendigen Schritte zu tun. Fred schrieb eine Version
dieser Software, die als »NET-2« Kernel Code bezeichnet
wurde (»NET«
Code war die Version von Ross). Diese Version konnte von vielen Leuten
erfolgreich eingesetzt werden. Fred schrieb auch einige Neuerungen in
die Planbücher der Entwickler, so z.B. die dynamische
Geräteschnittstelle, Unterstützung für das Amateurfunk Protokoll AX.25
sowie eine stärker modularisierte Version der Software. Freds Programme
wurden zunächst von einigen Enthusiasten benutzt, deren Zahl aber
ständig zunahm, je mehr sich herumsprach daß die Software gut
funktionierte. Zu diesem Zeitpunkt bestand die Netzwerksoftware immer
noch aus einer großen Anzahl von Patches gegenüber dem Standard-Kernel;
sie gehörte nicht zur normalen Distribution. Das NET_FAQ und die
folgenden NET-2 HOWTOs beschrieben die recht komplizierte Prozedur,
all dies zum Laufen zu bekommen. Freds Hauptaugenmerk lag darauf,
Neuerungen zu entwickeln, und das beanspruchte Zeit. Die
Nutzergemeinschaft hingegen wartete immer ungeduldiger auf eine stabile
Version, die für 80% auch funktionierte. Wie bereits bei Ross stieg der
Druck auf Fred als Hauptentwickler.
Alan Cox (iialan@www.linux.uk.org
) schlug daraufhin eine Lösung
des Problems vor. Er wollte Freds NET-2 Code nehmen und die Fehler
darin beseitigen, um so eine stabile und zuverlässige Version
zusammenzustellen, die die ungeduldigen Nutzer zufriedenstellte und den
Druck von Freds Schultern nahm, sodaß dieser seine eigentliche Arbeit
verfolgen konnte. Alan tat dies mit Erfolg, und seine erste Version
wurde als »NET-2D(ebugged)« bezeichnet.
Sie arbeitete zuverlässig in
vielen typischen Konfigurationen, und die Benutzer waren glücklich.
Alan hatte natürlich auch eigene Ideen und auch die Fähigkeiten, die er
zum Projekt beitragen wollte, und in der Folgezeit gab es viele
Diskussionen darüber, in welche Richtung die Entwicklung des
Netzwerk-Codes gehen solle. Es bildeten sich zwei Lager in der
Linux-Gemeinde. Die eine vertrat die Ansicht, der Code müsse zunächst
funktionieren, dann könne man ihn verbessern, die andere Gruppe wollte
ihn zunächst verbessern. Linus fällte letztendlich die Entscheidung,
indem er Alan seien Unterstützung anbot und seine Version in die
offiziellen Kernel Distribution aufnahm. Dadurch geriet Fred in eine
schwierige Lage. Jede Weiterentwicklung seines Codes hätte nun nicht
mehr die Verbreitung und breite Nutzerbasis, die für ein gutes Testen
nötig wäre. Dadurch würde der Fortschritt langsam und schwierig werden.
Fred arbeitete noch eine zeitlang weiter, zog sich dann aber zurück und
Alan wurde der neue Kopf der Netzwerk Entwicklung.
Donald Becker (becker@cesdis.gsfc.nasa.gov
) zeigte bald sein
Talent auf dem Bereich des Low-Level Netzwerk-Codes und schuf eine große
Zahl von Ethernet-Treibern; fast alle in der Standard
Kerneldistribution enthaltenen wurden von ihm entwickelt. Auch einige
andere Personen haben wichtige Beiträge geliefert, doch Donalds Arbeit
war äußerst fruchtbar und rechtfertigt so die besondere Erwähnung.
Alan setzte seine Arbeit an der Verbesserung des NET-2D Codes fort, und beschäftigte sich mit einigen Bereichen der »TODO« Liste, die bislang unberücksichtigt geblieben waren. Mit der Stabilisierung der Kernelversionen der 1.3.x Serie hatte auch der Netzwerk-Code den Schritt zur Version NET-3 vollzogen, auf dem auch die aktuellen Versionen basieren. Alan arbeitete an unterschiedlichen Aspekten des Netzwerk-Codes und mit der Hilfe einer Zahl anderer talentierter Programmierer aus der Linux Gemeinschaft wuchs der Code in alle möglichen Richtungen. Alan schrieb die dynamischen Netzwerk Devices und die ersten standardkonformen AX.25 und IPX Implementationen. Seine Feinarbeit am Code hat Alan fortgesetzt und in auf den heutigen Stand verbessert.
Unterstützung für PPP wurde von Michael Callahan
(callahan@maths.ox.ac.uk
) und Al Longyear
(longyear@netcom.com
) implementiert. Auch dieses
war ein wichtiger Schritt, der die Anzahl derjenigen Nutzer erhöhte, die
Linux für Netzwerkaufgaben einsetzten.
Durch Jonathon Naylor (jsn@cs.nott.ac.uk
) wurde der AX.25 Code
von Alan deutlich verbessert und Unterstützung für das NetRom Protokoll
hinzugefügt. Damit war Linux das einzige System, das sich rühmen konnte,
von Haus aus AX.25/NetRom zu unterstützen.
Selbstverständlich haben darüberhinaus hunderte weiterer Personen wichtige Beiträge zur Weiterentwicklung der Netzwerk-Software für Linux geliefert. Einige dieser Namen werden weiter unten in den entsprechenden Abschnitten erwähnt; andere haben Module oder Treiber geschrieben, Fehler beseitigt, Vorschläge gemacht, Tests durchgeführt oder einfach moralische Unterstützung geliefert. Jeder von ihnen kann von sich sagen, seinen Teil zum Ganzen hinzugefügt zu haben. Der Linux Netzwerk-Code ist ein hervorragendes Beispiel dafür, welch beeindruckende Ergebnisse der Linux-typische anarchische Stil der Entwicklung liefern kann. Und diese Entwicklung geht natürlich noch immer weiter.
Alan Cox, der derzeit die Entwicklung des Netzwerk Codes leitet, unterhält eine Seite im World Wide Web, die die Highlights der derzeitigen Entwicklung auflistet:
http://www.uk.linux.org/NetNews.html
Eine andere gute Quelle ist das Buch von Olaf Kirch: The Network Administrators Guide. Dieses ist ein Teil des Linux Documentatation Project und kann in diverse Formaten bezogen werden:
metalab.unc.edu:/pub/Linux/docs/LDP/network-guide/
Inzwischen kann es auch direkt über das Netz gelesen werden:
http://metalab.unc.edu/LDP/LDP/nag/nag.html
Olafs Buch ist sehr verständlich und gibt einen sehr tiefgehenden
Einblick in die Netzwerk Konfiguration unter Linux.
Unter den Linux Newsgruppen gibt es auch eine, die sich speziell mit allen Belangen des Netzwerkens befaßt:
de.comp.os.unix.linux.networking
Weiterhin besteht eine Mailing Liste zum Thema Netzwerke. Um sie zu abonnieren, genügt eine kurze Mail:
To: majordomo@vger.rutgers.edu
Subject: anything at all
Message:
subscribe linux-net
Auf vielen der diversen IRC Netzwerke gibt es auch oft #linux
Kanäle. Dort ist meist auch jemand bereit und in der Lage,
Hilfestellungen zum Thema Netzwerke zu geben.
Eines sollte man aber immer beherzigen, wenn man mit seinen Problemen an
die Öffentlichkeit will: Es sollte immer soviel wie möglich an
relevanter Information angegeben werden. Insbesondere sind das die
Versionsnummern des Kernels und der Software wie z.B. pppd
oder
dip
, sowie eine genaue Beschreibung der auftretenden Probleme.
Dieses umfaßt auch den genauen Wortlaut etwaiger Fehlermeldungen sowie die
genaue Syntax, mit der man ein Programm startet.
Wer nach einer grundlegenden Einführung in TCP/IP Netzwerke sucht, dem seien folgende Dokumente empfohlen:
athos.rutgers.edu:/runet/tcp-ip-intro.doc
athos.rutgers.edu:/runet/tcp-ip-admin.doc
Noch detailliertere Informationen zum TCP/IP Netzwerk findet man in folgendem Buch:
"Internetworking with TCP/IP"
von Douglas E. Comer
ISBN 0-13-474321-0
Prentice Hall publications
Die folgenden beiden Bücher befassen sich mit dem Schreiben von Netzwerk-Anwendungen in einer Unix Umgebung:
"Unix Network Programming 1/2"
von W. Richard Stevens
Prentice Hall publications
Ein guter Tip ist eventuell auch die Newsgruppe
comp.protocols.tcp-ip
Eine ungemein wichtige Quelle für spezielle technische Informationen zu Internet und TCP/IP Netzwerken sind die RFCs. RFC ist ein Akronym für »Request For Comment«, also »Bitte um Kommentar«. Es handelt sich dabei um den Standard, in dem Internet Protokolle dokumentiert werden. Es gibt viele Stellen, an denen RFCs gesammelt und archiviert werden. Viele davon sind per FTP erreichbar, manche bieten Zugang über das WWW, dann oft gekoppelt mit Suchmaschinen, mit denen eine gezielte Stichwortsuche möglich ist.
Eine mögliche Anlaufstelle ist die Nexor RFC database:
http://pubweb.nexor.co.uk/public/rfc/index/rfc.html