OVS和OVN 2.8新功能

2023-05-16

OVS和OVN 2.8新功能

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

本文翻译自ovs官方文档

本文档主要是关于2017年8月底发布的Open vSwitch 2.8中添加的内容,重点介绍OVN中的新功能。同时也涵盖了即将在2018年2月发布的Open vSwitch和OVN 2.9中的一些内容。OVN具有许多特性,本文档不包括每个新增或增强的功能。

本文档假定您已熟悉Open vSwitch,OVN及其相关工具。有关更多信息,请参阅Open vSwitch和OVN文档,例如ovn-architecture的内容。

调试和故障排除

在版本2.8之前,Open vSwitch命令行工具的使用是比较痛苦的。本节介绍2.8版本中对CLI的改进。

对用户不友好的UUID

OVN的ovn-nbctl,ovn-nbctl和ovn-trace等CLI工具,几乎在任何地方都使用长UUID。这意味着我们平时操作会将UUID从一个命令或窗口粘贴到另一个命令或窗口。而且在许多地方,人们希望能够使用网络,路由器或端口名称,但显示的是却是UUID。这些缺点使CLI缺乏对用户的友好。

有一个根本的问题,南向数据库实际上并不包含提供一个友好的用户界面所需的所有信息。例如,在某些情况下,人们希望用于实体的人性化名称却不是数据库的一部分。这些名称对于正确性来说不是必需的,只是为了可用性。

OVN 2.8版本优化了许多这些问题。现在CLI的大部分部分都允许用户缩写UUID,只要缩写在数据库中是唯一的。CLI中的某些部分全长UUID使输出很难读取,现在允许缩写它们。同时更重要的是,在许多地方,OVN CLI现在显示并接受网络,路由器,端口和其他实体的对人友好的名称。在以前没有提供名称的地方,OVN(通过ovn-northd)现在将名称复制到南向数据库中。

在OVN之下的CLI,分别在OpenFlow和datapath层的ovs-ofctl和ovs-dpctl,都有一些类似的问题,其中的数字用于对用户友好的名称的实体。OVS 2.8也解决了一些这些问题。除此之外,最显着的增强是ovs-ofctl dump-flows的–no-stats选项,这使得该命令的输出在读者不感兴趣的情况下更易读。

层之间的连接

OVN和Open vSwitch几乎就像其他编译器一样工作:OVN Neutron插件将Neutron配置转换成OVN北向配置,ovn-northd将之转换为逻辑流,ovn-controller转换为OpenFlow流,ovs-vswitchd转换为数据路径流。为了调试和排除故障,通常有必要准确理解这些控制信息的翻译是如何工作的。从逻辑流到OpenFlow流,或从另一个方向,从OpenFlow流到产生它的逻辑流,我们通常是特别感兴趣的,但是OVN并没有为这项工作提供很好的工具。

OVN 2.8增加了一些可以增强这些工作的新功能。ovn-sbctl lflow-list有一个新的选项–ovs,它列出了从它指定的逻辑流中生成的特定chassis上的OpenFlow流。ovn-trace还添加了一个类似的–ovs选项,适用于它所跟踪的逻辑流。

另一方面,OVN 2.8添加了一个新的实用程序ovn-detrace,针对指定的Open vSwitch所跟踪的OpenFlow流使,对产生这些OpenFlow流的逻辑流进行注释。

分布式防火墙

OVN支持有状态连接跟踪的分布式防火墙,以确保只有已建立连接的数据包或配置明确允许的数据包才能进入给定的虚拟机或容器。Neutron默认使用这个功能,在OpenStack环境中,大多数数据包通过两次,一次是从数据包的源虚拟机出站,一次是在进入目标虚拟机之前。在OVN 2.8之前,ovn-trace程序(通过OVN逻辑网络显示数据包的路径)不支持逻辑防火墙,这在实际上使Neutron几乎无用。

在OVN 2.8中,ovn-trace增加了对逻辑防火墙的支持。默认情况下,它假设数据包是已建立连接的一部分,这通常是用户所想要作为跟踪的一部分。它也接受命令行选项来覆盖这个假设,允许用户发现防火墙应该丢弃的数据包的处理方式。

