[ovs-dev] Vhost Server Ports future plans and container networking

Marc Magnuson marc.magnuson at keysight.com
Mon Feb 8 19:15:58 UTC 2021


Hi!

I would like to know what the plans are for going forward with vhost server ports. Judging from the documentation, it seems they will be deprecated and removed at a future point in time.

This presents a problem for container networking today. The container networking solution suggested by DPDK leverages VIRTIO PMD Virtual Devices linking up on a socket being hosted by the vhost server. This is the vhost-user port we have today in OVS. The vhost-user-client relies on QEMU or an external process to create the socket and then a VIRTIO PMD to link up with it for communications. This is not ideal for container networking where it is better to have OVS start this server as we've seen so far. This also unifies the socket creation mechanism to OVS rather than having it be distribution specific.

The vhost-user-client does not directly interact with DPDK's vhost-server option (beyond registration of its existence). It registers with the socket and the two acknowledge each other, but no initialization is done to bring the link up. This requires a virtio PMD vdev to initialize the vhost socket correctly (only function to actually send messages during initialization-vhost-client does not do this) as we've seen so far.
For more info on this, check drivers/net/virtio/virtio_user_ethdev.c for virtio_user_dev_init()
Or virtio_user_dev_init definition at drivers/net/virtio/virtio_user/virtio_user_dev.c
The above is the actual interaction between a VIRTIO PMD and Vhost server, this is the only location I see this invoked where everything is set and the 'add_device' callback is actually setup on the vhost side.

IPC use cases are not addressed with the current plans going forward for vhost (from what we have seen), how does OVS team plan to maintain support for IPC and container networking?

We use vhost-server ovs ports with virtio vdevs on the containers. If the current plan is still to deprecate this method, then our next plan will be to use Virtio PMD Vdev ports on OVS with an external listener to reset/add/delete the vdev port when the socket goes down and when it is created again. This method is in fact better for keeping up time on the containers if OVS goes down for the same reason vhost-user-client is better than vhost-user for QEMU environments.



In short, vhost-user-client does not work with vhost-user server on DPDK for IPC applications as things stand now.  Vhost-user server is still the predominant choice for container networking with Virtio Vdevs. Any feedback or suggestions are welcome!

If there are other (better) methods to support IPC/container networking with OVS, please let us know. (Looks like DPDK Rings were removed some time back as well)

Thanks for your time and help!
Regards,
Marc Magnuson


More information about the dev mailing list