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
164 lines
3.9 KiB
ReStructuredText
164 lines
3.9 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
====================
|
|
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
|
|
|