From 2867823e4998a4b4ae147a96534954259148265c Mon Sep 17 00:00:00 2001 From: Anuradha Karuppiah Date: Mon, 18 May 2020 15:55:39 -0700 Subject: [PATCH] bgpd: add a config knob to enable use of L3 NHG for EVPN host routes Sample config - vtysh -c "conf t" -c "router bgp " -c "address-family l2vpn evpn" -c "use-es-l3nhg" Signed-off-by: Anuradha Karuppiah --- bgpd/bgp_evpn_mh.c | 4 ++-- bgpd/bgp_evpn_mh.h | 1 + bgpd/bgp_evpn_vty.c | 19 +++++++++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/bgpd/bgp_evpn_mh.c b/bgpd/bgp_evpn_mh.c index 0407085d4c..0494200e34 100644 --- a/bgpd/bgp_evpn_mh.c +++ b/bgpd/bgp_evpn_mh.c @@ -3703,8 +3703,8 @@ void bgp_evpn_mh_init(void) /* config knobs - XXX add cli to control it */ bgp_mh_info->ead_evi_adv_for_down_links = true; bgp_mh_info->consistency_checking = true; - bgp_mh_info->install_l3nhg = true; - bgp_mh_info->host_routes_use_l3nhg = false; + bgp_mh_info->install_l3nhg = false; + bgp_mh_info->host_routes_use_l3nhg = BGP_EVPN_MH_USE_ES_L3NHG_DEF; if (bgp_mh_info->consistency_checking) thread_add_timer(bm->master, bgp_evpn_run_consistency_checks, diff --git a/bgpd/bgp_evpn_mh.h b/bgpd/bgp_evpn_mh.h index 1ccc504cff..a65e8abd17 100644 --- a/bgpd/bgp_evpn_mh.h +++ b/bgpd/bgp_evpn_mh.h @@ -34,6 +34,7 @@ #define BGP_EVPN_CONS_CHECK_INTERVAL 60 +#define BGP_EVPN_MH_USE_ES_L3NHG_DEF false /* Ethernet Segment entry - * - Local and remote ESs are maintained in a global RB tree, diff --git a/bgpd/bgp_evpn_vty.c b/bgpd/bgp_evpn_vty.c index e5e91deb25..f957103df7 100644 --- a/bgpd/bgp_evpn_vty.c +++ b/bgpd/bgp_evpn_vty.c @@ -3747,6 +3747,16 @@ DEFUN (no_bgp_evpn_advertise_type5, return CMD_SUCCESS; } +DEFPY (bgp_evpn_use_es_l3nhg, + bgp_evpn_use_es_l3nhg_cmd, + "[no$no] use-es-l3nhg", + NO_STR + "use L3 nexthop group for host routes with ES destination\n") +{ + bgp_mh_info->host_routes_use_l3nhg = no ? false :true; + return CMD_SUCCESS; +} + DEFPY (bgp_evpn_advertise_pip_ip_mac, bgp_evpn_advertise_pip_ip_mac_cmd, "[no$no] advertise-pip [ip [mac ]]", @@ -5733,6 +5743,14 @@ void bgp_config_write_evpn_info(struct vty *vty, struct bgp *bgp, afi_t afi, if (bgp->evpn_info->advertise_svi_macip) vty_out(vty, " advertise-svi-ip\n"); + if (bgp_mh_info->host_routes_use_l3nhg != + BGP_EVPN_MH_USE_ES_L3NHG_DEF) { + if (bgp_mh_info->host_routes_use_l3nhg) + vty_out(vty, " use-es-l3nhg\n"); + else + vty_out(vty, " no use-es-l3nhg\n"); + } + if (!bgp->evpn_info->dup_addr_detect) vty_out(vty, " no dup-addr-detection\n"); @@ -5877,6 +5895,7 @@ void bgp_ethernetvpn_init(void) install_element(BGP_EVPN_NODE, &no_dup_addr_detection_cmd); install_element(BGP_EVPN_NODE, &bgp_evpn_flood_control_cmd); install_element(BGP_EVPN_NODE, &bgp_evpn_advertise_pip_ip_mac_cmd); + install_element(BGP_EVPN_NODE, &bgp_evpn_use_es_l3nhg_cmd); /* test commands */ install_element(BGP_EVPN_NODE, &test_es_add_cmd); -- 2.39.5