OVN 简介

2023-05-16

文章目录

  • OVN 介绍
  • OVN的架构
  • OVN 应用
    • OVN 信息流
      • 配置数据
      • 状态信息
    • Chassis 设置
    • 逻辑网络

OVN 介绍

Open vSwitch(OVS)是一款开源的“虚拟交换机”,控制协议方面它不但支持 OpenFlow 的所有特性而且扩展了部分 OpenFlow 的功能;Overlay 协议方面它支持 GRE, VXLAN, STT, Geneve 四种主流Overlay 数据包。OVS 已经是数据平面的事实标准了。

但是长期一来 OVS 都缺乏一个统一的网络模型(Neutron 虽然花费巨大力气实现一个网络模型但是仅仅适用于 OpenStack 而无法用于容器更加无法单独使用),于是在2015年 OVS 社区宣布了一个子项目——Open Virtual Network(OVN)。它旨在为 OVS 提供一个控制平面,通过一个统一的网络模型为容器、虚拟机提供相同的网络服务。

OVN 提供的是一个轻量级控制器,提供了比 openvSwitch 更高层的抽象,与逻辑路由器和逻辑交换机而不是 flow 一起工作;这个轻量级不但体现在 OVN 本身的代码少(只有几个 C 语言文件,而且代码很少),模型简单(虽然简单但是很丰富,更懂得利用 OVS 本身的特性)而且它的流表设计(Pipeline)也容易理解。

OVN 是一系列守护程序,它们将虚拟网络配置转换为 OpenFlow,并将其安装到 openvSwitch 中;

OVN 的功能

  • L2功能,分布式逻辑交换机
  • L3功能,分布式逻辑路由器
  • ACL,访问控制列表
  • DHCP,DNS
  • NAT,SNAT、DNAT都支持
  • Load Balancer,支持面向内部的负载均衡和提供外部访问的负载均衡

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  |
       |                               |     |                               |
       +-------------------------------+     +-------------------------------+

主要组成部分包括

  • ovn northd,将 CMS 的北向配置转换为南向数据库的逻辑流。连接其上方的 ovn Northbound 数据库和下方的 ovn Southbound 数据库。它将传统网络概念中的逻辑网络配置(取自 OVN 北向数据库)转换为其下方 OVN 南向数据库中的逻辑数据路径流。
  • ovn controller,一个在集群中的每个 Hypervisor 上的 OVN agent,北向连接 ovn-southbound 数据库。它将南向数据库中的逻辑流转换为 OpenFlow for Open vSwitch。它还处理某些流量,例如 DHCP 和 DNS。
  • ovn nbctl,一个用于连接北向数据库的工具。
  • ovn sbctl,一个用于连接南向数据库的工具。
  • ovn northbound Database, 接收 OVN/CMS 插件传递的逻辑网络配置的中间件。数据库模式意味着与 CMS 中使用的概念匹配,它直接支持逻辑交换机、路由器、ACL等概念。
  • OVN Southbound Database,包含三种数据:指定如何到达 hypervisor 和其他节点的物理网络(PN)表,用“逻辑数据路径流”描述逻辑网络的逻辑网络(LN)表,“”和将逻辑网络组件的位置链接到物理网络的绑定表。

OVN 引入了两个全新的 OVSDB,一个叫 Northbound DB(北向数据库,NB),一个叫 Southbound DB(南向数据库,SB);两个库都可以导出远程接口,允许用户通过 OVSDB 协议对数据库进行操作。

NB 存放的是我们定义的逻辑交换机、逻辑路由器之类的数据,我们可以通过 ovn 提供的命令行(ovn-nbctl)完成添加、删除、修改、查询等操作;当然可以写代码通过 OVSDB 协议完成类似动作。OVN 的 NB 是面向“上层应用”的或者叫“云管平台(Cloud Management System,CMS)”。

SB 进程比较特殊它同时接受两边的“写入”,首先是运行在 ovn-host 上的 ovn-controller 启动之后会去主动连接到 ovn-central 节点上的 SB 进程,把自己的 IP 地址(Chassis),本机的 OVS 状态(Datapath_Binding)写入到 SB 数据库中。ovn-controller 还“监听” SB 数据库中流表的变化(Flow)去更新本地的 OVS 数据库 – 流表下发。

SB 中的流表是由运行在 ovn-central 节点上的 ovn-northd 进程修改的,ovn-northd 会“监听” NB 的改变,把逻辑交换机、路由器的定义转换成流表(Flow)写入到 SB 数据库。

