当前位置: 首页 > news >正文

DPDK系列之七DPDK中的虚拟化支持

一、DPDK和虚拟化

DPDK中大幅优化了网络通信的效率,这里也重点对网卡的虚拟化进行分析。在前面的文章中的学习可以判定网卡基本属于IO虚拟化。但是,虚拟化又有IO全虚拟化和IO半虚拟化之分,那么在DPDK中使用的哪种呢?IO虚拟化一般有全虚拟化、半虚拟化、透传和SR-IOV几种方式,这里重点比较前两者。
IO全虚拟化技术是由指令的翻译的全翻译来实现的,也就是说虚拟机可以模拟宿主机的的所有功能。但这样做有一个问题,它会导致上下文的切换降低效率。这时候,半虚拟化(又叫CPU虚拟化)技术就出现了,半虚拟化技术中虚拟机和宿主机并不是完全隔离的,它是在敏感指令上通过HyperCall调用来实现的,这样就节省了指令捕获和完整模拟提高了效率。
DPDK在PMD(Poll Mode Drivers)中通过virtio和vhost来实现IO的半虚拟化功能。

二、virtio 和vhost

1、virtio
在DPDK中,对virtio的支持已经到1.1的版本(virtio1.2版本也出来了)。virtio ,来源于《 towards a de-facto standard for virtual I/O devices》这篇论文当中。这篇论文提出了“两个通用的 ABI,Virtqueue和 Linux API for virtual IO device”,同时提供了对虚拟设备的向后兼容性以及Feautre协商机制。
virtio是一种接口规范,用来统一IO半虚拟化抽象。它提供了一套层应用与Hypervisor 虚拟化设备(KVM,Xen,VMware等)之间的通信框架和编程接口,大大减少了平台的兼容性差异。
一般来说,在宿主机上的虚拟机(客户端)上实现的IO半虚拟化的前半端驱动程序叫做virtio,而在宿主机host实现的后半端驱动程序叫做vhost。它们两个通过virtio的虚拟队列通信。虚拟机发送的数据报文到达虚拟交换机,再转发到物理网卡中。
virtio在PCI层上定义了virqueue,所以可以配置一个或者多个此类型队列保证数据的收发。
2、vhost
在内核怸中,vhost负责报文送达消息的通知中断。vhost-net做为上层应用和物理设备的桥梁,对相应的进出数据报文队列进行操作,并通知中断的产生。也可以把vhost-net迁移到用户态,即vhost-user,此时,vhost-user为第个VM创建一个端口,实现后端逻辑以及报文的收发请求。用户态的vhost-user数据的拷贝是由共享内在来实现的。
DPDK中就是使用的vhost-user机制。DPDK中的vhost支持字符设备和Socket服务两种消息机制,它主要是负责virtio-net的创建和管理以及销毁动作。它的封装形式主要有vhost lib和vhost PMD。前者实现了用户态的vhost驱动,而后者则是前者的封装进一步形成标准的虚拟端口。
vhost-net(内核态vhost)和vhost-user二者不同在于,前者是沟通用户态和内核内的接口而后者则通过域来处理共享内能达到同样的效果。

三、应用

virtio既可以处理IO也可以处理网络子系统,在DPDK重点是对网络子系统的应用。DPDK目前是VNF和NFC(网络功能虚拟化和容器化)的一个重要组成部分。在现在的云服务中,网络功能虚拟化已经是软件硬件解耦的一个重要部分,它可以做为各种网络功能的基础设施层(NFCi)有效支撑。
在实际的应用中,虚拟网络交换机是一个重要的应用,开源的有Open vSwitch(OVS),Snabb Switch等等。在开源的OPNFC中,还有很多的项目直接或者间接应用到了DPDK。毕竟,DPDK做为一个开发套件,理论上只要是有IO和网络数据通信的,都可以应用得到。
云的兴起,对VNF和NFC的要求是只有更高没有最高,而DPDK在这其中还有更多的事情要做,而且DPDK确实也在不断的增加着一些功能。这使得DPDK会更好的为VNF服务,降低成本,方便网络的弹性部署。

四、总结

最后再提一下透传和SR-IOV,前者效率非常好,可以简单理解为就是虚拟设备和物理设备合而为一了,但这样做的缺点就是不灵活。而后者是为了实现在单张物理设备上提供多个虚拟子设备的问题,DPDK也同样支持这两种方式(前提是硬件也要提供支持)。所以说一个好的框架,支持的力度是在尽可能的情况下要宽泛,这样才可以保证框架的可适用性并为广大开发者接受。

相关文章:

DPDK系列之七DPDK中的虚拟化支持

一、DPDK和虚拟化 DPDK中大幅优化了网络通信的效率,这里也重点对网卡的虚拟化进行分析。在前面的文章中的学习可以判定网卡基本属于IO虚拟化。但是,虚拟化又有IO全虚拟化和IO半虚拟化之分,那么在DPDK中使用的哪种呢?IO虚拟化一般…...

设计模式~桥接模式(bridge)-14

目录 (1)优点: (2)缺点: (3)使用场景: (4)注意事项: (5)应用实例: 代码 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式&a…...

