summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-06-25 22:10:04 +0200
committerChristian Breunig <christian@breunig.cc>2026-06-29 17:10:13 +0200
commit1ba7fc62556ff3ef99280d876c92e38d24dc0bfc (patch)
tree73a3f30fa4241423b96e105d57871518c945dd77
parent772ccb06548fb1a65d8623ea545facb0bcabb97c (diff)
downloadvyos-1x-1ba7fc62556ff3ef99280d876c92e38d24dc0bfc.tar.gz
vyos-1x-1ba7fc62556ff3ef99280d876c92e38d24dc0bfc.zip
bgp: T6573: add input/output queue limit CLI commands
Add input-queue-limit and output-queue-limit CLI nodes to expose global FRR "bgp input-queue-limit" and "bgp output-queue-limit" commands via our CLI. Parameters control the maximum number of queued messages for all BGP peers during message parsing. FRR default is 10000 which we honor. Note that this is a global option and can only be set for the global/default BGP instance.
-rw-r--r--data/templates/frr/bgpd.frr.j27
-rw-r--r--interface-definitions/protocols_bgp.xml.in30
-rwxr-xr-xsmoketest/scripts/cli/test_protocols_bgp.py11
3 files changed, 48 insertions, 0 deletions
diff --git a/data/templates/frr/bgpd.frr.j2 b/data/templates/frr/bgpd.frr.j2
index 3035262a6..f2f0fcc45 100644
--- a/data/templates/frr/bgpd.frr.j2
+++ b/data/templates/frr/bgpd.frr.j2
@@ -1,3 +1,10 @@
+!
+{% if parameters.input_queue_limit is vyos_defined %}
+ bgp input-queue-limit {{ parameters.input_queue_limit }}
+{% endif %}
+{% if parameters.output_queue_limit is vyos_defined %}
+ bgp output-queue-limit {{ parameters.output_queue_limit }}
+{% endif %}
{### MACRO definition for recurring peer patter, this can be either fed by a ###}
{### peer-group or an individual BGP neighbor ###}
{% macro bgp_neighbor(neighbor, config, peer_group=false) %}
diff --git a/interface-definitions/protocols_bgp.xml.in b/interface-definitions/protocols_bgp.xml.in
index e1a822999..261055e92 100644
--- a/interface-definitions/protocols_bgp.xml.in
+++ b/interface-definitions/protocols_bgp.xml.in
@@ -9,6 +9,36 @@
</properties>
<children>
#include <include/bgp/protocol-common-config.xml.i>
+ <node name="parameters">
+ <children>
+ <leafNode name="input-queue-limit">
+ <properties>
+ <help>Input queue limit for all peers when messaging parsing</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Queue limit, increase only if you have the memory to handle large queues</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>10000</defaultValue>
+ </leafNode>
+ <leafNode name="output-queue-limit">
+ <properties>
+ <help>Output queue limit for all peers when messaging parsing</help>
+ <valueHelp>
+ <format>u32:1-4294967295</format>
+ <description>Queue limit, increase only if you have the memory to handle large queues</description>
+ </valueHelp>
+ <constraint>
+ <validator name="numeric" argument="--range 1-4294967295"/>
+ </constraint>
+ </properties>
+ <defaultValue>10000</defaultValue>
+ </leafNode>
+ </children>
+ </node>
</children>
</node>
</children>
diff --git a/smoketest/scripts/cli/test_protocols_bgp.py b/smoketest/scripts/cli/test_protocols_bgp.py
index ab0fa216f..cf6dd2ab8 100755
--- a/smoketest/scripts/cli/test_protocols_bgp.py
+++ b/smoketest/scripts/cli/test_protocols_bgp.py
@@ -1942,6 +1942,17 @@ class TestProtocolsBGP(VyOSUnitTestSHIM.TestCase):
f' neighbor {interface} interface peer-group {peer_group}', frrconfig
)
+ def test_bgp_35_queue_limit(self):
+ input_queue = '20000'
+ output_queue = '30000'
+ self.cli_set(base_path + ['parameters', 'input-queue-limit', input_queue])
+ self.cli_set(base_path + ['parameters', 'output-queue-limit', output_queue])
+ self.cli_commit()
+
+ frrconfig = self.getFRRconfig('bgp', end_marker='')
+ self.assertIn(f'bgp input-queue-limit {input_queue}', frrconfig)
+ self.assertIn(f'bgp output-queue-limit {output_queue}', frrconfig)
+
def test_bgp_99_bmp(self):
target_name = 'instance-bmp'
target_address = '127.0.0.1'