Highlighted
Jun_Tan
3 Silver

【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

本文主要为大家简要介绍VMwareRedhatCitrixMicrosoft主要虚拟化厂商使用的4种主要的虚拟化IO模型(emulationpara-virtualizationpass-throughSR-IOV)。

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

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

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

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

1、Emulation

原理:

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

image001.png


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

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

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

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

优点:

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

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

缺点:

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

虚拟机迁移支持:

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

2、para-virtualization

原理:

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

image002.png

Para-virtualization又称半虚拟化,最开始由XEN提出的,XEN本身就是从本虚拟化起家的。Para-virtualization模型下,虚拟子机的网卡驱动只能有Hypervisor厂商来开发,RedhatVMwareCitrixMicrosoft这几大虚拟厂商都有各自的para-virtualization驱动。比如RedhatKVM就叫virtioVMware的有VMXNET2VMXNET 3CitrixXENxen-pvMircrosoft暂时没有找到(欢迎朋友们补充)。

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

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

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

3、pass-through

image003.png

原理:Hypervisor将一个PCI设备(可以是网卡、USB、光驱)直接分配给指定虚拟子机单独访问。为了安全和稳定性考虑,pass-through使用通常结合intel VT-DAMD也有类似技术)来使用,通过iommu保证虚拟子机之间内存访问不冲突。这种技术在VMware上叫VMDirectPath I/O,其他方案中没有找到相关专门名词。不同方案有关pci pass-through资料如下:VMware(http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=101078...  ; http://www.vmware.com/pdf/vsp_4_vmdirectpath_host.pdf  ; ) KVM(http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaat%2Fliaatbppcipassthr...

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

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

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

4、SRIOV

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

image004.png

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

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

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

缺点:待定

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

 

Reference:

1.      VMwaree虚拟机可用网络模块(http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=100180...

2.      QEMU仿真技术(http://en.wikipedia.org/wiki/QEMU

3.      VMware I/O architecture for virtualizationhttp://labs.vmware.com/download/79/

4.      Microsoft Hyper-v (http://en.wikipedia.org/wiki/Hyper-V)

5.      Redhat虚拟化管理配置文档(https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html-single/Virtualization...

标签 (1)
0 项奖励
7 条回复7
Yanhong1
3 Cadmium

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

ls最近虚拟化学习的很有心得啊

0 项奖励
liulei_it
4 Germanium

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

Emulation ?

让我想起了  Device Emulation Type : FBA

0 项奖励
Gabriel_H
1 Nickel

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

虚拟化技术和虚拟化产品还是要分分清楚的。

0 项奖励
zhuzhu281306
3 Silver

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

经典总结,tanjun兄辛苦了,收藏之。

0 项奖励
Jun_Tan
3 Silver

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

哈哈,不客气

0 项奖励
trump_zhang
1 Copper

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

对于82599等支持SRIOV的网卡,其支持直接将PF直通给虚拟机么?

0 项奖励
Roger_Wu
4 Ruthenium

Re: 【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络IO虚拟化模型

根据KB应该是可以的:

SR-IOV support status FAQ (2038739)

As of the vSphere 5.5 release date, these adapters are supported:

  • Products based on the Intel 82599ES 10 Gigabit Ethernet Controller Family (Niantic) 
  • Products based on the Intel Ethernet Controller X540 Family (Twinville) 
  • Emulex OneConnect (BE3)

To get a complete list, check VMware Compatibility Guide and select SR-IOV under Features as search option.

0 项奖励