Router E-Mail
Geschrieben von: tpm   

Was der Switch für das LAN (Local Area Network) ist, ist der Router für das WAN (Wide Area Network). Während der Switch jedoch lediglich mit MAC Adressen arbeitet, trifft der Router seine Weiterleitungsentscheidungen auf Basis von IP Adressen.

 

Daher ist er im OSI-Referenzmodell auch auf der Vermittlungsschicht (Schicht 3) angesiedelt. Dies impliziert auch, dass ein Router Datenpakete bis zur Vermittlungsschicht entkapseln muss, um an die dort enthaltenen Informationen (vor allem der Ziel IP Adresse) zu gelangen. Schon aus diesem Grund arbeiten Router etwas langsamer als Switche:

 

Kapselungsstufen beim Switch und beim Router

 

Der Router wird wird verwendet, um LANs oder auch WANs untereinander zu verbinden. Das Internet selbst besteht aus einem Verbund unzähliger WANs und damit Routern die dafür sorgen, dass Anfragen auch an die richtigen Ziele weitergeleitet werden.

 

Eine der Hauptaufgaben eines Routers ist die Übersetzung von lokalen IP Adressen zu globalen IP Adressen und umgekehrt. Eine lokale Adresse ist dabei immer eine IP Adresse aus dem privaten Adressraum, da sonst keine Übersetzung erforderlich wäre. Eine externe IP Adresse ist die Adresse der WAN Verbindung, über die das Paket einen Router verlässt oder erreicht.

Anmerkung: Die globale IP Adresse muss nicht zwangsläufig eine Adresse aus dem öffentlichen Adressraum sein, da WAN Verbindungen auch mit Adressen aus dem privaten Adressraum realisiert werden können und trotzdem eine Übersetzung stattfinden muss.

Um die Übersetzung durchzuführen, wird das Network Address Translation Verfahren, kurz NAT, angewandt. Ursprünglich ein Verfahren zur Übersetzung von genau einer lokalen zu einer globalen IP Adresse, wurde es durch das auf Ports basierende NAT ersetzt. Dieses Verfahren erlaubt es mehrere lokale IP Adressen mit einer globalen IP Adresse zu verwenden. Bei NAT muss allerdings auch noch zwischen Source NAT (SNAT) und Destination NAT (DNAT; Port Forwarding) unterschieden werden.

 

Beides soll im Folgenden mit dem Beispiel einer HTTP Anfrage erläutert werden. Dabei wird auf DNS verzichtet, um den Vorgang nicht zu kompliziert zu machen. Des Weiteren werden die Begriffe intern lokal/global und extern lokal/global verwendet. Sie dienen zur Funktionsbeschreibung und müssen immer aus der Sicht des Senders betrachtet werden, der die Verbindung initiiert:

 

Definition von lokalen und globalen Adressen


Ein Benutzer möchte auf seinem PC eine Website aufrufen, die auf dem Server gehostet wird. Dazu wird im Webbrowser die externe globale Adresse http://88.88.88.1:80 aufgerufen. Die Anfrage wird mit der intern lokalen Adresse 192.168.0.50, dem Zielport 80 und dem Quellport 55555, über das Ethernet Protokoll an das Gateway gesendet. Alle Schicht 3 Informationen (externe globale Adresse; Ports) bleiben somit erhalten.

Der Router analysiert nun die Schicht 3 Informationen. Zum einen ermittelt er den günstigsten Pfad zum Ziel (extern globale Adresse), zum anderen führt er die Übersetzung (SNAT) durch. Dabei ersetzt er die Quelladresse (interne lokale Adresse) mit seiner internen globalen Adresse. Der Zielport bleibt erhalten, der Quellport 55555 wird wenn möglich auch übernommen. Falls dieser schon belegt ist, wird einfach der nächst höhere gewählt. In jedem Fall behandelt SNAT ausschließlich die Quellparameter.

Die Zuordnung speichert der Router in einer Zuordnungstabelle und leitet die Anfrage in die Netzwolke weiter:

 

Source Network Address Translation

 

Die Zuordnung wird allerdings nur für einen gewissen Zeitraum gespeichert und bei anhaltender Inaktivität wieder entfernt. Dies unterbindet zum einen ein Überlaufen der Zurodnungstabelle und zum anderen bietet es eine gewisse Sicherheit, da bei anhaltender Zuordnung ein ungewollter Zugriff von Dritten auf die intern lokale Adresse möglich wäre.

 

