Übungsblatt 2 Lösung


Besprechung am 23.11.2000

Aufgabe 1 Distance Vector Routing / RIP

Im Folgenden sehen Sie Ausschnitte aus einer Implementierung des RIP2-Protokolls in Pseudocode. Nehmen Sie an, daß diese Implementierung auf jedem Knoten eines Netzwerks läuft.

a) Vervollständigen Sie die Funktion "Update_Routing_Tabelle" in Pseudocode. Diese Funktion soll die Routing-Tabelle des Knotens aktualisieren und wird aufgerufen, sobald ein Knoten eine Routing-Tabellen-Update-Nachricht empfängt. Als Parameter wird das Tabellen-Update selbst sowie die Leitung, auf der das Update empfangen wurde, übergeben. Die Routing-Tabelle des Knotens ist im Feld r_tab gespeichert. Zur Vereinfachung können Sie annehmen, daß die Entfernung zwischen zwei benachbarten Knoten eine Kosteneinheit beträgt. Von der Funktion soll true zurückgegeben werden, wenn die Routing Tabelle verändert wurde, sonst false.

// Datenstrukturen für die Einträge der Routing Tabelle
// und den Routing Tabellen Updates
Routing_Tabellen_Eintrag {
 Zielknoten    z;
 Leitung    l;
 Kosten    k;
}

Tabellen_Update_Eintrag {
 Zielknoten    z;
 Kosten    k;
}
 

// Routing Tabelle des Knotens - als globale Variable (nicht für realen Einsatz geeignet!)
Feld aus Routing_Tabellen_Eintrag r_tab;

// Funktion: Aktualisiert die Routing Tabelle eines Knotens
boolean Update_Routing_Tabelle      (Feld aus Tabellen_Update_Eintrag r_up, Leitung l) {
....
}

Lösung:

boolean update = false
boolen gefunden = false
Für alle Elemente e_up von r_up führe aus {
 gefunden = false
 Für alle Elemente e_tab von r_tab führe aus {
  Falls (e_tab.z = e_up.z) {
   gefunden = true
   Falls (e_tab.l = l) {// diesen Wert müssen wir auf jeden fall annehmen
    Falls (e_up.k + 1 != e_tab.k) { // update nötig
     Falls (e_up.k = -16 oder e_up.k = 16) { // plus/minus unendlich
      e_tab.k=16
     } sonst {
      e_tab.k = e_up.k + 1
     }
     update = true
    }
   } sonst Falls (e_up.k + 1 < e_tab.k) {
    e_tab.k = e_up.k + 1
    e_tab.l = l
    update = true
   }
  }
 }
 Falls (nicht gefunden) {
  füge neuen Eintrag e_up in r_tab ein
  update = true
 }
}


b) Gegeben sei das folgende Netzwerk mit den zugehörigen Routing-Tabellen. Im
Netzwerk wird das RIP2-Routing-Verfahren verwendet. Die Kosten einer Leitung betragen
eine Kosteneinheit.

Knoten A:                   Knoten B:
Ziel Leitung Konsten        Ziel Leitung Kosten
A    lokal   0              A    ab      1
B    ab      1              B    lokal   0
C    ac      1              C    ab      2
D    ab      2              D    bd      1
E    ab      2              E    be      1
Knoten C:                   Knoten D:
Ziel Leitung Konsten        Ziel Leitung Kosten
A    ac      1              A    bd      2
B    ac      2              B    bd      1
C    lokal   0              C    de      2
D    ce      2              D    lokal   0
E    ce      1              E    de      1
Knoten E:
Ziel Leitung Konsten
A    be      2
B    be      1
C    ce      1
D    de      1
E    lokal   0
Erläutern Sie Schritt für Schritt, wie die Knoten auf den Ausfall der Verbindung ab reagieren.
Geben Sie hierzu für jeden Schritt die Routing-Tabellen-Update-Nachrichten an, die zwischen
den Knoten ausgetauscht werden. Ein Knoten soll hier genau dann eine Routing-Tabellen-
Update-Nachricht schicken , wenn sich Änderungen an seiner Routing-Tabelle ergeben haben.
D.h. periodische Übertragungen kommen während des Ablaufes dieses Beispieles nicht vor.

Benutzen Sie für Ihre Routing-Tabellen-Update-Nachrichten das folgenden Format:
Von Sender nach Empfänger: Ziel1 - Kosten1, Ziel2 - Kosten2, ...
Verwenden Sie +/-u für +/- Unendlich
Beispiel: Von A nach B: A - 0, B - -u, C - 1, D - -u, E - -u

