创建 VIF_VHOSTUSER¶
https://blueprints.launchpad.net/nova/+spec/vif-vhostuser
我们建议添加一种新的 VIF 类型来支持 QEMU 的新型 vhost-user 功能。vhost-user 是 QEMU 的一项新功能,它支持在客户机和用户空间虚拟交换机之间高效的 Virtio-net I/O。vhost-user 是用户空间等效于 /dev/vhost-net,并且基于 Unix socket 进行通信,而不是内核设备文件。
问题描述¶
QEMU 有一种新型网络接口,vhost-user,我们希望将其提供给 Neutron 驱动程序。这将支持为基于 OpenStack 的 NFV 应用程序部署高吞吐量用户空间虚拟交换机。(这是开发 vhost-user 的原因。)
提议的变更¶
此更改定义了 nova.network.model.VIF_TYPE_VHOSTUSER。
我们建议在 Nova 中添加 VIF_VHOSTUSER,用于创建基于 vhost-user 的网络接口。如果计算主机上的代理是合适的选择,Neutron 驱动程序将通过端口绑定自动启用此 VIF 类型,从而为某些端口分配到用户空间代理(虚拟交换机)。
VIF_VHOSTUSER 将通过扩展 Libvirt 驱动程序来实现。Libvirt 对 vhost-user 的支持目前正在审核中,我们预计它将在 Juno 之前合并。我们认为上游 Libvirt 对 vhost-user 的支持是 VIF_VHOSTUSER 实现合并到 Nova 的依赖项。
备选方案¶
Intel DPDK 有一种单独的机制,用于从用户空间访问 vhost,基于将 /dev/vhost-net 替换为基于 FUSE 的设备文件,该文件将 ioctls 捕获到用户空间。但是,vhost-user 是实现此目的的新标准,并且在 QEMU 中是上游的。
数据模型影响¶
无。
REST API 影响¶
无。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
无。
性能影响¶
vhost-user 将使 OpenStack 与支持 N x 10G Virtio-net 工作负载的虚拟交换机兼容。
其他部署者影响¶
VIF_VHOSTUSER 无需由部署者启用。如果计算主机的代理是合适的选择,Neutron 驱动程序将通过端口绑定自动启用 VIF_VHOSTUSER。
VIF_VHOSTUSER 需要一个带有 vhost-user 支持的 QEMU 版本,该版本目前在 upstream 中,并将发布在 QEMU 2.1 中。
VIF_VHOSTUSER 还需要一个带有 vhost-user 支持的 Libvirt 版本。
开发人员影响¶
无。
实现¶
负责人¶
- 主要负责人
Luke Gorrie <lukego>
- 其他贡献者
m.paolino
工作项¶
将 vhost-user 支持添加到 Libvirt 驱动程序。
将 VIF_VHOSTUSER 支持添加到 Nova。
依赖项¶
Libvirt 必须添加对 vhost-user 的支持。当前补丁正在审核中: https://#/archives/libvir-list/2014-July/msg00111.html
VIF_VHOSTUSER 将启用 Snabb NFV 的 Neutron 驱动程序: https://blueprints.launchpad.net/neutron/+spec/snabb-nfv-mech-driver http://snabb.co/nfv.html http://github.com/SnabbCo/snabbswitch
测试¶
VIF_VHOSTUSER 将由计划的 Snabb NFV 机制驱动程序的第三方 CI 集成进行 Tempest 测试。
文档影响¶
预计 Nova 不会有任何文档更改。VIF_VHOSTUSER 将在适当的情况下由 Neutron 自动启用。
参考资料¶
vhost-user: http://www.virtualopensystems.com/en/solutions/guides/snabbswitch-qemu/
Snabb NFV(初始支持 vhost-user 的虚拟交换机): http://snabb.co/nfv.html
Deutsche Telekom TeraStream 项目(VIF_VHOSTUSER 的初始用户): http://blog.ipspace.net/2013/11/deutsche-telekom-terastream-designed.html
来自 NFV BoF(亚特兰大)etherpad 的讨论: https://etherpad.openstack.org/p/juno-nfv-bof