目录
References
Prerequisites
Installation, Compilation and Configuration
This short document will guide you how to compile and install VPP with Mellanox DPDK PMD over a Mellanox ConnectX-4 and ConnectX-5 interfaces.
1. Install CentOS 7.7
2. Set up an account to use the Linux Foundation resources. To set up the account, refer to The Linux Foundation website: https://identity.linuxfoundation.org.
3. Set up a Gerrit account and apply an ssh public key. Follow the instructions on the FD.IO wiki web page: https://wiki.fd.io/view/DEV/Setting_up_Gerrit#Log_into_Gerrit
4. Install the following prerequisites packages:
yum install -y git cpp gcc rpm-build openssl-devel libmnl-devel numactl-devel epel-release net-tools rdma-core-devel nasm
Installation, Compilation and Configuration
1. Download VPP main master branch.
git clone ssh://@gerrit.fd.io:29418/vpp.git
git checkout origin/stable/<"Release_version_number">
2. For VPP 18.07 ONLY: Enable the mlx5 PMD driver compilation as follow:
cd /vpp
sed -i '/vpp_uses_dpdk_mlx5_pmd/s/^# //g' build-data/platforms/vpp.mk
3. Compile and install VPP with DLopen linkage
cd /vpp
make install-dep
make dpdk-install-dev DPDK_MLX5_PMD=y DPDK_MLX5_PMD_DLOPEN_DEPS=y
## Copy manually newly compiled shared module: ##
cp /opt/vpp/external/x86_64/lib/librte_pmd_mlx5_glue.so* /usr/lib64/
## For VPP 18.07 ONLY, check vpp-dpdk-devel package is installed: ##
rpm -qa | grep vpp-dpdk-devel
## Compile new binary: ##
make build-release vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX5_PMD_DLOPEN_DEPS=y
## Building RPM packages: ##
make pkg-rpm vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX5_PMD_DLOPEN_DEPS=y
## Install VPP RPMs: ##
rpm -ivh build-root/vpp-sel*.rpm
rpm -ivh build-root/vpp-lib*.rpm
rpm -ivh build-root/vpp-19*.rpm
rpm -ivh build-root/vpp-plug*.rpm
4. Compile and install without DLopen linkage
cd /vpp
make install-dep
make dpdk-install-dev DPDK_MLX5_PMD=y DPDK_MLX5_PMD_DLOPEN_DEPS=n
## Compile new binary: ##
make build-release DPDK_MLX5_PMD=y DPDK_MLX5_PMD_DLOPEN_DEPS=n
## Building RPM packages: ##
make pkg-rpm vpp_uses_dpdk_mlx5_pmd=yes DPDK_MLX5_PMD_DLOPEN_DEPS=n
## Install VPP RPMs: ##
rpm -ivh build-root/vpp-sel*.rpm
rpm -ivh build-root/vpp-lib*.rpm
rpm -ivh build-root/vpp-19*.rpm
rpm -ivh build-root/vpp-plug*.rpm
5. Edit the /etc/vpp/startup.conf start file to include the following:
Important: Uncomment no-mulit-seg parameter. It disables jumbo packets handling and improves performances significantly.
File
unix {
nodaemon
log /tmp/vpp.log
full-coredump
}
dpdk {
dev 0000:07:00.0
dev 0000:07:00.1
no-multi-seg
dev default {
num-rx-queues 2
}
}
Insert PCI slot numbers of ConnectX-4/5 interfaces with correct IDs at dpdk { dev } section, as above example.
To verify the correct IDs use:
lspci -nn | grep -i mel
07:00.0 Ethernet controller [0200]: Mellanox Technologies MT27620 Family [15b3:1013]
07:00.1 Ethernet controller [0200]: Mellanox Technologies MT27620 Family [15b3:1013]
6. Start VPP.
vpp -c /etc/vpp/startup.conf
7. Enter the VPP Command Line Interface.
vppctl
8. Configure L3 interfaces as shown in the example below:
VPP Cli
_______ _ _ _____ ___
__/ __/ _ \ (_)__ | | / / _ \/ _ \
_/ _// // / / / _ \ | |/ / ___/ ___/
/_/ /____(_)_/\___/ |___/_/ /_/
vpp# set int ip address HundredGigabitEthernet7/0/0 1.1.1.1/24
vpp# set interface state HundredGigabitEthernet7/0/0 up
vpp# set int ip address HundredGigabitEthernet7/0/1 2.2.2.2/24
vpp# set interface state HundredGigabitEthernet7/0/1 up
vpp# show int
Name Idx State Counter Count
HundredGigabitEthernet7/0/0 1 up
HundredGigabitEthernet7/0/1 2 up
vpp# show int address
HundredGigabitEthernet7/0/0 (up):
1.1.1.1/24
HundredGigabitEthernet7/0/1 (up):
2.2.2.2/24
local0 (dn):