Java项目3 电子邮件

文章目录发电子邮件发电子邮件 RequestMapping("/sendmail")ResponseBodypublic String sendMail(Email email, HttpServletRequest request,HttpServletResponse response){HttpSession session request.getSession();SimpleMailMessage message new SimpleMailMe…...

设计模式~访问者模式(Visitor)-15

在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模式。根据模式,元素对象已接受…...

实战小项目之视频监控(1-1)

实战小项目之视频监控(1-1) 目前常见的视频监控和视频直播都是使用了 RTMP 和 RTSP 流媒体传输协议等。 RTSP(Real-Time Stream Protocol)由 Real Networks 和 Netscape 共同提出的,基于文本的多媒体播放 控制协议。…...

DEJA_VU3D - Cesium功能集 之 103-直角箭头(标绘+编辑)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码,…...

Vue 对象扩展运算符(…)

当编写一个方法时,我们允许它传入的参数是不确定的。这时候可以使用对象扩展运算符来作参数,看一个简单的列子: 1 2 3 4 5 6 7 8 function jspang(...arg){ console.log(arg[0]); console.log(arg[1]); console.log(arg[2]); …...

又是活动 没啥好说的 送代码

说明这里又一段代码&#xff1a;import time y 2.5 while y>-1.6:x -3.0while x<4.0:if (x*xy*y-1)**3<3.6*x*x*y*y*y or (x>-2.4 and x<-2.1 and y<1.5 and y>-1) or (((x<2.5 and x>2.2)or(x>3.4 and x<3.7)) and y>-1 and y<1.5) …...

ARP报文内容详细分析

ARP报文格式如图&#xff1a; 字段1&#xff1a;ARP请求的目的以太网地址&#xff0c;全1时&#xff0c;代表广播地址。 字段2&#xff1a;发送ARP请求的以太网地址。 字段3&#xff1a;以太网帧类型表示后面的数据类型&#xff0c;ARP请求和ARP应答此字段为&#xff1a;0x0806…...

js一键保存当前页面所有图片

<html> <head> <head><meta charset"utf-8" name”viewport”content”widthdevice-width,initial-scale1″/></head> <title>一键保存</title><link rel"shortcut icon" href"n2.ico" type"…...

【Spring AOP】如何统一“拦截器校验、数据格式返回、异常返回”处理?

目录 一、Spring 拦截器 1.1、背景 1.2、实现步骤 1.3、拦截原理 二、 统一url前缀路径 2.1、方法一&#xff1a;在系统的配置文件中设置 2.2、方法二&#xff1a;在 application.properies 中配置 三、统一异常处理 四、统一返回数据返回格式处理 4.1、背景 4.2、…...

规划数据指标体系方法(下)——新海盗模型

前面已经跟大家分享了规划数据指标体系的两种方法—— OSM 和 UJM 模型&#xff0c;分别从目标-策略以及用户旅途的角度阐述了规划数据指标体系的过程。今天我来跟大家分享最后一种规划数据指标体系的方法——新海盗模型。 了解新海盗模型 海盗模型&#xff0c;即 AARRR 模型&…...

UML学习备忘录

UML学习备忘录 UML 全称是 Unified Modeling Language&#xff08;统一建模语言&#xff09;&#xff0c;它以图形的方式来描述软件的概念。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML的本质就是为了交流。 UML的概念包括了UML语义&#xff08;Se…...

Vue3手写分页在分页的基础上用到Pagination 分页组件

近期有个项目要用到分页组件&#xff0c;但是内容不是表格&#xff0c;所以自己就研究了一下在Pagination 分页组件的基础上手写了分页 效果图&#xff1a; 目录 一、先声明几个变量用来定义第几页&#xff0c;每页多少条&#xff0c;总页数。 二、然后封装一个函数方便以后…...

冥想第七百二十四天

1.今天感谢徐工的款待&#xff0c;请教了学习日语的一个方法就是把听力复述出来。 2.今天感觉运动量特别少&#xff0c;于是就下班跑了6公里&#xff0c;状态良好。 3.觉得出来出差真的好轻松&#xff0c;有点不适应了。感谢生活给我的奖励 好幸福呀。 4.感谢父母&#xff0c;感…...

Jenkins+Docker自动化部署项目

看到了一篇文章&#xff0c;实操一下自动部署的感觉。参看地址&#xff1a;原文 首先更新docker&#xff0c;我更新到了 [rootlocalhost springboot]# docker --version Docker version 23.0.1, build a5ee5b1跟新步骤&#xff1a; yum update#卸载旧版本 yum remove dock…...

TX2配置RealSense D455相机SDK和ros驱动

TX2配置RealSense D455相机SDK和ros驱动1 SDK安装2 RealSense-ros安装3 bug及解决3.1 realsense-viewer显示usb2.13.2 Could not found ddynamic_reconfigure折腾了两天终于把realsense的驱动装好了&#xff0c;尝试了命令安装&#xff0c;源码安装&#xff0c;前前后后搞了三遍…...

Sentinel架构篇 - 来源访问控制

来源访问控制&#xff08;黑白名单&#xff09; 概念 Sentinel 提供了黑白名单限制资源能否通过的功能。如果配置了白名单&#xff0c;则只有位于白名单的请求来源的对应的请求才能通过&#xff1b;如果配置了黑名单&#xff0c;则位于黑名单的请求来源对应的请求不能通过。 …...

多线程的Thread 类及方法

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; ✨每日一语&#xff1a;海压竹枝低复举&#xff0c;风吹山角晦还明。 目 录&#x1f332;一. 线程的复杂性&#x1f334;二. Thread 类及常见方法&#x1f4d5;2.1 Thread 的常见构…...

QT入门Item Views之QTreeView

目录 一、QTreeView界面相关 1、布局介绍 二、基本属性功能 1、设置单元格不能编辑 2、一次选中一个item 3、去掉鼠标移动到单元格上的虚线框 4、最后一列自适应 三、代码展示 1、创建模型&#xff0c;导入模型 2、 右键菜单栏 3、双…...

Servlet | Servlet简单入门——构建第一个Servlet项目

本专栏主要是记录学习JavaWeb中的Servlet相关知识点&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;Servlet Java入门篇&#xff1a; &#x1f525;Java基础学习篇 Java进阶学习篇&#xff08;持续更新中&#xff09;&am…...

Spring的IOC/DI,依赖注入的实现

Spring的IOC/DI&#xff0c;依赖注入的实现 https://download.csdn.net/download/weixin_41957626/87546826 资源地址 1.什么是Spring 1.1spring3 的体系结构图 图1 spring3的体系结构图 图2 spring4体系结构图 比较spring3的体系结构图&#xff0c;spring4去掉了spring3中的st…...

【tensorflow onnx】TensorFlow2导出ONNX及模型可视化教程

文章目录1 背景介绍2 实验环境3 tf2onnx工具介绍4 代码实操4.1 TensorFlow2与ONNX模型导出4.2 ONNX正确性验证4.3 TensorFlow2与ONNX的一致性检查4.4 多输入的情况4.5 设定输入/输出节点5 ONNX模型可视化6 ir_version和opset_version修改7 ONNX输入输出维度修改8 致谢原文来自于…...

天梯赛训练L1-013--L1-015

目录 1、L1-013 计算阶乘和 2、L1-014 简单题 3、L1-015 跟奥巴马一起画方块 1、L1-013 计算阶乘和 分数 10 题目详情 - L1-013 计算阶乘和 (pintia.cn) 对于给定的正整数N&#xff0c;需要你计算 S1!2!3!...N!。 输入格式&#xff1a; 输入在一行中给出一个不超过10的正…...

进程(操作系统408)

进程的概念和特征 概念&#xff1a; 进程的多个定义&#xff1a; 进程是程序的一次执行过程 进程是一个程序及其数据在处理机上顺序执行时所发生的活动 进程时具有独立功能的程序在一个数据集合上运行的过程&#xff0c;它是系统进行资源分配和调度的一个独立单位 上面所说…...

浅谈运维工程师的开发能力的培养

写在前面 本文已获得作者授权&#xff0c;作者的博客地址&#xff1a;https://www.cuiliangblog.cn/ 原文链接&#xff1a;浅谈运维工程师的开发能力的培养 一、运维工程师发展路线 1. 传统运维 侧重点是解决具体的问题。要求具备扎实的底层的知识储备&#xff0c;如网络、l…...

Netcode升级到1.2.0网络变量的变化的变化

Netcode升级到1.2.0网络变量的变化1 概述2 继承网络变量 NetworkVariable&#xff0c;派生类构造出错的问题2.1 代码描述2.2 问题记录2.3 解决办法&#xff1a;使用 NetworkVariable 即可3 网络变量 NetworkVariable 类的版本差异比较3.1 差异说明3.2 [1.0.2]版本的网络变量3.3…...

冥想第七百二十二天

1.周六去给朋友讲了一天的软件&#xff0c;给朋友带了2袋面包边&#xff0c;几袋方便面。感谢朋友的款待&#xff0c;做的蒸菜双拼&#xff0c;柠檬风爪&#xff0c;排骨汤&#xff0c;汤圆&#xff0c;牛肉&#xff0c;孜然回锅肉。 2.讲到下午五点&#xff0c;就回去了。感觉…...

AB测试——流程介绍(定义问题和指标选取)

前言&#xff1a; 作为AB测试的学习记录&#xff0c;本文主要介绍了AB测试的基本流程&#xff0c;以及指标类型和如何选取合适指标。 相关文章&#xff1a;AB测试——原理介绍 AB测试的基本流程是什么&#xff1f; AB测试&#xff08;也称为分流测试&#xff09;是一种常用的实…...

Linux(Centos)安装Minio集群

目录1&#xff1a;简介2&#xff1a;功能与集成3&#xff1a;架构4&#xff1a;搭建集群4.1&#xff1a;挂载磁盘4.1.1&#xff1a;要求4.1.2&#xff1a;创建挂载目录4.1.3&#xff1a;注意&#xff1a;需要将新建的目录挂在到对应的磁盘下,磁盘不挂载好&#xff0c;集群启动会…...