vhost-net と vhost-user は、どちらも virtio-net の VM ネットワークを高速化するときに出てくる名前です。ただし、同じものではありません。vhost-net は host kernel 側で virtio 処理を支援する仕組みで、vhost-user は QEMU と userspace dataplane を接続する仕組みです。
この違いを分けて見ないと、通常の KVM VM を速くしたい話と、OVS-DPDK や NFV のような userspace dataplane を作りたい話が混ざります。この記事では、virtio-net、vhost-net、vhost-user、DPDK、SR-IOV の関係を VM ネットワーク設計の入口として確認します。
この記事の結論
virtio-netは VM に効率的な仮想 NIC を見せるための基本方式であるvhost-netは virtio-net の処理を host kernel 側で支援するvhost-userは QEMU と OVS-DPDK などの userspace dataplane を接続する- vhost-user は vhost-net の単純な上位互換ではなく、前提となる dataplane が違う
- 一般的な VM では vhost-net、NFV や高 pps dataplane では vhost-user を検討する
virtio-net だけではどこが重くなるのか
virtio-net は、VM に仮想 NIC を見せるための標準的な方式です。完全なデバイスエミュレーションより効率がよく、KVM / QEMU の通常構成ではまず virtio-net を使うのが基本になります。
ただし、VM が大量のパケットを処理する場合、guest、QEMU、host kernel、bridge / Open vSwitch、物理 NIC の間で、コンテキストスイッチ、データコピー、割り込み処理が増えます。この部分が packet forwarding 系ワークロードでは性能上の制約になりやすくなります。
vhost-net は kernel 側で virtio 処理を支援する
vhost-net は、virtio-net の一部処理を QEMU プロセスから host kernel 側へ移す仕組みです。QEMU がすべてを処理するよりも、kernel 側で virtqueue を扱えるため、VM ネットワークのオーバーヘッドを減らしやすくなります。
一般的な KVM の VM であれば、まず virtio-net と vhost-net の組み合わせで十分なことが多いです。Web サーバー、DB、管理系 VM、通常の業務 VM では、DPDK や SR-IOV を考える前に、この通常経路がきちんと使われているかを確認する方が現実的です。
vhost-user は userspace dataplane へ接続する
vhost-user は、QEMU と userspace dataplane を接続するための仕組みです。代表例は OVS-DPDK のように、Open vSwitch の datapath を DPDK 側へ寄せる構成です。
vhost-user では、packet processing を host kernel の通常ネットワーク経路から外し、userspace 側の dataplane と VM をつなぎます。そのため、NFV、仮想ルーター、仮想ファイアウォール、仮想ロードバランサのような高 pps ワークロードで選択肢になります。
vhost-net と vhost-user の違い
| 観点 | vhost-net | vhost-user |
|---|---|---|
| 処理場所 | host kernel 側 | userspace dataplane 側 |
| 典型構成 | KVM / QEMU / virtio-net | QEMU + OVS-DPDK など |
| 主な狙い | QEMU 経由のオーバーヘッドを減らす | kernel network stack を迂回して dataplane を専用化する |
| 運用性 | Linux 標準構成に近く扱いやすい | 専用設計と専用監視が必要になりやすい |
| 向く用途 | 一般的な VM ネットワーク高速化 | NFV、高 pps、低遅延 dataplane |
vhost-user は vhost-net の置き換えではありません。vhost-net は通常の VM ネットワークを効率化する方向で、vhost-user は userspace dataplane を前提に VM ネットワークの構造自体を変える方向です。
DPDK / OVS-DPDK との関係
DPDK は、userspace で packet processing を行うための技術です。OVS-DPDK は Open vSwitch の datapath を DPDK 側へ寄せる構成で、VM と OVS-DPDK をつなぐ場面で vhost-user が使われます。
このため、DPDK を使う VM ネットワークでは、virtio-net、vhost-user、HugePages、NUMA、PMD thread、CPU pinning をまとめて考える必要があります。単に vhost-user に変えれば速くなるという話ではなく、host 側 dataplane 全体の設計が必要です。
SR-IOV / PCI Passthrough との違い
SR-IOV や PCI Passthrough は、物理 NIC の機能を VM に直接近い形で渡す方向の技術です。software switch や host 側 dataplane を迂回しやすく、性能を出しやすい一方で、共有性、移動性、運用の柔軟性は下がりやすくなります。
| 方式 | 狙い | 注意点 |
|---|---|---|
| vhost-net | 通常の virtio-net 経路を効率化する | kernel 側の通常運用に近いが、専用 dataplane ではない |
| vhost-user | QEMU と userspace dataplane をつなぐ | OVS-DPDK などの前提設計が必要になる |
| SR-IOV | NIC の VF を VM に割り当てる | 物理 NIC 依存と移動性の制約が増える |
| PCI Passthrough | 物理デバイスを VM に専有させる | 共有性が下がり、構成変更の影響も大きい |
現在の VM で確認すること
VM ネットワークの方式を検討する前に、現在の interface、QEMU / libvirt の設定、vhost module、Open vSwitch の状態を確認します。いきなり DPDK を有効にするのではなく、VM がどの仮想 NIC を使い、host 側でどの datapath を通っているかを見ることが先です。
ip link show
lsmod | grep vhost
virsh domiflist vm-name
virsh dumpxml vm-name
ovs-vsctl show採用判断の考え方
一般的な VM ネットワーク性能改善であれば、まず virtio-net と vhost-net の通常経路を確認します。ここで十分であれば、DPDK や SR-IOV を入れる必要はありません。
一方で、仮想ルーター、仮想ファイアウォール、NFV、低遅延 packet forwarding のように、packet processing そのものが主役になる場合は、vhost-user と OVS-DPDK のような userspace dataplane を検討します。その場合は、CPU polling、HugePages、NUMA、監視、障害時の切り分けまで含めて設計します。
| 判断軸 | vhost-net を優先しやすい | vhost-user を検討しやすい |
|---|---|---|
| 用途 | Web、DB、管理系 VM、一般的な業務 VM | NFV、仮想ルーター、仮想 FW、高 pps dataplane |
| dataplane | Linux kernel 側の通常経路 | OVS-DPDK などの userspace dataplane |
| CPU | 柔軟に共有したい | 専有に近い CPU 設計を許容できる |
| 運用 | Linux 標準ツール中心で見たい | 専用監視と切り分けを用意できる |
| 移動性 | VM の柔軟な再配置を重視する | 固定配置や制約を受け入れられる |
まとめ
vhost-net と vhost-user は、どちらも virtio-net の VM ネットワーク性能に関係しますが、役割は違います。vhost-net は host kernel 側で通常の VM ネットワークを効率化する仕組みです。vhost-user は QEMU と userspace dataplane を接続し、OVS-DPDK や NFV のような構成で使われます。
通常の VM を速くしたいのか、userspace dataplane を作りたいのか。この前提を分けるだけで、vhost-net、vhost-user、DPDK、SR-IOV の選び方はかなり明確になります。
書籍
CPU 仮想化支援、メモリ仮想化、割り込み、仮想デバイスなど、VM の実行モデルを低レイヤから理解する参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

