1. 课程导入与全景认知

在云计算与数据中心网络快速演进的今天,CPU 已经不再是唯一承担网络转发与虚拟交换任务的“主角”。随着 25G/100G 甚至 400G 网卡的普及,传统以 CPU 为核心的虚拟交换路径逐渐暴露出瓶颈:数据包需要从网卡进入内核,再经过 ovs-vswitchd 与 ovs-datapath 处理,最后才回到虚拟机或容器。这条路径不仅消耗大量 CPU 周期,还带来不确定的延迟。DPU(Data Processing Unit)的出现,正是为了把这类基础设施负载从主机 CPU 卸载到专用处理器上,而 OVS(Open vSwitch)卸载则是其中最具代表性的落地场景之一。

本课程围绕“DPU 虚拟化网络”与“OVS 卸载”两条主线展开,目标是让学习者建立从概念到实现、从配置到排障的完整能力。学完本课程后,你应当能够:理解 DPU 在虚拟化网络中的角色与软硬件分层;掌握 OVS 数据面与控制面的基本结构;说清 tc-flower、rte_flow、VF representor 等关键机制如何协同完成卸载;能够阅读并编写与卸载相关的配置与调试命令;并具备定位“卸载未生效”“流表不命中”“representor 不通”等常见问题的能力。

核心概念速览:DPU 是一类集成了多核 ARM、可编程网络加速器、PCIe 端点与高速以太网接口的片上系统;OVS 是虚拟交换机的事实标准;OVS 卸载指把 OVS 的匹配与转发动作下沉到网卡或 DPU 的硬件流表中执行,从而绕过主机内核数据路径。

要理解 OVS 卸载,先要看清 OVS 自身的分层。OVS 分为控制面与数据面:控制面由 ovs-vswitchd 负责,维护流表、执行 OpenFlow 规则、处理慢路径;数据面则分为内核态 openvswitch 模块与用户态 netdev 两种实现。当启用硬件卸载时,数据面进一步下沉到网卡的 eSwitch 或 DPU 的流处理引擎中。此时,主机侧只保留“首包”或“慢路径”处理,后续命中硬件流表的报文直接在网卡/DPU 内部完成转发。

DPU 虚拟化网络的典型拓扑可以这样理解:主机上运行多个虚拟机或容器,每个 VF(Virtual Function)通过 SR-IOV 分配给虚机;DPU 侧为每个 VF 维护一个 representor 端口,用于在控制面“代表”该 VF 参与 OVS 流表交互。控制面仍然运行在主机或 DPU 的 ARM 核上,通过 tc 或 rte_flow 把流表下发到硬件。数据面报文则从物理口进入 DPU,经硬件流表匹配后直接转发到目标 VF,不再经过主机内核。

DPU 虚拟化网络与 OVS 卸载全景 控制面下发流表 · 数据面硬件转发 · representor 桥接 主机侧(Host) 虚拟机 / 容器 VF0 · VF1 · VF2 ovs-vswitchd 控制面 · OpenFlow Linux 内核 openvswitch 模块 · tc 子系统 · netdev tc-flower / rte_flow 下发通道 流表规则 → 硬件流表 PCIe 总线 · SR-IOV PF / VF 配置空间 DPU 侧 ARM 多核处理器 控制面 · OVS Agent VF Representor rep0 · rep1 · rep2 硬件流表 / eSwitch 引擎 匹配 · 动作 · 计数 · 老化 物理以太网口 25G / 100G · 上行链路 数据面直通路径 报文不经过主机内核 控制面 rep 下发 PCIe 报文入 转发 控制面流表 数据面转发 tc-flower 下发 PCIe / SR-IOV

上图展示了本课程要建立的整体认知:左侧是主机侧,包含虚拟机、OVS 控制面、内核模块与 PCIe 通道;右侧是 DPU 侧,包含 ARM 核、representor、硬件流表与物理口。控制面通过 tc-flower 或 rte_flow 把流表下发到硬件,数据面则从物理口进入后直接在硬件流表中匹配并转发到目标 VF,不再绕行主机内核。理解这张图,就理解了本课程的核心矛盾与解决思路。

技术栈全景可以按“硬件—驱动—控制面—数据面—工具”五层来梳理。硬件层包括支持 SR-IOV 的智能网卡或 DPU,如 NVIDIA BlueField、Intel IPU、AMD Pensando 等;驱动层涉及 mlx5_core、ice、ionic 等 PF/VF 驱动以及 representor 驱动;控制面层是 ovs-vswitchd 与 ovsdb-server;数据面层包括内核 openvswitch 模块、tc 子系统与硬件 eSwitch;工具层则包括 ovs-vsctl、ovs-ofctl、tc、ethtool、devlink 等。这五层之间的接口与调用关系,是后续章节逐一展开的重点。

学习路径建议按“先通概念、再动手、后排障”推进。第一阶段建立 OVS 与卸载的基本模型,理解流表、匹配域、动作与 representor 的作用;第二阶段在实验环境中完成一次完整的卸载配置,观察 tc filter 与 ovs-dpctl 的输出变化;第三阶段针对典型故障进行定位,例如卸载未生效、representor 状态异常、流表老化不一致等。每个阶段都应以“能说清、能复现、能判断”为标准。

实验环境建议:一台支持 SR-IOV 与硬件卸载的服务器,安装 Linux 内核 5.15 以上、OVS 2.17 以上;准备两块可直连的网卡或一个可用的 DPU 卡;使用 ip link、ovs-vsctl show、tc filter show 作为基础观察工具。若没有真实 DPU,可先用支持 tc-flower 卸载的智能网卡替代,核心机制一致。