Rechnernetze
Home Nach oben

Wegewahl im Internetprotokoll

Wenn ein Datagramm im Internet transportiert werden soll, so ist es an einen bestimmten anderen Rechner zu schicken. der es auf dem besten Weg weiterleitet. Es ist somit das Problem zu lösen, einen geeigneten, bzw. den geeignetsten Rechner zu finden, der ein Datagramm weiterschicken kann. Dieses Problem wird als Wegewahl (Routing) bezeichnet.

Dabei ist zu beachten, dass sich der Zustand des Netzes insgesamt ständig ändert, und es in der einen Situation sinnvoll sein kann, ein Datagramm mit jeweils dem gleichen Ziel von Rechner A nach Rechner B zu schicken, in einer anderen von A nach C. Die meisten Internetrechner lösen dieses Problem jedoch pragmatisch auf die Weise, dass sie alle Datagramme mit dem gleichen Ziel auch an den gleichen Rechner weiterschicken. In großen Vermittlungsnetzen werden heute jedoch auch komplexere Wegewahlalgorithmen eingesetzt, so dass Datagramme zum gleichen Ziel über unterschiedliche Pfade geschickt werden können.

Die Wegewahl im Internet wird im Kapitel Routing allgemein beschrieben. Hier sollen nur die Grundprinzipien angerissen werden.

Rechner, die nur Datagramme weiterschicken, also keine eigenen Datagramme erzeugen oder geschickt bekommen, sollen als Router bezeichnet werden, die anderen weiter als Rechner (host). Es gibt zwei wesentliche Klassen von Zielen, die direkten Ziele und die indirekten Ziele.

Wenn ein Rechner oder Router ein Datagramm zu einem Zielrechner schicken will, der an das gleiche Netz wie der Rechner oder Router angeschlossen ist, so kann er das Datagramm in einen Rahmen packen, es entsprechend adressieren, und abschicken. Ob dieses so ist, erfährt er dadurch, dass er aus dem Zieladressteil des Datagrammkopfes die Netzadresse durch eine Maske ausblendet und diese mit einer Liste der direkt angeschlossenen Netze vergleicht.

Wenn ein Rechner oder Router in seiner Liste der direkt angeschlossenen Netze das Zielnetz nicht findet, so muss er das Datagramm an einen anderen Router schicken. Dazu hat er eine weitere Liste, in der zu jedem Zielnetz angegeben ist, zu welchem Router er das Datagramm zu schicken hat. Findet er einen solchen in dieser Liste, so wird das Datagramm wieder in einen netzspezifischen Rahmen gepackt und dem Router zugeschickt. Dieser verfährt entsprechend. Alternativ gibt es in dieser Situation noch die Möglichkeit, dass der Absender durch entsprechende Einträge in sein Optionen-Feld selbst die Route seiner Datagramme festlegt.

Findet der Router keinen Eintrag zu der Netzangabe in der Zieladresse, so gibt es zwei weitere Möglichkeiten. Entweder es gibt eine Ausweichregelung (default routing), welche einen Router definiert, zu dem alle Datagramme geschickt werden, für die es keinen Eintrag in der Wegewahl-Tabelle (routing table) gibt, oder es liegt ein Fehler vor, der durch eine Fehlermeldung an den Absender behandelt wird. Insgesamt erhalten wir den folgenden Algorithmus:

procedure WEGEWAHL(Datagramm)
begin
    ZielAdresse := Zieladresse(Datagramm);
    NetzAdresse := Netzadresse(Datagramm);
    if NetzAdresse in Direkte_Netzadressen then
      Sende(Datagramm, ARP(Zieladresse) );
    else if Datagramm.Option.Wegewahl then
      Sende(Datagramm, Datagramm.Option.EigeneRoute);
    else if NetzAdresse in Wegewahl_Tabelle then
      Sende(Datagramm, Wegewahl(NetzAdresse) );
    else if Ausweich_Weg then
      Sende(Datagramm, Ausweich_Router);
    else Melde_Fehler;
end.

Fehler werden mit besonderen Datagrammen gemeldet, die im Abschnitt über ICMP behandelt werden. Man beachte, dass eintreffende Datagramme auf eine bestimmte Weise behandelt werden müssen: Sie müssen aus dem Rahmen, in dem sie verschickt wurden, ausgepackt werden; es muss überprüft werden, ob der Kopf verfälscht wurde; es müssen gegebenenfalls die Optionen untersucht und interpretiert werden; es muss die Lebenszeit dekrementiert werden, und das Datagramm muss vernichtet werden, falls die restliche Lebenszeit auf 0 abgesunken ist; und es muss eine neue Kopfprüfsumme gebildet werden; und schließlich muss das Datagramm wieder in einen Rahmen gepackt und weitergeschickt werden - neben der Möglichkeit, dass ein Datagramm auch noch fragmentiert werden müsste. Somit ist die obige Wegewahl nur eine von vielen Aktionen, die ein Router mit den Datagrammen durchzuführen hat.

Erhält ein Host ein Datagramm, welches offensichtlich nicht für ihn bestimmt ist, so sollte er es nicht weiterschicken, sondern aus den folgenden Gründen vernichten:

Der Rechner wird mit solchen Aufgaben zu stark belastet.

Die Datagramme belasten das Netz unnötig.

Auf dem Netz kann u.U. ein Chaos entstehen.

Ein aufgetretener Fehler wird in der Regel auf diese Weise nicht beseitigt.

Router senden im Fehlerfalle spezielle Fehlermeldungen, was Rechner, die nicht als Router arbeiten, oft nicht können.