]> git.proxmox.com Git - mirror_ovs.git/commitdiff
netdev-dpdk: Deprecate ring ports.
authorIlya Maximets <i.maximets@ovn.org>
Tue, 26 Nov 2019 10:43:58 +0000 (11:43 +0100)
committerIlya Maximets <i.maximets@ovn.org>
Thu, 28 Nov 2019 15:35:30 +0000 (16:35 +0100)
'dpdkr' a.k.a. DPDK ring ports has really poor support in OVS and not
tested on a regular basis.  These ports are intended to work via
shared memory with another DPDK secondary process, but there are lots
of limitations for using this functionality in practice.  Most of them
connected with running secondary DPDK application and memory layout
issues.  More details are available in DPDK guide:
https://doc.dpdk.org/guides-18.11/prog_guide/multi_proc_support.html#multi-process-limitations

Beside the functional limitations it's also hard to use this
functionality correctly.  User must be sure that OVS and secondary DPDK
application are running on different CPU cores, which is hard because
non-PMD threads could float over available CPU cores.  This or any
other misconfiguration will likely lead to crash of OVS.

Another problem is that the user must actually build the secondary
application with the same version of DPDK that was used for OVS build.

Above issues are same as we have while using DPDK pdump.

Beside that, current implementation in OVS is not able to free
allocated rings that could lead to memory exhausting.

Initially these ports was added to use with IVSHMEM for a fast
zero-copy HOST<-->VM communication.  However, IVSHMEM is not used
anymore.  IVSHMEM support was removed from DPDK in 16.11 release
(instructions for IVSHMEM were removed from the OVS docs almost 3 years
ago by commit 90ca71dd317f ("doc: Remove ivshmem instructions.")) and
the patch for QEMU for using regular files as a device backend is no
longer available.  That makes DPDK ring ports barely useful in real
virtualization environment.

This patch adds a deprecation warnings for run-time port creation
and documentation.  Claiming to completely remove this functionality
from OVS in one of the next releases.

Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Acked-by: Flavio Leitner <fbl@sysclose.org>
Acked-by: Ian Stokes <ian.stokes@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
Acked-by: David Marchand <david.marchand@redhat.com>
Acked-by: Kevin Traynor <ktraynor@redhat.com>
Documentation/topics/dpdk/ring.rst
NEWS
lib/netdev-dpdk.c

index 81c2efb37f1c733e212b4e984d167cd73b9bc77a..8956d69ba9da3b7ae11cc8273bf5818239cc9b74 100644 (file)
 DPDK Ring Ports
 ===============
 
+.. warning::
+
+   DPDK ring ports are considered *deprecated*.  Please migrate to
+   virtio-based interfaces, e.g. :doc:`vhost-user <vhost-user>` ports,
+   ``net_virtio_user`` :doc:`DPDK vdev <vdev>`.
+
 .. warning::
 
    DPDK ring interfaces cannot be used for guest communication and are retained
diff --git a/NEWS b/NEWS
index ce0cf0909d2726caad2ebb01c9cd89dae1e8e25b..222280b1a2ca5038d000a1460c56443eaca606f2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,8 @@ Post-v2.12.0
      * DPDK pdump packet capture support disabled by default. New configure
        option '--enable-dpdk-pdump' to enable it.
      * DPDK pdump support is deprecated and will be removed in next releases.
+     * DPDK ring ports (dpdkr) are deprecated and will be removed in next
+       releases.
      * OVS validated with DPDK 18.11.5, due to the inclusion of a fix for
        CVE-2019-14818, this DPDK version is strongly recommended to be used.
 
index 02120a37979ce6b011d0d36db6fc010d0dfcb83d..4c9f122b0eac4fba9575019f600fb1275e417a7a 100644 (file)
@@ -4002,6 +4002,10 @@ netdev_dpdk_ring_construct(struct netdev *netdev)
     dpdk_port_t port_no = 0;
     int err = 0;
 
+    VLOG_WARN_ONCE("dpdkr a.k.a. ring ports are considered deprecated.  "
+                   "Please migrate to virtio-based interfaces, e.g. "
+                   "dpdkvhostuserclient ports, net_virtio_user DPDK vdev.");
+
     ovs_mutex_lock(&dpdk_mutex);
 
     err = dpdk_ring_open(netdev->name, &port_no);