OVN架构原理

OVN(Open Virtual Network)是支持虚拟网络抽象的软件系统,扩展了OVS的功能,支持虚拟L2、L3覆盖网络等。OVN架构由CMS、中央OVN数据库、hypervisor和网关组成,通过隧道技术实现逻辑网络与物理网络隔离。信息流从CMS配置逻辑网络到OVN北向数据库,然后由ovn-northd转化为OVN南向数据库,最终由ovn-controller在hypervisor上实现。OVN处理包括VIF、容器接口的生命周期,以及逻辑路由器和网关路由器的配置,确保安全、高效的数据包处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ovn-architecture

本文最初整理在我的github上SDN-Learning-notes

本文翻译自ovs官方手册,有删减

OVN架构

OVN(即Open Virtual Network)是一款支持虚拟网络抽象的软件系统。OVN在OVS现有功能的基础上原生支持虚拟网络抽象,例如虚拟L2,L3覆盖网络以及完全组。诸如DHCP,DNS的服务也是其关注的内容。就像OVS一样,OVN的设计目标是可以大规模运行的高质量生产级实施方案。

OVN部署由以下几个组件组成:

  • CMS(云管理系统)。这是OVN的最终用户(通过其用户和管理员)。与OVN集成需要安装与CMS特定的插件和相关软件(见下文)。OVN最初的目标CMS是OpenStack。我们通常会说一个CMS,但多个CMS也可以管理一个OVN的不同部分。

  • 安装在一个中央位置的OVN数据库,可以是物理节点,虚拟节点,甚至是一个集群。

  • 一个或多个(通常是很多)虚拟机管理程序(hypervisors)。hypervisors必须运行Open vSwitch并执行IntegrationGuide.rst在OVS源代码树中所述的接口。任何支持的OVS的hypervisor平台都是可以接受的。

  • 零个或多个网关。 网关通过在隧道和物理以太网端口之间双向转发数据包,将基于隧道的逻辑网络扩展到物理网络。这允许非虚拟机器参与逻辑网络。网关可能是物理机,虚拟机或基于ASIC同时支持vtep模式的硬件交换机。

hypervisor和网关一起被称为传输节点或chassis

下图显示了OVN和相关的主要组件的软件交互:

                                         CMS
                                          |
                                          |
                              +-----------|-----------+
                              |           |           |
                              |     OVN/CMS Plugin    |
                              |           |           |
                              |           |           |
                              |   OVN Northbound DB   |
                              |           |           |
                              |           |           |
                              |       ovn-northd      |
                              |           |           |
                              +-----------|-----------+
                                          |
                                          |
                                +-------------------+
                                | OVN Southbound DB |
                                +-------------------+
                                          |
                                          |
                       +------------------+------------------+
                       |                  |                  |
         HV 1          |                  |    HV n          |
       +---------------|---------------+  .  +---------------|---------------+
       |               |               |  .  |               |               |
       |        ovn-controller         |  .  |        ovn-controller         |
       |         |          |          |  .  |         |          |          |
       |         |          |          |     |         |          |          |
       |  ovs-vswitchd   ovsdb-server  |     |  ovs-vswitchd   ovsdb-server  |
       |                               |     |                               |
       +-------------------------------+     +-------------------------------+

