Warum verwendet dieser Router nicht mehrere Routen mit gleichen Kosten von OSPF?

16

Ein Brocade-Router mit NetIron 5.2 und eine Dynamips-Emulation mit IOS 12.4 verwenden in einer scheinbar sehr einfachen Konfiguration nicht zuverlässig die gleichen Kosten. Ich sage "zuverlässig", weil ich das erwartete Verhalten des Brocade sehr kurz beobachtet habe, aber es war nach einer längeren Zeit der Inaktivität und verschwand, sobald ich das System gestört habe.

Falls relevant, richte ich ein Anycast-Ziel für einen zustandslosen Netzwerkdienst ein. Hierbei handelt es sich um eine standortspezifische Konfiguration mit geringer oder keiner Diversität der Netzwerkpfadlänge. Der Zweck der Anycast-Funktion besteht daher hauptsächlich in der Failover-Redundanz und teilweise in der Lastverteilung. Meine Frage betrifft die Load-Sharing-Funktion.

Mein Prototyp-Netzwerk sieht so aus.

R1 <--N1--> Rcore <--N2--> R2

R1und R2werben Sie über OSPF für das Anycast-Ziel. Wenn Rcoredie Kosten für das Gerät N1und die N2Schnittstellen identisch sind und das Anycast-Ziel auf jedem der anderen Router dieselben Kosten hat, würde ich erwarten, dass die RcoreRoutingtabelle zwei Pfade mit gleichen Kosten enthält . Ich zumindest nicht immer und auch nicht vorhersehbar. Warum nicht?

Mögliche relevante Details sind unter anderem die folgenden.

  • Rcoreein ABR verbindet N1und N2, die in separaten Bereichen NSSA ist, an das Grundgerüst (nicht gezeigt).
  • Die Überprüfung der RcoreLSDB bestätigt, dass die erwarteten LSAs von R1und R2korrekt installiert sind und das Anycast-Ziel mit der richtigen Metrik enthalten.

Ich habe drei mögliche Erklärungen in Betracht gezogen.

  1. Ich verstehe nicht, wie ECMP auf diesen Plattformen konfiguriert und betrieben wird. Dies ist wahrscheinlich und ich hoffe, hier eine Aufklärung zu finden, die ich in den Herstellerdokumentationen nicht finden konnte.
  2. Ich verstehe die Interaktion zwischen OSPF-Bereichen, ECMP, Anycast usw. nicht. Ich halte dies nicht für sehr wahrscheinlich, aber ich bin trotzdem bereit, etwas zu lernen.
  3. Diese beiden Anbieter-Implementierungen leiden unter demselben Fehler oder derselben Fehlfunktion oder etwas anderem. Ich nehme an, es könnte passieren.

Bearbeiten Beispielkonfiguration und Ausgabe für die Dynamips / Dynagen-Implementierung hinzugefügt.

Configs

Router R1

!
version 12.4
!
hostname R1
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.1.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.1.0.2
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.1
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
!
line console 0
 exec-timeout 0 0
!
end

Router R2

!
version 12.4
!
hostname R2
!
interface Loopback0
 ip address 1.1.1.1 255.255.255.255
 ip ospf cost 1
!
interface FastEthernet0/0
 ip address 10.2.0.2 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 router-id 10.2.0.2
 log-adjacency-changes
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 1.1.1.1 0.0.0.0 area 0.0.0.2
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Router Rcore

!
version 12.4
!
hostname Rcore
!
interface Loopback0
 ip address 10.0.0.1 255.255.255.255
 ip ospf cost 4
!
interface FastEthernet0/0
 ip address 10.1.0.1 255.255.255.252
 ip ospf cost 2
!
interface FastEthernet0/1
 ip address 10.2.0.1 255.255.255.252
 ip ospf cost 2
!
router ospf 1
 log-adjacency-changes
 area 0.0.0.1 nssa no-summary
 area 0.0.0.2 nssa no-summary
 passive-interface Loopback0
 network 10.0.0.1 0.0.0.0 area 0.0.0.0
 network 10.1.0.0 0.0.0.3 area 0.0.0.1
 network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
 exec-timeout 0 0
!
end

Ausgabe

Router Rcore

Router LSA von R1

Rcore#sh ip ospf database router 10.1.0.2

            OSPF Router with ID (10.0.0.1) (Process ID 1)

        Router Link States (Area 0.0.0.1)

  LS age: 1618
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.1.0.2
  Advertising Router: 10.1.0.2
  LS Seq Number: 80000002
  Checksum: 0x726F
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 1.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.1.0.2
     (Link Data) Router Interface address: 10.1.0.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 2

Router LSA von R2

