summaryrefslogtreecommitdiffstats
path: root/docs/usecases/vppinazure.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/usecases/vppinazure.rst')
-rw-r--r--docs/usecases/vppinazure.rst160
1 files changed, 160 insertions, 0 deletions
diff --git a/docs/usecases/vppinazure.rst b/docs/usecases/vppinazure.rst
new file mode 100644
index 00000000000..b2839a124a3
--- /dev/null
+++ b/docs/usecases/vppinazure.rst
@@ -0,0 +1,160 @@
+.. _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 `Azure’s 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 istance
+
+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!
+
+
+
+
+
+
+
+
ref='#n324'>324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419