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
R1
und R2
werben Sie über OSPF für das Anycast-Ziel. Wenn Rcore
die Kosten für das Gerät N1
und die N2
Schnittstellen identisch sind und das Anycast-Ziel auf jedem der anderen Router dieselben Kosten hat, würde ich erwarten, dass die Rcore
Routingtabelle 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.
Rcore
ein ABR verbindetN1
undN2
, die in separaten Bereichen NSSA ist, an das Grundgerüst (nicht gezeigt).- Die Überprüfung der
Rcore
LSDB bestätigt, dass die erwarteten LSAs vonR1
undR2
korrekt installiert sind und das Anycast-Ziel mit der richtigen Metrik enthalten.
Ich habe drei mögliche Erklärungen in Betracht gezogen.
- 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.
- 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.
- 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
Antworten:
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.
quelle
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.
quelle
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:
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.
quelle
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.
quelle