As discussed at our nova meetings, reorganize the juno specs into three directories: - proposed: things proposed which weren't approved - approved: things we approved but didn't implement - implemented: things approved and implemented The first I suspect is the most controversial. I've done this because I worry about the case where a future developer wants to pick up something dropped by a previous developer, but has trouble finding previous proposed specifications on the topic. Note that the actual proposed specs for Juno are adding in a later commit. Change-Id: Idcf55ca37a83d7098dcb7c2971240c4e8fd23dc8
3.9 KiB
Create VIF_VHOSTUSER
https://blueprints.launchpad.net/nova/+spec/vif-vhostuser
We propose to add a new VIF type to support the new QEMU vhost-user feature. vhost-user is a new QEMU feature that supports efficient Virtio-net I/O between a guest and a user-space vswitch. vhost-user is the userspace equivalent to /dev/vhost-net and is based on a Unix socket for communication instead of a kernel device file.
Problem description
QEMU has a new type of network interface, vhost-user, and we want to make this available to Neutron drivers. This will support deploying high-throughput userspace vswitches for OpenStack-based NFV applications. (This is the reason that vhost-user was developed.)
Proposed change
This change defines nova.network.model.VIF_TYPE_VHOSTUSER.
We propose to add VIF_VHOSTUSER to Nova for creating network interfaces based on vhost-user. This VIF type would be enabled by Neutron drivers that want to assign certain ports to a userspace agent (vswitch) that is based on vhost-user.
VIF_VHOSTUSER is to be implemented by extending the Libvirt driver. Libvirt support for vhost-user is currently under review and we expect it to be merged in time for Juno. We see that upstream Libvirt support for vhost-user is a dependency for merging the VIF_VHOSTUSER implementation into Nova.
Alternatives
Intel DPDK has a separate mechanism for accessing vhost from userspace, based on replacing /dev/vhost-net with a FUSE-based device file that traps ioctls into userspace. However, vhost-user is the new standard way to achieve this and is upstream in QEMU.
Data model impact
None.
REST API impact
None.
Security impact
None.
Notifications impact
None.
Other end user impact
None.
Performance Impact
vhost-user will make OpenStack compatible with vswitches supporting N x 10G Virtio-net workloads.
Other deployer impact
VIF_VHOSTUSER does not have to be enabled by the deployer. Neutron drivers will automatically enable VIF_VHOSTUSER via port binding if this is the appropriate choice for the agent on the compute host.
VIF_VHOSTUSER will require a version of QEMU with vhost-user support, which is currently upstream and will be released in QEMU 2.1.
VIF_VHOSTUSER will also require a version of Libvirt with vhost-user support.
Developer impact
None.
Implementation
Assignee(s)
- Primary assignee:
-
Luke Gorrie <lukego>
- Other contributors:
-
m.paolino
Work Items
- Add vhost-user support to the Libvirt driver.
- Add VIF_VHOSTUSER support to Nova.
Dependencies
- Libvirt must add support for vhost-user. Current patch under review: http://www.redhat.com/archives/libvir-list/2014-July/msg00111.html
- VIF_VHOSTUSER will enable the Neutron driver for Snabb NFV: https://blueprints.launchpad.net/neutron/+spec/snabb-nfv-mech-driver http://snabb.co/nfv.html http://github.com/SnabbCo/snabbswitch
Testing
VIF_VHOSTUSER will be Tempest-tested by the planned 3rd party CI integration for the Snabb NFV mech driver.
Documentation Impact
No documentation changes for Nova are anticipated. VIF_VHOSTUSER will be automatically enabled by Neutron where appropriate.
References
- vhost-user: http://www.virtualopensystems.com/en/solutions/guides/snabbswitch-qemu/
- Snabb NFV (initial vswitch supporting vhost-user): http://snabb.co/nfv.html
- Deutsche Telekom TeraStream project (initial user of VIF_VHOSTUSER): http://blog.ipspace.net/2013/11/deutsche-telekom-terastream-designed.html
- Discussion from NFV BoF (Atlanta) etherpad: https://etherpad.openstack.org/p/juno-nfv-bof