Waarom een QFX-MAC in EVPN verschijnt maar niet in de forwardingtabel
Een MAC in de EVPN-database is een controlevlakfeit, niet het bewijs dat de forwardingtabel is geprogrammeerd. Lees de vier fasen op volgorde voordat u BGP de schuld geeft.
Het vinden van een MAC in de EVPN-database bewijst dat deze als route is aangekondigd of ontvangen, en niets meer dan dat. De forwardingtabel is een andere structuur, die later wordt geprogrammeerd, dus dezelfde MAC kan in de ene verschijnen en in de andere ontbreken terwijl elk protocol zich correct gedraagt. Deze twee uitvoer als kopieën van elkaar behandelen stuurt ingenieurs achter een BGP-storing aan, terwijl het werkelijke gat een importbeleid of een onopgeloste volgende hop is. De vraag die de moeite waard is, is niet of de fabric de MAC kent, maar in welke fase het is gestopt met doorgeven.
Twee tabellen die verschillende vragen beantwoorden
Op Junos EVPN somt de database MAC-adressen per instantie op, samen met hoe elk er kwam: geleerd van een accesspoort, ontvangen in een Type 2-route of gemarkeerd als onderdeel van een multihoming-groep. De referentie van Juniper show evpn database dekt de filters per MAC en per instantie die de weergave leesbaar maken. Het is een samenvatting van het controlevlak met sleutel op instantie en MAC, niet de tabel waarmee de hardware frames schakelt.
De schakeltabel is precies die forwardingtoestand. Beide uitvoer vermeldt MAC's naast VLAN- of VNI-context, en dat is precies de reden dat ze regel voor regel worden vergeleken, en precies de reden dat de vergelijking misleidt. Een vermelding in de database zegt dat de route bestaat en in de instantie is geaccepteerd; ze zegt niets over of het platform die voor forwarding heeft geïnstalleerd.
Een Type 2-route draagt de MAC, een optionele IP, een label of VNI, een route distinguisher en een volgende hop die de externe VTEP benoemt. Vier dingen kunnen breken tussen de kabel en die route: de host wordt nooit geleerd, de route wordt nooit aangekondigd, ze wordt bij import geweigerd, of haar volgende hop wordt niet opgelost. Elke storing laat een andere set tabellen gevuld achter, en dat is de reden dat de reeks überhaupt te diagnosticeren is.
Lokaal leren gebeurt nog steeds eerst
De gangbare aanname is dat EVPN het MAC-leren overneemt, dus een lege database moet een overlayprobleem betekenen. Lokaal leren draait nog steeds aan de accesszijde, precies zoals voordat VXLAN bestond: de switch leert de bron-MAC van een toegestaan frame in de juiste VLAN en dienst, en maakt pas daarna een Type 2 daarvoor aan. Een host die geen relevant frame heeft gestuurd, heeft niets aan te kondigen. Een host waarvan de frames worden weggegooid door VLAN-lidmaatschap, een filter of een uitgevallen lid van een aggregatie ziet er vanuit het overlayperspectief identiek uit.
Begin bij de aansluiting en werk vooruit met alleen-lezenopdrachten. Het doel is te bewijzen dat een frame van de host in de bedoelde dienst is doorgekomen, want niets stroomafwaarts compenseert een frame dat nooit aankwam.
show interfaces ge-0/0/1.0
show ethernet-switching interface ge-0/0/1.0
show lacp interfaces ae0
Geselecteerde LACP-leden zijn belangrijker dan of de bundel omhoog is, want een aggregatie kan op één lid omhoog zijn terwijl het verkeer van de host hasht naar een link die omlaag of geblokkeerd is. Interfacetellers scheiden een stille host van een verliezende, want een host die nooit zendt en een host waarvan de frames door classificatie worden weggegooid laten dezelfde lege tabel achter.
Waar een externe MAC verloren gaat
Een externe MAC faalt in de tegenovergestelde richting, en stil. De Type 2-route komt aan, maar komt alleen in een instantie wanneer het routedoel en de VNI overeenkomen met de lokale configuratie, en wordt pas bruikbaar wanneer de volgende hop naar een bereikbare VTEP wordt opgelost. Een afwijking van het routedoel laat een geldige route in de BGP-tabel achter die geen enkele instantie ooit opvraagt.
Lees de drie weergaven in volgorde: aanwezigheid van de route, databasevermelding, forwardingvermelding. De onderstaande opdrachten vragen op elke fase dezelfde MAC, en het voorbeeldadres houdt de uitvoer vergelijkbaar.
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
Die uitvoer beantwoordt drie afzonderlijke vragen. Een route in bgp.evpn.0 zonder databasevermelding wijst op importbeleid, routedoel of instantieconfiguratie. Een databasevermelding zonder forwardingvermelding wijst op programmering van het platform, wat tot een ander escalatiepad behoort. Een actieve route waarvan de volgende hop niet wordt opgelost is een transport- of labelprobleem, en geen enkele hoeveelheid MAC-debugging repareert dat.
Een herstart die het oploste bewijst heel weinig
Wanneer een herstart het symptoom laat verdwijnen, is de verleidelijke conclusie dat de configuratie gezond moet zijn. Een herstart programmeert elke tabel vanaf nul opnieuw, dus verbergt ook het geval waarin een verouderde vermelding een beleidsfout bedekte; de fout komt meestal terug bij de volgende wijziging, linkflap of route-intrekking.
Leg voor elk onderhoudsvenster vast wat de herstart zal wissen. Deze drie opdrachten zijn genoeg om voor en na te vergelijken, en ze veranderen niets op het apparaat.
show evpn database instance blue
show route table bgp.evpn.0
show version
Archiveer die uitvoer met de datum en de softwareversie ernaast. Een later bericht dat dezelfde herstart eerder ook hielp is een spoor en geen bewijs, en het verschil wordt pas zichtbaar wanneer iemand de eerdere uitvoer bewaarde.
Vier observaties die de meeste gevallen beslechten
Vier observaties dekken bijna elk geval: de aansluiting en haar dienst, de MAC als voorbeeldwaarde, de toestand van de route en de database, en de gebruikte versie. Kies een MAC die duidelijk een voorbeeld is, zodat niemand die voor een productieadres aanziet: een eerste octet van 02 markeert een lokaal beheerd unicastadres, de resterende octetten zijn vrij, en daarom is 02:00:00:00:00:5c een veilige plaatshouder.
Laat dan de antwoorden wijzen naar de fase die faalde. Geen leren bij de aansluiting betekent de accesszijde; een route zonder databasevermelding betekent import; een databasevermelding zonder forwardingtoestand betekent programmering. Wat het ook blijkt te zijn, draag de verzamelde uitvoer over samen met host, interface, dienst en versie, zodat de volgende ingenieur het pad kan reproduceren in plaats van de query te herhalen.