Zurück zum Inhaltsverzeichnis des Manuskripts verteilte Systeme

5.3.4 IPv4-Routing

Begriff

Bereits im ersten Abschnitt dieses Kapitels (5.1 Aufgaben eines Vermittlungsprotokolls) ist ausgeführt worden, dass mit den Begriffen Routing und Vermittlung das Weiterleiten von Datenpaketen auf der Grundlage von Wegentscheidungen gemeint ist. Die Vermittlungsrechner heißen Router. Das sind entweder Allzweckcomputer wie Workstations oder Spezialrechner, die nur für diesen Zweck konfiguriert worden sind. Im Internet werden durch die Router IP-Pakete vermittelt. Man spricht deshalb hier von einem IP-Routing.

Beispielhafter Netzwerkverbund

Um die prinzipielle Funktionsweise des (IP-)Routing herauszuarbeiten, soll ein minimaler Netzwerkverbund betrachtet werden, der aus genau zwei durch einen Router miteinander verbundenen lokalen Netzwerken besteht. Dieser Verbund soll keine Verbindung zum Internet haben. Die folgende Grafik zeigt diese sehr vereinfachte Situation. Zu sehen sind ein 137/8- und ein 158/8-Netz mit jeweils ein paar Rechnern samt deren IP-Adressen sowie einen Router. Man beachte, dass der Router ein (möglicherweise spezieller) Rechner ist, der zu beiden Netzen gehört. Er hat zwei Netzwerkschnittstellen und damit zwei IP-Adressen, je eine für das jeweilige Netzwerk. Wäre er auch noch an ein drittes Netzwerk angeschlossen, dann hätte er eine dritte IP-Adresse, usw. In beiden Netzwerken des Beispiels soll jeweils jeder Rechner jeden anderen des gleichen Netzes direkt erreichen können.

Beispielnetz

Routingtabellen

Will einer der Rechner, beispielsweise einer in dem 137/8-Netzwerk, einem anderen Rechner im gleichen Netzwerk ein IP-Datagramm schicken, dann kann er das direkt tun. Soll das Datagramm jedoch einen Rechner im 158/8-Netz erreichen, dann muss es zunächst dem Router übergeben werden. Diese Wegentscheidung (Zustellentscheidung) wird durch Tabellen geregelt, die Routingtabellen genannt werden. Jeder Rechner in jedem der beiden Netze und insbesondere der Router führen eine solche Tabelle. In ihr wird beschrieben, über welche jeweils lokale Netzwerkschnittstelle ein IP-Paket zu senden ist, um ein bestimmtes Ziel zu erreichen. Das soll jetzt mit einem etwas vereinfachten Beispiel verdeutlicht werden.

Vereinfachte Host-Routingtabelle

Die folgende Grafik zeigt die (vereinfachte) Routingtabelle des Rechners mit der IP-Adresse 137.0.0.2:

Host-Routingtabelle

Bevor die Funktionsweise dieser Tabelle beschrieben wird, soll auf einen noch immer verbreiteten Sprachgebrauch hingewiesen werden: In den Anfangsjahren des Internet wurden die Router Gateways genannt. Diese Bezeichnung findet sich noch heute in den Ausgaben vieler Internet-Werkzeuge, zum Beispiel bei den Routingtabellen.

Die Tabelle des Beispiels ist zweizeilig und beschreibt folgenden Sachverhalt:

Vereinfachte Router-Routingtabelle

Der Router im obigen Netzwerkverbund führt folgende Routingtabelle:

Router-Routingtabelle

Diese Tabelle legt fest, dass Datagramme in die Zielnetzwerke 137/8 und 158/8 über das entsprechende Netzwerkinterface direkt zugestellt werden können, und dass andere Ziele nicht erreichbar sind.

Konkrete Routingtabellen

Die Ausgabe der lokalen Host-Routingtabelle kann unter Unix und Windows mit dem folgenden Shell-Kommando, das bei allen mir bekannten TCP/IP-Implementierungen zum Lieferumfang gehört, erfolgen:

netstat -r

Dieses Kommando erzeugte im Herbst 2018 auf meinem Laborrechner an unserer Hochschule folgende Ausgabe:

Konkrete Routingtabelle

Die Ausgabe beginnt mit Hinweisen auf die lokale IP-Adresse (141.64.89.11) und auf den Standard-Router (141.64.89.1) im lokalen Netzwerk, denen die eigentliche Routingtabelle folgt. Verglichen mit den Tabellen des einleitenden beispielhaften Netzwerkverbunds erscheinen zwei zusätzliche Tabellenattribute, nämlich eine Metrik und eine Netzwerkmaske.

