VPP/Installing VPP binaries from packages
Contents
Intro
If you are simply using vpp, it can be convenient to simply install the packages. The instructions below will pull the latest freshest package build from the master branch (updated on every merge).
Package Descriptions
- vpp - Description: Vector Packet Processing--executables. This package provides VPP executables: vpp, vpp_api_test, vpp_json_test
- vpp - the vector packet engine
- vpp_api_test - vector packet engine API test tool
- vpp_json_test - vector packet engine JSON test tool
- vpp-lib - Description: Vector Packet Processing--runtime libraries. This package contains the VPP shared libraries, including:
- vppinfra - foundation library supporting vectors, hashes, bitmaps, pools, and string formatting.
- svm - vm library
- vlib - vector processing library
- vlib-api - binary API library
- vnet - network stack library
- vpp-plugins - Description: Vector Packet Processing--plugin modules
$ sudo vppctl show plugins Plugin path is: /usr/lib/x86_64-linux-gnu/vpp_plugins:/usr/lib/vpp_plugins Plugin Version Description 1. ioam_plugin.so 19.08-rc0~85-g59e0c8f5d Inbound OAM (Operations, Administration, and Maintenance) 2. memif_plugin.so 19.08-rc0~85-g59e0c8f5d Packet Memory Interface (experimental) 3. perfmon_plugin.so 19.08-rc0~85-g59e0c8f5d Performance monitor 4. crypto_ipsecmb_plugin.so 19.08-rc0~85-g59e0c8f5d Intel IPSEC multi-buffer 5. nsh_plugin.so 19.08-rc0~85-g59e0c8f5d Network Service Header (NSH) 6. avf_plugin.so 19.08-rc0~85-g59e0c8f5d Intel Adaptive Virtual Function (AVF) Device driver 7. pppoe_plugin.so 19.08-rc0~85-g59e0c8f5d PPP over Ethernet (PPPoE) 8. abf_plugin.so 19.08-rc0~85-g59e0c8f5d ACL based Forwarding 9. srv6am_plugin.so 19.08-rc0~85-g59e0c8f5d Masquerading SRv6 proxy 10. ila_plugin.so 19.08-rc0~85-g59e0c8f5d Identifier-locator addressing for IPv6 11. l2e_plugin.so 19.08-rc0~85-g59e0c8f5d L2 Emulation 12. tlsopenssl_plugin.so 19.08-rc0~85-g59e0c8f5d openssl based TLS Engine 13. gtpu_plugin.so 19.08-rc0~85-g59e0c8f5d GPRS Tunnelling Protocol, User Data (GTPv1-U) 14. map_plugin.so 19.08-rc0~85-g59e0c8f5d Mapping of address and port (MAP) 15. stn_plugin.so 19.08-rc0~85-g59e0c8f5d VPP Steals the NIC (STN) for Container integration 16. http_static_plugin.so 19.08-rc0~85-g59e0c8f5d http static server 17. acl_plugin.so 19.08-rc0~85-g59e0c8f5d Access Control Lists (ACL) 18. crypto_openssl_plugin.so 19.08-rc0~85-g59e0c8f5d OpenSSL Crypto Engine 19. tlsmbedtls_plugin.so 19.08-rc0~85-g59e0c8f5d mbedtls based TLS Engine 20. ikev2_plugin.so 19.08-rc0~85-g59e0c8f5d Internet Key Exchange (IKEv2) Protocol 21. ct6_plugin.so 19.08-rc0~85-g59e0c8f5d IPv6 connection tracker 22. cdp_plugin.so 19.08-rc0~85-g59e0c8f5d Cisco Discovery Protocol (CDP) 23. lacp_plugin.so 19.08-rc0~85-g59e0c8f5d Link Aggregation Control Protocol (LACP) 24. flowprobe_plugin.so 19.08-rc0~85-g59e0c8f5d Flow per Packet 25. svs_plugin.so 19.08-rc0~85-g59e0c8f5d Source VRF Select 26. nsim_plugin.so 19.08-rc0~85-g59e0c8f5d Network delay simulator 27. mactime_plugin.so 19.08-rc0~85-g59e0c8f5d Time-based MAC source-address filter 28. lb_plugin.so 19.08-rc0~85-g59e0c8f5d Load Balancer (LB) 29. quic_plugin.so 19.08-rc0~85-g59e0c8f5d Quic transport protocol 30. crypto_ia32_plugin.so 19.08-rc0~85-g59e0c8f5d Intel AESNI Software Crypto Backend 31. srv6as_plugin.so 19.08-rc0~85-g59e0c8f5d Static SRv6 proxy 32. srv6ad_plugin.so 19.08-rc0~85-g59e0c8f5d Dynamic SRv6 proxy 33. rdma_plugin.so 19.08-rc0~85-g59e0c8f5d RDMA (ibverb) Device driver 34. vmxnet3_plugin.so 19.08-rc0~85-g59e0c8f5d VMWare Vmxnet3 Device driver 35. gbp_plugin.so 19.08-rc0~85-g59e0c8f5d Group Based Policy (GBP) 36. igmp_plugin.so 19.08-rc0~85-g59e0c8f5d Internet Group Management Protocol (IGMP) messaging 37. nat_plugin.so 19.08-rc0~85-g59e0c8f5d Network Address Translation (NAT)
- vpp-dbg - Description: Vector Packet Processing--debug symbols
- vpp-dev - Description: Vector Packet Processing--development support. This package contains development support files for the VPP libraries
- vpp-api-java - Description: JAVA binding for the VPP Binary API.
- vpp-api-python - Description: Python binding for the VPP Binary API.
- vpp-api-lua - Description: Lua binding for the VPP Binary API.
Ubuntu/Debian/Centos
Packages are published for both the amd64 (Intel) and aarch64 (ARM) architectures. The packages are stored in the same repository so no special action is required to select your architecture.
Add fd.io repo
VPP release packages are available at: https://packagecloud.io/fdio/release
Note to VPP Committers: Pre-release packages are staged for final verification at: https://packagecloud.io/fdio/staging
If you follow that link you should see a screen presenting buttons to click to get instructions for installing Debian/Rpm packages. Click on the appropriate link for instructions, and those should work for Ubuntu 16.04, 18.04, or Centos7. What to expect when following the link to https://packagecloud.io/fdio/release is in the image below:
If you wish to install the merge-by-merge packages for the vpp master branch or the vpp stable/YYMM branches, the instructions are the same but use instead:
- https://packagecloud.io/fdio/master - for the master branch
- https://packagecloud.io/fdio/1904 - for the stable/1904 branch.
- https://packagecloud.io/fdio/1901 - for the stable/1901 branch.
Install Packages
Debs
Once you have installed the repo:
sudo apt-get update sudo apt-get install vpp
- Optional Debs
sudo apt-get install vpp vpp-plugin-core vpp-plugin-dpdk vpp-dbg vpp-dev vpp-ext-deps vpp-api-python vpp-api-java
Note to Release Managers: As of 19.04, vpp-api-java is produced by the JVPP project which has a delayed release cycle. Do not include vpp-api-java when verifying release packages.
Prior to 19.04,
sudo apt-get install vpp vpp-plugins vpp-dbg vpp-dev vpp-api-java vpp-api-python vpp-api-lua
Note: Prior to 19.04, vpp-plugins contained the dpdk-plugin needed to use dpdk drivers for hardware interfaces. Starting with 19.04, the dpdk drivers are contained in vpp-plugin-dpdk
- Uninstalling Debs
sudo apt-get remove --purge vpp* sudo apt autoremove
RPMs
Note: Circa 19.04-rc0 some dependencies were introduced for Centos7 packages are required to install VPP:
--> Finished Dependency Resolution Error: Package: vpp-plugins-19.04-rc1~b4.x86_64 (fdio_1904) Requires: libmbedtls.so.10()(64bit) Error: Package: vpp-devel-19.04-rc1~b4.x86_64 (fdio_1904) Requires: /usr/bin/python3 Error: Package: vpp-19.04-rc1~b4.x86_64 (fdio_1904) Requires: /usr/bin/python3 Error: Package: vpp-plugins-19.04-rc1~b4.x86_64 (fdio_1904) Requires: libmbedx509.so.0()(64bit) Error: Package: vpp-plugins-19.04-rc1~b4.x86_64 (fdio_1904) Requires: libmbedcrypto.so.2()(64bit)
Installing the following packages on Centos7 resolves these dependency issues:
sudo yum install epel-release mbedtls python36
Once you have installed the repo:
sudo yum install vpp
- Optional RPMs
sudo yum install vpp vpp-plugins vpp-devel vpp-debuginfo vpp-ext-deps vpp-api-python vpp-api-lua vpp-api-java
Note to VPP Release Managers: As of 19.04, vpp-api-java is produced by the JVPP project which has a delayed release cycle. Do not include vpp-api-java when verifying VPP release packages.
Note: vpp-plugins contains the dpdk-plugin needed to use dpdk drivers for hardware interfaces.
- List all vpp packages
yum list vpp*
- Start VPP
sudo systemctl restart vpp
Uninstalling VPP RPMs
sudo yum autoremove vpp*
openSUSE
Blog-post: https://www.suse.com/communities/blog/vector-packet-processing-vpp-opensuse/
Install from official repositories
openSUSE Tumbleweed (rolling release)
sudo zypper install vpp vpp-plugins
openSUSE Leap 42.3
sudo zypper addrepo --name network https://download.opensuse.org/repositories/network/openSUSE_Leap_42.3/network.repo sudo zypper install vpp vpp-plugins
Install from FD.io repositories
If the version of VPP you require has not yet made it in to the official repository you can elect to use the FD.io release repository.
openSUSE Leap 42.3
This repository is available since VPP 18.04.
sudo zypper addrepo --type rpm-md --name "FD.io release" https://nexus.fd.io/content/repositories/fd.io.osleap423/ fdio-leap423 sudo zypper install vpp vpp-plugins
openSUSE Leap 15
This repository is available since VPP 18.10.
If you are interested in cutting-edge master branch then:
sudo curl -s https://packagecloud.io/install/repositories/fdio/master/script.rpm.sh | sudo bash sudo zypper install vpp vpp-plugins
If instead you are looking for a stable release, the latest and greatest available is 18.10
sudo curl -s https://packagecloud.io/install/repositories/fdio/1810/script.rpm.sh | sudo bash sudo zypper install vpp vpp-plugins
Uninstall
openSUSE Tumbleweed (rolling release)
sudo zypper remove -u vpp vpp-plugins
openSUSE Leap 42.3
sudo zypper remove -u vpp vpp-plugins
Optionally also remove the repository:
sudo zypper removerepo network
or
sudo zypper removerepo fdio-leap423
Arch Linux
Available in the Arch User Repository (AUR): https://aur.archlinux.org/packages/vpp/
(Currently the bin packages do not work).
Getting jvpp jar
NOTE: As of VPP 19.04, JVPP is now an independent FD.io project.
Directly downloading jvpp.jar
vpp provides java bindings which can be downloaded
Getting jvpp via maven
Add the following to the repositories section in your ~/.m2/settings.xml to pick up the fd.io maven repo:
<repository> <id>fd.io-release</id> <name>fd.io-release</name> <url>https://nexus.fd.io/content/repositories/fd.io.release/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository>
More information on setting up maven repositories in settings.xml.
Then you can get jvpp by putting in the dependencies section of your pom.xml file:
<dependency> <groupId>io.fd.vpp</groupId> <artifactId>jvpp-core</artifactId> <version>18.04</version> </dependency>
More information on maven dependency managment
Old Nexus Apt/Yum repo instructions
If you wish to access the old Nexus Apt/Yum repo instructions there are available here.