在更深层次上,在Open vSwitch 2.8之前,ofproto/trace的OpenFlow跟踪命令既不支持OVN分布式防火墙的连接跟踪功能,也不支持“再循环”功能。这意味着即使用户试图深入分析分布式防火墙机制,则会遇到更多的障碍。Open vSwitch 2.8增加了对这两个功能的支持。

摘要显示

ovn-nbctl show和ovn-sbctl show显示OVN配置的概述,没有显示很多重要的信息。OVN 2.8在这里添加了一些更有用的信息。

DNS和IPAM

OVN 2.8添加了一个内置的DNS服务器,用于为OVN逻辑网络中的虚拟机和容器分配名称。DNS名称使用OVN北向数据库中的记录进行分配,并与其他OVN功能一样,在OVN南向数据库转换为逻辑流。指向OVN DNS服务器的DNS请求永远不会离开发送请求的管理程序; 相反,OVN处理并响应来自其ovn-controller本地代理的请求。OVN DNS服务器不是通用DNS服务器,不能作为通用DNS服务器使用。

OVN包括对IP地址管理(IPAM)的简单内置支持,OVN将IP地址分配给管理员委派给它的一个或多个IP地址池中的VM或容器。 在OVN 2.8之前,OVN IPAM只支持IPv4地址; OVN 2.8增加了对IPv6的支持。OVN 2.8还增强了地址池支持,允许排除特定的地址。注意:Neutron自己分配IP地址,不使用OVN IPAM。

高可用

作为一个分布式系统,在OVN运行中可能会出不少的错。所以有必要在单一故障可能干扰整个系统运行的地方增加冗余。OVN 2.8增加了两种新的高可用性。

ovn-northd高可用

ovn-northd程序位于OVN北向和南向数据库之间,并将逻辑网络配置转换为逻辑流。如果ovn-northd本身或其运行所在的主机失败,则OVN北向配置的更新将不会传播到hypervisors,OVN配置会冻结,直到ovn-northd重新启动。

OVN 2.8增加了对ovn-northd的主动备份HA的支持。当运行多个ovn-northd实例时,它将使用OVSDB锁定功能自动选择单个活动实例。当该实例死亡或无响应时,OVSDB服务器将自动选择剩下的一个实例来接管。

L3网关高可用

在OVN 2.8中,现在可以为L3网关指定多个chassis。当指定多个chassis时,OVN管理该网关的高可用性。每个hypervisor使用BFD协议跟踪当前正在运行的网关节点。在任何时候,hypervisor都使用当前最高优先级的网关节点。

OVSDB

OVN架构在很大程度上严重依赖OpenSwitch数据库OVSDB来托管北向和南向数据库。OVSDB最初是为此目的而选择的,因为它已经在Open vSwitch中用于配置OVS本身,因此它与OVS可以很好地集成在一起,并且在OpenVSwitch中使用的两种语言C和Python都得到很好的支持。

OVSDB的最初设计目的是为了配置Open vSwitch的。它支持ACID事务处理,具有一个小型,高效的服务器,一个灵活的模式系统,以及对故障排除和调试的良好支持。但是,它缺少一些对于OVN而言非常重要的功能。随着OVN的发展,这些缺失的特征已经成为越来越多的问题。一种选择是切换到已经具有许多这些功能的其他数据库,但是经过仔细的搜索,没有找到理想的现有数据库,因此项目选择在必要时改进OVSDB以加快速度。以下部分将详细讨论最近和将来的改进。

高可用

当ovsdb-server仅用于OVS配置时,高可用性并不重要。如果系统崩溃,ovsdb-server能够自动重新启动,而且如果整个系统出现故障,Open vSwitch本身也会死机,所以数据库服务器的故障并不重要。

相反,北向和南向的数据库是分布式系统的集中式组件,因此它们不是整个系统的单一故障点。在发布的OVN版本中,ovsdb-server只支持一对服务器上的“主动备份复制”。这意味着如果一台服务器出现故障,另一台服务器可以在另一台服务器停止的地方将其重新启动。服务器在任何时候都没有内置的支持来决定哪个是活动的,哪个是备份的,所以管理员必须配置一个外部代理来进行这种管理。

