diff options
author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-05-09 03:47:52 +0200 |
---|---|---|
committer | Anuradha Karuppiah <anuradhak@nvidia.com> | 2020-12-01 18:46:26 +0100 |
commit | 15400f95b77f95012e7676f14105ab9280e52c3d (patch) | |
tree | 64602fcf60b24e95f8e9f30cf206a60220d74fb9 /zebra/zebra_vxlan.h | |
parent | zebra: on local mac add from the dplane a re-install maybe need as static (diff) | |
download | frr-15400f95b77f95012e7676f14105ab9280e52c3d.tar.xz frr-15400f95b77f95012e7676f14105ab9280e52c3d.zip |
zebra: support for slow-failover of local MACs on an ES
When a local ES flaps there are two modes in which the local
MACs are failed over -
1. Fast failover - A backup NHG (ES-peer group) is programmed in the
dataplane per-access port. When a local ES flaps the MAC entries
are left unaltered i.e. pointing to the down access port. And the
dataplane redirects traffic destined to the oper-down access port
via the backup NHG.
2. Slow failover - This mode needs to be turned on to allow dataplanes
not capable of re-directing traffic. In this mode local MAC entries
on a down local ES are re-programmed to point to the ES-peers'
NHG. And vice-versa i.e. when the ES comes up the MAC entries
are re-programmed with the access port as dest.
Fast failover is on by default. Slow failover can be enabled via the
following config -
evpn mh redirect-off
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'zebra/zebra_vxlan.h')
-rw-r--r-- | zebra/zebra_vxlan.h | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/zebra/zebra_vxlan.h b/zebra/zebra_vxlan.h index 534e29936..24de8ff04 100644 --- a/zebra/zebra_vxlan.h +++ b/zebra/zebra_vxlan.h @@ -177,13 +177,6 @@ extern int zebra_vxlan_local_mac_add_update(struct interface *ifp, extern int zebra_vxlan_local_mac_del(struct interface *ifp, struct interface *br_if, struct ethaddr *mac, vlanid_t vid); -extern int zebra_vxlan_check_readd_remote_mac(struct interface *ifp, - struct interface *br_if, - struct ethaddr *mac, - vlanid_t vid); -extern int zebra_vxlan_check_del_local_mac(struct interface *ifp, - struct interface *br_if, - struct ethaddr *mac, vlanid_t vid); extern int zebra_vxlan_check_readd_vtep(struct interface *ifp, struct in_addr vtep_ip); extern int zebra_vxlan_if_up(struct interface *ifp); @@ -222,6 +215,15 @@ extern void zebra_evpn_init(void); extern void zebra_vxlan_macvlan_up(struct interface *ifp); extern void zebra_vxlan_macvlan_down(struct interface *ifp); extern int vni_list_cmp(void *p1, void *p2); +extern int zebra_vxlan_dp_network_mac_add(struct interface *ifp, + struct interface *br_if, + struct ethaddr *macaddr, vlanid_t vid, + uint32_t nhg_id, bool sticky, + bool dp_static); +extern int zebra_vxlan_dp_network_mac_del(struct interface *ifp, + struct interface *br_if, + struct ethaddr *macaddr, + vlanid_t vid); #ifdef __cplusplus } |