这张图展示的是 OVN (Open Virtual Network) 在计算节点(Chassis)上的数据面架构。其核心逻辑是将上层的逻辑网络意图转化为底层的物理转发行为。
核心组件功能定义与作用
1. OVN-Controller
-
定义:OVN 在每个节点上的代理进程(Agent),是 OVN 的“地方大脑”。
-
作用:
- 翻译官:它连接到集群的 SB DB (Southbound Database) ,获取逻辑流表(Logical Flows),并根据当前节点的物理拓扑将其翻译成 OpenFlow 流表。
- 控制器:通过 OpenFlow 协议向
vswitchd下发流表,控制报文转发逻辑。 - 状态汇报:监控本地
OVSDB里的配置(如网口状态),并将这些本地信息反馈给 SB DB,实现逻辑层与物理层的同步。
2. OVSDB (ovsdb-server)
-
定义:Open vSwitch 的配置数据库服务器。
-
作用:
- 配置中心:存储本地虚拟交换机(OVS)的静态配置信息,例如网桥(Bridge)的创建、Patch Port 的连接、QoS 设置等。
- 信息桥梁:图中显示
OVSDB同时服务于OVN-Controller(提供本地端口信息)和vswitchd(提供交换机配置指令)。它不处理具体报文,只负责管理“元数据”。
3. vswitchd (ovs-vswitchd)
-
定义:Open vSwitch 的用户态核心守护进程。
-
作用:
- 流表管理:接收来自
OVN-Controller的 OpenFlow 指令,并在内存中维护流表(Slow Path)。 - 转发决策:当内核态无法处理首包时(Miss),报文会上送到
vswitchd进行查表匹配。 - ** datapath 控制**:它负责将生成的精准流表下发到内核模块,确保后续报文能直接在内核态快速转发。
- 流表管理:接收来自
4. kernel module (openvswitch.ko)
-
定义:OVS 的内核态数据路径(Datapath)。
-
作用:
- 执行器 (Fast Path) :负责报文的实际转发、封包/解包(如 Geneve、VXLAN)、NAT 和负载均衡执行。
- 性能保障:基于流表缓存机制,报文在内核态直接处理,避免了频繁的用户态/内核态切换,是整个数据面的性能瓶颈所在。
逻辑交互流程 (根据图中箭头)
- 感知与交互:
OVN-Controller通过监控OVSDB感知本地端口的变化(如 Pod 启动),同时从云端的 SB DB 获取逻辑拓扑。 - 流表下发:
OVN-Controller计算出 OpenFlow 流表,发送给vswitchd。 - 配置读取:
vswitchd从OVSDB获取网桥和端口的底层配置信息,结合 OpenFlow 流表构建转发逻辑。 - 硬件加速/内核转发:
vswitchd将处理后的转发规则(Datapath flows)同步到kernel module,实现高速报文交换。
第一性原理视角
从底层逻辑看,这套架构实现了控制平面(OVN-Controller)与数据平面(OVS-vswitchd/Kernel)的解耦。OVN-Controller 负责“想”(算法和逻辑),而 vswitchd 和 kernel module 负责“做”(报文查表与动作执行)。