Rechnernetze Übung 10 Frank Weinhold∙ Professur VSR ∙ Fakultät für Informatik ∙ TU Chemnitz ∙ Juni 2011 „Das Weiterleiten (Routing) erfüllt die wichtige Aufgabe, einzelne Teilstrecken des Kommunikationsnetzes so zu verbinden, dass eine Ende-zu-Ende-Kommunikation zwischen den angeschlossenen Teilnehmern möglich wird.“ Kategorisierung der Verfahren ◦ Wo ist der Routingalgorithmus lokalisiert? ◦ Wie dynamisch ist das Routingverfahren? Zentral (in einem Netzkontrollzentrum) Dezentral (verteilt auf die Vermittlungsknoten) ◦ Zentrale hat Wissen über das komplette Netz ◦ auch als globales Routing bezeichnet ◦ Berechnung optimaler Wege möglich ◦ Knoten kennen Initial nur ihre Nachbarn ◦ Distanz-Vektor-Algorithmen kein Knoten hat Wissen über das komplette Netz Knoten kennt nie die komplette Route von einer Quelle zu einer Senke ◦ Link-State-Algorithmen Knoten hat Wissen über die gesamte Netztopologie alle Knoten haben (im stabilen Zustand) die gleiche Sicht auf das Netz verteilt Broadcast Routing statisches Routing Hot Potato Distance Vector Routing / Link State Routing Delta Routing zentralisiertes Routing zentral statisch dynamisch vorstellbar als Wegweiser man kennt nicht den gesamten Weg zum Ziel, aber immer die nächste Richtung und Entfernung Berlin 170km München 330km ursprünglicher Routing-Algorithmus, der im Arpanet (als RIP) eingesetzt wurde Distanz (Hops) ist Routing-Metrik jedes System kennt die Distanz zu allen anderen Systemen im Netz aktuelle Distanzen werden zwischen Nachbarn ausgetauscht (Advertisement) Beispiel: Routing Information Protocol (RIP) u A v B Ziel w z C D N u 1 v 2 w 2 x 3 y 3 z 2 Von A zu Subnetzen y N A (N/-/1) B (N/-/-) x Hops C (N/-/-) A (N/-/1) C (N/A/2) B(N/A/2) D (N/-/-) F (N/-/-) D (N/-/-) F (N/-/-) Router (Ziel/nächster Router/ Hops) N N A (N/-/1) B (N/A/2) C (N/A/2) A (N/-/1) C (N/A/2) B(N/A/2) D (N/C/3) F (N/B/3) D (N/C/3) F (N/B/3) Router (Ziel/nächster Router/ Hops) berechnet Routing verteilt periodischer Austausch von Distanz-Vektoren Bellman Ford Algorithmus ◦ jeder Knoten kennt Initial nur Kosten zu seinen direkten Nachbarn ◦ jeder Knoten pflegt Tabelle mit möglichen Zielen, den Gesamtkosten zu diesem Ziel und den Namen der ersten Station ◦ jeder Knoten schickt sein Wissen periodisch an alle Nachbarn bei IP alle 30 Sekunden ◦ ein Knoten, der Informationen erhält, aktualisiert seine Tabelle ◦ Aktualisieren bedeutet ist noch keine Information über Ziel bekannt, dann Information speichern ist Information bekannt, dann prüfen, ob neue Information eine günstigere Strecke ermöglicht Probleme: ◦ langsame Konvergenz (einheitliche Sicht auf Netz) ◦ bei gewichteten Links können Routing-Schleifen entstehen ◦ sehr langsame Propagierung von Kostensteigerungen oder Ausfällen bei einer maximalen Ausdehnung des Netzes von 15 Hops beträgt Dauer bereits sieben Minuten „gute Nachrichten“ verbreiten sich schnell, „schlechte“ nur langsam ◦ Count-to-Infinity-Problem Infinität bezeichnet Unerreichbarkeit eines Ziels (= Hop-Count 16) Hop-Count bezeichnet Anzahl Router, die entlang eines Pfades bis zum Zielnetz durchlaufen werden müssen RIP spezifiziert, dass alle Knoten zyklisch an ihre Nachbarn senden, welche Netzwerke sie mit wie viel Hops erreichen können. In jedem Zyklus aktualisieren die Knoten ihre Tabelle anhand der Information die sie bekommen. A B A-1 C A-2 Stand nach 1. Iteration 1.Iteration Konten B sendet an C: Ich kann A mit 1 Hop erreichen. Knoten C empfängt Nachricht von B und aktualisiert seine Tabelle. A B A-3 C A-2 A B A-3 C A-4 A B A-5 C A-4 A B A-5 2.Iteration (Verbindung von B zu A unterbrochen) Konten B kann A nicht mehr erreichen. Knoten C sendet an B: Ich kann A mit 2 Hops erreichen. Knoten B aktualisiert seine Tabelle. 3.Iteration Konten B sendet: ich kann A mit 3 Hops erreichen. Knoten C empfängt Nachricht von B und passt seine Tabelle an. 4.Iteration (Verbindung von B zu A unterbrochen) Konten B kann A nicht mehr erreichen. Knoten C sendet an B: Ich kann A mit 4 Hops erreichen. Knoten B aktualisiert seine Tabelle. 5.Iteration Konten B sendet: ich kann A mit 5 Hops erreichen. Knoten C empfängt Nachricht von B und passt seine Tabelle an. C A-6 Dies schaukelt sich solange hoch, bis 16Hops erreicht sind. Dann erkennen beide, dass A nicht mehr erreichbar ist. Da beide Router auf Basis der empfangen Information ihre Tabelle jedesmal aktualisieren, erhöht sich der Hop-Count ständig. vorstellbar als Landkarte man hat eine Übersicht der gesamten Topologie und kann sich den besten Weg zum Ziel selbst berechnen Berlin München benutzt Dijkstra Algorithmus zur Bestimmung kürzester Wege jeder Knoten kennt alle Verbindungen im Netz Vorteile ◦ konvergiert schneller als RIP (alle Router haben einheitliche Sicht auf das Netzwerk) ◦ keine Routing Loops ◦ mehrere Metriken parallel ◦ Lastverteilung auf mehrere Pfade Probleme ◦ hoher Speicherverbrauch Mehrstufiger Ablauf ◦ Erkennung der Nachbarn (Hello-Pakete) ◦ erzeuge Link-State-Paket Absender, Seq.-Nr., Alter, Liste mit allen direkten Nachbarn + jeweiligen Kosten ◦ verteile Link-State-Paket an alle anderen Router im Netz (nicht nur Nachbarn) prinzipiell Fluten mit Sequenznummern zusätzlich Vernichten von Duplikaten, Zerstören der Information nach gewissem Alter etc. alle Router besitzen identische Kenntnis der gesamten Netztopologie ◦ jeder Router berechnet den kürzesten Pfad zu jedem anderen Router (z.B. mit Dijkstra-Algorithmus) 5 2 B 2 A 1 C 3 3 D 5 F 1 E 1 2 [A] B C D E F 0 ∞ ∞ ∞ ∞ ∞ 1. Initialer Zustand: Abstand zu allen unendlich 2. Abstand zu direkt erreichbaren Knoten bestimmen, die noch nicht betrachtet wurden. Kosten berechnen (vorhergehende Kosten + Kosten zu diesem Knoten) Kosten, Quellknoten) Kosten nur in Tabelle eintragen wenn günstiger 3. Günstigsten Knoten auswählen (alle schon besuchten ignorieren) und 2. 5 2 B 2 A 1 C 3 3 D 5 F 1 E 1 2 [A] B C D E F 0 ∞ ∞ ∞ ∞ ∞ 2,A 5,A 1,A Welcher Knoten hat kleinstes Gewicht und wurde noch nicht betrachtet? D 5 2 1 verwerfen C 3 2 A 3>2 B 3 D 5 F 1 E 1 2 [A] B C [D] E F 0 ∞ ∞ ∞ ∞ ∞ 2,A 5,A 3,D 4,D 1,A 2,D Welcher Knoten hat kleinstes Gewicht und wurde noch nicht betrachtet? E oder B 5 2 B 2 A 1 C 3 3 D 5 F 1 E 1 2 [A] B C [D] [E] F 0 ∞ ∞ ∞ ∞ ∞ 2,D 4,E 2,A 5,A 1,A 4,D 3,E Welcher Knoten hat kleinstes Gewicht und wurde noch nicht betrachtet? B 5 2 1 verwerfen C 3 2 A 5>3 B 3 D 5 F 1 E 1 2 [A] [B] C [D] [E] F 0 ∞ ∞ ∞ ∞ ∞ 2,D 4,E 2,A 5,A 1,A 4,D 3,E 5,B Welcher Knoten hat kleinstes Gewicht und wurde noch nicht betrachtet? C 5 2 B 2 A 1 C 3 3 D 5 F 1 E 1 2 [A] [B] [C] [D] [E] F 0 ∞ ∞ ∞ ∞ ∞ 2,D 4,E 2,A 5,A 4,D 1,A 8,C 3,E Welcher Knoten hat kleinstes Gewicht und wurde noch nicht betrachtet? F 5 2 B 2 A 1 C 3 3 D F 1 E 1 Alle Nachbarn von F wurden schon besucht 5 2 [A] [B] [C] [D] [E] [F] 0 ∞ ∞ ∞ ∞ ∞ 2,D 4,E 2,A 5,A 1,A 4,D 3,E 5 2 B 2 A 1 C 3 3 F 1 1 D 5 E 2 [A] [B] [C] [D] [E] [F] 0 ∞ ∞ ∞ ∞ ∞ 2,A 5,A 1,A 2,D 4,E 4,D 3,E Bestimmung des kürzestes Pfades: Vom Ziel rückwärts zur Quelle F(4)E(2)D(1)A(0) Was ist die kürzeste Route von A nach G? Was ist die kürzeste Route von B nach D? 2 B A 8 2 F C 3 E 1 4 3 G 1 3 D