OVS 和 OVS-DPDK 对比

news2024/11/16 11:44:39

OVS 目前有两种比较突出的架构,一种是原生的 OVS 架构(使用 kernel 作为 datapath),一种是基于 DPDK 的架构(使用用户空间作为 datapath)。

原生 OVS

原生 OVS 架构如下所示,主要包含两个组件:

  • openvswitch.ko :在内核态负责快速路径的数据转发。转发靠流表来完成,每一个流表都包含很多的匹配项(match fields)和相应的动作(actions)

    • match fields : 定义了能够标识一个数据包的头部字段

    • actions : 定义了能够对这个数据包操作的动作,比如添加或去除 VLAN 标签、修改数据包的某个头部字段,以及控制数据包从端口的进出等等。

  • ovs-vswitchd :在用户态负责慢速路径的数据转发。

    • ofproto: 实现 OpenFlow 交换机

    • netdev: 和网络设备(包括物理的和虚拟的)交互的抽象接口层

    • dpif: 用户空间数据转发路径的实现

OVS-DPDK

基于 DPDK 的 OVS 架构如下所示,其中深色部分的模块就是引入 DPDK 相关的模块。

  • dpif-netdev : 用户空间中快速路径的实现,它实现了 dpif  模块 API,可以直接操作 netdev 设备,能够实现数据包在用户空间的快速处理,减少和内核空间的切换开销。

  • ofproto-dpif : 实现了 ofproto 模块 API,直接操作 dpif 层。

  • netdev-dpdk : 使用 DPDK 库实现了 netdev 模块 API,提供了多种类型的接口,如下:

    • Physical ports(PMDs) : 使用 vfio 或者 igb_uio 实现的端口

    • dpdkvhostuser and dpdkvhostcuse: 使用 librte_vhost 库实现的端口,用户可以基于这两种端口类型创建 vhost-uservhost-cuse 端口来完成用户空间的数据转发,并且能够实现和 VM 的快速通信,只要提供 virtio 后端驱动 vhost 即可,virtio/vhost 被证实是用于 VM 通信的一套快速、安全、标准的接口。

    • dpdkr: 使用 librte_ring 实现,用户可以基于这种端口类型创建 dpdk-ring端口来完成用户空间的数据转发,它能够实现和 VM 之间快速的零拷贝通信(使用 IVSHMEM 或者其他进程间通信方式)

       

两种架构性能对比

那么这两种架构哪种性能更佳呢,不用说,当然是 OVS-DPDK,我们用数据说话,看下下面这份 Intel 做的性能报告(时间是 2015 年,但也具备参考性)。

首先是实验环境参数:

然后看实验拓扑图,包括 physical-to-physicalphysical-to-virtual-to-physical 两种拓扑:

最后再来看性能对比:

同样包括 physical-to-physicalphysical-to-virtual-to-physical 两种场景:

可以看到,P2P 的场景,OVS-DPDK 比原生 OVS 性能提高差不多 12 倍。

对于 PVP 的场景,我们增加单核和多核的实验观察,单核的情况,OVS-DPDK 比原生 OVS 提高 7 倍,双核的情况提高接近 13 倍。

基于 DPDK 的 VNF 使用 OVS 作为数据面

基于 OVS-DPDK 的 VNF 架构如下图所示:

DPDK 在其中既加速 OVS 数据平面,又加速 VNF 应用,这种方案由于采用纯软件的形式实现,可编程灵活,DPDK 的参与也使得性能大大提高,基本可以媲美纯硬件的形式。

原文链接:https://mp.weixin.qq.com/s/We-1j7WZgyu9vHp9UBQVYg

【文章福利】:小编整理了一些个人觉得比较好的学习书籍、视频资料共享在君羊文件里面,有需要的可以自行添加哦!~点击909332607加入(需要自取)
(资料包括:Dpdk/网络协议栈/vpp/OvS/DDos/NFV/虚拟化,tcp/ip,plugin,feature,柔性数组,golang,mysql,linux,Redis,CDN等),免费分享~
Dpdk/网络协议栈/ vpp /OvS/DDos/NFV/虚拟化/高性能专家 学习地址:https://ke.qq.com/course/506620

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

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

