解析OVN架构及其在OpenStack中的集成

引言

随着云计算技术的发展,虚拟化网络成为云平台不可或缺的一部分。为了更好地管理和控制虚拟网络,Open Virtual Network (OVN) 应运而生。作为Open vSwitch (OVS) 的扩展,OVN 提供了对虚拟网络抽象的支持,使得大规模部署和管理变得更加容易。本文将详细介绍 OVN 架构、它与 OpenStack 的集成方式、基于 OVN 的虚拟网络实现以及 OVN 在其中发挥的作用。

OVN架构详解

1. 架构概述

OVN 是一个支持虚拟网络抽象的系统,旨在为云环境提供分布式虚拟交换机和路由器的功能。它的设计目标是能够大规模运行,并且可以与多种云管理系统(CMS)集成,如OpenStack。OVN 架构由以下几个关键部分组成:
在这里插入图片描述

  • 云管系统(Cloud Management System, CMS):这是用户和管理员与 OVN 交互的主要界面,通常指代的是像 OpenStack 这样的云平台。
  • OVN/CMS 插件:用于将 CMS 中定义的逻辑网络配置转换成 OVN 可以理解的形式,并写入北向数据库中。
  • OVN 北向数据库 (Northbound Database):存储从 CMS 插件传递过来的逻辑网络配置信息。
  • ovn-northd:这是一个集中式的控制器,负责将北向数据库中的逻辑网络配置转换为更底层的数据路径流规则,并将其写入南向数据库。
  • OVN 南向数据库 (Southbound Database):保存 ovn-northd 转换后的数据路径流规则,以及物理网络信息。
  • ovn-controller:每个 虚拟层(KVM、Xen、hyperv)或网关上的代理程序,负责连接到南向数据库获取最新配置,并应用到本地的 OVS 上。
  • ovs-vswitchd 和 ovsdb-server:这是 OVS 的核心组件,负责实际的数据包转发工作

2. 数据流动

在 OVN 中,配置数据是从上至下流动的,即从 CMS 开始,经过 OVN/CMS 插件、北向数据库、ovn-northd 到达南向数据库,最后由各个节点上的 ovn-controller 实施。相反地,状态信息则是自下而上传递,例如当某个 VM 启动后,其对应的逻辑端口会被标记为“up”,这一变化会通过南向数据库反馈给 ovn-northd 并最终反映到 CMS。

OVN与OpenStack集成

1. 集成背景

OpenStack Neutron 是 OpenStack 项目中负责网络服务的模块,最初依赖于多种插件来实现不同的网络功能。然而,随着需求的增长和技术的进步,Neutron 的架构逐渐暴露出一些性能瓶颈。为此,OVS 社区推出了 OVN 项目,旨在简化 Neutron 的架构并提高整体性能。通过使用 OVN 作为 Neutron 的后端,不仅可以减少消息队列机制带来的延迟,还能让 Neutron 更专注于 API 层面的工作。

2. 具体步骤

要将 OVN 集成到 OpenStack 环境中,首先需要确保所有计算节点都安装了 OVS 和 OVN 相关软件包。接着,在 OpenStack 控制节点上配置 neutron.conf 文件,指定使用 OVN ML2 插件,并设置相应的 VNI 范围等参数。此外,还需要调整 neutron-server 和其他相关服务的启动脚本,使其能够正确加载 OVN 插件。

对于已经存在的 OpenStack 环境来说,可以通过逐步迁移的方式引入 OVN 支持。例如,可以在不影响现有业务的前提下先在一个子网内测试 OVN 的表现,待验证无误后再推广至整个集群。

基于OVN的虚拟网络实现

1. 虚拟二层网络

OVN 提供了原生的 L2 网络支持,允许创建多个隔离的虚拟 LAN (VLAN),并通过 Geneve 等隧道协议实现跨主机通信。每个 VLAN 可以被视为一个独立的广播域,确保不同租户之间的流量不会相互干扰。同时,OVN 还支持 DHCP 和 DNS 服务,帮助简化 IP 地址分配过程。

2. 分布式三层路由

