四种主要网络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模型,主要包括模型原理、模型优势、模型缺点、模型对虚拟化迁移的支持。服务器

一、Emulation

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

  不一样虚拟化厂商的虚拟网卡产品都不尽相同性能

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

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

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

优势:软件模拟不须要硬件支持,经过CPU计算来模拟,跟宿主机物理网卡隔离,没有平台要求。虚拟机操做系统不须要修改,模拟的都是常见网卡(好比:Intel E1000、RTL8139等),主流操做系统都已经自带这些驱动,所以默认状况下虚拟机不须要再安装驱动。blog

缺点:CPU资源消耗大,尤为当虚拟机数量多的时候。网卡性能通常,因为是软件模拟,只能模拟常见的、功能比较简单的网卡。接口

虚拟机迁移支持:剥离了硬件要求,使用这类型可迁移性强。因为XEN和KVM都是使用qemu仿真,因此这类型虚拟机在XEN和KVM之间混合迁移实现难度也不大。队列

二、para-virtualization

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

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

优势:我的认为是一种改进版的emulation模型,可是因为子机和Hypervisor之间通讯,性能比emulation要不少。

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

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

三、pass-through

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

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

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

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

四、SR-IOV

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

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

产品:常见就是基于intel 82599和82598芯片组的10Gb网卡。VMware、Redhat、Citrix和Microsoft都已经或者正在Hypervisor里面添 加这个功能的支持。不一样厂商虚拟化方案都不尽相同,有兴趣能够 在google里面搜索到更多资料。

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

缺点:待定

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

 

原文连接

相关文章
相关标签/搜索