-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
EVPN - Incorrect L3VNI routermac address installed #18190
Comments
After looking at the EVPN code the last couple of days: I also remember a discussion with some Broadcom SONiC folks well in the past, while not prohibited in the RFC 9135, running different RMACs for a single VTEP isn't recommended and breaks stuff on other systems. |
I don’t understand the point about a single RMAC for a VTEP. There should be a unique RMAC per L3VNI and of course a single L3VNI per VRF, no? At least that’s the behavior FRR has today. In fact, the example EVPN configuration in the FRR documentation shows exactly this. |
The documentation is mentioning different MAC addresses for each L3VNI bridge. However it is also quite usual for devices (I see it with the ASR9ks and also with the SONiC switches we have) to have a single, system wide, RMAC, not one per L3VNI or VRF. You still have one L3VNI per VRF of course. In our deployment of FRR we've chosen to do the same, especially as we had compatibility issues with networking gear. imho this is still a bug though and if an EVPN route is leaked it should not modify the RMACs of the VRF Leaked to. |
Interesting, so you’ve configured all L3VNIs with the same MAC address? |
Yes, all L3(!)-VNIs on one system(!) share the same MAC address in our deployment. |
Description
When using multiple VRFs, each with an L3 VNI, leaking routes between the VRFs in the IPv4 address family causes zebra to "confuse" the mac address for each L3VNI of a remote VTEP. Zebra will install all L3VNIs of the remote VTEP with a mac address of only one of the L3VNIs.
When routing packets, the kernel chooses the correct L3VNI device to send a packet based on the destination address, but when the packet arrives at the L3VNI at the remote VTEP, the destination mac address is for a different L3VNI, so the kernel silently drops it.
Version
How to reproduce
VTEP1
VTEP2 config is the exact same, just using VTEP1 as neighbor.
Expected behavior
Once EVPN type 2 routes are available from the remote VTEP, the local VTEP should install routes to both L3VNIs with the router mac of each type 2 route, which should be unique across VRFs.
Actual behavior
Remote VTEP VNIs:
sh vrf vni
Running
ip nei
on the local VTEP shows the correct rmac associated with the L3VNI at first (when only one type 2 route is installed forvrf_dev
)As soon as another type 2 route gets added in the other VRF, the routermac changes.
Here is the log line from zebra:
This is incorrect, as you can see -- any packets sent to either L3VNI will have a destination mac of
5e:e9:e9:55:be:99
which only belongs tovrf_prod
. This causes a blackhole for any traffic destined forvrfbr_dev
.The question is - why does zebra think the rmac has changed. The VPN table clearly shows the correct rmac for each type 2 route.
If I remove any vpn import/export statements from the IPv4 address family, the issue goes away.
Additional context
No response
Checklist
The text was updated successfully, but these errors were encountered: