Using Open vSwitch with DPDK
============================
-This document describes how to use Open vSwitch with DPDK datapath.
+This document describes how to use Open vSwitch with DPDK.
.. important::
- Using the DPDK datapath requires building OVS with DPDK support. The
- mapping of OVS version to DPDK can vary between releases. For version
- mapping information refer to :doc:`releases FAQ </faq/releases>`. For
- build instructions refer to :doc:`/intro/install/dpdk`.
+ Using DPDK with OVS requires configuring OVS at build time to use
+ the DPDK library. The version of DPDK that OVS supports varies
+ from one OVS release to another, as described in the :doc:`releases
+ FAQ </faq/releases>`. For build instructions refer to
+ :doc:`/intro/install/dpdk`.
Ports and Bridges
-----------------
The environment assumes the use of two hosts, named `host1` and `host2`. We
only detail the configuration of `host1` but a similar configuration can be
used for `host2`. Both hosts should be configured with Open vSwitch (with or
-without the DPDK datapath), QEMU/KVM and suitable VM images. Open vSwitch
-should be running before proceeding.
+without DPDK), QEMU/KVM and suitable VM images. Open vSwitch should be running
+before proceeding.
Configuration Steps
-------------------
automatically build and install Open vSwitch kernel module for your running
kernel.
-3. For DPDK datapath, Open vSwitch with DPDK support is bundled in the package
-``openvswitch-switch-dpdk``.
+3. For fast userspace switching, Open vSwitch with DPDK support is
+bundled in the package ``openvswitch-switch-dpdk``.
Fedora
------
Install OVS
~~~~~~~~~~~
-OVS can be installed using different methods. For OVS to use DPDK datapath, it
-has to be configured with DPDK support (``--with-dpdk``).
+OVS can be installed using different methods. For OVS to use DPDK, it
+has to be configured to build against the DPDK library (``--with-dpdk``).
.. note::
This section focuses on generic recipe that suits most cases. For
"DPDK 17.11.0"
At this point you can use ovs-vsctl to set up bridges and other Open vSwitch
-features. Seeing as we've configured the DPDK datapath, we will use DPDK-type
+features. Seeing as we've configured DPDK support, we will use DPDK-type
ports. For example, to create a userspace bridge named ``br0`` and add two
``dpdk`` ports to it, run::
DPDK Bridges
============
-The DPDK datapath requires specially configured bridge(s) in order to utilize
-DPDK-backed :doc:`physical <phy>` and :doc:`virtual <vhost-user>` ports.
+Bridge must be specially configured to utilize DPDK-backed
+:doc:`physical <phy>` and :doc:`virtual <vhost-user>` ports.
Quick Example
-------------
-This example demonstrates how to add a bridge using the DPDK datapath::
+This example demonstrates how to add a bridge that will take advantage
+of DPDK::
$ ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
Avoid deeper levels because they do not render well.
-=================
-The DPDK Datapath
-=================
+============
+DPDK Support
+============
.. NOTE(stephenfin): Part of this doc is included in 'howto/dpdk'. Update that
.. if you modify this document
----------
Poll Mode Driver (PMD) threads are the threads that do the heavy lifting for
-the DPDK datapath. Correct configuration of PMD threads and the Rx queues they
-utilize is a requirement in order to deliver the high-performance possible with
-DPDK acceleration. It is possible to configure multiple Rx queues for ``dpdk``
-ports, thus ensuring this is not a bottleneck for performance. For information
-on configuring PMD threads, refer to :doc:`pmd`.
+userspace switching. Correct configuration of PMD threads and the Rx
+queues they utilize is a requirement in order to deliver the high-performance
+possible with DPDK acceleration. It is possible to configure multiple Rx queues
+for ``dpdk`` ports, thus ensuring this is not a bottleneck for performance. For
+information on configuring PMD threads, refer to :doc:`pmd`.
.. _dpdk-phy-flow-control:
===========
Poll Mode Driver (PMD) threads are the threads that do the heavy lifting for
-the DPDK datapath and perform tasks such as continuous polling of input ports
-for packets, classifying packets once received, and executing actions on the
-packets once they are classified.
+userspace switching. They perform tasks such as continuous polling of
+input ports for packets, classifying packets once received, and executing
+actions on the packets once they are classified.
PMD threads utilize Receive (Rx) and Transmit (Tx) queues, commonly known as
*rxq*\s and *txq*\s. While Tx queue configuration happens automatically, Rx
:doc:`vhost-user ports <vhost-user>` are a better choice and should be used
instead.
-The DPDK datapath provides DPDK-backed ring ports that are implemented using
-DPDK's ``librte_ring`` library. For more information on this library, refer to
-the `DPDK documentation`_.
+OVS userspace switching supports ring ports implemented using DPDK's
+``librte_ring`` library. For more information on this library, refer
+to the `DPDK documentation`_.
.. important::
DPDK vHost User Ports
=====================
-The DPDK datapath provides DPDK-backed vHost user ports as a primary way to
-interact with guests. For more information on vHost User, refer to the `QEMU
-documentation`_ on same.
+OVS userspace switching supports supports vHost user ports as a
+primary way to interact with guests. For more information on vHost
+User, refer to the `QEMU documentation`_ on same.
.. important::
All the features documented under `Unit Tests`_ are available for the userspace
datapath testsuite.
-DPDK datapath
-'''''''''''''
+Userspace datapath with DPDK
+''''''''''''''''''''''''''''
To test :doc:`/intro/install/dpdk` (i.e., the build was configured with
``--with-dpdk``, the DPDK is installed), run the testsuite and generate
[Specify the DPDK build directory])],
[have_dpdk=true])
- AC_MSG_CHECKING([whether dpdk datapath is enabled])
+ AC_MSG_CHECKING([whether dpdk is enabled])
if test "$have_dpdk" != true || test "$with_dpdk" = no; then
AC_MSG_RESULT([no])
DPDKLIB_FOUND=false
dnl --------------------------------------------------------------------------
dnl Check if EAL init is successful
-AT_SETUP([OVS-DPDK datapath - EAL init])
+AT_SETUP([OVS-DPDK - EAL init])
AT_KEYWORDS([dpdk])
OVS_DPDK_PRE_CHECK()
OVS_DPDK_START()
dnl --------------------------------------------------------------------------
dnl Add standard DPDK PHY port
-AT_SETUP([OVS-DPDK datapath - add standard DPDK port])
+AT_SETUP([OVS-DPDK - add standard DPDK port])
AT_KEYWORDS([dpdk])
OVS_DPDK_PRE_PHY_SKIP()
dnl --------------------------------------------------------------------------
dnl Add vhost-user-client port
-AT_SETUP([OVS-DPDK datapath - add vhost-user-client port])
+AT_SETUP([OVS-DPDK - add vhost-user-client port])
AT_KEYWORDS([dpdk])
OVS_DPDK_PRE_CHECK()
OVS_DPDK_START()
dnl --------------------------------------------------------------------------
dnl Ping vhost-user port
-AT_SETUP([OVS-DPDK datapath - ping vhost-user ports])
+AT_SETUP([OVS-DPDK - ping vhost-user ports])
AT_KEYWORDS([dpdk])
OVS_DPDK_PRE_CHECK()
AT_SKIP_IF([! which testpmd >/dev/null 2>/dev/null])
dnl --------------------------------------------------------------------------
dnl Ping vhost-user-client port
-AT_SETUP([OVS-DPDK datapath - ping vhost-user-client ports])
+AT_SETUP([OVS-DPDK - ping vhost-user-client ports])
AT_KEYWORDS([dpdk])
OVS_DPDK_PRE_CHECK()
AT_SKIP_IF([! which testpmd >/dev/null 2>/dev/null])
unavailable or unsuccessful.
.
.SS "DPDK Options"
-For details on initializing the \fBovs\-vswitchd\fR DPDK datapath,
-refer to the documentation or \fBovs\-vswitchd.conf.db\fR(5) for
-details.
+For details on initializing \fBovs\-vswitchd\fR to use DPDK ports,
+refer to the documentation or \fBovs\-vswitchd.conf.db\fR(5).
.SS "Daemon Options"
.ds DD \
\fBovs\-vswitchd\fR detaches only after it has connected to the \