]> git.proxmox.com Git - mirror_frr.git/commit - bgpd/bgp_route.c
bgpd: rework VNI table for type2/macip routes
authorStephen Worley <sworley@nvidia.com>
Fri, 23 Jul 2021 17:35:14 +0000 (13:35 -0400)
committerStephen Worley <sworley@nvidia.com>
Tue, 11 Oct 2022 19:18:39 +0000 (15:18 -0400)
commit34c7f35f0217e16447ca0bc6aedd8aba2e51f877
tree0ec904baf275d59ae7ecdd758e5f38e727f87d34
parent7d99ad7f93e42ca2f58023374843d70039a8310f
bgpd: rework VNI table for type2/macip routes

Use the IP addr of type2/macip routes only for the hash/key
of the VNI table and carry the MAC in a path_info_extra attribute.

There is exists situations that can be hit during extended MAC mobility events
where two MACs could be pointing to the same IP in our global table. It
is requires very specific timings.

When that happens, BPG would (because we key'd on both MAC and IP)
install both into it's VNI table as separate entries, but zebra only
knows/needs to know about a single IP -> MAC relationship for it's VNI
table's type2 routes. So it was compleletly undeterministic which one
zebra would end up with in these timing situations.

With these changes, we move BGP's VNI table to key'd the same as Zebra's
and now a single IP will have multiple path_info's with a path_info_extra
that is carrying the MAC info for each path.

BGP will then run best path to deterministically decide which one to send to
zebra during the occasions where there exist's two possible MACs.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
bgpd/bgp_evpn.c
bgpd/bgp_evpn_mh.c
bgpd/bgp_evpn_private.h
bgpd/bgp_evpn_vty.c
bgpd/bgp_route.c
bgpd/bgp_route.h