开始新对话

未解决

此帖子已超过 5 年

4050

2012年10月12日 18:00

【分享】VMware,Redhat,Citrix和Microsoft 4种主要的网络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.png

​ ​


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

​ ​

​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.png

​ ​

​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.png

​ ​

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

​ ​

​ ​

​ ​

​优点:性能好。单独​​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 82599​​和​​82598​​芯片组的​​10Gb​​网卡。​​VMware​​、​​Redhat​​、​​Citrix​​和​​Microsoft​​都已经或者正在​​Hypervisor​​里面添加这个功能的支持。下面是一篇基于​​KVM​​的​​SRIOV​​性能测试报告。​​(​​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=1001805​​)​

​ ​

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

​ ​

​3.​​ ​​VMware I/O architecture for virtualization​​(​​http://​​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_Host_Configuration_and_Guest_Installation_Guide/index.html#id3138450​​)​

​ ​

​ ​

​ ​

​ ​

1.6K 消息

2012年10月12日 21:00

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

2 Intern

 • 

3.2K 消息

2012年10月13日 06:00

Emulation ?

让我想起了  Device Emulation Type : FBA

80 消息

2012年10月22日 22:00

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

631 消息

2012年10月25日 06:00

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

2 Intern

 • 

605 消息

2012年10月25日 20:00

哈哈,不客气

1 消息

2015年3月15日 20:00

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

2 Intern

 • 

4K 消息

2015年3月15日 20:00

根据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.

找不到事件!

Top