Im Katalog suchen

Linux - Wegweiser für Netzwerker

Online-Version

Copyright © 2001 by O'Reilly Verlag GmbH & Co.KG

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches Linux - Wegweiser für Netzwerker oder wollen Sie es bestellen, dann klicken Sie bitte hier.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel



Kapitel 3
Konfiguration der Netzwerkhardware

Bis jetzt haben wir uns ziemlich ausführlich mit Netzwerkschnittstellen und allgemeinen Fragen der TCP/IP-Protokolle befaßt, ohne uns groß darum zu kümmern, was eigentlich genau passiert, wenn “der Netzwerkcode” im Kernel ein Stück Hardware anspricht. Bevor wir das jetzt nachholen, müssen wir noch ein wenig über das Konzept der Schnittstellen und Treiber sprechen.

Zuallererst ist da natürlich die Hardware selbst, zum Beispiel eine Ethernet-, FDDI- oder Token-Ring-Karte. Das ist eine Leiterplatte voller kleiner Chips mit komischen Nummern drauf, das in einem Steckplatz Ihres PC sitzt. Das ist, was wir allgemein ein physisches Gerät nennen (device).

Um eine Netzwerkkarte benutzen zu können, müssen in Ihrem Linux-Kernel spezielle Funktionen vorhanden sein, die in der Lage sind, das Gerät anzusprechen. Diese Gruppe von Funktionen nennt man Gerätetreiber (device driver). Linux besitzt viele Treiber für unterschiedliche Typen von Netzwerkkarten: ISA, PCI, MCA, EISA, Parallelport, PCMCIA und neuerdings auch USB.

Aber was meinen wir eigentlich, wenn wir sagen, ein Treiber “bedient” ein Gerät? Nehmen wir doch mal eine Ethernet-Karte. Der Treiber muß in der Lage sein, mit den Logikbausteinen auf der Karte zu kommunizieren, während die Karte umgekehrt alle empfangenen Daten irgendwie beim Treiber abliefern muß.

In IBM-kompatiblen PCs findet diese Kommunikation durch einen speziellen Speicherbereich, der auf I/O-Register auf der Karte abgebildet wird, und/oder über gemeinsam genutze Speicherbereiche oder durch direkten Speichertransfer (direct memory access, kurz DMA) statt. Alle Befehle und Daten, die der Kernel an die Karte schickt, müssen an diese Adressen übermittelt werden. I/O- und Speicheradressen werden im allgemeinen mit ihrer Start- oder Basisadresse angegeben. Typische Basisadressen für Ethernet-Karten am ISA-Bus sind 0x280 oder 0x300. Netzwerkkarten am PCI-Bus erhalten ihre I/O-Adressen automatisch zugewiesen.

Normalerweise brauchen Sie sich über solche Details wie Basisadressen nicht den Kopf zu zerbrechen, da der Kernel beim Booten versucht, die Position der Karte selbst herauszufinden. Dieser Vorgang heißt Autoprobing, was bedeutet, daß der Kernel verschiedene Speicheradressen ausliest und mit dem vergleicht, was herauskommen sollte, wenn eine bestimmte Ethernet-Karte installiert wäre. Allerdings kann es Ethernet-Karten geben, die der Kernel nicht automatisch erkennt; das ist bei manchen billigen Netzwerkkarten der Fall, die unvollständige Nachbildungen von Netzwerkkarten anderer Hersteller sind. Außerdem gibt sich der Kernel beim Booten schon zufrieden, wenn er nur eine Karte gefunden hat; wenn Sie mehr als eine verwenden wollen, müssen Sie diese Karten von Hand konfigurieren.

Ein anderer Parameter, den Sie dem Kernel unter Umständen mitteilen müssen, ist der Interrupt-Kanal. Hardwarekomponenten schicken dem Kernel gewöhnlich eine Unterbrechungsanforderung, wenn sie seine Aufmerksamkeit benötigen, z.B. wenn Daten angekommen sind oder ein besonderer Zustand auftritt. In ISA-Bus-PCs können solche Unterbrechungen auf einem von 15 Interrupt-Kanälen signalisiert werden, die die Nummern 0, 1 und 3 bis 15 haben. Die einem Interrupt zugeordnete Nummer wird im Englischen interrupt request number oder kurz IRQ genannt.1

Wie in Kapitel 2 Aspekte der Netzwerkarbeit mit TCP/IP, beschrieben, spricht der Kernel ein Gerät über eine sogenannte Schnittstelle oder Interface an. Interfaces bieten einen Satz abstrakter Funktionen, der für alle Arten von Hardware gleich ist, wie zum Beispiel das Senden oder Empfangen eines Datagramms.

Jede Schnittstelle wird durch einen Namen bezeichnet. In vielen Unix-ähnlichen Betriebssystemen wird ein Netzwerk-Interface in Form einer speziellen Gerätedatei im Verzeichnis /dev/ implementiert. Wenn Sie das Kommando ls -las /dev/ ausführen, erkennen Sie, wie diese Gerätedateien aussehen. In der (zweiten) Spalte der Dateiattribute fällt auf, daß Gerätedateien immer mit einem Buchstaben statt mit einem Minuszeichen beginnen, wie es bei den normalen Dateien der Fall ist. Dieses Zeichen markiert den Gerätetyp. Meistens ist das ein b, was auf ein Block-Device hinweist, das bei jeder Lese- und Schreibopera­tionen immer ganze Blöcke von Daten verarbeitet, oder ein c, was bedeutet, daß es sich hierbei um ein Character-Device handelt, das immer nur ein Zeichen zur Zeit verarbeitet. Wo man in der Ausgabe des ls-Befehls die Dateilänge zu Gesicht bekommt, erscheinen bei Gerätedateien zwei Zahlen, die sogenannten Major und Minor Numbers. Sie bezeichnen immer das eigentliche Gerät, mit dem die Gerätedatei verknüpft ist.