Hat die Anfrage nun ihren Weg durch die Netzwolke genommen, erreicht sie irgendwann die Schnittstelle mit der extern globalen Adresse 88.88.88.1. Ihr vermeintliches Ziel. Da aber nicht der Router, sondern der Server im Local Area Network dahinter das wirkliche Ziel ist, muss auch hier wieder eine Übersetzung erfolgen. In diesem Fall aber DNAT, auch Prot Forwarding genannt.

Der Router nutzt dazu eine vom Administrator konfigurierte Zuordnungstabelle, in der dauerhaft festgelegt ist, an welche Adresse ein Paket weitergeleitet werden muss, wenn es an einen bestimmten Port gerichtet ist. Dazu analysiert auch dieser Router die Schicht 3 Informationen und erkennt den Zielport 80. Daraufhin ersetzt er die aktuelle Zieladresse 88.88.88.1 mit der extern lokalen Adresse 192.168.1.250. Der Zielport bleibt unberührt, wenn der Webserver Anfragen auf dem gleichen Port erwartet. In jedem Fall behandelt DNAT ausschließlich die Zielparameter.

 

Destination Network Address Translation

 

Innerhalb des Local Area Networks wird die Anfrage nun wieder mit dem Ethernet Protokoll an den Webserver gesendet. Damit hat die Anfrage den Webserver erreicht und kann behandelt werden. Nach kurzer Zeit antwortet der Webserver, indem er die Antwort an sein Gateway sendet. Das Ziel für die Antwort ist die intern globale Adresse 66.66.66.1 mit dem Zielport 55555. Der Router wiederum ersetzt nun die extern lokale Adresse 192.168.1.250 mit der extern globalen Adresse 88.88.88.1. Der Zielport bleibt in jedem Fall 55555, da die Antwort auf diesem Port erwartet wird.

Nach der Reise durch die Netzwolke erreicht die Antwort dann den Router auf Seiten des PCs. Da er eine Antwort von der Quelladresse 88.88.88.1 mit dem Zielport 55555 erwartet (Zuordnungstabelle SNAT), kann er diese umgehend an den PC weiterleiten, womit der gesamte Vorgang abgeschlossen ist.

 

Ein genaueres Augenmerk soll nun auf die Netzwolke des obigen Beispiels gelegt werden. Sie ist im Wesentlichen nichts weiteres, als ein großer Verbund aus unzähligen Routern. Dort wird ein Paket anhand verschiedener Kriterien von einem Router zum anderen Router weitergeleitet, bis es das Zielnetz erreicht. Dieser Vorgang wird als Routing bezeichnet und ist eine weitere Hauptaufgabe des Routers. Für die Durchführung des Routingvorgangs sind vom Router zwei wesentliche Aufgaben durchzuführen:

  • Ermitteln von Zielnetzen und Aufbau einer Routingtabelle
  • Weiterleiten von Daten anhand der Routingtabelle

Folgende Netzwolke soll bei der weiteren Erläuterung des Routingvorgangs behilflich sein:

 

Routerverbund in einer Netzwolke

 

Dies sei eine mögliche Netzwolke eines Netzbetreibers. Sie bietet mehrere Zugriffspunkte (Point of Presence), sowie einen Verbund aus mehreren Routern die mit unterschiedlichen Bandbreiten angebunden sind.

Innerhalb des Netzes eines Netzbetreibers kommt in der Regel immer das selbe Routingprotokoll zum Einsatz. Die Aufgabe eines Routingprotokolls ist dabei nicht die Übertragung von Nutzdaten, sondern der Informationsaustausch über bekannte Zielnetze. Anhand dieser Informationen wird eine Routingtabelle aufgebaut, die im späteren Verlauf noch genauer betrachtet wird.

Wie genau und mit welchen zusätzlichen Informationen dieser Austausch stattfindet, hängt stark vom verwendeten Routingprotokoll ab. Eine Gemeinsamkeit beim Informationsaustausch jedoch die Metrik für ein Zielnetz. Sie ist ein Indikator, die einem Router dabei hilft die beste Route für ein Zielnetz zu wählen. Dabei gilt immer - die kleinere Metrik ist die bessere:

 

Beispielsweise hat Router RA mehrere Pfade zu einem möglichen Zielnetz hinter PoP D zur Auswahl. Käme in der Netzwolke das Routingprotokoll RIPv2 zum Einsatz, bestände die Metrik ausschließlich aus dem Hopcount (wie viele Router muss das Paket bis zum Ziel noch passieren?). Der beste Pfad wäre hier also der Weg über Router RE, da das Zielnetz hinter PoP D mit lediglich zwei Hops erreichbar ist. Respektive hat der Pfad zum Zielnetz über Router RE die Metrik 2.

