Wikipedia · einfach zusammengefasst · Stand
Routing Information Protocol
Das Routing Information Protocol (RIP) ist ein Routing-Protokoll auf Basis des Distanzvektoralgorithmus, das innerhalb eines autonomen Systems (z.
Inhalt6 Abschnitte
Grundidee und Einordnung
Das Routing Information Protocol (RIP) ist ein Routing-Protokoll, mit dem Router innerhalb eines autonomen Systems, zum Beispiel in einem LAN, ihre Routingtabellen automatisch erstellen. Es gehört zu den Interior Gateway Protocols (IGP), also zu Protokollen für die Wegwahl innerhalb eines Netzes oder Verwaltungsbereichs. RIP arbeitet auf Basis des Distanzvektoralgorithmus: Router tauschen Informationen darüber aus, welche Netze sie erreichen können und wie weit diese entfernt sind.
Im TCP/IP-Protokollstapel nutzt RIP UDP als Transportprotokoll und arbeitet mit IP, also IPv4 oder IPv6. RIP wurde zuerst 1988 in RFC 1058 definiert. Später wurde es mehrfach erweitert; RIP Version 2 ist in RFC 2453 beschrieben. Für IPv6 wurde RIP unter dem Namen RIPng, „RIP next generation“, in RFC 2080 aus dem Jahr 1997 erweitert. Beide klassischen RIP-Versionen werden noch eingesetzt, gelten aber als technisch veraltet und wurden vielfach durch neuere Protokolle wie Open Shortest Path First (OSPF) oder IS-IS abgelöst.
Arbeitsweise
Wenn ein Router startet, kennt er zunächst nur die direkt angeschlossenen Netzwerke. Auf jedem für RIP konfigurierten Interface sendet er deshalb eine Anfrage an seine Nachbarn und bittet um deren vollständige Routingtabellen. Aus den Antworten berechnet er erste Einträge für seine eigene Routingtabelle. Danach verschickt er ein sogenanntes triggered Update, also eine sofort ausgelöste Aktualisierung, an seine RIP-Nachbarn, damit auch diese über neue Wege informiert werden.
Damit Änderungen wie der Ausfall oder Start eines Routers erkannt werden, wiederholt RIP das Versenden der Routingtabellen regelmäßig. Dieses Versenden heißt Advertisement. Bei IP geschieht es alle 30 Sekunden. Dabei wird immer die gesamte Routingtabelle verschickt, aber nur an direkte Nachbarn. Da die Advertisements über UDP gesendet werden, ist die Übertragung nicht zuverlässig garantiert.
Die Kosten eines Weges heißen bei Routing-Protokollen Metrik. RIP verwendet als Metrik nur den Hop Count, also die Anzahl der Router, die ein Paket auf dem Weg zum Zielnetz durchlaufen muss. Die Bandbreite möglicher Wege wird nicht berücksichtigt. Bei RIP für IPX wird zusätzlich der Tick-Count verwendet, der die Verzögerung eines Pakets durch alle Router bis zum Zielnetz beschreibt.
Ein RIP-Router kennt im Unterschied zu OSPF und NLSP nur seine direkten Nachbarn. Nach Änderungen im Netz dauert es daher, bis alle Router wieder dieselbe Sicht auf das Netzwerk haben. Dieser Zustand heißt Konvergenz. Durch Nutzung des BFD-Protokolls mit RIP lassen sich Konvergenzzeiten im Millisekundenbereich erzielen.
Grenzen und typische Probleme
Die wichtigste Einschränkung von RIP ergibt sich daraus, dass Router nur ihre direkten Nachbarn kennen. Dadurch können hohe Konvergenzzeiten entstehen. Außerdem gibt es das Count-to-Infinity-Problem: Router erhöhen bei bestimmten Fehlerfällen die Entfernung zu einem Ziel schrittweise, bis die Route als unerreichbar gilt. Bei RIP bedeutet „Infinität“, also Unerreichbarkeit, den Hop Count 16.
RIP erlaubt deshalb nur Netze mit einer maximalen Länge von 15 Routern. Der längste Pfad darf also höchstens über 15 Router führen. Weitere Nachteile hängen von der Version ab: lange Konvergenzzeit, Eignung nur für kleine bis mittlere Netze, bei RIPv1 Flutung des Netzes durch den Austausch ganzer Routingtabellen über Broadcast, bei IP alle 30 Sekunden und bei IPX alle 60 Sekunden, außerdem fehlende Subnetz-Unterstützung und keine Authentifizierung.
Zur Begrenzung bestimmter Schleifenprobleme werden Mechanismen wie Split Horizon, Triggered Updates und bei RIP mit IP Split Horizon with Poisoned Reverse verwendet. Split Horizon verhindert vereinfacht gesagt, dass ein Router eine Route an den Nachbarn zurückmeldet, von dem er sie gelernt hat. Mit dem Erweiterungsalgorithmus RIP-MTI lassen sich Routing-Loops vollständig erkennen, sodass das Count-to-Infinity-Problem nicht mehr auftritt.
Beispiel für Hop Count
Ein einfaches Netz besteht aus Netz 1, Router A, Router B und Router C in einer Reihe. Netz 1 wird von Router A mit Hop 0 erreicht, weil es direkt angeschlossen ist. Router B erreicht Netz 1 mit Hop 1 über Router A. Router C erreicht Netz 1 mit Hop 2 über Router B und Router A.
Fällt Router A aus, teilt Router B beim nächsten periodischen Update an Router C den Hop Count 16 mit. Das bedeutet Nichterreichbarkeit oder eine „unendliche Route“. Wenn Router B danach ein Paket oder eine Routinginformation eines anderen Routers erhält, der Netz 1 noch erreichen kann und einen niedrigeren Hop Count angibt, aktualisiert Router B seine Routingtabelle entsprechend.
Ein Problemfall entsteht, wenn Netz 1 ausgefallen ist, aber Router C noch veraltete Informationen besitzt und diese an Router B sendet, bevor die Nichterreichbarkeit vollständig im Netz verbreitet wurde. Router B kann dann fälschlich annehmen, Netz 1 über Router C mit Hop Count 3 erreichen zu können, und trägt später Hop Count 4 ein. Beim nächsten Austausch übernimmt Router C diese Information und trägt Hop Count 5 ein. So erhöhen sich die Werte langsam bis 16, bis die Nichterreichbarkeit überall erkannt ist.
Versionen
Es gibt drei Versionen von RIP: RIP(v1), RIPv2 und RIPng. Der Bellman-Ford-Algorithmus, auf dem RIP beruht, wurde 1967 erstmals in einem Computernetzwerk als erstes Routingprotokoll für das ARPANET verwendet.
RIPv1 ist die ursprüngliche Spezifikation aus RFC 1058. Es verwendet kein CIDR und überträgt in den regelmäßigen Routinginformationen keine Angaben zu Subnetzen. Deshalb müssen alle Netze die Größe der zugehörigen Netzklasse haben. RIPv1 sieht außerdem keine Authentifizierung vor, wodurch Angriffe auf das Routing eines Netzes möglich sind. Auch RIPv1 begrenzt die Zahl der möglichen Hops zwischen Routern auf 15.
RIPv2 wurde 1993 eingeführt und beseitigte einige Einschränkungen. Es sollte den Übergang von RIPv1 erleichtern, indem Paketformat und Transportmechanismus weitgehend beibehalten wurden. Der wichtigste Unterschied ist, dass RIPv2 Subnetzinformationen weitergeben kann und damit zu einem classless Protokoll mit CIDR wird. Außerdem nutzt RIPv2 Multicast-Adressen für Updates und bietet Authentifizierungsmöglichkeiten. Viele Eigenschaften von RIPv1 bleiben aber erhalten, darunter die Grenze von 15 Hops, Mechanismen zur Schleifenunterdrückung und triggered Updates für schnellere Konvergenz.
RIPng ist in RFC 2080 definiert und erweitert RIP für die Unterstützung von IPv6.
Paketformat und Implementierung
Ein RIP-v1-Paket enthält Felder wie command, version, mehrere mit „must be zero“ bezeichnete Felder, den address family identifier, die IP address und die metric, also die Entfernung zum jeweiligen Netz. Die Tabelle ist 4 Bytes breit. Ein Paket kann Einträge für mehrere Netze enthalten; die Blöcke für net2 bis net25 sind optional.
Bei RIP v2 besteht das Paket aus command, version, einem Nullfeld und RIP-Einträgen von jeweils 20 Bytes. Abhängig vom Wert im Feld version kann ein RIP-Eintrag ein RIPv1-Eintrag, ein RIPv2-Eintrag oder ein Authentifizierungs-Eintrag sein. Ein RIPv2-Eintrag mit Subnet Mask enthält address family identifier, route tag, IP Address, Subnet Mask, Next Hop und Metric. Ein Authentifizierungs-Eintrag enthält 0xFFFF, Authentication Type und Authentication mit 16 Bytes. Als freie Software-Implementierung nennt der Artikel Quagga, eine Weiterentwicklung von Zebra.