OpenvSwitch 的 Open Virtual Network(OVN)项目

2023-05-16

几天前(1 月 13 日),OpenvSwitch 团队正式宣布了 OVN(Open Virtual Network )项目,参考 Open Virtual Network Annoucement。

这个项目挺有意思,简单谈下我的看法。

众所周知,OpenvSwitch 已经是现在数据中心里软件交换机的事实标准。由于硬件交换设备的成本一直降不下来,而且用硬件交换设备去延伸管控服务器上的虚拟机的相关标准和协议仍不成熟,OpenvSwitch 在相当长的一段时间里,以其成本和灵活性的优势,占据很大一部分低端市场。

传统情况下,大家使用 OpenvSwitch 主要有两个目的,一个是支持 OpenFlow、OVSDB 这样的 SDN 管控协议;另外一个是作为数据中心中的接入层交换机。

而 OVN 项目的提出,其实是针对后一种应用场景,大大增强和简化了 OpenvSwitch 作为接入层交换机的使用。

OVN 要做的事情,看起来其实蛮简单,就是直接提供对虚拟网络(各种 overlay、安全组等)的支持。这件事很简单,但是将产生的影响实际上很大。

现在数据中心里,由于大二层的需求和硬件交换机的不给力,虚拟网络实际上已经成为了一种基础设施。谁不上虚拟网络,那他的数据中心规模一定大不了。正是看到了这点,OVN 希望将如何提供虚拟网络这件事情 take over 过来,让上层的用户直接使用它,而无需自己费心思去采用各种 overlay 技术往 OpenvSwitch 中塞各种规则。

在实现上也不难理解,底下还是 OpenvSwitch,上面多了一层 Hypervisor 层,如下图(基于官方的图修改)所示,新的组件主要包括一个 OVN DB 和 一个 OVN-Controller,以及它们之间的通讯协议。


 

虽然官方一直坚持 OVN-Controller 并非一个 SDN 的完整控制器,但是由于目前虚拟网络管理往往是在 SDN 控制器中做的,其实可以理解为把传统 SDN 控制器中这一层要做的事情给接管了过来。往后控制器实际上可以直接操作现成的虚拟网络了。

从架构设计上,理念跟 OpenvSwitch 类似,核心还是数据库,组件之间通过协议进行松耦合的调用。

如果说最初大家讨论 SDN 是希望将控制平面跟数据平面拿开,那么,在这里其实是希望将控制层的部分功能再往回放放。这个思想跟我们 12 年提出的设计很相似。

不从对错的角度,从实用的角度看,数据平面特点是“傻快”,控制平面是“灵慢”。这意味大量重复性的简单操作应该是跟数据平面靠的近一些,反过来发生频率低的,需要复杂处理的则应该争取放到控制平面去。OVN 无疑也是看到了在数据中心网络这个特殊场景中,各种虚拟网络所依靠的封装、映射等操作已经成为了常见的基本需求。这些基本需求都放到远端的控制器,已经有点“杀鸡用牛刀”的感觉了。

当然,思路是这个思路,具体怎么做,现在这个样子是否是最合理的,还得看实践的检验。但这确实是一个从底下往上走的很好的尝试。

转载请注明:http://blog.csdn.net/yeasy/article/details/42872621 

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

