将 OVS 硬件卸载添加到 TripleO

https://blueprints.launchpad.net/tripleo/+spec/tripleo-ovs-hw-offload

OVS 硬件卸载利用 SR-IOV 技术,使用 VF 代表端口控制 SR-IOV VF。OVS 2.8.0 支持 hw-offload 选项,允许使用 linux traffic control 工具将 OVS 数据平面规则卸载到硬件,并使用 VF 代表端口。此功能加速了支持 switchdev 模式的 SR-IOV 网卡的 OVS。

问题描述

目前,OVS 硬件卸载功能的安装和配置是在 Overcloud 部署后手动完成的。它应该通过 tripleo 实现自动化。

提议的变更

概述

  • 使用以下语法配置 SR-IOV 网卡为 switchdev 模式:<物理接口>:<numvfs>:<mode> 用于 NeutronSriovNumVFs。mode 可以是 legacy 或 switchdev

  • 使用 other_config:hw-offload 配置 OVS。由于如果网卡不支持 OVS,OVS 将回退到内核数据平面,因此可以将选项添加到集群而不会产生副作用。

  • Nova 调度器应配置为使用 PciPassthroughFilter(相同的 SR-IOV)

  • Nova 计算节点应配置为使用 passthrough_whitelist(相同的 SR-IOV)

替代方案

安全影响

其他最终用户影响

性能影响

  • OVS 硬件卸载利用 SR-IOV 技术,为 OpenVswitch 管理的每个虚拟机提供接近原生 I/O 性能。

其他部署者影响

  • 操作员应确保 BIOS 在计算节点上支持 VT-d/IOMMU 虚拟化技术。

  • 需要在 Compute+SR-IOV 节点中启用 IOMMU。应使用 PreNetworkConfig 在 grub.conf 中添加启动参数(intel_iommu=on 或 amd_iommu=pt)。

  • 部署后,操作员应

    • 在创建 VM(nova boot)之前创建 neutron 端口 openstack port create –vnic-type direct –binding-profile ‘{“capabilities”: [“switchdev”]}’ port1

    • 使用所需的 flavor 和 SR-IOV 端口 ID 创建 VM openstack server create –image cirros-mellanox_sriov –port=port1 –flavor m1.tiny vm_a1

开发人员影响

实现

负责人

主要负责人

waleedm (waleedm@mellanox.com

其他贡献者

moshele (moshele@mellanox.com)

工作项

  • 更新 tripleo::host::sriov::numvfs_persistence 以允许在 switchdev 模式下配置 SR-IOV。扩展 vf_defs 为 <物理接口>:<numvfs>:<mode>。Mode 可以是默认 SR-IOV 的 legacy,也可以是用于 ovs 硬件卸载的 switchdev。

  • 添加一个名为 NeutronOVSHwOffload 的模板参数以启用。

  • 为 tripleo-heat-templates 提供 OVS 硬件卸载的 environment YAML。

依赖项

测试

  • 由于 SR-IOV 需要特定的硬件支持,因此此功能可以在第三方 CI 下进行测试。我们希望为 SR-IOV 和此功能提供 Mellanox CI。

文档影响

参考资料