Jeder Gerätetreiber erhält eine eindeutige Major Number vom Kernel. Jede Instanz eines solchen Geräts erhält außerdem eine eindeutige Minor Number. Die tty-Interfaces, /dev/tty*, sind zeichenorientierte Geräte, wie das “c” im Dateiattribut anzeigt, und besitzen die Major Number 4. /dev/tty1 hat die Minor Number 1, während /dev/tty2 die Minor Number 2 besitzt. Gerätedateien sind bei vielen Gerätetypen eine sehr nützliche Sache, allerdings etwas schwerfällig in der Handhabung, wenn es darum geht, ein Gerät zu ermitteln, das gerade frei ist.

In Linux sind die Namen der Interfaces keine Gerätedateien im Verzeichnis /dev, sondern werden intern vom Kernel vergeben. Einige typische Gerätenamen werden später in Ein Überblick über die Netzwerkgeräte aufgelistet. Die Zuordnung von Schnittstellen und Geräten hängt gewöhnlich von der Reihenfolge ab, in der die Geräte konfiguriert werden. Zum Beispiel wird die erste installierte Ethernet-Karte zu eth0, die nächste zu eth1 und so weiter. Eine Ausnahme von dieser Regel sind unter anderem die SLIP-Schnittstellen, die dynamisch zugewiesen werden; das heißt, sobald eine SLIP-Verbindung hergestellt wurde, wird dem seriellen Port ein Interface zugewiesen.

Abbildung 3.1 versucht, den Zusammenhang zwischen den Hardwarekomponenten, Gerätetreibern und Schnittstellen zu verdeutlichen.

Abbildung 3.1: Zusammenhang zwischen den Gerätetreibern, Schnittstellen und der Hardware

Während des Boot-Vorgangs zeigt der Kernel an, welche Geräte er erkennt und welche Schnittstellen initialisiert werden. Das folgende ist ein Ausschnitt eines typischen Boot-Vorgangs:

 .  .  This processor honors the WP bit even when in supervisor mode./     Good. Swansea University Computer Society NET3.035 for Linux 2.0 NET3: Unix domain sockets 0.13 for Linux NET3.035. Swansea University Computer Society TCP/IP for NET3.034 IP Protocols: IGMP,ICMP, UDP, TCP Swansea University Computer Society IPX 0.34 for NET3.035 IPX Portions Copyright (c) 1995 Caldera, Inc. Serial driver version 4.13 with no serial options enabled tty00 at 0x03f8 (irq = 4) is a 16550A tty01 at 0x02f8 (irq = 3) is a 16550A CSLIP: code copyright 1989 Regents of the University of California PPP: Version 2.2.0 (dynamic channel allocation) PPP Dynamic channel allocation code copyright 1995 Caldera, Inc. PPP line discipline registered. eth0: 3c509 at 0x300 tag 1, 10baseT port, address 00 a0 24 0e e4 e0,/     IRQ 10. 3c509.c:1.12 6/4/97 becker@cesdis.gsfc.nasa.gov Linux Version 2.0.32 (root@perf) (gcc Version 2.7.2.1) #1 Tue Oct 21 15:30:44 EST 1997  .  .

Die Meldungen zeigen, daß der Kernel netzwerkfähig ist und Treiber für SLIP, CSLIP und PPP eingebunden wurden. Die dritte Zeile von unten besagt, daß eine Ethernet-Karte vom Typ 3C509 erkannt und als Interface eth0 installiert wurde. Wenn Sie eine Netzwerkkarte eines anderen Typs verwenden, z.B. einen D-Link-Pocket-Adapter, gibt der Kernel für gewöhnlich eine Meldung aus, die mit dem Gerätenamen beginnt, z.B. dl0, gefolgt vom Typ der erkannten Karte. Falls Sie eine Netzwerkkarte installiert haben, aber keine derartige Meldung sehen, bedeutet das, daß der Kernel nicht in der Lage war, Ihre Karte zu erkennen. Dieses Problem werden wir später im Abschnitt “Ethernet Autoprobing” behandeln.




1.

Die IRQs 2 und 9 bezeichnen denselben Kanal. Der PC besitzt zwei kaskadierte Interrupt-Bausteine mit jeweils 8 Kanälen, wobei der zweite Baustein mit IRQ2 des ersten verbunden ist.


vorheriges Kapitel Inhaltsverzeichnis Stichwortverzeichnis nächstes Kapitel


Weitere Informationen zum Linux - Wegweiser für Netzwerker

Weitere Online-Bücher & Probekapitel finden Sie in unserem Online Book Center


O'Reilly Home|O'Reilly-Partnerbuchhandlungen|Bestellinformationen
Kontakt|Über O'Reilly|Datenschutz

© 2001, O'Reilly Verlag