Warum eine QFX-MAC in EVPN erscheint, aber nicht in der Forwarding-Tabelle
Eine MAC in der EVPN-Datenbank ist ein Fakt der Control Plane, kein Beweis dafür, dass die Forwarding-Tabelle programmiert wurde. Lesen Sie die vier Stufen der Reihe nach, bevor Sie BGP beschuldigen.
Eine MAC in der EVPN-Datenbank zu finden beweist, dass sie als Route angekündigt oder empfangen wurde, und nichts darüber hinaus. Die Forwarding-Tabelle ist eine andere, später programmierte Struktur, daher kann dieselbe MAC in der einen erscheinen und in der anderen fehlen, während sich jedes Protokoll korrekt verhält. Diese beiden Ausgaben als Kopien voneinander zu behandeln, schickt Ingenieure auf die Suche nach einem BGP-Fehler, während die eigentliche Lücke eine Import-Policy oder ein unaufgelöster Next Hop ist. Die Frage, die sich lohnt, ist nicht, ob das Fabric die MAC kennt, sondern an welcher Stufe sie nicht weitergegeben wurde.
Zwei Tabellen, die unterschiedliche Fragen beantworten
Auf Junos EVPN listet die Datenbank MAC-Adressen pro Instanz zusammen damit, wie jede ankam: vom Access-Port gelernt, in einer Type-2-Route empfangen oder als Teil einer Multihoming-Gruppe markiert. Die Juniper-Referenz show evpn database deckt die Filter pro MAC und pro Instanz ab, die die Ansicht lesbar machen. Es ist eine Control-Plane-Zusammenfassung mit Schlüssel aus Instanz und MAC, nicht die Tabelle, mit der die Hardware Frames weiterleitet.
Die Switching-Tabelle ist genau dieser Forwarding-Zustand. Beide Ausgaben listen MACs neben VLAN- oder VNI-Kontext, was genau der Grund ist, warum sie Zeile für Zeile verglichen werden, und genau der Grund, warum der Vergleich in die Irre führt. Ein Eintrag in der Datenbank besagt, dass die Route existiert und in die Instanz übernommen wurde; er sagt nichts darüber, ob die Plattform sie für das Forwarding installiert hat.
Eine Type-2-Route trägt die MAC, eine optionale IP, ein Label oder VNI, einen Route Distinguisher und einen Next Hop, der den entfernten VTEP benennt. Vier Dinge können zwischen dem Kabel und dieser Route brechen: der Host wird nie gelernt, die Route wird nie angekündigt, sie wird beim Import verworfen, oder ihr Next Hop lässt sich nicht auflösen. Jeder Fehler hinterlässt eine andere Menge gefüllter Tabellen, und genau deshalb lässt sich die Abfolge überhaupt diagnostizieren.
Lokales Lernen findet weiterhin zuerst statt
Die gängige Annahme ist, dass EVPN das MAC-Lernen übernimmt, eine leere Datenbank also ein Overlay-Problem bedeuten muss. Lokales Lernen läuft weiterhin auf der Access-Seite, genau wie vor VXLAN: Der Switch lernt die Quell-MAC eines erlaubten Frames im richtigen VLAN und Service und erzeugt erst danach eine Type 2 dafür. Ein Host, der keinen relevanten Frame gesendet hat, hat nichts anzukündigen. Ein Host, dessen Frames durch VLAN-Mitgliedschaft, einen Filter oder ein ausgefallenes Mitglied eines Aggregats verworfen werden, sieht aus Sicht des Overlays identisch aus.
Beginnen Sie am Attachment und arbeiten Sie sich mit Nur-Lese-Befehlen vorwärts. Das Ziel ist zu beweisen, dass ein Frame des Hosts im vorgesehenen Service hindurchging, denn nichts weiter unten kompensiert einen Frame, der nie ankam.
show interfaces ge-0/0/1.0
show ethernet-switching interface ge-0/0/1.0
show lacp interfaces ae0
Ausgewählte LACP-Mitglieder sind wichtiger als ein aktives Bündel, denn ein Aggregat kann auf einem Mitglied aktiv sein, während der Verkehr des Hosts auf einen Link gehasht wird, der ausgefallen oder blockiert ist. Interface-Zähler unterscheiden einen stillen Host von einem verwerfenden, denn ein Host, der nie sendet, und ein Host, dessen Frames durch Klassifizierung verworfen werden, hinterlassen dieselbe leere Tabelle.
Wo eine entfernte MAC verloren geht
Eine entfernte MAC scheitert in der Gegenrichtung, und zwar still. Die Type-2-Route kommt an, aber sie gelangt nur dann in eine Instanz, wenn ihr Route Target und VNI zur lokalen Konfiguration passen, und sie wird erst nutzbar, wenn sich der Next Hop zu einem erreichbaren VTEP auflöst. Eine Route-Target-Abweichung hinterlässt eine gültige Route in der BGP-Tabelle, die keine Instanz je anfragt.
Lesen Sie die drei Ansichten der Reihe nach: Vorhandensein der Route, Datenbankeintrag, Forwarding-Eintrag. Die folgenden Befehle fragen dieselbe MAC in jeder Stufe ab, und die Beispieladresse hält die Ausgaben vergleichbar.
show evpn database instance blue mac-address 02:00:00:00:00:5c extensive
show route table bgp.evpn.0 | match 02:00:00:00:00:5c
show route table bgp.evpn.0 | match 02:00:00:00:00:5c extensive
Diese Ausgaben beantworten drei getrennte Fragen. Eine Route in bgp.evpn.0 ohne Datenbankeintrag deutet auf Import-Policy, Route Target oder Instanzkonfiguration hin. Ein Datenbankeintrag ohne Forwarding-Eintrag deutet auf die Programmierung der Plattform hin, was zu einem anderen Eskalationspfad gehört. Eine aktive Route, deren Next Hop sich nicht auflöst, ist ein Transport- oder Labelproblem, und keine Menge MAC-Debugging repariert das.
Ein Neustart, der es behoben hat, beweist sehr wenig
Wenn ein Neustart das Symptom verschwinden lässt, liegt die verlockende Schlussfolgerung nahe, die Konfiguration müsse stimmen. Ein Neustart programmiert jede Tabelle von Grund auf neu, sodass er auch den Fall verbirgt, in dem ein veralteter Eintrag einen Policy-Fehler überdeckte; der Fehler kehrt meist beim nächsten Churn, Link-Flap oder Routenrückzug zurück.
Erfassen Sie vor jedem Wartungsfenster, was der Neustart löschen wird. Diese drei Befehle genügen für einen Vorher-nachher-Vergleich, und sie ändern nichts am Gerät.
show evpn database instance blue
show route table bgp.evpn.0
show version
Legen Sie diese Ausgaben zusammen mit Datum und Software-Build daneben ab. Ein späterer Bericht, derselbe Neustart habe schon früher geholfen, ist ein Hinweis und kein Beweis, und der Unterschied wird erst sichtbar, wenn jemand die frühere Ausgabe aufbewahrt hat.
Vier Beobachtungen, die die meisten Fälle klären
Vier Beobachtungen decken fast jeden Fall ab: das Attachment und sein Service, die MAC als Beispielwert, den Zustand von Route und Datenbank sowie den verwendeten Build. Wählen Sie eine MAC, die offensichtlich ein Beispiel ist, damit niemand sie für eine Produktionsadresse hält: Ein erstes Oktett von 02 kennzeichnet eine lokal administrierte Unicast-Adresse, die restlichen Oktette sind frei, und 02:00:00:00:00:5c ist daher ein sicherer Platzhalter.
Lassen Sie dann die Antworten auf die Stufe zeigen, die versagt hat. Kein Lernen am Attachment bedeutet Access-Seite; eine Route ohne Datenbankeintrag bedeutet Import; ein Datenbankeintrag ohne Forwarding-Zustand bedeutet Programmierung. Was auch immer es ist, übergeben Sie die gesammelten Ausgaben zusammen mit Host, Interface, Service und Build, damit der nächste Ingenieur den Pfad nachvollziehen kann, statt die Abfrage zu wiederholen.