相关文章

冷启动问题分析与解决办法

1、什么是冷启动问题? 在缺乏有价值数据的时候,如何有效地满足业务需求的问题,就是“冷启动问题”。为了沟通方便,下面统一从推荐系统的角度来讲“冷启动问题”,其他业务场景同理。 冷启动问题是机器学习系统中十分常…

完成Zookeeper集群部署

目录一、实验介绍1.1实验内容1.2实验知识点1.3实验环境1.4实验资源1.5实验步骤清单二、实验架构三、实验环境准备四、实验步骤4.1部署Zookeeper集群4.1.1配置hosts文件4.1.2安装Zookeeper软件(master)4.1.3修改zookeeper配置文件4.1.4配置Zookeeper集群4.2验证Zookeeper集群4.2…

python419社区疫情综合管理系统django

目 录 摘 要 I 目 录 I 第1章 绪论 1 1.1课题背景 1 1.2目的和意义 1 1.3研究现状 2 1.4研究内容 3 第2章 关键技术研究 4 开发语言:Python 框架:django Python版本:python3.7.7 数据库:mysql 数…

js的闭包例题

1、垃圾回收 (1)全局变量不会被回收 (2)局部变量会被回收,函数执行结束,函数内部东西会被销毁 (3)某作用域中的某个变量还在被另一个作用域引用就不会被回收 var a[]; for(var i 0…

docker安装部署实战详细手册

文章目录一、docker介绍1.什么是docker2.为什么使用docker二、docker架构三、docker安装1.安装2.卸载结尾一、docker介绍 1.什么是docker Docker 是一个开源的容器引擎,它有助于更快地交付应用。Docker 可将应用程序和基础设施层隔离, 并且能将基础设施…

docker 部署运行springboot-web.jar

Docker Hub官方公用仓库:https://hub.docker.com 一、docker安装jdk 1.先查看自己需要的版本 2.从仓库中下载 3.查看下载的镜像 4.创建并启动容器 其中(--namejdk1.8 这个jdk1.8是镜像majiajue/jdk1.8别名) docker run -di --namejdk1.8 majiajue/jdk1.8 5.查看是否启动容器…

用PyTorch简单实现线性回归

参考视频:05.用PyTorch实现线性回归_哔哩哔哩_bilibili 还是以y3x2y3x2y3x2为例(事先不知道) 学习率设为0.01,训练1000次 要注意视频中定义损失函数的部分所用的参数size_averageFalse已经过时,需要改成reduction‘…

深度学习系列1——Pytorch 图像分类(LeNet)

1. 概述 本文主要是参照 B 站 UP 主 霹雳吧啦Wz 的视频学习笔记,参考的相关资料在文末参照栏给出,包括实现代码和文中用的一些图片。 整个工程已经上传个人的 github https://github.com/lovewinds13/QYQXDeepLearning ,下载即可直接测试&a…

VLAN trunk扩展 GVRP

目录 一、GVRP产生背景 VTP协议 GARP GVRP 二、GVRP的实现和基本概念 GVRP的应用 GVRP的单向注册 GVRP单向注销 GVRP的注册模式 VTP和GVRP的使用风险 一、GVRP产生背景 VTP协议 如何解决园区网中大批量的VLAN的配置问题? 早期可以使用excel表格配置VL…

小程序开发 - 基本组件

目录 小程序启动过程 页面渲染过程 新建文件夹 组件 view scroll-view swiper和swiper-item button image 小程序启动过程 将小程序代码包下载本地解析app.json全局配置文件执行app.js小程序入口文件,调用App()创建渲染小程序首页小程序启动完成 页面渲染过…

【MQTT基础篇(一)】MQTT介绍

文章目录MQTT介绍1 MQTT历史2 MQTT版本MQTT介绍 MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信&…

第七章:项目成本管理

一、规划成本管理 确定如何估算、预算、管理、监督和控制项目成本的过程。主要作用是在整个项目期间为如何管理项目成本提供指南和反向。 输入工具与技术输出 1.项目章程 2.项目管理文件 进度管理计划风险管理计划3.事业环境因素 4.组织过程资产 1.专家判断 2.数据分析 3.会…

SpringMVC学习篇(九)

SpringMVC拦截器例子 1 界面登录验证 1.1 准备工作 1.1.1 导入servlet-api依赖 <dependency><groupId>org.apache.tomcat</groupId><artifactId>servlet-api</artifactId><version>6.0.53</version> </dependency>1.1.2 创…

基于机器视觉的移动消防机器人(三)--软件设计

本文素材来源于北方民族大学 机电工程学院 作者&#xff1a;牟义达、黄瑞翔、李涛 指导老师&#xff1a;田国禾、张春涛 1. 总系统软件流程图 为了实现消防功能&#xff0c;对软件进行系统设计。根据机器人要实现的功能进行逐一设计&#xff0c;设计完之后再将其整合到一起&a…

流体力学基础——粘性

1、粘性&#xff1a;流体的属性 粘性就是流体阻碍自身流动的特性&#xff1b; 专业定义&#xff1a;粘性是流体持续剪切变形时内部产生剪切力的性质&#xff1b; 流体内部的粘性力&#xff0c;类似于固体的摩擦力&#xff0c;但是只有动粘性力&#xff1b; 表面张力不是粘性…

远程桌面一直被人爆破的解决思路

目录前言初步解决方法题外话预防措施获取日志Get-EventLog例子防火墙操作编写软件自动提取IP和添加黑名单调用powershell命令调用cmd命令前言 某天远程自己的电脑发现登不上了&#xff0c;错误信息如下&#xff1a; 开始也没在意&#xff0c;后面出现了好几次才反应过来。查看…

程序员职场生态:近8成本科毕业生起薪过万,跳槽首选智能汽车行业

中国互联网行业经历了超过20年的高速发展&#xff0c;逐渐融入到各行各业&#xff0c;程序员在其中发挥着举足轻重的作用&#xff0c;从业人员数量与日俱增。GitHub数据显示&#xff0c;2021年中国开发者规模达到755万。 近日&#xff0c;拉勾招聘数据研究院对程序员群体开展深…

SpringBoot笔记

文章目录1️⃣ 简介一. 什么是 IoC 容器&#xff1f;二. AOP面向切面编程三. SSM整合四. HttpServletRequest五. HttpServletResponse六. Cookie 与 Session七. Cookie八. Session九. 转发与重定向十. Spring项目转SpringBoot十一. Spring生命周期十二. 什么是 pom十三. 为什么…

知识整理说明:1799962-26-7,(4E)-TCO-NH2,(4E)-反式环辛烯-氨基

(4E)-TCO-amine物理数据&#xff1a; CAS&#xff1a;1799962-26-7| 中文名&#xff1a;(4E)-反式环辛烯-氨基 | 英文名&#xff1a;(4E)-TCO-amine&#xff0c;(4E)-TCO-NH2 结构式&#xff1a; 英文别名&#xff1a; (4E)-TCO-amine 中文别名&#xff1a; (4E)-反式环辛烯…

耗时半月,把牛客网最火Java面试题总结成PDF,涵盖所有面试高频题

最近感慨面试难的人越来越多了&#xff0c;一方面是市场环境&#xff0c;更重要的一方面是企业对Java的人才要求越来越高了。 基本上这样感慨的分为两类人&#xff0c;第一&#xff0c;虽然挂着3、5年经验&#xff0c;但肚子里货少&#xff0c;也没啥拿得出手的项目&#xff0c…