创建 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。

依赖项

测试

VIF_VHOSTUSER 将由计划的 Snabb NFV 机制驱动程序的第三方 CI 集成进行 Tempest 测试。

文档影响

预计 Nova 不会有任何文档更改。VIF_VHOSTUSER 将在适当的情况下由 Neutron 自动启用。

参考资料