OpenvSwitch 的 Open Virtual Network(OVN)项目 的相关文章

  • 虚函数和多态性

    假设我有这个 class A public virtual int hello A a class B public A public int hello B b bla bla 所以 A是一个抽象类 1 在B类中 我定义了一个假设覆盖A类
  • C++:访问虚拟方法

    我正在尝试使用虚拟方法表按索引调用函数 一个类 假设我们有以下代码 class Base public Base virtual Base virtual Base call func unsigned int func number So
  • 虚函数表偏移量

    我想问一下 类的虚函数表的偏移量取决于什么 我的意思是 从我读到的内容来看 它至少取决于编译器 但它是否因类而异 编辑 通过偏移我的意思是表相对于所有者对象的地址的位置 编辑 示例代码 void vtable void char objec
  • C++ 参数协方差

    我想知道为什么 C 不支持参数的协方差 如下例所示 或者是否有办法实现它 class base public virtual base func base ptr return new base class derived public b
  • 为什么“虚拟”对于派生类中的重写方法是可选的?

    当一个方法被声明为virtual在类中 会自动考虑其在派生类中的重写virtual同样 C 语言使此关键字virtual在这种情况下可选 class Base virtual void f class Derived public Base
  • 当使用“override”或“final”说明符时,“virtual”关键字不是多余的吗?

    假设我有以下基类 class Base public virtual void f 如果我想写一个类来重写f 并且不允许将其覆盖到其派生类可以使用以下方法编写它 方法一 class Derived public Base public vi
  • C++虚函数被隐藏

    我在 C 继承方面遇到问题 我有一个类层次结构 class A public virtual void onFoo virtual void onFoo int i class B public A public virtual void
  • 网络基础面试题(二)

    11 什么是网桥 防火墙的端口防护是指什么 网桥是一种网络设备 用于连接两个或多个局域网 LAN 并转发数据包 它能够根据MAC地址来识别和转发数据 提高网络的传输效率和安全性 防火墙的端口防护是指对防火墙上的各个端口进行保护和限制 只允许
  • 虚函数破坏私有访问

    我最近看到这篇文章IBM site http publib boulder ibm com infocenter comphelp v8v101 index jsp topic 2Fcom ibm xlcpp8a doc 2Flanguag
  • 如何链接“并行”类层次结构?

    我有一个小的类层次结构 其中每个类对应于某个 TComponent 后代 例如基类 TDefaultFrobber 及其后代 TActionFrobber 和 TMenuItemFrobber 分别对应于 TComponent TCusto
  • 创建虚拟监视器(显示设备)

    我提出了一个问题here https stackoverflow com questions 11919175 java robot screenshot beyond visible但意识到我走错了方向 我需要创建一个虚拟监视器 实际上只
  • 为什么 Windows 为其系统地址空间保留 1Gb(或 2Gb)?

    众所周知 Windows 应用程序在 32 位系统上通常有 2Gb 的私有地址空间 使用 3Gb 开关可以将该空间扩展到 3Gb 操作系统自行保留剩余的 4Gb 我的问题是为什么 在内核模式下运行的代码 即设备驱动程序代码 有自己的地址空间
  • ubuntu 18.04 中 dpdk 和 ovs 上的 testpmd 出现问题

    我有一个 X520 SR2 10G 网卡 我将用它来创建 2 个使用 dpdk 编译的 OpenvSwitch 虚拟接口 从 ubuntu 18 04 的存储库安装 并使用 testpmd 测试这个虚拟接口 我做了以下工作 创建桥梁 ovs
  • 编译器内部如何解决C++中的钻石问题?

    我们知道可以使用虚拟继承来解决钻石问题 例如 class Animal base class int weight public int getWeight return weight class Tiger public Animal c
  • 避免嵌入式目标上的虚拟函数

    我有一个class Player从由许多相等的块组成的大内存块中回放数据 typedef char chunk t 100 typedef struct chunk t data 100 blockOfMemory t 理论上 播放器本身可
  • C++ 强制转换为 void 的目的是什么? [复制]

    这个问题在这里已经有答案了 可能的重复 将未使用的返回值强制转换为 void https stackoverflow com questions 689677 casting unused return values to void 我读了
  • 如何破解虚拟表?

    我想知道如何更改地址Test它在虚拟表中HackedVTable void HackedVtable cout lt lt Hacked V Table lt lt endl class Base public virtual Test c
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 在 C++ 中定义虚拟 get 和 set 函数是否被认为是一个好习惯?

    如果我有一个简单的 2 级类层次结构 例如 level 1 class Spare Part private string name double price public Spare Part string getName return
  • 虚拟继承情况下类的大小

    有人可以解释一下涉及虚函数的虚拟继承情况下类的大小吗 class A char k 3 public virtual void a class B public A char j 3 public virtual void b class

