IP Routing und Traceroute

Transcription

IP Routing und Traceroute
IP Routing und Traceroute
Seminar Internetprotokolle
Falko Klaaßen
März 2003
INHALTSVERZEICHNIS
1
Inhaltsverzeichnis
1 Einführung in das Thema
3
2 Das Internet
3
2.1
Aufbau des Internets . . . . . . . . . . . . . . . . . . . . . . .
3 Netzwerke verbinden
4
4
3.1
Netzwerke direkt verbinden . . . . . . . . . . . . . . . . . . .
5
3.2
Router . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
4 IP Routing (historisch, ohne CIDR und Subnetze)
7
4.1
Routing, Routing Decision und Routing Information . . . . . .
7
4.2
Versenden von Daten in Netzwerken . . . . . . . . . . . . . . .
7
4.2.1
Bestimmen des Ziel-Netzwerkes . . . . . . . . . . . . .
9
4.2.2
Daten im gleichen Netzwerk verschicken . . . . . . . .
9
4.2.3
Daten über mehrere Netzwerke verschicken . . . . . . . 10
5 Routing Algorithmen
13
5.1
Table-Driven IP Routing . . . . . . . . . . . . . . . . . . . . . 13
5.2
Next-Hop Routing . . . . . . . . . . . . . . . . . . . . . . . . 14
5.2.1
Aufbau der Routing Tabelle beim Next-Hop Routing . 14
5.3
Default Routes . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.4
Host-Specific Routes . . . . . . . . . . . . . . . . . . . . . . . 17
6 Der IP Routing Algorithmus
17
6.1
Der Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.2
Behandlung eingehender IP Datagramme . . . . . . . . . . . . 19
INHALTSVERZEICHNIS
7 Routing bei Subnetzen
2
22
7.1
Subnetze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
7.2
Die Subnetz-Maske . . . . . . . . . . . . . . . . . . . . . . . . 23
7.3
Der Subnetz Routing Algorithmus . . . . . . . . . . . . . . . . 24
7.4
Ein vereinheitlichter Routing Algorithmus . . . . . . . . . . . 25
7.5
CIDR-Notation . . . . . . . . . . . . . . . . . . . . . . . . . . 27
8 Traceroute
28
8.1
Funktionsweise von Traceroute . . . . . . . . . . . . . . . . . . 29
8.2
Die Ausgabe von Traceroute . . . . . . . . . . . . . . . . . . . 30
1 EINFÜHRUNG IN DAS THEMA
1
3
Einführung in das Thema
In dieser Ausarbeitung wird es um IP Router und das Programm Traceroute
gehen. Um verstehen zu können, wie IP Routing funktioniert, muss man
wissen, daß es beim Routen um das Weiterleiten von Datenpaketen zwischen
mehreren Netzwerken geht. Zum Einstieg befassen wir uns kurz mit dem
weit bekannten Internet und betrachten anschließend einige Möglichkeiten,
um verschiedene Netzwerke effizient miteinander zu verbinden.
Danach kommen wir dann zum Hauptteil dieser Ausarbeitung: Dem dem IP
Routing. Dabei werden wir, anhand eines Beispielnetzwerkes, die wichtigsten
Fälle behandeln, die beim Routen von Datenpaketen auftreten können. Dadurch erhalten wir einen allgemeinen Überblick darüber, was IP Routing ist
und wie die Router dabei vorgehen.
Mit diesem Wissen haben wir dann eine gute Ausgangsbasis, um das Routen von Datenpaketen näher im Detail betrachten zu können. Dazu führen
wir das Prinzip der Routing Tabelle (RT) und das Next-Hop-Routing ein.
Gleichzeitig dringen wir so tief in die Materie des Routens ein, daß wir jetzt
einen allgemeinen IP Routing Algorithmus formulieren können.
Aber hier sind wir noch nicht fertig. Im letzten Teil zum IP Routing gehen
wir auf Netzwerke mit Subnetzen ein. Dabei erörten wir, wie sich diese auf
den Routing Algorithmus auswirken.
Abschließend wird das Programm Traceroute behandelt, mit dessen Hilfe
man die Route, die Datenpakete von ihrem Urpsrung zu ihrem Ziel nehmen,
herausfinden kann.
2
Das Internet
Das Internet. ”Ein Ort der großen Gelegenheiten und unendlicher Möglichkeiten, ein riesiges Computernetz in dem Reichtum und Erfolg nur einen
einzigen Mausklick entfernt sind”.
So, oder so ähnlich, stellt die Werbung oftmals das Internet dar. Und sicherlich gibt es im Netz (Internet) hin und wieder die Möglichkeit, reich zu
werden oder Erfolg zu haben. Aber darum geht es hier nicht. Vielmehr interessiert uns die Frage, was genau das Internet ist und was das überhaupt
mit dem Thema dieser Ausarbeitung zu tun hat.
3 NETZWERKE VERBINDEN
2.1
4
Aufbau des Internets
Viele Leute glauben, daß das Internet ein einziges, großes Netzwerk ist, an
dem die Computer direkt angeschlossen sind. Es funktioniert auch wie ein
einziges Netzwerk. Aber wenn man die technische Seite betrachtet, so bemerkt man, daß das Internet aus mehreren physikalischen Netzwerken besteht, die miteinander verbunden sind und untereinander Datenpakete austauschen können.
Doch so einfach ist das mit dem Austauschen der Datenpakete nicht. Die
Technologien, die die einzelnen Netzwerke verwenden, sind bei weitem nicht
identisch. Wollte man hier Daten von einem Netzwerk zu einem anderen
senden, so müsste man wissen, welche Techniken die einzelnen Netzwerke
verwenden und ein entsprechendes Protokoll zur Datenübertragung benutzen. Bei der enormen Anzahl an möglichen Kombinationen müsste man sehr
viele verschiedene Protokolle unterstützen. Und was wäre, wenn ein Netzwerk
eine andere Technik einsetzen will? Dann müssten alle anderen Netzwerke,
die mit diesem kommunizieren wollen, neue Protokolle verwenden. . .
Um diese Probleme zu vermeiden, hat man sich auf das TCP/IP Protokoll1
geeinigt. Es versteckt die Details der Netzwerktechnik und stellt eine einheitliche Schnittstelle zur Verfügung, über die man Datenpakete austauschen
kann.
Mit dem TCP/IP Protokoll haben wir also einen Standard gefunden, um
softwaremäßig den Weg zum Übertragen von Daten zwischen mehreren Netzwerken zu ebnen. Aber wir wissen noch nicht, wie man die Netzwerke physikalisch miteinander verbinden kann. Daher werden wir uns im nächsten
Abschitt mit dem Thema befassen, welche Prinzipien es gibt, Netzwerke zu
verbinden.
3
Netzwerke verbinden
Wir wissen jetzt, daß das Internet ein Verbund aus vielen Netzwerken ist, der
das TCP/IP Protokoll verwendet, um Daten zwischen diesen austauschen zu
können. Aber nun stellt sich die Frage, wie man die Netzwerke miteinander
verbinden kann, ohne hohe Kosten zu verursachen und gleichzeitig eine gute
Zuverlässigkeit erreichen kann.
1
Eigentlich handelt es sich bei TCP/IP nicht um ein einzelnes Protokoll, sondern um eine ganze Sammlung von Protokollen, die auf mehreren Ebenen wirken. Eine ausführlichere
Beschreibung von TCP/IP, ist bei [Stev1] zu finden.
3 NETZWERKE VERBINDEN
5
Das es gleichzeitig jedem Computer möglich sein soll, mit jedem anderen zu
kommunizieren, muss ebenfalls gewährleistet sein. Im Folgenden stellen wir
einige Möglichkeiten vor und diskutieren die Vor- und Nachteile von diesen.
3.1
Netzwerke direkt verbinden
Die einfachste Art, eine Verbindung zwischen zwei Netzwerken herzustellen,
besteht darin, eine Leitung von dem einen Netz zu dem anderen zu verlegen.
Bei wenigen Netzwerken mag diese Lösung praktikabel und kostengünstig
sein, aber mit zunehmender Zahl müssen immer mehr Leitungen verlegt und
gewartet werden.
Ein nicht zu vernachlässigender Vorteil dieser Art Netze zu verbinden, liegt
in den geringen Auswirkungen eines Ausfalls. Fällt z. B. ein Netzwerk aus, so
ist nur dieses nicht erreichbar. Beim Ausfall einer Leitung, wäre nur der Datenverkehr zwischen den beiden Netzen betroffen, die mittels dieser Leitung
direkt verbunden sind.
Netzwerk A
Netzwerk B
Netzwerk C
Netzwerk D
Abbildung 1: Direkt verbundene Netzwerke
Die Abbildung 1 zeigt ein Beispiel von vier Netzwerken (A - D), die direkt
verbunden sind. Wieviele (bidirektionale) Leitungen verlegt werden müssen,
damit eine vollständige Vernetzung erreicht wird, lässt sich mit der Formel:
n∗(n−1)
berechnen, wobei n für die Anzahl der Netzwerke steht. Bei unidirek2
tionalen Leitungen verdoppelt sich die Menge der Leitungen.
3.2
Router
Das heutzutage wichtigste Prinzip zum Verbinden von Netzwerken stellen
Router dar. Ihre Aufgabe ist das Weiterleiten von Datenpaketen zwischen
3 NETZWERKE VERBINDEN
6
den Netzwerken und dazu werden sie ganz normal an diese angeschloßen.
Zum Übertragen der Daten benutzen sie die Netzwerke selber und überlassen
es deren Technik, die Daten zu transportieren.
Außerdem sind die Netzwerke nicht auf einen einzigen Router beschränkt,
sondern können auch mehrere einbinden. Und die Router ihrerseits haben
die Möglichkeit, über mehrere Interfaces mit einem Netzwerk verbunden zu
werden.
Router 1
Netzwerk A
Router 2
Netzwerk C
Netzwerk B
Router 3
Netzwerk D
Abbildung 2: Durch Router verbundene Netzwerke
Die Abbildung 2 stellt ein Beispielnetzwerk mit Routern dar. Ein großer Vorteil dieser Methode ist es, daß es bei einem Ausfall von einem Netzwerk oder
Router meistens alternative Routen gibt, über die Datenpakete versendet
werden können.
Weil ein Router als Bestandteil der Netze angesehen werden kann, mit denen
er verbunden ist, besitzt er entsprechend viele2 IP Adressen. Und da ihre
Hauptaufgabe das Weiterleiten von Daten ist, ist es für sie nicht von Belang,
welcher Art diese sind.
Natürlich kann man die vorgestellten Möglichkeiten kombinieren. Im Allgemeinen kann man aber sagen, daß Netze verschiedener Eigentümer durch
Router miteinander verbunden werden und das direkte Verbinden von Netzwerken eher von Besitzern weniger Netzwerke benutzt wird. Dabei wird aus
den wenigen Netzwerken sozusagen ein einziges Großes, das dann über einen
Router mit dem Internet als ganzes verbunden werden kann.
2
Router erhalten für jedes Interface, über das sie mit einem Netzwerk verbunden sind,
eine IP Adresse.
4 IP ROUTING (HISTORISCH, OHNE CIDR UND SUBNETZE)
4
7
IP Routing (historisch, ohne CIDR und Subnetze)
Im vorherigen Abschnitt wurden die Aufgaben eines Routers3 vorgestellt, das
Verbinden von Netzwerken und das Weiterleiten von Daten zwischen ihnen.
In diesem Teil wird es darum gehen, wie die Router beim Weitertransport
vorgehen.
Aber bevor wir das Vorgehen betrachten, führen wir erst noch einige wichtige
Begriffe ein.
4.1
Routing, Routing Decision und Routing Information
Unter dem Begriff Routing verteht man den Prozeß der Auswahl einer Route,
über die ein Datenpaket gesendet werden soll. Diese Route führt vom Sendenden zu dem empfangenden Computer und kann über keinen, einen oder
auch mehrere Router verlaufen.
Das Datenpaket wird dabei von einem Router zum nächsten entlang der Route geschickt und jeder der beteiligten Computer muss dabei eine sogenannte
Routing Decision4 fällen, wenn die Daten bei ihm eintreffen. Um diese Entscheidung treffen zu können, benötigt der Rechner bestimmte Informationen,
die als Routing Information bezeichnet werden.
Im Folgenden werden wir nur auf das Routen in frame-basierten Broadcast
Netzwerken, wie z. B. Ethernet eingehen. Für das Routen bei anderen Typen von Netzwerken, wie beispielsweise Point-to-Point Netzwerke, bleiben
die Routing Algorithmen gleich, aber es ändert sich das Vorgehen und die
Form, wie die IP Datenpakete physikalisch auf der Ebene des link layer weitergeleitet werden.
4.2
Versenden von Daten in Netzwerken
Mit dem bisherigen Wissen werden wir uns jetzt der Hauptaufgabe von IP
Routern zuwenden, dem Weiterleiten von Daten zwischen Netzwerken. Um
eine anschauliche Einführung in dieses Thema zu gewährleisten, werden wir
3
4
Wird dabei das TCP/IP Protokoll verwendet, so nennt man ihn auch IP Router.
Decision ist englisch und bedeutet Entscheidung
4 IP ROUTING (HISTORISCH, OHNE CIDR UND SUBNETZE)
8
den in Abb. 3 dargestellten Netzwerkverbund verwenden und damit die für
das Routen von Datenpaketen, wichtigsten Fälle besprechen.
Router 2
129.37.0.0
Netzwerk 2
129.37.0.2
129.38.0.0
Netzwerk 3
129.38.0.1
129.40.0.1
129.37.0.1
129.38.0.2
129.40.0.0
Netzwerk 5
Router 1
Router 3
129.36.0.1
129.39.0.1
129.36.0.0
Netzwerk 1
Host A
Host B
129.39.0.0
Netzwerk 4
Host C
129.36.15.7 129.36.48.251
129.39.57.164
Abbildung 3: Ein Beispielnetzwerk
Das Beispielnetzwerk in Abb. 3 besteht aus fünf Netzwerken, die über drei
Router verbunden sind. Die IP Adressen der einzelnen Netzwerke stehen
dabei über dem entsprechenden Namen. Da die Router sozusagen ein Mitglied
der Netzwerke sind, die sie verbinden, besitzen sie in jedem eine eigene IP
Adresse. Diese steht dabei zwischen Router und dem jeweiligen Netz. Es
werden auch drei Computer (Host A, B und C) mitsamt ihrer Adresse und
Netzzugehörigkeit dargestellt.
Betrachten wir den Fall, daß Host A ein IP Datagramm an einen anderen Computer senden will. Dann gibt es bezüglich des Ortes des Zieles zwei
Möglichkeiten. Es kann im selben (Host B), oder in einem anderen Netzwerk
liegen5 (Host C).
Doch bevor wir uns den beiden Eventualitäten zuwenden, betrachten wir,
wie man bestimmen kann, ob das Ziel im gleichen Netz liegt, oder nicht.
5
Eine dritte Möglichkeit besteht darin, daß das Ziel nicht existiert. Aber darum
kümmern wir uns später.
4 IP ROUTING (HISTORISCH, OHNE CIDR UND SUBNETZE)
4.2.1
9
Bestimmen des Ziel-Netzwerkes
Das Herausfinden, ob Quelle und Ziel im gleichen Netzwerk sind, ist recht
einfach. Alles was man dazu machen muss, ist den Netzwerk-Präfix der Zieladresse mit dem der eigenen IP Adresse zu vergleichen. Stimmen diese überein, so befinden sich beide Computer im gleichen Netzwerk, andernfalls in
verschiedenen.
Aber was ist die Netzwerk-Präfix? Bei einer IP Adresse handelt es sich um
eine 32-Bit-Zahl, die im doted quad-Format dargestellt wird. Doted quad
bedeutet hier, daß die 32-Bit-Zahl durch vier Zahlen, die mit einen Punkt
voneinander getrennt werden, dargestellt wird (A. B. C. D). Dabei entspricht
die Zahl A den höchsten 8 Bit6 und D den niedrigsten 8 Bit der 32-Bit-Zahl.
In unserem Beispiel hat der Host A die IP Adresse: 129. 36. 15. 7. Das ist aber
noch nicht alles. Eine IP Adresse besteht aus zwei Teilen. Die Netid und die
Hostid.
Prinzipiell ist jede Adresse ein Paar (Netid, Hostid), wobei Netid
”
das Netzwerk identifiziert und Hostid den Host in dem Netzwerk
identifiziert.“[Com1]
Da es sich in diesem Beispiel um Class B Netzwerke handelt, sind die ersten
beiden Zahlen das Netzwerk-Präfix7 und die letzten zwei sind das Host-Suffix.
Gehen wir die Situationen durch, daß Host A das eine Mal Daten an Host
B und das andere Mal Daten an Host C schicken will. Der Host A besitzt
die IP Adresse 129. 36. 15. 7 und Host B 129. 36. 48. 251. Wie man sieht, sind
die beiden Präfixe (129. 36.) identisch und damit beide Computer im gleichen Netz. Der Host C hat die Adresse 129. 39. 57. 164. Da 129. 39. nicht mit
129. 36. übereinstimmt, befinden sich die beiden Computer auch nicht im
selben Netz.
4.2.2
Daten im gleichen Netzwerk verschicken
Für den Fall, daß sowohl der sendende (Host A), als auch der empfangende
Computer (Host B) im gleichen Netz sind, wird für das Senden der Daten
kein Router benötigt, da der Host A den Host B direkt erreichen kann.
6
Eine 8-Bit-Zahl, kann alle Werte von 0 - 255 annehmen.
Ein Class A Netzwerk verwendet nur die erste Zahl und ein Class C die ersten drei Zahlen als Netzwerk-Präfix. Genaures über die Aufteilung in verschiedene Netzwerk-Klassen,
können Sie unter [Com1] nachlesen.
7
4 IP ROUTING (HISTORISCH, OHNE CIDR UND SUBNETZE)
10
Bevor aber A die Daten verschicken kann, muss er sich entscheiden, wohin das
Datenpaket geleitet werden soll, damit es sein Ziel erreicht. Er fällt also eine
Routing Decision. Danach bestimmt A, mit Hilfe der IP Adresse des Zieles,
die physikalische Adresse (Hardwareadresse) von B im Netzwerk. Nachdem
der Host A die Hardwareadresse erhalten hat, benutzt er diese, um einen
sogenannten Frame8 zu adressieren und verpackt die Daten in diesem. Erst
dann wird der Frame über das Netzwerk an B geschickt.
Befinden sich Quelle und Ziel im gleichen Netz, so bezeichnet man diese Form
des Verschickens von Daten auch als direct delivery.
4.2.3
Daten über mehrere Netzwerke verschicken
Liegen Quelle und Ziel eines Datenpakets nicht im gleichen Netz, so können
die Daten nicht direkt gesendet werden, sondern werden über mehrere Stationen geschickt. Ist das der Fall, so spricht man von indirect delivery.
Den Weg, den ein Datenpaket von einem Computer zu einem anderen Computer, der sich in einem anderen Netzwerk befindet, zurücklegt, kann man
in drei Abschnitte unterteilen. Das erste Teilstück ist dabei der Weg von
der Quelle zu dem ersten Router. Der mittlere Teil führt vom Start-Router
über keine bis mehrere Zwischen-Router zum Ziel-Router und der finale Part
verläuft vom Ziel-Router zum Ziel des Datenpakets.
Schauen wir uns die drei Abschnitte einmal genauer an.
Der Weg von der Quelle zum Start-Router
Will der Host A ein Datagramm an den Host C schicken, so kann er diesen
nicht direkt erreichen, da der Host C in einem anderen Netzwerk liegt. In
dieser Situation muss A sich für einen Router in seinem Netz entscheiden.
An diesen schickt er das Datenpaket, damit dieser es weiterleiten kann. Host
A muss also eine Routing decision fällen. Da es sich hierbei um die allererste
handelt, ist es auch gleichzeitig die initiale Routing Entscheidung.
Die Abbildung 4 stellt den ersten Abschnitt dar. Hat sich A dann für einen
Router, in diesem Beispiel Router 1, entschieden, so geht er wie beim direct
delivery vor. Er holt sich die Hardwareadresse des Routers, verpackt die
Daten in einen Frame, adressiert diesen und schickt ihn los. Danach ist A
nicht mehr am Routing beteiligt.
8
Ein Frame kann man sich als eine Art von Postpaket vorstellen, nur das dieses nicht
mit gelben Autos zum Ziel gelangt, sondern über die Leitungen des Netzwerkes versendet
wird.
4 IP ROUTING (HISTORISCH, OHNE CIDR UND SUBNETZE)
11
Router 1
129.36.0.1
129.36.0.0
Netzwerk 1
Host A
Host B
129.36.15.7 129.36.48.251
Abbildung 4: Weg von der Quelle zum Start-Router
Strecke vom Start-Router zum Ziel-Router
Erhält ein Router ein Datenpaket das nicht an ihn adressiert ist, so muss er
dieses weiterleiten. Ob er die Daten dabei direkt liefern kann, oder ob er sie
an einen anderen Router schicken muss, bestimmt er anhand der NetzwerkPräfixe der Ziel IP Adresse und seiner eigenen IP Adressen. Stimmen diese
nicht überein, so muss er einen Router auswählen, der in Richtung des Zieles
liegt und den er mittels direct delivery, also im gleichen Netzwerk befindlich,
erreichen kann. Das Datenpaket wandert dabei von Router zu Router, aber
immer in Richtung Ziel, bis es schliesslich bei einem eintrifft, bei dem mindestens eines der eigenen Präfixe mit dem des Zieles identisch ist. In diesem
Fall handelt es sich dann um den Ziel-Router.
Router 2
129.37.0.0
Netzwerk 2
129.37.0.2
129.38.0.0
Netzwerk 3
129.38.0.1
129.40.0.1
129.37.0.1
129.38.0.2
Router 1
Router 3
129.36.0.1
129.39.0.1
Abbildung 5: Weg vom Start-Router zum Ziel-Router
Gehen wir den Weg, den das Datenpaket vom Start- zum Ziel-Router nimmt,
einmal anhand unseres Beispiels durch. Der entsprechende Abschnitt wird in
der Abbildung 5 dargestellt.
Der Router 1 erhält das Frame, extrahiert das IP Datagramm und stellt beim
Vergleich des Präfixes der Zieladresse (129. 39.) mit seinen (129. 36. bzw.
129. 37.) fest, daß er die Daten nicht direkt liefern kann. Also bestimmt er
4 IP ROUTING (HISTORISCH, OHNE CIDR UND SUBNETZE)
12
den nächsten Router, der in Richtung des Zieles liegt, in diesem Fall Router 2
und schickt das Paket diesem. Der Router 2 geht bei Erhalt des Pakets wie
Router 1 vor und stellt fest, daß auch er nicht der Ziel-Router ist und schickt
es daher an den Router 3 weiter. Da es sich hierbei um den Ziel-Router
handelt, ist die Reise des Pakets auch schon fast zuende.
Das Finale. Vom Ziel-Router zum Ziel
Hat das Datenpaket einen Router erreicht, bei dem eines der Netz-Präfixe mit
dem des Ziels übereinstimmt, dann befinden sich Ziel und Router im gleichen
Netzwerk. In diesem Fall ist es dem Router möglich, die Daten direkt (Direct
Delivery) an das Ziel zu schicken.
Aber was ist, wenn es in dem Netz keinen Computer mit der angegebenen
IP Adresse gibt? Nun, in diesem Fall muss der Router eine Nachricht an den
Ursprung des Pakets, in unserem Beispiel Host A senden und diesen auf den
Umstand hinweisen. Aus diesem Grund enthält ein IP Datagramm nicht nur
eine Ziel IP Adresse, sondern auch die IP Adresse des Absenders.
129.38.0.2
Router 3
129.39.0.1
129.39.0.0
Netzwerk 4
Host C
129.39.57.164
Abbildung 6: Weg vom Ziel-Router zum Ziel
In unserem Beispiel (Abb. 6) existiert das Ziel und der Router 3 kann die
Daten direkt an den Host C schicken.
Jetzt wissen wir, wie ein Datenpaket von seinem Ursprung zu seinem Ziel
geroutet wird, aber es bleiben noch zwei wichtige Fragen unbeantwortet. Die
erste lautet:
Woher weiß ein Host, welchen Router er nehmen soll, wenn sich das Ziel
seiner Daten nicht im gleichen Netz befindet?
Und die zweite ist:
5 ROUTING ALGORITHMEN
13
Woher wissen die Router, an welchen anderen sie das Paket weiterleiten sollen, wenn sie nicht der Ziel-Router sind?
Für den trivialen Fall, daß es nur einen Router gibt, ist die Antwort einfach:
Nimm diesen. Aber was ist, wenn es mehrere gibt? Sollen die Daten dann
an alle geschickt werden, benutzt man einen Zufallsgenerator, oder befragt
man ein Orakel? Nun, der nächste Abschnitt wird sich mit diesem Problem
befaßen und die entsprechenden Antworten geben.
5
Routing Algorithmen
Wir haben jetzt einen allgemeinen Überblick darüber, was die Aufgaben von
IP Routern sind und wissen auch, wie diese beim Routen vorgehen sollen.
Was wir aber noch nicht wissen ist, wie die Router bzw. Hosts ihre Routing
Decision treffen.
5.1
Table-Driven IP Routing
Die Antwort auf die Fragen aus dem letzten Abschnitt, woher ein Host/Router
weiß, wohin er Datenpakete zu schicken hat, ist folgende: Sowohl Host als
auch Router besitzen eine sogenannte Routing Tabelle9 (RT), in der eingetragen ist, wie man jedes mögliche Ziel erreichen kann.
Allgemein kann man sagen, daß jeder IP Routing Algorithmus eine RT verwendet und daß die IP Software vor dem Weiterleiten eines Datagramms in
diese schaut, um anhand der enthaltenen Informationen eine Routing Entscheidung zu fällen.
Leider gibt es noch ein Problem. Bei kleinen Netzwerkverbänden mit wenigen Hosts und Routern ist es möglich, daß alle Computer für jeden anderen
einen Eintrag in ihrer RT haben. Aber mit zunehmender Zahl müssen immer
mehr Daten verwaltet und ausgetauscht werden, um die einzelnen RT aktuell
zu halten10 . Und irgendwann wären die Router bzw. Hosts nur noch damit
beschäftigt, ihre RT zu aktualisieren.
Um diesem Problem vorzubeugen, verwendet man statt dem Table-Driven
IP Routing das Next-Hop Routing.
9
im Englischen: routing table
Wie die RT erstellt werden, werden wir hier nicht behandeln, da dies den Rahmen
der Ausarbeitung sprengen würde. Aber wer sich dafür interessiert, kann in [Tan1] eine
Vielzahl von Algorithmen finden.
10
5 ROUTING ALGORITHMEN
5.2
14
Next-Hop Routing
Der wichtige Unterschied zwischen Table-Driven und Next-Hop Routing besteht in den Informationen, die in die RT aufgenommen werden. Da eine IP
Adresse aus der Netzwerk-Präfix und dem Host-Suffix zusammengesetzt ist,
genügt es, statt jeden Computer nur jedes Netzwerk in die RT als Ziel aufzunehmen. Ist bekannt, wie man dieses Netzwerk erreichen kann, dann kann
man gleichzeitig auch alle Hosts in diesem Netz erreichen.
Diese Änderung hat viele Vorteile. Man erhält eine wesentlich kompaktere
RT und trotzdem bleiben alle Ziele erreichbar. Außerdem müssen weniger
Daten aktualisiert werden und die IP Software muss vor dem Weiterleiten
von Daten weniger Einträge vergleichen, bis eine Übereinstimmung gefunden
oder das Ende der RT erreicht ist.
5.2.1
Aufbau der Routing Tabelle beim Next-Hop Routing
Bisher haben wir uns nur mit den Informationen befasst, die in eine RT
aufgenommen werden, und dabei ihren Aufbau und die Form der einzelnen
Einträge vernachlässigt. Aber das holen wir jetzt nach.
Eine RT besteht aus einer Reihe von Datentuppel11 , die die Form (N, R)
besitzen. Das N steht hierbei für die IP Adresse des Ziel-Netzwerkes und R
kann entweder die Adresse des nächsten Routers in Richtung Ziel sein oder
deliver directly. Alternativ für direct delivery kann auch ein Interface vom
Router stehen, das den Router mit dem entsprechenden Netzwerk verbindet.
Aber das ist abhängig von der jeweiligen Implementation.
Wie Sie sich sicher schon gedacht haben, hat der Eintrag deliver directly
etwas mit direct delivery zu tun. Er steht dann in der RT, wenn der Router,
nennen wir ihn M, das IP Datagramm direkt an das Ziel liefern kann. Ist dies
aber nicht der Fall, so steht stattdessen die IP Adresse des Routers R, der in
Richtung zum Ziel liegt und der von M direkt erreicht werden kann.
Jetzt wird auch klar, warum dieser Routing Algorithmus Next-Hop Routing
heißt. Das Datenpaket springt12 von Router zu Router, bis es zum Ziel gelangt.
11
12
Ein Datentuppel ist eine Menge von Daten, die in Relation zueinander stehen.
Im Englischen bedeuted springen = to hop.
5 ROUTING ALGORITHMEN
15
Router 2
129.37.0.0
Netzwerk 2
129.37.0.2
129.38.0.0
Netzwerk 3
129.38.0.1
129.40.0.1
129.37.0.1
Router 1
129.36.0.1
129.36.0.0
Netzwerk 1
129.38.0.2
129.40.0.0
Netzwerk 5
Router 3
129.39.0.1
129.39.0.0
Netzwerk 4
Abbildung 7: Das Beispielnetzwerk zur RT von Router 2
Um den Aufbau einer RT nochmal zu verdeutlichen, schauen wir uns die RT
vom Router 2 aus unserem Beispielnetzwerk (Abb. 7) an.
Netzwerk-Präfix
129. 37. 0. 0
129. 38. 0. 0
129. 40. 0. 0
129. 36. 0. 0
129. 39. 0. 0
Router zum Ziel
Direct Delivery
Direct Delivery
Direct Delivery
129. 37. 0. 1
129. 38. 0. 2
Tabelle 1: Routing Tabelle für Router 2
Wie man aus der Tabelle 1 leicht ersehen kann, kann der Router 2 alle Hosts
in den Netzwerken 2, 3 und 5 direkt erreichen. Alle IP Datagramme die an
Hosts im Netzwerk 1 gerichtet sind, leitet er über das Netzwerk 2 an den
Router 1 (129. 37. 0. 1) und alle Daten für das Netzwerk 4 schickt er über
Netzwerk 3 an den Router 3 (129. 38. 0. 2).
5.3
Default Routes
Eine weitere Möglichkeit um eine RT zu vereinfachen, ist das Anlegen einer
Default Route. Die Default Route wird immer dann gewählt, wenn die IP
Software keinen Eintrag für ein Ziel findet. Daher steht sie nur am Ende der
RT.
Die Default Route kann auch verwendet werden, um mehrere RT-Einträge zu
einem einzigen zusammenzufassen. Gibt es unter allen Einträgen in der RT
5 ROUTING ALGORITHMEN
16
mehrere, denen der selben Router als nächste Station zugewiesen wurde, so
ist es möglich, diese Einträge zu der Default Route zusammenzufassen. Alle
anderen Einträge bleiben unverändert und es darf höchstens eine Default
Route pro RT geben.
Besonders sinnvoll ist das Anlegen einer Default Route für Netzwerke mit
nur einem Router. Aber schauen wir uns das mal an einem Beispiel an:
Router 1
129.36.0.1
129.36.0.0
Netzwerk 1
Host A
Host B
129.36.15.7 129.36.48.251
Abbildung 8: Netzwerk 1
Wie man in Abb. 8 sehen kann, besitzt das Netzwerk 1 nur einen Router.
Wenn also Daten von einem der Hosts in diesem Netzwerk an einen Host
in einem anderen Netz gesendet werden sollen, so werden diese von dem
Router 1 geroutet. Die folgenden Tabellen stellen die RT für den Host A mit
und ohne Default Route dar:
Netzwerk-Präfix
129. 36. 0. 0
129. 37. 0. 0
129. 38. 0. 0
129. 39. 0. 0
129. 40. 0. 0
Router zum Ziel
Direct Delivery
129. 36. 0. 1
129. 36. 0. 1
129. 36. 0. 1
129. 36. 0. 1
Tabelle 2: RT von Host A ohne Default Route
Anhand der beiden Tabellen wird deutlich wie stark das Einrichten einer
Default Route eine RT vereinfachen kann.
Netzwerk-Präfix
129. 36. 0. 0
Default
Router zum Ziel
Direct Delivery
129. 36. 0. 1
Tabelle 3: RT von Host A mit Default Route
6 DER IP ROUTING ALGORITHMUS
5.4
17
Host-Specific Routes
Manchmal ist es nötig, für einzelne Hosts Einträg in die RT vorzunehmen.
Dann wird anstatt eines Zielnetzwerkes die vollständige Adresse von dem
Host eingetragen. Normalerweise sollte man davon absehen, da Einträge für
einzelne Computer die RT nur unnötig aufblähen.
Aber in einigen Situationen, wie z. B. beim Debuggen der RT bzw. Warten
von Netzwerkverbindungen, oder als eine Form der Zugangskontrolle, kann
sich diese Möglichkeit als sehr nützlich erweisen. Auf jeden Fall geben HostSpecific Routes dem Admin mehr Kontrolle über das Routen in seinem Netz.
6
Der IP Routing Algorithmus
Nun, da wir wissen wie die RT eines Routers aufgebaut ist und wie das
Routen von Datenpaketen vor sich geht, wollen wir das Ganze in dem IP
Routing Algorithmus zusammenfassen und später, wenn wir uns mit dem
Routen bei Subnetzen befassen, werden wir diesen Algorithmus entsprechend
modifizieren, um ihn den besonderen Gegebenheiten anzupassen.
6.1
Der Algorithmus
Der Algorithmus fängt mit dem Erhalt eines IP Datagramms an.
1. Der Router extrahiert die IP Adresse des Zieles Z aus dem IP Datagramm.
2. Er berechnet das Netzwerk-Präfix N von Z und
3. vergleicht N mit den Einträgen in der RT, wobei es fünf mögliche Ergebnisse gibt:
(a) Stimmt N mit dem Eintrag für ein direkt verbundenes Netzwerk
überein, dann kann der Router die Daten direkt an Z schicken.
Dieser Fall wird in der Abb. 9 mit roten A dargestellt. Gibt es
hier kein Match13 , dann
13
match kommt aus dem Englischen und bedeutet Übereinstimmung.
6 DER IP ROUTING ALGORITHMUS
18
(b) werden als nächstes die Host-Specific Routes (durch rote B gekennzeichnet) überprüft. Liegt hier eine Übereinstimmung vor,
dann wird das Paket an den entsprechenden Router weitergeleitet.
Andernfalls
(c) werden die möglichen Zielnetzwerke durchgegangen (rote C). Ist
auch dort kein passender Eintrag,
(d) dann wird als Letztes geschaut, ob es eine Default Route (D) gibt.
Ist diese vorhanden, so wird das IP Datagramm an den dort eingetragenen Router geschickt. Fehlt aber auch eine Default Route,
so
(e) liegt ein Routing Fehler vor und der Router muss eine entsprechende Fehlermeldung per ICMP an den Ursprung senden.
129.36.48.251
Datagramm
129.36.0.0
?
Netzwerk Präfix
Router zum
Ziel
129.37.0.0
Direct Delivery
A
129.38.0.0
Direct Delivery
A
129.40.0.0
Direct Delivery
A
129.39.64.23
129.37.0.1
B
129.39.0.0
129.37.0.1
C
Default
129.37.0.1
D
Abbildung 9: Beispiel zum Routing Algorithmus
Die Reihenfolge, in der die Fälle überprüft werden, entspricht der tatsächlichen Reihenfolge der Einträge in der RT. D. h. also, das in der RT zuerst
alle deliver directly Einträge liegen, dann die Host-Specific Routes, gefolgt
von den möglichen Zielnetzwerken und ganz am Ende, wenn überhaupt, die
Default Route.
Darauf, wie die Routing Tabellen entstehen, werden wir hier nicht eingehen.
Ich möchte nur soviel sagen, daß man Routing Tabellen von Hand anlegen
6 DER IP ROUTING ALGORITHMUS
19
kann, oder daß die Router untereinander Informationen austauschen, anhand derer sie die Tabellen erstellen. Dieser Austausch ist wichtig, da sonst
Änderungen, wie ausgefallene Router, oder neue hinzugekommene Netzwerke, beim Routen von Datenpaketen nicht berücksichtigt würden.
Ein weiterer, wichtiger Aspekt der Tatsache, daß Routing Tabellen nicht
konstant sind, liegt darin begründet, daß zwei aufeinanderfolgende IP Datagramme, die z. B. von Host A an Host B geschickt werden, nicht unbedingt
die selbe Route nehmen. Ebenso kann ein IP Datagramm von Host A nach
Host B eine andere Route nehmen, als ein IP Datagramm von B nach A.
6.2
Behandlung eingehender IP Datagramme
Jetzt, da wir den IP Routing Algorithmus kennen, werden wir uns dem chronologischen Ablauf beim Routen eines IP Datagramms zuwenden. Dabei gehen wir davon aus, daß gerade ein Frame bei einem Computer eingetroffen
ist und behandeln, welche Schritte dieser zu unternehmen hat, um auf das
im Frame enthaltene IP Datagramm entsprechend zu reagieren.
Als erstes extrahiert die Netzwerk Interface Software (NIS) das IP Datagramm aus dem Frame und reicht es an das IP Modul weiter14 . Dieses bestimmt die IP Adresse des Zieles und vergleicht sie mit seiner eigenen. Stimmen diese überein, so ist der Computer das Ziel des Pakets und die IP Software leitet das Datagramm an das entsprechende Protokoll in der transport
layer zum Bearbeiten weiter.
Für den Fall, daß der Computer das Ziel des IP Datagramms ist, muss man
nicht zwischen Host und Router unterscheiden, da das Vorgehen gleich bleibt.
Anders sieht es dagegen aus, wenn der Computer nicht das Ziel ist. Hier
müssen Host und Router unterschiedlich reagieren.
Betrachten wir zuerst, was ein Host tun soll, wenn er ein IP Datagramm
erhält, das nicht für ihn bestimmt ist.
14
Das TCP/IP Protokoll ist in vier Ebenen unterteilt. Für die Hardware und das physikalische Senden und Empfangen ist u. A. die NIS in der untersten Ebene, der sogenannten
link layer zuständig. Über der link layer liegt die network layer. Hier ist z. B. das IP Protokoll angesiedelt. Darüber befindet sich die transport layer, u. A. mit dem TCP Protokoll.
Und abschließend die application layer für Anwendungen, die Daten mittels TCP/IP verschicken oder empfangen wollen. Mehr Informationen über TCP/IP können sie bei [Stev1]
finden.
6 DER IP ROUTING ALGORITHMUS
20
Vorgehen des Hosts
Die Anweisung die ein Host hat, wenn er ein IP Datagramm erhält, dessen
Ziel er nicht ist, ist einfach. Er soll das Paket ignorieren und löschen, da
irgendwo ein Fehler beim Routen aufgetreten ist. Er soll weder versuchen,
das Paket zu routen, noch irgendwelche korrigierenden Maßnahmen treffen,
weil dadurch das Problem wahrscheinlich nicht beseitigt werden kann und so
nur unnötiger Datenverkehr entstehen würde.
Vorgehen des Routers
Ganz anders verhält es sich hingegen, wenn ein Router so ein IP Datagramm
empfängt. Da er nicht das Ziel des Datenpakets ist, muss er dieses weiterleiten. Doch bevor er den IP Routing Algorithmus anwendet, hat er noch zwei
wichtige Überprüfungen vorzunehmen.
Zuerst überprüft die IP Software ob das Datenpaket richtig übertragen wurde. Damit die Überprüfung funktionieren kann, muss die Checksumme im IP
Header eingetragen worden sein. Daher muss ein Router diese berechnen und
eintragen, bevor er ein Datenpaket weiterleitet.
Bei dieser Checksumme handelt es sich um das 16-bit Einerkomplement15
der Summe aller Werte im IP Header. Da das Checksummen-Feld zum IP
Header gehört, muss der Router dieses vor der Berechnung auf null setzen,
um eine Verfälschung des Ergebnisses auszuschließen. Dann addiert er die
Werte des IP Headers, bildet das Einerkomplement der Summe und trägt
das Ergebnis im Checksummen-Feld ein.
Wenden wir uns nun wieder der ersten Überprüfung nach dem Extrahieren
des IP Datagramms aus dem Frame zu. Dafür berechnet die IP Software die
16 Bit lange Summe, aus den Werten des IP Headers. Wurde das Datenpaket
fehlerfrei übertragen, so haben alle Bits der Summe den Wert 1 und das
Datenpaket wird akzeptiert16 . Andernfalls wird es verworfen, da ein Fehler
bei der Übertragung aufgetreten ist.
Wurde das Datenpaket korrekt übertragen, so wird als nächstes der TTLWert17 aus dem IP Header extrahiert und um eins, oder die Zeit in Sekunden,
15
Beim dem Einerkomplement einer Binärzahl werden Nullen durch Einsen und Einsen
durch Nullen ersetzt.
16
Bei der Addition einer Binärzahl mit ihrem Komplement erhält man eine Binärzahl
gleicher länge, bei der alle Bits den Wert 1 haben.
17
TTL steht für Time to life und legt fest, wieviele Router dieses Datenpaket maximal passieren darf, bevor es verworfen wird. Vergleichen könnte man es mit einer Art
Verfallsdatum.
6 DER IP ROUTING ALGORITHMUS
21
die das Datenpaket auf dem Router verweilt hat, je nachdem was größer
ist, dekrementiert18 . Ist der TTL-Wert danach null oder kleiner, so hat der
Router das IP Datagramm zu löschen und nicht weiter zu senden. Zusätzlich
muss der Router eine ICMP time exceeded 19 Fehlermeldung an den Urpsrung
des IP Datagramms schicken.
Das Überprüfen der TTL ist wichtig, da es ohne sie möglich wäre, daß IP Datagramme in Routing-Schleifen gefangen und ewig im Kreis weiter gerouted
werden könnten.
Bei einem Wert größer null muss die IP Software den neuen TTL-Wert in den
IP Header eintragen und danach die Checksumme neu berechnen, da sich mit
dem geänderten TTL-Wert auch der Wert für diese ändert. Die Checksumme
wird dann im entsprechenden Feld des IP Headers gespeichert. Dabei sind
die TTL und Checksumme die einzigen Werte, die beim IP Routing im IP
Header eines Datagramms geändert werden. Im IP Header ist neben der IP
Adresse des Zieles, und einigen anderen Werten, auch noch die IP Adresse des
Quellcomputers gespeichert. Dies hat u. A. den Grund, daß z. B. bei einem
Routing Error eine Nachricht an den Quellcomputer mittels dieser IP Adresse
geschickt werden kann, oder eine Applikation auf dem Zielrechner Daten an
den Quellcomputer zurück senden muss.
Sind beide Tests erfolgreich verlaufen, so wird der IP Routing Algorithmus
angewendet, um zu entscheiden, wohin das Datenpaket weitergeleitet werden soll. Dieser gibt dann die entsprechende IP Adresse zurück20 . Das IP
Datagramm und die ausgewählte IP Adresse werden dann an die Netzwerk
Interface Software (NIS) im link layer übergeben.
Die NIS hat nun die Aufgabe, mit Hilfe der erhaltenen IP Adresse die physikalische Adresse des entsprechenden Computers zu bestimmen. Dabei handelt es sich um weltweit eindeutige Nummern21 , die fest in der Hardware
von Netzwerkkarten gespeichert werden. In einem Ethernet oder Token Ring
Netzwerk verwendet man das Adress Resolution Protocol (ARP), um von
einer IP Adresse die entsprechende Hardwareadresse des Computers, dem
diese IP Adresse zugeordnet ist, zu bestimmen22 .
18
Heutzutage brauchen die Router normalerweise nur wenige Millisekunden, um ein
Datenpaket zu bearbeiten und daher wird die TTL meistens auch nur um eins verkleinert.
19
ICMP steht für Internet Control Message Protocol
20
Voraussetzung ist, daß das Ziel des IP Datagramms erreichbar ist. Ansonsten liegt ein
Routing Fehler (S.18) vor und der Router muss eine entsprechende Fehlermeldung an die
Quelle des IP Datagramms senden
21
Hardware- bzw. Mac-Adressen
22
Mehr Informationen zu Hardwareadressen, ARP und RARP können Sie unter [Com2]
finden
7 ROUTING BEI SUBNETZEN
22
Steht die Hardwareadresse fest, so adressiert die NIS mit dieser einen Frame
und verpackt das IP Datagramm in diesem. Der fertige Frame wird dann
über die Leitung des Netzwerkes zum nächsten Ziel verschickt. Jetzt ist der
Router für das Weiterleiten dieses IP Datagramms nicht mehr zuständig und
hat seine Aufgabe erfüllt.
7
Routing bei Subnetzen
Wenden wir uns nun dem Routen bei Subnetzen zu. Dazu werden wir kurz
darauf eingehen, warum die Subnetze eingeführt wurden. Es ist mir hier wichtig die Vorteile des Subnetting, also das Verwenden von Subnetzen, gegenüber
dem classful addressing scheme 23 darzustellen.
Im Anschluß daran, werden wir uns mit der Subnetz-Maske befassen. Sie ist
eine Art Schlüssel für die Subnetzen und spielt beim Routen in Netzwerken
mit Subnetzen eine wichtige Rolle.
Bevor wir zum letzten Teil dieses Abschnitts, der CIDR-Notation24 , kommen, werden wir noch die Auswirkungen von Subnetzen auf den IP Routing
Algorithmus besprechen.
7.1
Subnetze
Durch das unerwartet starke Wachstum des Internets und der damit verbundenen Zunahme an physikalischen Netzwerken, wurde der zur Verfügung stehende Adressraum für Netzwerke, vor allem der Klasse B, knapp. Begründet
lag das Problem in der Art, wie IP Adressen vergeben wurden.
Da in einem Netzwerk jeder Computer eine IP Adresse erhielt, dessen NetzwerkPräfix gleich war, konnte dieser Präfix nur an ein einziges Netzwerk vergeben
werden, egal wieviele Computer dieses enthielt. Dadurch waren kleine Netzwerke sehr ineffektiv, wenn man betrachtet, wieviele IP Adressen im Netzwerk maximal vergeben werden konnten und wieviele tatsächlich verwendet
wurden.
Selbst in einem Class C-Netzwerk, bei dem die ersten 24-Bit der 32-BitNummer für die Netzwerk-ID und die letzten 8-Bit für die Host-ID verwendet werden, kann die Anzahl der nicht verwendeten IP Adressen groß sein.
23
Unter [Com1] können Sie erfahren, wie Netzwerke in die einzelnen Klassen aufgeteilt
werden.
24
CIDR steht für Classless Inter-Domain Routing
7 ROUTING BEI SUBNETZEN
23
So ein Netzwerk kann maximal 254 IP Adressen vergeben25 . Enthielte das
Netzwerk beispielsweise nur 10 Hosts, so würden die übrigen 244 IP Adressen
nicht verwendet und könnten auch nicht von anderen Netzwerken verwendet
werden.
Bei einem Class B- oder Class A-Netzwerk ist die Situation noch schlimmer,
da hier mehr Bits der Host-ID zugeordnet sind.
Um diesen Problemen zu begegnen, wurden die Subnetze eingeführt. Mit
ihrer Hilfe ist es möglich, daß mehrere physikalische Netzwerke den gleichen
Netzwerk-Präfix erhalten. Gleichzeitig können die IP Adressen, die diesen
Netzwerk-Präfix enthalten, auf diese Netzwerke verteilt werden.
Beim Verwenden von Subnetzen besteht außerdem die Möglichkeit, die Anzahl der, dem Subnetz zur Verfügung stehenden, IP Adressen genauer festzulegen, als es die Aufteilung in einzelne Klassen alleine kann. Dies hat den
großen Vorteil, daß, bei sorgfältiger Planung weniger IP Adressen von einem
Netzwerk ungenutzt blockiert werden, man sich aber ebenfalls einen gewissen
Vorrat an IP Adressen sichern kann, um z. B. genügend Reserven zu haben,
falls das Netzwerk in Zukunft wachsen sollte.
7.2
Die Subnetz-Maske
Uns sind jetzt die Gründe und die Vorteile vom Subnetting bekannt. Aber wir
wissen noch nicht, wie man Subnetze realisiert und adressiert. Bisher haben
wir Netzwerke nur in verschiedene Klassen eingeteilt. Allen Klassen gemein
ist die Aufspaltung einer IP Adresse in zwei Teile: den Netzwerk-Präfix und
den Host-Suffix. Die einzelnen Klassen unterscheiden sich hingegen in der
Anzahl der Bits, die als Netzwerk-Präfix bzw. als Host-Suffix interpretiert
werden.
Bei Subnetzen werden die IP Adressen etwas anders interpretiert. Hier wird
die IP Adresse nicht in den Netzwerk-Präfix und Host-Suffix unterteilt, sondern in einen Internet-Teil, der dem Netzwerk-Präfix entspricht, und in einen
lokalen Teil, der seinerseits in zwei Bereiche aufgespalten ist. Der erste Bereich identifiziert dabei das Subnetz und der zweite den Host.
Die Unterteilung in den Subnetz-Präfix und Host-Suffix wird dabei durch
eine 32-Bit lange Maske, der sogenannten Subnetz-Maske, realisiert. Es ist
kein Zufall, daß die IP Adresse und die Subnetz-Maske gleich lang sind, da
25
Die Host-ID 0 adressiert das Netzwerk selber und die Host-ID bei der alle Bits auf 1
gesetzt sind, ist für Broadcasts an alle Hosts in dem Netzwerk reserviert.
7 ROUTING BEI SUBNETZEN
24
die Subnetz-Maske angibt, welche Bits der IP Adresse verwendet werden, um
das Subnetz zu identifizieren und welche für den Host.
Für jedes Bit der IP Adresse, daß zur Identifikation des Subnetzes verwendet
werden soll, wird dem entsprechenden Bit in der Subnetz-Maske der Wert 1
zugewiesen. Soll hingegen das Bit für den Host verwendet werden, so steht
an der Stelle eine 0.
Da Subnetze einer bestimmten Klasse angehören, muss diese auch in der
Subnetz-Maske berücksichtigt werden. Daher müssen die Bits, die in der
IP Adresse für den Netzwerk-Präfix der entsprechenden Klasse verwendet
werden, in der Subnetz-Maske den Wert 1 haben.
Bei einem Subnetz eines Netzwerks der Klasse B müssen die ersten 16 Bit
nur Einsen enthalten und in den letzten beiden Bytes müsste insgesamt,
mindestens ein Bit den Wert 1 haben.
Die Subnetz-Maske eines Klasse B Netzwerkes, könnte z. B. so aussehen:
binär:
doted quad:
11111111
255.
11111111
255.
01001101
77.
000011010
26
Oben steht die Subnetz-Maske im Binärformat und darunter im doted-quadFormat. Es wird aber empfohlen, daß man Subnetz-Masken wählt, bei denen
die Einsen aufeinander folgen, da so die RT einfacher zu verstehen sind:
binär:
doted quad:
11111111
255.
11111111
255.
11110000
240.
00000000
0
Wir wissen jetzt, was Subnetze sind und wie diese mit Hilfe von SubnetzMasken realisiert werden. Daher werden wir uns dem Routen in der Gegenwart von Subnetzen zuwenden und nicht weiter in die Materie der Subnetze
vordringen.
7.3
Der Subnetz Routing Algorithmus
Mit der Einführung der Subnetze muss auch der bisher verwendete IP Routing Algorithmus angepasst werden. Bei Routern und Hosts, die nicht direkt
7 ROUTING BEI SUBNETZEN
25
an ein Netzwerk, das Subnetze verwendet, angeschlossen sind, wird wie gehabt, der IP Routing Algorithmus angewendet. Dagegen muss jeder Router
bzw. Host, der an einem Netzwerk mit Subnetzen angeschlossen ist, den Subnetz Routing Algorithmus verwenden.
Bei Netzwerken ohne Subnetze hat bisher die IP Adresse selber gereicht, um
aus dieser den Netzwerk-Präfix zu erhalten. Dies war möglich, da die ersten
drei Bits der IP Adresse die Klasse des Netzwerkes codierten und damit
auch die Aufteilung in den Netzwerk-Präfix und Host-Suffix gegeben war.
Daher genügte es, daß in die RT nur der Netzwerk-Präfix und die Adresse
des nächsten Ziels eingetragen wurden.
Hat man hingegen ein Netzwerk mit Subnetzen, so ist es nicht mehr möglich,
anhand der IP Adresse zu bestimmen, welche Bits für das Netzwerk und
welche für den Host verwendet werden. Da dafür die Subnetz-Maske benötigt
wird, wurde die RT für den Subnetz Routing Algorithmus, um eine Spalte
erweitert und besitzt nun die Form (S, N, R). Das S steht für die SubnetzMaske, die das Netzwerk N verwendet und R steht für die Next-Hop-Adresse,
an die das IP Datagramm gesendet werden soll, wenn N das Ziel-Netzwerk
ist.
Um zu entscheiden, wohin ein IP Datagramm weitergeleitet werden soll, verknüpft der Subnetz Routing Algorithmus die Subnetz-Maske eines Eintrags
in der RT mit der IP Adresse des Zieles bitweise durch die Boolesche UndFunktion (∧). Das Ergebnis vergleicht er dann mit dem Eintrag im Netzwerk
Feld. Stimmen beide überein, so wird das IP Datagramm an die Adresse im
Next-Hop Feld weitergeleitet.
7.4
Ein vereinheitlichter Routing Algorithmus
Dadurch, daß wir die Möglichkeit haben, beliebige Werte für die SubnetzMaske und die Netzwerk-Adresse in die RT einzutragen, können wir alle
Fälle des IP Routing Algorithmus abdecken. Damit ist es uns möglich, einen
einheitlichen Routing Algorithmus zu verwenden, der sowohl für Netzwerke
mit als auch ohne Subnetze angewendet werden kann.
Um eine Host-Specific Route zu realisieren, muss man alle Bits der SubnetzMaske auf 1 setzen und in das Netzwerk Feld die IP Adresse des Hostes eintragen. Für ein Netzwerk ohne Subnetze trägt man in das Subnetz Feld eine
Subnetz-Maske ein, bei denen die Bits den Wert 1 haben, die als NetzwerkPräfix der Klasse des Netzwerkes verwendet werden26 . In das Netzwerk Feld
26
Bei einem Class C Netztwerk, wären dies die ersten 24 Bit.
7 ROUTING BEI SUBNETZEN
26
wird dann der Netzwerk-Präfix des Netzwerkes eingetragen. Und um eine
Default Route anzulegen, bestehen sowohl die Subnetz-Maske als auch die
Netzwerk-Adresse nur aus Nullen.
Ein entsprechender Routing Algorithmus würde dann so aussehen:
1. Extrahiere die IP Adresse des Zieles Z aus dem IP Datagramm.
2. Berechne den Netzwerk-Präfix P von Z.
3. Vergleiche P mit den Netzwerk-Präfixen N aller direkt angeschlossener
Netzwerke.
4. Fallunterscheidung:
(a) P stimmt mit einem N überein ⇒ sende IP Datagramm direkt an
das Ziel, über dieses Netzwerk und beende den Algorithmus.
(b) keine Übereinstimmung ⇒ weiter mit 5.
5. Berechne für den aktuellen RT-Eintrag das bitweise Ergebnis B, wobei:
B = Z ∧ Subnetz-Maske
6. Vergleiche B mit Netzwerk-Eintrag E.
7. Fallunterscheidung:
(a) B stimmt mit E überein ⇒ sende IP Datagramm an die IP Adresse
des Next-Hop Feldes und beende den Algorithmus.
(b) keine Übereinstimmung und noch Einträge in der RT nach dem
aktuellen ⇒ setze nächsten Eintrag als aktuellen RT-Eintrag und
weiter mit 5.
(c) keine Übereinstimmung und keine weiteren RT-Einträge ⇒ Routing Fehler und Abbruch des Algorithmus.
Dieser Algorithmus lässt sich aber noch weiter vereinfachen, da man den Test
auf direkt angeschlossene Netzwerke durch entsprechende Einträge in der RT
realisieren kann. Zusätzlich wählt man das Netzwerk mit der längsten Übereinstimmung als nächstes Ziel aus. Eine Möglichkeit wäre z. B. das Anordnen der RT-Einträge ihrer Größe nach, oder spezielle Hashfunktionen oder
Baumstrukturen. Aber darauf wollen wir nicht näher eingehen und stattdessen einen optimierten Routing Algorithmus beschreiben, den man auch für
das Classless Inter-Domain Routing (CIDR) verwenden kann.
7 ROUTING BEI SUBNETZEN
27
Ein optimierter Routing Algorithmus
1. Extrahiere die IP Adresse des Zieles Z aus dem IP Datagramm
2. Für jeden Eintrag in der RT: bestimme das Ergebnis E des Booleschen
Ausdrucks:
E = Z ∧ Subnetz-Maske
und vergleiche E mit der entsprechenden Netzadresse N.
3. Wähle den Eintrag mit der längsten passenden Netzadresse.
⇒ da die Default Route immer eine Übereinstimmung der Länge 0 hat,
wird sie nur dann gewählt, wenn keine andere Route bekannt ist.
⇒ Gibt es keine Übereinstimmung und auch keine Default Route, dann
deklariere einen Routing Fehler.
7.5
CIDR-Notation
Mit der Einführung des, heutzutage verwendeten, Supernetting und damit
auch der CIDR Notation, verabschiedete man sich von der bis dahin verwendeten Aufteilung der Netzwerke in verschiedene Klassen. Die Idee hinter Supernetting ist, daß man, im Gegensatz zum Subnetting, nicht ein
IP Netzwerk-Präfix in mehrere Subnetze aufteilt, sondern daß man mehrere aufeinanderfolgende IP Adressen zu einem Block zusammenfaßt. Da die
IP Adressen in so einem Block nicht das gleiche Netzwerk-Präfix besitzen
müssen, können diese also IP Adressen aus mehreren, der alten, klassifizierten Netzwerke beinhalten. Die einzige Bedingung besteht darin, daß die IP
Adressen aufeinanderfolgen und nicht willkürlich gewählt sind.
Einer der Vorteile von Blöcken ist, daß man sie immer weiter in kleinere27
aufteilen kann, bis man nur noch Blöcke hat, die eine einzige IP Adresse
beinhalten. Damit ist es möglich jedem Netzwerken einen Block passender
Größe zuzuordnen und die Netzwerke ihrerseits können diese weiter aufteilen,
um sie z. B. für Subnetze zu verwenden.
Da beim Supernetting die Klassen der Netzwerke nicht mehr berücksichtigt werden, kann man deshalb nicht mehr, ohne zusätzliche Angaben, das
Netzwerk-Präfix aus der IP Adresse generieren. Aber es gibt jetzt noch ein
Problem, das mit dem Wegfall der Klasseneinteilung einhergeht. Wir wissen
nicht, wie groß ein Block ist bzw. bei welcher IP Adresse er anfängt oder
27
Die Anzahl der Adressen eines Blocks muss immer eine Potenz von 2 sein.
8 TRACEROUTE
28
aufhört. Deshalb benötigen wir jetzt zwei Angaben, um einen Block zu identifizieren.
Einerseits verwenden wir, wie beim Subnetting, eine 32-Bit-Maske, aber im
Gegensatz zu dieser müssen die Bits, die den Netzwerk-Teil angeben, fortlaufend den Wert 1 haben, während die Bits für das Host-Suffix fortlaufend 0
sein müssen. Und andererseits brauchen wir die kleinste IP Adresse im Block.
Betrachten wir dazu ein kleines Beispiel. Angenommen wir haben einen Block
von 512 IP Adressen und er beginnt mit der IP Adresse 193. 64. 6. 0. Da unser
Block 512 IP Adressen groß ist, müssen bei der Maske die ersten 23 Bits
gesetzt sein (232 − 29 = 223 ) und sie sieht folglich so aus:
binär:
doted quad:
11111111
255.
11111111
255.
11111110
254.
00000000
0
Da es aber sehr umständlich ist, neben der niedrigsten IP Adresse im Block
auch noch eine 32-Bit-Maske anzugeben, hat man die CIDR Notation eingeführt. Bei dieser schreibt man die IP Adresse, gefolgt von der Anzahl der
gesetzten Bits in der Maske und trennt beide durch einen Slash (/).
In unserem Beispiel würde die CIDR Notation dann so aussehen:
193. 64. 6. 0/23
Durch die Verwendung von Supernetting müssen auch die Routing Algorithmen entsprechend angepaßt werden. Wir haben schon auf Seite 27 einen
Routing Algorithmus kennengelernt, der für das Routen mit Supernetting
geeignet ist. Dazu verwendet man statt der Subnetz-Maske die hier vorgestellte 32-Bit-Maske und statt der Netzadresse N trägt man die niedrigste
IP Adresse des entsprechenden Blocks ein.
Damit beenden wir das Thema Routing und kommen zum letzten Teil dieser
Ausarbeitung, dem Programm Traceroute.
8
Traceroute
Im Jahre 1988 erblickte das Progamm Traceroute, geschrieben von Van Jacobson, das Licht der Welt. Seitdem ist es ein nützliches Werkzeug, zur Ermittlung von Routen, die Datenpakete vom sendenden zum empfangenden
Host nehmen können.
8 TRACEROUTE
29
Falls Sie sich fragen, warum Traceroute nur eine mögliche Route anzeigt und
nicht die Route, so liegt das daran, daß sich Routen ändern können. Wie
schon am Ende von Abschnitt 6.1 erwähnt, folgen mehrere IP Datagramme,
mit dem selben Ursprung und dem gleichen Ziel, nicht unbedingt der selben
Route. Auch der Weg, den ein IP Datagramm von Host A nach Host B
traversiert, ist nicht zwingend der gleiche, den ein IP Datagramm von B
nach A nimmt.
Und obwohl man mit Traceroute nicht mit absoluter Sicherheit die Route
bestimmen kann, die die Datenpakete beschreiten werden, so lassen sich doch
gewisse Rückschlüsse ziehen und evtl. Fehler beim Routen, bzw. Ausfälle von
Leitungen, oder die Erreichbarkeit eines Computers feststellen. Allerdings ist
es meist einfacher das Programm Ping zu verwenden, um zu bestimmen ob
ein Computer erreichbar ist.
Bevor es Traceroute gab, wurde das Programm Ping verwendet, um die Route
darstellen zu lassen, die ein Datenpaket von der Quelle zum Ziel nahm. Dazu
wurde Ping mit der Option -R für record route (RR) ausgeführt. Diese Option
bewirkt, daß die IP Adressen der Interfaces, über die das Datenpaket die
Router auf seinem Weg verlässt, gespeichert werden. Da aber nur Platz für
neun IP Adressen zur Verfügung steht, war dies bald nicht mehr ausreichend.
Ein weiteres Problem besteht darin, daß nur Router, die die RR Option
zulassen, ihre IP Adresse eintragen und deshalb die aufgezeichnete Route
nicht unbedingt vollständig ist. Da Ping außerdem auf dem Client-ServerModell basiert, müssen beide Enden, also Quelle und Ziel, Ping unterstützen.
Im Gegensatz zu Ping benötigt Traceroute keine speziellen Optionen, die
Router unterstützen müssen, oder ein Serverprogramm am Ziel. Alles was es
braucht ist ein funktionierendes UDP Modul am Ziel. Und da UDP ein fester
Bestandteil des TCP/IP Protokolls ist, wird es standardmässig unterstützt.
8.1
Funktionsweise von Traceroute
Um eine Route von dem Rechner, der Traceroute ausführt, zum angegebenen
Ziel zu finden, verschickt Traceroute IP Datagramme an das Ziel. Das ist bis
jetzt nichts besonderes und die IP Datagramme werden normal geroutet,
solange die TTL groß genug ist.
Wie schon auf Seite 20 beschrieben, muss jeder Router die TTL dekrementieren und das IP Datagramm weiterleiten, wenn die TTL immer noch größer
als null ist. Andernfalls muss der Router eine ICMP time exceeded Fehlermeldung an den Host schicken, der das IP Datagramm generiert hat und darf
das IP Datagramm nicht weiterleiten.
8 TRACEROUTE
30
Diese Eigenschaft macht sich Traceroute zunutze. Es verschickt IP Datagramme mit bestimmten TTL Werten und wartet auf ICMP time exceeded
Fehlermeldungen. Da auch in den IP Headern von IP Datagrammen, die eine
Fehlermeldung beinhalten, die IP Adresse des Routers28 , der diese erstellt
hat, enthalten ist, kann Traceroute anhand dieser die Route, die ein Datenpaket nimmt, darstellen.
Dazu versendet Traceroute zuerst IP Datagramme mit einer TTL von 1 an
das Ziel. Diese erreichen den ersten Router, der die TTL dekrementiert und
daraufhin eine ICMP time exceeded Fehlermeldung zurückschicken muss. Mit
dieser erfährt Traceroute die IP Adresse des ersten Routers und sendet dann
IP Datagramme mit einer TTL von 2 los, um die IP Adresse des zweiten
Routers zu erfahren. Dies geht solange weiter, bis die TTL groß genug ist,
um das Ziel zu erreichen. Da der Ziel-Host keine ICMP time exceeded Fehlermeldung zurückschickt, selbst wenn er die TTL zu null dekrementiert, stellt
sich jetzt die Frage, wie Traceroute in Erfahrung bringen kann, ob das Ziel
schon erreicht wurde.
Um dies herauszufinden, enthalten die verschickten IP Datagramme ein UDP29
Datagramm, das an eine hohe Portnummer auf dem Zielrechner gerichtet ist.
Da die Portnummer über 30000 liegt, ist es sehr unwahrscheinlich, daß der
Port auf dem Zielrechner offen ist30 . Wird ein Rechner von einem UDP Datagramm für einen geschlossenen Port erreicht, so muss das UDP Modul des
Rechners eine ICMP port unreachable Fehlermeldung an den Ursprung des
Datagramms schicken.
Damit wird auch klar woher Traceroute weiß, ob es den Zielhost schon erreicht
hat. Erhält es eine ICMP port unreachable Meldung, so ist ein IP Datagramm
am Ziel angekommen und Traceroute ist mit der Routenverfolgung fertig.
8.2
Die Ausgabe von Traceroute
Die Abb. 10 stellt beispielhaft die Ausgabe von Traceroute unter Linux dar31 .
Hier wurde eine Routenverfolgung vom Host Belldandy zum Host heise.de
aufgezeichnet.
28
Anders als bei Ping handelt es sich bei dieser IP Adresse um das Interface, über das
das IP Datagramm beim Router eingegangen ist.
29
UDP steht für User Datagram Protocol und befindet sich, wie TCP, in der transport
layer des TCP/IP Schichtsystems.
30
Läuft auf einem Rechner ein Programm, das Daten an einem Port akzeptiert, so
bezeichnet man diesen Port als offen, andernfalls als geschlossen.
31
Die Ausgabe von Traceroute ist abhängig von der Implementation und kann daher
variieren.
8 TRACEROUTE
31
Belldandy> traceroute heise.de
traceroute to heise.de (193.99.144.71), 30 hops max, 40 byte packets
1 gate001.roggen.stud.uni-bielefeld.de (194.94.18.1) 1 ms
1 ms
1 ms
2 stha111-cisco1600-1.hrz.uni-bielefeld.de (129.70.188.9) 7 ms
17 ms
11 ms
3 stha111-cat5500-1-rsm.hrz.uni-bielefeld.de (129.70.188.61) 7 ms
5 ms
7 ms
4 s01-cat6500-1-msfc.hrz.uni-bielefeld.de (129.70.188.58) 22 ms
11 ms
5 ms
5 v01-cat6500-1-msfc.hrz.uni-bielefeld.de (129.70.188.37) 13 ms
8 ms
8 ms
6 v01-cat6500-2-msfc.hrz.uni-bielefeld.de (129.70.188.66) 6 ms
14 ms
5 ms
7 ar-bielefeld1.g-win.dfn.de (188.1.44.193) 5 ms
19 ms
5 ms
8 cr-essen1-po0-1.g-win.dfn.de (188.1.86.77) *
26 ms
21 ms
9 cr-frankfurt1-po8-1.g-win.dfn.de (188.1.18.89) 19 ms
21 ms
23 ms
10 ir-frankfurt2-po3-0.g-win.dfn.de (188.1.80.38) 25 ms
21 ms
26 ms
11 de-cix.ffm.plusline.net (80.81.192.132) 27 ms
28 ms
21 ms
12 c6.f.de.plusline.net (213.83.57.27) 20 ms
21 ms
21 ms
13 c22.f.de.plusline.net (213.83.19.83) 20 ms
20 ms
24 ms
14 www.heise.de (193.99.144.71) 28 ms
37 ms
22 ms
Abbildung 10: Traceroute vom Host Belldandy zu heise.de
Die erste Zeile nach dem Programmaufruf gibt den Namen des Ziels an, die
IP Addresse des Ziels, den maximalen Wert der TTL und abschließend die
Größe des Pakets. Die nachfolgenden Zeilen haben das folgende Format:
TTL
Name
IP Addresse
1. Zeit
2. Zeit
3. Zeit
TTL steht hier für den TTL Wert, den die verschickten Datenpakete haben.
Name und IP Addresse identifizieren den Router/Host der von den Datenpaketen erreicht wurde und die drei Zeiten geben jeweils an, wie viele Millisekunden vom Senden des Datenpakets bis zum Empfang der entsprechenden
ICMP Fehlermeldung vergangen sind.
Wie man sehen kann, verschickt Traceroute für jeden TTL-Wert drei IP Datagramme. Traceroute sendet dabei das erste Datenpaket und wartet auf die
ICMP Fehlermeldung, bevor das nächste losgeschickt wird. Trifft die Fehlermeldung innerhalb von 5 Sekunden ein, so berechnet Traceroute die Zeit
und gibt diese aus. Danach wird das nächste IP Datagramm versendet. Verstreichen allerdings die 5 Sekunden, ohne das eine Fehlermeldung eintrifft,
so schickt Traceroute das nächste Datenpaket los und gibt ein Sternchen (*)
aus. Sind die Zeiten der drei IP Datagramme bestimmt, so wird die TTL
um eins erhöht und das Ganze geht von vorne los. Dies geht solange weiter
bis entweder drei IP Datagramme an den Zielhost gesendet wurden, oder die
TTL den maximalen Wert überschritten hat.
LITERATUR
32
Literatur
[Com] Douglas Comer, David L. Stevens, Internetworking with TCP/IP,
Volume 1: Principles, Protocols and Architectures, Prentice Hall,
2000
[Com1] Douglas Comer, David L. Stevens, Internetworking with TCP/IP,
Volume 1: Principles, Protocols and Architectures, Prentice Hall,
2000, S.64
[Com2] Douglas Comer, David L. Stevens, Internetworking with TCP/IP,
Volume 1: Principles, Protocols and Architectures, Prentice Hall,
2000, Kap. 5 und 6
[Stev]
W. Richard Stevens, TCP/IP Illustrated, Volume 1: The Protocols,
Addison-Wesley, 1994-1996
[Stev1] W. Richard Stevens, TCP/IP Illustrated, Volume 1: The Protocols,
Addison-Wesley, 1994-1996, Kap. 1
[Tan]
Andrew S. Tanenbaum,
9, 22 21 4, 19
Computernetzwerke, Prentice Hall, 3. revidierte Auflage, 2000
[Tan1] Andrew S. Tanenbaum, Computernetzwerke, Prentice Hall, 3. revidierte Auflage, 2000, Kap. 5.2 und 5.3
13