DPDK vhost-user研究(十二)
Virtio/Vhost是什么
Vhost/Virtio是一种半虚拟化的设备抽象接口规范, 在Qemu和KVM中的得到了广泛的应用,在客户机操作系统中实现的前端驱动程序一般直接叫Virtio, 在宿主机实现的后端驱动程序称为Vhost。与宿主机纯软件模拟I/O相比,virtio可以获得很好的性能,在数据中心中得到了广泛的应用。
Vhost有两种实现:内核态和用户态
内核态实现
vhost_net将部分的Virtio驱动从用户空间(其实是QEMU中)移到了kernel中,从而跳过QEMU,减少QEMU和内核之间的上下文切换开销,从而提升网络IO的性能。
通过在内核态增加了一个vhost驱动,与virtio相比,只需要进行一次用户态内核态切换(因为内核态的vhost-net.ko可以直接访问内核态的TAP设备,少了一次切换),另外,由于引入vhost技术共享了虚拟机的网卡缓冲区也省了一次数据拷贝(vhost-net.ko充当vhost backend,kvm.ko充当vhost client)。
用户态实现
vhost_user是将vhost_net驱动移动到用户态来实现零切换和零拷贝,从而进一步提升性能。一些实现了vhost backend的交换机(如snabbswitch)直接在用户态从vhost共享的虚拟机网卡缓存区virtio-ring中把网络数据进行读取,然后snabbswtich又实现了SR-IOV的物理网卡驱动直接将读到的虚拟机网络数据送到物理网卡上,从而大大提升了性能。
DPDK的实现
dpdk对虚拟化环境也是一个逐步支持的过程,不同的版本实现的功能不尽相同,具体的发展历程可以参考下图:
从最初版本的guest virtio PMD + kernel vhost_net发展至今,主机端实现用户态的vhost user,guest端采用virtio PMD。架构已经基本定型,后期的工作主要集中在性能优化和稳定性两个方面。用户态的vhost其原理和内核态的vhost-net类似,实现了用户态API,卸载了QEMU在Virtio-net上所承载的虚拟队列功能,同时基于QEMU共享内存空间、虚拟化队列的访问地址和事件文件描述符,使得vhost能够进行报文处理以及与guest通信。
DPDK的vhost包含的基本功能有:
- virtio-net网络设备管理,包括设备的创建和销毁
- 虚拟队列中描述符列表、可用环表和已用环表在vhost进程的虚拟地址空间的映射和解除,以及实际的数据报文缓冲区的映射和解除
- 收到报文时,通知guest;发送报文时,接收来自guest的消息通知
- 虚拟队列和实际的物理网卡间的报文交换。可使用VMDQ机制对报文进行分类和排序,避免软件方式的报文交换
- virtio-net后端设备的实现以及部分新特性实现:如支持多队列,TSO,支持巨型帧等等
先看下OVS+DPDK的概念,传统的vSwitch要使用kernel来完成转发面的实现以及和物理NIC的对接;在OVS+DPDK方案中,完全bypass 内核,通过dpdk + PMD来实现之前kernel提供的功能,从而将所有的功能都一直到用户态来实现。
基于这样的方案来实现的VNFs示意图就可以如下:
扩散:
当然除了上述VNFs部署方式,还可以采用下面的方式来部署:
这种部署方式需要NIC支持SR-IOV,同时在VNF中运行VF PMD。 这种方式的优点是性能高,相当于直接从物理网卡中读取报文;缺点是对硬件有依赖,而且动态迁移比较麻烦。
来比较下在云环境不同实现方式路径(性能从左到右逐渐提升):
参考链接:https://www.redhat.com/en/blog/boosting-nfv-datapath-rhel-openstack-platform
DPDK vhost-user研究(十二)相关推荐
- 《深入浅出DPDK》读书笔记(十二):DPDK虚拟化技术篇(半虚拟化Virtio)
Table of Contents 半虚拟化Virtio 132.Virtio使用场景 133.Virtio规范和原理 11.2.1 设备的配置 1. 设备的初始化 2. 设备的发现 3. 传统模式v ...
- (五十二):多模态情感分析研究综述_张亚洲
(五十二):多模态情感分析研究综述_张亚洲 Abstract 1 叙述式多模态情感分析 1. 1 静态多模态情感分析(文本与图像划分为静态文档) 1. 1. 1 基于机器学习的方法 1. 1. 2 基 ...
- 一位中科院自动化所博士毕业论文的致谢:二十二载风雨求学路,他把自己活成了光.........
4月18日,中国科学院官方微博发布消息,披露了这篇论文为<人机交互式机器翻译方法研究与实现>,作者是2017年毕业于中国科学院大学的工学博士黄国平. 这篇论文中情感真挚的<致谢> ...
- 构建之法第十,十一,十二章阅读
第十章经典用户和场景 虽说经典场景和经典用户很有必要去研究去效仿,但是随着时间发展,新的用户新的需求不断涌现,那该怎么平衡? 第十一章软件设计与实现 软件设计过程中,如何管理设计变更呢? 第十二章用户 ...
- Android Studio(十二):打包多个发布渠道的apk文件
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- ROS探索总结(十)(十一)(十二)——语音控制 机器视觉 坐标系统
ROS探索总结(十)--语音控制 如今语音识别在PC机和智能手机上炒的火热,ROS走在技术的最前沿当然也不会错过这么帅的技术.ROS中使用了CMU Sphinx和Festival开源项目中的代码,发布 ...
- OpenCV学习笔记(五十一)——imge stitching图像拼接stitching OpenCV学习笔记(五十二)——号外:OpenCV 2.4.1 又出来了。。。。。 OpenCV学习笔记(五
OpenCV学习笔记(五十一)--imge stitching图像拼接stitching stitching是OpenCV2.4.0一个新模块,功能是实现图像拼接,所有的相关函数都被封装在Stitch ...
- OpenCV学习笔记(三十一)——让demo在他人电脑跑起来 OpenCV学习笔记(三十二)——制作静态库的demo,没有dll也能hold住 OpenCV学习笔记(三十三)——用haar特征训练自己
OpenCV学习笔记(三十一)--让demo在他人电脑跑起来 这一节的内容感觉比较土鳖.这从来就是一个老生常谈的问题.学MFC的时候就知道这个事情了,那时候记得老师强调多次,如果写的demo想在人家那 ...
- 数字图像处理:第十二章 小波变换
第十二章 小波变换 目录 1 引言 2 连续小波变换 3 二进小波变换 3.1 Haar变换 4 离散小波变换 4.1 ...
- 初中数学四十二个几何模型_【初中数学】一题贯穿初中几何
一题贯穿初中几何 重要说明 本题是常州于新华(于特)供题,中国数学教育名师讲堂众大师巧解,扬州段广猛老师整理. 典例 (第二十五届"五羊杯"卷第19题)如图,△ABC中,∠C=90 ...
最新文章
- 口语学习Day4:今天带你们一起逛一下博物馆
- win8 查看 linux硬盘大小,如何查看显存大小_win8如何查看显存大小
- 1.关于QT中json数据处理和密码md5加密
- e.html5.qq.com,QQ群官网-开放能力
- thinkPhp5.1配置常量与输出
- MultiRow发现之旅(五)- MultiRow版俄罗斯方块(exe + 源码)
- win10绿联usb转串口_win10 usb转串口驱动-win10 usb转串口sb转驱动下载 PL2303 最新版 - 河东下载站...
- Redis底层数据结构——跳跃列表
- axure侧弹层遮罩_Axure实现遮罩效果
- 子标签获取父级Id值
- 打印机手动打印双面的防止顺序
- 网站制作教程:新手如何用PageAdmin建站系统做网站
- 如何使用射手影音寻找字幕
- 企业级负载均衡集群——lvs的DR模式(直接路由模式)详细说明
- 用大气噪声生成Java中的随机数
- 防火墙产品最大吞吐量性能测试:丢包概念
- C语言实现秒与时间的互相转换
- “丧心病狂”的C语言小程序,拿去恶搞好友
- 利用MATLAB绘制逆发动机MAP图
- LoadRunner11 实现token的解析与认证