3.6 Interior Gateway Routing Protocols Routing in einer „Autonomen Einheit“ Distance Vector Routing Routing Information Protocol (RIP) Routing Information Protocol Version 2 (RIP2) Link State Routing Open Shortest Path First (OSPF) Alternative Ansätze IS-IS IGRP / Enhanced IGRP Martin Mauve Alle Protokolle sind verteilt und adaptiv (s. RN) Universität Mannheim 1 Distance Vector Routing Prinzipielles Vorgehen jeder Knoten kennt sich selbst (Distanz = 0), alle anderen Knoten haben eine unendliche Distanz die eigene Routing Tabelle wird in Form von Distanzvektoren auf allen Interfaces ausgegeben periodisch, zufällige Variation der Periode wenn sich die eigene Routing Tabelle geändert hat (als Reaktion auf einen empfangenen Distanzvektor) für jeden empfangenen Distanzvektor wird überprüft ob über den Sender dieses Vektors ein Ziel besser erreicht werden kann, wenn ja: ersetze den bisherigen Eintrag durch einen neuen, bei dem über den Link geroutet wird, über den der Vektor empfangen wurde neue Distanz=Distanz im Vektor + Distanz zum Sender des Vektors Martin Mauve Universität Mannheim 2 Distance Vector Routing - Cold Start Beispiel A 1 3 D Martin Mauve 6 B 2 4 5 C E From A to Link Cost From D to Link Cost A local 0 D local 0 From B to Link Cost From E to Link Cost B local 0 E local 0 From C to Link Cost C local 0 Von A: A=0 auf links 1 und 3 Universität Mannheim 3 Distance Vector Routing - Cold Start Beispiel Martin Mauve From A to Link Cost From D to Link Cost A local 0 D local 0 A 3 1 From B to Link Cost B local 0 From E to Link Cost A 1 1 E local 0 From C to Link Cost C local 0 Von B: A=1, B=0 auf links 1, 4, 2 Von D: A=1, D=0 auf links 3, 6 Universität Mannheim 4 Distance Vector Routing - Cold Start Beispiel Martin Mauve From A to Link Cost From D to Link Cost A local 0 D local 0 B 1 1 A 3 1 D 3 1 From E to Link Cost From B to Link Cost E local 0 B local 0 B 4 1 A 1 1 A 4 2 D 6 1 From C to Link Cost C local 0 B 2 1 A 2 2 Von A: A=0, B=1, D=1 auf links 1, 3 Von C: A=2, B=1, C=0 auf links 2, 5 Von E: A=2, B=1, D=1, E= 0 auf links 4, 5, 6 Universität Mannheim 5 Distance Vector Routing - Cold Start Beispiel From A to Link Cost From C to Link Cost From E to Link Cost A local 0 C local 0 E local 0 B 1 1 B 2 1 B 4 1 D 3 1 A 2 2 A 4 2 E 5 1 D 6 1 D 5 2 C 5 1 From B to Link Cost B local 0 A 1 1 From D to Link Cost D 1 2 D local 0 C 2 1 A 3 1 E 4 1 B 3 2 E 6 1 Von B: A=1, B=0, C=1, D=2, E=1 auf links 1, 4, 2 Von C: A=2, B=1, C=0, D=2, E=1 auf links 2, 5 Von D: A=1, B=2, D=0, E=1 auf links 3, 6 Von E: A=2, B=1, C=1, D=1, E= 0 auf links 4, 5, 6 Martin Mauve Universität Mannheim 6 Distance Vector Routing - Cold Start Beispiel From A to Link Cost From C to Link Cost From E to Link Cost A local 0 C local 0 E local 0 B 1 1 B 2 1 B 4 1 D 3 1 A 2 2 A 4 2 C 1 2 E 5 1 D 6 1 E 1 2 D 5 2 C 5 1 From B to Link Cost From D to Link Cost B local 0 D local 0 A 1 1 A 3 1 D 1 2 B 3 2 C 2 1 E 6 1 E 4 1 C 6 2 Martin Mauve Universität Mannheim 7 Distance Vector Routing - Link Ausfall fällt ein Link aus, dann: werden alle Einträge, die über diesen Link geroutet wurden, auf Entfernung unendlich gesetzt und, da sich die Routing Tabelle geändert hat, der neue Distanzvektor auf alle Links geschickt Martin Mauve erhält man auf einem Link, über den ein Ziel in der eigenen Routingtabelle geroutet wurde, eine Distanz zu diesem Ziel, der größer ist als bisher, dann muß die Routingtabelle entsprechend aktualisiert werden Universität Mannheim 8 Distance Vektor Routing - Link Ausfall Beispiel A XXXX 3 D B 4 6 2 5 E C From B to Link Cost From D to Link Cost B local 0 D local 0 A 1 inf A 3 1 D 1 inf B 3 2 C 2 1 E 6 1 E 4 1 C 6 2 From A to Link Cost From C to Link Cost From E to Link Cost A local 0 C local 0 E local 0 B 1 inf B 2 1 B 4 1 D 3 1 A 2 2 A 4 2 C 1 inf E 5 1 D 6 1 E 1 inf D 5 2 C 5 1 Von A: A=0, B=inf, C=inf, D=1, E=inf auf Link 3 Von B: A=inf, B=0, C=1, D=inf, E=1 auf Links 2, 4 Martin Mauve Universität Mannheim 9 Distance Vektor Routing - Link Ausfall Beispiel From A to Link Cost From B to Link Cost From D to Link Cost A local 0 B local 0 D local 0 B 1 inf A 1 inf A 3 1 D 3 1 D 1 inf B 3 inf C 1 inf C 2 1 E 6 1 E 1 inf E 4 1 C 6 2 From C to Link Cost From E to Link Cost C local 0 E local 0 B 2 1 B 4 1 A 2 inf A 4 inf E 5 1 D 6 1 D 5 2 C 5 1 Von C: A=inf, B=1, C=0, D=2, E=1 auf Link 2, 5 Von D: A=1, B=inf, C=2, D=0, E=1 auf Links 3, 6 Von E: A=inf, B=1, C=1, D=1, E=0 auf Links 4, 5, 6 Martin Mauve Universität Mannheim 10 Distance Vektor Routing - Link Ausfall Beispiel From A to Link Cost From B to Link Cost From D to Link Cost A local 0 B local 0 D local 0 B 1 inf A 1 inf A 3 1 D 3 1 D 4 2 B 6 2 C 3 3 C 2 1 E 6 1 E 3 2 E 4 1 C 6 2 From C to Link Cost From E to Link Cost C local 0 E local 0 B 2 1 B 4 1 A 2 inf A 6 2 E 5 1 D 6 1 D 5 2 C 5 1 Von A: A=0, B=inf, C=3, D=1, E=2 auf Link 3 Von B: A=inf, B=0, C=1, D=2, E=1 auf Link 2, 4 Von D: A=3, B=2, C=2, D=0, E=1 auf Links 3, 6 Von E: A=2, B=1, C=1, D=1, E=0 auf Links 4, 5, 6 Martin Mauve Universität Mannheim 11 Distance Vektor Routing - Link Ausfall Beispiel Martin Mauve From A to Link Cost From B to Link Cost From D to Link Cost A local 0 B local 0 D local 0 B 3 3 A 4 3 A 3 1 D 3 1 D 4 2 B 6 2 C 3 3 C 2 1 E 6 1 E 3 2 E 4 1 C 6 2 From C to Link Cost From E to Link Cost C local 0 E local 0 B 2 1 B 4 1 A 5 3 A 6 2 E 5 1 D 6 1 D 5 2 C 5 1 Universität Mannheim 12 Distance Vector Routing - Counting to Infinity A XXXX 3 D B 4 XXXX E 2 5 C From A to Link Cost From D to Link Cost A local 0 D local 0 B 3 3 A 3 1 D 3 1 B 6 inf C 3 3 E 6 inf E 3 2 C 6 inf Wenn nun einer der von A periodisch versandten Distanzvektoren bei D ankommt, bevor D den neuen Vektor an A schickt kommt es zu „Counting to Infinity“. Von A: A=0, B=3, C=3, D=1, E=2 auf Link 3 Martin Mauve Universität Mannheim 13 Distance Vector Routing - Counting to Infinity From A to Link Cost From D to Link Cost A local 0 D local 0 B 3 3 A 3 1 D 3 1 B 3 4 C 3 3 E 3 3 E 3 2 C 3 4 From A to Link Cost From D to Link Cost A local 0 D local 0 B 3 5 A 3 1 D 3 1 B 3 4 C 3 5 E 3 3 E 3 4 C 3 4 Martin Mauve Universität Mannheim Von B: A=1, B=4, C=4, D=0, E=3 auf Link 3 Von B: A=1, B=5, C=5, D=1, E=4 auf Link 3 14 Counting to Infinity - Einfache Lösung man definiert eine Zahl als „unendlich“ diese Zahl muß größer sein, als die größte mögliche Distanz zwischen zwei Knoten wird diese Zahl erreicht, dann wird der Eintrag in der Routing Tabelle auf unendlich gesetzt Probleme: dies dauert entweder sehr lange (wenn die Zahl groß ist), oder die Größe des Netzes/Auflösung der Distanzen wird beschränkt (wenn die Zahl klein ist) während counting to infinity stattfindet werden Pakete im Kreis geroutet Martin Mauve Universität Mannheim 15 Counting to Infinity Lösung durch Split Horizon Idee: wenn Knoten A Pakete zu einem Ziel X über Knoten B routet, dann macht es keinen Sinn für B Pakete nach X über A zu routen! 2 Vorgehensweisen: Distanzvektoren werden individuell für jeden Link berechnet, dabei werden alle Ziele Ausgelassen, zu denen über diesen Link geroutet wird Distanzvektoren werden individuell für jeden Link berechnet, dabei wird für alle Ziele, zu denen über diesen Link geroutet wird, die Distanz auf unendlich gesetzt (Poisonous Reverse) Martin Mauve Universität Mannheim 16 Distance Vector Routing - Split Horizon A XXXX 3 D B 4 XXXX E 2 5 C From A to Link Cost From D to Link Cost A local 0 D local 0 B 3 3 A 3 1 D 3 1 B 6 inf C 3 3 E 6 inf E 3 2 C 6 inf Auch wenn nun einer der von A periodisch versandten Distanzvektoren bei D ankommt, bevor D den neuen Vektor an A schickt kommt es zu keinem Problem: Von A: A=0, B=inf, C=inf, D=inf, E=inf auf Link 3 (poisonous reverse) Martin Mauve Universität Mannheim 17 Distance Vector Routing Problem bei Split Horizon A XXXX 3 D B 4 XXXX 2 C 5 E Von E: A=inf, B=inf, C=1, D=inf, E=0 auf Link 4 (poisonous reverse) Von E: A=inf, B=1, C=inf, D=inf, E=0 auf Link 5 (poisonous reverse) Der Distanzvektor auf Link 5 geht verloren und kommt nicht bei C an. Martin Mauve From B to Link Cost B local 0 A 4 3 D 4 2 C 2 1 E 4 1 From C to Link Cost C local 0 B 2 1 A 5 3 E 5 1 D 5 2 Universität Mannheim From E to Link Cost E local 0 B 4 1 A 6 inf D 6 inf C 5 1 18 Distance Vector Routing Problem bei Split Horizon A XXXX 3 D B 4 XXXX 2 C 5 E From B to Link Cost B local 0 A 4 inf D 4 inf C 2 1 E 4 1 Link Cost local 0 B 2 1 A 5 3 E 5 1 D 5 2 Nun sei für C die Zeit gekommen, daß From C to der Distanzvektor gesendet werden muß C (periodische Übertragung). Von C: A=3, B=inf, C=0, D=2, E=1 auf Link 2 (poisonous reverse) Von C: A=inf, B=1, C=0, D=inf, E=inf auf Link 5 (poisonous reverse) Martin Mauve Universität Mannheim From E to Link Cost E local 0 B 4 1 A 6 inf D 6 inf C 5 1 19 Distance Vector Routing Split Horizon Problem A XXXX 3 D B 4 XXXX 2 5 E Von B: A=4, B=0, C=1, D=3, E=inf auf Link 4 (poisonous reverse) Von B: .... uninteressant auf Link 2 (poisonous reverse) Martin Mauve C From B to Link Cost B local 0 A 2 4 D 2 3 C 2 1 E 4 1 From C to Link Cost C local 0 B 2 1 A 5 3 E 5 1 D 5 2 Universität Mannheim From E to Link Cost E local 0 B 4 1 A 6 inf D 6 inf C 5 1 20 Distance Vector Routing Split Horizon Problem A XXXX 3 D B 4 XXXX 2 C 5 E Jetzt existiert ein 3er Kreis, in dem es zu count to infinity kommt! Martin Mauve From B to Link Cost B local 0 A 2 4 D 2 3 C 2 1 E 4 1 From C to Link Cost C local 0 B 2 1 A 5 3 E 5 1 D 5 2 Universität Mannheim From E to Link Cost E local 0 B 4 1 A 4 5 D 4 4 C 5 1 21 Distance Vector Routing - Triggered Updates Wann werden Distanz Vektoren gesendet? periodisch (zufällige Variation der Periode) nach Änderung der Routingtabelle (triggered update) Martin Mauve Wenn die triggered updates schnell versandt werden, dann kann es zu counting to infinity nur durch Paketverlust kommen! Universität Mannheim 22 Distance Vector Routing - Löschen von Einträgen in der Routingtabelle wenn ein Eintrag in einer Routingtabelle nicht durch periodisch versandte Distanzvektoren bestätigt wird, wird dieser Eintrag nach einer gewissen Zeit gelöscht dies verhindert das nicht länger gültige Einträge in der Routingtabelle stehen - z.B. wenn der Ausfall eines Links nicht erkannt wurde diese Zeit ist sehr viel größer als die Periode für das Versenden der Distanzvektoren daher: nur bei Verlust mehrerer Distanzvektoren kann dies zum fälschlichen Löschen eines Eintrages führen Martin Mauve Universität Mannheim 23 Routing Information Protocol (RIP) Version 1 RFC1058, Routing Information Protocol, C.L. Hedrick, Jun-01-1988, Status: Historic Implementierungen: routed, gated Adressen die in RIP verwendet werden sind 32 bit lange IPv4 Adressen Netzwerkadresse: Subnet ID und Host ID sind 0 Subnetzadresse: Host ID ist 0. Nur erkennbar innerhalb des Netzwerkes zu dem das Subnetz gehört, da nur dort die Informationen über Subnetzaufteilung vorhanden ist. Außerhalb des Netzes werden alle Subnetze zu dem dazugehörigen Gesamtnetz zusammengefaßt. Hostadressen: Host ID nicht 0. Optional, muß nicht von jedem Router unterstützt werden. Martin Mauve Universität Mannheim 24 RIP Version 1 verwendete Metrik: jeder Knoten hat von jedem anderen Knoten den Abstand 1 16 ist unendlich RIP verwendet UDP (port 520) um die Distanzvektoren zu übertragen RIP verwendet Martin Mauve split horizon/poisonous reverse triggered updates (mit zufälliger Verzögerung von 1-5 sec.) periodische Übertragung von Distanzvektoren alle 30 sec. timeout für Routingtabelleneinträge von 180 sec. Universität Mannheim 25 RIP Version 1 - Nachrichtenformat 0 15 7 31 IP + UDP header (28 bytes) command (1, 2) version (1) must be zero address family identifier (2) must be zero IP address must be zero must be zero metric weitere Einträge ..... Martin Mauve Universität Mannheim 26 RIP Version 1 - Nachrichtenformat command: 1=request, wird von einem Router verwendet der gerade neu gestartet wurde, um von seinen Nachbarn die Distanzvektoren nachzufragen 2=reply, wird alle 30 Sekunden oder als triggered update oder als Antwort auf einen request verschickt version: 1 address family identifier: 2: IP Martin Mauve Universität Mannheim 27 RIP Version 2 RFC2453, RIP Version 2, G. Malkin, November 1998 abwärtskompatibel zu RIP Version 1 sehr umstritten, da die „Experten“ der Meinung waren/sind daß Distance Vektor Routing Prinzipiell nicht gut ist (counting to infinity!!!) wichtigste Erweiterungen: subnet routing authentication Martin Mauve Universität Mannheim 28 RIP Version 2 - Nachrichtenformat 0 15 7 31 IP + UDP header (28 bytes) command (1, 2) version (2) routing domain address family identifier (2,0xFFFF) route tag IP adress subnet mask next hop metric weitere Einträge ..... Martin Mauve Universität Mannheim 29 RIP Version 2 - Nachrichtenformat command: 1=request, 2=reply version: 2 address family identifier: 2: IP 0xFFFF: Authentication routing domain + route tag: Unterstützung mehrerer Autonomer Einheiten auf dem selben LAN subnet mask: bessere Unterstützung von subnets next hop: wird in Zusammenspiel mit exterior gateway protocols (EGP, BGP) verwendet (Erklärung folgt bei Vorstellung dieser Protokolle) Martin Mauve Universität Mannheim 30 RIP Version 2 - Routing per Subnet da die subnet mask bei RIP 2 mitgeschickt wird, kann man: auch außerhalb eines Netzes für dessen verschieden Subnetze unterschiedliche Wege wählen Subnetzmasken innerhalb eines Netzes verschieden breit wählen außerdem unterstützt dies classless interdomain routing CIDR (besprechen wir später!) Martin Mauve Universität Mannheim 31 RIP Version 2 - Authentication in RIP Version 1 kann jeder die Routingtabellen durch das Verschicken von Distanzvektoren beliebig manipulieren in RIP Version 2 kann das erste Element eines Vektors Authentifikationsinformationen enthalten 16 byte Paßwort, oder digitale Unterschrift über das gesamte Paket Martin Mauve ist nicht wirklich sicher, da 16 byte zu wenig sind! Universität Mannheim 32 RIP Version 2 - Authentication 0 15 7 31 IP + UDP header (28 bytes) command (1, 2) version (2) address family identifier (0xFFFF) routing domain authentication type authentication (16 bytes) authentication type 2 Paßwort andere Werte sind spezifiziert, z.B. MD-5 Hash authentication Daten, ja nach authentication type (z.B. Paßwort) Martin Mauve Universität Mannheim 33 Distance Vector Routing / RIPZusammenfassung sehr einfach zu implementieren grobe Fehler sind unwahrscheinlich ABER bei Veränderungen: stabilisiert sich das Netz unter Umständen nur sehr langsam (counting to infinity) während dieser Zeit gibt es Schleifen Martin Mauve RIP wird zunehmend von anderen Routingverfahren verdrängt die nicht auf Distance Vector Routing basieren, obwohl es auch neuere Distance Vector Routing Ansätze gibt, bei denen counting to infinity komplett vermieden wird. Diese sind allerdings nicht mit RIP kompatibel. Universität Mannheim 34 Link State Routing - Generelle Idee jeder Knoten besitzt eine vollständige Karte des Netzwerkes in Form einer Datenbank (dies ist NICHT! die Routingtabelle) jeder Knoten berechnet anhand dieser Karte die Einträge in die Routing Tabelle bei Veränderungen der Topologie werden die relevanten Informationen im Netz geflutet Martin Mauve Universität Mannheim 35 Link State Routing - Ausgangssituation A 1 3 D 6 B 2 4 5 C E Karte/Datenbank: From From Link Cost Number From From Link Cost Number A B 1 1 1 C E 5 1 1 A D 3 1 1 D A 3 1 1 B A 1 1 1 D E 6 1 1 B C 2 1 1 E B 4 1 1 B E 4 1 1 E C 5 1 1 C B 2 1 1 E D 6 1 1 Martin Mauve Universität Mannheim 36 Link State Routing - Link Ausfall A XXXX 3 D 6 B 2 4 5 C E From A, to B, link 1 distance = infinite, number 2 From B, to A, link 1 distance = infinite, number 2 Martin Mauve Universität Mannheim 37 Link State Routing - Nachrichtenbehandlung Martin Mauve Empfange Nachricht. Schlage den entsprechenden Eintrag in der Datenbank nach. Wenn kein Eintrag existiert, füge die Nachricht als neuen Eintrag in die Datenbank ein, leite die Nachricht an alle Interfaces weiter, außer dem Interface auf dem die Nachricht empfangen wurde. Wenn ein Eintrag mit niedrigerer Nummer vorhanden ist, aktualisiere den Eintrag und leite die Nachricht weiter. Wenn ein Eintrag mit höherer Nummer vorhanden ist, schicke diesen Eintrag über das Interface, auf dem die veraltete Nachricht erhalten wurde zurück. Wenn ein Eintrag mit derselben Nummer vorhanden ist, ignoriere die Nachricht. Universität Mannheim 38 Link State Routing - Link Ausfall Karte/Datenbank nachdem die Informationen über den Linkausfall von A und B geflutet wurden: From From Link Cost Number From From Link Cost Number A B 1 inf 2 C E 5 1 1 A D 3 1 1 D A 3 1 1 B A 1 inf 2 D E 6 1 1 B C 2 1 1 E B 4 1 1 B E 4 1 1 E C 5 1 1 C B 2 1 1 E D 6 1 1 Martin Mauve Universität Mannheim 39 Link State Routing Bringing Up Adjacencies A XXXX 3 D XXXX B 2 4 5 C E From D, to E, link 6 distance = infinite, number 2 From E, to D, link 6 distance = infinite, number 2 Im Folgenden werden die Topologieinformationen für die beiden Partitionen unterschiedlich sein! Wir wollen verstehen, wie sich diese Unterschiede wieder angleichen, wenn die Connectivität wieder hergestellt wird. Dieser Vorgang heißt „Bringing Up Adjacencies“. Martin Mauve Universität Mannheim 40 Link State Routing Bringing Up Adjacencies From From Link Cost Number From From Link Cost Number A B 1 inf 2 A B 1 inf 2 A D 3 1 1 A D 3 1 1 B A 1 inf 2 B A 1 inf 2 B C 2 1 1 B C 2 1 1 B E 4 1 1 B E 4 1 1 C B 2 1 1 C B 2 1 1 C E 5 1 1 C E 5 1 1 D A 3 1 1 D A 3 1 1 D E 6 inf 2 D E 6 1 1 E B 4 1 1 E B 4 1 1 E C 5 1 1 E C 5 1 1 E D 6 1 1 E D 6 inf 2 Datenbank von A und D Martin Mauve Datenbank von B, C und E Universität Mannheim 41 Link State Routing Bringing Up Adjacencies A XXXX 3 D B XXXX C 4 XXXX 5 E From B, to C, link 2 distance = infinite, number 2 From C, to B, link 2 distance = infinite, number 2 Diese Informationen werden nur in einer Partition geflutet (die andere ist nicht zu erreichen)! Martin Mauve Universität Mannheim 42 Link State Routing Bringing Up Adjacencies From From Link Cost Number From From Link Cost Number A B 1 inf 2 A B 1 inf 2 A D 3 1 1 A D 3 1 1 B A 1 inf 2 B A 1 inf 2 B C 2 1 1 B C 2 inf 2 B E 4 1 1 B E 4 1 1 C B 2 1 1 C B 2 inf 2 C E 5 1 1 C E 5 1 1 D A 3 1 1 D A 3 1 1 D E 6 inf 2 D E 6 1 1 E B 4 1 1 E B 4 1 1 E C 5 1 1 E C 5 1 1 E D 6 1 1 E D 6 inf 2 Datenbank von A und D Martin Mauve Datenbank von B, C und E Universität Mannheim 43 Link State Routing Bringing Up Adjacencies A 1 3 D B XXXX C 4 XXXX 5 E From A, to B, link 1 distance = 1, number 3 From B, to A, link 1 distance = 1, number 3 Jetzt existiert wieder ein einziges unpartitioniertes Netz. Allerdings mit inkonsistenten Datenbanken. Martin Mauve Universität Mannheim 44 Link State Routing Bringing Up Adjacencies From From Link Cost Number From From Link Cost Number A B 1 1 3 A B 1 1 3 A D 3 1 1 A D 3 1 1 B A 1 1 3 B A 1 1 3 B C 2 1 1 B C 2 inf 2 B E 4 1 1 B E 4 1 1 C B 2 1 1 C B 2 inf 2 C E 5 1 1 C E 5 1 1 D A 3 1 1 D A 3 1 1 D E 6 inf 2 D E 6 1 1 E B 4 1 1 E B 4 1 1 E C 5 1 1 E C 5 1 1 E D 6 1 1 E D 6 inf 2 Datenbank von A und D Martin Mauve Datenbank von B, C und E Universität Mannheim 45 Link State Routing Bringing Up Adjacencies sobald ein Link wieder hochfährt: database description packets werden ausgetausch, diese identifizieren die Einträge in der Datenbank und die jeweilige Nummer: z.B. From A, to B, Number 3 der Austausch findet zwischen den beiden Knoten statt, zwischen denen die Verbindung wieder hergestellt wurde diese Beschreibung wird vom Empfänger überprüft, sind Einträge vorhanden, die eine höhere Nummer haben, als in der eigenen Datenbank, dann werden diese Einträge mit Hilfe von link state request packets angefordert Martin Mauve dieses Vorgehen minimiert das Volumen der Daten, die übertragen werden müssen Universität Mannheim 46 Link State Routing - Sicherung der Updates Nachrichten werden beim Fluten bestätigt Jeder Datenbankeintrag wird durch einen Timer überwacht, der Eintrag wird gelöscht, wenn der Timer abläuft, bevor der Eintrag durch periodische Übertragung bestätigt wird Einträge werden mit einer Checksumme gegen Änderungen geschützt Nachrichten können beim Fluten authentifiziert werden (Paßwort, Signatur) Martin Mauve Universität Mannheim 47 Link State Routing - Lokale Berechnung der Routing Tabelle Mit Hilfe des von Dijkstra entwickelten „shortest Path first“ Algorithmus: 1 Initialisiere E mit dem Sender S, und R mit allen anderen Knoten. Initialisiere O mit allen Pfaden, die von S einen Schritt weit entfernt sind. Sortiere diese Pfade nach ihren Kosten. 2 Wenn O leer ist, oder alle Pfade in O unendliche Kosten haben, dann markiere alle Knoten in R als nicht erreichbar. Ende. 3 Sei P der kürzeste Pfad in O, entferne P aus O. Sei V der letzte Knoten in Pfad P. Wenn V in E vorhanden ist dann weiter mit Schritt 2. Ansonsten ist P der kürzeste Pfad von S nach V. 3 Konstruiere neue Pfade, die P als Basis haben und die um die Pfade die von V einen Schritt weit wegführen. Füge diese in O in sortierter Weise ein. Gehe zu Schritt 2. Martin Mauve Universität Mannheim 48 Link State Routing - Lokale Berechnung der Routing Tabelle - Beispiel A 1 2 D 2 B 5 2 1 C E Achtung! Nun repräsentieren die Zahlen die „Distanz“ (= Verzögerung, Kosten, etc.) zwischen zwei Knoten. E={A, B, D, E} O={A-D-E-4, A-B-E-C-4, A-B-C-6} Kürzeste Pfade: {A-B-1, A-D-2, A-B-E-3} E={A} O={A-B-1, A-D-2} E={A, B} O={A-D-2, A-B-E-3, A-B-C-6} Kürzeste Pfade: {A-B-1} Achtung 2 Schritte!!! E={A, B, C, D, E} O={A-B-C-6} Kürzeste Pfade: {A-B-1, A-D-2, A-B-E-3, A-B-E-C-4} E={A, B, D} O={A-B-E-3, A-D-E-4, A-B-C-6} Kürzeste Pfade: {A-B-1, A-D-2} Dann noch 1 weiterer Schritt bis zum Ende! Martin Mauve Universität Mannheim 49 Link State Routing - Vorteile schnelle Konvergenz ohne Schleifen mehrere Metriken können gleichzeitig verwendet werden: z.B. für IP Pakete mit unterschiedlichem Inhalt im Type of Service Feld für ein und dasselbe Paket muß dann aber dieselbe Metrik für das Routing verwendet werden Martin Mauve Universität Mannheim 50 Link State Routing - Vorteile es muß nicht immer über den kürzesten Pfad geroutet werden: man kann Pakete alternierend über mehrere annähernd gleich gute Pfade schicken es läßt sich mathematisch zeigen, daß dies den Gesamtdurchsatz des Netzes deutlich verbessert dabei besteht aber die Gefahr, daß partielle Schleifen entstehen dies kann man verhindern indem Pakete nur zu Knoten weitergeleitet werden dürfen, die näher am Ziel sind als der Knoten an dem sie sich momentan befinden Martin Mauve Universität Mannheim 51 Open Shortest Path First (OSPF) Open Shortest Path First ist die Spezifikation der IETF für Link State Routing: J. Moy, „OSPF Version 2“, RFC-1247, 1991 Open, da es in offener Weise von der IETF standardisiert wurde Shortest Path First, da der gleichnamige Dijkstra Algorithmus verwendet wird 3 Nachrichtentypen werden in OSPF definiert: hello - erkennen ob Nachbarn da sind exchange - Bringing Up Adjancencies flooding - update der Netzwerkkarte bei laufendem Betrieb Martin Mauve OSPF wird direkt über IP verwendet (Protokoll type 89) Universität Mannheim 52 OSPF - Gemeinsamer Header 0 15 7 31 IP header (20 bytes) - protocol type 89 version (2) type (1-5) packet length router ID area ID checksum autype authentication authentication type specific header Martin Mauve Universität Mannheim 53 OSPF - Gemeinsamer Header Martin Mauve version: 2 type: OSPF Nachrichtentype 1-5 packet length: Anzahl der bytes im Paket router ID: IP Adresse des Routers (eine wird ausgewählt um diesen zu identifizieren) area ID: identifiziert ein Gebiet (in dieser Vorlesung nicht besprochen!) checksum: über das ganze Paket (ohne IP header), wird wie für den IP header berechnet autype: welche Art der Authentifizierung wird gewählt (0=keine, 1= Paßwort, andere) authentication: Paßwort Universität Mannheim 54 OSPF - Hello Protocol 0 15 7 31 OSPF packet header, type=1 (hello) network mask hello interval options priority dead interval designated router backup designated router neighbor more neighbors ... Martin Mauve Universität Mannheim 55 OSPF - Hello Protocol Martin Mauve network mask: des Subnetzes, auf welches das hello Packet geschickt wurde hello interval: in diesem Intervall wird die Hello Nachricht wiederholt dead interval: wenn keine Nachricht von einem Nachbar Router in dieser Zeit empfangen wurde, dann gilt die Verbindung als gestört, der Eintrag wird entfernt neighbor: in dieser Liste stehen alle Nachbarn, von denen ein hello in den letzten dead interval Sekunden empfangen wurde alle anderen Felder: hier nicht behandelt (s. Huitema Buch oder RFC 1247) Universität Mannheim 56 OSPF - Hello Protocol für OSPF gilt eine Verbindung zwischen zwei Routern als hergestellt, wenn sie gegenseitig ihre Hello Nachrichten empfangen können dies erkennt man daran, daß man eine Hello Nachricht von einem Nachbarn empfängt, in der man selbst in der neighbor Liste eingetragen ist der Zusammenbruch von Verbindungen kann durch timeout (dead interval) oder durch Signale von unteren Netzwerkschichten erkannt werden Martin Mauve Universität Mannheim 57 OSPF - Exchange Protocol 0 15 7 31 OSPF packet header, type=2 (database descritpion/dd) must be 0 options must be 0 IMMS DD sequence number link state type link state ID advertising router link state sequence number link state checksum link state age more record descriptions Martin Mauve Universität Mannheim 58 OSPF - Exchange Protocol IMMS: 3 Bits (initialize, more, master-slave) die zur Signalisierung verwendet werde (s. unten). DD sequence number: Sequenznummer für dd Pakete. Link State Type - Link State Age: Zusammenfassung eines Eintrages in der Datenbank. Kommt für jeden Eintrag in der Datenbank einmal vor. Achtung! Bei OSPF beinhaltet ein Datenbankeintrag alle Wege, die von einem Router berichtet werden! Martin Mauve Universität Mannheim 59 OSPF - Exchange Protocol - Funktionsweise Wenn ein neuer Link hochfährt: Sende ein leeres dd Paket mit IMMS = 1 1 1 und einer initialen DD sequence number. Warte auf Antwort, wenn Timeout, dann wiederhole die Übertragung. Wenn man ein dd Paket bekommt: Falls man selbst keines geschickt hat wird man slave und antwortet mit einem dd Paket mit IMMS = 1 1 0 und der gleichen Sequenznummer, sowie einer Zusammenfassung der eigenen Einträge in der Datenbank soweit diese in ein einziges Paket passt. Wenn man eines geschickt hat, dann haben sich beide Pakete im Netz überkreuzt (oder es ist eines verloren gegangen). Dann wird derjenige slave, der die niedrigere IP Adresse hat. Dieser antwortet entsprechen. Martin Mauve Universität Mannheim 60 OSPF - Exchange Protocol - Funktionsweise nachdem der Master bestimmt ist, sendet dieser eine Zusammenfassung aller seiner Datenbankeinträge: IMMS = 0 1 1, solange weitere Pakete folgen IMMS = 0 0 1, für das letzte Paket jedes dieser Pakete wird vom slave bestätigt mit einem leeren dd Paket, dessen Sequenznummer gleich der empfangenen Sequenznummer ist wenn keine Bestätigung eintrifft wiederholt der master die Übertragung des Paketes Martin Mauve wenn der Master mit der Übertragung fertig ist setzt er im letzten Paket IMMS auf 0 0 1, daraufhin sendet der slave die Beschreibung seiner Einträge, wenn der slave ein Paket mit IMMS 0 0 0 sendet ist diese Phase beendet Universität Mannheim 61 OSPF - Exchange Protocol - Funktionsweise 0 7 15 31 OSPF packet header, type=3 (request/rq) link state type link state ID advertising router more record requests nun wissen beide Teilnehmer welche Einträge in der Datenbank beim anderen Teilnehmer aktuelle sind, diese werden nachgefragt geantwortet wird wie beim OSPF - Flooding Protocol, das wir gleich besprechen Martin Mauve Universität Mannheim 62 OSPF - Flooding Protocol 0 15 7 31 OSPF packet header, type=4 (link state update) number of advertisements link state age options link state type (1) link state ID advertising router link state sequence number link state checksum link state length zero or more link descriptions Martin Mauve Universität Mannheim 63 OSPF - Flooding Protocol in jeder link state update Nachricht können mehrere link state advertisements enthalten sein link state age - link state sequence number: Identifikation eines Eintrages in der Datenbank link state checksum: wie für IP berechnet, aber über das ganze OSPF Paket link state length: Gesamtlänge diese Eintrages link descriptions: Beschreibung der links, die von dem advertising router ausgehen. Dies beinhaltet Metriken, die für jeden IP type of service getrennt angegeben werden können. Martin Mauve Universität Mannheim 64 OSPF - Flooding Protocol 0 15 7 31 OSPF packet header, type=5 (link state acknowledgement) link state age options link state type (1) link state ID advertising router link state sequence number link state checksum link state length more acknowledgement Martin Mauve Universität Mannheim 65 Link State Routing/OSPF Zusammenfassung relative komplex OSPF RFC hat 186 Seiten OSPF braucht 5 Nachrichtentypen und baut auf zuverlässige Nachrichtenübertragung durch acknowledgements ABER: OSPF ist sehr viel effizienter als RIP da routing wichtig ist wird die zusätzliche Komplexität für eine Steigerung der Effizienz in Kauf genommen, OSPF setzt sich zunehmend gegen RIP durch Martin Mauve Universität Mannheim 66 Alternative Ansätze - IS-IS Intra-Domain Intermediate System to Intermediate System Routeing Protocol ISO-OSI Vorschlag Routing basiert auf Link State Technologie, wie OSPF Martin Mauve Universität Mannheim 67 Alternative Ansätze - IGRP Interior Gateway Routing Protocol proprietäres Protokoll der Firma cisco verwendet distance vector Technik verbessert RIP in einigen entscheidenden Gebieten: Martin Mauve composite metrics conservative protection against loops multipath routing einige der Verbesserungen sind von cisco patentiert Universität Mannheim 68 Alternative Ansätze - EIGRP Enhanced Interior Gateway Routing Protocol proprietäres Protokoll der Firma cisco verwendet distance vector Technik verbessert IGRP: es ist loop-free wird von einigen Experten als die bessere Lösung im Vergleich mit OSPF betrachtet, da die Komplexität niedriger ist, aber ein propritäres Protokoll mit patentierten Bestandteilen ist problematisch! Martin Mauve Universität Mannheim 69 3.7 Exterior Gateway Routing Protocols ursprünglich war das Internet eine einzige Einheit, d.h. ein einziges homogenes routing Protokoll wurde für das gesamte Internet verwendet (Gateway to Gateway Protocol - GGP) große routing Tabellen hoher Kommunikationsoverhead Interoperabilität zwischen Routern verschiedener Hersteller war schwierig Umstellung auf neue Routingprotokolle war nahezu unmöglich Martin Mauve Lösung: das Netzwerk wird in Autonome Einheiten eingeteilt, in jeder dieser Einheiten kann individuell geroutet werden Routing zwischen „Autonomen Einheiten“ über exterior gateway routing protocols Universität Mannheim 70 Autonomous System AS=„A set of routers and networks under the same administration“ technische Definition: alle Bestandteile eines AS müssen intern miteinander verbunden sein jedem AS wird eine 2 Byte lange Autonomous System ID zugewiesen i.d.R. sollte in einem AS genau ein Interior Gateway Routing Protocol (z.B. OSPF) verwendet werden zwischen AS wird ein Exterior Gateway Protocol verwendet: Exterior Gateway Protocol (EGP) - inzwischen veraltet, da es von einer Internetarchitektur ausgeht, bei der die AS über EIN backbone Netz miteinander verbunden sind Border Gateway Protocol (BGP) - wird zur Zeit verwendet Martin Mauve Universität Mannheim 71 Autonomous System Definition im BGP RFC The classic definition of an Autonomous System is a set of routers under a single technical administration, using an interior gateway protocol and common metrics to route packets within the AS and using an exterior gateway protocol to route packets to other AS's. Since this classic definition was developed, it has become common for a single AS to use several interior gateway protocols and sometimes several sets of metrics within an AS. The use of the term Autonomous System here stresses the fact that, even when multiple IGPs and metrics are used, the administration of an AS appears to other AS's to have a single coherent interior routing plan and presents a consistent picture of which destinations are reachable through it. Martin Mauve Universität Mannheim 72 Warum eigenständige Exterior Routing Protokolle und nicht RIP oder OSPF? Die interior gateway protocols (IGPs) sind für eine kleine Anzahl an Routern gedacht (z.B. OSPF <200) exterior gateway protocols müssen viele tausend AS miteinander verknüpfen. Die IGPs gehen von einem homogenen Umfeld aus, bei dem ein und dasselbe Paket nach einer einzigen Politik geroutet wird (minimiere Verzögerung/Kosten, etc.) dies ist nicht mehr der Fall, wenn ein Paket die Grenzen eines AS verläßt. Hier kann jeder Router eines neue AS verschiedene Prioritäten setzen, wenn man dies nicht berücksichtigt kommt es zu Routing Schleifen und anderen Anomalien! Martin Mauve Universität Mannheim 73 Border Gateway Protocol Version 3 (BGP-3) K. Lougheed, Y. Rekhter. Border Gateway Protocol 3 (BGP-3). RFC 1267. 1991. wichtiges Ziel in BGP-3 ist es, daß jedes AS frei Politiken entscheiden kann, wie der Verkehr aus dem eigenen AS und wie Verkehr aus anderen AS (transit Verkehr) weitergeleitet wird: ein AS kann sich weigern Verkehr, der nicht aus dem eigenen AS stammt oder in diesem AS terminiert, weiterzuleiten ein AS kann Verkehr für einige spezifische AS durchleiten ein AS kann aus diesem AS kommenden Verkehr mit Präferenz über bestimmte AS weiterleiten oder explizit über bestimmte AS nicht weiterleiten etc. Martin Mauve dies ist mit IGPs nicht möglich! Universität Mannheim 74 BGP-3 Designentscheidungen BGP-3 benutzt ein zuverlässiges Transportprotokoll (TCP) für die Kommunikation zwischen Routern dies reduziert die Komplexität des Protokolls, erhöht aber gleichzeitig die Abhängigkeit (TCP ist Voraussetzung für die Verwendung von BGP-3) BGP-3 verwendet Path Vectors ein Path-Vector ist ähnlich zu einem Distance Vector beschreibt jedoch den kompletten Weg zum Ziel AS, d.h. jeder Router auf diesem Weg trägt sich in jedes Element des Vektors ein dies ermöglicht Schleifen-Freiheit und verschiedene routing Politiken Martin Mauve Universität Mannheim 75 Path Vectors - Beispiel AS1 AS4 R11 136.3.0.0 R41 136.3.0.0 R12 AS3 R33 R31 R21 R32 AS2 149.10.0.0 140.1.0.0 133.10.0.0 AS5 R22 R52 R51 155.20.0.0 Beispiele für Path Vectors: AS3 - AS5 (155.20.0.0) kann von R31 zu R11 angekündigt werden, AS2-AS5-AS4 (140.1.0.0/133.10.0.0) kann von R21 angekündigt werden, je nach Politik kann AS1 auch AS3-AS4 (140.1.0.0/133.10.0.0) wählen, etc. Martin Mauve Universität Mannheim 76 BGP-3 Generelle Funktionsweise zunächst wird zwischen zwei Routern auf TCP Ebene eine Verbindung hergestellt dann erfolgt ein Nachrichtenaustausch um eine BGP Verbindung herzustellen dann werden die kompletten BGP routing Tabellen als Path Vectors ausgetauscht: diese beinhaltet nur jeweils den „besten Weg“ den ein AS zu einem Ziel kennt dieser „beste Weg“ wird durch die lokale Politik eines AS bestimmt ein AS merkt sich alle Wege, die von den Nachbarn für ein Ziel angekündigt wurden, nimmt aber nur den „besten“ in die Routing Tabelle auf fällt der „beste“ Weg aus, so wird der zweitbeste Weg verwendet, dies erfordert eine Benachrichtigung der Nachbarn über diesen neuen Weg Martin Mauve Universität Mannheim 77 BGP-3 Generelle Funktionsweise anschließend werden nur noch die Veränderungen an dieser Tabelle dem jeweiligen Partner mitgeteilt es erfolgt kein weiterer Austausch der vollständigen Tabelle periodisch wird mittels einer KeepAlive Nachricht geprüft of der Kommunikationspartner noch da ist Martin Mauve Universität Mannheim 78 BGP-3 Header 0 7 15 31 marker (16 byte) length type (1-4) marker: der Inhalt dieses Feldes wird durch von BGP getrennt spezifizierte Sicherheitsalgorithmen festgelegt, er soll der Authentifikation dienen length: Gesamtlänge des Paketes - notwendig, da TCP einen byte-stream verschickt und keine einzelnen Pakete type: Pakettyp (1=OPEN, 2=UPDATE, 3=NOTIFICATION Fehlermeldung - hier nicht weiter besprochen, 4=KEEPALIVE) Martin Mauve Universität Mannheim 79 BGP-3 Open Message 0 15 7 31 marker (16 byte) length type: OPEN my autonomous system version hold time BGP identifier auth. code authentication data Martin Mauve Universität Mannheim 80 BGP-3 Open Message wird versendet sobald eine Transport (TCP) Verbindung hergestellt ist version: 3 für BGP-3 my autonomous system: Identifier für die AS ID des Senders hold time: Zeitraum in dem ein BGP-3 Paket (z.B. KeepAlive) empfangen werden muß, damit die Verbindung bestehen bleibt BGP identifier: eine IP Adresse des Senders, diese muß durchgehend für jede BGP Kommunikation verwendet werden Martin Mauve Universität Mannheim 81 BGP-3 Open Message authentication code/data: Möglichkeit zur Authentifikation der Nachricht wenn der Verbindungsaufbau erfolgreich war (BGP Versionen stimme überein und der Empfänger der open Nachricht akzeptiert eine Verbindung mit dem Sender), dann sendet der Empfänger der open Nachricht eine KeepAlive Nachricht zum Sender wenn der Verbindungsaufbau erfolglos war, wird mit einer notification Nachricht geantwortet Martin Mauve Universität Mannheim 82 BGP-3 KeepAlive Message BGP-3 header ohne weitere Daten wird verwendet um zu Prüfen ob ein Nachbar noch da ist wird in der Regel so versandt, daß durchschnittlich 3 BGP-3 Nachrichten beim Nachbarn in hold time Sekunden ankommen, d.h. wenn viele andere BGP3 Nachrichten an einen Nachbarn versendet werden müssen wenige KeepAlive Nachrichten versandt werden Martin Mauve Universität Mannheim 83 BGP-3 Update Message 0 7 15 31 marker (16 byte) length type: UPDATE path attr. length path attr. length path attributes network 1 more networks Martin Mauve Universität Mannheim 84 BGP-3 Update Messages network 1-n: die Netze, die über diese Route erreicht werden können path attribute length: Gesamtlänge aller folgenden Attribute path attributes: attribute flags attribute type attribute length (1/2 Bytes) attribute data Martin Mauve Universität Mannheim 85 BGP-3 Update Message attribute flags: bit 0 (high order bit) optional bit: wenn 0, dann ist dieses Attribut bekannt (well-known) und muß von allen BGP Routern verstanden werden; wenn 1, dann ist das Attribut optional bit 1 transitive bit: wenn 0, dann wird dieses Attribut nur vom Empfänger interpretiert und nicht von diesem weitergeleitet; wenn 1, dann wird dieses Attribut (möglicherweise nach einem update) weitergeleitet bit 2 partial bit: wird von einem Router auf 1 gesetzt wenn ein optionales Attribut nicht erkannt wurde bit 3 extended length bit: das length Feld für dieses Attribut ist 2 byte lang wenn dieses bit gesetzt ist, sonst nur ein Byte Martin Mauve Universität Mannheim 86 BGP-3 Update Message Attribute die im BGP-3 RFC festgelegt sind: ORIGIN, type 1, length 1, well-known, transitive: ein Wert von 0 sagt aus, daß die Netzwerke intern zum AS des ursprünglichen Senders sind, 1 sagt aus, daß die Netzwerke über EGP vom Sender kennengelernt wurden und 2 sagt aus, daß die Netzwerke durch andere Methoden dem Sender bekanntgegeben wurden. AS_PATH, type 2, length variable, well-known, transitive: dies ist der Pfad den die Ankündigung vom ursprünglichen Sender zurückgelegt hat. Hier trägt jeder BGP Router, der die Ankündigung weiterleitet seine AS ID ein. Martin Mauve Universität Mannheim 87 BGP-3 Udate Message weitere Attribute die im BGP-3 RFC festgelegt sind: UNREACHABLE, type 4, length 0, well-known, transitive: dies signalisiert, daß die angegebene Route nicht mehr zur Verfügung steht INTER_AS METRIC, type 5, length 2, optional, nontransitive: dies erlaubt extern vorzugeben welche Route bevorzugt werden soll. Prinzipiell wird ein AS zunächst lokale Politiken verwenden um festzustellen, welche Route am besten geeignet ist. Führen die lokalen Politiken für mehr als eine Route zum gleichen Ergebnis, so wird diese Metrik verwendet: die Route mit dem niedrigeren Wert gewinnt. Martin Mauve Universität Mannheim 88 BGP-3 Zusammenspiel mit IGPs R1 R2 BGP IGP IGP IGP R3 R5 IGP R4 AS Martin Mauve Universität Mannheim 89 BGP-3 Zusammenspiel mit IGPs jeder BGP Router eines AS hat eine BGP Verbindung zu jedem anderen BGP Router des AS Router die nicht BGP sprechen kommunizieren mit Hilfe des IGPs (z.B. OSPF) mit den BGP Routern, dabei kündigen die BGP Router die externen Netze so an, daß es zu dem Verwendeten IGP paßt: als Distanzvektoren für RIP2 als Topologieinformationen in Form von externen Links in OSPF Martin Mauve Universität Mannheim 90 BGP-3 Zusammenfassung BGP-3 löst das Problem, daß verschiedene AS unterschiedliche Politiken zum Routing verwenden wollen BGP-3 trifft beschränkt nicht die Struktur, in der mehrere AS zusammengeschaltet werden BGP-3 löst nicht das Problem, daß Routing Tabellen sehr groß werden können BGP-3 löst auch nicht das Problem, daß Klasse B Adressen zu vergeben werden und damit schnell erschöpft sind BGP-4 mit Classless Interdomain Routing (CIDR) Martin Mauve Universität Mannheim 91 Problem: Class B Exhaustion Class A Adressen sind nur unter sehr besonderen Umständen zu bekommen Class C Adressen sind i.d.R. zu klein für eine Netzwerkstruktur Class B Adressen sind bevorzugte Wahl in vielen Fällen, sind aber in aller Regel zu groß, d.h. es werden Adressen „verschwendet“ ABER: es gibt nur 16.384 Class B Adressen! diese wären bis März 1994 aufgebraucht gewesen, hätte man keine Gegenmaßnahmen ergriffen Martin Mauve Universität Mannheim 92 Problem: Routing Table Explosion je mehr Netzwerke an das Internet angeschlossen werden, desto größer werden die Routing Tabellen für Exterior Gateway Routing Protocols das Wachstum der an das Internet Angeschlossenen Netze war in den letzten Jahren exponentiell! daher sind die Routingtabellen förmlich „explodiert“ Speicherprobleme und Zeitprobleme bei der Bestimmung von Routen sind die Folge in 1993 hatte man bereits Routing Tabellen mit über 10000 Einträgen! Martin Mauve Universität Mannheim 93 Kurzfristige Lösung: Classless Iterdomain Routing (CIDR) Organisationen bekommen nicht mehr eine Class B Adresse (die zu groß für sie wäre) sondern soviele zusammenhängende Class C Adressen wie sie benötigen die Verteilung der Class C Adressen erfolgt nicht zufällig sondern nach einem Schema, welches deren Aggregation beim Routing erlaubt dies erfolgt hierarchisch, z.B.: Europa: 194.0.0.0 - 195.255.255.255 North America: 198.0.0.0 - 199.255.255.255 etc. Martin Mauve so können z.B. alle Ziele die sich in Europa befinden in den USA mit einem einzigen Routing Tabellen Eintrag bezeichnet werden! Universität Mannheim 94 CIDR Provider based Allocation auf einer tieferen Ebene (Kontinental/National) muß berücksichtigt werden, daß Provider lieber innerhalb ihres Netzes routen und es u.U. nur 1 oder 2 Austauschpunkte zwischen den Provider in einem Land/Kontinent gibt eine feinere Unterteilung sollte daher auf Provider Basis erfolgen Problem: dann „gehören“ die Adressen dem jeweiligen Provider und man kann sie nicht beibehalten, wenn man den Provider wechselt! Martin Mauve Universität Mannheim 95 CIDR - Beispiel Router in den USA 194.x.x.x - 195.x.x.x über Link 1 Link 1 Router im Europäischen Backbone (z.B. London) 194.0.x.x - 194.30.x.x über Link 2 nach D 194.31.x.x - 194.60.x.x über Link 3 nach F Link 2 Router im Deutschen Backbone (z.B. Berlin) 194.0.x.x - 194.8.x.x über Link 10 nach T-Online D 194.9.x.x - 194.12.x.x über Link 11 nach AOL D Link 10 Martin Mauve Universität Mannheim Link 12 96 BGP-4 Rekhter and Li, „A Border Gateway Protocol 4 (BGP4)“, RFC 1771, 1995 die wichtigste Erweiterung gegenüber BGP-3 ist, daß CIDR unterstützt wird BGP-4 Router dürfen Routen aggregieren wenn dies nach der lokal festgelegten Politik als sinnvoll erscheint daher haben die Rechnernetze deren Erreichbarkeit mit einer Update Message angekündigt werden ein anderes Format: length Martin Mauve significant bits (1-4 bytes) Universität Mannheim 97 BGP-4 Aggregation von Routen Beispiel AS X 24 / 197.8.2.0 AS Y 24 / 197.8.3.0 AS T (Provider) es werden lokal 24 / 197.8.0.0 und 24 / 197.8.1.0 verwendet AS Z Ziel: der Provider würde gerne eine einzigen Eintrag der Art 22 / 197.8.0.0 an AS Z weitergeben Frage: was schreiben wir in die Liste der AS die wir mit der Route durchqueren, wenn wir mehrere Einträge aggregieren? Martin Mauve Universität Mannheim 98 BGP-4 Aggregation von Routen - Beispiel 1. Möglichkeit: nur T das kann zu Schleifen über X und Y führen, da die Informationen fehlen daß diese AS in der Route enthalten sind! 2. Möglichkeit: T, X und Y auch nicht gut, da dies wie ein Pfad aussieht, der durch 3 AS führt! Lösung die Informationen werden in 2 Teile zerlegt, eine Liste und eine Menge: Sequence (T), Set (X, Y) wenn der Pfad z.B. von Z weitergeleitet wird kommt Z in de Liste: Sequence (Z, T), Set (X, Y) wenn die Pfade rekursiv weiter aggregiert werden, dann wird die Sequence zur Schnittmenge aller aggregierten Sequences und die Set beinhaltet alle anderen AS aus der Vereinigung aller Sequences und Sets Martin Mauve Universität Mannheim 99 BGP-4 Update Message 0 15 7 31 marker (16 byte) length type: UPDATE infeasible route len withdrawn routes (variable length) infeasible route len path attribute length path attributes (variable length) network layer reachability information (variable length) Martin Mauve Universität Mannheim 100 BGP-4 Update Message infeasible route length: Anzahl der Routen, die zurückgezogen werden sollen, da sie nicht länger gültig sind (in BGP-3 über das UNREACHABLE Attribut signalisiert) infeasible routes: die Routen die zurückgezogen werden jetzt mit dem Paar: Anzahl signifikante Bits (1 Byte) und Signifikante Bits (1-4 Bytes) beschrieben - z.B. 16 / 192.100 path attributes: der AS Path wird jetzt entsprechend der neuen Regel mit sequence und set beschrieben die Netze die über diese Route erreicht werden werden jetzt mit dem Paar: Anzahl signifikante Bits (1 Byte), Signifikante Bits (1-4 Bytes) beschrieben Martin Mauve Universität Mannheim 101 BGP-4 Zusammenfassung BGP-4 ist das Aktuelle Protokoll für inter AS Routing im Internet es löst die Probleme Class B Address Depletion und Routing Table Explosion zumindest soweit, daß das Internet heute noch funktioniert dazu wird CIDR verwendet, ansonsten ist BGP-4 sehr ähnlich zu BGP-3 Martin Mauve Universität Mannheim 102 Routing Zusammenfassung Martin Mauve jedes System im Internet besitzt eine Routing Tabelle bei Endsystemen ist diese meist trivial und besteht häufig im wesentlichen nur aus dem default route Eintrag zum nächsten Router bei Routern können die Einträge manuell konfiguriert sein oder durch Interior und Exterior Gateway Protocols automatisiert bestimmt werden Interior Gateway Protocols werden zum Routing in einem Autonomen System unter einheitlicher Administration verwendet Exterior Gateway Protocols werden zum Routing zwischen Autonomen Systemen verwendet, die unterschiedliche Politiken für das Weiterleiten von Paketen haben können Universität Mannheim 103 IP Fragmentation ein IP Paket kann auf seinem Weg zum Sender Netze mit unterschiedlicher maximum transmission unit (MTU) durchqueren die MTUs sind i.d.R. kleiner als die maximale Größe eines IP Paketes (65536 Bytes) es ist also möglich, daß ein IP Paket zu groß für ein Netz ist, in das es weitergeleitet werden soll um dieses Problem transparent für höhere Schichten zu lösen gibt es IP Fragmentation Martin Mauve Universität Mannheim 104 IP Fragmentation - Terminologie IP Datagramm: eine IP Übertragungseinheit, wie sie vom Sender erzeugt wird IP Paket: ein IP Datagramm, oder ein Fragment eines fragmentierten IP Datagramms Martin Mauve Universität Mannheim 105 IP Fragmentation Unterstützung im IP Header 0 15 7 version hlength type of service identification time to live 31 total length flags protocol fragment offset header checksum source IP address destination IP address options (if any) data Martin Mauve Universität Mannheim 106 IP Fragmentation Unterstützung im IP-Header das identification Feld hat den gleichen Wert für alle Fragmente eines IP Datagramms und verschiedene Werte für verschiedene IP Datagramme das fragment offset Feld sagt aus wieweit dieses Fragment vom Anfang des IP Datagramms entfernt ist das flags Feld beinhaltet das more fragments bit, dieses ist genau dann gesetzt, wenn das IP Paket nicht das letzte für ein IP Datagramm ist das total length Feld wird nach einer Fragmentierung neu berechnet, so daß es die Länge des Fragmentes beinhaltet Martin Mauve Universität Mannheim 107 Fragmentation Considered Harmfull Fragmentierung wird im Allgemeinen als etwas sehr! schlecht angesehen: geht ein Fragment verloren, so müssen auch alle Fragmente desselben IP Datagramms verworfen werden, die beim Empfänger angekommen sind! Es besteht keine Möglichkeit lediglich das verlorengegangene Fragment nocheinmal zu übertragen - der Sender weis nichts von der Fragmentierung. Martin Mauve Universität Mannheim 108 Vermeidung der Fragmentierung Path MTU Discovery Martin Mauve im flags Feld im IP Header gibt es ein Don‘t Fragment Bit (DF Bit) ist das DF Bit gesetzt, so fragmentiert ein Router das Paket nicht, sondern verwirft es, wenn es größer als die MTU des Netzes ist, in welches es weitergeleitet werden soll außerdem schickt der Router einen ICMP Unreachable Error (Fragmentation Required) an den Sender des Paketes zurück dieser Error beinhaltet die MTU die zu klein für das Paket war der Sender verringert daraufhin die Größe seiner IP Pakete an den Empfänger Universität Mannheim 109 ICMP Unreachable Error Fragmentation Required 0 15 7 31 IP header (20 bytes) type (3) code (4) unused (0) checksum MTU of next-hop network IP header (incl. options) + first 8 bytes of original IP packet data Martin Mauve Universität Mannheim 110 Fragmentation Demo mit -s kann unter LINUX die Größe eines ping Paketes festgelegt werden dann kann man mit tcpdump nachsehen was passiert wir verwenden diesmal ein nettes GUI frontend zu tcpdump mit dem Name ethereal mit -D kann man das don‘t fragment Bit setzen, dies bringt jedoch nicht viel, da meist die MTU des LAN der Engpaß ist, d.h. man sieht nichts da das Paket nie den Rechner verläßt Martin Mauve Universität Mannheim 111