vSphereの仮想NICでVMXNET3推奨の根拠
vSphere 環境で仮想マシンを作成時、仮想NICのタイプとして “VMXNET3” が良いと (なんとなく) 認識していたのですが、その根拠 (ソース) を探してみたところ、ちょっと分かりづらかったです。
本記事では、仮想NICのタイプとして “VMXNET3” が推奨されるとするソースがどこにあるのか調べた結果をまとめます。
対象は、VMware vSphere 7.0や8.0です (ESXi 7系、8系) 。
仮想NICのネットワークアダプタタイプ
仮想マシンの作成時 (仮想NICの追加時) のパラメタの1つとして、タイプ (ネットワークアダプタタイプ) があります。
本記事では、このタイプの1つである “VMXNET3” が推奨されることについて、確認していきます。
製品ドキュメントでは推奨されていない
製品ドキュメント、”vSphere の仮想マシン管理” に、各ネットワークアダプタタイプについての説明が一通り書かれています。
vSphereにおいて、多くのゲストOS向けに仮想NICのデフォルト値となっている “E1000E” と “VMXNET3” についての説明を引用します。
E1000E
Intel 82574 ギガビット イーサネット NIC のエミュレート バージョンです。E1000E は、Windows 8 および Windows Server 2012 のデフォルト アダプタです。
…
VMXNET 3
パフォーマンス向上のために設計された、準仮想化 NIC です。VMXNET 3 は VMXNET 2 で使用可能なすべての機能を提供し、さらに、マルチキュー サポート (Windows では Receive Side Scaling とも呼ばれる)、IPv6 オフロード、および MSI/MSI-X 割り込み配信などのいくつかの新機能も提供します。VMXNET 3 は VMXNET または VMXNET 2 を基盤にしていません。
出典:ネットワーク アダプタの基本
ここでは特に、”VMXNET3″ が推奨されている訳ではありません。
ざっくりした比較
E1000E (や古いE1000) は、Intel製NICのエミュレートバージョンです。
対して、VMXNET3は準仮想化NICです。
この時点で、物理NICのエミュレート (完全仮想化相当) と準仮想化NICを単純に比べれば、パフォーマンスが期待できるのは準仮想化の “VMXNET3” です。
ただ、前述のとおり製品ドキュメントで明確に表現されていないので、もう少し詳しく確認していきます。
互換性ガイド (VMware Compatibility Guide) で推奨
探してみたところ、VMwareの公式Webサイト上では、互換性ガイド (VMware Compatibility Guide)で、 “VMXNET3” が推奨されているという表現が見つかりました。
検索カテゴリ
を “Guest OS” 、製品名
を “ESXi” に選択し、製品リリースバージョン
も適宜選んで検索すると、各ゲストOSのサポート状況が表示されます。
表示
の件数を多くすると、検索結果を見やすいです。

出典:VMware Compatibility Guide – Guest/Host Search
"VMXNET3" が推奨されているゲストOS
例えば、Windows Server 2022では、以下のように “VMXNET3” が推奨されています (Recommended)。

出典:VMware Compatibility Guide – Guest/Host Search
他にも同様に、以下のOSでは “VMXNET3” が推奨されています。
- SUSE Linux Enterprise Server
- Ubuntu 23.04 (Debian系)
- Oracle Linux 9.x (RHEL系?UEK とRHCKのカーネル種別についての条件見当たらず)
- FreeBSD 13.x
- Photon OS 5.0
ほとんどのOSについて、仮想NICのタイプは “VMXNET3” が推奨されています。
過去のOSバージョンについても同様です。
"VMXNET3" が推奨されている訳ではないゲストOS
一方で、なぜかRHEL系 (Fedora系) のゲストOSについては、”VMXNET3″ が推奨 (Recommended) されているという表現が見当たりません。
以下は、RHEL9の場合です。

