]> git.proxmox.com Git - mirror_frr.git/commit - zebra/interface.h
zebra: support for lacp bypass with EVPN MH
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>
Wed, 5 Aug 2020 14:13:55 +0000 (07:13 -0700)
committerAnuradha Karuppiah <anuradhak@nvidia.com>
Wed, 24 Feb 2021 16:09:33 +0000 (08:09 -0800)
commit00a7710c25aae45874622d69f5cea6ea6dff0a47
treed1b9a2da2145940078aa044abeb157860c7aeacc
parent0ff791138668c50a1c60b209333091682d8926d3
zebra: support for lacp bypass with EVPN MH

Feature overview:
=================
A 802.3ad bond can be setup to allow lacp-bypass. This is done to enable
servers to pxe boot without a LACP license i.e. allows the bond to go oper
up (with a single link) without LACP converging.

If an ES-bond is oper-up in an "LACP-bypass" state MH treats it as a non-ES
bond. This involves the following special handling -
1. If the bond is in a bypass-state the associated ES is placed in a
bypass state.
2. If an ES is in a bypass state -
a. DF election is disabled (i.e. assumed DF)
b. SPH filter is not installed.
3. MACs learnt via the host bond are advertised with a zero ESI.
When the ES moves out of "bypass" the MACs are moved from a zero-ESI to
the correct non-zero id. This is treated as a local station move.

Implementation:
===============
When (a) an ES is detached from a hostbond or (b) an ES-bond goes into
LACP bypass zebra deletes all the local macs (with that ES as destination)
in the kernel and its local db. BGP re-sends any imported MAC-IP routes
that may exist with this ES destination as remote routes i.e. zebra can
end up programming a MAC that was perviously local as remote pointing
to a VTEP-ECMP group.

When an ES is attached to a hostbond or an ES-bond goes
LACP-up (out of bypss) zebra again deletes all the local macs in the
kernel and its local db. At this point BGP resends any imported MAC-IP
routes that may exist with this ES destination as sync routes i.e.
zebra can end up programming a MAC that was perviously remote
as local pointing to an access port.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
13 files changed:
zebra/if_netlink.c
zebra/interface.c
zebra/interface.h
zebra/zebra_dplane.c
zebra/zebra_dplane.h
zebra/zebra_evpn_mac.c
zebra/zebra_evpn_mac.h
zebra/zebra_evpn_mh.c
zebra/zebra_evpn_mh.h
zebra/zebra_evpn_neigh.c
zebra/zebra_l2.c
zebra/zebra_l2.h
zebra/zebra_vxlan.c