Übungen zu „Rechnerkommunikation“ Wintersemester 2010/2011 Übung 6 Mykola Protsenko, Jürgen Eckert PD. Dr.-Ing. Falko Dressler Friedrich-Alexander d h l d Universität Erlangen-Nürnberg l b Informatik 7 (Rechnernetze und Kommunikationssysteme) Rechnerkommunikation, Übung 6 1 Routing Graphen Link-State-Routing Link State Routing Distanzvektor-Routing Begriff: Routing "Verfahren, mit denen Router entscheiden, über welchen Pfad Pakete gesendet werden sollen" sollen Rechnerkommunikation, Übung 6 2 Routing Intradomain: innerhalb einer Routing-Domäne ((= unter einer administrativen Instanz) Hier können Verfahren verwendet werden, die nicht für sehr große Netze skalieren. Zwei Z i Varianten V i t - Link-State: jeder Router besitzt vollständige Information über die gesamte Routing-Domäne, jeder Router berechnet kürzeste Pfade von ihm zu allen anderen Routern z.B. mit dem Dijkstra-Verfahren, Beispiel: OSPF, Forward-Search-Algorithmus - Distanzvektor: jeder Router kennt nur Kosten zu direkten Nachbarn und die von ihm erreichbaren Ziele, die kürzesten Pfade werden verteilt mit dem Bellman-Ford-Verfahren berechnet, Beispiel: RIP Interdomain: zwischen Routing-Domänen Routing Domänen - ausgetauschte Routing-Informationen enthalten ganzen Pfade - Auswahl durch Regeln - Beispiel: BGP Rechnerkommunikation, Übung 6 3 Routing: Graphen Graphen sind eine übliche Abstraktion für Netze Anwendung von Suchverfahren aus Graphentheorie einige Grundbegriffe: Graph G = (V (V,E) E) Knoten V (vertices) Kanten E V V (edges), eine i Kante K t ist i t ein i Paar P ( (v,w) ) E, E v und d w heißen h iß Nachbarn N hb ein Graph ist ungerichtet wenn alle Kanten symmetrisch sind: ((v,w)) E ((w,v)) E Wir betrachten im Folgenden nur ungerichtete Graphen. Kosten sind eine Funktion c: E K auf eine geeignete Menge K, verkürzte Schreibweise c(v,w) c(v w) Rechnerkommunikation, Übung 6 4 Routing: Graphen Beispiel für ungerichteten Graphen: 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 V = {A, {A B, B C C, D, D E, E F} E = {(A,B), (A,C), (A,D), (B,A), (B,C), (B,D), (C,A), (C,B), (C,D), (C,E), (C,F), (D,A), (D,B), (D,C), (D,E), (E,C), (E,D), (E,F), (F,C), (F,E)} c(A,B) = c(B,A) = 2, c(A,C) = c(C,A) = 5, ... Rechnerkommunikation, Übung 6 5 Routing: Graphen einige weitere Begriffe ein Pfad ist eine Sequenz (v1,vv2,..., vn), ) so dass alle Paare (v1,v2), (v2,v3),..., (vn-1,vn) E die Kosten eines Pfads betragen c(v1,v2)+c(v2,v3)+..+c(vn-1,vn) ein Pfad zwischen zwei Knoten v1 und vn heißt kürzester Pfad, wenn es zwischen diesen Knoten keinen Pfad mit geringeren Kosten gibt ((es kann mehrere kürzeste Pfade zwischen zwei Knoten geben), g ), seine Kosten sind D(v1,vn ) ein Zyklus ist ein Pfad mit Anfangsknoten = Endknoten ein Graph ist zusammenhängend, zusammenhängend wenn es einen Pfad zwischen jedem Knotenpaar gibt Rechnerkommunikation, Übung 6 6 Routing: Graphen und noch ein paar ... ein Baum ist ein zusammenhängender Graph, Graph der keine Zyklen enthält ein aufspannender Baum eines Graphen G = (V,E) ist ein Baum B = (V,E´) mit E´ E ein i minimaler i i l aufspannender f d Baum B eines i Graphen G h G fü für einen i Knoten K t v ist ein aufspannender Baum von G, der für jedes Knotenpaar mit v als Startknoten einen kürzesten Pfad aus G enthält Beispiel: minimaler aufspannender Baum für A: 2 B C A 1 1 Rechnerkommunikation, Übung 6 D 1 F E 2 7 Routing: Graphen Eigenschaft der kürzesten Pfade wenn w ein Teil des kürzesten Pfades von u nach v ist, ist dann setzt sich der kürzeste Pfad von u nach v aus den kürzesten Pfaden von u nach w und w nach v zusammen u w v führt zu Rekursionsschema: D(u,v) = minw{D(u,w) + D(w,v)} dies wird von den Verfahren zur Suche kürzester Pfade ausgenutzt Rechnerkommunikation, Übung 6 8 Routing: Link-State-Routing Link-State-Routing alle Knoten besitzen vollständige Kenntnis der Netztopologie dies wird durch Fluten erreicht jeder Knoten berechnet die kürzesten Pfade zu allen anderen Knoten hierfür wird das Dijkstra-Verfahren verwendet bei Änderungen in der Netztopologie (kann z.B. die Sicherungsschicht erkennen), erfolgt erneutes Fluten und Neuberechnung der kürzesten Pfade Rechnerkommunikation, Übung 6 9 Routing: Link-State-Routing Fluten Link-State-Advertisements Link State Advertisements (LSAs) mit - Kennung des Knotens, der LSA erzeugt - Kosten zu Nachbarn und dessen Kennung - Sequenznummer - Lebensdauer jjeder Knoten erzeugt g LSAs mit den ihm bekannten Informationen über die Verbindungen zu den Nachbarn und sendet sie an alle Nachbarn neue von Nachbarn erhaltene LSAs werden an alle Nachbarn weitergeleitet, aber nicht an den Nachbarn, von dem das LSA kam zur Erzielung von Zuverlässigkeit auch Bestätigungen und Sendewiederholungen zwischen Nachbarn sowie Sequenznummern und Lebensdauer Rechnerkommunikation, Übung 6 10 Routing: Link-State-Routing Bsp. für Fluten: Initial sind jedem Knoten die Kosten zu den Nachbarn bekannt, jeder schickt diese zu seinen Nachbarn: A,1,B A,2,C A 1 2 C C,2,A C,4,D Rechnerkommunikation, Übung 6 B B,1,A B,3,D 3 4 D 5 D,3,B , , D,4,C D,5,E E E,5,D , , 11 Routing: Link-State-Routing Bsp. für Fluten: nach Empfang werden die Tabellen jedes Knoten aktualisiert und danach die neuen Informationen weitergereicht: A,1,B A,2,C B,3,D C,4,D B3D B,3,D D,4,C D,5,E C,4,D A B 1 2 B,1,A A,2,C B3D B,3,D D,4,C D,5,E A2C A,2,C 3 C,2,A D,3,B D 3B D,5,E A,1,B C,2,A D,3,B C,4,D D5E D,5,E C A,1,B Rechnerkommunikation, Übung 6 4 D B,1,A E 5 B,1,A , , C,2,A D,3,B D,4,C D5E D,5,E B,1,A C,2,A D,3,B , , D,4,C E,5,D 12 Routing: Link-State-Routing Bsp. für Fluten: nach Empfang werden die Tabellen jedes Knoten nochmals aktualisiert und enthalten daraufhin die Information über den gesamten Graphen: A,1,B A,2,C B,3,D C,4,D D,5,E A 1 2 C A,1,B C,2,A D,3,B C,4,D D5E D,5,E Rechnerkommunikation, Übung 6 B B,1,A A,2,C B3D B,3,D D,4,C D,5,E 3 4 D 5 B,1,A , , C,2,A D,3,B D,4,C D5E D,5,E E B,1,A , , C,2,A D,3,B D,4,C E5D E,5,D 13 Routing: Link-State-Routing Idee des Dijkstra-Verfahrens der minimale aufspannende Baum wird iterativ aufgebaut eine Knotenmenge V´ enthält die Knoten, für die die kürzesten Pfade bereits bekannt sind V V´ wird i d mit it dem d St tk t u initialisiert Startknoten i iti li i t ein neuer Knoten v kann V´ zugefügt werden, indem der kürzeste Pfad zu einem Nachbarn zu den Knoten aus V´ mit der Eigenschaft der kü kürzesten t Pf Pfade d b berechnet h t wird: i d D(u,v) D( ) = min i w{D(u,w) {D( ) + D(w,v)} D( )} hierbei wird für den 2. Teil statt eines Pfads eine Kante verwendet: D(u,v) = minw in V'{D(u,w) + c(w,v)} der Algorithmus endet, wenn V = V´ Rechnerkommunikation, Übung 6 14 Routing: Link-State-Routing Datenstrukturen für das Dijkstra-Verfahren Knotenmenge V, V Quellknoten u V´ ist die Menge von Knoten, zu denen kürzeste Pfade von u aus bereits bekannt sind Kosten K t c(w,v) ( ) zwischen i h zweii Knoten K t w und dv - positive Verbindungskosten, wenn w und v Nachbarn sind - 0 für w = v - sonst Distanz D(v) gibt Kosten des aktuell bekannten kürzesten Pfads von u nach v p(v) gibt Vorgänger von v auf dem aktuell bekannten kürzesten Pfad von u nach v Rechnerkommunikation, Übung 6 15 Routing: Link-State-Routing Dijkstra-Verfahren Initialisierung V´= {u}; für alle vV: D(v)=c(u,v); Wiederhole bis V´= V finde wV\V´, so dass vV\V´: D(w) D(v); //* w ist ein Nachbar von Knoten aus V´ mit minimalen Kosten *// V´= V´ {w}; für alle vV\V´ falls D(v) > D(w)+c(w D(w)+c(w,v), v) dann D(v) = D(w)+c(w,v) p(v) = w /* wenn ein Knoten über w günstiger zu erreichen ist, werden seine Kosten und sein Vorgänger angepasst */ Rechnerkommunikation, Übung 6 16 Beispiel für den Ablauf des Dijkstra-Verfahrens: jeweils D(), p() Schritt V´ B C D E F 0 A 2,A 5,A 1,A ,- ,- 1 A,D 2,A 4,D 2,D ,- 2 ADB A,D,B 4D 4,D 2D 2,D ,- 3 A,D,B,E 3,E 4,E 4 A,D,B,E,C 4,E 5 A,D,B,E,C,F (Einträge mit können sich nicht mehr verändern verändern, da Knoten in V V´)) 5 2 A B 2 1 D 3 C 3 1 5 F 1 E 2 2 B C A resultierender minimaler aufspannender Baum 1 1 D 1 F E 2 17 Routing: Link-State-Routing Ermittlung der Routing-Tabelle Routing-Tabelle Routing Tabelle enthält für jedes Ziel v den nächsten Hop auf dem kürzesten Pfad wie kann er aus dem Vektor p(v) mit Vorgänger-Knoten ermittelt werden? dies liefert die rekursive Funktion nexthop(v) = (p(v)==u) ? v : nexthop(p(v)) Rechnerkommunikation, Übung 6 18 Routing: Link-State-Routing praktische Umsetzung des Dijkstra-Verfahrens in der Praxis sammelt jeder Knoten die LSAs und berechnet daraus direkt die Routing-Tabelle hierfür wird die als Forward-Search-Algorithmus bekannte Variante benutzt es werden Einträge der Form (Ziel, Kosten, nächster Hop) in 2 Listen verwaltet - bestätigteListe b täti t Li t (entspricht ( t i ht V´) - vorläufigeListe (entspricht den Nachbarn von Knoten aus V´) nexthop(w) p( ) ist der nächste Hop, p, um einen Knoten w vom Startknoten u aus zu erreichen die Werte für c(w,v) werden aus den LSAs gelesen, die Werte für D(w) und nexthop(w) p( ) werden aus den Einträgen g in den 2 Listen gelesen g Rechnerkommunikation, Übung 6 19 Routing: Link-State-Routing Forward-Search-Algorithmus IInitialisierung iti li i bestätigteListe = <(u,0,-)>, vorläufigeListe = <>; Wiederhole w = letzter in bestätigteListe eingetragener Knoten für alle Nachbarn v von w falls v weder in bestätigteListe noch in vorläufigeListe füge (v, D(w)+c(w,v), nexthop(w)) vorläufigeListe zu falls v in vorläufigeListe und D(w)+c(w,v) < D(v) ersetze in vorläufigeListe den Eintrag für v durch (v,D(w)+c(w,v), nexthop(w)) verschiebe Eintrag mit geringsten Kosten von vorläufigeListe in bestätigte Liste bis vorläufigeListe leer Rechnerkommunikation, Übung 6 20 Routing: Link-State-Routing Schritt bestätigteListe vorläufigeListe 0 ( , ,) (A,0,-) 1 (A,0,-) (B,2,B), (C,5,C), (D,1,D) 2 (A,0,-), (D,1,D) (B,2,B), (C,4,D), (E,2,D) 3 (A,0,-), (D,1,D), (B,2,B) (C,4,D), (E,2,D) 4 (A,0,-), (D,1,D), (B,2,B), (E,2,D) (C,3,D), (F,4,D) 5 (A,0,-), (A 0 -) (D,1,D), (D 1 D) (B,2,B), (B 2 B) (E,2,D), (C,3,D) 6 (A,0,-), (D,1,D), (B,2,B), (E 2 D) (C (E,2,D), (C,3,D), 3 D) (F,4,D) (F 4 D) 5 2 A B 2 1 D 3 C 3 1 5 Rechnerkommunikation, Übung 6 2 F 1 E (F 4 D) (F,4,D) 2 B C A 1 1 D 1 F E 2 21