将 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。
文档影响¶
无
参考资料¶
SR-IOV 介绍 http://goo.gl/m7jP3
SR-IOV OVS 硬件卸载 netdevconf http://netdevconf.org/1.2/papers/efraim-gerlitz-sriov-ovs-final.pdf
OpenVswitch 中的 OVS 硬件卸载 https://mail.openvswitch.org/pipermail/ovs-dev/2017-April/330606.html
neutron/nova/os-vif 中的 OpenStack OVS 机制驱动程序支持 https://review.openstack.org/#/c/398265/ https://review.openstack.org/#/c/275616/ https://review.openstack.org/#/c/460278/