# Generated by ${vyos_conf_scripts_dir}/vpp.py unix { nodaemon log /var/log/vpp.log full-coredump cli-listen /run/vpp/cli.sock gid vpp systemd-notify # exec /etc/vpp/bootstrap.vpp {% if poll_sleep_usec is vyos_defined %} poll-sleep-usec {{ poll_sleep_usec }} {% endif %} } {% if cpu is vyos_defined %} cpu { {% if cpu.main_core is vyos_defined %} main-core {{ cpu.main_core }} {% endif %} {% if cpu.corelist_workers is vyos_defined %} corelist-workers {{ cpu.corelist_workers }} {% endif %} } {% endif %} {% if resource_allocation.buffers is vyos_defined %} buffers { {% if resource_allocation.buffers.buffers_per_numa is vyos_defined %} buffers-per-numa {{ resource_allocation.buffers.buffers_per_numa }} {% endif %} {% if resource_allocation.buffers.data_size is vyos_defined %} default data-size {{ resource_allocation.buffers.data_size }} {% endif %} {% if resource_allocation.buffers.page_size is vyos_defined %} page-size {{ resource_allocation.buffers.page_size }} {% endif %} } {% endif %} {% if resource_allocation.ipv6 is vyos_defined %} ip6 { {% if resource_allocation.ipv6.hash_buckets is vyos_defined %} hash-buckets {{ resource_allocation.ipv6.hash_buckets }} {% endif %} {% if resource_allocation.ipv6.heap_size is vyos_defined %} heap-size {{ resource_allocation.ipv6.heap_size }} {% endif %} } {% endif %} {% if resource_allocation.mac_limit is vyos_defined %} l2learn { limit {{ resource_allocation.mac_limit }} } {% endif %} {% if logging is vyos_defined %} logging { {% if logging.default_level is vyos_defined %} default-log-level {{ logging.default_level }} default-syslog-log-level {{ logging.default_level }} {% endif %} } {% endif %} {% if resource_allocation.memory.physmem_max_size is vyos_defined %} physmem { max-size {{ resource_allocation.memory.physmem_max_size }} } {% endif %} plugins { plugin default { disable } plugin avf_plugin.so { enable } plugin dpdk_plugin.so { enable } plugin vmxnet3_plugin.so { enable } plugin lacp_plugin.so { enable } plugin linux_cp_plugin.so { enable } plugin linux_nl_plugin.so { enable } plugin pppoe_plugin.so { enable } # Flow plugin flowprobe_plugin.so { enable } plugin sflow_plugin.so { enable } # NAT uncomment if needed # plugin cnat_plugin.so { enable } plugin nat_plugin.so { enable } plugin nat44_ei_plugin.so { enable } plugin det44_plugin.so { enable } # plugin nat44_ei_plugin.so { enable } # plugin nat64_plugin.so { enable } # plugin nat66_plugin.so { enable } # plugin pnat_plugin.so { enable } # Tunnels plugin geneve_plugin.so { enable } plugin gre_plugin.so { enable } plugin vxlan_plugin.so { enable } # Secure # plugin ikev2_plugin.so { enable } # plugin dns_plugin.so { enable } # Probably required for FQDN peers # plugin wireguard_plugin.so { enable } # ACL plugin acl_plugin.so { enable } # DHCP plugin plugin dhcp_plugin.so { enable } } crypto-engines { default { disable } {% if ipsec_acceleration is vyos_defined %} ipsecmb { enable } native { enable } openssl { enable } {% endif %} } linux-cp { lcp-sync lcp-auto-subint {% if ignore_kernel_routes is not vyos_defined %} route-no-paths {% endif %} } {% set netlink_rx_buffers = 268435456 %} linux-nl { nl-rx-buffer-size {{ netlink_rx_buffers }} } {% if resource_allocation.memory.stats is vyos_defined %} statseg { {% if resource_allocation.memory.stats.size is vyos_defined %} size {{ resource_allocation.memory.stats.size }} {% endif %} {% if resource_allocation.memory.stats.page_size is vyos_defined %} page-size {{ resource_allocation.memory.stats.page_size }} {% endif %} } {% endif %} {% if resource_allocation.memory is vyos_defined %} memory { {% if resource_allocation.memory.main_heap_size is vyos_defined %} main-heap-size {{ resource_allocation.memory.main_heap_size }} {% endif %} {% if resource_allocation.memory.main_heap_page_size is vyos_defined %} main-heap-page-size {{ resource_allocation.memory.main_heap_page_size }} {% endif %} {% if resource_allocation.buffers.page_size != '4K' %} default-hugepage-size {{ resource_allocation.buffers.page_size }} {% endif %} } {% endif %} dpdk { # Whitelist the fake PCI address 0000:00:00.0 # This prevents all devices from being added to VPP-DPDK by default dev 0000:00:00.0 {% for iface, iface_config in interface.items() %} {% if iface_config.driver == 'dpdk' %} dev {{ iface_config.dpdk_options.dev_id }} { name {{ iface }} {% if iface_config.num_rx_desc is vyos_defined %} num-rx-desc {{ iface_config.num_rx_desc }} {% endif %} {% if iface_config.num_tx_desc is vyos_defined %} num-tx-desc {{ iface_config.num_tx_desc }} {% endif %} {% if iface_config.num_rx_queues is vyos_defined %} num-rx-queues {{ iface_config.num_rx_queues }} {% endif %} {% if iface_config.num_tx_queues is vyos_defined %} num-tx-queues {{ iface_config.num_tx_queues }} {% endif %} } {% endif %} {% endfor %} uio-bind-force } {% if ipsec_acceleration is vyos_defined %} linux-xfrm-nl { enable-route-mode-ipsec interface ipsec nl-rx-buffer-size {{ netlink_rx_buffers }} } {% endif %} pppoe { enable-pass-nd-and-dhcpv6 }