Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

Chapter 8. vHost User Ports

vHost user ports are DPDK-backed datapaths for instances with two modes:

  • dpdkvhostuser
  • dpdkvhostuserclient

In dpdkvhostuser mode, Open vSwitch (OVS) acts as a server which creates the vHost user socket. OVS shares the socket with QEMU, the client. In this mode, if OVS is restarted, VM instances connected to it will need to be rebooted to regain connectivity.

As of OVS 2.9, dpdkvhostuserclient is used instead. In this mode the QEMU creates and shares the vHost socket as a server, and OVS connects as the client. If OVS is restarted in this mode, it will automatically reconnect to all existing VMs.

8.1. Manually changing the vhost user port mode

DPDK vHost user ports are created exclusively with dpdkvhostuserclient mode since RHOSP 10 maintenance release RHSA-2018:2102, with no option to change this behavior. The usage of dpdkvhostuser mode for existing instances is still supported, however it is recommended to transition to dpdkvhostuserclient mode.

Change to the new dpdkvhostuserclient mode on existing instances by cold migrating them to another host after updating the overcloud to OVS 2.9.

Note

If you have instances configured with CPU pinning, set the cpu_pinning_migration_quick_fail parameter in nova.conf to false. This will allow CPU pinning to be recalculated for a higher chance of migration success. Prior to attempting a live migration of instances with CPU pinning, contact Red Hat support.

openstack server migrate <server_id>
openstack server resize --confirm <server id>
Note

Prior to RHOSP10 maintenance release RHBA-2019:0074, the cold migration may fail when the NUMATopologyFilter value is included in the NovaSchedulerDefaultFilters parameter in nova.conf. This behavior can be prevented by ensuring you are at the latest maintenance release, which includes the cpu_pinning_migration_quick_fail option for Nova. See Red Hat OpenStack Platform 10 Release Notes for more information.

You can check that an instance’s vHost user port is in dpdkvhostuserclient mode. Identify and log in to the hypervisor node where the instance resides.

Run the following:

compute-0# virsh dumpxml <instance name> | less

Identify the interface of type vhostuser and check that mode is set to server.

...
<interface type='vhostuser'>
<model type='virtio'/>
<source type='unix' path='<path-to-socket>' mode='<client|server>'/>
</interface>
...