7.6. 配置 OVS 硬件卸载的组件
使用 Mellanox 智能 NIC 配置和排除 OVS HW Offload 组件的引用。
Nova
将 Nova 调度程序配置为使用 NovaPCIPassthrough
过滤器以及 NUMATopologyFilter
和 DerivePciWhitelistEnabled
参数。当您启用 OVS HW Offload 时,Nova 调度程序与生成实例的 SR-IOV 透传类似。
Neutron
当您启用 OVS HW Offload 时,使用 devlink
cli 工具将 NIC e-switch 模式设置为 switchdev
。Switchdev
模式在映射到 VF 的 NIC 上建立代表端口。
流程
要从一个启用了
switchdev
的 NIC 中分配一个端口,以 admin 用户身份登录,创建一个带有值为binding-profile
的capabilities
,并禁用端口安全性:$ openstack port create --network private --vnic-type=direct --binding-profile '{"capabilities": ["switchdev"]}' direct_port1 --disable-port-security
在创建实例时传递此端口信息。
您可以将代表器端口与实例 VF 接口关联,并将代表器端口连接到 OVS 网桥
br-int
,以进行一次性 OVS 数据路径处理。VF 端口代表或类似物理"补丁面板"前端的软件版本。有关新实例创建的更多信息,请参阅为 SR-IOV 部署实例。
OVS
在配置了硬件卸载的环境中,传输的第一个数据包会遍历 OVS 内核路径,此数据包过程负责为实例流量传入和传出流量建立 ml2 OVS 规则。在建立了流量流时,OVS 使用流量控制(TC)流程序程序在 NIC 硬件上推送这些流。
流程
使用 director 在 OVS 上应用以下配置:
$ sudo ovs-vsctl set Open_vSwitch . other_config:hw-offload=true
- 重新启动 以启用 HW Offload。
流量控制(TC)子系统
当您启用 hw-offload
标志时,OVS 会使用 TC 数据路径。TC Flower 是一个 iproute2 工具,用于在硬件上写入数据路径流。这样可确保流在硬件和软件数据路径上编程,以实现冗余。
流程
应用以下配置:如果您没有显式配置
tc-policy
,则这是默认选项:$ sudo ovs-vsctl set Open_vSwitch . other_config:tc-policy=none
- 重启 OVS。
NIC PF 和 VF 驱动程序
Mlx5_core 是 Mellanox ConnectX-5 NIC 的 PF 和 VF 驱动程序。mlx5_core 驱动程序执行以下任务:
- 在硬件上创建路由表。
- 管理网络流管理。
-
配置以太网交换机设备驱动程序模型,
switchdev
。 - 创建块设备。
流程
使用以下
devlink
命令,以查询 PCI 设备的模式。$ sudo devlink dev eswitch set pci/0000:03:00.0 mode switchdev $ sudo devlink dev eswitch show pci/0000:03:00.0 pci/0000:03:00.0: mode switchdev inline-mode none encap enable
NIC 固件
NIC 固件执行以下任务:
- 维护路由表和规则。
- 修复表的管道。
- 管理硬件资源。
- 创建 VF。
固件可与驱动程序配合使用,以获得最佳性能。
虽然 NIC 固件不是易失性,但重启后会保留下来,您可以在运行时修改配置。
流程
在接口和代表端口中应用以下配置,以确保 TC 流程序在端口级别推送流编程:
$ sudo ethtool -K enp3s0f0 hw-tc-offload on
确保您保持固件更新。Yum
或 dnf
更新可能不会完成固件更新。如需更多信息,请参阅厂商文档。