Bei einer Metrik handelt es sich anschaulich um ein Kostenmaß für die Weiterleitung von IP-Datagrammen auf dem jeweiligen Weg. Sie wird als Entscheidungshilfe herangezogen, wenn es laut der Tabelle mehrere Möglichkeiten der Weiterleitung von Paketen gibt. Im einfachsten Fall zeigt eine Metrik an, wie viele Datentransfers (Hops) bis zum Ziel auf dem entsprechenden Weg zu erwarten sind. In der Praxis sind Metriken allerdings weitaus komplexer angelegt und können Angaben zur jeweiligen Last, Bandbreite, Verbindungsqualität, monetären Situation usw. enthalten. Darauf kann hier aus Zeitgründen nicht weiter eingegangen werden.

Bei den einleitenden Beispielen mit dem sehr stark vereinfachten Netzwerkverbund war in den Tabellen die Angabe einer Netzwerkmaske nicht erforderlich, denn dort wurden Netzwerkadressen für IP-Datagramme in CIDR-Schreibweise angegeben. Bei konkreten Routingtabellen muss jedoch jeweils die Ziel-Netzwerkadresse mit Hilfe einer Netzwerkmaske und einer logischen UND-Verknüpfung aus der Ziel-IP-Adresse herausgezogen werden.

Die Tabelle wird Zeile für Zeile abgearbeitet, allerdings von unten nach oben! Dabei wird folgendermaßen verfahren:

Damit dieses Verfahren nicht erfolglos endet, muss die erste Zeile, das ist die letzte, die gegebenenfalls bearbeitet wird, eine Art otherwise realisieren.

Bevor die Angaben in den einzelnen Zeilen der angegebenen konkreten Routingtabelle in ihrer Wirkung besprochen werden, soll ein elementares Beispiel betrachtet werden. Dabei soll ein IP-Datagramm von meinem Rechner im Labor an unserer Hochschule an einen benachbarten Laborrechner übertragen werden. Es liegt folgende Situation vor:

Meine IP-Adresse: 141.64.89.11 Ziel-IP-Adresse: 141.64.89.12

Die Abarbeitung der Routingtabelle auf meinem Rechner führt zu folgenden Aktionen:

  1. Die letzte Tabellenzeile wird bearbeitet: Die Ziel-IP-Adresse 141.64.89.12 des zu sendenden IP-Pakets wird mit der Netzwerkmaske 255.255.255.255 UND-verknüpft. Das Ergebnis stimmt mit der Angabe in der Spalte Netzwerkziel nicht überein. Es geht weiter mit der nächsten Tabellenzeile.

  2. Die vorletzte Tabellenzeile wird bearbeitet: Die Ziel-IP-Adresse 141.64.89.12 des zu sendenden Pakets wird mit der Netzwerkmaske 240.0.0.0 UND-verknüpft. Das Ergebnis stimmt mit der Angabe in der Spalte Netzwerkziel nicht überein. Es geht weiter mit der nächsten Tabellenzeile.

  3. Das geht so weiter, bis die Zeile mit der Netzwerkmaske 255.255.255.128 erreicht ist. Wieder wird die Zieladresse 141.64.89.12 mit der Netzwerkmaske UND-verknüpft. Jetzt ergibt sich die Netzwerkadresse 141.64.89.0 und der Vergleich mit der Angabe in der ersten Spalte zeigt eine Übereinstimmung. Als Folge daraus wird das Datagramm über die (einzige) Schnittstelle 141.64.89.11 meines Rechners (ein Router wird nicht benötigt) in das lokale Netz gegeben. Es kann direkt zugestellt werden und die Abarbeitung der Routingtabelle ist beendet.

Die Routingtabelle meines Laborrechners hatte zum Zeitpunkt ihrer Ausgabe sieben Zeilen, die jetzt von unten nach oben, also in der Reihenfolge ihrer Abarbeitung, betrachtet werden sollen:

Adressumsetzung

Ein Router, der ein IP-Datagramm von einem Netzwerk in ein anderes vermitteln will, muss die Zieladresse umsetzen. Allerdings verändert er nicht die Ziel-IP-Adresse, sondern die zugehörige MAC-Adresse. MAC-Adressen sind Thema des nächsten Kapitels (6 Netzzugang), weshalb hier ein kleiner Vorgriff notwendig ist, um die Adressumsetzungen durch die Router beschreiben zu können.

