it-swarm.com.de

Was genau kann dazu führen, dass der Bellman-Ford-Algorithmus unendlich zählt

Nach allem, was ich verstehen kann, tritt das Zählen bis unendlich auf, wenn ein Router eine andere alte Information zuführt, die sich durch das Netzwerk in Richtung unendlich weiter ausbreitet. Nach dem, was ich gelesen habe, kann dies definitiv vorkommen, wenn ein Link entfernt wird.

enter image description here

In diesem Beispiel konvergiert der Bellman-Ford-Algorithmus für jeden Router, und er enthält Einträge für einander. R2 wird wissen, dass R3 zu einem Preis von 1 erreicht werden kann, und R1 weiß, dass es über R2 zu R3 zu einem Preis von 2 gelangen kann. 

Wenn die Verbindung zwischen R2 und R3 getrennt wird, weiß R2, dass es über diese Verbindung nicht mehr zu R3 gelangen kann, und entfernt es von seiner Tabelle. Bevor es Updates senden kann, kann es sein, dass es ein Update von R1 erhält, das bekannt gibt, dass R3 zu einem Preis von 2 kosten kann. R2 kann zu einem Preis von 1 zu R1 gelangen, sodass eine Route aktualisiert wird R3 über R1 zu einem Preis von 3. R1 erhält später Updates von R2 und aktualisiert seine Kosten auf 4. Sie füttern dann gegenseitig schlechte Informationen in Richtung unendlich.

Eine Sache, die ich an einigen Stellen erwähnt habe, ist, dass es andere Ursachen für das Zählen auf unendlich gibt als nur einen Link, der offline geht, wie beispielsweise das Ändern der Kosten eines Links. Ich habe darüber nachgedacht und aus dem, was ich sagen kann, scheint mir, dass die Kosten für eine Verbindung das Problem verursachen könnten. Ich sehe jedoch nicht, dass es möglich ist, die Kosten zu senken, um das Problem zu verursachen.

Wenn in dem obigen Beispiel beispielsweise der Algorithmus konvergiert und R2 eine Route zu R3 zu Kosten von 1 hat, und R1 zu R2 über R2 zu Kosten von 2. hat, steigen die Kosten zwischen R2 und R3 auf 5. Dann würde dies dasselbe Problem verursachen. R2 könnte ein Update von R1 erhalten, das Kosten von 2 annimmt, und seine Kosten über R1, R1 in 3 ändern, dann seine Route über R2 in Kosten von 4 ändern und so weiter. Wenn jedoch die Kosten auf einer konvergierten Route sinken, führt dies nicht zu einer Änderung. Ist das richtig? Es sind steigende Kosten zwischen Verbindungen, die das Problem verursachen können, und nicht die Kosten senken. Gibt es andere mögliche Ursachen? Würde ein Router offline geschaltet werden, so wäre dies ein Link, der ausgeht?

13
Cory Gross

Schauen Sie sich dieses Beispiel an:

enter image description here

Die Routing-Tabelle lautet:

    R1   R2    R3
R1  0    1     2
R2  1    0     1
R3  2    1     0

Nehmen wir jetzt an, die Verbindung zwischen R2 und R3 ist unterbrochen (Sie können die Leitung kaputtgehen oder einen mittleren Router dazwischen).

Nach einer Iteration des Sendens der Informationen erhalten Sie die folgende Routing-Tabelle:

    R1   R2    R3
R1  0    1     2
R2  1    0     3
R3  2    3     0

Dies ist darauf zurückzuführen, dass R2 und R3 nicht mehr miteinander verbunden sind. "R2" denkt, "es" kann Pakete über R1, die einen Pfad von 2 haben, an R3 umleiten. Dadurch erhält sie einen Pfad mit Gewicht 3.

Nach einer zusätzlichen Iteration "sieht" R1, dass R2 teurer ist als früher, daher ändert es seine Routing-Tabelle:

    R1   R2    R3
R1  0    1     4
R2  1    0     3
R3  4    3     0

und so weiter, bis sie auf den korrekten Wert konvergieren - dies kann jedoch eine lange Zeit dauern, insbesondere wenn (R1, R3) teuer ist.
Dies wird als "Count to Infinity" bezeichnet (wenn w(R1,R3)=infinity und der einzige Pfad ist - es wird immer weiter gezählt).


