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.
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.
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.
Die folgende Grafik zeigt die (vereinfachte) Routingtabelle des Rechners mit der IP-Adresse 137.0.0.2:
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:
Der Router im obigen Netzwerkverbund führt folgende 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.
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:
Dieses Kommando erzeugte im Herbst 2018 auf meinem Laborrechner an unserer Hochschule folgende Ausgabe:
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:
Die Abarbeitung der Routingtabelle auf meinem Rechner führt zu folgenden Aktionen:
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:
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:
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:
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:
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:
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.