VyOS Platform Blog

VyOS VPP addon technology preview is available now

Written by Taras Pudiak | May 30, 2024 5:38:26 AM Z

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 short

In a few words, that's what we've done in the technology preview release:

  • Improved VPP data plane integration.
  • Added support for new devices and environments.
  • Improved the stability of Ethernet interface initialization.
  • Made the addon is available for all customers with paid subscriptions.

 

AWS and Azure Support

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.

 

New Interface Types

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

 

Improved System Resource Control

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)

 

Enhanced Statuses and Statistics

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

 

Improved Stability for Ethernet

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.

 

Reduced Debugging Messages

Debugging messages are now sent to system logs so that the system console remains cleaner and less cluttered.

 

Installer

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

New VPP Version

We continuously track VPP advancements, and new addon versions are based on VPP 24.02.

 

Documentation and Performance Tests

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.

 

Distribution

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.

 

Future Work

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.