virtio vs e1000 vs rtl8139:有什麼區別?
在 Ubuntu 上創建虛擬機時,我可以在虛擬網路介面的三種設備模型之間進行選擇:virtio、e1000和rtl8139。
三者有什麼區別?換句話說,在選擇設備型號時應該考慮什麼?
Google搜尋“virtio vs e1000 vs rtl8139”並沒有多大幫助。結果的前兩頁充滿了官方文件,並沒有多說,還有部落格文章歸結為“使用選項N,因為我試過了,很棒。” 我發現的唯一有用的資源是一個討論,它似乎表明e1000很慢,但與**virtio相比具有最大的兼容性。討論似乎暗示e1000在某些時候比rtl8139更受歡迎,但沒有說明原因。
在設置虛擬機的情況下,
e1000
模擬 Intel NIC,rtl8139
模擬 Realtek NIC,並且virtio
是半虛擬化驅動程序,即它“知道”它在 VM 中執行,並且基本上只是在 VM 和虛擬機之間傳遞網路流量以最直接的方式主持。如果您在 VM 中執行舊版作業系統,則可能需要根據舊版作業系統支持的 NIC 選擇虛擬 NIC。英特爾
e1000
甚至有可用於相當陳舊和晦澀的作業系統的驅動程序。但是物理 e1000 網卡的硬體相當複雜,所以會因為需要模擬它而產生一些成本。Realtek 8139 顯然在硬體方面非常簡單,因此在 VM 中進行仿真可能比 Intel e1000 更容易。但另一方面,簡單性也意味著虛擬機內部的作業系統可能需要做一些額外的工作才能滿足 NIC 仿真的條件,而實際的主機 NIC 可以在硬體中完成一些工作。
但是,如果您在 VM 中執行的任何內容都支持
virtio
,它可能會為您提供最佳性能(除了為 VFIO 直通/SR-IOV 設計的主機 NIC 硬體),因為它允許 VM 簡單地跳過大部分相關步驟模擬虛擬網卡和控制虛擬硬體,主機利用實際物理網卡的硬體特性最大限度地提高虛擬機的流量。