目次
SR-IOVを使用して仮想化基盤のネットワーク環境を効率的にしよう
SR-IOV は、 1 つの物理ネットワークインターフェースカード( NIC )を複数の論理 NIC に分割し、仮想マシンがアクセスする仕組みです。ハイパーバイザーを経由したアクセスに比べて低レイテンシ・高スループットな通信環境を提供し、セキュリティ面でのメリットもあります。導入時には、 SR-IOV に対応したハードウェアの準備と BIOS や OS の設定が必要です。
本記事では、 SR-IOV の概要と仕組み、導入のメリット、導入時の流れと注意点について解説します。
1. SR-IOVとは

SR-IOV とは、 Single Root I/O Virtualization の略で、 1 つの物理 NIC を複数の仮想マシンに割り当てて、リソースを共有しつつ、分離したアクセスを可能とするハードウェア仮想化技術です。
通常、仮想マシン( VM )がネットワーク通信を行う際は、ハイパーバイザー( KVM や ESXi )を経由して物理 NIC と通信します。この際、一定のオーバーヘッド(遅延)が発生します。
SR-IOV の場合、物理 NIC 上に PF ( Physical Function ) と呼ばれる物理機能が存在し、その PF を基盤として複数の仮想機能( VF : Virtual Function )を作成し、それぞれの仮想マシンに直接割り当てることが可能です。 VM からハイパーバイザーを介さずに、物理 NIC の VF へ直接アクセスするため、高スループットかつ低レイテンシの通信を実現できます。
2. SR-IOVのメリットと利用シーン
SR-IOV の導入には、仮想化基盤の通信スループットやセキュリティの向上といった多くのメリットがあります。ここでは、 SR-IOV 導入のメリットと導入が想定されるケースを解説します。
メリット