出典:VMware Compatibility Guide – Guest/Host Search
サポートはされています。
もしかすると根深い何かがあるのかもしれませんが (Red Hatの仮想化製品との兼ね合い等)…、よく分かりません。
大きな影響は無さそうですが、以下のような問題の事例があるようです。
- vmxnet3 ドライバーが複数の rx キューを初期化できない – Red Hat Customer Portal
- Linux ゲスト OS でルーティングに VMXNET3 アダプタを使用するとネットワーク パフォーマンスが低下する (2077393)
あくまでVMware社の説明
上記の互換性ガイドは、VMware社が提供する情報です。ゲストOSを動作させるための仮想基盤側の見解なので、重要な根拠の1つとなります。
ただし、各ゲストOSの開発元が提供する情報ではありません。
状況に応じ、ゲストOS側の情報も確認すると良いでしょう。
VMXNET3の性能情報
明確なデータは見当たらないのですが、いくつか参考になった情報を記載しておきます。
ベンチマーク情報
かなり古いですが、”E1000E” (や”E1000″) と、”VMXNET3″ のベンチマーク比較を行った結果が掲載されている記事があります。
上記サイトでは、以下のように”VMXNET3″ が “E1000E” (や”E1000″) と比べて高いスループットを実現できたことを示しています。

出典:VMXNET3 vs E1000E and E1000 – part 2 – RICKARD NOBEL AB
余談ですが、1Gbps NICであるはずの “E1000″、”E1000E” で、1Gbps超のスループットが出ていたりします。ある意味で物理NIC以上の性能が出てしまっています。
VMware公式の資料
さらに古いですが、VMwareが “VMXNET” の性能について公開している資料があります。
“VMXNET3″でなく、ずっと昔の “VMXNET” です。
(歴史的な情報として) “VMXNET” のときは、E1000アダプタと大差が無かったことが分かります。
実機の挙動
デフォルトがE1000Eになるもの
仮想マシン作成時、ゲストOSとしてWindows、その他 (macOS等で確認) を選択すると、デフォルトの仮想ネットワークアダプタのタイプは “E1000E” となります。
前述のとおり、互換性ガイドではWindowsは “VMXNET3” が推奨されていたのに、デフォルトは “E1000E” のようです。互換性を優先した結果なのかもしれません。
ゲストOS上のデバイス名
WindowsゲストOS上では、各仮想NICは以下のように認識されます。
-
“E1000E” の仮想NIC
デバイスマネージャー等で “Intel(R) 82574L Gigabit Network Connection” として認識される。
リンク速度は1Gbps。 -
“VMXNET3” の仮想NIC
デバイスマネージャー等で “vmxnet3 Ethernet Adapter” として認識される。
リンク速度は10Gbps。
(前述の通り、1Gbpsリンクでも1Gbpsを超えることケースもあるようです)
デフォルトがVMXNET3になるもの
対して、ゲストOSとしてLinux、その他 (FreeBSD等で確認) を選択すると、デフォルトの仮想ネットワークアダプタのタイプは “VMXNET3” となります。
その他のOS
ゲストOSとして、IBM OS/2を選択すると “フレキシブル” になったりもします。
(参考) Hyper-Vの場合
Hyper-Vの場合、特にGUI上はネットワークアダプタの種類を選ぶことはできないのですが、デバイスマネージャー等では、”Microsoft Hyper-V Network Adapter”として認識され、リンク速度は10Gbpsです。

第2世代の仮想マシンでは、”Hyper-V 固有のネットワーク アダプター” (おそらく準仮想化) が使用されるようです (ゲストOSがLinuxの場合どうなるのか等は未確認)。
対して、第1世代でのみ使用できる “レガシ ネットワーク アダプター”はエミュレーションです。
VMXNET3を使用したい場合
Windowsの仮想マシンの場合は、作成時にネットワークアダプタタイプをデフォルト値から変更する必要性があります。
既に仮想マシンを作成済みの場合、仮想NICの再作成が必要です (作成済みの仮想NICのタイプ変更は不可)。
他の多くのゲストOSでは、デフォルトが “VMXNET3” になっているので、特別な対応は不要です。
その他の問題等
“VMXNET3” や “E1000″、”E1000” に関するトラブル事例です。
結論:どちらでも
個人的な感覚としては、極端な用途のゲストOSでない限り、”VMXNET3″ でも “E1000E” でも、どちらでも問題は無いかと思います。
どちらでも良いなら、”VMXNET3″ にしておきたいです。
不具合に遭遇する可能性という意味では、枯れたハードウェアのエミュレーションに比べれば準仮想化NICの方が若干高いのかもしれませんが、実用上問題になるほどではないように思います。
まとめ
本記事では、仮想NICのタイプとして “VMXNET3” が推奨されるとするソースがどこにあるのか調べた結果についてまとめてみました。