主动备份复制并不完全令人满意,原因有很多。复制只是近似的,配置外部代理需要额外的工作。备用服务器没有任何好处,除非主用服务器出现故障。最多可以使用两台服务器。

基于分布式共识的Raft算法,OVN 2.9版本正在开发针对OVSDB的高可用的新形式。而主动备份复制使用的是两台服务器,使用Raft进行集群需要三个或更多(通常是一个奇数),并且只要有一半以上的服务器运行,就会继续运行。集群实现内置在ovsdb-server中,不需要外部代理。群集保留数据库的ACID属性,以保证提交的事务保持持久。最后,读取(这是OVN工作负载的大部分)随集群大小而扩展,因此,随着OVN部署中hypervisor的数量的增加,添加更多服务器应该可以提高性能。在撰写本文时,OVSDB对群集的支持正在进行开发和早期部署测试。

RBAC安全

在Open vSwitch 2.8之前,ovsdb-server几乎不支持数据库中的访问控制。如果OVSDB客户端可以修改数据库,则可以进行任意更改。这对于大多数用例来说已经足够了。

OVN部署中的hypervisor需要访问OVN南向数据库。他们的大部分访问是读取,以了解OVN的配置。hypervisor确实需要对南向数据库进行一些写入访问,主要是让其他hypervisor知道正在运行的虚拟机和容器以及如何访问到它们。因此,OVN为OVN部署中的所有hypervisor提供对OVN南向数据库的写访问权限。这一切都很好,但如果任何hypervisor被破坏,那么他们可能会破坏整个OVN部署,破坏数据库。

OVN开发人员考虑了几种方法来解决这个问题。一种方法是引入一个新的中央服务(可能在ovn-northd中),只提供hypervisor合法的需要的写入类型,然后授予hypervisor直接访问南向数据库的权限,以便读取。但最终开发人员决定引入一种新的OVSDB访问控制形式,称为OVSDB RBAC(基于角色的访问控制)功能。OVSDB RBAC允许对访问进行足够精细的控制,hypervisor只能被赋予添加,修改和删除与自身相关的记录的能力,从而防止它们作为整体破坏数据库。

更多的功能

有关OVN和Open vSwitch中新增功能的更多信息,请参阅与源代码树一起分发的NEWS文件。如果您对Open vSwitch或OVN功能有任何疑问,请随时写信到ovs-discuss@openvswitch.org上的Open vSwitch邮件列表。

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

