转:VMware、微软等四种主要的网络IO虚拟化模型

本文主要为大家简要介绍VMware、Redhat、Citrix、Microsoft主要虚拟化厂商使用的4种主要的虚拟化IO模型(emulation、para-virtualization、pass-through、SR-IOV)。

  本文主要为大家穿针引线,信息量比较大,组织排版有限,看官们将就点看着。

  网络I/O不但是物理服务器最容易出现的瓶颈,也是现在虚拟化技术最大的硬伤。随着硬件虚拟化对网络I/O的支持,虚拟化的网络I/O模型也不断的进化,虚拟化的I/O性能也不断提升。

  今天给大家分享VMware、Redhat、Citrix、Microsoft主流虚拟化解决方案采用的4种主流网络I/O模型,主要包括模型原理、模型优点、模型缺点、模型对虚拟化迁移的支持。

  这4个主流网络I/O模型分别是:

  1、Emulation

原理:仿真(emulation)是一个完全通过软件程序来模拟硬件的技术。早期虚拟化都才采用这种方案来虚拟网络设备。常见仿真软件有QEMU、VMware WorkStation、VirtualBox。Emulation网络模型图如下:

image001

  不同虚拟化厂商的虚拟网卡产品都不尽相同。

  VMware Emulation类型网卡有:E1000(仿真intel 82545M千兆网卡)、Flexible、Vlance(仿真AMC 79C970 PCnet32 LANCE 10M网卡)、VMXNET(VMXNET一共有3个版本,分别是VMXNET、VMXNET2、VMXNET3;暂时没有找到VMware的明确资料对这三个版本进行分类。个人暂把VMXNET定为emulation、VMXNET2和VMXNET3定义为para-virtualization类型。VMXNET3也支持部分SR-IOV功能)。

  Redhat的KVM和Citrix的XEN这类型网卡都是采用QEMU实现,在KVM和XEN上面可用的emulation网卡有:RTL8139(仿真RealTek Link 8139 100M网卡)、E1000(仿真intel 82545M千兆网卡)。

  Microsoft Hyper-V Emulation类型网卡有:Intel/DEC 21140 100M网卡

优点:软件模拟不需要硬件支持,通过CPU计算来模拟,跟宿主机物理网卡隔离,没有平台要求。

  虚拟机操作系统不需要修改,模拟的都是常见网卡(比如:Intel E1000、RTL8139等),主流操作系统都已经自带这些驱动,因此默认情况下虚拟机不需要再安装驱动。

缺点:CPU资源消耗大,尤其当虚拟机数量多的时候。网卡性能一般,由于是软件模拟,只能模拟常见的、功能比较简单的网卡。

虚拟机迁移支持:

  剥离了硬件要求,使用这类型可迁移性强。由于XEN和KVM都是使用qemu仿真,所以这类型虚拟机在XEN和KVM之间混合迁移实现难度也不大。

2、para-virtualization

原理:Para-virtualization又称半虚拟化,最早由Citrix的Xen提出使用。在半虚拟化模型中,物理硬件资源统一由Hypervisor管理,由Hypervisor提供资源调用接口。虚拟子机通过特定的调用接口与Hypervisor通信,然后完整I/O资源控制操作。Para-virtualization模型图如下:

image002

  Para-virtualization又称半虚拟化,最开始由XEN提出的,XEN本身就是从虚拟化起家的。Para-virtualization模型下,虚拟子机的网卡驱动只能有Hypervisor厂商来开发,Redhat、VMware、Citrix、Microsoft这几大虚拟厂商都有各自的para-virtualization驱动。比如Redhat的KVM就叫virtio,VMware的有VMXNET2、VMXNET 3,Citrix的XEN叫xen-pv,Mircrosoft暂时没有找到(欢迎朋友们补充)。

优点:个人认为是一种改进版的emulation模型,但是由于子机和Hypervisor之间通信,性能比emulation要很多。

缺点:需要修改虚拟子机操作系统内核,添加不同Hypervisor厂商的网络驱动。比如Linux(Redhat和Novell)就在发行版里面添加了Mircosoft的para-virtualizaiton网络驱动,同样Microsoft也在自己发行版里面添加对KVM的virtio和xen-pv驱动支持。

  虚拟机迁移支持:虽然不同虚拟化厂商的para-virtualization方案都不相同,由于主流操作系统都同时提供对这些方案的支持;所以这类型虚拟子机可迁移性也比较容易实现。

3、pass-through

image003

原理:Hypervisor将一个PCI设备(可以是网卡、USB、光驱)直接分配给指定虚拟子机单独访问。为了安全和稳定性考虑,pass-through使用通常结合intel VT-D(AMD也有类似技术)来使用,通过iommu保证虚拟子机之间内存访问不冲突。这种技术在VMware上叫VMDirectPath I/O,其他方案中没有找到相关专门名词。

