与E1000E和E1000相比,VMXNET3的网络性能更好。本文将解释虚拟网络适配器和第2部分之间的区别,并将演示通过选择半虚拟化适配器可以获得多少网络性能。

         VMware管理员可以将几个不同的虚拟网络适配器附加到虚拟机上。虚拟适配器属于两个组中的任何一个:

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_网络适配器

模拟的:这些虚拟硬件模拟真实的现有物理网络适配器。(注意,物理ESXi主机中的物理网卡是完全不相关的。)VMkernel将向客户操作系统提供一些东西,这些东西看起来就像一些特定的现实世界硬件,客户可以通过即插即用的方式检测它们,并使用本地设备驱动程序。仿真设备的例子如下:

E1000将模拟1 Gbit Intel 82545EM卡,自2003年Windows Server生成以来,适用于大多数操作系统。在创建几乎所有虚拟机时,该卡都是默认的,并被广泛使用。E1000E模拟了一个新的真正的网络适配器,1 Gbit Intel 82574,适用于Windows 2012或更高版本。E1000E需要VM硬件版本8或更高版本。

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_Windows_02

上面的Windows 2008 R2中使用了一个模拟的E1000适配器,其中使用了本机客户操作系统设备驱动程序。仿真网络适配器的优点是它们可以开箱即用,不需要来自VMware的外部代码。它甚至可以用于(如果需要的话)由PXE安装客户操作系统,因为E1000设备在BIOS启动时就已经可用了。消极的一面是,当使用默认的模拟适配器时,从客户操作系统发送或接收的每一帧都需要额外的工作(可能每秒数千帧)。VMkernel必须实时模拟特定Intel 82545EM或82574卡的确切行为,这将花费时间和CPU周期。

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_VMware_03

半虚拟化:

另一种类型的虚拟网络适配器是半虚拟化的。最近的一个是VMXNET3。半虚拟化网卡不作为物理NIC存在,而是完全由VMware组成的设备。对于客户操作系统,这意味着通常在OS安装阶段,它只感觉到一个未知的设备位于(虚拟)主板上的PCI插槽中,但是它没有实际使用它的驱动程序。(注意:有些Linux发行版甚至预装了VMXNET3驱动程序。)

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_VMware_04

对于Windows Server,当提供设备驱动程序(通常通过安装VMware工具)时,客户操作系统会将其视为来自某个名为VMware的网卡制造商的真实NIC,并将其用作普通的网络适配器。它没有理由相信任何事情,除了这是一个NIC就像任何其他NIC在周围。

对于客户操作系统,VMXNET3卡看起来像一个10 Gbit的物理设备。注意:还有两个过时的半虚拟化适配器称为VMXNET和VMXNET2(有时是增强的VMXNET),但是只要虚拟机至少有硬件版本7,就应该只使用VMXNET3适配器。由于VMware使用VMXNET3卡拥有更多的网络组件,甚至在VM内部也可以实现许多性能增强。使用模拟的E1000/E1000E,内核必须对客户模拟现有适配器的确切行为,但是使用VMXNET3,它可以创建一个完美的虚拟适配器,优化后可以在虚拟环境中使用。在本文的第2部分中,我们将看到性能差异究竟有多大。

与仿真的E1000E和E1000相比,VMware半虚拟化VMXNET3的网络性能更好。在第一篇文章中解释了适配器类型之间的一般区别。在本文中,我们将测试当今最常见的两种Windows操作系统:Windows 2008 R2和Windows 2012 R2中的网络吞吐量,并查看VMXNET3与E1000和E1000E的性能。

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_网络适配器_05

为了生成大量的网络流量,我使用了运行在两台虚拟机上的iperf工具,一台是iperf客户机,另一台是服务器。我发现以下iperf设置生成的最佳组合网络吞吐量测试Windows Server:服务器:iperf - s - w 64 k - l 128 k客户:iperf - c <服务器ip > 30 - p 16 - w 64 k - l 128 k - t测试是惠普把Bl460c Gen8的虚拟机是相同的物理主机上运行能够看到物理网络的网络性能,无论物理主机/叶片之间的联系。

E1000、E1000E和VMXNET3上的所有设置都是默认设置。关于VMXNET3卡设置可能的调整的更多信息将在后面的文章中解释。(当然,需要注意的是,以下结果只是对一个特定硬件和ESXi配置的测试的观察结果,并不是科学研究。)

Test 1: Windows 2008 R2 with the default E1000 adapter

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_VMware_06

两个Windows 2008 R2虚拟机,一个作为iperf服务器,另一个作为客户机,测试在30秒内运行。正如在任务管理器视图中所指出的,1 Gbit链接速度已经达到了最大值。一个比较有趣的事实是,即使使用模拟的E1000适配器,也可以在1 Gbit链接上使用更多的适配器。

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_网络适配器_07

从iperf客户机输出可以看到,使用默认的E1000虚拟适配器,我们可以达到每秒2.65 Gbit的总吞吐量。

Test 2: Windows 2008 R2 with the VMXNET3 adapter、

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_Windows_08

The Task Manager view reports utilization around 39% of the 10 Gbit link in the Iperf client VM.

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_VMware_09

The iperf output shows a total throughput for VMXNET3 of 4.47 Gbit / second over the time the test was conducted.
The VMXNET3 adapter demonstrates almost 70 % better network throughput than the E1000 card on Windows 2008 R2.
Test 3: Windows 2012 R2 with the E1000E adapter

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_全虚拟化网卡和半虚拟化网卡的主要区别_10

E1000E是E1000更新、更强大的版本。对于客户操作系统,它看起来像物理适配器Intel 82547网络接口卡。然而,即使它是一个较新的适配器,它实际上提供的吞吐量也低于E1000适配器。

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_网络适配器_11


Two virtual machines running Windows 2012 R2 with the iperf tool running as client and server.

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_网络适配器_12

E1000E got 1.88 Gbit / sec, which is considerable lower than the 2.65 Gbit/s for the original E1000 on Windows 2008 R2.
Test 4: Windows 2012 R2 with the VMXNET3 adapter

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_全虚拟化网卡和半虚拟化网卡的主要区别_13


The two Windows 2012 R2 virtual machines now running with VMXNET3 adapter got the following iperf results:

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_VMware_14

The throughput was 4.66 Gbit/sec, which is very close to the result of VMXNET3 on Windows 2008 R2, but almost 150 % better than the new E1000E.

全虚拟化网卡和半虚拟化网卡的主要区别 网卡半虚拟化和e1000区别_VMware_15

总之,VMXNET3适配器比E1000和E1000E提供了更多的网络吞吐量性能。另外,至少在这个测试设置中,较新的E1000E的性能实际上低于较旧的E1000。测试是在Windows Server虚拟机上完成的,VMXNET3适配器的最高吞吐量约为4.6 Gbit/秒,这可能是TCP实现的限制造成的。使用其他TCP堆栈的其他操作系统可能获得更高的数字。还需要注意的是,这些测试只是针对网络吞吐量,当然还有其他因素,这些因素可能会在后面的文章中进一步讨论。