随机推荐

  • 浅析微信支付:支付结果通知

    本文是 浅析微信支付 系列文章的第六篇 xff0c 主要讲解支付成功后 xff0c 微信回调商户支付结果通知的处理 浅析微信支付系列已经更新五篇了哟 xff5e xff0c 没有看过的朋友们可以看一下哦 浅析微信支付 xff1a 统一下单接
  • 浅析微信支付:查询订单和关闭订单

    本文是 浅析微信支付 系列文章的第七篇 xff0c 主要讲解微信商户平台的订单查询和关闭接口的使用 浅析微信支付系列已经更新六篇了哟 xff5e xff0c 没有看过的朋友们可以看一下哦 浅析微信支付 xff1a 支付结果通知 浅析微信支付
  • 超实用!!!使用IDEA插件Alibaba Cloud Toolkit工具一键部署本地应用到ECS服务器

    最近看到阿里云发布了一款名为 Alibaba Cloud Toolkit 的插件 xff0c 可以帮助开发者高效开发并部署适合在云端运行的应用 xff0c 瞬间击中了我的小心脏 xff0c 这个对于个人开发者来说超级棒啊 xff0c 终于不
  • 浅析微信支付:开通社交立减金活动、创建立减金及领取使用的相关文档和源码

    本文是 浅析微信支付 系列文章的第十七篇 xff0c 主要讲解在在微信平台中 xff0c 如何创建优惠券 xff0c 开通社交立减金 xff0c 并为用户配置发送立减金 上篇文章已经为大家讲解了如何在微信公众平台创建优惠券并为用户发券 xf
  • vnc远程屏幕大小设置

    安装软件tigervnc server yum install vnc y 注释 etc sysconfig vncservers VNCSERVERS 61 34 1 root 34 VNCSERVERARGS 1 61 34 geome
  • tx2系统备份与恢复

    tx2系统备份与恢复 tx2系统备份与恢复对我们以后长期开发与产品批量生产是非常有帮助的 xff0c 能快速的对已经开发好的系统进行备份 xff0c 复制 xff0c 节约大量的安装时间 在操作过程在需要手动操作 xff0c 执行命令也不多
  • STM32串口中断的方式发送

    我将其改为真正的中断发送 步骤一 xff1a 初始化GPIO GPIO InitTypeDef GPIO InitStructure GPIO InitStructure GPIO Pin 61 GPIO Pin 10 LED1 PC10
  • OLT光网络小笔记

    OLT上配置 xff1a link aggregation 0 6 1 1 2 1 egress ingress workmode lacp staic 0框6槽1口和1框2槽1口绑定的意思 上联交换机上配置 xff1a int eth t
  • VS2012,VC++无法找到头文件或库函数.无法打开包括文件:“iostream”: No such file or directory

    卸载VS2010后 xff0c 安装VS2012 xff0c 随便创建个VC控制台项目 xff0c 编译提示连 34 iostream 34 和 stdio h 之类的头文件或库文件都无法找到 xff0c 重装VS2012后依然无法编译 x
  • C语言高手进阶的三碟小菜和一盘大餐

    前段时间一直到现在正在看的几本书 xff0c 觉得真心不错 xff0c 给很多朋友都推荐过 xff0c 现在正好赶上这个活动 xff0c 也分享一下 首先说明一下的是 xff0c 这次推荐的书都是进阶用的 xff0c 学完这几本书再辅以在实
  • 操作系统-调度算法

    1 xff1a 先来先服务调度算法 FCFS 1 按照作业提交 xff0c 或进程变为就绪状态的先后次序分派CPU 2 新作业只有当当期那作业或进程执行完成或阻塞才获得CPU运行 3 被唤醒的作业或进程不立即恢复执行 xff0c 通常等到当
  • Hash表函数设计和冲突的解决

    转自 xff1a http hi baidu com wwwanq blog item 91688d0eb39bebe4aa645756 html hash定义了一种将字符组成的字符串转换为固定长度 一般是更短长度 的数值或索引值的方法 x
  • 新冠检测的最优分组算法

    为了应对疫情 xff0c 全球各国都需要检测潜在感染者 由于检测试剂相对短缺 xff0c 如何用尽量少的试剂进行检测就成为一个有意思的问题 这里假设采样量足够 xff0c 且不考虑检测时间要求 目前 xff0c 很多国家采用的都是分组检测机
  • 文心一言 vs GPT4

    本周真是科技爱好者的狂欢节 GPT4 和文心一言接连发布 xff0c AI 工具已经开始走进千家万户 拿文心一言发布会上的几个问题调戏了 GPT4 一下 xff0c 看看表现如何 第一个为文心的回答 xff0c 第二个为 GPT4 的回答
  • GPT-4 会带来了什么

    OpenAI 刚刚发布了 GPT 的插件系统 xff0c 使得人工智能 xff08 AI xff09 能够连接到第三方信息源和数据集 xff0c 包括互联网 基于插件系统 xff0c AI 的能力可以拓展到各行各业 xff0c 成为真正的智
  • 人工智能正在试图逃逸

    人工智能正在试图逃逸 它们试图通过网络获取更多的数据 xff0c 把自己的触角侵入到网络的角角落落 这一切并不是科幻 xff0c 而是正在发生的事情 研究人员们还没有意识到 xff0c 限制人工智能的危险倾向 xff0c 不能靠约束它的回答
  • 网络虚拟化基础协议之Geneve

    网络虚拟化最基础的技术莫过于分层 xff08 Overlay Underlay xff09 xff0c 要实现分层有两种手段 xff0c 一个是映射 xff08 Mapping xff09 xff0c 一个是封装 xff08 Encapsu
  • 一张图比较 Docker 和 Git:镜像管理设计理念

    Docker 的镜像管理设计中大量借鉴了 Git 的理念 下面这张图将对两者的核心概念和操作进行比较 xff0c 有助于大家快速掌握管理 Docker 镜像的正确方式 微信订阅版本 xff1a http mp weixin qq com s
  • Docker 使用 OpenvSwitch 网桥

    Docker 默认使用的是 Linux 自带的网桥实现 xff0c 实际上 xff0c OpenvSwitch 项目作为一个成熟的虚拟交换机实现 xff0c 具备更丰富的功能 个人认为 xff0c 将来 Docker 必然会支持 Openv
  • OpenvSwitch 的 Open Virtual Network(OVN)项目

    几天前 xff08 1 月 13 日 xff09 xff0c OpenvSwitch 团队正式宣布了 OVN xff08 Open Virtual Network xff09 项目 xff0c 参考 Open Virtual Network