Merge "Added vif-vhostuser spec for juno"

This commit is contained in:
Jenkins 2014-07-10 13:48:00 +00:00 committed by Gerrit Code Review
commit 9a43ed7b1c
1 changed files with 163 additions and 0 deletions

View File

@ -0,0 +1,163 @@
..
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