Anders würde es aussehen, wenn das Routingprotokoll OSPF verwendet würde. Hier besteht die Metrik vornehmlich aus der Bandbreite. Je höher die Bandbreite, desto kleiner die Metrik. Sei in diesem Beispiel die Metrik für eine 10Gb Verbindung 1, die einer 1Gbit Verbindung 100 und die einer 100Mbit Verbindung 1000. Der Pfad über RE zu einem Zielnetz hinter POP D hätte dann die Metrik 1100 ( RA → RE = 100, RE → PoP D = 1000 ), während der Pfad über die Router RB, RC und RD die Metrik 1003 hätte ( RA → RB = 1, RB → RC = 1, RC → RD = 1, RD → PoP D = 1000 ). Zweifelohne ist 1003 die bessere Metrik, da sie kleiner ist. Folglich ist der beste Pfad hier auch der vermeindlich umständlichere Weg.

 

Neben den Pfaden für die Zielnetze werden also auch die jeweiligen Metriken mit in die Routingtabelle mit aufgenommen. Im optimalen Fall kennt ein Router also alle möglichen Pfade zu einem Zielnetz. Das ist auch deshalb vorteilhaft, da ein Pfad aufgrund von Verbindungsproblemen ausfallen kann, so dass eine alternative Route gewählt werden muss. Dies kann zwar zu Einbusen in der Latenz oder Bandbreite führen, ermöglicht aber weiterhin eine Kommunikation der Router untereinander.

 

Die Routen selbst werden in vier Typen unterteilt:

  • dynamische Route
  • statische Route
  • Standardroute
  • zusammengefasste Route

Für einen großen Routerverbund sind dynamische Routen die wichtigsten. Sie werden über Routingsprotokolle ermittelt, indem die Router in regelmäßigen Abständen Informationen über den Status von Verbindungen und Informationen zu anderen Netzen untereinander austauschen. Daher kann ein Routingprotokoll auch relativ schnell auf den Ausfall oder die übermäßige Belastung einer Verbindung reagieren und einen alternativen Pfad wählen.

Wie schnell eine alternative Route gewählt werden kann, soll folgender Test verdeutlichen. Dabei wird eine Routenverfolgung zu google.de durchgeführt und die Prozedur nach fünf Sekunden wiederholt:

 

Erste Routenverfolgung zu google.de...

 

output
 1     3 ms    <1 ms    <1 ms  192.168.1.1
2    49 ms    50 ms    49 ms  217.0.116.236
3    51 ms    51 ms    51 ms  217.237.156.34
4   101 ms    55 ms    55 ms  194.25.6.18
5    74 ms    72 ms    75 ms  72.14.198.189
6    54 ms    55 ms    52 ms  209.85.255.170
7    62 ms    64 ms    62 ms  209.85.250.140
8    82 ms    81 ms    82 ms  209.85.251.188
9    84 ms    82 ms    81 ms  72.14.232.241
10    83 ms    88 ms    89 ms  216.239.49.114
11    82 ms    80 ms    81 ms  gv-in-f104.1e100.net [216.239.59.104]

 

und eine erneute Routenverfolgung zu google.de, 5 Sekunden später...

 

output
 1    <1 ms    <1 ms    <1 ms  192.168.1.1
2    49 ms    50 ms    49 ms  217.0.116.236
3    51 ms    51 ms    51 ms  217.237.156.34
4    55 ms    54 ms    52 ms  194.25.6.18
5    74 ms    75 ms    76 ms  72.14.198.189
6    61 ms    52 ms    52 ms  209.85.255.170
7    87 ms   117 ms    89 ms  209.85.250.140
8    82 ms    82 ms    88 ms  209.85.251.188 <-- vgl. mit erster
9    81 ms    90 ms    81 ms  66.249.95.164 <-- Routenverfolgung
10    93 ms    89 ms    90 ms  216.239.49.114
11    81 ms    81 ms    81 ms  gv-in-f104.1e100.net [216.239.59.104]

 

Neben den geringfügigen Unterschieden in der Latenzzeit (normal), gibt es auch Unterschiede im Pfadverlauf. Während sich die Routen bis einschließlich 7 gleichen, nehmen sie bei 8 und 9 einen anderen Verlauf, um dann letztendlich doch wieder am selben Ziel anzukommen.

Dafür gibt es mehrere mögliche Ursachen. Am wahrscheinlichsten ist jedoch der, dass zu dem Zeitpunkt der Pfad über 8 und 9 zu sehr ausgelastet war und daher nicht mehr den kostengünstigste Pfad darstellte.

 

