[ovs-dev] [RFC PATCH dpdk-latest 0/1] netdev-dpdk: integrate dpdk vhost

Sivaprasad Tummala Sivaprasad.Tummala at intel.com
Tue May 19 11:49:11 UTC 2020


The vHost PMD brings vHost User port types ('dpdkvhostuser' and
'dpdkvhostuserclient') under control of DPDK's librte_ether API,
like other DPDK netdev types ('dpdk'). In doing so, direct calls
to DPDK's librte_vhost library are removed and replaced with
librte_ether API calls, for which most of the infrastructure is
already in place.

This change has a number of benefits, including:
* Reduced codebase
* More features automatically enabled for vHost ports eg. EthDev stats
  and additional get_status information.
* OVS can be ignorant to changes in the librte_vhost API between DPDK
  releases potentially making upgrades easier and the OVS codebase less
  susceptible to change.
* DPDK stats gathering via the plugin Telemetry would be easier as both
  dpdk and vhostuser type ports would be handled as similar devices.
  There would be no special need for extra code to get vhostuser stats.

The sum of all DPDK port types must not exceed RTE_MAX_ETHPORTS which
is set and can be modified in the DPDK configuration. Prior to this
patch this only applied to 'dpdk' ports, but now applies to all DPDK
port types including vHost User.

Note: There is a performance impact of additional 4 cycles in OVS and
16 cycles in DPDK vHost PMD per packet. The impact to throughput in
terms of PPS for 64B packets is marked below.

Fortville(2*10G)    vHost Library     vHost PMD
----------------   --------------    --------------
    P2P            26,769,562.545    26,709,287.712
    PVP            12,850,067        12,801,117

This work is based on the previous submission by Ciara, Loftus
https://patchwork.ozlabs.org/project/openvswitch/patch/
1526917453-17997-1-git-send-email-ciara.loftus at intel.com/

To enable TSO, specific changes were required in the vhost PMD. The
patch which enables these is  available on dpdk-master and here:
https://patches.dpdk.org/patch/66052/

The patch had been  tested for the existing vhost user functionality
in ovs- dpdk for both dpdkvhostuser and dpdkvhostuserclient indicated
below and working fine.
* port creation/destruction
* port re-configuration
* multiqueue support
* tso support
* iommu support
* post-copy migration
* re-connect
* zero-copy
* hotplug
* statistics
* tx retries config
* rx/tx operations
* rx/tx Jumbo frames

Ciara Loftus (1):
Sivaprasad Tummala (1):
  netdev-dpdk: integrate dpdk vhost pmd

 NEWS                         |    3 +
 acinclude.m4                 |    4 +
 include/openvswitch/netdev.h |    1 +
 lib/dpdk.c                   |   11 +
 lib/dpdk.h                   |    2 +
 lib/netdev-dpdk.c            | 1383 +++++++++++++---------------------
 6 files changed, 531 insertions(+), 873 deletions(-)

-- 
2.17.1



More information about the dev mailing list