Um ein IP-Paket zu versenden, wird es von einem Programm der DoD-Schicht 2 an eines der DoD-Schicht 1 übergeben. Dieses erweitert das Paket unter anderem um die MAC-Adressen (Hardware-Adressen) von Sender und Empfänger. Wie das DoD-1-Programm zu diesen Adressen kommt, wird im nächsten Kapitel beschrieben. Datenpakete der DoD-Schicht 1 werden traditionell Rahmen genannt. Es sind die Rahmen, die dann physikalisch übertragen werden.

Um dem nächsten Kapitel nicht zu weit vorzugreifen, soll die Rahmenbildung und Adressumsetzung durch einen Router an einem wieder stark vereinfachten Beispiel beschrieben werden. Dazu soll der eingangs benutzte Netzwerkverbund aus zwei lokalen Netzen erneut herangezogen werden. Angenommen, eine Anwendung auf dem Host 137.0.0.2 möchte einer Anwendung auf dem Host 158.0.0.4 den String Hallo senden, dann erstellt sie, sehr stark vereinfacht dargestellt, ein IP-Datagramm der folgenden Form:

Von IP: 137.0.0.2 An IP: 158.0.0.4 Inhalt: Hallo

Die IP-Software des Hosts 137.0.0.2 konsultiert die lokale Routingtabelle und stellt fest, dass sie das Paket nicht direkt zustellen kann, sondern dass sie es dem Router 137.0.0.5 übergeben muss. Sie besorgt sich durch Auslesen ihrer lokalen Netzwerkkarte ihre eigene MAC-Adresse und ermittelt (siehe dazu das nächste Kapitel) die MAC-Adresse des Routers im 137/8-Netzwerk. Damit erstellt sie einen (sehr stark vereinfachten) Rahmen der Form:

Sender: Lokale MAC-Adresse Empfänger: MAC-Adresse von 137.0.0.5 (Router) Von IP: 137.0.0.2 An IP: 158.0.0.4 Inhalt: Hallo

Das lokale Netzwerk stellt diesen Rahmen dem Router zu, der die Zielinformation des darin enthaltenen IP-Pakets liest (An IP: 158.0.0.4). Er liest aus seiner zum 158/8-Netzwerk gehörenden Netzwerkkarte seine zugehörige lokale MAC-Adresse und beschafft sich die MAC-Adresse des Rechners 158.0.0.4. Dann verändert er den Rahmen zu:

Sender: MAC-Adresse des Routers im 158/8-Netz Empfänger: MAC-Adresse von 158.0.0.4 Von IP: 137.0.0.2 An IP: 158.0.0.4 Inhalt: Hallo

Man beachte, dass der Router das IP-Paket nicht verändert hat. Er hat lediglich MAC-Adressen im Rahmen umgesetzt. Diesen Rahmen erhält der Host 158.0.0.4, und er erhält ihn vom Router. Seine DoD-1-Software schält das ursprüngliche IP-Paket aus dem Rahmen heraus und übergibt es seiner IP-Software:

Von IP: 137.0.0.2 An IP: 158.0.0.4 Inhalt: Hallo

Routingprotokolle

Anfangs waren die Routingtabellen statisch und wurden von Systemadministratoren gepflegt. Als der Arbeitsaufwand dafür zu groß wurde, entstanden Routingprotokolle wie Gateway to Gateway Protocol (GGP), Routing Information Protocol (RIP) und weitere, die alle darauf beruhen, dass die Router untereinander ihre Routingtabellen austauschen. Am einfachsten sind reine Nachbarschaftsalgorithmen.

Wird ein Router installiert, besitzt er anfangs nur Kenntnis über die IP-Adressen in den direkt an ihn angeschlossenen Netzwerken. Durch einen Tabellenaustausch mit benachbarten Routern erweitert er seine Routingtabelle. Die Hosts in einem Netzwerk werden durch den (oder die) lokalen Router über erreichbare Adressen informiert und bauen auf dieser Grundlage ihre jeweiligen Routingtabellen auf. Es ist instruktiv und den Studierenden als Übung empfohlen, den eingangs zu diesem Abschnitt beschriebenen minimalistischen 2-Netze-Verbund um ein drittes Netzwerk zu erweitern, dazu die vereinfachten Anfangs-Routingtabellen aufzubauen und dann einen Tabellenaustausch der beiden Router durchzuführen.



Zurück zum Inhaltsverzeichnis des Manuskripts verteilte Systeme