除了基本的二层功能外,OVN 还实现了分布式虚拟路由器,能够在多个计算节点之间分发路由表项,从而提高了路由决策的速度和效率。更重要的是,这种分布式设计避免了单点故障的风险,增强了系统的可靠性和容错能力。

3. 安全组和 ACL

为了保障网络安全,OVN 引入了安全组的概念,允许管理员根据 MAC 地址、IP 地址或端口号设置访问控制列表 (ACL)。这些规则可以直接作用于 OVS 内部接口,无需借助额外的防火墙设备,既减少了复杂度又提升了处理速度。

OVN的作用

1. 提升性能

相比于传统的 Neutron 架构,OVN 减少了中间环节的数量,直接利用 OVSDB 协议进行读写操作,显著降低了 RPC 消息传输的开销。这不仅加快了配置同步的速度,也减轻了控制平面的压力。

2. 增强灵活性

由于 OVN 本身是一个高度模块化的系统,因此它可以轻松适应各种不同的应用场景。无论是公有云还是私有云,无论是容器还是虚拟机,只要能运行 OVS,就可以部署 OVN 来构建灵活多变的虚拟网络。

3. 简化运维

得益于其清晰的角色划分和自动化程度较高的特性,OVN 大大简化了日常维护工作。比如,当 VM 发生迁移时,OVN 可以自动更新相关的流表规则,保证新位置下的正常通信;而对于大规模集群而言,管理员也可以方便地监控和管理整个网络的状态。

综上所述,OVN 不仅解决了传统网络架构中存在的诸多问题,还为企业级用户提供了更加便捷高效的解决方案。未来,随着 SDN 技术的不断发展和完善,相信 OVN 将会在更多领域展现出其独特的优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/67299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Flink系列】9. Flink容错机制

9. 容错机制 在Flink中,有一套完整的容错机制来保证故障后的恢复,其中最重要的就是检查点。 9.1 检查点(Checkpoint) 9.1.1 检查点的保存 1)周期性的触发保存 “随时存档”确实恢复起来方便,可是需要我…

《Keras 3 在 TPU 上的肺炎分类》

Keras 3 在 TPU 上的肺炎分类 作者:Amy MiHyun Jang创建日期:2020/07/28最后修改时间:2024/02/12描述:TPU 上的医学图像分类。 (i) 此示例使用 Keras 3 在 Colab 中查看 GitHub 源 简介 设置 本教程将介…

openssl s_server源码剥离

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…

51单片机 DS18B20温度储传感器

DS18B20温度传感器 64-BITROM:作为器件地址,用于总线通信的寻址,是唯一的,不可更改 SCRATCHPAD(暂存器):用于总线的数据交互 EEPROM:用于保存温度触发阈值和配置参数 暂存器 单总线…

[操作系统] 深入理解操作系统的概念及定位

概念 任何计算机系统都包含⼀个基本的程序集合,称为操作系统(OS)。 其核心功能如图片所示,包括: 内核 (Kernel): 内核是操作系统的核心部分,被认为是狭义上的操作系统,直接与硬件打交道。负责进程管理、内…

Java并发编程——线程池(基础,使用,拒绝策略,命名,提交方式,状态)

我是一个计算机专业研0的学生卡蒙Camel🐫🐫🐫(刚保研) 记录每天学习过程(主要学习Java、python、人工智能),总结知识点(内容来自:自我总结网上借鉴&#xff0…

nginx 配置代理,根据 不同的请求头进行转发至不同的代理

解决场景:下载发票的版式文件,第三方返回的是url链接地址,但是服务是部署在内网环境,无法访问互联网进行下载。此时需要进行走反向代理出去,如果按照已有套路,就是根据不同的访问前缀,跳转不同的…

docker在不删除容器的情况下修改端口映射

注意:必须先停止docker服务!!!! 1) 停止容器 2) 停止docker服务(systemctl stop docker) 3) 修改这个容器的hostconfig.json和config.v2.json文件中的端口 先查看容器id docker inspect jenkins 进入该目录 hostcon…

【js进阶】设计模式之单例模式的几种声明方式

