Routing
Routing dient dazu, den Pfad eines Pakets über ein oder mehrere Netze zu bestimmen.
MAC-und IP-Adressen beim Routing
Das folgende Bild zeigt ein ICMP Paket im Netz des Senders (grün = IP + MAC des Quell-Rechners; blau = MAC/IP-Adresse des Ziel-Rechners; gelb = TTL; schwarz = Prüfsumme; rot = MAC des Gateways im Subnetz):
Im Subnetz des Ziels sieht das Paket so aus:
Die Prüfsumme zeigt, dass es sich um dasselbe Paket handelt. Die IP-Adressen haben sich nicht geändert. Geändert haben sich die MAC-Adressen und die TTL (time to live) des Pakets.
Innerhalb eines Subnetzes wird ausschließlich über MAC-Adressen mit anderen Geräten kommuniziert. Zur Auflösung von IP-Adressen in MAC-Adressen wird das Address Resolution Protocol (ARP) verwendet. Befindet sich der Empfänger in einem anderen Subnetz, ändern Router Quell-und Ziel-MAC-Adresse, um das Paket weiterzuleiten.
Die TTL ist eine Zahl, welche von jedem Router, über den das Paket wandert, um 1 reduziert wird. Sie soll verhindern, dass Pakete ziellos im Netzwerk umherwandern. Erreicht sie 0, wird das Paket vom nächsten Router verworfen, den es erreicht. Bei ungünstigen Routen kann es unter Umständen sein, dass Pakete ihr Ziel nicht erreichen können, weil zwischen Sender und Empfänger zu viele Hops (Router) liegen.
Routingtabellen
Anhand ihrer Routingtabellen entscheiden Router und Clients, wohin sie ihre Pakete schicken, damit diese am Ziel ankommen. In der Routingtabelle stehen also folglich alle Ziele und wie diese erreicht werden können.
Ein Client mit Windows/Linux/Mac routet in der Standardeinstellung nicht, d.h. er leitet keine Pakete anhand seiner Routingtabelle weiter, die er erhält, auch wenn er den Weg zum Ziel kennt. Dafür benötigt man eine Routing-Software oder einen Router in Hardware.
Ein Eintrag in einer Routingtabelle besteht aus folgenden Angaben:
Ziel | Adresse des zu erreichenden Empfängers (dies kann die Adresse eines Subnetzes oder eines Hosts sein) |
Netzwerkmaske |
Subnetzmaske des Ziels 0.0.0.0 (CIDR /0) ist keine Netzmaske 255.255.255.255 (CIDR /32) schließt nur die IP des Ziels ein |
Gateway bzw. next hop | Adresse, an welche ein Paket für den Empfänger geschickt werden soll |
Schnittstelle | über welches Interface soll das Paket geschickt werden |
Metrik | Kann das Ziel über 2 Routen erreicht werden, bestimmt die Metrik, welche Route genommen wird. Die Metrik einer Route kann anhand von verschiedenen Parametern bestimmt werden, z.B. der Anzahl der Hops zum Ziel oder der Geschwindgkeit der Route. Die Route mit der geringeren Metrik wird bevorzugt. |
Einsehen und Ändern der Routingtabelle
Unter Windows gibt es den Befehl "route" zum Einsehen und Ändern der Routingtabelle. Dessen grundlegende Syntax sieht folgendermaßen aus:
route [<command> [<destination>] [mask <netmask>] [<gateway>] [metric <metric>] [if <interface>]]
Der Befehl kennt folgende "commands":
gibt einen (bei Angabe eines Ziels), ansonsten alle Einträge der Routingtabelle aus | |
add | Hinzufügen einer statischen Route (Angabe des Ziels ist notwendig) |
delete | Löscht eine Route in der Routingtabelle (Angabe des Ziels ist notwendig) |
change | Ändert einen Eintrag in der Routingtabelle (Angabe des Ziels ist notwendig) |
Besondere Ziele
Default-Route
Das Ziel 0.0.0.0/0 in einer Routingtabelle steht für die Default-Route. Ist kein passender Eintrag für ein Paket vorhanden, wird die IP-Adresse des Gateways dieses Eintrags mittels ARP-Protokoll aufgelöst und als Empfänger die ermittelte MAC-Adresse in das Ethernet-Frame eingetragen. Es können mehrere Default-Routen definiert sein, um den Ausfall eines Gateways zu kompensieren.
Loopback
Das Netz 127.0.0.0/8 bzw. 127.0.0.0 mit Subnetzmaske 255.0.0.0, also die IP-Adressen 127.0.0.1 bis 127.255.255.255, ist für Loopback-Traffic reserviert. Dieser verlässt das Interface nicht, sondern wird intern an es zurückgeschickt.
Limited Broadcast
Die IP-Adresse 255.255.255.255 mit der Subnetzmaske 255.255.255.255 (CIDR: /32) ist eine spezielle IP-Adresse, welche zum Limited Broadcast gehört. Ein Paket, welches an diese IP-Adresse geschickt wird, wird an alle Geräte im Subnetz geschickt. Es verlässt das aktuelle Subnetz nicht und kann nicht geroutet werden. Jedes Netz, mit dem das Gerät verbunden ist, hat einen Eintrag mit der Limited Broadcast Adresse.
Multicast
Das Netz 224.0.0.0 mit der Subnetzmaske 240.0.0.0 bzw. 240.0.0.0/4 (CIDR) ist für Multicast reserviert, d.h. für Traffic, welche an eine Gruppe von Systemen gerichtet ist, z.B. an alle Router oder alle DHCP-Server in einem Netz. Jedes Netz hat einen Eintrag für das Multicast-Netz.
Lesen einer Routing Tabelle anhand eines Beispiels
Die Einträge der Routingtabelle aus der oberen Abbildung haben die folgenden Bedeutungen.
Ziel |
Netzwerkmaske | Gateway/Next Hop | Schnittstelle |
Metrik |
Bedeutung |
0.0.0.0 | 0.0.0.0 | 192.168.178.1 | 192.168.178.78 |
25 |
Pakete ohne expliziten Eintrag werden an 192.168.178.1 über das Interface mit der IP 192.168.178.78 gesendet (Default Route) |
127.0.0.0 | 255.0.0.0 |
- | 127.0.0.1 |
331 |
Pakete an das Loopback-Netz werden über das Interface mit der IP 127.0.0.1 gesendet |
127.0.0.1 | 255.255.255.255 | - | 127.0.0.1 |
331 |
Pakete an die Loopback-Adresse 127.0.0.1 werden über das Interface mit der IP 127.0.0.1 gesendet |
127.255.255.255 | 255.255.255.255 |
- | 127.0.0.1 |
331 |
Pakete an die Broadcast-Adresse des Loopback-Netzes werden über das Interface mit der IP 127.0.0.1 gesendet (directed broadcast) |
192.168.178.0 | 255.255.255.0 | - |
192.168.178.78 |
281 |
Pakete an das Netz 192.168.178.X werden über das Interface mit der IP 192.168.178.78 gesendet |
192.168.178.78 | 255.255.255.255 | - | 127.0.0.1 |
281 | Pakete an die eigene IP 192.168.178.78 werden über das Interface mit der IP 127.0.0.1 gesendet |
192.168.178.255 |
255.255.255.255 | - |
192.168.178.78 |
281 |
Pakete an die Broadcast-Adresse des Netzes 192.168.178.X werden über das Interface mit der IP 192.168.178.78 gesendet |
224.0.0.0 | 240.0.0.0 | - |
127.0.0.1 |
331 |
Pakete an das Multicast-Netz werden über das Interface mit der IP 127.0.0.1 gesendet |
224.0.0.0 | 240.0.0.0 | - | 192.168.178.78 |
281 |
Pakete an das Multicast-Netz werden bevorzugt (Metrik 281 vs 331) über das Interface mit der IP 192.168.178.78 gesendet |
255.255.255.255 | 255.255.255.255 | - | 127.0.0.1 |
331 |
Pakete an die Limited Broadcast IP werden über das Interface mit der IP 127.0.0.1 gesendet |
255.255.255.255 |
255.255.255.255 |
- |
192.168.178.78 |
281 |
Pakete an die Limited Broadcast IP werden bevorzugt (Metrik 281 vs 331) über das Interface mit der IP 192.168.178.78 gesendet |
Wie kommen Routen in die Routing-Tabelle
Direkt angeschlossene Netze
Wird einem Interface eine IP mit Subnetzmaske zugewiesen, werden für dieses Netzwerk automatisch Einträge in der Routingtabelle generiert.
Statisches Routing
Routen können manuell in die Routingtabelle eingetragen werden. Unter Windows geschieht dies unter anderem mit dem oben erklärten "route" Befehl.
Dynamisches Routing
Bei weit verzweigten Netzwerken wie dem Internet ist das manuelle Pflegen der Routingtabellen äußerst aufwändig und fehleranfällig. Stattdessen gibt es Protokolle (BGP Border Gateway Protocol, OSPF Open Shortest Path First, RIP Router Information Protocol, IGRP Interior Gateway Routing Protocol), welche es Routern erlauben, ihre Routingtabellen durch den Austausch von Informationen mit anderen Routern dynamisch aufzubauen. Beim dynamischen Routing kommen im Wesentlichen 2 Algorithmen zum Einsatz:
Beim Distance Vector Algortihmus sendet jeder Router seine Routingtabelle regelmäßig via Broadcast an alle anderen Router im Netz, welche mit diesen Informationen ihre eigene Routingtabelle ergänzen. Da dies recht ineffizient ist und zu einem hohen Paketaufkommen innerhalb eines Netzwerks sorgt (Broadcastlawine), wurden einige Erweiterungen implementiert.
Beim Link State Algorithmus verursacht eine Änderung eines Routingeintrags ein Link State Announcement, welches an alle benachbarten Router geschickt wird. Diese ergänzen dadurch ihre Routintabelle. Da bei diesem Algorithmus nur bei Veränderungen Informationen ausgetauscht werden, ist dieser Algorithmus sehr effizient. Er ist die Implementierung des Djikstra-Algorithmus.
No Comments