Lösung:

Schritt 1:

Von A nach C: A - 0, B - +u, C - -u, D - +u, E +u

Von B nach D: A - +u, B - 0, C - +u, D - -u, E - 1

Von B nach E: A - +u, B - 0, C - +u, D - 1, E - -u

Schritt 2:

Von C nach A: A - -u, B - +u, C - 0, D - 2, E - 1

Von C nach E: A - 1, B - +u, C - 0, D - -u, E - -u

Von D nach B: A - +u, B - -u, C - 2, D - 0, E - 1

Von D nach E: A - +u, B - 1, C - -u, D - 0, E - -u

Von E nach B: A - +u, B - -u, C - 1, D - 1, E - 0

Von E nach C: A - +u, B - 1, C - -u, D - 1, E - 0

Von E nach D: A - +u, B - 1, C - 1, D - -u, E - 0

Schritt 3:

Von A nach C: A - 0, B - u, C - -u, D - -u, E - -u

Von B nach D: A - +u, B - 0, C - 2, D - -u, E - 1

Von B nach E: A - +u, B - 0, C - -u, D - 1, E - -u

Von C nach A: A - -u, B - 2, C - 0, D - 2, E - 1

Von C nach E: A - 1, B - -u, C - 0, D - -u, E - -u

Von E nach B: A - 2, B - -u, C - 1, D - 1, E - 0

Von E nach C: A - -u, B - 1, C - -u, D - 1, E - 0

Von E nach D: A - 2, B - 1, C - 1, D - -u, E - 0

Schritt 4:

Hier schicken A B D ihre Distannzvektoren, die aber keine
Änderungen in den Routintabellen auslösen.

Schritt 5:
- Ende

c) Bei distanz Vektor Routing Protokollen besteht die Gefahr daß es zu Routing Schleifen
kommen kann, wenn man keine Gegenmaßnahmen ergreift. Erklären Sie anhand des oben angegebenen
Netzes, was passieren muß, damit es zu einer 2er Routing Schleife kommt. Gehen Sie dabei davon
aus, daß ein naives Distanz Vektor Routing Protokoll verwendet wird und nicht RIP.

Lösung:

Zu einer Routing Schleife könnte es kommen, wenn auch die Verbindung ce unterbrochen wird und der Knoten A (z.B. durch einen ablaufenden Timer) direkt nach der Unterbrechung der Verbindung ce eine Routing-Tabellen-Update-Nachricht an Knoten C schickt, noch bevor dieser ein Tabellen-Update (das die Unterbrechung der Verbindung enthält) an Knoten A verschicken kann. Genauso kann es auch sein, daß
die Nachricht von C nach A verloren geht und dann A irgendwann seinen Distanzvektor zu C schickt.

d) Wie wird in RIP1/2 dieses Problem angegangen? Welche Anomalien kann es dennoch geben?

Lösung:

Mit Hilfe von Split Horizon (mit oder ohne poisonous reverse). Mit Hilfe von Triggered updates.

Trozdem kann es noch zu einer 3er Schleife kommen, bei der counting to infinity durchgeführt werden
muß um das Problem zu lösen.
 
 

Aufgabe 2 Link State Routing / OSPF

Gegeben sei wieder das gleiche Netzwerk wie in Aufgabe 1 b). Nun fallen die Links
ab und ce aus. Nehmen Sie an, daß aus nicht näher spezifizieren Gründen das Fluten
der Informationen über die Topoligieänderung zwischen A und C nicht funktioniert. D.h.
A erhält keine Informationen über den Ausfall des Links ce und C keine über den Ausfall
des Links ab.

a) Wie sehen die Datenbanken der Netzwerktopologie in A und in C aus?

Lösung:
 

A                           C
From To  Link Cost Number   From To Link Cost Number
A    B   ab   inf  2        A    B  ab   1    1
B    A   ab   inf  2        B    A  ab   1    1
A    C   ac   1    1        A    C  ac   1    1
C    A   ac   1    1        C    A  ac   1    1
B    D   bd   1    1        B    D  bd   1    1
D    B   bd   1    1        D    B  bd   1    1
B    E   be   1    1        B    E  be   1    1
E    B   be   1    1        E    B  be   1    1
C    E   ce   1    1        C    E  ce   inf  2
E    C   ce   1    1        E    C  ce   inf  2
D    E   de   1    1        D    E  de   1    1
E    D   de   1    1        E    D  de   1    1