Wenn die Kosten zwischen zwei Routern steigen, wird dasselbe Problem auftreten (in diesem Beispiel wird angenommen, dass w(R2,R3) auf 50 steigt). Das Gleiche wird passieren - R2 wird versuchen, über R3 nach R1 zu routen, ohne zu "erkennen", dass es auch von (R2,R3) abhängt, und Sie erhalten die gleichen ersten Schritte und konvergieren, sobald Sie die richtigen Kosten gefunden haben. 
Wenn jedoch die Kosten sinken - dies wird nicht passieren, da die neuen Kosten besser sind als die aktuellen - und der Router R2 mit demselben Routing mit niedrigeren Kosten bleibt und nicht versucht, durch R1 zu routen.

25
amit

Laut Wikipedia:

RIP verwendet den Split Horizon mit Poison Reverse-Technik, um die Wahrscheinlichkeit für die Bildung von Schleifen zu reduzieren, und verwendet eine maximale Anzahl von Hops, um dem "Count-to-Infinity" -Problem entgegenzuwirken. Durch diese Maßnahmen wird in einigen, aber nicht in allen Fällen, die Bildung von Routing-Schleifen vermieden. Durch das Hinzufügen einer Haltezeit (das Zurückweisen von Routenaktualisierungen für einige Minuten nach einem Routenrückzug) wird in praktisch allen Fällen eine Schleifenbildung vermieden, aber die Konvergenzzeiten werden signifikant erhöht.

In jüngerer Zeit wurde eine Reihe schleifenfreier Distanzvektorprotokolle entwickelt - bemerkenswerte Beispiele sind EIGRP, DSDV und Babel. Diese vermeiden in allen Fällen die Bildung von Schleifen, leiden jedoch unter einer erhöhten Komplexität, und ihre Bereitstellung wurde durch den Erfolg von Verbindungsstatus-Routingprotokollen wie OSPF verlangsamt.

http://en.wikipedia.org/wiki/Distance-vector_routing_protocol#Workarounds_and_solutions

2

Der Bellman-Ford-Algorithmus ist nicht Teil der Frage, aber dies ist eine vereinfachte Antwort. Hier geht.

Beachten Sie das Bild beim Originalposter. Es gibt R 1, R 2 und R 3; die Router 1, 2 bzw. 3 darstellen. 

Jede Verbindung kostet 1 und jeder Sprung kostet 1. Für den Sprung von zwei Routern (Beispiel: R1 bis R3) sind Kosten von 2 erforderlich.

Jeder Router verfolgt die Kosten und aktualisiert die Informationen. Wenn jedoch ein Wert fehlt (z. B. eine fehlende Verknüpfung zwischen Routern), wird der Hop-Zähler entfernt und bei einer Aktualisierung der Routing-Tabellen von einem anderen Router gefüllt.

Beispiel:

Wenn die Verbindung von Router 3 zu Router 2 ausfällt, entfernt Router 2 die Route von der Tabelle. Router 1 glaubt immer noch, dass es zwei Hops dauert, um zu Router 3 zu gelangen. Dies wird auf Router 2 repliziert, und nun glauben beide Router, dass es zwei Hops braucht, um zu Router 3 zu gelangen.

Router 1 macht einige einfache Berechnungen: "Wenn ich einen Sprung brauche, um zu Router 2 zu gelangen, und Router 2 zwei Hops braucht, um zu Router 3 zu gelangen, sollte ich drei Hops benötigen, um zu Router 3 zu gelangen. Brillant!" Router 2 führt eine ähnliche Berechnung aus und fügt einen Hop zu seiner Route hinzu und so weiter. 

So funktioniert die Schleife. 

1

Halten Sie gedrückt:

  • Mit zunehmender Metrik verzögern Sie die Ausbreitung von Informationen

Einschränkungen:

  • Verzögert die Konvergenz 
  • Vollständige Pfadinformationen in der Routenanzeige 
  • Explizite Abfragen für Schleifen (z. B. DUAL) Geteilter Horizont 
  • Werben Sie niemals für ein Reiseziel durch den nächsten Sprung
    • A wirbt nicht von C bis B
  • Gift umgekehrt: Senden Sie negative Informationen, wenn Sie über den nächsten Hop ein Ziel bewerben
  • A wirbt für C bis B mit einer Metrik von.
    • Einschränkung: Funktioniert nur für "Schleifen" der Größe 2
0
kosai