Ü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