嵌入式交换机 SR-IOV 网卡的 ML2 机制驱动

Launchpad蓝图

https://blueprints.launchpad.net/neutron/+spec/ml2-sriov-nic-switch

此蓝图旨在添加基于 SR-IOV 功能网卡的 ML2 机制驱动(硬件 VEB),例如 Mellanox ConnectX 系列。

问题描述

SR-IOV 功能网卡,例如 Mellanox ConnectX 系列卡,提供嵌入式交换功能。作为 nova 和 neutron 增强功能的一部分,以支持 SR-IOV 端口,此蓝图提出的机制驱动程序最初将支持 VLAN 网络类型。Nova VIF 驱动程序将负责通过 libvirt 网络接口 XML 设置 VLAN ID。机制驱动程序需要 L2 代理来对 SR-IOV 端口进行运行时网络设置更新。

提议的变更

Ml2 机制驱动程序将基于简单代理机制驱动程序。Ml2 机制驱动程序能够绑定符合以下支持标准的端口。它将支持 DIRECT 和 MACVTAP vnic 类型。它将最初支持 PCI VENDOR INFO,匹配 Mellanox ConnectX 系列。将提供一个选项,可以从配置文件加载支持的 PCI VENDOR INFO 列表。机制驱动程序将在 port vif_details 字典中包含 vlan_id 属性,以便为 nova vif 驱动程序提供 vlan id 详细信息。机制驱动程序期望 port binding:profile 填充 physical_network 和 pci_vendor_info,以识别是否应绑定端口以及绑定到哪个物理网络。为了支持 L2 代理 rpc 调用,ml2 rpc 模块的 _device_to_port_id 方法应修改为服务于未以 tap 为前缀的设备。

备选方案

另一种解决方案是开发一个单体插件。由于 SR-IOV 资源有限且支持的虚拟端口配置选项较少,因此将 SR-IOV 端口与虚拟端口并存是有意义的。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

尝试绑定端口期间的 pci_vendor_info 匹配检查可能会对性能产生潜在影响。

其他部署者影响

部署者必须配置以下配置变量

  • OpenStack 要使用的 VLAN 命名空间和范围。

  • 如果与默认列表不同,则支持的 pci vendor info 记录。

开发人员影响

实现

负责人

主要负责人:Irena Berezovsky <irenab>

工作项

  1. 基于网卡交换机的 Ml2 机制驱动程序

  2. 基于网卡交换机的 Ml2 代理

  3. L2 代理所需的 ML2 RPC 支持 SR-IOV 设备

依赖项

Nova vif 驱动程序需要支持基于 SR-IOV 网卡的虚拟接口。此功能是在以下 nova 蓝图之后添加的:https://blueprints.launchpad.net/nova/+spec/pci-passthrough-sriov

测试

代码将涵盖单元测试。对于 tempest 测试覆盖,提供第三方测试。测试在配备 SR-IOV ConnectX 系列卡的物理服务器上的 devstack 设置中运行。

文档影响

配置参考指南将从代码中更新。

参考资料

SR-IOV 支持讨论详情如下

https://wiki.openstack.org/wiki/Meetings/Passthrough