Hello, Community!
We are excited to announce major updates on integrating the VPP data plane. Since our last update, significant efforts have been dedicated to testing and stabilization. While the list of improvements may seem modest, it includes crucial changes that enhance VPP's compatibility across multiple environments and configurations.
In a few words, that's what we've done in the technology preview release:
The VPP addon now supports AWS and Azure, which can significantly boost forwarding performance in specific scenarios, such as Ethernet to VXLAN bridging and routing. However, users should be cautious with resource usage. Default settings can lead to 100% CPU utilization, triggering throttling in cloud environments. Therefore, you need to carefully select VM types and settings - burstable types like T2, T3 in AWS or Bs in Azure are definitely not what you need.
The VPP data plane now supports L2 CrossConnect, Bonding, VLANs, IPIP, and VXLAN without moving packets to the kernel for processing. This enhancement broadens use cases for bare-metal installations, such as data center routers.
vyos@vyos-for-test# set vpp interfaces
Possible completions:
+> bonding Bonding Interface/Link Aggregation
+> bridge Bridge domain
+> geneve Generic Network Virtualization Encapsulation (GENEVE) Interface
+> gre Generic Network Encapsulation (GRE) Interface
+> ipip IP encapsulation tunnel interface
+> loopback Loopback Interface
+> vxlan Virtual Extensible LAN (VXLAN) Interface
+> xconnect Layer 2 cross connect
VPP's performance is highly sensitive to available resources, particularly memory. We've introduced several important CLI commands to manage resource allocation and ensure that configured settings are applicable.
[edit]
vyos@vyos-for-test# set vpp settings
Possible completions:
> buffers Buffer settings
> cpu CPU settings
> host-resources Host resources control
+> interface Interface
> ip6 IPv6 settings
> l2learn Level 2 MAC address learning settings
> lcp Linux control plane setting
> logging Loggint settings
> memory Memory settings
> physmem Physical memory settings
> statseg Stats settings
> unix Unix settings
[edit]
vyos@vyos-for-test# set vpp settings host-resources
Possible completions:
max-map-count Maximum number of memory map areas a process may have (default:
3096)
nr-hugepages Number of pre-allocated huge pages of the default size (default:
1024)
shmmax Maximum shared memory segment size that can be created (default:
2147483648)
Since VPP controls physical interfaces, traditional "show interfaces" commands don't provide detailed physical network information. We've expanded the "show vpp interfaces" command to deliver these details in a clear and optimized format.
vyos@vyos-for-test:~$ show vpp interfaces
Kernel Dataplane Type IP Address MAC MTU State
-------- ----------- ------ ------------ ----------------- ----- -------
eth6 dpdk 0a:34:af:2b:71:22 9000 up
eth7 dpdk 0a:34:af:2b:71:23 9000 down
local0 local 00:00:00:00:00:00 0 down
eth6 tap1 virtio 02:fe:f0:53:0c:e9 9000 up
eth7 tap2 virtio 02:fe:07:4b:e0:3d 9000 up
vyos@vyos-for-test:~$ show vpp interfaces hardware eth6
---------------------------------
Interface eth6:
drops | 0
punt | 0
ip4 | 0
ip6 | 0
rx-no-buf | 0
rx-miss | 0
rx-error | 0
tx-error | 0
mpls | 0
rx packets | 0
rx bytes | 0
rx-unicast packets | 0
rx-unicast bytes | 0
rx-multicast packets | 0
rx-multicast bytes | 0
rx-broadcast packets | 0
rx-broadcast bytes | 0
tx packets | 2
tx bytes | 180
tx-unicast packets | 0
tx-unicast bytes | 0
tx-multicast packets | 0
tx-multicast bytes | 0
tx-broadcast packets | 0
tx-broadcast bytes | 0
Not all configuration combinations are feasible with VPP-enabled interfaces, especially hardware-related settings like Ethernet offloads and other NIC settings. To ensure stability, we've added a safety filter to apply only settings that can be applied. If you see a warning about unsupported options during a commit, remove them to avoid future errors.
vyos@vyos-for-test# commit
[ vpp ]
WARNING: ring-buffer option in eth6 settings is not supported by VPP interfaces. It will be ignored.
WARNING: ring-buffer option in eth7 settings is not supported by VPP interfaces. It will be ignored.
Additionally, VyOS now verifies interface availability and VPP support during configuration and applies necessary vendor/driver-specific tuning.
Debugging messages are now sent to system logs so that the system console remains cleaner and less cluttered.
Previously, the addon required installing a few Debian packages. While this is a simple operation, we were looking for ways to make the installation procedure simpler and friendlier to people without much experience with Debian. Now, the addon is distributed as an executable installer archive suitable for offline usage. Download it, run it on a target router, and follow the prompts.
vyos@vyos-for-test:~$ bash vyos-addon-vpp.run
We continuously track VPP advancements, and new addon versions are based on VPP 24.02.
Documentation is hugely important, and finally, it's available here. We are also conducting and publishing performance tests to highlight the VPP Addon's benefits, even on modest hardware.
The last but probably one of the most important changes in the add-on is that we have made it accessible to all VyOS customers with any paid subscription. If you are a customer, you no longer need to apply for a testing program—simply check the Downloads section in the support portal.
There is still much to be done before the 1.0 release. We aim to ensure the addon’s stability across various environments, enhance integration with VyOS, optimize settings and resource usage, and add more features like firewall, NAT, and VPN. We expect significant progress by the end of the year, with the final build anticipated next year. If you want to speed up the process and be sure that features that are interesting to you will be there as soon as possible, we are happy to listen to your feedback and work together on this.