diff options
| author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-05-08 18:47:52 -0700 | 
|---|---|---|
| committer | Anuradha Karuppiah <anuradhak@nvidia.com> | 2020-12-01 09:46:26 -0800 | 
| commit | 15400f95b77f95012e7676f14105ab9280e52c3d (patch) | |
| tree | 64602fcf60b24e95f8e9f30cf206a60220d74fb9 /zebra/zebra_vxlan.h | |
| parent | 69711b3f8364d3bcf5d170649eef4c0ed536d851 (diff) | |
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 534e29936d..24de8ff04e 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  }  | 
