EVPN typ 2 kontra typ 5: varför en IP-adress betyder två rutter
En typ 2-rutt nycklas på en MAC plus en valfri IP; en typ 5-rutt nycklas på ett prefix. Läs nyckeln, inte masken, innan du kallar en rutt värdstor.
Två rutter på samma box kan peka på 198.51.100.77 och ändå svara på olika frågor. Den ena beskriver var en MAC-adress är nåbar och, valfritt, vilken IP som är bunden till den. Den andra beskriver ett prefix som löses via ett nästa hopp, även när prefixet är en enda värd. Blandar man ihop dem får man ett ärende som ser ut som ett routingfel men egentligen är en feltolkad ruttyp.
Det snabbaste sättet att skilja dem åt är att läsa nyckeln som NLRI:n är byggd kring, inte masken i slutet av den.
Ruttnyckeln säger vad rutten hävdar
Typ 2 är MAC/IP-annonseringsrutten från RFC 7432, och dess nyckel är den 48-bitars MAC-adressen inuti NLRI:n. Bakom den nyckeln ligger ett IP-adressfält vars längdfält kan vara 0, 32 eller 128 bitar, så en annonsering med bara MAC är en fullständig rutt och inte en värdpost med saknade delar. Etikettstacken som följer pekar på bryggkontexten där den MAC:en lever.
Om IP-fältet är ifyllt ändrar vad rutten säger, inte vilken sorts rutt det är. Med en längd på 32 eller 128 bitar hävdar avsändaren också att denna IP tillhör den MAC:en inom en EVPN-instans. Med noll längd gör avsändaren inget IP-påstående alls. Ingen av versionerna säger att ett prefix är nåbart via en router.
Typ 5 är IP-prefixrutten från RFC 9136, och dess nyckel är ett prefix skrivet som en längd plus så många bitar. Längden går från 0 till 32 för IPv4 och från 0 till 128 för IPv6.
Båda ändarna av det intervallet är tillåtna, och ingen av dem innebär en MAC. Ett prefix med noll längd hävdar nåbarhet utan att namnge en värd, medan ett /32 namnger exakt en adress. NLRI:n bär också en gateway-IP-adress som utgångssidan använder för att bygga overlay-indexet, plus en etikett för vidarebefordringskontexten. Det finns inget MAC-fält att växla på, därför behandlar en mottagare typ 5 som en routad destination.
En /32-prefixrutt är inte en omdöpt typ 2
Prefix i värdstorlek är vanliga typ 5-rutter. En /32-prefixrutt och en typ 2 för samma adress kan båda finnas i en EVPN-instans, och de bär olika vidarebefordringsinformation.
Ta 198.51.100.77 i en EVPN-instans som använder VNI 10100. En typ 2 kan para den med MAC 02:00:00:00:00:77 och en etikett som identifierar bryggdomänen där MAC:en lärdes. En typ 5 kan annonsera 198.51.100.0/24 för hela subnätet, eller 198.51.100.77/32 bara för den adressen, med en gateway-adress som pekar på utgående VTEP. Adresserna överlappar med avsikt eftersom rutterna svarar på olika frågor.
Den ena rutten säger att en ändpunktsbindning finns och är nåbar via en viss brygga. Den andra säger att ett prefix är nåbart via en viss router, oavsett om någon ändpunkt inuti det någonsin lärts.
Den skillnaden avgör var du tittar först när trafiken fallerar. Om en enda värd är onåbar medan dess subnätsrutt ser bra ut, var typ 5 aldrig tänkt att bära den värden; leta efter den saknade typ 2:an. Om värdrutten finns men hela subnätet är onåbart, kontrollera om typ 5 alls skapades. Att läsa fälten i ordning slår att gissa utifrån masklängden.
Läs båda rutterna utan att gissa
På NX-OS delar show bgp l2vpn evpn route type 2 och show bgp l2vpn evpn route type 5 tabellen exakt längs den här linjen, och show l2route evpn mac ip visar de lokala MAC-till-IP-bindningarna bakom typ 2-rutterna. På Junos listar show evpn database inlärda MAC- och IP-bindningar medan show route table bgp.evpn.0 visar vad som annonserades och togs emot.
Filtrera på route distinguisher och Ethernet-tagg innan du drar slutsatser. Samma MAC eller prefix kan förekomma i flera EVPN-instanser, och en rutt som ser fel ut i en instans kan vara korrekt i en annan.
Läs sedan NLRI:n i ordning: ruttyp, nyckel, gateway- eller etikettfält, därefter route targets i attributen. En typ 2 med ett ESI som inte är noll säger att MAC:en är multi-homed, och det värdet är det som binder samman annonseringarna från olika PE-routrar. En typ 5 med en gateway-adress säger vilken utgående VTEP som ska ta emot trafiken.
Om en rutt saknas, kontrollera uppkomsten före kodningen. Bekräfta att källan har bindningen eller prefixet lokalt, och bekräfta sedan att route target som hänger på den importeras på den här boxen. De flesta rapporter om en trasig typ 5 slutar på en importpolicy, inte på NLRI-formatet.
Anteckna kontexten, inte bara ruttypen
Skriv ned ruttypen, EVPN-instansen, route distinguisher, de importerade och exporterade route targets samt nästa hopp efter uppslagning tillsammans. En typ 2 utan sin instans är tvetydig, och ett nästa hopp utan ruttfamiljen bjuder in till en felaktig slutsats.
Båda är EVPN-rutter även när nyttolasten är en IPv4-adress. Adressfamiljen inuti NLRI:n och ruttens egen adressfamilj är separata egenskaper, och en typ 5 blir inte en IPv4-unicast- eller VPN-IPv4-rutt bara för att den bär ett IPv4-prefix.
Den skillnaden syns vid gränsen mellan ett EVPN-kontrollplan och en IP-VRF. Route target avgör vilken VRF som importerar prefixet, medan gateway-adressen och etiketten avgör hur paketet kapslas in mot utgången. Läs dem tillsammans, och vidarebefordringsbeslutet slutar verka godtyckligt.
Nästa gång ett /32 dyker upp i EVPN-tabellen, kontrollera nyckeln före masken. En MAC-nyckel med en valfri IP är en typ 2-bindning; en prefixnyckel är en typ 5-rutt oavsett längd. Skriv route target och nästa hopp bredvid, och nästa ingenjör behöver inte härleda hela historien på nytt.