SR-IOV を使用する主なメリットは以下のとおりです。
低レイテンシ・高スループットな通信
SR-IOV では仮想マシン( VM )が VF に直接アクセスすることで、パケットの送受信がハイパーバイザーを経由せずに行われます。通信のオーバーヘッドが大幅に削減されるため、ネットワークの遅延が低減します。
ハイパーバイザーのCPU負荷軽減
通常の仮想 NIC は、すべてのパケット処理がハイパーバイザー上の仮想スイッチを通じて行われ、ハイパーバイザーの CPU リソースを消費します。一方、 SR-IOV ではハードウェアと直接通信するため、 CPU 使用率を抑えられ、全体のパフォーマンスが向上します。
セキュリティの向上
SR-IOV では、それぞれの仮想 NIC が論理的に独立した I/O パスを持つため、 VM ごとのトラフィック分離が強化されます。仮想スイッチを介さずに物理 NIC へアクセスする構成となるため、ソフトウェア層の脆弱性の影響を受けにくくなる点も特徴です。
利用シーン
SR-IOV の主な利用シーンとして以下が考えられます。
- 高トラフィックなアプリケーションサーバ
- 高頻度にネットワーク I/O が発生するデータベースサーバや大容量ストレージ
- セキュリティ分離が求められるマルチテナント環境
- ハイパフォーマンス・コンピューティング( HPC )
いずれもネットワーク通信に負荷がかかりやすく、高い性能が求められる点が共通しています。
3. SR-IOVをサポートする主な仮想化基盤
SR-IOV をサポートする主な仮想化基盤は以下のとおりです。
VMware ESXi
ESXi 5.5 以降の各バージョンでサポートされています。 GUI 画面での設定が可能ですが、 DRS ( Distributed Resource Scheduler )や vMotion といった機能に制限があります。
Microsoft Hyper-V
Windows Server 2012 以降で設定が可能です。ライブマイグレーションには制約がある点に注意が必要です。ハードウェアの制約があるほか、ハイパーバイザー上でのパフォーマンス測定ができないため、運用面も考慮する必要があります。
Proxmox/Red Hat Virtualization
KVM / QEMU を使用して Linux カーネルベースで実装します。 KVM の持つ幅広い機能を柔軟に使用できますが、設定は手動で行う必要があるため専門的な知識が求められます。 SR-IOV 設定のほかに、 IOMMU ( I/O Memory Management Unit )の設定も必要です。
これ以外にも、 OpenStack や Citrix ( Xen Server )でも SR-IOV を使用できるため、自社の仮想化基盤に応じて導入の検討を行うとよいでしょう。
4. SR-IOV導入の流れと注意点
SR-IOV を導入する際には、前提であるハードウェアの準備や BIOS 、 OS の設定が必要です。ここでは SR-IOV 導入時の流れと注意点を解説します。
導入の流れ
SR-IOV を導入する大まかな流れは以下のとおりです。
1. 前提条件の確認
使用するハードウェアやハイパーバイザー、ゲスト OS が SR-IOV に対応していることを確認します。ベンダーの公式資料で、 SR-IOV 対応と明記されているかを確認しましょう。
2. BIOSの設定
BIOS または UEFI で CPU 仮想化( VT-d ( Intel ) 、 AMD-Vi ( AMD ))、 IO 仮想化( IOMMU )、 SR-IOV 機能を有効化します。これにより仮想化された I/O パスをハードウェアで扱えます。
3. OSレベルでの有効化
OS レベルで IOMMU を有効化します。 Linux では GRUB に intel_iommu=on と iommu=pt を追加し、 OS を再起動してください。 Windows の場合は BIOS 設定のみで、デバイスが SR-IOV をサポートしているか(デバイスマネージャーで正しく認識されているか)を確認します。
4. VFの作成
物理 NIC ( PF )から VF を作成します。 Linux では「 echo 4 > /sys/class/net/eth0/device/sriov_numvfs 」のようにファイルに設定します。 Windows の場合、仮想スイッチマネージャーで仮想スイッチを選択のうえ、 SR-IOV を有効化することで VF を利用可能です。
5. 仮想化基盤上の設定
作成した VF を仮想マシンに割り当てる設定を行います。 Proxmox では GUI から、 KVM では virsh コマンドで設定します。 Windows の場合、ゲスト OS 上のデバイスマネージャーで SR-IOV を有効化し、 SR-IOV を有効にした仮想スイッチを仮想マシンに割り当てることで設定可能です。
6. ゲストOS上の確認
割り当てられた VF がゲスト OS 内で認識されているかを確認します。 lspci や ip link コマンドでデバイスの認識状況を確認可能です。 Windows の場合、仮想マシン内でデバイスマネージャーを開き、 SR-IOV 対応の NIC が設定後に正しく認識されていることを確認します。
7. 動作検証(パフォーマンステスト)
iperf3 や ping などでネットワークのレイテンシやスループットを測定し、 SR-IOV による高速通信が実現できているかを検証します。
注意点

SR-IOV を実装する際の注意点は以下のとおりです。
1. ハードウェアがSR-IOV対応している必要がある
CPU やマザーボード、チップセットが SR-IOV に対応している必要があります。
2. 物理NICがSR-IOV対応している必要がある
すべての NIC が SR-IOV に対応しているわけではないため、あらかじめ対応 NIC (例: Intel X520 など)を選定する必要があります。
3. BIOSやOSレベルでの設定が必要である
BIOS で SR-IOV や IOMMU を有効にする必要があり、 OS 側でもカーネルパラメータやドライバ設定などの対応が求められます。
4. 既存機能に制限がかかることがある
仮想関数( VF )を直接割り当てる構成では、 vMotion や HA ( High Availability )といった一部の仮想化機能が使用できなくなる可能性があります。
5. まとめ
SR-IOV は 1 つの物理 NIC を複数の論理 NIC に分割し、仮想マシンが直接アクセスする仕組みです。ハイパーバイザーを介したネットワークアクセスと比較して、低レイテンシ・高スループットな通信環境を提供し、セキュリティ面でのメリットもあります。
SR-IOV を導入するには対応したハードウェアを準備しなければならず、 BIOS や OS の設定も必要なため、専門的な知識が不可欠です。
Rworks 社では、 VMware をはじめとする各種仮想化基盤に精通しており、導入・構築を支援いたします。ぜひお気軽にご相談ください。
Tag: SR-IOV
Contactお問い合わせ
お見積もり・ご相談など、お気軽にお問い合わせください。