从图的顶部开始,依次为:

  1. 首先是如上文所述的云管理系统。

  2. OVN/CMS插件是连接到OVN的CMS组件。 在OpenStack中,这是一个Neutron插件。该插件的主要目的是转换CMS中的逻辑网络的配置为OVN可以理解的中间表示。这个组件是必须是CMS特定的,所以对接一个新的CMS需要开发新的插件对接到OVN。所有在这个组件下面的其他组件是与CMS无关的。

  3. OVN北向数据库接收由OVN/CMS插件传递的逻辑网络配置的中间表示。数据库模式与CMS中使用的概念是“阻抗匹配的”,因此它直接支持逻辑交换机,路由器,ACL等概念。有关详细信息,请参见ovn-nb。(OVN北向数据库只有两个客户端:在它上面的OVN/CMS插件和在它下面的ovn-northd)

  4. ovn-northd用于连接到它上面的OVN北行数据库和它下面的OVN南行数据库。它将传统网络概念(从OVN北行数据库中取得)的逻辑网络配置转换为其下面的OVN南行数据库中的逻辑数据路径流。

  5. OVN南行数据库是系统的中心。(OVN南向数据库也只有两个客户端:它上面是ovn-northd以及在它下面的每个传输节点上的ovn-controller)。OVN南向数据库包含三种类型的数据:指定如何到达hypervisor和其他节点的物理网络(PN)表;用于描述逻辑网络的逻辑数据路径流的逻辑网络(LN)表;用于将逻辑网络组件的位置链接到物理网络的绑定表。hypervisor填充PN和Port_Binding表,而ovn-northd填充LN表。

    为了集群的可用性,OVN南行数据库性能必须随传输节点的数量而扩展。这可能需要一些ovsdb-server上的工作。

其余组件在每个hypervisor中都是一样的

  1. ovn-controller是每个hypervisor和软件网关上的OVN代理。北向,它连接到OVN南行数据库以了解OVN配置和状态,并把hypervisor的状态填充绑定表中的Chassis列以及PN表。南向,它连接到ovs-vswitchd作为OpenFlow控制器用于控制网络通信,并连接到本地ovsdb-server以允许它监视和控制Open vSwitch的配置。

  2. ovs-vswitchd和ovsdb-server是标准的Open vSwitch组件。

OVN中的信息流

OVN中的配置数据从北向南流动。CMS通过其OVN/CMS插件,通过北向数据库将逻辑网络配置传递给ovn-northd。反过来,ovn-northd将配置信息编译为较低级别的表单,并通过南行数据库将其传递到所有的chassis。

OVN中的状态信息从南向北流动。OVN目前仅提供以下几种形式的状态信息:

  • 首先,ovn-northd在北向Logical_Switch_Port表中填充up列:如果南向Port_Binding表中逻辑端口的chassis列非空,则设置为true,否则设置为false。这使CMS能够检测虚拟机的网络连接何时可用。

  • 其次,OVN向CMS提供关于其配置实现的反馈,即CMS提供的

