Datenkommunikation - FET
Datenkommunikation - FET
Datenkommunikation - FET
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Routing-Algorithmen<br />
Die beiden Verfahren Distanz-Vektor-Routing und Link-State-Routing sind in der Praxis sehr wichtig.<br />
• Beim Distanz-Vektor-Verfahren wird ein kürzester Weg gewählt, der die kleinstmögliche Anzahl von Zwischensystemen<br />
(hops) enthält.<br />
• Beim Link-State-Verfahren ist jeder Teilstrecke (link) ein Gewicht nach einer festgelegten Metrik (z. B. Kosten, Distanz,<br />
Bandbreite, Auslastung) zugeordnet. Ein kürzester Weg ist dadurch gekennzeichnet, dass die Summe der Gewichte minimal<br />
ist.<br />
Distanz-Vektor-Algorithmus<br />
Der Distanz-Vektor-Algorithmus (auch als Bellman-Ford-Algorithmus bekannt) wird für die verteilte Berechnung von<br />
Routing-Tabellen verwendet. Dabei berechnet zunächst jeder Knoten für sich eine Routing-Tabelle. Die Einträge sind Tupel,<br />
die - wie der Name des Verfahrens andeuten soll - je eine Adresse (Vektor) und die zugehörige Distanz enthalten. Die Tupel<br />
werden den benachbarten Knoten mitgeteilt und zur Aktualisierung (update) deren Routing-Tabellen genutzt. Nach einiger<br />
Zeit (Konvergenzdauer) besitzen alle Knoten optimale Routing-Tabellen. Das Distanz-Vektor-Verfahren wird periodisch im<br />
Abstand weniger Sekunden durchgeführt. Damit kann der Ausfall einzelner Knoten oder Kanten (Übertragungsstrecken)<br />
berücksichtigt werden. Ein Knoten, der keine periodische Routing-Information liefert, gilt als ausgefallen. Die umgebenden<br />
Knoten ändern daraufhin ihre Routing-Tabellen so, dass der ausgefallene Knoten umgangen wird, soweit bestehende Pfade<br />
dies zulassen.<br />
Beim Bellman-Ford-Algorithmus ist jede Kante des Graphen mit einem Gewicht belegt, die Distanz zum Ziel ist als Summe<br />
der Gewichte auf dem Weg zum Ziel definiert. Die Routing-Tabelle enthält für jeden Eintrag ein Feld, das die Distanz zum<br />
Zielknoten (auf einem Pfad entsprechend dem angegebenen Next Hop) enthält. Jeder Knoten sendet die ihm bekannten Wertepaare<br />
(Ziel, Distanz) an seine Nachbarn. Wenn ein Knoten eine Nachricht von seinem Nachbarn erhält, prüft er alle Einträge<br />
und ändert seine Routing-Tabelle, falls der Nachbar einen kürzeren Pfad zu einem Ziel kennt.<br />
Ein Vorteil des Distanz-Vektor-Algorithmus ist seine Einfachheit. Der größte Nachteil liegt in der langen Konvergenzdauer.<br />
Dies führt dazu, dass bei raschen Änderungen der Topologie Inkonsistenzen in den Routing-Tabellen entstehen, die zu großen<br />
Verzögerungen und zu Paketverlusten führen können.<br />
Link-State-Routing, Dijkstra-Algorithmus<br />
Das Link-State-Routing (auch Link-Status-Routing) wird auch als SPF-Routing (Shortest Path First) bezeichnet, obwohl<br />
andere Routing-Verfahren ebenfalls kürzeste Pfade ermitteln. Das Verfahren beinhaltet - wie das Distanz-Vektor-Verfahren -<br />
eine verteilte Berechnung des Routing. Die zwischen den Knoten ausgetauschten Nachrichten beinhalten den Status einer<br />
Verbindung zwischen zwei Knoten, der durch ein Gewicht in einer bestimmten Metrik ausgedrückt wird. Diese Nachrichten<br />
werden per Broadcast an alle Knoten gesendet. Damit besitzt jeder Knoten die globale und vollständige Zustandsinformation<br />
über das Netz. Jeder Knoten kann nun für sich einen Graphen für das Netz erstellen. Anschließend berechnet jeder Knoten<br />
seine Routing-Tabelle mit Hilfe des Dijkstra-Algorithmus. Das Routing kann also - wie beim Distanz-Vektor-Verfahren - an<br />
den aktuellen Zustand des Netzes adaptiert werden. Die Adaption findet schneller statt, da alle Knoten gleichzeitig über Statusänderungen<br />
informiert werden.<br />
Die Grundidee des Link-State-Routing geht davon aus, dass zunächst die Topologie des Netzes ermittelt wird. Dazu sind die<br />
folgenden Schritte notwendig:<br />
• Jeder Router kümmert sich selbst darum, seine Nachbarn und ihre Namen kennen zu lernen.<br />
• Jeder Router bildet ein LSP (Link State Packet) mit den Namen seiner Nachbarn und den Gewichten der zugehörigen<br />
Links.<br />
• Die LSP werden an alle Router verschickt, jeder Router puffert die zuletzt erhaltenen LSP aller anderen Router.<br />
• Damit kennt jeder Router die vollständige Topologie des Netzes. Dies ermöglicht den einzelnen Routern die Berechnung<br />
von Pfaden zu jedem Ziel.<br />
Der Dijkstra-Algorithmus wird nun zur Berechnung der kürzesten Wege ausgeführt. Der Algorithmus geht von einem bestimmten<br />
Knoten, dem Quellenknoten, aus und berechnet eine Routing-Tabelle für diesen Knoten. In der Routing-Tabelle<br />
sind für alle möglichen Zielknoten die nächsten Knoten, die in Richtung auf den Zielknoten zu durchlaufen sind, und die<br />
Distanz D von jedem Knoten zum Quellenknoten enthalten. Für jeden Knoten im Netz ist eine Routing-Tabelle zu ermitteln.<br />
Für den Dijkstra-Algorithmus sind nebst der Beschreibung des Graphen einige Datenstrukturen erforderlich. Die Knoten<br />
werden von 1 bis n nummeriert, damit kann die Knotennummer als Index zum Datenzugriff verwendet werden. D ist ein<br />
Vektor, dessen i-te Komponente den aktuellen Wert der kürzesten Distanz vom Quellenknoten zum Knoten i enthält. Die i-te<br />
Komponente des Vektors R puffert den nächsten Knoten (next hop), der auf dem Weg zum Knoten i zu durchlaufen ist. Die<br />
Menge S der noch zu untersuchenden Knoten kann als doppelt verkettete Liste von Knotennummern gepuffert werden.<br />
Institut für Kommunikationsnetze - TU Wien - o. Univ. Prof. Dr. Harmen R. van As - Vorlesung <strong>Datenkommunikation</strong> - Teil 3.2b 48