整个架构非常简单,OVN 仅仅提供了一组网络模型(逻辑交换机、逻辑路由器等),提供了一个OVSDB 数据库用来存放这些模型同时把数据库的访问权限开放给最终用户,让最终用户通过 OVSDB 协议来直接“写入”这些模型(北向)。通过一个叫 ovn-northd 的进程把网络模型转换成流表,放入另一个数据库让 ovn-host 自己来“取”流表(南向),以此完成流表下发。

OVN 应用

OVN 信息流

配置数据

OVN 中的配置数据从北向南传递,CMS 使用其 OVN/CMS 插件通过 northbound 数据库传递 ovn 的逻辑网络配置给 ovn−northd,反过来,ovn−northd 将配置编译为较低级别的形式,并通过 southbound 数据库将其传递给所有 chassis;

状态信息

ovn 中的状态信息从南向北传递。OVN 目前只提供几种形式的状态信息。

首先,ovn−northd 填充 northbound Logical_Switch_Port 表中的 up 表项,如果 southbound port_Binding 表中逻辑端口的 chassis column 为空,则设置为true,这允许CMS检测VM的网络何时出现。

第二,OVN 向 CMS 反馈其配置的实现情况,配置是否生效,该功能需要 CMS 参与一个序列号协议,工作方式如下:

  • 当 CMS 更新北向数据库中的配置时,作为同一事务的一部分,它会增加 NB_Global 表中 nb_cfg 列的值。
  • 当 ovn−northd 根据北向数据库的给定快照更新南向数据库,它将 nb_cfg 从北行 nb_Global 复制到南向数据库 SB_Global 表中,作为同一事务的一部分。
  • 在 ovn−northd 从南向数据库收到其更改已提交的确认,它将 northbound nb_Global 表中的 sb_cfg 更新为 NB_cfg 版本。
  • ovn−controller 进程接收更新的 southbound 数据库和更新的 nb_cfg。此过程反过来会更新 Chassis 的 Open vSwitch 实例中的物理流。当它收到 Open vSwitch 的确认时,物理流更新后,它会在 southbound 数据库中自己的机箱记录中更新 nb_cfg。
  • ovn−northd 监视 southbound 数据库中所有 Chassis 记录中的 nb_cfg 列。它跟踪所有记录中的最小值,并将其复制到北行 NB_Global 的 hv_cfg 列中。

Chassis 设置

OVN 部署中的每个 Chassis 必须配置一个专用于 OVN 使用的 openvSwitch 网桥,称为集成网桥。系统启动脚本可能会在启动 ovn-controller 之前创建此网桥。如果 ovn-controller 启动时不存在此网桥,将使用下面建议的默认配置自动创建它。集成桥上的端口包括:

  • 在任何 Chassis 上,OVN 用于维护逻辑网络连接的隧道端口。ovn−controller 添加、更新和删除这些隧道端口。
  • openvswitch 本身存在的与 hypervisor 之间的集成工作。
  • 在网关上,用于逻辑网络连接的物理端口。系统启动脚本在启动 ovn 之前将此端口添加到 ovn−controller。在更复杂的设置中,它可以是另一个网桥的 patch 端口,而不是物理端口。

逻辑网络

