支持 InfiniBand SR-IOV VIF 驱动

https://blueprints.launchpad.net/nova/+spec/vif-driver-ib-passthrough

添加对 InfiniBand SR-IOV vif 类型的支持,允许将虚拟 PCI 设备 (VF) 直接映射到虚拟机,从而实现更高的性能和高级功能,例如 RDMA(远程直接内存访问)。

问题描述

在 Juno 版本(包括)之前,InfiniBand (IB) SR-IOV 网络是通过树外 nova vif 驱动程序和 neutron Mellanox Ml2 机制驱动程序实现的。自从 Juno 以来,nova 支持以太网 SR-IOV 设备 vNIC,并且可以利用它来实现 IB SR-IOV 设备。应将 IB SR-IOV vif 插件逻辑添加到 LibvirtGenericVIFDriver 中。

用例

InfiniBand (IB) 是一种流行的、开放的、高性能和极高效的互连协议。为了支持大数据、高性能计算 (HPC) 和其他类似用例,虚拟机需要直接访问 IB NIC 设备。

项目优先级

提议的变更

此更改为 GenericLibvirtVifDriver 添加了 vif_driver 对 vif_type VIF_TYPE_IB_HOSTDEV 的支持。目前,没有标准的 API 来设置 InfiniBand vGuid(以太网 MAC 地址的等效项),因此将使用特殊的驱动程序实用程序来设置它。该实用程序已在 mlnx_direct vif_type 的情况下使用。

在 neutron 中,VIF_TYPE_HOSTDEV 已经由 ML2 Mellanox 机制驱动程序支持,并实现了在 IB Fabric 上配置 SR-IOV 虚拟功能的网络配置。应将 vif_type 名称重命名为 VIF_TYPE_IB_HOSTDEV,以指示特定的 InfiniBand vif_type。

备选方案

目前没有有效的替代方案。

数据模型影响

REST API 影响

安全影响

执行专用的 ‘ebrctl’ 实用程序需要使用 sudo。

通知影响

其他最终用户影响

性能影响

其他部署者影响

要使用此功能,部署者必须使用支持 Infiniband 的网络适配器。应运行 Infiniband 子网管理器以启用 IB Fabric。‘ebrctl’ 实用程序应安装在计算节点上。

部署者需要注意以下限制:* 从树外解决方案 [3] 到当前解决方案将没有平滑的升级路径。* 树外解决方案 [3] 将被弃用。

开发人员影响

此蓝图不会对开发人员产生任何影响。

实现

负责人

主要负责人

Moshe Levi

其他贡献者

Irena Berezovsky

工作项

  • 将 vif_type ib_hostdev 支持添加到 LibvirtGenericVIFDriver

依赖项

需要专有的 ‘ebrctl’ 库。这作为 Driver OFED 包的一部分安装。

测试

文档影响

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

参考资料

[1] Infiniband openstack 解决方案文档

https://wiki.openstack.org/wiki/Mellanox-Neutron-Icehouse-Redhat#InfiniBand_Network

[2] Mellanox ML2 机制驱动程序

https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/mlnx/mech_mlnx.py

[3] 树外 VIF_TYPE_HOSTDEV vif 驱动程序

https://github.com/mellanox-openstack/mellanox-vif