 
                                Ü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