Install VPP on Ubuntu

Add package sources to the sources.list

/etc/apt/sources.list.d/99fd.io.list
deb [trusted=yes] https://packagecloud.io/fdio/release/ubuntu bionic main
deb http://cz.archive.ubuntu.com/ubuntu bionic main universe

Add keys

curl -L https://packagecloud.io/fdio/release/gpgkey | sudo apt-key add -

Install required vpp packages

sudo apt install vpp vpp-plugin-core vpp-plugin-dpdk

troubleshooting

 /workspace $ sudo apt install libmedx509-0 Reading package lists... Done Building dependency tree
Reading state information... Done E: Unable to locate package libmedx509-0

/workspace $ sudo apt install libmbedx509-0 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 libmbedtls10 : Depends: libmbedcrypto1 (>= 2.7) but it is not going to be installed
 libmbedx509-0 : Depends: libmbedcrypto3 (>= 2.14) but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

gitpod /workspace $ sudo apt install vpp vpp-plugin-core vpp-plugin-dpdk Reading package lists... Done Building dependency tree
Reading state information... Done The following additional packages will be installed: libnl-3-200 libnl-route-3-200 libnuma1 libsubunit0 libvppinfra The following NEW packages will be installed: libnl-3-200 libnl-route-3-200 libnuma1 libsubunit0 libvppinfra vpp vpp-plugin-core vpp-plugin-dpdk 0 upgraded, 8 newly installed, 0 to remove and 21 not upgraded. Need to get 14.2 MB of archives. After this operation, 105 MB of additional disk space will be used. Do you want to continue? [Y/n] y Get:1 https://packagecloud.io/fdio/release/ubuntu bionic/main amd64 libvppinfra amd64 21.10.1-release [210 kB] Get:2 http://archive.ubuntu.com/ubuntu focal/main amd64 libnuma1 amd64 2.0.12-1 [20.8 kB] Get:3 https://packagecloud.io/fdio/release/ubuntu bionic/main amd64 vpp amd64 21.10.1-release [5,648 kB] Get:4 https://packagecloud.io/fdio/release/ubuntu bionic/main amd64 vpp-plugin-core amd64 21.10.1-release [4,152 kB] Get:5 http://archive.ubuntu.com/ubuntu focal/main amd64 libnl-3-200 amd64 3.4.0-1 [53.9 kB]
Get:6 https://packagecloud.io/fdio/release/ubuntu bionic/main amd64 vpp-plugin-dpdk amd64 21.10.1-release [3,915 kB] Get:7 http://archive.ubuntu.com/ubuntu focal/main amd64 libnl-route-3-200 amd64 3.4.0-1 [149 kB] Get:8 http://archive.ubuntu.com/ubuntu focal/main amd64 libsubunit0 amd64 1.4.0-0ubuntu1 [6,408 B] Fetched 14.2 MB in 1s (14.0 MB/s)
debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libnuma1:amd64. (Reading database ... 36653 files and directories currently installed.) Preparing to unpack .../0-libnuma1_2.0.12-1_amd64.deb ... Unpacking libnuma1:amd64 (2.0.12-1) ... Selecting previously unselected package libnl-3-200:amd64. Preparing to unpack .../1-libnl-3-200_3.4.0-1_amd64.deb ... Unpacking libnl-3-200:amd64 (3.4.0-1) ... Selecting previously unselected package libnl-route-3-200:amd64. Preparing to unpack .../2-libnl-route-3-200_3.4.0-1_amd64.deb ... Unpacking libnl-route-3-200:amd64 (3.4.0-1) ... Selecting previously unselected package libsubunit0:amd64. Preparing to unpack .../3-libsubunit0_1.4.0-0ubuntu1_amd64.deb ... Unpacking libsubunit0:amd64 (1.4.0-0ubuntu1) ... Selecting previously unselected package libvppinfra. Preparing to unpack .../4-libvppinfra_21.10.1-release_amd64.deb ... Unpacking libvppinfra (21.10.1-release) ... Selecting previously unselected package vpp. Preparing to unpack .../5-vpp_21.10.1-release_amd64.deb ... start-stop-daemon: unable to stat /usr/bin/vpp (No such file or directory) Unpacking vpp (21.10.1-release) ... Selecting previously unselected package vpp-plugin-core. Preparing to unpack .../6-vpp-plugin-core_21.10.1-release_amd64.deb ... Unpacking vpp-plugin-core (21.10.1-release) ... Selecting previously unselected package vpp-plugin-dpdk. Preparing to unpack .../7-vpp-plugin-dpdk_21.10.1-release_amd64.deb ... Unpacking vpp-plugin-dpdk (21.10.1-release) ... Setting up libsubunit0:amd64 (1.4.0-0ubuntu1) ... Setting up libvppinfra (21.10.1-release) ... Setting up libnuma1:amd64 (2.0.12-1) ... Setting up libnl-3-200:amd64 (3.4.0-1) ... Setting up libnl-route-3-200:amd64 (3.4.0-1) ... Setting up vpp (21.10.1-release) ...
Applying /etc/sysctl.d/10-console-messages.conf ... sysctl: setting key "kernel.printk", ignoring: Read-only file systemApplying /etc/sysctl.d/10-ipv6-privacy.conf ... sysctl: setting key "net.ipv6.conf.all.use_tempaddr", ignoring: Read-only file system sysctl: setting key "net.ipv6.conf.default.use_tempaddr", ignoring: Read-only file systemApplying /etc/sysctl.d/10-kernel-hardening.conf ... sysctl: setting key "kernel.kptr_restrict", ignoring: Read-only file systemApplying /etc/sysctl.d/10-link-restrictions.conf ... sysctl: setting key "fs.protected_hardlinks", ignoring: Read-only file system sysctl: setting key "fs.protected_symlinks", ignoring: Read-only file systemApplying /etc/sysctl.d/10-magic-sysrq.conf ... sysctl: setting key "kernel.sysrq", ignoring: Read-only file systemApplying /etc/sysctl.d/10-network-security.conf ... sysctl: setting key "net.ipv4.conf.default.rp_filter", ignoring: Read-only file system sysctl: setting key "net.ipv4.conf.all.rp_filter", ignoring: Read-only file systemApplying /etc/sysctl.d/10-ptrace.conf ... sysctl: setting key "kernel.yama.ptrace_scope", ignoring: Read-only file systemApplying /etc/sysctl.d/10-zeropage.conf ... sysctl: setting key "vm.mmap_min_addr", ignoring: Read-only file systemApplying /usr/lib/sysctl.d/50-default.conf ... sysctl: setting key "net.ipv4.conf.default.promote_secondaries", ignoring: Read-only file system sysctl: setting key "net.ipv4.conf.all.promote_secondaries", ignoring: Read-only file system sysctl: setting key "net.ipv4.ping_group_range", ignoring: Read-only file system sysctl: setting key "fs.protected_regular", ignoring: Read-only file system sysctl: setting key "fs.protected_fifos", ignoring: Read-only file systemApplying /usr/lib/sysctl.d/50-pid-max.conf ... sysctl: setting key "kernel.pid_max", ignoring: Read-only file systemApplying /etc/sysctl.d/80-vpp.conf ... sysctl: setting key "vm.nr_hugepages", ignoring: Read-only file system sysctl: setting key "vm.max_map_count", ignoring: Read-only file system sysctl: setting key "vm.hugetlb_shm_group", ignoring: Read-only file system sysctl: setting key "kernel.shmmax", ignoring: Read-only file systemApplying /etc/sysctl.d/99-sysctl.conf ...Applying /usr/lib/sysctl.d/protect-links.conf ... sysctl: setting key "fs.protected_fifos", ignoring: Read-only file system sysctl: setting key "fs.protected_hardlinks", ignoring: Read-only file system sysctl: setting key "fs.protected_regular", ignoring: Read-only file system sysctl: setting key "fs.protected_symlinks", ignoring: Read-only file systemApplying /etc/sysctl.conf ... Created symlink /etc/systemd/system/multi-user.target.wants/vpp.service → /lib/systemd/system/vpp.service. Setting up vpp-plugin-dpdk (21.10.1-release) ... Setting up vpp-plugin-core (21.10.1-release) ... Processing triggers for libc-bin (2.31-0ubuntu9.9) ... gitpod /workspace $ sudo vi /etc/apt/sources.list.d/99fd.io.list gitpod /workspace $ sudo apt install vpp vpp-plugin-core vpp-plugin-dpdk
Reading package lists... 0% Reading package lists... Done Building dependency tree
Reading state information... Done vpp is already the newest version (21.10.1-release). vpp-plugin-core is already the newest version (21.10.1-release). vpp-plugin-dpdk is already the newest version (21.10.1-release). 0 upgraded, 0 newly installed, 0 to remove and 21 not upgraded. gitpod /workspace $ gitpod /workspace $ gitpod /workspace $ sudo apt install vpp vpp-plugin-core vpp-plugin-dpdk^C gitpod /workspace $ sudo usermod -a -G vpp user1 usermod: user 'user1' does not exist gitpod /workspace $ sudo useradd vpp1 gitpod /workspace $ sudo usermod -a -G vpp vpp1 gitpod /workspace $ gitpod /workspace $ gitpod /workspace $ newgrp vpp Password: Invalid password. gitpod /workspace $ newgrp vpp Password: Invalid password. gitpod /workspace $ newgrp vpp Password: Invalid password. gitpod /workspace $ sudo passwd vpp passwd: user 'vpp' does not exist gitpod /workspace $ sudo passwd -g vpp passwd: invalid option -- 'g' Usage: passwd [options] [LOGIN]
Options: -a, --all report password status on all accounts -d, --delete delete the password for the named account -e, --expire force expire the password for the named account -h, --help display this help message and exit -k, --keep-tokens change password only if expired -i, --inactive INACTIVE set password inactive after expiration to INACTIVE -l, --lock lock the password of the named account -n, --mindays MIN_DAYS set minimum number of days before password change to MIN_DAYS -q, --quiet quiet mode -r, --repository REPOSITORY change password in REPOSITORY repository -R, --root CHROOT_DIR directory to chroot into -S, --status report password status on the named account -u, --unlock unlock the password of the named account -w, --warndays WARN_DAYS set expiration warning days to WARN_DAYS -x, --maxdays MAX_DAYS set maximum number of days before password change to MAX_DAYS
gitpod /workspace $ sudo passwd vpp1 New password: Retype new password: passwd: password updated successfully gitpod /workspace $ newgrp vpp Password: Invalid password. gitpod /workspace $ sudo newgrp vpp root@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# cat /usr/lib/systemd/system/vpp.service [Unit] Description=vector packet processing engine After=network.target
[Service] Type=simple ExecStartPre=-/sbin/modprobe uio_pci_generic ExecStart=/usr/bin/vpp -c /etc/vpp/startup.conf ExecStopPost=/bin/rm -f /dev/shm/db /dev/shm/global_vm /dev/shm/vpe-api Restart=always
Uncomment the following line to enable VPP coredumps on crash
You still need to configure the rest of the system to collect them, see
https://fdio-vpp.readthedocs.io/en/latest/troubleshooting/reportingissues/reportingissues.html#core-files
for details
#LimitCORE=infinity
[Install] WantedBy=multi-user.target root@jbeder-yamlcpp-radsrx9yecm:/workspace# ls /run/ apache2/ lock/ mount/ sendsigs.omit.d/ systemd/ utmp
docker.sock log/ nginx/ shm/ user/
root@jbeder-yamlcpp-radsrx9yecm:/workspace# ls /run/ apache2/ lock/ mount/ sendsigs.omit.d/ systemd/ utmp
docker.sock log/ nginx/ shm/ user/
root@jbeder-yamlcpp-radsrx9yecm:/workspace# ls /run/ apache2/ lock/ mount/ sendsigs.omit.d/ systemd/ utmp
docker.sock log/ nginx/ shm/ user/
root@jbeder-yamlcpp-radsrx9yecm:/workspace# sudo vppctl -s /run/vpp/cli-vpp1.sock clib_socket_init: connect (fd 3, '/run/vpp/cli-vpp1.sock'): No such file or directoryroot@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# /etc/ alternatives/ containerd/ dpkg/ init/ logrotate.d/ PackageKit/ python3.8/ rcS.d/ sudoers.d/ vpp/ apache2/ cron.d/ emacs/ init.d/ lynx/ pam.d/ rc0.d/ rmt sysctl.d/ X11/ apparmor.d/ cron.daily/ fish/ iproute2/ mercurial/ perl/ rc1.d/ security/ systemd/ xdg/ apt/ cron.weekly/ fonts/ kernel/ modules-load.d/ php/ rc2.d/ selinux/ terminfo/ zsh/ bash_completion.d/ dbus-1/ gdb/ ldap/ mysql/ polkit-1/ rc3.d/ skel/ tmpfiles.d/
binfmt.d/ dconf/ groff/ ld.so.conf.d/ nginx/ profile.d/ rc4.d/ ssh/ ufw/
ca-certificates/ default/ gss/ libnl-3/ nix/ python2.7/ rc5.d/ ssl/ update-motd.d/
calendar/ dhcp/ ImageMagick-6/ logcheck/ opt/ python3/ rc6.d/ subversion/ vim/
root@jbeder-yamlcpp-radsrx9yecm:/workspace# vpp root@jbeder-yamlcpp-radsrx9yecm:/workspace# vppctl clib_socket_init: connect (fd 3, '/run/vpp/cli.sock'): No such file or directoryroot@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# root@jbeder-yamlcpp-radsrx9yecm:/workspace# cat /run/vpp/cli-vpp1.sock cat: /run/vpp/cli-vpp1.sock: No such file or directory root@jbeder-yamlcpp-radsrx9yecm:/workspace# ls /etc/vpp/ startup.conf root@jbeder-yamlcpp-radsrx9yecm:/workspace# cat /etc/vpp/startup.conf
unix { nodaemon log /var/log/vpp/vpp.log full-coredump cli-listen /run/vpp/cli.sock gid vpp
run vpp in the interactive mode
interactive
do not use colors in terminal output
nocolor
do not display banner
nobanner
}
api-trace {
This stanza controls binary API tracing. Unless there is a very strong reason,
please leave this feature enabled.
on
Additional parameters:

To set the number of binary API trace records in the circular buffer, configure nitems

nitems

To save the api message table decode tables, configure a filename. Results in /tmp/
Very handy for understanding api message changes between versions, identifying missing
plugins, and so forth.

save-api-table
}
api-segment { gid vpp }
socksvr { default }
memory {
    ## Set the main heap size, default is 1G    # main-heap-size 2G    ## Set the main heap page size. Default page size is OS default page    ## which is in most cases 4K. if different page size is specified VPP    ## will try to allocate main heap by using specified page size.    ## special keyword 'default-hugepage' will use system default hugepage    ## size    # main-heap-page-size 1G    ## Set the default huge page size.    # default-hugepage-size 1G
#}
cpu { ## In the VPP there is one main thread and optionally the user can create worker(s) ## The main thread and worker thread(s) can be pinned to CPU core(s) manually or automatically
    ## Manual pinning of thread(s) to CPU core(s)    ## Set logical CPU core where main thread runs, if main core is not set    ## VPP will use core 1 if available    # main-core 1    ## Set logical CPU core(s) where worker threads are running    # corelist-workers 2-3,18-19    ## Automatic pinning of thread(s) to CPU core(s)    ## Sets number of CPU core(s) to be skipped (1 ... N-1)    ## Skipped CPU core(s) are not used for pinning main thread and working thread(s).    ## The main thread is automatically pinned to the first available CPU core and worker(s)    ## are pinned to next free CPU core(s) after core assigned to main thread    # skip-cores 4    ## Specify a number of workers to be created    ## Workers are pinned to N consecutive CPU cores while skipping "skip-cores" CPU core(s)    ## and main thread's CPU core    # workers 2    ## Set scheduling policy and priority of main and worker threads    ## Scheduling policy options are: other (SCHED_OTHER), batch (SCHED_BATCH)    ## idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)    # scheduler-policy fifo    ## Scheduling priority is used only for "real-time policies (fifo and rr),    ## and has to be in the range of priorities supported for a particular policy    # scheduler-priority 50
}
buffers {
    ## Increase number of buffers allocated, needed only in scenarios with    ## large number of interfaces and worker threads. Value is per numa node.    ## Default is 16384 (8192 if running unpriviledged)    # buffers-per-numa 128000    ## Size of buffer data area    ## Default is 2048    # default data-size 2048    ## Size of the memory pages allocated for buffer data    ## Default will try 'default-hugepage' then 'default'    ## you can also pass a size in K/M/G e.g. '8M'    # page-size default-hugepage
}
dpdk {
    ## Change default settings for all interfaces    # dev default {            ## Number of receive queues, enables RSS            ## Default is 1            # num-rx-queues 3            ## Number of transmit queues, Default is equal            ## to number of worker threads or 1 if no workers treads            # num-tx-queues 3            ## Number of descriptors in transmit and receive rings            ## increasing or reducing number can impact performance            ## Default is 1024 for both rx and tx            # num-rx-desc 512            # num-tx-desc 512            ## VLAN strip offload mode for interface            ## Default is off            # vlan-strip-offload on            ## TCP Segment Offload            ## Default is off            ## To enable TSO, 'enable-tcp-udp-checksum' must be set            # tso on            ## Devargs            ## device specific init args            ## Default is NULL            # devargs safe-mode-support=1,pipeline-mode-support=1            ## rss-queues            ## set valid rss steering queues            # rss-queues 0,2,5-7    # }    ## Whitelist specific interface by specifying PCI address    # dev 0000:02:00.0    ## Blacklist specific device type by specifying PCI vendor:device    ## Whitelist entries take precedence    # blacklist 8086:10fb    ## Set interface name    # dev 0000:02:00.1 {    #       name eth0    # }    ## Whitelist specific interface by specifying PCI address and in    ## addition specify custom parameters for this interface    # dev 0000:02:00.1 {    #       num-rx-queues 2    # }    ## Change UIO driver used by VPP, Options are: igb_uio, vfio-pci,    ## uio_pci_generic or auto (default)    # uio-driver vfio-pci    ## Disable multi-segment buffers, improves performance but    ## disables Jumbo MTU support    # no-multi-seg    ## Change hugepages allocation per-socket, needed only if there is need for    ## larger number of mbufs. Default is 256M on each detected CPU socket    # socket-mem 2048,2048    ## Disables UDP / TCP TX checksum offload. Typically needed for use    ## faster vector PMDs (together with no-multi-seg)    # no-tx-checksum-offload    ## Enable UDP / TCP TX checksum offload    ## This is the reversed option of 'no-tx-checksum-offload'    # enable-tcp-udp-checksum    ## Enable/Disable AVX-512 vPMDs    # max-simd-bitwidth <256|512>
}
node variant defaults
#node {
specify the preferred default variant
default { variant avx512 }
specify the preferred variant, for a given node
ip4-rewrite { variant avx2 }
#}
plugins {
    ## Adjusting the plugin path depending on where the VPP plugins are    #       path /ws/vpp/build-root/install-vpp-native/vpp/lib/vpp_plugins    ## Disable all plugins by default and then selectively enable specific plugins    # plugin default { disable }    # plugin dpdk_plugin.so { enable }    # plugin acl_plugin.so { enable }    ## Enable all plugins by default and then selectively disable specific plugins    # plugin dpdk_plugin.so { disable }    # plugin acl_plugin.so { disable }
}
Statistics Segment
statseg {
# socket-name <filename>, name of the stats segment socket#     defaults to /run/vpp/stats.sock# size <nnn>[KMG], size of the stats segment, defaults to 32mb# page-size <nnn>, page size, ie. 2m, defaults to 4k# per-node-counters on | off, defaults to none# update-interval <f64-seconds>, sets the segment scrape / update interval
}
L2 FIB
l2fib {
## l2fib hash table size.#  table-size 512M## l2fib hash table number of buckets. Must be power of 2.#  num-buckets 524288
}
ipsec
{
ip4 {
ipsec for ipv4 tunnel lookup hash number of buckets.
num-buckets 524288
}
ip6 {
ipsec for ipv6 tunnel lookup hash number of buckets.
num-buckets 524288
}
}
logging {
set default logging level for logging buffer
logging levels: emerg, alert,crit, error, warn, notice, info, debug, disabled
default-log-level debug
set default logging level for syslog or stderr output
default-syslog-log-level info
Set per-class configuration
class dpdk/cryptodev { rate-limit 100 level debug syslog-level error }
}
root@jbeder-yamlcpp-radsrx9yecm:/workspace# sudo /usr/bin/vpp -c /etc/vpp/startup1.conf open configuration file '/etc/vpp/startup1.conf' failed root@jbeder-yamlcpp-radsrx9yecm:/workspace# cp /etc/vpp/startup.conf startup.conf root@jbeder-yamlcpp-radsrx9yecm:/workspace# sudo /usr/bin/vpp -c /etc/vpp/startup.conf unix_config:476: couldn't open log '/var/log/vpp/vpp.log' /usr/bin/vpp[10028]: clib_sysfs_prealloc_hugepages:262: pre-allocating 20 additional 2048K hugepages on numa node 0 /usr/bin/vpp[10028]: buffer: numa[0] falling back to non-hugepage backed buffer pool (vlib_physmem_shared_map_create: pmalloc_map_pages: failed to mmap 20 pages at 0x1000000000 fd 4 numa 0 flags 0x11: Cannot allocate memory) /usr/bin/vpp[10028]: clib_sysfs_prealloc_hugepages:262: pre-allocating 8 additional 2048K hugepages on numa node 0 /usr/bin/vpp[10028]: vlib_pci_bind_to_uio: Skipping PCI device 0000:00:05.0: missing kernel VFIO or UIO drive EAL: FATAL: Cannot get hugepage information. vpp[10028]: dpdk_config: rte_eal_init returned - root@jbeder-yamlcpp-radsrx9yecm:/workspace# sudo /usr/bin/vpp -c ./startup.conf unix_config:476: couldn't open log '/var/log/vpp/vpp.log' /usr/bin/vpp[10031]: clib_sysfs_prealloc_hugepages:262: pre-allocating 20 additional 2048K hugepages on numa node 0 /usr/bin/vpp[10031]: buffer: numa[0] falling back to non-hugepage backed buffer pool (vlib_physmem_shared_map_create: pmalloc_map_pages: failed to mmap 20 pages at 0x1000000000 fd 4 numa 0 flags 0x11: Cannot allocate memory) /usr/bin/vpp[10031]: clib_sysfs_prealloc_hugepages:262: pre-allocating 8 additional 2048K hugepages on numa node 0 /usr/bin/vpp[10031]: vlib_pci_bind_to_uio: Skipping PCI device 0000:00:05.0: missing kernel VFIO or UIO drive EAL: FATAL: Cannot get hugepage information. vpp[10031]: dpdk_config: rte_eal_init returned -

Last updated