diff options
| author | Christian Breunig <christian@breunig.cc> | 2026-02-19 16:16:46 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-19 16:16:46 +0100 |
| commit | 388fecf3cfb7729dbd18162a19f84b08afea4afd (patch) | |
| tree | a82f01805b3e3e298b5d5933907305ec5dc7de4d | |
| parent | c386550aa8dd07026eba25bf40323c8d2439b6e2 (diff) | |
| parent | a9070f1d5770241a46c4632528fef86edaba8392 (diff) | |
| download | vyos-1x-388fecf3cfb7729dbd18162a19f84b08afea4afd.tar.gz vyos-1x-388fecf3cfb7729dbd18162a19f84b08afea4afd.zip | |
Merge pull request #4997 from natali-rs1985/T8261
vpp: T8261: Refactor resource settings into 'resource-allocation' section
| -rw-r--r-- | data/templates/vpp/startup.conf.j2 | 85 | ||||
| -rw-r--r-- | interface-definitions/vpp.xml.in | 279 | ||||
| -rw-r--r-- | python/vyos/vpp/config_resource_checks/memory.py | 29 | ||||
| -rw-r--r-- | python/vyos/vpp/config_resource_checks/resource_defaults.py | 2 | ||||
| -rw-r--r-- | python/vyos/vpp/config_verify.py | 16 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_vpp.py | 31 | ||||
| -rwxr-xr-x | src/conf_mode/vpp.py | 13 | ||||
| -rw-r--r-- | src/migration-scripts/vpp/7-to-8 | 57 |
8 files changed, 259 insertions, 253 deletions
diff --git a/data/templates/vpp/startup.conf.j2 b/data/templates/vpp/startup.conf.j2 index d49896336..481261786 100644 --- a/data/templates/vpp/startup.conf.j2 +++ b/data/templates/vpp/startup.conf.j2 @@ -27,36 +27,34 @@ cpu { } {% endif %} -{% if buffers is vyos_defined %} +{% if resource_allocation.buffers is vyos_defined %} buffers { -{% if buffers.buffers_per_numa is vyos_defined %} - buffers-per-numa {{ buffers.buffers_per_numa }} +{% if resource_allocation.buffers.buffers_per_numa is vyos_defined %} + buffers-per-numa {{ resource_allocation.buffers.buffers_per_numa }} {% endif %} -{% if buffers.data_size is vyos_defined %} - default data-size {{ buffers.data_size }} +{% if resource_allocation.buffers.data_size is vyos_defined %} + default data-size {{ resource_allocation.buffers.data_size }} {% endif %} -{% if buffers.page_size is vyos_defined %} - page-size {{ buffers.page_size }} +{% if resource_allocation.buffers.page_size is vyos_defined %} + page-size {{ resource_allocation.buffers.page_size }} {% endif %} } {% endif %} -{% if ipv6 is vyos_defined %} +{% if resource_allocation.ipv6 is vyos_defined %} ip6 { -{% if ipv6.hash_buckets is vyos_defined %} - hash-buckets {{ ipv6.hash_buckets }} +{% if resource_allocation.ipv6.hash_buckets is vyos_defined %} + hash-buckets {{ resource_allocation.ipv6.hash_buckets }} {% endif %} -{% if ipv6.heap_size is vyos_defined %} - heap-size {{ ipv6.heap_size }} +{% if resource_allocation.ipv6.heap_size is vyos_defined %} + heap-size {{ resource_allocation.ipv6.heap_size }} {% endif %} } {% endif %} -{% if l2learn is vyos_defined %} +{% if resource_allocation.mac_limit is vyos_defined %} l2learn { -{% if l2learn.limit is vyos_defined %} - limit {{ l2learn.limit }} -{% endif %} + limit {{ resource_allocation.mac_limit }} } {% endif %} @@ -69,11 +67,9 @@ logging { } {% endif %} -{% if physmem is vyos_defined %} +{% if resource_allocation.memory.physmem_max_size is vyos_defined %} physmem { -{% if physmem.max_size is vyos_defined %} - max-size {{ physmem.max_size }} -{% endif %} + max-size {{ resource_allocation.memory.physmem_max_size }} } {% endif %} @@ -126,46 +122,37 @@ crypto-engines { linux-cp { lcp-sync lcp-auto-subint -{% if lcp.ignore_kernel_routes is not vyos_defined %} +{% if resource_allocation.ignore_kernel_routes is not vyos_defined %} route-no-paths {% endif %} } -{% if lcp.netlink is vyos_defined %} +{% set netlink_rx_buffers = 268435456 %} linux-nl { -{% if lcp.netlink.rx_buffer_size is vyos_defined %} - nl-rx-buffer-size {{ lcp.netlink.rx_buffer_size }} -{% endif %} -{% if lcp.netlink.batch_size is vyos_defined %} - nl-batch-size {{ lcp.netlink.batch_size }} -{% endif %} -{% if lcp.netlink.batch_delay_ms is vyos_defined %} - nl-batch-delay-ms {{ lcp.netlink.batch_delay_ms }} -{% endif %} + nl-rx-buffer-size {{ netlink_rx_buffers }} } -{% endif %} -{% if statseg is vyos_defined %} +{% if resource_allocation.memory.stats is vyos_defined %} statseg { -{% if statseg.size is vyos_defined %} - size {{ statseg.size }} +{% if resource_allocation.memory.stats.size is vyos_defined %} + size {{ resource_allocation.memory.stats.size }} {% endif %} -{% if statseg.page_size is vyos_defined %} - page-size {{ statseg.page_size }} +{% if resource_allocation.memory.stats.page_size is vyos_defined %} + page-size {{ resource_allocation.memory.stats.page_size }} {% endif %} } {% endif %} -{% if memory is vyos_defined %} +{% if resource_allocation.memory is vyos_defined %} memory { -{% if memory.main_heap_size is vyos_defined %} - main-heap-size {{ memory.main_heap_size }} +{% if resource_allocation.memory.main_heap_size is vyos_defined %} + main-heap-size {{ resource_allocation.memory.main_heap_size }} {% endif %} -{% if memory.main_heap_page_size is vyos_defined %} - main-heap-page-size {{ memory.main_heap_page_size }} +{% if resource_allocation.memory.main_heap_page_size is vyos_defined %} + main-heap-page-size {{ resource_allocation.memory.main_heap_page_size }} {% endif %} -{% if buffers.page_size != '4K' %} - default-hugepage-size {{ buffers.page_size }} +{% if resource_allocation.buffers.page_size != '4K' %} + default-hugepage-size {{ resource_allocation.buffers.page_size }} {% endif %} } {% endif %} @@ -200,15 +187,7 @@ dpdk { linux-xfrm-nl { enable-route-mode-ipsec interface ipsec -{% if lcp.netlink.batch_delay_ms is vyos_defined %} - nl-batch-delay-ms {{ lcp.netlink.batch_delay_ms }} -{% endif %} -{% if lcp.netlink.batch_size is vyos_defined %} - nl-batch-size {{ lcp.netlink.batch_size }} -{% endif %} -{% if lcp.netlink.rx_buffer_size is vyos_defined %} - nl-rx-buffer-size {{ lcp.netlink.rx_buffer_size }} -{% endif %} + nl-rx-buffer-size {{ netlink_rx_buffers }} } {% endif %} diff --git a/interface-definitions/vpp.xml.in b/interface-definitions/vpp.xml.in index abe88b3db..86568c1e9 100644 --- a/interface-definitions/vpp.xml.in +++ b/interface-definitions/vpp.xml.in @@ -545,51 +545,148 @@ </properties> <defaultValue>1</defaultValue> </leafNode> - </children> - </node> - <node name="buffers"> - <properties> - <help>Buffer settings</help> - </properties> - <children> - <leafNode name="buffers-per-numa"> + <node name="buffers"> <properties> - <help>Number of buffers per numa node</help> - <valueHelp> - <format>u32:16384-4294967295</format> - <description>Number of buffers</description> - </valueHelp> - <valueHelp> - <format>auto</format> - <description>Auto calculate number of buffers per numa node</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 16384-4294967295"/> - <regex>(auto)</regex> - </constraint> + <help>Buffer settings</help> </properties> - <defaultValue>auto</defaultValue> - </leafNode> - <leafNode name="data-size"> + <children> + <leafNode name="buffers-per-numa"> + <properties> + <help>Number of buffers per numa node</help> + <completionHelp> + <list>auto</list> + </completionHelp> + <valueHelp> + <format>u32:16384-4294967295</format> + <description>Number of buffers</description> + </valueHelp> + <valueHelp> + <format>auto</format> + <description>Auto calculate number of buffers per numa node</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 16384-4294967295"/> + <regex>(auto)</regex> + </constraint> + </properties> + <defaultValue>auto</defaultValue> + </leafNode> + <leafNode name="data-size"> + <properties> + <help>Size of buffer data area</help> + <valueHelp> + <format>u32</format> + <description>Size of buffer data area</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 0-4294967295"/> + </constraint> + </properties> + <defaultValue>2048</defaultValue> + </leafNode> + <leafNode name="page-size"> + <properties> + <help>Set the page-size for buffer allocation</help> + #include <include/unformat_log2_page_size.xml.i> + </properties> + <defaultValue>2M</defaultValue> + </leafNode> + </children> + </node> + <node name="ipv6"> + <properties> + <help>IPv6 settings</help> + </properties> + <children> + <leafNode name="heap-size"> + <properties> + <help>IPv6 heap size</help> + #include <include/unformat_memory_size.xml.i> + </properties> + <defaultValue>32M</defaultValue> + </leafNode> + <leafNode name="hash-buckets"> + <properties> + <help>IPv6 forwarding table hash buckets</help> + <valueHelp> + <format>u32:1-4294967295</format> + <description>IPv6 forwarding table hash buckets</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 1-4294967295"/> + </constraint> + </properties> + <defaultValue>65536</defaultValue> + </leafNode> + </children> + </node> + <leafNode name="mac-limit"> <properties> - <help>Size of buffer data area</help> + <help>Number of MAC addresses in the L2 FIB</help> <valueHelp> - <format>u32:0-4294967295</format> - <description>Size of buffer data area</description> + <format>u32:1-4294967295</format> + <description>Number of MAC addresses in the L2 FIB</description> </valueHelp> <constraint> - <validator name="numeric" argument="--range 0-4294967295"/> + <validator name="numeric" argument="--range 1-4294967295"/> </constraint> </properties> - <defaultValue>2048</defaultValue> + <defaultValue>4194304</defaultValue> </leafNode> - <leafNode name="page-size"> + <leafNode name="ignore-kernel-routes"> <properties> - <help>Set the page-size for buffer allocation</help> - #include <include/unformat_log2_page_size.xml.i> + <help>Ignore kernel routes</help> + <valueless/> </properties> - <defaultValue>2M</defaultValue> </leafNode> + <node name="memory"> + <properties> + <help>Memory settings</help> + </properties> + <children> + <leafNode name="main-heap-size"> + <properties> + <help>Main heap size</help> + #include <include/unformat_memory_size.xml.i> + </properties> + <defaultValue>3G</defaultValue> + </leafNode> + <leafNode name="main-heap-page-size"> + <properties> + <help>Main heap page size</help> + #include <include/unformat_log2_page_size.xml.i> + </properties> + <defaultValue>2M</defaultValue> + </leafNode> + <leafNode name="physmem-max-size"> + <properties> + <help>Memory size for protectable memory allocator (pmalloc) memory space</help> + #include <include/unformat_memory_size.xml.i> + </properties> + </leafNode> + <node name="stats"> + <properties> + <help>Stats settings</help> + </properties> + <children> + <leafNode name="size"> + <properties> + <help>Size of stats segment</help> + #include <include/unformat_memory_size.xml.i> + </properties> + <defaultValue>128M</defaultValue> + </leafNode> + <leafNode name="page-size"> + <properties> + <help>Stats page size</help> + #include <include/unformat_log2_page_size.xml.i> + </properties> + <defaultValue>2M</defaultValue> + </leafNode> + </children> + </node> + </children> + </node> </children> </node> <tagNode name="interface"> @@ -660,73 +757,12 @@ </leafNode> </children> </tagNode> - <node name="ipv6"> - <properties> - <help>IPv6 settings</help> - </properties> - <children> - <leafNode name="heap-size"> - <properties> - <help>IPv6 heap size</help> - #include <include/unformat_memory_size.xml.i> - </properties> - <defaultValue>32M</defaultValue> - </leafNode> - <leafNode name="hash-buckets"> - <properties> - <help>IPv6 forwarding table hash buckets</help> - <valueHelp> - <format>u32:1-4294967295</format> - <description>IPv6 forwarding table hash buckets</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-4294967295"/> - </constraint> - </properties> - <defaultValue>65536</defaultValue> - </leafNode> - </children> - </node> <leafNode name="ipsec-acceleration"> <properties> <help>Enable IPsec acceleration</help> <valueless/> </properties> </leafNode> - <node name="l2learn"> - <properties> - <help>Level 2 MAC address learning settings</help> - </properties> - <children> - <leafNode name="limit"> - <properties> - <help>Number of MAC addresses in the L2 FIB</help> - <valueHelp> - <format>u32:1-4294967295</format> - <description>Number of concurent entries</description> - </valueHelp> - <constraint> - <validator name="numeric" argument="--range 1-4294967295"/> - </constraint> - </properties> - <defaultValue>4194304</defaultValue> - </leafNode> - </children> - </node> - <node name="lcp"> - <properties> - <help>Linux control plane setting</help> - </properties> - <children> - #include <include/vpp/netlink.xml.i> - <leafNode name="ignore-kernel-routes"> - <properties> - <help>Ignore kernel routes</help> - <valueless/> - </properties> - </leafNode> - </children> - </node> <node name="logging"> <properties> <help>Logging settings</help> @@ -781,61 +817,6 @@ </leafNode> </children> </node> - <node name="memory"> - <properties> - <help>Memory settings</help> - </properties> - <children> - <leafNode name="main-heap-size"> - <properties> - <help>Main heap size</help> - #include <include/unformat_memory_size.xml.i> - </properties> - <defaultValue>3G</defaultValue> - </leafNode> - <leafNode name="main-heap-page-size"> - <properties> - <help>Main heap page size</help> - #include <include/unformat_log2_page_size.xml.i> - </properties> - <defaultValue>2M</defaultValue> - </leafNode> - </children> - </node> - <node name="physmem"> - <properties> - <help>Physical memory settings</help> - </properties> - <children> - <leafNode name="max-size"> - <properties> - <help>Set memory size for protectable memory allocator (pmalloc) memory space</help> - #include <include/unformat_memory_size.xml.i> - </properties> - </leafNode> - </children> - </node> - <node name="statseg"> - <properties> - <help>Stats settings</help> - </properties> - <children> - <leafNode name="size"> - <properties> - <help>Size of stats segment</help> - #include <include/unformat_memory_size.xml.i> - </properties> - <defaultValue>128M</defaultValue> - </leafNode> - <leafNode name="page-size"> - <properties> - <help>Stats page size</help> - #include <include/unformat_log2_page_size.xml.i> - </properties> - <defaultValue>2M</defaultValue> - </leafNode> - </children> - </node> <leafNode name="poll-sleep-usec"> <properties> <help>Add a fixed-sleep between main loop poll</help> diff --git a/python/vyos/vpp/config_resource_checks/memory.py b/python/vyos/vpp/config_resource_checks/memory.py index e28a04873..c8073f64b 100644 --- a/python/vyos/vpp/config_resource_checks/memory.py +++ b/python/vyos/vpp/config_resource_checks/memory.py @@ -91,30 +91,32 @@ def get_numa_count(): def buffer_page_size(settings: dict) -> int: - page_size = settings.get('buffers', {}).get('page_size') + page_size = settings['resource_allocation']['buffers']['page_size'] return human_memory_to_bytes(page_size) def buffer_size(settings: dict) -> int: numa_count = get_numa_count() - buffers_per_numa = int(settings.get('buffers').get('buffers_per_numa')) - data_size = int(settings.get('buffers').get('data_size')) + buffers_per_numa = int( + settings['resource_allocation']['buffers']['buffers_per_numa'] + ) + data_size = int(settings['resource_allocation']['buffers']['data_size']) buffers_memory = buffers_per_numa * data_size * numa_count return buffers_memory def main_heap_page_size(settings: dict) -> int: - heap_page_size = settings.get('memory').get('main_heap_page_size') + heap_page_size = settings['resource_allocation']['memory']['main_heap_page_size'] return human_memory_to_bytes(heap_page_size) def memory_main_heap(settings: dict) -> int: - heap_size = settings.get('memory').get('main_heap_size') + heap_size = settings['resource_allocation']['memory']['main_heap_size'] return human_memory_to_bytes(heap_size) def ipv6_heap_size(settings: dict) -> int: - heap_size = settings.get('ipv6').get('heap_size') + heap_size = settings['resource_allocation']['ipv6']['heap_size'] return human_memory_to_bytes(heap_size) @@ -123,12 +125,12 @@ def total_heap_size(heap_size: int, heap_page_size: int) -> int: def statseg_size(settings: dict) -> int: - statseg_memory = settings.get('statseg').get('size') + statseg_memory = settings['resource_allocation']['memory']['stats']['size'] return human_memory_to_bytes(statseg_memory) def statseg_page_size(settings: dict) -> int: - page_size = settings.get('statseg').get('page_size') + page_size = settings['resource_allocation']['memory']['stats']['page_size'] return human_memory_to_bytes(page_size) @@ -141,16 +143,7 @@ def total_memory_required(settings: dict) -> dict: mem_stats = { 'memory_buffers': (buffer_size(settings), buffer_page_size(settings)), - 'netlink_buffer_size': ( - int( - settings.get('lcp', {}) - .get('netlink', {}) - .get( - 'rx_buffer_size', default_resource_map.get('netlink_rx_buffer_size') - ) - ), - 0, - ), + 'netlink_buffer_size': (default_resource_map.get('netlink_rx_buffer_size'), 0), 'heap_size': ( total_heap_size( heap_size=memory_main_heap(settings), diff --git a/python/vyos/vpp/config_resource_checks/resource_defaults.py b/python/vyos/vpp/config_resource_checks/resource_defaults.py index 71a98703e..aa1c9a8a0 100644 --- a/python/vyos/vpp/config_resource_checks/resource_defaults.py +++ b/python/vyos/vpp/config_resource_checks/resource_defaults.py @@ -19,7 +19,7 @@ default_resource_map = { # Default size of buffers transferred via netlink - 'netlink_rx_buffer_size': 212992, + 'netlink_rx_buffer_size': 268435456, # Minimal amount of memory required to start VPP 'min_memory': '8G', # Minimal number of physical CPU cores required to start VPP diff --git a/python/vyos/vpp/config_verify.py b/python/vyos/vpp/config_verify.py index f8bfb214a..1e56457da 100644 --- a/python/vyos/vpp/config_verify.py +++ b/python/vyos/vpp/config_verify.py @@ -335,16 +335,16 @@ def verify_vpp_cpu_cores(cpu_cores: int): def verify_vpp_statseg_size(settings: dict): statseg_size = mem_checks.statseg_size(settings) - if 'size' in settings.get('statseg'): + if 'size' in settings['resource_allocation']['memory']['stats']: if statseg_size < 128 << 20: - raise ConfigError('The statseg size must be greater than or equal to 128M') + raise ConfigError('The "stats size" must be greater than or equal to 128M') - if 'page_size' in settings['statseg']: + if 'page_size' in settings['resource_allocation']['memory']['stats']: statseg_page_size = mem_checks.statseg_page_size(settings) if statseg_page_size > statseg_size: readable_statseg_page = bytes_to_human_memory(statseg_page_size, 'K') raise ConfigError( - f'The statseg size must be greater than or equal to page-size ({readable_statseg_page})' + f'The "stats size" must be greater than or equal to page-size ({readable_statseg_page})' ) @@ -370,9 +370,9 @@ def verify_routes_count(settings: dict): bytes = 16 # each counter consumes 16 bytes statseg_scale = 2 cpu_cores = int(settings['resource_allocation']['cpu_cores']) - statseg_size = settings['statseg']['size'] + statseg_size = settings['resource_allocation']['memory']['stats']['size'] statseg_size_in_bytes = human_memory_to_bytes(statseg_size) - main_heap = settings['memory']['main_heap_size'] + main_heap = settings['resource_allocation']['memory']['main_heap_size'] main_heap_in_gb = human_memory_to_bytes(main_heap) >> 30 formula = cpu_cores * counters * bytes * statseg_scale @@ -389,7 +389,9 @@ def verify_routes_count(settings: dict): def verify_vpp_buffers(settings: dict): - buffers_configured = int(settings['buffers']['buffers_per_numa']) + buffers_configured = int( + settings['resource_allocation']['buffers']['buffers_per_numa'] + ) buffers_required = mem_checks.buffers_required(settings) diff --git a/smoketest/scripts/cli/test_vpp.py b/smoketest/scripts/cli/test_vpp.py index 1e079b2ca..a7bb19882 100755 --- a/smoketest/scripts/cli/test_vpp.py +++ b/smoketest/scripts/cli/test_vpp.py @@ -39,6 +39,7 @@ from vyos.vpp.config_resource_checks.resource_defaults import default_resource_m PROCESS_NAME = 'vpp_main' VPP_CONF = '/run/vpp/vpp.conf' base_path = ['vpp'] +resource_path = base_path + ['settings', 'resource-allocation'] interface = 'eth1' @@ -158,7 +159,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): required_str = 'lcp route-no-paths on' self.assertIn(required_str, out) - self.cli_set(base_path + ['settings', 'lcp', 'ignore-kernel-routes']) + self.cli_set(resource_path + ['ignore-kernel-routes']) self.cli_commit() # check disabled 'route no path' @@ -1146,9 +1147,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): with self.assertRaises(ConfigSessionError): self.cli_commit() - self.cli_set( - base_path + ['settings', 'resource-allocation', 'cpu-cores', cpu_cores] - ) + self.cli_set(resource_path + ['cpu-cores', cpu_cores]) # # DPDK driver expect only dpdk-options and not xdp-options to be set # # expect raise ConfigError @@ -1174,13 +1173,11 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): # verify 'cpu-cores' are set not correctly # expect raise ConfigError - self.cli_set(base_path + ['settings', 'resource-allocation', 'cpu-cores', '99']) + self.cli_set(resource_path + ['cpu-cores', '99']) with self.assertRaises(ConfigSessionError): self.cli_commit() - self.cli_set( - base_path + ['settings', 'resource-allocation', 'cpu-cores', cpu_cores] - ) + self.cli_set(resource_path + ['cpu-cores', cpu_cores]) self.cli_commit() config_entries = ( @@ -1198,7 +1195,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): def test_12_1_buffer_page_size(self): sizes = ['4K', '2M'] for size in sizes: - self.cli_set(base_path + ['settings', 'buffers', 'page-size', size]) + self.cli_set(resource_path + ['buffers', 'page-size', size]) self.cli_commit() conf = get_vpp_config() @@ -1207,7 +1204,7 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): def test_12_2_statseg_page_size(self): sizes = ['4K', '2M'] for size in sizes: - self.cli_set(base_path + ['settings', 'statseg', 'page-size', size]) + self.cli_set(resource_path + ['memory', 'stats', 'page-size', size]) self.cli_commit() conf = get_vpp_config() @@ -1216,32 +1213,22 @@ class TestVPP(VyOSUnitTestSHIM.TestCase): def test_12_3_mem_page_size(self): sizes = ['4K', '2M'] for size in sizes: - self.cli_set( - base_path + ['settings', 'memory', 'main-heap-page-size', size] - ) + self.cli_set(resource_path + ['memory', 'main-heap-page-size', size]) self.cli_commit() conf = get_vpp_config() self.assertEqual(conf['memory']['main-heap-page-size'], size) def test_13_vpp_ipsec_xfrm_nl(self): - base_lcp = base_path + ['settings', 'lcp'] - batch_delay = '250' - batch_size = '150' - rx_buffer_zise = '1024' + rx_buffer_zise = default_resource_map.get('netlink_rx_buffer_size') self.cli_set(base_path + ['settings', 'ipsec-acceleration']) - self.cli_set(base_lcp + ['netlink', 'batch-delay-ms', batch_delay]) - self.cli_set(base_lcp + ['netlink', 'batch-size', batch_size]) - self.cli_set(base_lcp + ['netlink', 'rx-buffer-size', rx_buffer_zise]) self.cli_commit() config_entries = ( 'linux-xfrm-nl', 'enable-route-mode-ipsec', 'interface ipsec', - f'nl-batch-delay-ms {batch_delay}', - f'nl-batch-size {batch_size}', f'nl-rx-buffer-size {rx_buffer_zise}', ) diff --git a/src/conf_mode/vpp.py b/src/conf_mode/vpp.py index d436fbe6b..b02c809ec 100755 --- a/src/conf_mode/vpp.py +++ b/src/conf_mode/vpp.py @@ -170,9 +170,14 @@ def _configure_vpp_cpu_settings(config: dict): def _normalize_buffers(config: dict): """Replace 'auto' buffers_per_numa with calculated value""" - if config['settings']['buffers']['buffers_per_numa'] == 'auto': + if ( + config['settings']['resource_allocation']['buffers']['buffers_per_numa'] + == 'auto' + ): buffers = memory.buffers_required(config['settings']) - config['settings']['buffers']['buffers_per_numa'] = str(buffers) + config['settings']['resource_allocation']['buffers']['buffers_per_numa'] = str( + buffers + ) def _get_max_xdp_rx_queues(config: dict): @@ -770,7 +775,9 @@ def apply(config): vpp_control = VPPControl() # preconfigure LCP plugin - if 'ignore_kernel_routes' in config.get('settings', {}).get('lcp', {}): + if 'ignore_kernel_routes' in config['settings'].get( + 'resource_allocation', {} + ): vpp_control.cli_cmd('lcp param route-no-paths off') else: vpp_control.cli_cmd('lcp param route-no-paths on') diff --git a/src/migration-scripts/vpp/7-to-8 b/src/migration-scripts/vpp/7-to-8 index 54a1a7c43..22d5e6d31 100644 --- a/src/migration-scripts/vpp/7-to-8 +++ b/src/migration-scripts/vpp/7-to-8 @@ -31,6 +31,8 @@ # - `vpp settings interface <ethN> num-*` # and delete `vpp settings interface <ethN> dpdk-options promisc` (T8274) # +# Migrate all resource settings into 'resource-allocation' section (T8261) +# from vyos.configtree import ConfigTree @@ -188,6 +190,60 @@ def _migrate_vpp_dpdk_options(config: ConfigTree) -> None: config.delete(promisc_path) +def _migrate_vpp_resources(config: ConfigTree) -> None: + base = ['vpp', 'settings'] + new_base = ['vpp', 'settings', 'resource-allocation'] + + if not config.exists(new_base): + config.set(new_base) + + if config.exists(base + ['buffers']): + # copy "settings buffers" to "settings resource-allocation buffers" + config.copy(base + ['buffers'], new_base + ['buffers']) + config.delete(base + ['buffers']) + + if config.exists(base + ['memory']): + # copy "settings memory" to "settings resource-allocation memory" + config.copy(base + ['memory'], new_base + ['memory']) + config.delete(base + ['memory']) + + if config.exists(base + ['statseg']): + # copy "settings statseg" to "settings resource-allocation memory stats" + if not config.exists(new_base + ['memory']): + config.set(new_base + ['memory']) + config.copy(base + ['statseg'], new_base + ['memory', 'stats']) + config.delete(base + ['statseg']) + + if config.exists(base + ['ipv6']): + # copy "settings ipv6" to "settings resource-allocation ipv6" + config.copy(base + ['ipv6'], new_base + ['ipv6']) + config.delete(base + ['ipv6']) + + if config.exists(base + ['lcp']): + # move "settings lcp ignore-kernel-routes" to "settings resource-allocation ignore-kernel-routes" + # and remove "settings lcp netlink" node + if config.exists(base + ['lcp', 'ignore-kernel-routes']): + config.set(new_base + ['ignore-kernel-routes']) + config.delete(base + ['lcp']) + + if config.exists(base + ['l2learn']): + # move "settings l2learn limit" to "settings resource-allocation mac-limit" + if config.exists(base + ['l2learn', 'limit']): + tmp = config.return_value(base + ['l2learn', 'limit']) + config.set(new_base + ['mac-limit'], value=tmp) + config.delete(base + ['l2learn']) + + if config.exists(base + ['physmem']): + # move "settings physmem max-size" to "settings resource-allocation memory physmem-max-size" + if config.exists(base + ['physmem', 'max-size']): + tmp = config.return_value(base + ['physmem', 'max-size']) + config.set(new_base + ['memory', 'physmem-max-size'], value=tmp) + config.delete(base + ['physmem']) + + if len(config.list_nodes(new_base)) == 0: + config.delete(new_base) + + def migrate(config: ConfigTree) -> None: if not config.exists(['vpp']): # Nothing to do @@ -200,3 +256,4 @@ def migrate(config: ConfigTree) -> None: _migrate_vpp_cpu(config) _migrate_vpp_interface_rx_mode(config) _migrate_vpp_dpdk_options(config) + _migrate_vpp_resources(config) |