b) Verwenden sie den shortest path first Algorithmus um die Routingtabellen für
A und C zu bestimmen!

Lösung:

Für die Bestimmung der Routing Tabelle von A gilt:

E={A}
R={B, C, D, E}
O={A-C-1}
Kürzeste Pfade{}

E={A, C}
R={B, D, E}
O={A-C-E-2}
Kürzeste Pfade{A-C-1}

E={A, C, E}
R={B, D}
O={A-C-E-B-3, A-C-E-D-3}
Kürzeste Pfade{A-C-1, A-C-E-2}

E={A, C, E, B}
R={D}
O={A-C-E-D-3}
Kürzeste Pfade{A-C-1, A-C-E-2, A-C-E-B-3}

E={A, C, E, B, D}
R={}
O={}
Kürzeste Pfade{A-C-1, A-C-E-2, A-C-E-B-3, A-C-E-D-3}
 

Die Bestimmung der Routing Tabelle von C erfolgt analog.
A          C
To  Link   To Link
A   local  ac
B   ac     local
C   ac     ac
D   ac     ac
E   ac     ac


c) Was passiert nun wenn A ein Paket nach E schicken möchte!

Lösung:

Es kreist!

d) Was unternimmt OSPF um dieses Problem zu verhindern?

Lösung:

Das Fluten wird mit Bestätigungen zuverlässig gemacht.
 
 

Aufgabe 3 Exterior Gateway Routing Protocols / BGP

a) Warum verwendet man Exterior Gateway Routing Protocols? Was ist deren Aufgabe?
Warum benötigt man hier eigenständige Protokolle und verwendet nicht OSPF oder RIP?
Welche wichtigen Probleme sind bei Exterior Gateway Routing zu lösen?

Dies ist eine Wissensaufgabe, wie sie auch in der Klausur vorkommen kann - bitte beantworten
Sie die Frage BEVOR Sie in den Unterlagen nachschauen.

Lösung

Man verwendet Exterior Gateway Routing Protocols für das Routing zwischen autonomen Systemen. Diese Protokolle sollen es insbesondere ermöglichen eine große Anzahl von AS miteinander zu verbinden. Außerdem soll es möglich sein das Routing auf (Firmen-) politischer Ebene zu beeinflussen. OSPF und RIP sind hier nicht geeignet, da diese von einer kleinen Anzahl von Routern ausgehen, die von einer einzigen Administration mit einer homogenen Zielvorstellung verwaltet wird. Dies ist für exterior gateway routing aber nicht der Fall.
Insbesondere muessen für exterior gateway routing die folgenden drei Probleme glöst werden:
Routing nach (Firmen-)Politiken
Verhindern der Class-B exhaustion
Verhindern der Routing Table Explosion
 

b) Gegeben sei das folgende Netzwerk von AS:

Bestimmen Sie die das Attribut AS_PATH und Network Reachability Informationen, die von R1 nach R3, von R2 nach R3, von R5 nach R7, von R6 nach R7 und von R8 an R9 nach BGP-4 übermittlen würde, wenn die Verbindung in der genannten Reihenfolge hochfahren. Gehen Sie dabei davon aus, daß in allen Systemen eine maximale Aggregation als Politik für BGP-4 gewählt wurde.

Lösung:

R1 gibt an R3 den Eintrag: sequence(AS1) 24/192.12.2.0 weiter
R2 gibt an R3 den Eintrag: sequence(AS3) 24/192.12.3.0 weiter

in AS2 wird das aggregiert und

R5 gibt an R7 den Eintrag: sequence(AS2) set(AS1, AS3) 22/192.12.0.0 weiter
R6 gibt an R7 den Eintrag: sequence(AS4) set(....) 22/192.12.4.0 weiter

in AS7 wird das aggregiert und

R8 gibt an R9 den Eintrag: sequence(AS7) set(AS1, AS2, AS3, AS4, ...) 16/192.12.0.0 weiter

c) Welche Informationen gehen durch die Aggregation (s. c Teil) verloren?

Lösung:

Es gehen die Informationen darüber verloren, welche Autonomen Systeme von einer
Route tatsächlich durchquert werden. Insbesondere weis Router R9 nur, daß alle Adressen
16/192.12.0.0 über AS7 geroutet werden, ob dann AS2 oder AS4 oder ein anderes AS
weiter durchquert werden ist nicht festzustellen.