virtio、e1000、rtl8139:有什么区别?

virtio、e1000、rtl8139:有什么区别?

在 Ubuntu 上创建虚拟机时,我可以为虚拟网络接口选择三种设备模型:虚拟机,e1000rtl8139

三者有什么区别?换句话说,选择设备型号时应该考虑什么?

谷歌搜索“virtio vs e1000 vs rtl8139”并没有多大帮助。结果的前两页都是官方文档,内容不多,博客文章归结为“使用选项,因为我尝试过,效果很棒。”我发现的唯一有用的资源是讨论这似乎表明e1000速度慢,但与相比具有最大的兼容性虚拟机。讨论似乎暗示e1000在某些时候更喜欢rtl8139,但没有说明原因。

答案1

在设置虚拟机的上下文中,e1000模拟 Intel NIC、rtl8139模拟 Realtek NIC,并且virtio是半虚拟化驱动程序,即它“知道”它在 VM 中运行,并且基本上只是在 VM 和虚拟机之间传递网络流量。以最直接的方式主持。

如果您在 VM 中运行旧版操作系统,则可能需要根据旧版操作系统支持的 NIC 选择虚拟 NIC。英特尔e1000甚至为相当古老和不知名的操作系统提供了驱动程序。但物理 e1000 网卡的硬件相当复杂,因此会因为需要对其进行仿真而产生一些开销。

Realtek 8139 显然在硬件方面非常简单,因此在虚拟机中模拟它可能比 Intel e1000 更容易。但另一方面,简单性也意味着虚拟机内的操作系统可能需要做一些额外的工作来满足网卡模拟的条件,而实际的主机网卡可以在硬件中完成一些工作。

但是,如果您在虚拟机内运行的任何内容都支持virtio,它很可能会为您提供最佳性能(除了为 VFIO 直通/SR-IOV 设计的主机 NIC 硬件之外),因为它允许虚拟机简单地跳过大部分相关步骤模拟虚拟网卡并控制虚拟硬件,主机利用实际物理网卡的硬件功能,最大限度地提高虚拟机流量的效益。

相关内容