vpp/docs/usecases/vppinazure.rst
Paul Vinciguerra 7fa3dd2881 docs: cleanup typos on readthrough
Type: style

Change-Id: I3b15035ea6c13cd1ca3cdc9dfa9b10a6e1be9880
Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-10-28 13:51:13 +00:00

161 lines
3.5 KiB
ReStructuredText
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

.. _vppinazure:
.. toctree::
VPP in Azure
___________________
Before starting, a few notes:
* in our configuration we use only DPDK 18.02, since with the newer versions, such as DPDK 18.05, we obtained several problems during VPP installation (mostly related with MLX4 PMD Drivers).
* Some of the commands are taken from `Azures DPDK page <https://docs.microsoft.com/en-us/azure/virtual-network/setup-dpdk>`_.
To bring DPDK inside Azure, we perform the following procedure:
Firstly, we install the DPDK dependencies:
.. code-block:: console
$ sudo add-apt-repository ppa:canonical-server/dpdk-azure y
$ sudo apt-get update
$ sudo apt-get install -y librdmacm-dev librdmacm1 build-essential libnuma-dev libmnl-dev
Then, we download DPDK 18.02:
.. code-block:: console
$ sudo wget https://fast.dpdk.org/rel/dpdk-18.02.2.tar.xz
$ tar -xvf dpdk-18.02.2.tar.xz
Finally, we build DPDK, modifying first its configuration files in order to make VPP compatible with MLX4 drivers:
Inside config/common_base, modify:
.. code-block:: console
CONFIG_RTE_BUILD_SHARED_LIB=n
CONFIG_RTE_LIBRTE_MLX4_PMD=y
CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS=y
CONFIG_RTE_LIBRTE_TAP_PMD=y
CONFIG_RTE_LIBRTE_FAILSAFE_PMD=y
and then:
.. code-block:: console
$ make config T=x86_64-native-linuxapp-gcc
$ sed -ri 's,(MLX._PMD=)n,\1y,' build/.config
$ make
Finally we build DPDK:
.. code-block:: console
$ make install T=x86_64-native-linuxapp-gcc DESTDIR=/home/ciscotest/test EXTRA_CFLAGS='-fPIC -pie'
And we reboot the instance:
.. code-block:: console
$ reboot instance
After the reboot, we type these commands:
.. code-block:: console
$ echo 1024 | sudo tee /sys/devices/system/node/node*/hugepages/hugepages-2048kB/nr_hugepages
$ mkdir /mnt/huge
$ sudo mount -t hugetlbfs nodev /mnt/huge
$ grep Huge /proc/meminfo
$ modprobe -a ib_uverbs
$ cd x86_64-native-linuxapp-gcc/
$ ls
$ cd lib/
$ ls
$ sudo cp librte_pmd_mlx4_glue.so.18.02.0 /usr/lib
**Now we focus on VPP installation:**
In our configuration we use VPP 18.07.
We perform this procedure in order to install VPP 18.07 with an external DPDK configuration inside Azure.
Firstly, we download VPP
.. code-block:: console
$ git clone https://gerrit.fd.io/r/vpp
$ git checkout v18.07
Then, we build VPP, using the external DPDK configuration we previously made:
We modify the path inside the vpp.mk file:
.. code-block:: console
$ build-data/platforms/vpp.mk
$ vpp_uses_external_dpdk = yes
$ vpp_dpdk_inc_dir = <PATH_TO_DESTDIR_NAME_FROM_ABOVE>/include/dpdk/
$ vpp_dpdk_lib_dir =<PATH_TO_DESTDIR_NAME_FROM_ABOVE>/lib
<PATH_TO_DESTDIR_NAME_FROM_ABOVE> is whatever the path used when compiling DPDK above. These paths have to be absolute path in order for it to work.
we modify build-data/platforms/vpp.mk to use
.. code-block:: console
vpp_uses_dpdk_mlx4_pmd = yes
.. code-block:: console
$ make build
$ cd build-root/
$ make V=0 PLATFORM=vpp TAG=vpp install-deb
$ sudo dpkg -i *.deb
Finally, we modify the startup.conf file:
.. code-block:: console
$ cd /etc/vpp
$ sudo nano startup.conf
Inside the DPDK block, the following commands:
.. code-block:: console
## Whitelist specific interface by specifying PCI address
dev 000X:00:0X.0
dev 000X:00:0X.0
# Running failsafe
vdev net_vdev_netvsc0,iface=eth1
vdev net_vdev_netvsc1,iface=eth2
*Please refer to Azure DPDK document to pick the right iface to use for failsafe vdev.*
and finally:
.. code-block:: console
$ sudo service vpp stop
$ sudo service vpp start
$ sudo service vpp status
$ sudo vppctl
Now VPP will work inside Azure!