[ovs-dev] Issue with OVS 2.9.0, DPDK 18.02 and vhost-user

Ian Stokes ian.stokes at intel.com
Wed Jun 13 16:50:19 UTC 2018


On 6/12/2018 9:50 PM, Ravi Kerur wrote:
> 
> 
> On Tue, Jun 12, 2018 at 3:31 AM, Stokes, Ian <ian.stokes at intel.com 
> <mailto:ian.stokes at intel.com>> wrote:
> 
>     > Hi,
>     > 
>     > I have used first link to install, compile and run OVS 2.9.0 and DPDK
>     > 18.02, second link to configure vhost-client ports. However, facing
>     > several issues when configured as per the documentation. Inputs
>     > appreciated.
>     > 
>     > http://docs.openvswitch.org/en/latest/intro/install/dpdk/
>     <http://docs.openvswitch.org/en/latest/intro/install/dpdk/>
>     > 
>     > http://docs.openvswitch.org/en/latest/topics/dpdk/vhost-user/
>     <http://docs.openvswitch.org/en/latest/topics/dpdk/vhost-user/>
>     > 
> 
>     Is there a specific reason you require DPDK 18.02?
> 
>     DPDK 17.11 is the latest officially support DPDK for OVS, I'd
>     recommend testing with this as I'm not sure how well validated DPDK
>     18.02 is.
> 
>     In testing I also found that OVS will fail to compile with 18.02 due
>     to 'rte_eth_find_next_owned_by' not being part of the stable ABI.
> 
>     The list of supported DPDK to OVS mappings can be found in the
>     release doc below.
> 
>     http://docs.openvswitch.org/en/latest/faq/releases/
>     <http://docs.openvswitch.org/en/latest/faq/releases/>
> 
> 
> Thanks Ian. I am currently using OVS 2.9 and DPDK 18.02 seperately for 
> different things, hence thought of trying with that first. I was able to 
> compile and run as shown in the logs.  Issue was I didn't specify 
> 'datapath_type=netdev' when adding the bridge. Deleting and adding the 
> bridge with 'datapath_type', I was able to add dpdkvhostclient ports on 
> the bridge.
> 
> Having said that, I decided to try 'ovs-master' + dpdk-17.11 as 
> mentioned in the link and was able to run everything with Tx/Rx packets. 
> Some clarifications I need. My testbed has physical host + containers.
> 
> (1) tried with dpdkvhostuser (server port on OVS on host) and 
> virtio-user-client (testpmd/dpdk on containers). Was able to configure 
> and run traffic. I do see following messages in log file
> 
> 2018-06-12T15:51:39.152Z|00080|netdev_dpdk|WARN|dpdkvhostuser ports are 
> considered deprecated;  please migrate to dpdkvhostuserclient ports.
> 
> Any reason why dpdkvhostuser is not recommended or being deprecated?
> 

Sure, the documentation explains it best:

"vHost User uses a client-server model. The server 
creates/manages/destroys the vHost User sockets, and the client connects 
to the server. Depending on which port type you use, dpdkvhostuser or 
dpdkvhostuserclient, a different configuration of the client-server 
model is used.

For vhost-user ports, Open vSwitch acts as the server and QEMU the 
client. This means if OVS dies, all VMs must be restarted. On the other 
hand, for vhost-user-client ports, OVS acts as the client and QEMU the 
server. This means OVS can die and be restarted without issue, and it is 
also possible to restart an instance itself. For this reason, 
vhost-user-client ports are the preferred type for all known use cases; 
the only limitation is that vhost-user client mode ports require QEMU 
version 2.7. Ports of type vhost-user are currently deprecated and will 
be removed in a future release."

http://docs.openvswitch.org/en/latest/topics/dpdk/vhost-user/#vhost-user-vs-vhost-user-client

> (2) tried with dpdkvhostuserclient (client port OVS on host) and 
> virtio-user-server (testpmd/dpdk on containers). Was unable to 
> configure. Any examples available for this?

I haven't tried this setup myself to date.

Are you running DPDK 18.05 in the container? Just looking for references 
to virtio-server-mode and I only spotted it in the 18.05 release notes.

 From the DPDK 18.05 release notes:

Added support for virtio-user server mode.

In a container environment if the vhost-user backend restarts, there’s 
no way for it to reconnect to virtio-user. To address this, support for 
server mode has been added. In this mode the socket file is created by 
virtio-user, which the backend connects to. This means that if the 
backend restarts, it can reconnect to virtio-user and continue 
communications.

https://dpdk.org/doc/guides/rel_notes/release_18_05.html

Note this isn't available in DPDK 17.11.

Ian


More information about the dev mailing list