计算节点数据面: ovn-controller 和 ovs 之间的关系

0 阅读2分钟

image.png

这张图展示的是 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 和负载均衡执行。
    • 性能保障:基于流表缓存机制,报文在内核态直接处理,避免了频繁的用户态/内核态切换,是整个数据面的性能瓶颈所在。

逻辑交互流程 (根据图中箭头)

  1. 感知与交互OVN-Controller 通过监控 OVSDB 感知本地端口的变化(如 Pod 启动),同时从云端的 SB DB 获取逻辑拓扑。
  2. 流表下发OVN-Controller 计算出 OpenFlow 流表,发送给 vswitchd
  3. 配置读取vswitchdOVSDB 获取网桥和端口的底层配置信息,结合 OpenFlow 流表构建转发逻辑。
  4. 硬件加速/内核转发vswitchd 将处理后的转发规则(Datapath flows)同步到 kernel module,实现高速报文交换。

第一性原理视角

从底层逻辑看,这套架构实现了控制平面(OVN-Controller)与数据平面(OVS-vswitchd/Kernel)的解耦OVN-Controller 负责“想”(算法和逻辑),而 vswitchdkernel module 负责“做”(报文查表与动作执行)。