Die Einträge in den Routingtabellen lassen sich auch händisch vornehmen. Soll für ein Ziel immer der selbe Pfad genutzt werden, dann ist dies durch eine statische Route realisierbar. Dieser Typ ist dann sinnvoll, wenn gewährleistet werden muss, dass für ein bestimmtes Ziel immer der gleiche Pfad genommen werden soll. Auch wenn es mögliche Alternativrouten gibt.

Dies könnte der Fall sein, wenn eine Verbindung als besonders sicher gilt und deshalb nur über sie sicherheitsrelevante Informationen gesendet werden sollen. Auch eignet sich dieser Typ zur Fehlertests. Kommt es mit einer Verbindung zu wiederkehrenden Problemen, kann damit der Pfad über diese Verbindung forciert werden, um der Ursache bei anhaltender Belastung auf den Grund zu kommen.

Auf jeden Fall sollte dieser Typ nur bei berechtigtem Grund angewendet werden, da der Nachteil dynamisch auf Alternativrouten zurückzugreifen, ein großes Defizit im Bezug auf die Zuverlässigkeit darstellt.

 

Die Standardroute ist im Prinzip auch eine statische Route, die händisch definiert werden muss. Der wesentliche Unterschied liegt jedoch darin, dass eine Standardroute keinen Pfad zu einem bestimmten Ziel definiert, sondern zu allen Zielen, für die keine andere Route (dynamisch oder statisch) bekannt ist. Dieses Verfahren ist vor allem deshalb sinnvoll, da ein Router nicht alle Pfade zu jedem erdenklichen Ziel im Internet kennen kann.

Bei Gateways in Local Area Networks ist die default Route meist die Schnittstelle zum Internet. Zwischen unterschiedlichen Netzen von Netzbetreibern der Pfad zum Border Gateway Router.

 

Schließlich gibt es noch die zusammengefasste Route. Diese stellt eine Mischform aus den bisher vorgestellten Routen dar. Sie ermöglicht, wie die Bezeichnung schon vermuten lässt, mehrere Routen unter einer zusammenzufassen.

Voraussetzungen für eine zusammengefasste Route sind einmal, dass das verwendete Routingprotokoll CIDR/VLSM unterstützt und dass die zusammengefassten Routen gleichartig sind. Gleichartige Routen werden dabei nach einem einfachen Schema definiert - Gleichartig sind alle Routen die zu Netzwerkadressen führen, deren führenden Bits identisch sind. Zur Erklärung soll folgende Grafik behilflich sein:

 

Beispiel einer Routenzusammenfassung

 

Router RA bietet Zugriff auf fünf Netzwerke. Davon sind vier Netzwerke gleichartig, nämlich die 172.16.x.x Netzwerke. Das fünfte Netzwerk mit der Adresse 192.168.0.0/24 liegt in einem völlig anderen Adressbereich und kann somit nicht als gleichartig bezeichnet werden. Im Routingupdate teilt der Router RA dem Router RB mit, dass er Zugriff auf die Netzwerke 172.16.0.0/18 und 192.168.0.0/24 hat. Der Vorteil der Routenzusammenfassung ist sofort ersichtlich - Bei Routingupdates müssen deutlich weniger Informationen übertragen werden. Gleichzeitig reduziert sich der Speicherbedarf der Routingtabelle und Pfade können schneller ermittelt werden.

Die zusammengefasste Route beinhaltet nun alle führenden identischen Bits der 172.16.x.x Netzwerke, der Rest wird mit Nullen aufgefüllt. Das Netzmasken-Präfix ergibt sich dann aus der Anzahl der führenden identischen Bits:

 

Adresse(dez) Adresse(b) Netzmasken-Suffix
172.16.0.0 1 0
1
0
1
1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 /20
172.16.16.0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 /20
172.16.32.0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 /24
172.16.33.0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 /24
172.16.0.0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 /18

 

Wird, wie in diesem Fall, die optimalste zusammengefasste Route genutzt, spricht man von diesem Netz auch als Supernet. Grundsätzlich gibt es bei der Routenzusammenfassung aber keine Vorschrift die besagt, dass als Resultat immer ein Supernet herauskommen muss. In Einzelfällen kann es auch erwünscht sein, dass eine Route oder mehrere Routen nicht mit in die zusammengefasste Route mit aufgenommen werden sollen. Dann handelt es sich zwar immernoch um eine zusammengefasste Route, aber eben nicht mehr um ein Supernet.

 

Nachdem nun alle Arten von Routen behandelt worden sind, bleibt noch die Frage offen, an welchen Kriterien ein Router überhaupt die Entscheidung trifft, welche Route oder Routen für ein weiterzuleitendes Paket in Frage kommen. Dies wird mit dem Lookup Prozess durchgeführt. Dabei untersucht ein Router die Einträge in der Routingtabelle und sucht nach sogenannten Treffern.

