下面我们将来详细解析一下 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 的工作流程可以概括为以下几个步骤:
- 监听北向数据库:
ovn-northd持续监听北向数据库的变化。当管理员通过云平台或 CLI 创建、修改或删除任何逻辑网络组件(如逻辑端口、逻辑路由器等)时,北向数据库会更新。 - 计算逻辑流:
ovn-northd读取北向数据库中的最新状态,并根据这些逻辑配置计算出一系列的“逻辑流”(Logical Flows)。逻辑流是一种更高级、更抽象的流表示,它描述了数据包在逻辑网络空间中应该如何被处理(例如,在逻辑路由器中进行路由查找,在逻辑交换机中进行二层转发)。 - 转换为物理流:
ovn-northd将这些逻辑流进一步“编译”或“转换”为具体的 OpenFlow 流表。这个过程非常复杂,因为它需要考虑底层的物理拓扑。例如,一个逻辑流可能需要被翻译成分布在多个物理机上的多条 OpenFlow 规则,以确保数据包能正确地在物理网络中穿越。 - 写入南向数据库:
ovn-northd将生成的这些 OpenFlow 流表和其他必要的配置信息(如隧道配置)写入到南向数据库中。 - 分发到底层: 运行在每个计算节点上的
ovn-controller会监听南向数据库。当它发现与自己相关的流表更新时,就会将这些流表下发到本地运行的 Open vSwitch 实例中,从而在物理上实现网络的连通性。
4. 一个简单的例子
假设你要创建一个简单的逻辑网络,包含一个逻辑交换机 LS1 和两个逻辑端口 lp1 (连接 VM1) 和 lp2 (连接 VM2)。
- 管理员操作: 通过 OpenStack 或 OVN-Kubernetes 创建
LS1,lp1,lp2。这些信息被写入 北向数据库。 - ovn-northd 工作:
ovn-northd检测到北向数据库的变化。- 它计算出逻辑流:从
lp1发往lp2的数据包应该被转发;从lp2发往lp1的数据包也应该被转发。 - 它将这些逻辑流转换为 OpenFlow 流表。这些流表可能包括:
- 在 VM1 所在主机上:匹配从
lp1发出的、目标 MAC 为lp2的数据包,将其通过隧道(如 Geneve)发送到 VM2 所在的主机。 - 在 VM2 所在主机上:匹配从隧道接收到的、目标为本机
lp2的数据包,将其转发给 VM2 的虚拟网卡。
- 在 VM1 所在主机上:匹配从
ovn-northd将这些 OpenFlow 流表写入 南向数据库。
- ovn-controller 执行:
- VM1 所在主机的
ovn-controller从南向数据库获取新的流表,并配置到本地的 OVS。 - VM2 所在主机的
ovn-controller也做同样的操作。
- VM1 所在主机的
- 结果: 现在,VM1 和 VM2 之间就可以通过网络通信了。
5. 关键特性与重要性
- 中心化控制:
ovn-northd是 OVN 的唯一决策中心,确保了整个网络策略的一致性和正确性。 - 解耦: 它将逻辑网络视图与底层物理网络实现完全解耦。管理员无需关心底层物理拓扑的复杂性,只需定义逻辑网络即可。
- 高可用性: 在生产环境中,通常会部署多个
ovn-northd实例,但只有一个处于活跃状态,其余作为备份。当活跃实例故障时,备份实例会自动接管,保证服务的连续性。 - 性能瓶颈: 由于所有逻辑流的计算都由
ovn-northd完成,在超大规模的网络环境下,它可能会成为一个性能瓶颈。因此,它的性能优化和扩展性是 OVN 开发中的一个重要关注点。
总结
ovn-northd 是 OVN 系统的核心引擎。它扮演着“大脑”的角色,负责将网络管理员的逻辑意图(北向数据库)翻译成物理设备能够理解的具体指令(南向数据库),从而在复杂的虚拟化环境中实现自动化、可编程和高性能的网络服务。理解 ovn-northd 的工作原理,是深入掌握 OVN 网络虚拟化技术的关键。
2748

被折叠的 条评论
为什么被折叠?