单例模式&#xff0c;简言之就是一个类无论实例化多少次&#xff0c;最终都是同一个对象 原生js的几个辅助方式的实现 手写forEch,map,filter Array.prototype.MyForEach function (callback) {for (let i 0; i < this.length; i) {callback(this[i], i, this);} };con…

专题 - STM32

基础 基础知识 STM所有产品线&#xff08;列举型号&#xff09;&#xff1a; STM产品的3内核架构&#xff08;列举ARM芯片架构&#xff09;&#xff1a; STM32的3开发方式&#xff1a; STM32的5开发工具和套件&#xff1a; 若要在电脑上直接硬件级调试STM32设备&#xff0c;则…

-bash: /java: cannot execute binary file

在linux安装jdk报错 -bash: /java: cannot execute binary file 原因是jdk安装包和linux的不一致 程序员的面试宝典&#xff0c;一个免费的刷题平台

【MySQL】使用C语言链接

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;MySQL 目录 一&#xff1a;&#x1f525; MySQL connect &#x1f98b; Connector / C 使用&#x1f98b; mysql 接口介绍&#x1f98b; 完整代码样例 二&#xff1a;&#x1f525; 共勉 一&#…

平滑算法 效果比较

目录 高斯平滑 效果对比 移动平均效果比较: 高斯平滑 效果对比 右边两个参数是1.5 2 代码: smooth_demo.py import numpy as np import cv2 from scipy.ndimage import gaussian_filter1ddef gaussian_smooth_array(arr, sigma):smoothed_arr = gaussian_filter1d(arr, s…

P3数据结构、数据类型、数字编码、字符编码:保姆级图文详解

文章目录 前言1、数据结构分类1.1、逻辑结构&#xff1a;线性与非线性1.2、物理结构&#xff1a;连续与分散1.3、数据结构的实现方式1.4、数据结构的选择依据 2、基本数据类型2.1、定义与分类2.2、存储形式 3、数字编码3.1、原码、反码与补码3.2、浮点数编码3.3、整数与浮点数区…

解密AIGC三大核心算法:GAN、Transformer、Diffusion Models原理与应用

在当今数字化时代&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;技术正以前所未有的速度改变着我们的生活和工作方式。从创意无限的文本生成&#xff0c;到栩栩如生的图像创作&#xff0c;再到动听的音乐旋律&#xff0c;AIGC的魔力无处不在。而这一切的背后&#…

Web前端------HTML表格

一.表格标签介绍 表格&#xff0c;类似操作的软件excel一样&#xff0c;通过规范的行列方式展示数据的一种视图&#xff01; 网页中&#xff08;初级开发&#xff09;&#xff0c;对于这种规范的数据&#xff0c;使用表格标签最方便的&#xff1b; 实际开发&#xff08;高级开…

nginx 配置域名前缀访问 react 项目

说明一下&#xff1a;我是使用域名转发访问的&#xff0c;访问流程如下&#xff1a; 浏览器 》 服务器1 》 服务器2 由于服务器1已经为 https 的访问方式做了 ssl 证书等相关配置&#xff0c;然后转发到服务器2&#xff0c; 所以在服务器2中不需要再配置 ssl 证书相关的东西了&…

imbinarize函数用法详解与示例

一、函数概述 众所周知&#xff0c;im2bw函数可以将灰度图像转换为二值图像。但MATLAB中还有一个imbinarize函数可以将灰度图像转换为二值图像。imbinarize函数是MATLAB图像处理工具箱中用于将灰度图像或体数据二值化的工具。它可以通过全局或自适应阈值方法将灰度图像转换为二…

数仓建模(三)建模三步走:需求分析、模型设计与数据加载

本文包含&#xff1a; 数据仓库的背景与重要性数据仓库建模的核心目标本文结构概览&#xff1a;需求分析、模型设计与数据加载 目录 第一部分&#xff1a;需求分析 1.1 需求分析的定义与目标 1.2 需求分析的步骤 1.2.1 业务需求收集 1.2.2 技术需求分析 1.2.3 成果输出…

【C++指南】类和对象(八):匿名对象

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 引言 在C编程中&#xff0c;匿名对象是一种特殊的对象&#xff0c;它在创建时没有被命名。 这种对象通常用…