Anmerkung: Im Detail hängt der genaue Ablauf des Prozesses und der Aufbau der Routingtabellen von verschiedenen Faktoren ab (klassenbasiertes oder klassenloses Routingverhalten, Hersteller, Implementierung, etc...). Teilweise ergeben sich dadurch verblüffend unerwartete Resultate. Auf jedes Detail einzugehen würde jedoch den Rahmen dieses Beitrags sprengen. Daher werden nachfolgend nur die Grundprinzipien für das heute dominierende klassenlose Routingverhalten behandelt.

Eine Routingtabelle ist im einfachsten Fall eine Liste mit Zielnetzen, ihren Netzmasken, der Ausgangsschnittstelle (alternativ oder zusätzlich einer IP Adresse; bspw. Routers im LAN) und einer Metrik (hier Kosten):

 

example
Zielnetz         Netzmaske       Schnittstelle   Metrik
0.0.0.0 0.0.0.0 A 1
172.16.100.0 255.255.0.0 C 120
192.168.200.0 255.255.255.0 D 120

 

Erhällt der Router nun beispielsweise eine Anfrage zu der Zieladresse 192.168.200.1,so führt er logische UND-Verknüpfungen der binären Zieladresse und den binären Netzmasken der Zielnetze aus der Routingtabelle aus. Daraufhin ermittelt der Router gültige Treffer in der Routingtabelle mit Hilfe der Longest Match Regel:

  • Es müssen mindestens alle MSBs vom Netzwerkteil des Zielnetzes mit den MSBs der UND-Verknüpfung übereinstimmen!
  • Der bessere Treffer ist der, wo die höhere Anforderung ( gößerer Netzwerkteil) besteht!

Anmerkung: Spricht man von MSBs (Most Significant Bits), meint man damit lediglich die Zählrichtung von links nach rechts. Des Weiteren muss die Übereinstimmung der MSBs fortlaufend sein. Der erste Unterschied beendet die Zählung beim vorherigen MSB.

 

Zielnetz 0.0.0.0 | Netzmaske: 0.0.0.0 | Netzwerkteil: 0 Bits → Anforderung: 0 gleiche MSBs

Zieladresse(b) 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1
Netzmaske(b) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
UND(b) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Zielnetz(b) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ergebnis: Anforderung erfüllt | 0 MSBs von 0 notwendigen → gültiger Treffer!

 

Zielnetz 172.16.100.0 | Netzmaske: 255.255.0.0 | Netzwerkteil: 16 Bits → Mindestanforderung: 16 gleiche MSBs

Zieladresse(b) 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1
Netzmaske(b) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
UND(b) 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Zielnetz(b) 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0

Ergebnis: Anforderung nicht erfüllt | nur 1 MSB von 16 notwendigen → kein Treffer!

 

Zielnetz 192.168.100.0 | Netzmaske: 255.255.0.0 | Netzwerkteil: 24 Bits → Mindestanforderung: 24 gleiche MSBs

Zieladresse(b) 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1
Netzmaske(b) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0
UND(b) 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
Zielnetz(b) 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0

Ergebnis: Mindestanforderung erfüllt | 16 MSBs von 16 notwendigen → gültiger Treffer!

 

Somit hat der Router über den Lookup Prozess zwei gültige Zielnetze für die Zieladresse 192.168.100.1 ermittelt. Das Netz 0.0.0.0/0 und das Zielnetz 192.168.100.0/24. Da letzteres aber die höhere Anforderung hat, nämlich 24 MSBs im Netzwerkteil, wird dieses Netz als bester Treffer gewertet und das Paket verlässt den Router über die Schnittstelle C.

Sollten zwei gültige Treffer die gleichen Anforderung haben, entscheidet die bessere Metrik über das beste Netz. Sollten schließlich sogar die Metriken gleich sein, kann der Router das Zielnetz selbst wählen. Wie genau der Router dann die Weiterleitung behandelt, hängt von der Routersoftware und dem Routingprotokoll ab. Eingesetzt wird der letzte Fall beispielweise beim Lastenausgleich.

 

Schließlich beherrscht jeder Router noch die Möglichkeit Pakete zu filtern. Er kann also als Firewall arbeiten. Das Thema Firewall wird aber in einem eigenen Beitrag behandelt. Daher sei hier nur der Hinweis vermerkt.

 

Zuletzt aktualisiert am Montag, den 10. Mai 2010 um 12:19 Uhr