ML2/OVS Mellanox 硬件卸载¶
诸如 Mellanox Connect-X 系列等高端网络适配器支持高达 200Gbps 的网络传输速率;使用传统的软件虚拟化网络(通过 OVS 和 virtio-net)的实例,在没有高 CPU 负载的情况下,无法实现超过 10Gbps 的网络吞吐量;可以使用 SR-IOV 将性能提高到接近 100Gbps,但它在网络选项的灵活性方面存在限制(不支持叠加网络),也不支持安全组。
Mellanox Connect-X 5+ 支持通过名为 ASAP2 的功能进行硬件卸载;与 Open vSwitch (OVS) 集成后,这将把网络数据路径从内核直接推送到网络卡上的高性能嵌入式交换机上。这将允许实例实现更高的网络性能,CPU 开销非常低,并尽可能地利用提供给虚拟机的整体网络容量。
问题描述¶
目前 OpenStack charms 中尚未启用硬件卸载支持。
提议的变更¶
neutron-openvswitch charm 将更新以支持 Mellanox Connect-X 5+ 网络适配器的配置,以支持硬件卸载(启动时需要将网卡置于 switchdev 模式);OVS 将配置为尽可能利用硬件卸载。
将开发一个新工具 (mlnx-switchdev-boot),用于在启动时将 Connect-X 网卡配置为正确的模式,然后再由 OVS 用于网络。在未来的某个时间点,这可能会被 networkd 和/或 netplan 中的功能所取代。
此功能利用了超前虚拟化软件堆栈中的许多前沿功能
Linux Kernel >= 5.2
OVS >= 2.11.0
这限制了支持范围为 OpenStack Stein 或更高版本,并与 Ubuntu 19.10 提供的 Ubuntu LTS 硬件启用内核结合使用。
Connect-X 系列网卡还支持虚拟功能 (VF) 链路聚合 (LAG),为使用底层网络卡上的 VF 支持的硬件卸载端口提供上游交换机/电缆/端口的弹性 - 这由通过 Linux 配置网络设备的常规配置过程驱动 - 在这种情况下是网络卡的物理功能 (PF)。
neutron-openvswitch charm 中现有的 SR-IOV VF 配置代码有些不一致,并且在重新启动时不可靠;此更改将涵盖将 SR-IOV VF 代码重构到一个新工具 (sriov-netplan-shim) 中,该工具处理通过 charm 和重新启动配置 VF 功能。此工具将在未来的某个时间点被 netplan 中的 SR-IOV 支持所取代。
注意
最新的内核和 OVS 版本尚未支持连接跟踪卸载,这意味着无法将安全组卸载到网络卡交换机;这正在开发中,并将登陆到 OVS 和 Linux 的后续版本中。
注意
虚拟机可以支持的硬件卸载端口总数受底层网络卡可以支持的 VF 总数限制。
备选方案¶
值得注意的是,对于 VLAN 或扁平网络需求,可以通过使用 neutron-openvswitch charm 已经支持的 SR-IOV 来实现对实例的高吞吐量网络。
实现¶
负责人¶
- 主要负责人
wgrant james-page
Gerrit Topic¶
对于与此规范相关的所有补丁,请使用 Gerrit 主题“mlnx-hardware-offload”。
git-review -t mlnx-hardware-offload
工作项¶
开发并测试用于配置 Connect-X 适配器的硬件卸载支持的工具。
更新 neutron-openvswitch 以支持在硬件卸载模式下配置 OVS。
在 charm 部署指南中添加附录,详细说明使用 Mellanox Connect-X 5+ 网卡在硬件卸载模式下配置和使用 OpenStack 的方法。
仓库¶
需要一个新的存储库 (mlnx-switchdev-mode) 用于配置 Mellanox Connect-X 网络卡在启动时的工具。该工具的范围超出了 OpenStack charms 项目,因此可以在 github 上开发。
需要一个新的存储库 (sriov-netplan-shim) 用于配置 SR-IOV VF 功能的工具;此工具将取代 neutron-openvswitch charm 中现有的 SR-IOV VF 配置代码。
文档¶
此功能的文档将在 charm 部署指南中提供。
安全性¶
此功能不会引入额外的安全风险。
测试¶
测试此功能需要特定的硬件,即 Mellanox Connect-X 5+ 网络卡。
依赖项¶
Linux >= 5.2
OVS >= 2.11.0
Mellanox Firmware >= 16.26.1040