Rcore#sh ip ospf database router 10.2.0.2

            OSPF Router with ID (10.0.0.1) (Process ID 1)

        Router Link States (Area 0.0.0.2)

  LS age: 1766
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.2.0.2
  Advertising Router: 10.2.0.2
  LS Seq Number: 80000002
  Checksum: 0x8A53
  Length: 48
  Number of Links: 2

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 1.1.1.1
     (Link Data) Network Mask: 255.255.255.255
      Number of TOS metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Transit Network
     (Link ID) Designated Router address: 10.2.0.2
     (Link Data) Router Interface address: 10.2.0.2
      Number of TOS metrics: 0
       TOS 0 Metrics: 2

Auszug aus der Routing-Tabelle

Rcore#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 10.1.0.2 on FastEthernet0/0, 00:30:54 ago
  Routing Descriptor Blocks:
  * 10.1.0.2, from 10.1.0.2, 00:30:54 ago, via FastEthernet0/0
      Route metric is 3, traffic share count is 1
neirbowj
quelle
Welcher Routentyp ist der Anycast?
Nikotin
@nicotine: Die Anycast-Adresse ist eine sekundäre Adresse auf der Loopback-Schnittstelle. In der neuesten Permutation dieser Konfiguration wird sie als Stub-Netzwerk in einem Router-LSA ausgeführt. Konfigurieren Sie die folgenden Snippets und Terminal-Grabs.
Neirbowj
Ich habe versucht, die Konfiguration zu reduzieren und so viel wie möglich auszugeben, aber nicht zu viel. Vorschläge zur Verbesserung der Informationsdichte sind willkommen.
Neirbowj
Das sollte funktionieren. Können Sie die Ausgabe der folgenden Befehle veröffentlichen: show ip protocols show ip ospf rib debug ip routing Probieren Sie diese Befehle in Rcore aus. Dies sollte uns einige Hinweise geben, warum keine doppelten Routen installiert sind. Ihre OSPF-DB-Ausgabe sieht für mich gut aus.
Daniel Dib
Wenn Sie den Link der aktiven Route bouncen, wird die ursprüngliche Route trotzdem bevorzugt? Beispiel: In Ihrer CLI-Ausgabe wird die aktive Route in Richtung 10.1.0.2 angezeigt. Wenn Sie die Schnittstelle auf 10.1.0.2 so lange geschlossen haben, bis die OSPF-Nachbarschaft unterbrochen ist, wird sie wieder online geschaltet. Wird die ursprüngliche Route in Richtung 10.1.0.2 erneut installiert?
Bigmstone

Antworten:

7

Mein erster Gedanke wäre, dass OSPF denkt, dass es die gleiche LSA ist und nicht einfach das gleiche Präfix. Ich weiß nicht viel über Brokat, aber mit den LSA-Ausgängen der Cisco-Box könnte ich Ihnen wahrscheinlich mehr sagen.

Im Allgemeinen werden für Cisco, wenn die Routen im Protokoll gleich sind, beide in der Routing-Tabelle angezeigt. In der Routingtabelle werden standardmäßig beide Pfade installiert und ECMP ausgeführt. Wenn sich die Metriken oder Protokolle unterscheiden, werden sie nicht ECMP. Dies würde auch für verschiedene LSAs für dasselbe Präfix gelten.

Pete Lumbis
quelle
Ja - die Datenbankeinträge sollten uns sagen - haben sie die gleiche Weiterleitungsadresse und den gleichen Werberouter?
Nikotin
Ich werde heute Nachmittag daran arbeiten, eine Musterausgabe zu bekommen.
Neirbowj
6

Ich überlege, ob ECMP für Anycast Sinn macht. Das Routing sollte Anycast an das logisch nächstgelegene Ziel leiten, an dem ein Host dem anderen vorgezogen würde. Selbst wenn die Anycast-Hosts gleich weit voneinander entfernt sind, würde ich davon ausgehen, dass dies auch weiterhin zutrifft. Was die ECMP-Lastverteilung anbelangt, denke ich, dass eine / 32-Verteilung pro Ziel unmöglich ist. Möglicherweise gibt es Load-Sharing-Algorithmen, die die Quelle berücksichtigen. Per-Packet scheint riskant, auch für DNS. Ich glaube, dass die meisten Standard-Anycast-Lösungen ospf auf dem Host ausführen.

Hat ein bisschen gesucht, aber der folgende Auszug aus rfc2178 bestätigt die Ursache.

16.8. Kostengünstiger Mehrweg

Das OSPF-Protokoll verwaltet mehrere Routen zu gleichen Kosten zu allen Zielen. Dies geht aus den obigen Schritten zur Berechnung der Routing-Tabelle und der Definition der Routing-Tabellenstruktur hervor.

