31.10.2012 Aufrufe

Datenkommunikation - FET

Datenkommunikation - FET

Datenkommunikation - FET

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!