OVS和OVN 2.8新功能 的相关文章

  • Testing ovn manually based on LXD (by quqi99)

    作者 xff1a 张华 发表于 xff1a 2022 05 27 版权声明 xff1a 可以任意转载 xff0c 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 准备两个LXD容器 lxc list 43 43 43 43
  • ovn metadata (by quqi99)

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

    OVS即开放虚拟交换标准 xff0c 不仅仅是为了支持OpenFlow协议 xff0c 而是为了给虚拟化平台上运行的虚拟机实例提供一套纯软件实现的路由交换协议栈 具体点说 xff0c Open vSwitch是在开源的Apache2 0许可
  • openstack-neutron-OVS agent(持续更新)

    概述 ML2Plugin的主要工作是管理虚拟网络资源 xff0c 保证数据正确无误 xff0c 具体物理设备的设置则由Agent完成 L2Agent通常运行在Hypervisor xff0c 与neutron server通过RPC通信 x
  • OVN简介

    作者简介 xff1a 郑敏先 xff0c 就职于诺云系统 xff08 上海 xff09 有限公司 工作地点为南京的诺云研发中心 担任解决方案工程师 本人博客为 xff1a http blog csdn net zhengmx100 一 为什
  • openstack ovs-vswitch收包流程

    数据包从物理网卡进入虚拟机的流程 物理网卡处理 NIC 收到数据包 xff0c 会先将高低电信号转换到网卡 FIFO 存储器 NIC 首先申请 Ring buffer 的描述 xff0c 根据描述找到具体的物理地址 xff0c NIC 会使
  • 《OVN Logical Flows and ovn-trace》翻译

    在本篇文章中 xff0c 我将解释什么是Logical Flow以及如何使用ovn trace去更好地理解它们 同时 xff0c 我也会用一些例子来解释 xff0c 为什么使用Logical Flow这种抽象模型能让新特性的添加变得出乎意料
  • OVN 架构分析

    架构分析Base flow L2 L3 forwardingOVN L2 gateway OVN 是 Open vSwitch 社区在 2015 年 1 月份才宣布的一个子项目 xff0c OVN 使用 Open vSwitch功能提供一个
  • ovn-architecture

    参考 文章目录 1 Name2 Description2 1 Information Flow in OVN OVN中的信息流向 2 2 Chassis Setup2 3 Logical Networks2 4 Life Cycle of
  • 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 之 OVS介绍

    一 概述 Open vSwitch的官方定义 xff1a Open vSwitch是一个具有工业级质量的多层虚拟交换机 通过可编程扩展 xff0c 可以实现大规模网络的自动化 xff08 配置 管理 维护 xff09 它支持现有标准管理接口
  • OpenStack Neutron 对接OVN 使用 networking-ovn

    OVN是OVS的控制平面 xff0c 它给 OVS 增加了对虚拟网络的原生支持 xff0c 大大提高了 OVS 在实际应用环境中的性能和规模 使用neutron 配置mechanism drivers 为OVN时 xff0c 会有以下优点
  • OVS Bond lacp源码分析

    近期项目中要使用Ovs bond接口 xff0c Ovs Bond 只有三种模式 xff1a balance tcp xff0c balance slb xff0c active backup 这三种模式的工作方式如下 xff1a 1 ac
  • OVN 安装,使用,流表分析

    文章目录 OVN 安装环境准备安装 OVN 安装 环境准备 两台 ubuntu 18 04 管理网络 172 18 22 0 24 172 18 22 197 192 168 22 198 安装 apt get update apt get
  • OVN架构原理

    ovn architecture 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方手册 xff0c 有删减 OVN架构 OVN xff08 即Open Virtual Network xff09 是
  • Testing ovn manually based on LXD (by quqi99)

    作者 张华 发表于 2022 05 27 版权声明 可以任意转载 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 准备两个LXD容器 lxc list NAME STATE IPV4 IPV6 TYPE SNAPSHOTS