OVN 中的逻辑网络概念包括逻辑交换机和逻辑路由器,分别是以太网交换机和 IP 路由器的逻辑版本。就像物理实现一样,逻辑交换机和路由器可以连接到复杂的拓扑结构中。逻辑交换机和路由器通常是纯逻辑实体,也就是说,它们不关联或绑定到任何物理位置,并且在参与 OVN 的每个 Hypervisor 中以分布式方式实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OVN 简介 的相关文章

  • ovn metadata (by quqi99)

    作者 xff1a 张华 发表于 xff1a 2022 08 25 版权声明 xff1a 可以任意转载 xff0c 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 问题 客户描述虚机的metadata功能偶尔有问题 xff0c
  • ovn-central raft HA (by quqi99)

    作者 xff1a 张华 发表于 xff1a 2022 10 12 版权声明 xff1a 可以任意转载 xff0c 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 What s raft RAFT https raft git
  • OVN简介

    作者简介 xff1a 郑敏先 xff0c 就职于诺云系统 xff08 上海 xff09 有限公司 工作地点为南京的诺云研发中心 担任解决方案工程师 本人博客为 xff1a http blog csdn net zhengmx100 一 为什
  • devstack安装OpenStack Pike版本 (OVN+VLAN)

    控制节点配置文件 Sample DevStack local conf This sample file is intended to be used for your typical DevStack environment that 3
  • OVN简介

    三 OVN入门 3 1 OVN简介 Open vSwitch xff08 OVS xff09 是一款开源的 虚拟交换机 xff0c 控制协议方面它不但支持OpenFlow的所有特性而且扩展了部分OpenFlow的功能 xff1b Overl
  • OVN – OVN OpenStack(二)

    OpenStack networking ovn 项目为Neutron提供了一个基于ML2的OVN插件 xff0c 它使用OVN组件代替了各种Neutron的Python agent xff0c 也不再使用 RabbitMQ xff0c 而
  • openstack和ovn架构

  • ovn-architecture

    参考 文章目录 1 Name2 Description2 1 Information Flow in OVN OVN中的信息流向 2 2 Chassis Setup2 3 Logical Networks2 4 Life Cycle of
  • OVN入门

    参考链接 如何借助 OVN 来提高 OVS 在云计算环境中的性能 OVN简介 Open vSwitch Documentation OVSDB介绍及在OpenDaylight中的调用 OpenDaylight即将迈入 七年之痒 xff1f
  • ovn 架构介绍

    ovn是什么就不多说了 xff0c 网上有很多介绍的文章 这里主要是学习下ovn的架构 xff0c 并通过实践认识一下ovn ovn代码最初是在ovs源码下 xff0c 但是从版本v2 13 0开始 xff0c ovn被移除ovs xff0
  • ovn 配置逻辑路由器实现三层转发

    本文使用ovn搭建一个三层转发的环境 xff0c 拓扑图如下 image png 两个虚拟交换机ls1和ls2 xff0c 端口ip网段分别为 10 10 10 0 24和 10 10 20 0 24 虚拟交换机上分别连接两个vm 使用na
  • ovn 通过网关虚拟路由器连接外部网络

    本文实验如何通过ovn的网关逻辑路由器将ovn网络连接到外部网络 前面讲过ovn的逻辑路由器是分布式的 xff0c 这意味着它没有绑定到某个节点上 xff0c 而是存在于所有节点上的 xff0c 同时它是通过每个节点的openflow流表来
  • ovn-northd 源码分析

    ovn northd是ovn中的核心后台进程 xff0c 主要负责将ovn的高层配置转换成供ovn controller后台进程使用的逻辑配置 xff0c 更详细的说就是它将ovn northbound数据库中传统意义上的逻辑网络配置转换成
  • ovn-controller源码分析

    ovn controller是运行在chassis hypervisor上的后台进程 xff0c 向上通过OVSDB协议连接到OVN sourthbound数据库 xff0c 向下通过OVSDB协议连接到ovs数据库 xff0c 并通过op
  • OpenvSwitch 的 Open Virtual Network(OVN)项目

    几天前 xff08 1 月 13 日 xff09 xff0c OpenvSwitch 团队正式宣布了 OVN xff08 Open Virtual Network xff09 项目 xff0c 参考 Open Virtual Network
  • OpenStack Neutron 对接OVN 使用 networking-ovn

    OVN是OVS的控制平面 xff0c 它给 OVS 增加了对虚拟网络的原生支持 xff0c 大大提高了 OVS 在实际应用环境中的性能和规模 使用neutron 配置mechanism drivers 为OVN时 xff0c 会有以下优点
  • 【kubernetes/k8s概念】OVN NorthBound DB 及 ovn-nbctl 命令

    OVN 北向数据库 xff08 OVN Northbound DB xff09 是 OVN 和 CMS 之间的接口 xff0c Northbound DB 的数据几乎都是由 CMS 产生的 xff0c ovn northd 监听这个数据库的
  • 【kubernetes/k8s概念】OVN SouthBound DB 及 ovn-sbctl 命令

    OVN 南向数据库 xff08 OVN Southbound DB xff09 xff0c 南向数据库是系统的中心 xff0c 客户端是上层的 ovn northd 和下层运行在每一个传输节点的 ovn controller 南向数据库包括
  • OVN 流表基础 -- 基于 kubeOVN (一)

    文章目录 Kubectl ko 工具分析Nbctl SbctlTrace Ovn 流表MatchActionRegisterTable 介绍Logical Switch DatapathsLogical Router Datapaths K
  • OVN架构原理

    ovn architecture 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方手册 xff0c 有删减 OVN架构 OVN xff08 即Open Virtual Network xff09 是

随机推荐