diff options
author | Anuradha Karuppiah <anuradhak@cumulusnetworks.com> | 2020-05-09 04:24:56 +0200 |
---|---|---|
committer | Anuradha Karuppiah <anuradhak@nvidia.com> | 2020-11-24 20:06:08 +0100 |
commit | c589d84746d96c1714582e437eb9cec691795252 (patch) | |
tree | 2ca0ecf6ec0896991b2e3a3155da69d592f5d308 /bgpd/bgp_nht.h | |
parent | bgpd: skip VRF import of MAC-IP routes that belong to locally attached hosts (diff) | |
download | frr-c589d84746d96c1714582e437eb9cec691795252.tar.xz frr-c589d84746d96c1714582e437eb9cec691795252.zip |
bgpd: L3NHG infrastructure for host routes in EVPN
ES-VRF entries are maintained for the purpose of L3-NHG creation -
1. Each ES-EVI entry is associated with a tenant VRF. This associaton
triggers the creation of an ES-VRF entry.
2. Type-2/MAC-IP routes are imported into a tenant VRF and programmed as
a /32 or host route entry in the dataplane. If the destination of
the host route is a remote-ES the route is programmed with the
corresponding (keyed in by {vrf,ES-id}) L3-NHG.
3. The reason for this indirection (route->L3-NHG, L3-NHG->list-of-VTEPs)
is to avoid route updates to the dplane when a remote-ES link flaps i.e.
instead of updating all the dependent routes the NHG's contents are
updated. This reduces the amount of dataplane updates (fewer nhg updates vs.
route updates) allowing for a faster failover.
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'bgpd/bgp_nht.h')
-rw-r--r-- | bgpd/bgp_nht.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/bgpd/bgp_nht.h b/bgpd/bgp_nht.h index 4e015e4aa..8451f0689 100644 --- a/bgpd/bgp_nht.h +++ b/bgpd/bgp_nht.h @@ -90,4 +90,10 @@ extern void bgp_nht_register_nexthops(struct bgp *bgp); extern void bgp_nht_reg_enhe_cap_intfs(struct peer *peer); extern void bgp_nht_dereg_enhe_cap_intfs(struct peer *peer); +/* APIs for setting up and allocating L3 nexthop group ids */ +extern uint32_t bgp_l3nhg_id_alloc(void); +extern void bgp_l3nhg_id_free(uint32_t nhg_id); +extern void bgp_l3nhg_init(void); +void bgp_l3nhg_finish(void); + #endif /* _BGP_NHT_H */ |