OpenvSwitch 加速 - DOCA 中的 OVS
关于命名约定的说明
OVS – 指的是 DOCA 框架内的 Open vSwitch 发行版
OVS-DOCA – 描述了数据路径卸载层 (DPIF),该层利用 DOCA Flow 库进行任务卸载。此层是 OVS 的一个组件,以及其他 DPIF 实现,这些实现分别通过 DPDK 或内核促进卸载,分别称为 OVS-DPDK 和 OVS-Kernel。
NVIDIA 建议利用 OVS-DOCA DPIF 以最大化效率、性能、可扩展性和功能支持。
DPDK 和内核 DPIF 主要以当前形式维护,以实现向后兼容性,并且不计划更新新功能。
Open vSwitch (OVS) 是一种基于软件的网络技术,可增强虚拟机 (VM) 在内部和外部网络中的通信。OVS 通常部署在虚拟机监控程序中,采用基于软件的方法进行数据包交换,这可能会给 CPU 资源带来压力,从而影响系统性能和网络带宽利用率。为了解决这个问题,NVIDIA 的加速交换和数据包处理 (ASAP2) 技术将 OVS 数据平面任务卸载到专用硬件,例如 NIC 子系统内的嵌入式交换机 (eSwitch),同时保持未修改的 OVS 控制平面。这显著提高了 OVS 性能,而不会给 CPU 带来负担。
NVIDIA 的 DOCA-OVS 扩展了传统的 OVS-DPDK 和 OVS-Kernel 数据路径卸载接口 (DPIF),引入了 OVS-DOCA 作为额外的 DPIF 实现。DOCA-OVS 构建于 NVIDIA 的网络 API 之上,保留了与 OVS-DPDK 和 OVS-Kernel 相同的接口,同时利用了带有额外 OVS-DOCA DPIF 的 DOCA Flow 库。与其他 DPIF(DPDK、内核)的使用不同,OVS-DOCA DPIF 利用独特的硬件卸载机制和应用程序技术,最大限度地提高了 NVIDA NIC 和 DPU 的性能和功能。由于其架构和 DOCA 库集成,这种模式尤其高效,增强了 e-switch 配置并加速了硬件卸载,超越了其他模式可以实现的水平。

NVIDIA OVS 安装包含所有三种 OVS 类型。以下小节描述了这三种类型(默认类型为 OVS-Kernel)以及如何配置每种类型。
当 OVS 与 NIC 和 DPU(例如 NVIDIA® ConnectX®-6 Lx/Dx 和 NVIDIA® BlueField®-2 及更高版本)结合使用时,它会利用 ASAP2 的硬件数据平面。此数据平面可以使用 SR-IOV 虚拟功能 (VF) 或带有 virtio 的虚拟主机数据路径加速 (vDPA) 与 VM 建立连接。
在这两种情况下,NIC 内的加速器引擎都会加速转发并卸载 OVS 规则。这种集成解决方案加速了基础设施(通过 SR-IOV 或 virtio 的 VF)和数据平面。对于 DPU(包括 NIC 子系统),另一种虚拟化技术在 DPU 内实现完全 virtio 仿真,使主机服务器能够作为软件 virtio 设备与 DPU 通信。
当通过 SR-IOV 虚拟功能 (VF) 使用 ASAP2 数据平面时,VF 将直接传递到 VM,NVIDIA 驱动程序在 VM 内运行。
当使用 vDPA 时,vDPA 驱动程序允许 VM 通过 VirtIO 建立连接。因此,数据平面在 SR-IOV VF 和 VM 内的标准 virtio 驱动程序之间建立,而控制平面由主机上的 vDPA 应用程序管理。