From b1cb18d2a7551b3576a67e4243c63dc821a902f1 Mon Sep 17 00:00:00 2001 From: dgsudharsan Date: Wed, 11 Dec 2024 01:41:48 +0000 Subject: [PATCH] [BGP]Introduce bgp update delay to control how long bgp stays in read only mode during init --- dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 | 4 ++++ files/image_config/constants/constants.yml | 1 + src/sonic-config-engine/tests/sample_output/py2/bgpd_frr.conf | 2 ++ .../tests/sample_output/py2/bgpd_frr_backend_asic.conf | 2 ++ .../tests/sample_output/py2/bgpd_frr_bmp.conf | 2 ++ .../tests/sample_output/py2/bgpd_frr_dualtor.conf | 2 ++ .../tests/sample_output/py2/bgpd_frr_frontend_asic.conf | 2 ++ .../tests/sample_output/py2/bgpd_quagga.conf | 2 ++ src/sonic-config-engine/tests/sample_output/py2/frr.conf | 2 ++ .../tests/sample_output/py2/t2-chassis-fe-bgpd.conf | 2 ++ src/sonic-config-engine/tests/sample_output/py3/bgpd_frr.conf | 2 ++ .../tests/sample_output/py3/bgpd_frr_backend_asic.conf | 2 ++ .../tests/sample_output/py3/bgpd_frr_bmp.conf | 2 ++ .../tests/sample_output/py3/bgpd_frr_dualtor.conf | 2 ++ .../tests/sample_output/py3/bgpd_frr_frontend_asic.conf | 2 ++ .../tests/sample_output/py3/bgpd_quagga.conf | 2 ++ src/sonic-config-engine/tests/sample_output/py3/frr.conf | 2 ++ .../tests/sample_output/py3/t2-chassis-fe-bgpd.conf | 2 ++ 18 files changed, 37 insertions(+) diff --git a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 index db11d662a3af..d7bed8a8cd16 100644 --- a/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 +++ b/dockers/docker-fpm-frr/frr/bgpd/bgpd.main.conf.j2 @@ -65,6 +65,10 @@ route-map HIDE_INTERNAL permit 20 ! {% endif %} ! +{% if constants.bgp.update_delay is defined %} +bgp update-delay {{ constants.bgp.update_delay }} +{% endif %} +! {% if (DEVICE_METADATA is defined) and ('localhost' in DEVICE_METADATA) and ('bgp_asn' in DEVICE_METADATA['localhost']) and (DEVICE_METADATA['localhost']['bgp_asn'].lower() != 'none') and (DEVICE_METADATA['localhost']['bgp_asn'].lower() != 'null') %} router bgp {{ DEVICE_METADATA['localhost']['bgp_asn'] }} ! diff --git a/files/image_config/constants/constants.yml b/files/image_config/constants/constants.yml index 781055ba49b2..fdddaf846af5 100644 --- a/files/image_config/constants/constants.yml +++ b/files/image_config/constants/constants.yml @@ -24,6 +24,7 @@ constants: enabled: true ipv4: 514 ipv6: 514 + update_delay: 20 allow_list: enabled: true default_action: "permit" # or "deny" diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr.conf index 11272757855b..b224e7215874 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr.conf @@ -39,6 +39,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.0.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf index ab7f99d43cdf..666dd64c8e37 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_backend_asic.conf @@ -50,6 +50,8 @@ route-map HIDE_INTERNAL permit 10 set community no-export ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_bmp.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_bmp.conf index 827b287e57f1..038b16600cf6 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_bmp.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_bmp.conf @@ -39,6 +39,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.200.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_dualtor.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_dualtor.conf index fb1af604c40e..f0e59c55f1f6 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_dualtor.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_dualtor.conf @@ -39,6 +39,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.0.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf index b84ff10f590d..7dfe47615006 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_frr_frontend_asic.conf @@ -50,6 +50,8 @@ route-map HIDE_INTERNAL permit 10 set community no-export ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py2/bgpd_quagga.conf b/src/sonic-config-engine/tests/sample_output/py2/bgpd_quagga.conf index fb8bd1d9d9d9..33499d483e14 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/bgpd_quagga.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/bgpd_quagga.conf @@ -16,6 +16,8 @@ route-map FROM_BGP_SPEAKER_V4 permit 10 ! route-map TO_BGP_SPEAKER_V4 deny 10 ! +bgp update-delay 20 +! router bgp 65100 bgp log-neighbor-changes bgp bestpath as-path multipath-relax diff --git a/src/sonic-config-engine/tests/sample_output/py2/frr.conf b/src/sonic-config-engine/tests/sample_output/py2/frr.conf index 679871f68a2a..753d0d257489 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/frr.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/frr.conf @@ -59,6 +59,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.0.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf b/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf index 0b0446aad9e2..981fdf4182ca 100644 --- a/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf +++ b/src/sonic-config-engine/tests/sample_output/py2/t2-chassis-fe-bgpd.conf @@ -55,6 +55,8 @@ ip prefix-list PL_LoopbackV4 permit 4.0.0.0/32 ! ! ! +bgp update-delay 20 +! router bgp 4000 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr.conf index 5db248ab8521..7fdbf524bffb 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr.conf @@ -39,6 +39,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.200.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf index ab7f99d43cdf..666dd64c8e37 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_backend_asic.conf @@ -50,6 +50,8 @@ route-map HIDE_INTERNAL permit 10 set community no-export ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_bmp.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_bmp.conf index 827b287e57f1..038b16600cf6 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_bmp.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_bmp.conf @@ -39,6 +39,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.200.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_dualtor.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_dualtor.conf index 2d769fc05dd1..a40fa71bd8cc 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_dualtor.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_dualtor.conf @@ -39,6 +39,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.200.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf index b84ff10f590d..7dfe47615006 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_frr_frontend_asic.conf @@ -50,6 +50,8 @@ route-map HIDE_INTERNAL permit 10 set community no-export ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/bgpd_quagga.conf b/src/sonic-config-engine/tests/sample_output/py3/bgpd_quagga.conf index 6c2734473939..af0be35f73ba 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/bgpd_quagga.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/bgpd_quagga.conf @@ -16,6 +16,8 @@ route-map FROM_BGP_SPEAKER_V4 permit 10 ! route-map TO_BGP_SPEAKER_V4 deny 10 ! +bgp update-delay 20 +! router bgp 65100 bgp log-neighbor-changes bgp bestpath as-path multipath-relax diff --git a/src/sonic-config-engine/tests/sample_output/py3/frr.conf b/src/sonic-config-engine/tests/sample_output/py3/frr.conf index 17d7f561db03..0db749fab8ee 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/frr.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/frr.conf @@ -59,6 +59,8 @@ ip prefix-list LOCAL_VLAN_IPV4_PREFIX seq 10 permit 192.168.200.0/27 ! ! ! +bgp update-delay 20 +! router bgp 65100 ! bgp log-neighbor-changes diff --git a/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf b/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf index 0b0446aad9e2..981fdf4182ca 100644 --- a/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf +++ b/src/sonic-config-engine/tests/sample_output/py3/t2-chassis-fe-bgpd.conf @@ -55,6 +55,8 @@ ip prefix-list PL_LoopbackV4 permit 4.0.0.0/32 ! ! ! +bgp update-delay 20 +! router bgp 4000 ! bgp log-neighbor-changes