随机推荐

  • java从http url下载文件的简单方法

    br br import java io File br import java net URL br br import org apache commons io FileUtils br br public class Downloa
  • idea运行Sparkstreaming读取hdfs文件遇到的问题

    先贴代码 idea中运行SparkStreaming时 xff0c 动态添加文件至指定目录下 xff0c 结果没有任务信息输出 问题原因 xff1a idea所在主机时间和hdfs集群时间不同步 代码中指定的hdfs目录为非空 启动之前已经
  • [HDU1085][HDU1028][HDU2013] 组合数学入门(母函数、递推)

    先来说一说母函数 xff0c 今天是第一次学 杭电关于母函数的PPT感觉不错 xff0c 挺适合入门看看的 什么是母函数 xff1f 对于序列a0 xff0c a1 xff0c a2 xff0c 构造一函数 xff1a G x 61 a0
  • Elasticsearch系列-Elasticsearch入门教程

    引言 Elasticsearch是著名的开源分布式搜索和数据处理平台 xff0c 是一个基于Lucene的分布式 实时 全文搜索系统 xff0c 其稳定 可靠 高可用 可大规模扩展等特性 xff0c 使得Elasticsearch的应用十分
  • Elasticsearch系列-Elasticsearch集群工作原理

    引言 ELasticsearch作为一个分布式搜索引擎 xff0c 能够出色地支持集群模式 动态水平扩容 故障转移等分布式系统特性 xff0c 这是其作为全文搜索引擎首选的重要原因 本文从零开始描述集群的配置和扩容过程 xff0c 让你对E
  • Elasticsearch系列-集群API(一)

    引言 Elasticsearch提供了大量了的Rest API用以操作Elastic search的相关功能 xff0c 提供了极大的便利 xff0c 掌握这些API是熟练地使用Elasticsearch的前提 Elastic search
  • JVM系列-CPU使用率高问题排查方法

    引言 Java程序在实际生产过程中经常遇到CPU使用率高的问题 xff0c 那么应该如何排查问题的原因呢 xff0c 本文大概描述一下排查方法 一 排查占用CPU的进程 使用top命令 xff0c 在大写打开的情况下按P键或者在大写没有打开
  • python判断list中的值是否完全一样

    对于一个python的list a span class token operator 61 span span class token punctuation span span class token number 1 span spa
  • 生产问题排查-SSLException:Unrecognized SSL message,plainetxt connection异常排查

    引言 最近在一次生产问题中遇到了SSLException Unrecognized SSL message plainetxt connection错误异常信息 xff0c 背景为调用微信api 获取相应信息的时候报错 xff0c 微信ap
  • 【云原生】本地搭建Openshift单机最小化开发环境

    文章目录 一 什么是CodeReady Container xff08 CRC xff09 xff1f 二 本地化部署CodeReady Container三 Code Ready Container的使用 公众号 xff1a MCNU云原
  • 手把手kubernetes本地化部署(含疑难杂症排查解析)

    文章目录 一 什么是Kubernetes xff1f 二 Kubernetes的基本概念PodDeploymentServiceNamespaceConfigMapSecret 三 Kuberntes单机本地部署3 1 安装minikube
  • chatGPT大规模使用kubernetes,云原生技术在AI领域也大有可为

    文章目录 一 云原生在AI领域的应用方向1 1 弹性部署1 2 自动化和可维护性1 3安全性和隔离性 二 云原生在AI领域的应用案例2 1 chatGPT全面使用云原生技术2 2 TensorFlow Serving和k8s及docker的
  • 数据清洗经验

    平时习惯了在某些特定的数据集合上做实验 xff0c 简单的tokenization 预处理等步骤就足够了 但是在数据越来越大的年代 xff0c 数据清洗越来越重要 xff0c 也越来越复杂 看到Philip J Guo 的这篇英文文章 Pa
  • Jetson Nano平台常用软件工具

    本文介绍几个Jetson Nano平台常用的小工具 1 jtop jtop可以查看Jetson Nano目前CPU工作负载情况 xff0c 当前温度等信息 安装方法 xff1a sudo apt get install python pip
  • 如何计算前缀,网络,子网和主机号?

    计算网络掩码长度 xff08 也称为前缀 xff09 xff1a 将网络掩码的点分十进制表示形式转换为二进制 然后 xff0c 从第一个八位位组的最高有效位 xff08 即二进制数的左侧 xff09 开始 xff0c 计算连续的1位的数目
  • Pascal's Triangle(帕斯卡三角形)

    题目 xff1a Given numRows generate the first numRows of Pascal 39 s triangle xff08 杨辉三角 xff09 For example given numRows 61
  • kubernetes集群calico网络部署

    kubernetes 集群 calico 网络部署 一 部署环境及架构 操作系统 ubuntu 14 04 Kubernetes 1 3 5 Etcd 版本 2 2 1 Docker 版本 1 1 0 1 calicoctl 版本 xff1
  • OVN架构原理

    ovn architecture 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方手册 xff0c 有删减 OVN架构 OVN xff08 即Open Virtual Network xff09 是
  • python正则匹配中文/英文/数字/其它字符

    匹配提取 一些字符串既包含中文 也包含英文 数字等 xff0c 需要对这类字符串做提取 xff0c 单个中文字符 英文单词以及数字表达等 需要采用正则匹配的方式来做 比如对于如下针对数据的描述 Android IOS 2条装 xff08 0
  • OVS和OVN 2.8新功能

    OVS和OVN 2 8新功能 本文最初整理在我的github上SDN Learning notes 本文翻译自ovs官方文档 本文档主要是关于2017年8月底发布的Open vSwitch 2 8中添加的内容 xff0c 重点介绍OVN中的