优点:性能好。单独PCI设备分配给虚拟子机,虚拟子机直接跟物理设备通信。

缺点:设备只能被一个虚拟子机使用,配置也比较复杂,首先需要在hypervisor将指定设备通过PCI id方式分配给指定虚拟子机,然后虚拟子机识别到设备再安装驱动来使用。

  迁移性:迁移性方面待研究,有兴趣的朋友可以补充完善。

4、SR-IOV

背景:pass-through模型让虚拟子机直接使用物理设备,这样使得虚拟子机的网络性能达到最优。SR-IOV主要用来解决pass-through只能被一台虚拟子机访问的问题。SR-IOV标准由PCI-SIG,这个标准实现需要CPU、芯片组和PCI设备(主要是网卡等I/O资源)协同在硬件层面实现,SR-IOV被很多人认为是解决了虚拟化最后一公里的问题。模型图如下:

image004

原理:SR-IOV需要网卡硬件支持,支持SR-IOV功能的网卡可以在Hypervior里面注册成多个网卡(每个网卡都独立的中断ID、收发队列、QOS管理机制)。每个设备可以通过pass-through方式分配给虚拟子机。

产品:常见就是基于intel 82599和82598芯片组的10Gb网卡。VMware、Redhat、Citrix和Microsoft都已经或者正在Hypervisor里面添加这个功能的支持。下面是一篇基于KVM的SR-IOV性能测试报告。(http://www.principledtechnologies.com/clients/reports/Red%20Hat/RHEL6_SR-IOV_DB0111.pdf),不同厂商虚拟化方案都不尽相同,有兴趣可以在google里面搜索到更多资料。

优点:优点不用说,X86虚拟化最新的IO虚拟化模型;虚拟机不但性能好,而且结合硬件功能,为虚拟机IO管理提出了一个新方案。

缺点:待定

迁移性:SR-IOV同时需要硬件和软件两个层面支持,虚拟子机在相同网卡主机之间迁移时理论上不会有问题。具体还要看虚拟化厂商实现。

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

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

相关文章

CentOS7安装go开发环境

1,系统环境 操作系统 CentOS Linux release 7.6.1810 (Core) 64位 执行以下命令: wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz tar -xzvf go1.12.5.linux-amd64.tar.gz -C /usr/local/ mkdir -p /home/gopath cat >> /etc/p…

非递归遍历二叉树

2019独角兽企业重金招聘Python工程师标准>>> http://hi.baidu.com/lcplj123/item/7875233769fd5522b2c0c582 转载于:https://my.oschina.net/u/939893/blog/126138

Vue.js使用矢量图

安装依赖 npm i svg-sprite-loader --save目录结构 创建 svg-icon 组件 <template><svg :class"svgClass" aria-hidden"true"><use :xlink:href"iconName"/></svg> </template><script> export default {…

aix oracle监听配置_Oracel:ORA-12518:监听程序无法分发客户机连接

一、【问题描述】最近&#xff0c;在系统高峰期的时候&#xff0c;会提示如上的错误&#xff0c;致使无法连接到服务器上的数据库。二、【分析过程】1、首先判断是否由于监听配置不正确的原因导致?系统在正常情况下都可以正常的使用&#xff0c;检查监听配置&#xff0c;完全正…

PowerShell巡检主机获取CPU占用、内存使用、硬盘情况的脚本

Windows底下用PowerShell写的获取CPU核数、占用率&#xff1b;内存可用内存大小&#xff08;GB&#xff09;、使用率&#xff1b;硬盘总空余大小&#xff08;GB&#xff09;&#xff0c;使用率 # 获取硬盘空余空间 function get_disk_free(){ $disk Get-WmiObject -Class win…

4 命名规则_赛普拉斯(Cypress)存储器芯片命名规则

1&#xff0c;前言 赛普拉斯(Cypress)公司是一家知名的电子芯片制造商。赛普拉斯在纽约股票交易所上市&#xff0c;在数据通信、消费类电子等广泛领域均提供芯片解决方案。 2020年4月16日赛普拉斯(Cypress)和英飞凌(infineon)同时对外发文宣布&#xff1a;infineon英飞凌已经完…

数据数据库学通MongoDB——第一天 基础入门

在本文中,我们主要介绍数据数据库的内容,自我感觉有个不错的建议和大家分享下 关于mongodb的利益&#xff0c;长处之类的这里就不说了&#xff0c;一唯要讲的一点就是mongodb中有三元素&#xff1a;数据库&#xff0c;合集&#xff0c;文档&#xff0c;其中“合集” 就是对应关…

win10雷电3接口驱动_技嘉推出B550 主板首发雷电3接口:40Gbps速率、Intel主控

下周AMD针对主流市场的B550芯片组就要上市了&#xff0c;千元级主板上也有PCIe 4.0了。技嘉今天又宣布了一款新型号主板——B550 Vison D&#xff0c;它竟然支持Intel独家的Thunderbolt 3&#xff08;俗称雷电3&#xff09;接口&#xff0c;这还是B550中首款&#xff0c;40Gbps…

eclipse--eclipse(JavaEE版本)部署Tomcat工程(转)

介绍如何在eclipse&#xff08;JavaEE版本&#xff09;中部署Tomcat工程&#xff0c; 转自“http://www.cnblogs.com/chenjunbiao/archive/2011/12/09/2281702.html” “http://www.iteye.com/topic/825394” Eclipse下Tomcat常用设置 1&#xff0c;Eclipse建立Tomcat服务 1.1 …

python工程师需要考什么证_考垃圾处理清运工程师证哪里颁发的今年的考试时间即将告知...

考垃圾处理清运工程师证哪里颁发的今年的考试时间即将告知二、中级会计师(会计师)资格考试。三、高级会计师资格考试。四、中级会计师资格考试。五、注册税务师职称。六、注册公司登记。七、注册会计师、法人和其他组织的税务师资格考试。八、注册税务师职称。而在报名的时候不…

mysql集群搭建(使用docker 一主一从)

mysql集群搭建 my.cnf 配置文件配置 在 /etc/mysql/my.cnf 中 &#xff08;拿一个举例&#xff09; &#xff08;docker中需要先进入开启的容器&#xff0c;docker exec -it 容器名称 /bin/bash&#xff09; [mysqld] #启用二进制日志 log-binmysql-bin #服务器唯一ID&…

华为主题包hwt下载_华为主题 | 黑白人物

黑白人物1前言每周更新一次&#xff0c;没办法量产很抱歉但每一个主题都很精致这次的主题新增了QQ美化&#xff0c;锤子便签还有白肚皮美化不会太花里胡哨&#xff0c;放心不要喷我&#xff0c;所用壁纸皆是在堆糖里寻找喜欢的宝宝们&#xff0c;可以帮忙点一下再看或者关注不迷…

filebeat + logstash 发送日志至kafka 入门

filebeat 官方文档 配置文件 filebeat.yml filebeat.inputs:# Each - is an input. Most options can be set at the input level, so # you can use different inputs for various configurations. # Below are the input specific configurations.- type: log# Change to …

上机环境是什么意思_380元入手RX580满血显卡,跑分17万,还要什么自行车

今年显卡的行情都要比去年上涨一些&#xff0c;特别是刚过完年那一段时间&#xff0c;价格上涨的尤其的快&#xff0c;一张显卡上涨几十块&#xff0c;当时也是不敢入手 &#xff0c;等到了现在行情总算要好一些了&#xff0c;价格也适当的在往下走&#xff0c;最后入手了一款性…

docker-conpose 入门

docker-compose 安装 官方地址github Linux 下安装 sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose要安装其他版本的 Compose&#xff0c;请替换 1.29.1 …

史上最全 yum 入门使用教程和常见错误解决办法

介绍 众所周知&#xff0c;Redhat和Fedora的软件安装命令是rpm。需要手动寻找安装该软件所需要的一系列依赖关系&#xff0c;yum的诞生很好解决了以上的问题&#xff0c;下面有几个实用的yum小技巧和大家分享。 rpm与yum常用命令集合 $ rpm -qa | grep jenkins …

lru调度算法例题_嵌入式必会!C语言最常用的贪心算法就这么被攻略了

01基本概念贪心算法是指在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解&#xff0c;关键是贪心策略的选择&#xff0c;选择的…

【虚拟化实战】存储设计之一存储类型

Problem Statement存储设计是虚拟化设计的重要部分之一&#xff0c;确定合适的存储类型是展开存储设计的关键一步。FC/FCoE, iSCSI, NFS 甚至 Local Storage, 你会选择哪一种呢&#xff1f;参见下图。Requirements客户需要移植物理服务器到VMware虚拟化平台&#xff0c;很多物…

ztree 指定节点清空_节点操作

一.节点操作​ 1.DOM节点操作​ ①创建节点​ 语法&#xff1a;document.createElement("标签名")&#xff1b;​ 注&#xff1a;只单纯的创建出来了一个元素节点对象&#xff0c;不包含内容、属性和样式。​ ②插入节点​ 在父元素内部末尾追加​ 语法&#xff1a;父…

GC 基础

如何定位垃圾 1. 引用计数法 为对象添加一个引用计数器&#xff0c;当对象增加一个引用时计数器加 1&#xff0c;引用失效时计数器减 1。引用计数为 0 的对象可被回收。 在两个对象出现循环引用的情况下&#xff0c;此时引用计数器永远不为 0&#xff0c;导致无法对它们进行…