Welche Route kommt in die RIB?

Ich hatte schon öfter mit Torschti die Diskussion, warum und warum manchmal nicht, es eine bestimmte Route in die RIB geschafft hat, wenn man zum Beispiel die gleiche Route aus zwei OSPF-Prozessen bekommt. So richtig sind wir nie dahinter gestiegen, jetzt hab ich aber nochmal ein bisschen recherchiert und dachte ich teil das mal mit allen. Vielleicht kommt jemand ja mal in die gleiche Situation und freut sich dann.

Das Offensichtliche vorweg:

  1. Die spezifischste Route gewinnt
  2. Gibt es mehrere gleiche Routen, gewinnt die Route mit der kleinsten AD

Soweit alles klar. Aber was ist zum Beispiel, wenn ich die gleiche Route aus zwei Prozessen mit gleicher AD lerne? Normalerweise würde man sagen, die mit der besseren Metrik gewinnt. Pustekuchen. Die RIB hat nämlich keine Ahnung von Metriken, die kennt nämlich nur das Routing-Protokoll selbst und l.

OSPF

Bei OSPF ist es ja so:

  1. Erst INTRA-Area Routen (O), auch wenn die Kosten einer IA-Route besser sind
  2. Dann INTER-Arae Routen (O IA)
  3. Danach kommen die externen Routen (O E1/E2), wobei E1 vor E2 kommt
  4. Dann kommen die externen Router aus NSSAs (O N1/N2), auch hier gewinnt N1 vor N2
  5. Ist immer noch alles gleich, gewinnt das „stabilste“ LSA, also die Information, die am längsten in der LSA-DB existiert.

Die ersten kleinen Feinheiten bei externen Routen:

  • Externe Routen eines ASBRs in der gleichen Area werden denen aus anderen Areas bevorzugt
  • Gibt es zwei gleichwertige E2-Routen zu einem Ziel, dann wird nicht die Metrik der Route, sondern die interne Metrik zur FA (Forwarding-Address) verglichen.

Was passiert aber bei OSPF, wenn ich die gleiche Route aus den zwei Prozesse bekomme, einmal als O und einmal aus O N2?  Wenn in OSPF-Prozess #1 die Route zu 10.1.1.0/24 mit Metrik 123 gewonnen hat, in OSPF-Prozess #2 aber mit 10, dann heisst es noch lange nicht das die Route von OSPF #2 in die RIB kommt. Im Gegenteil. Die Auswahl der Route hat jeder OSPF-Prozess intern getroffen und sagt jetzt der IOS-FIB: „Hallo FIB, ich hab hier eine Route zu 10.1.1.0/24, die AD ist 110.“. Jetzt sucht IOS nach einer existierenden Route zu 10.1.1.0/24, findet keine und setzt einen Pointer auf die Route die es zuerst bekommen hat.
Das bedeutet: Eine OSPF N2-Route aus Prozess #1 kann im Worst-Case eine OSPF O-Route aus Prozess #2 schlagen, wenn sie sich als erste bei der FIB meldet. Die Route von OSPF #1 bleibt solange der Gewinner, bis es eine Route mit besserer AD gibt, oder der Prozess #1 die Route zurückzieht (clear ip ospf 1 process zum Beispiel).

Cisco sagt:

„Before Cisco bug ID CSCdw10987 (registered customers only) (integrated in Cisco IOS Software Releases 12.2(07.04)S, 12.2(07.04)T, and later), the last process to make an shortest path first algorithm (SPF) would have won, and the two processes overwrite other routes in the routing table.

Now, if a route is installed via one process, it is not overwritten by another OSPF process with the same administrative domain (AD), unless the route is first deleted from the routing table by the process that initially installed the route in the routing table.“

EIGRP

Bei EIGRP ist die Auswahl natürlich ein bisschen einfacher, weil es nur zwei Unterscheidungen gibt:

  • Die Quelle der Route: EIGRP internal mit AD 90 oder external mit AD 170. Da ist die Sache in sich schon mal in sich klar
  • Die Composite Metrik nach DUAL

Gleiches Problem wie bei OSPF: Die RIB weiss nichts von EIGRP’s Metriken, sondern kennt nur die AD. Die ist aber bei beiden wieder gleich, also haben wir das gleiche Dilemma. Um die Sache abzukürzen: Bei EIGRP ist es nicht die älteste Route, sondern die aus dem Prozess mit der kleinsten AS-Nummer.

Cisco sagt:

„The router installs the route that was learned through the EIGRP process with the lower Autonomous System (AS) number. In Cisco IOS Software Releases earlier than 12.2(7)T, the router installed the path with the latest timestamp received from either of the EIGRP processes. The change in behavior is tracked by Cisco bug ID CSCdm47037.“

Summary

  • OSPF: Älteste Route gewinnt
  • EIGRP: kleine AS-Nummer gewinnt.

Gibt es aus hier nochmal in bunt von der Cisco Live (wir sollten da echt mal wieder hinfahren): http://d2zmdbbm9feqrf.cloudfront.net/2010/usa/pdf/BRKARC-2350.pdf, Seite 21/22. Der Rest vom PDF ist aber auch als Refresher ziemlich gut.

Schönen Abend,

-Schommski