<think>我们正在讨论OVN(Open Virtual Network)的组件及其功能说明。根据提供的引用,OVN是一个基于Open vSwitch(OVS)的网络虚拟化解决方案,用于构建软件定义网络(SDN)。它提供了一套分布式的机制来管理和控制虚拟网络。以下将详细介绍OVN的主要组件及其功能。 ### OVN 核心组件介绍 #### 1. **OVN 北向数据库 (OVN Northbound Database, OVN_NB)** - **功能**:存储用户定义的网络配置(逻辑网络拓扑),包括逻辑交换机、逻辑路由器、ACL规则、负载均衡器等[^2]。 - **接口**:通过`ovn-nbctl`命令行工具或REST API进行配置。 - **示例配置**: ```bash # 创建逻辑交换机 ovn-nbctl ls-add ls1 # 添加负载均衡器到逻辑交换机 ovn-nbctl lb-add lb1 192.168.1.100:80 10.0.0.1:80,10.0.0.2:80 tcp ovn-nbctl ls-lb-add ls1 lb1 ``` #### 2. **OVN 南向数据库 (OVN Southbound Database, OVN_SB)** - **功能**:存储由OVN中央组件转换后的物理网络映射信息,包括虚拟机端口绑定、隧道端点、路由表等[^2]。 - **作用**:作为控制平面(如`ovn-northd`)与数据平面(如`ovn-controller`)之间的桥梁。 #### 3. **中央组件 (ovn-northd)** - **功能**:将北向数据库中的逻辑网络配置转换为南向数据库中的物理网络流表[^2]。 - **工作方式**:实时监控OVN_NB的变化,并生成对应的OVN_SB记录。 #### 4. **本地控制器 (ovn-controller)** - **部署位置**:每台运行OVS的主机(计算节点或网关节点)。 - **功能**: - 从OVN_SB获取本机相关的网络配置。 - 将配置转换为OVS流表并下发到本地OVS实例[^2]。 - 管理隧道端点(如VXLAN、Geneve)和本地虚拟机端口。 #### 5. **OVN 网关 (OVN Gateway)** - **类型**: - **分布式网关**:默认模式,所有计算节点均可处理南北向流量。 - **集中式网关**:通过专用节点处理外部网络流量。 - **配置示例**: ```bash # 设置集中式网关 ovn-nbctl set logical_router lr1 options:chassis=gw1 ``` ### 关键功能说明 #### 逻辑网络抽象 - **逻辑交换机 (Logical Switch)**:提供二层虚拟网络,支持MAC学习、广播域隔离。 - **逻辑路由器 (Logical Router)**:提供三层路由功能,支持静态路由、NAT、负载均衡[^3]。 #### 网络服务 1. **负载均衡 (Load Balancing)** - 支持四层(TCP/UDP)负载均衡,可配置VIP和后端服务器池[^3]。 - 示例: ```bash ovn-nbctl lb-add lb2 10.10.10.22:8000 "10.10.10.2:8000,10.10.10.3:8000" tcp ``` 2. **访问控制列表 (ACL)** - 基于流量的五元组(源/目的IP、端口、协议)设置允许/拒绝规则。 - 示例: ```bash ovn-nbctl acl-add ls1 from-lport 1002 "ip4.src==10.0.0.0/24" allow ``` 3. **NAT 与 DHCP** - 提供SNAT(源地址转换)、DNAT(目的地址转换)功能。 - 通过OVN内置的DHCP服务为虚拟机分配IP地址。 ### 组件交互流程 ```mermaid sequenceDiagram participant User as 管理员 participant NB as OVN_NB participant Northd as ovn-northd participant SB as OVN_SB participant Controller as ovn-controller participant OVS as Open vSwitch User->>NB: 配置逻辑网络 (ovn-nbctl) NB->>Northd: 通知配置变更 Northd->>SB: 生成物理映射 loop 主机同步 SB->>Controller: 推送本机配置 Controller->>OVS: 下发流表 end ``` ### 典型部署架构 ```mermaid graph TD subgraph 控制节点 NB(OVN_NB数据库) SB(OVN_SB数据库) Northd(ovn-northd进程) end subgraph 计算节点1 Controller1(ovn-controller) OVS1(Open vSwitch) VM1[虚拟机] end subgraph 计算节点2 Controller2(ovn-controller) OVS2(Open vSwitch) VM2[虚拟机] end NB --> Northd Northd --> SB SB --> Controller1 SB --> Controller2 Controller1 --> OVS1 Controller2 --> OVS2 OVS1 --> VM1 OVS2 --> VM2 ``` ### 性能优化建议 - **流表压缩**:通过`ovn-northd`的`lflow-cache`减少南向数据库记录数量。 - **网关分流**:对东西向流量使用分布式网关,南北向流量使用集中式网关。 --- ### 相关问题 1. OVN 如何实现跨主机的虚拟机通信? 2. 如何配置 OVN 的分布式 NAT 功能? 3. OVN 中的 ACL 规则与 OpenFlow 规则有何区别? 4. OVN 的高可用性方案有哪些? 5. 如何监控 OVN 网络流量和性能?[^1][^2]</think>### OVN 核心组件及功能详解 #### 一、OVN 架构概述 OVN(Open Virtual Network)是基于 Open vSwitch(OVS)的分布式 SDN 解决方案,其架构采用**控制平面与数据平面分离**的设计: ```mermaid graph TD A[管理平面] --> |配置下发| B(OVN Northbound DB) B --> C[ovn-northd] C --> D(OVN Southbound DB) D --> E[ovn-controller] E --> F[Open vSwitch] ``` 核心特性包括: - 逻辑网络抽象(交换机/路由器) - 分布式网络服务(LB/ACL/DHCP) - 物理网络无关性 - 多租户隔离支持[^2] #### 二、核心组件功能说明 1. **OVN Northbound 数据库 (OVN_NB)** - **功能**:存储管理员定义的**逻辑网络配置** - 管理对象: - 逻辑交换机 (Logical Switches) - 逻辑路由器 (Logical Routers) - 负载均衡器 (Load Balancers) - 访问控制列表 (ACLs) - **操作工具**:`ovn-nbctl` ```bash # 示例:创建负载均衡器[^3] ovn-nbctl lb-add lb1 192.168.1.100:80 10.0.0.1:80,10.0.0.2:80 tcp ``` 2. **ovn-northd 服务** - **核心作用**:逻辑网络 ➔ 物理网络的**翻译器** - 工作流程: 1. 监控 OVN_NB 配置变更 2. 生成物理网络流表规则 3. 写入 OVN Southbound 数据库 - **关键转换**:逻辑端口 ➔ 物理端口绑定 3. **OVN Southbound 数据库 (OVN_SB)** - **功能**:存储**物理网络状态**信息 - 关键数据: - 主机隧道端点 (Chassis) - 端口绑定关系 (Port_Binding) - 数据路径流表 (Datapath_Binding) - **特点**:分布式强一致性数据库 4. **ovn-controller 代理** - **部署位置**:每台计算/网络节点 - **核心功能**: - 从 OVN_SB 获取本机流表规则 - 将规则编译为 OpenFlow 指令 - 下发到本地 OVS 实例 - 报告物理端口状态 - **关键进程**:`ovn-controller` #### 三、网络功能实现机制 1. **负载均衡 (Load Balancing)** - 支持四层(TCP/UDP)负载分发 - **配置示例**[^3]: ```bash ovn-nbctl lb-add lb2 10.10.10.22:8000 "10.10.10.2:8000,10.10.10.3:8000" tcp ovn-nbctl ls-lb-add ls2 lb2 # 绑定到逻辑交换机 ``` - **工作原理**:DNAT + 连接跟踪 2. **逻辑路由器 (Logical Router)** - 实现功能: - 跨子网路由 - 静态路由分发 - SNAT/DNAT - **分布式特性**:路由计算在所有节点执行 3. **安全组 (ACLs)** - 基于五元组的流量控制 - 优先级匹配机制: ```bash ovn-nbctl acl-add ls1 from-lport 1002 "ip4.src==10.0.0.0/24" allow ``` #### 四、典型工作流程 ```mermaid sequenceDiagram participant Admin as 管理员 participant NB as OVN_NB participant Northd as ovn-northd participant SB as OVN_SB participant Controller as ovn-controller participant VM as 虚拟机 Admin->>NB: 创建逻辑网络(ovn-nbctl) NB->>Northd: 配置变更通知 Northd->>SB: 生成物理流表 loop 主机同步 SB->>Controller: 推送本机流表 Controller->>VM: 配置OVS端口 end VM->>VM: 跨主机通信 ``` #### 五、部署注意事项 1. **版本兼容性**: - OVN 从 OVS v2.13.0 开始独立发布[^1] - 需匹配 OVS 版本(建议 ≥2.17) 2. **高可用方案**: - 数据库集群(Raft 协议) - 多 northd 主备部署 3. **性能优化**: - 流表缓存 (lflow-cache) - 并发连接处理 --- ### 相关问题 1. OVN 如何实现虚拟机迁移时的网络连续性? 2. 在 OVN 中如何配置跨数据中心的网络连接? 3. OVN 与 OpenStack Neutron 的集成机制是什么? 4. 如何监控 OVN 网络流量和性能指标? 5. OVN 中的分布式 NAT 与传统集中式 NAT 有何优劣?[^1][^2]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值