SR-IOV と PCI Passthrough は、VM のネットワーク I/O から仮想化レイヤの処理をできるだけ外し、物理デバイスに近い形で処理させるための方式です。低遅延や高 pps を狙いやすい一方で、共有性、移動性、運用性を失いやすい方式でもあります。
違いを先に言うと、SR-IOV は物理 NIC から作成した Virtual Function を VM に割り当てる方式で、PCI Passthrough は物理デバイスを丸ごと VM に専有させる方式です。どちらも速さだけで選ぶものではなく、どこまで仮想化基盤の抽象化を迂回するかで判断します。
この記事では、SR-IOV、PCI Passthrough、IOMMU、VFIO、NUMA、DPDK、vhost-user の関係を、VM ネットワーク設計の観点で確認します。
この記事の結論
- SR-IOV は NIC の VF を VM に割り当て、物理 NIC に近い I/O を使わせる方式である
- PCI Passthrough は物理デバイスを VM に丸ごと渡すため、専有度と制約がさらに強くなる
- どちらも software switch や hypervisor の処理を減らしやすいが、移動性と柔軟性は下がる
- DPDK / vhost-user は userspace dataplane の話で、SR-IOV / PCI Passthrough は物理デバイスを VM に近づける話である
- 採用判断では性能だけでなく、IOMMU、NUMA、driver、firmware、物理ネットワーク制約を見る
SR-IOV は NIC を仮想的に分割して VM に渡す
SR-IOV は Single Root I/O Virtualization の略で、1 つの物理 NIC が複数の Virtual Function を生成し、それを VM に割り当てる仕組みです。VM から見ると、より物理 NIC に近いデバイスとして扱えるため、software switch を経由する通常の仮想 NIC よりも低遅延、高 pps を狙いやすくなります。
SR-IOV では、Physical Function が物理デバイス全体を管理し、Virtual Function が VM に割り当てられます。VM は VF を直接に近い形で使うため、hypervisor や仮想スイッチの処理を減らせます。
PCI Passthrough はデバイスを丸ごと VM に渡す
PCI Passthrough は、物理 PCIe デバイスを VM に専有させる方式です。NIC を渡す場合、その VM は物理 NIC をほぼ専用デバイスとして扱います。性能や制御の面では強力ですが、共有性は大きく下がります。
SR-IOV は 1 つの NIC から複数の VF を作れるため、複数 VM で分けやすい方式です。一方、PCI Passthrough はデバイス単位で専有するため、構成は単純でもリソース利用の柔軟性は低くなります。
| 観点 | SR-IOV | PCI Passthrough |
|---|---|---|
| 割り当て単位 | VF 単位 | 物理デバイス単位 |
| 共有性 | 複数 VM で VF を分けやすい | 基本的に 1 VM が専有する |
| 性能 | 低遅延、高 pps を狙いやすい | 物理デバイスに最も近い形で使いやすい |
| 移動性 | 通常の仮想 NIC より制約が強い | ライブマイグレーションと相性が悪い |
| 運用 | PF / VF / driver / firmware を管理する | デバイス専有と障害影響を管理する |
仮想スイッチを迂回する意味
通常の VM ネットワークでは、guest の virtio-net、QEMU、host kernel、bridge、Open vSwitch、物理 NIC など複数の層を通ります。この経路は柔軟ですが、高 pps や低遅延を狙う場合には overhead が問題になることがあります。
SR-IOV や PCI Passthrough は、この software path を短くします。その代わり、仮想スイッチで実現していた policy、overlay、monitoring、migration、traffic steering の一部を別の方法で扱う必要があります。
vhost-user / DPDK との違い
| 方式 | 主な狙い | 違い |
|---|---|---|
| vhost-net | virtio-net の処理を host kernel 側で支援する | 通常の仮想 NIC 経路を効率化する |
| vhost-user | QEMU と userspace dataplane を接続する | OVS-DPDK などの dataplane との接続が中心 |
| DPDK | userspace で packet processing を行う | host 側や VM 側の dataplane 技術として使う |
| SR-IOV | VF を VM に割り当てる | 物理 NIC の機能を VM に近づける |
| PCI Passthrough | 物理デバイスを VM に専有させる | 仮想化基盤の抽象化を最も強く迂回する |
DPDK と SR-IOV は競合する技術ではありません。VM に SR-IOV の VF を割り当て、その VM の中で DPDK を使う構成もあります。ただし、その場合は性能を狙える一方で、CPU、NUMA、NIC、driver、firmware の制約も強くなります。
IOMMU と VFIO は必須の前提
SR-IOV や PCI Passthrough では、VM がデバイスへ直接近い形でアクセスします。そのため、device access を分離する IOMMU と、device を VM に安全に渡す VFIO の理解が重要です。
IOMMU が無効なままでは、デバイス割り当ての安全性や分離が成立しません。SR-IOV の VF が見えることと、VM に安全に割り当てられることは別の確認です。
NUMA と PCIe 配置を合わせる
SR-IOV や PCI Passthrough では、NIC が接続されている PCIe root complex、NUMA node、VM の vCPU、メモリ配置が性能に強く影響します。NIC と VM の CPU / memory が遠い NUMA node にあると、せっかく仮想化レイヤを迂回しても latency が増えます。
lspci | grep -i ethernet
find /sys/class/net -name sriov_totalvfs -print
find /sys/class/net -name sriov_numvfs -print
lscpu
numactl --hardware
virsh nodedev-list --tree採用判断の軸
| 判断軸 | SR-IOV / PCI Passthrough が合いやすい | 通常の仮想 NIC が合いやすい |
|---|---|---|
| 用途 | 仮想ルーター、仮想 FW、NFV、高 pps dataplane | Web、DB、管理系 VM、一般的な業務 VM |
| 性能要件 | 低遅延、低 jitter、高 pps を重視する | 平均帯域や扱いやすさを重視する |
| 配置 | 特定 host / NIC への固定を許容できる | 柔軟な VM 配置を重視する |
| 運用 | driver、firmware、物理 switch まで含めて管理できる | 仮想化基盤の標準運用を優先する |
| 移動性 | ライブマイグレーション制約を受け入れられる | 移動性、HA、再配置を重視する |
向いている用途
- 仮想ルーター
- 仮想ファイアウォール
- NFV / VNF
- 高 pps の packet forwarding
- 低遅延が必要な network appliance
- 物理 NIC の機能を明示的に使いたい VM
向いていない用途
- 柔軟なライブマイグレーションを重視する VM
- 仮想スイッチや overlay network の機能を強く使う VM
- host をまたいで自由に再配置したい VM
- driver や firmware 依存を運用に持ち込みたくない環境
- 通常の virtio-net / vhost-net で性能が足りている VM
まとめ
SR-IOV と PCI Passthrough は、VM ネットワークの仮想化レイヤを迂回し、物理デバイスに近い形で I/O を処理するための方式です。性能面では強力ですが、同時に物理 NIC、driver、firmware、NUMA、IOMMU、物理ネットワークの制約を VM 運用へ持ち込みます。
速さだけを見て採用するのではなく、どの抽象化を手放すのか、どの運用制約を受け入れるのかを先に決めることが重要です。一般的な VM では virtio-net / vhost-net を優先し、NFV や高 pps dataplane で必要な場合に SR-IOV / PCI Passthrough を検討します。
書籍
CPU 仮想化支援、メモリ仮想化、割り込み、仮想デバイスなど、VM の実行モデルを低レイヤから理解する参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

