ovn-northd组件介绍

下面我们将来详细解析一下 ovn-northd。这是一个在 OVN (Open Virtual Network) 架构中非常核心的组件。

1. OVN 架构简介

为了理解 ovn-northd,我们首先需要对 OVN 的整体架构有一个基本了解。OVN 是由 Open vSwitch (OVS) 项目开发的一个用于实现虚拟网络的系统。它旨在为虚拟机、容器等虚拟化环境提供网络虚拟化功能。

OVN 的架构主要分为两个部分:

  • 北向数据库: 这是 OVN 的“大脑”或“意图”数据库。它存储了网络管理员希望实现的逻辑网络配置。例如,逻辑交换机、逻辑路由器、ACL(访问控制列表)、端口等。这些配置通常通过云管理平台(如 OpenStack Neutron)或 Kubernetes CNI 插件(如 OVN-Kubernetes)来写入。
  • 南向数据库: 这是 OVN 的“实现”数据库。它存储了在底层物理网络上实际执行流表等具体指令的配置。

2. ovn-northd 的核心作用

ovn-northd 正是连接北向数据库和南向数据库的中央守护进程。它的主要职责是:

将高层次的逻辑网络配置(来自北向数据库)转换为低层次的、具体的物理流表指令(写入南向数据库)。

可以把它想象成一个“编译器”或“翻译官”:

  • 输入:网络管理员定义的逻辑网络拓扑和策略(例如,“创建一个逻辑交换机 LS1,把 VM1 和 VM2 连接到 LS1 上,并且允许它们互相通信”)。
  • 输出:一组可以在 OVS 数据路径上执行的精确的 OpenFlow 流表(例如,“当数据包从 VM1 的 VIF 发出,且目标 MAC 地址是 VM2 时,将其转发到 VM2 的 VIF”)。

3. 工作流程

ovn-northd 的工作流程可以概括为以下几个步骤:

  1. 监听北向数据库: ovn-northd 持续监听北向数据库的变化。当管理员通过云平台或 CLI 创建、修改或删除任何逻辑网络组件(如逻辑端口、逻辑路由器等)时,北向数据库会更新。
  2. 计算逻辑流: ovn-northd 读取北向数据库中的最新状态,并根据这些逻辑配置计算出一系列的“逻辑流”(Logical Flows)。逻辑流是一种更高级、更抽象的流表示,它描述了数据包在逻辑网络空间中应该如何被处理(例如,在逻辑路由器中进行路由查找,在逻辑交换机中进行二层转发)。
  3. 转换为物理流: ovn-northd 将这些逻辑流进一步“编译”或“转换”为具体的 OpenFlow 流表。这个过程非常复杂,因为它需要考虑底层的物理拓扑。例如,一个逻辑流可能需要被翻译成分布在多个物理机上的多条 OpenFlow 规则,以确保数据包能正确地在物理网络中穿越。
  4. 写入南向数据库: ovn-northd 将生成的这些 OpenFlow 流表和其他必要的配置信息(如隧道配置)写入到南向数据库中。
  5. 分发到底层: 运行在每个计算节点上的 ovn-controller 会监听南向数据库。当它发现与自己相关的流表更新时,就会将这些流表下发到本地运行的 Open vSwitch 实例中,从而在物理上实现网络的连通性。

4. 一个简单的例子

假设你要创建一个简单的逻辑网络,包含一个逻辑交换机 LS1 和两个逻辑端口 lp1 (连接 VM1) 和 lp2 (连接 VM2)。

  1. 管理员操作: 通过 OpenStack 或 OVN-Kubernetes 创建 LS1, lp1, lp2。这些信息被写入 北向数据库
  2. ovn-northd 工作:
    • ovn-northd 检测到北向数据库的变化。
    • 它计算出逻辑流:从 lp1 发往 lp2 的数据包应该被转发;从 lp2 发往 lp1 的数据包也应该被转发。
    • 它将这些逻辑流转换为 OpenFlow 流表。这些流表可能包括:
      • 在 VM1 所在主机上:匹配从 lp1 发出的、目标 MAC 为 lp2 的数据包,将其通过隧道(如 Geneve)发送到 VM2 所在的主机。
      • 在 VM2 所在主机上:匹配从隧道接收到的、目标为本机 lp2 的数据包,将其转发给 VM2 的虚拟网卡。
    • ovn-northd 将这些 OpenFlow 流表写入 南向数据库
  3. ovn-controller 执行:
    • VM1 所在主机的 ovn-controller 从南向数据库获取新的流表,并配置到本地的 OVS。
    • VM2 所在主机的 ovn-controller 也做同样的操作。
  4. 结果: 现在,VM1 和 VM2 之间就可以通过网络通信了。

5. 关键特性与重要性

  • 中心化控制: ovn-northd 是 OVN 的唯一决策中心,确保了整个网络策略的一致性和正确性。
  • 解耦: 它将逻辑网络视图与底层物理网络实现完全解耦。管理员无需关心底层物理拓扑的复杂性,只需定义逻辑网络即可。
  • 高可用性: 在生产环境中,通常会部署多个 ovn-northd 实例,但只有一个处于活跃状态,其余作为备份。当活跃实例故障时,备份实例会自动接管,保证服务的连续性。
  • 性能瓶颈: 由于所有逻辑流的计算都由 ovn-northd 完成,在超大规模的网络环境下,它可能会成为一个性能瓶颈。因此,它的性能优化和扩展性是 OVN 开发中的一个重要关注点。

总结

ovn-northd 是 OVN 系统的核心引擎。它扮演着“大脑”的角色,负责将网络管理员的逻辑意图(北向数据库)翻译成物理设备能够理解的具体指令(南向数据库),从而在复杂的虚拟化环境中实现自动化、可编程和高性能的网络服务。理解 ovn-northd 的工作原理,是深入掌握 OVN 网络虚拟化技术的关键。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值