Jede der mehreren Routen ist vom gleichen Typ (Intra-Bereich, Inter-Bereich, Typ 1 extern oder Typ 2 extern), kostet und hat den gleichen zugeordneten Bereich . Jede Route gibt jedoch einen separaten Next-Hop- und Advertising-Router an.

Dennis Olvany
quelle
1
Hmm, ich habe einen einzelnen Bereich abgearbeitet und ECMP ist auf dem Kern vorhanden. Obwohl ich immer noch behaupten würde, dass es mit a / 32 nutzlos ist. Vielleicht ist Folgendes relevant: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany
Dies besagt, dass der Bereich eines der Kriterien für ECMP ist. Sieht aus wie verschiedene Bereiche der Dealbreaker sein können.
Dennis Olvany
OSPF auf dem Host - ja, das ist das Ziel. / 32 wird als sekundäre Adresse im Loopback zugewiesen. Ich beschäftige mich auch mit der Konfiguration der Lastverteilung, aber das hängt in erster Linie von ECMP ab.
Neirbowj
5

Ich kann dies in meinem Labor mit 12.4 (24) nicht reproduzieren. Gleiche Topologie, RCore Area 0 Loopback, R1 mit lo0 und Schnittstelle in Area 1, R2 mit lo0 und Schnittstelle in Area 2 (beide NSSA), umverteilte Route wird für ECMP auf Rcore abgeholt:

Routing entry for 10.20.0.0/16
  Known via "ospf 1", distance 110, metric 20, type NSSA extern 2, forward metric 6477
  Last update from 2.2.2.6 on Serial1/1, 00:02:23 ago
  Routing Descriptor Blocks:
    2.2.2.6, from 2.2.2.21, 00:02:23 ago, via Serial1/1
      Route metric is 20, traffic share count is 1
  * 1.1.2.1, from 1.1.1.1, 00:06:31 ago, via Serial1/0
      Route metric is 20, traffic share count is 1

Möglichkeiten, die ich mir vorstellen kann: Abhängig davon, wie die Route in OSPF eingeht und welcher OSPF-Routentyp verwendet wird, werden die Kosten für den ASBR-Router möglicherweise nicht in den Routenauswahlprozess einbezogen (damit ECMP funktioniert, beide Routenkosten) , und die Kosten für ASBR müssen übereinstimmen). Es kann hilfreich sein, die Metrik des tatsächlichen LSA für beide zu sehen.

Ich konnte dies unter IOS reproduzieren, indem ich Ihre Konfiguration nachahmte - indem ich den Anycast auf einer Schnittstelle platzierte und die Schnittstelle in einem Bereich platzierte. Wenn Sie ECMP benötigen, sollten Sie die Route in OSPF neu verteilen, da dies anscheinend funktioniert.

Nikotin
quelle
FWIW, das Bild in meiner Dynamips-Instanz ist 12,4 (25d) auf einer 7200. Ihre Ergebnisse zeigen "Bekannt über ... NSSA extern 2", aber meine zeigen "intra area". Das ist ein guter Hinweis.
Neirbowj
Redistribute Connected würde dies erzeugen, anstatt den Netzwerkbefehl oder ip ospf unter der Schnittstelle zu verwenden.
Daniel Dib
@DanielDib Ich bin dabei, die Permutationen von Normal / Stub / NSSA, Intra-Area / External und mindestens Cisco + Dynamips / Brocade zu erschöpfen. Ich werde es auch mit Juniper versuchen, wenn ich Zeit habe.
Neirbowj
3

Je nachdem, welche Brocade-Hardware Sie verwenden (MLX? CER? XMR?), Möchten Sie möglicherweise die Software aktualisieren. In den Softwarebäumen 5.3 (und 5.4, abhängig von Ihrer Hardware) wurden mehrere Fehler behoben, deren Symptome darauf zurückzuführen waren, dass die OSPF-Routenkosten nicht ordnungsgemäß aktualisiert wurden. Ich kenne nicht alle Kriterien für das Anzeigen der Fehler, aber einige davon waren: Wenn die Kosten für einen 1gig-Port oder eine Loopback-Schnittstelle auf einem Router mit OSPF geändert wurden, wurden die Änderungen nicht verarbeitet und die Kosten nicht aktualisiert .

Mir ist klar, dass dies auf den Plattformen von zwei Herstellern zu sehen ist, sodass dies mit größerer Wahrscheinlichkeit ein Konfigurationsproblem darstellt. Mir ist auch klar, dass der alte Tech-Support-Punkt "update your software" oft nur eine Augenweide wert sein kann. Das heißt, es könnte etwas zu beachten sein.

GoatAtWork
quelle
Ich werde das im Hinterkopf behalten. R1 / R2 legt jedoch die Kosten fest, Rcore erkennt die Kosten und Rcore weist die ECMP-Symptome auf.
Neirbowj