支持 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 包的一部分安装。
测试¶
将添加单元测试以验证这些修改。
为具有 SR-IOV Infiniband NIC 的 nova 添加第三方测试
neutron 的第三方测试已经到位:https://wiki.openstack.org/wiki/ThirdPartySystems/Mellanox_CI
文档影响¶
预计 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 驱动程序