[ovs-dev] [PATCH RFC 1/1] netdev-dpdk: add dpdk vhost-user ports

Loftus, Ciara ciara.loftus at intel.com
Tue Apr 21 10:42:09 UTC 2015


> >>>> This patch adds support for a new port type to the userspace datapath
> >>>> called dpdkvhostuser. It adds to the existing infrastructure of
> >>>> vhost-cuse, however disables vhost-cuse ports in favour of vhost-user
> >>>> ports.
> >>>>
> >>>> A new dpdkvhostuser port will create a unix domain socket which
> when
> >>>> provided to QEMU is used to facilitate communication between the
> >>>> virtio-net device on the VM and the OVS port.
> >>>>
> >>>> Signed-off-by: Ciara Loftus <ciara.loftus at intel.com>
> >>>> ---
> >>>>    INSTALL.DPDK.md         | 115
> >>>> ++++++++++++++++++++++++++++++++++++------------
> >>>
> >>> ...
> >>> ...
> >>>>
> >>>>
> >>>> diff --git a/acinclude.m4 b/acinclude.m4
> >>>> index 18598b3..2113dfb 100644
> >>>> --- a/acinclude.m4
> >>>> +++ b/acinclude.m4
> >>>> @@ -224,6 +224,19 @@ AC_DEFUN([OVS_CHECK_DPDK], [
> >>>>      AM_CONDITIONAL([DPDK_NETDEV], test -n "$RTE_SDK")
> >>>>    ])
> >>>>
> >>>> +dnl OVS_CHECK_VHOST_CUSE
> >>>> +dnl
> >>>> +dnl Enable DPDK vhost-cuse support in favour of vhost-user
> >>>> +AC_DEFUN([OVS_CHECK_VHOST_CUSE], [
> >>>> +  AC_ARG_WITH(vhostcuse,
> >>>> +              [AC_HELP_STRING([--with-vhostcuse],
> >>>> +                              [Enable DPDK vhost-cuse])])
> >>>> +
> >>>> +  if test X"$with_vhostcuse" != X; then
> >>>> +    AC_DEFINE([VHOST_CUSE], [1], [DPDK vhost-cuse support enabled,
> >>>> vhost-user disabled.])
> >>>> +  fi
> >>>> +])
> >>>> +
> >>>>    dnl OVS_GREP_IFELSE(FILE, REGEX, [IF-MATCH], [IF-NO-MATCH])
> >>>>    dnl
> >>>>    dnl Greps FILE for REGEX.  If it matches, runs IF-MATCH, otherwise
> >>>> IF-NO-MATCH.
> >>>> diff --git a/configure.ac b/configure.ac
> >>>> index 8d47eb9..14c4b35 100644
> >>>
> >>>
> >>> We need to compile-in support for both - vhost-cuse and vhost-user and
> >>> use it according to port configuration. This way we can keep single
> >>> executable for all use cases.
> >>
> >>
> >> The problem is that this is a compile-time option in DPDK, librte_vhost
> only
> >> supports one or the other depending on how DPDK was built.
> >>
> >> The API looks the same in both cases, but behaves differently in that that
> >> rte_vhost_driver_register() expects an absolute path for vhost-user and a
> >> relative one (under /dev) for vhost-cuse.
> >>
> >
> > ok.
> > If you detect vhost implementation build in DPDK library at configure
> > time there is no need for another OVS configure option.
> 
> The DPDK configuration is available in rte_config.h so one can just
> include that to see whether vhost support is enabled in DPDK at all +
> whether its using vhost-user or -cuse.
> 
> 	- Panu -

This may may not be entirely reliable. rte_config.h seems to only reflect the settings that are hard coded in the config/common_linuxapp file in DPDK. If the user chooses to build DPDK using flags on the command line like so:
'make install T=x86_64-ivshmem-linuxapp-gcc CONFIG_RTE_LIBRTE_VHOST=y CONFIG_RTE_BUILD_COMBINE_LIBS=y CONFIG_RTE_LIBRTE_VHOST_USER=n'
..those settings will not be reflected in the rte_config.h file.
ie. in the case above, in rte_config.h, CONFIG_RTE_LIBRTE_VHOST_USER=y in the rte_config.h file even though the user has built DPDK with vhost-user off.


More information about the dev mailing list