在VMware的虚拟化环境中,虚拟机选择虚拟机网卡类型(如E1000e和VMXNET3)是部署和优化虚拟化工作负载的重要环节。本文将探讨这两种虚拟网卡的特点、适用场景及其历史背景,帮助大家做出更明智的选择。
先说结论:
- 新的操作系统和高性能需求的话,优先选择VMXNET3。VMXNET3要装VMware Tools
- 旧的操作系统或实验性环境,可以使用E1000e。
- 对性能有极高要求且硬件支持,考虑SR-IOV Passthrough。
VMware支持的虚拟网卡类型及发行历史
- E1000e
- 发行时间:2008年,与VMware Workstation 6.5一起推出。
- 特点:模拟Intel 82574千兆网卡,是Windows8和Windows Server2012的默认适配器。
- 适用场景:需要兼容性优先的环境,特别是在不安装VMware Tools的情况下。
- E1000
- 发行时间:2004年,随 VMware Workstation 4.5推出。
- 特点:模拟Intel 82545EM千兆网卡,支持WinXP及以上和Linux 2.4.19以上的操作系统。
- 适用场景:常规操作系统兼容性需求。
- Flexible
- 发行时间:2001 年,随 VMware Workstation 3.0 推出。
- 特点:启动时识别为Vlance,装VMware Tools后切换为VMXNET模式,提升性能。
- 适用场景:需要兼顾兼容性和性能的环境。
- Vlance
- 发行时间:1999 年,随 VMware 第一代产品推出。
- 特点:模拟AMD 79C970 PCnet32 LANCE网卡,速率为10Mbps,支持32位操作系统。
- 适用场景:极老版本操作系统,适合初始网络连接需求。
- VMXNET
- 发行时间:2001 年,随 VMware Workstation 3.0 推出。
- 特点:专为虚拟化优化,需安装 VMware Tools 驱动,无物理网卡对应。
- 适用场景:虚拟化性能需求较高但不涉及现代功能的场景。
- VMXNET 2 (Enhanced VMXNET)
- 发行时间:2007 年,随 ESX/ESXi 3.5 推出。
- 特点:在 VMXNET 基础上增加支持大帧(Jumbo Frame)和硬件卸载。
- 适用场景:需要支持现代网络特性的工作负载。
- VMXNET 3
- 发行时间:2009 年,随 ESX/ESXi 4.0 推出。
- 特点:高性能虚拟化网卡,支持多队列、IPv6 卸载、MSI/MSI-X 中断等现代功能。
- 适用场景:需要高性能的生产环境,通常是默认首选。
- PVRDMA
- 发行时间:2016 年,随 vSphere 6.5 推出。
- 特点:支持远程直接内存访问(RDMA),需要虚拟机间通过OFED verbs API 通信。
- 适用场景:分布式交换机连接的高性能虚拟机。
- SR-IOV Passthrough
- 发行时间:2015 年,随 ESXi 6.0 推出。
- 特点:物理网卡直接与VM通信,无需通过VMkernel中介,极大降低延迟和 CPU占用。
- 适用场景:
- 对延迟敏感的虚拟机,如高性能计算(HPC)。
- 需要更多 CPU 资源的环境。
选E1000e还是VMXNET3?
必须使用VMXNET3的场景
VMXNET3作为一种高性能虚拟网卡,专为优化虚拟化环境的网络性能而设计。相比E1000e,VMXNET3提供了更低的CPU占用、更高的吞吐量和先进的网络特性。以下是一些场景和最佳实践中要求或建议使用 VMXNET3的情况:
- 高网络性能需求的工作负载
- 场景描述:需要处理大量网络流量的虚拟机,例如:
- 数据库服务器(如 SQL Server、MySQL)。
- Web 应用服务器。
- 文件传输服务器(如 FTP、SMB)。
- 视频流媒体服务器。
- 原因:
- VMXNET3支持更高的网络吞吐量和更低的延迟。
- 减少虚拟机和主机之间的网络性能瓶颈。
- 场景描述:需要处理大量网络流量的虚拟机,例如:
- 高并发和低延迟的环境
- 场景描述:运行要求高并发网络连接的应用,例如:
- 大规模的虚拟桌面基础架构(VDI)。
- 分布式应用程序和微服务(如Kubernetes集群中的服务)。
- 原因:
- VMXNET 3 支持大规模并发连接,并优化了网络包处理效率。
- 提供多队列支持(如多重发送和接收队列),更适合多核处理器。
- 场景描述:运行要求高并发网络连接的应用,例如:
- 需要支持高级网络功能的场景
- 场景描述:虚拟机需要使用以下网络特性:
- IPv6 支持。
- 虚拟机热添加网卡。
- 大帧(Jumbo Frames)。
- 分段卸载(TSO)和校验和卸载(CSO)。
- 收包合并(Receive Side Coalescing, RSC)。
- 原因:
- VMXNET3是 VMware 唯一完全支持这些高级网络特性的虚拟网卡。
- 场景描述:虚拟机需要使用以下网络特性:
- 提升虚拟化环境的网络效率
- 场景描述:运行虚拟机密集型应用,需降低主机CPU的网络处理开销。
- 原因:
- VMXNET3更高效地利用虚拟化平台,降低主机CPU占用。
- 提升整体虚拟化环境的可扩展性和资源利用率。
- 迁移到 NSX-T 或其他高级网络架构
- 场景描述:企业计划实施NSX-T网络虚拟化或其他基于SDN(软件定义网络)的架构。
- 原因:
- VMXNET3能无缝集成NSX提供的功能,如分布式防火墙、微分段等。
- 提供更强的兼容性和性能支持。
- 运行现代操作系统
- 场景描述:VM操作系统为现代版本(如WinServer2016/2019/2022或新版本的Linux)。
- 原因:
- 这些操作系统中,VMXNET3的驱动程序已内置,避免额外安装第三方驱动。
- 提供更稳定、更高效的网络性能。
E1000e的应用场景
何时选择E1000e?
- 需要操作系统原生驱动支持(如嵌入式或轻量系统)。
- 实验性或临时虚拟机部署,性能需求低,配置时间有限。
- 需要与某些要求硬件模拟的工具兼容。
- 测试与开发环境,对性能没有严格要求。
我们列一下什么时候可以或者需要选择用E1000e作为VM的虚拟网卡:
- 操作系统或驱动兼容性
- 场景:
- 使用旧版本的操作系统(如部分嵌入式 Linux、较旧的Windows)。
- 操作系统没有预装VMware Tools或无法安装VMware Tools的场景。
- 原因:
- E1000e采用通用的Intel驱动,几乎所有现代操作系统都原生支持。
- 无需依赖额外的驱动或工具,确保基础网络功能的快速启用。
- 场景:
- 对网络性能要求不高的环境
- 场景:
- 测试或开发环境中,仅需要基本网络连接。
- 较低负载的虚拟机(如简单的文件共享或轻量级应用服务器)。
- 原因:
- 在低流量场景下,E1000e的性能已经足够满足需求。
- 配置简单,无需优化网络特性。
- 场景:
- 对特定监控工具或兼容性有要求
- 场景:
- 使用要求网卡呈现为标准硬件设备的监控工具(如需要硬件绑定的流量分析工具)。
- 与需要硬件模拟的第三方系统集成。
- 原因:
- E1000e模拟的是真实的Intel网卡,更容易与某些需要物理硬件标识的工具兼容。
- 场景:
- 快速部署场景
- 场景:
- 在快速部署中,需要VM立即启动并连接网络,而暂时没有时间安装VMware Tools。
- 原因:
- E1000e不依赖VMware Tools即可正常工作。
- 适合短期快速实验或临时需求。
- 场景:
E1000e和VMXNET3两者的对比总结
特性 | VMXNET 3 | E1000e |
---|---|---|
性能 | 高性能、低延迟 | 较低性能,适合普通网络流量 |
驱动依赖 | 需要安装 VMware Tools | 使用操作系统自带驱动 |
功能支持 | 支持高级网络功能(如大帧、TSO) | 不支持高级功能 |
兼容性 | 需要现代操作系统和 VMware Tools | 广泛兼容,适合旧操作系统 |
资源消耗 | 较低的主机 CPU 占用 | 较高的主机 CPU 占用 |
E1000e和VMXNET3的性能差距
根据Google,大概看了国外的一些博主作的测试。
VMXNET3的网络吞吐量通常比E1000e高2至4倍。在高流量负载下,VMXNET3的CPU使用率比E1000e低 30%-50%。
比如https://rickardnobel.se/vmxnet3-vs-e1000e-and-e1000-part-2/,当然这个博文也比较旧了。
根据这位技术博主Rickard的测试结果,VMXNET3网卡在Windows Server虚拟机中的网络吞吐量显著优于 E1000和E1000E网卡。在 Windows Server 2008 R2环境中,E1000网卡的吞吐量约为2.65 Gbps,而VMXNET3网卡则达到约4.47 Gbps,提升约70%。在Windows Server 2012 R2环境中,E1000E网卡的吞吐量约为1.88 Gbps,而VMXNET3网卡则达到约4.66 Gbps,提升约150%。
还有这一篇阿里云的https://developer.aliyun.com/article/1407470,这一篇比较新,可以参考。
VMXNET3 网卡的性能约为E1000网卡的四倍,E1000e网卡的两倍。
当然,实际性能可能因具体的硬件配置,操作系统和实际使用环境而有所不同。
总结
在 VMware 环境中,如果操作系统支持并能够安装 VMware Tools,VMXNET3 应作为首选网卡类型。它能够显著优化资源利用率,提升网络吞吐量,并降低延迟。而 E1000e 则仅适合于需要兼容性或运行旧版操作系统的场景。合理选择网卡将有效提升虚拟化部署的整体性能。