Inhalt

3. Allgemeine Information über Netzwerke in Linux

3.1 Eine kurze Geschichte der Netzwerk-Kernelentwicklung

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, die 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 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 dies 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.

3.2 Wo bekomme ich weitere Informationen zum Netzwerk unterLinux?

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. Dieser ist ein Teil des Linux Documentatation Project und kann entweder via ftp in diversen Formaten besorgt werden

sunsite.unc.edu:/pub/Linux/docs/LDP/network-guide/
oder inzwischen auch direkt über das Netz gelesen werden:
http://sunsite.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 Newsgroups gibt es auch eine, die sich speziell mit allen Belangen des Netzwerkens befaßt: de.comp.os.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. Dies umfaßt auch den genauen Wortlaut etwaiger Fehlermeldungen sowie die genaue Syntax, mit der man ein Programm startet.

3.3 Nicht Linux-spezifische Informationsquellen.

Wer nach einer grundlegenden Einführung in TCP/IP Netzwerke sucht, dem seien folgende Dokumente empfohlen:

TCP/IP introduction

entweder als Textversion (athos.rutgers.edu:/runet/tcp-ip-intro.doc)

oder in PostScript Form (athos.rutgers.edu:/runet/tcp-ip-intro.ps)

TCP/IP administration

entweder als Textversion (athos.rutgers.edu:/runet/tcp-ip-admin.doc)

oder in PostScript Form (athos.rutgers.edu:/runet/tcp-ip-admin.ps)

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.

Das folgende Buch befaßt sich mit dem Schreiben von Netzwerk-Anwendungen in einer Unix Umgebung:

"Unix Network Programming"
von W. Richard Stevens

ISBN 0-13-949876-1
Prentice Hall publications.

Ein guter Tip ist eventuell auch die Newsgroup comp.protocols.tcp-ip.

Eine ungemein wichtige Quelle für spezielle technische Informationen zu Internet und TCP/IP Netzwerken sind die RFC's. 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 RFC's gesammelt und archiviert werden. Viele davon sind über 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


Inhalt