SR-IOV(Single Root I/O Virtualization) えすあーるあいおーぶい
簡単に言うとこんな感じ!
1枚のネットワークカードを「分身」させて、複数の仮想マシンに直接つなぐ技術だよ!ソフトウェアを介さずにハードウェアを使えるから、通信がめちゃくちゃ速くなるんだ。特に大量のデータをさばくサーバーで大活躍してるってこと!
SR-IOVとは
SR-IOV(Single Root I/O Virtualization) とは、1つの物理的なPCIeデバイス(主にNIC=ネットワークインターフェースカード)を、複数の仮想的なデバイスとして分割し、複数の仮想マシン(VM)から直接利用できるようにする技術です。PCI-SIG(PCI Special Interest Group) が策定した規格で、ハードウェアレベルでI/O仮想化を実現します。
通常の仮想化環境では、仮想マシンがネットワーク通信をするたびにハイパーバイザー(仮想化ソフトウェア)が間に入って処理を肩代わりします。これはCPUに余計な負荷をかけ、通信の遅延(レイテンシ)を生む原因になります。SR-IOVを使うと、仮想マシンがハードウェアに直接アクセス(パススルー) できるため、ハイパーバイザーの介在によるオーバーヘッドをほぼゼロにできます。
特に金融システムのリアルタイム取引処理、動画配信、クラウド基盤、NFV(Network Functions Virtualization)など、低遅延・高スループットが求められる場面で積極的に採用されています。
SR-IOVの仕組みと構造
SR-IOVは物理デバイスを「PF」と「VF」という2種類の機能に分けて管理します。
| 機能名 | 正式名称 | 役割 |
|---|---|---|
| PF | Physical Function(物理ファンクション) | NIC全体を管理する親。SR-IOVの設定・制御を担う |
| VF | Virtual Function(仮想ファンクション) | PFから切り出された仮想デバイス。各VMに割り当てる |
物理サーバー
├── 物理NIC(1枚)
│ ├── PF(Physical Function)× 1 ← ハイパーバイザーが管理
│ └── VF(Virtual Function)× N ← 各仮想マシンに直接割り当て
│ ├── VF1 → VM1
│ ├── VF2 → VM2
│ ├── VF3 → VM3
│ └── VF4 → VM4
VFの数はNICの機種によって異なりますが、最大256個まで作成できる製品もあります。各VFはPCIeデバイスとしてOSから独立して見えるため、VMはあたかも専用のNICを持っているかのように動作します。
覚え方:「親(PF)が子(VF)を量産する」
PFを「親カード」、VFを「子カード」と考えると分かりやすいです。親が工場長として全体を管理し、子どもたちが実際に各VMへ仕事(通信)を届けるイメージです。
VF数の目安(主要NICベンダー)
| ベンダー | 製品例 | 最大VF数 |
|---|---|---|
| Intel | X710 / E810 | 128〜256 |
| Mellanox(NVIDIA) | ConnectX-6 | 256 |
| Broadcom | BCM57504 | 64 |
歴史と背景
- 2007年 — PCI-SIGがSR-IOV仕様 ver.1.0を策定。x86サーバーの仮想化ブームに合わせてI/Oボトルネック解消を目的に登場
- 2008年 — Intelがサーバー向けNIC「82576」でSR-IOVを初めて製品実装
- 2009〜2010年 — VMwareのESXi、Linux KVMがSR-IOVサポートを追加。クラウド基盤への採用が拡大
- 2012年 — OpenStackがSR-IOV対応のNeutronプラグインを整備。NFV基盤で本格活用が始まる
- 2016年 — ETSIがNFV標準にSR-IOVを参照技術として明記。通信キャリアの採用が加速
- 2020年代 — DPU(Data Processing Unit)やSmartNICの普及により、SR-IOVと組み合わせた高度なオフロード構成が一般化
SR-IOVが生まれた背景には、仮想化の普及によるI/Oボトルネック問題があります。CPUやメモリの仮想化技術が成熟する一方、ネットワークI/Oだけがソフトウェア処理に頼ったままで、VMの増加とともにハイパーバイザーのCPU消費が問題視されるようになったのです。
通常の仮想化 vs SR-IOV
SR-IOVと混同されやすい技術を整理すると以下の通りです。
| 技術 | 仕組み | メリット | デメリット |
|---|---|---|---|
| SR-IOV | NICをVFに分割してVM直結 | 低遅延・低CPU負荷 | ライブマイグレーション制約あり |
| vSwitch(仮想スイッチ) | ソフトウェアでスイッチング | 柔軟・機能豊富 | CPU負荷・遅延大きめ |
| PCIeパススルー | 物理デバイスを1VMに丸ごと渡す | 最高パフォーマンス | 共有不可・1VM専用 |
| DPDK | カーネルバイパスでソフト処理高速化 | SR-IOVと組み合わせ可能 | 専用アプリが必要 |
ライブマイグレーション(稼働中のVMを別ホストへ移動する機能)はSR-IOVでは制限がかかる場合があります。これはVFが物理ハードウェアに強く紐づいているためです。この制約を緩和するためにVFIO(Virtual Function I/O) や最新のNICが対応を進めています。
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| PCI-SIG SR-IOV Specification 1.1 | SR-IOVの基本仕様を定義したPCI-SIG標準規格 |
| IEEE 802.1Q | VLANタギング規格。SR-IOVのVFにVLANを割り当てる際に使用 |
| RFC 7498 | NFV(Network Functions Virtualization)のユースケース。SR-IOVが活用される基盤技術として言及 |
関連用語
- NIC(Network Interface Card) — コンピューターをネットワークに接続するハードウェア
- 仮想マシン(VM) — ソフトウェアで作られた仮想的なコンピューター
- ハイパーバイザー — 仮想マシンを管理するソフトウェア基盤
- PCIe(PCI Express) — CPU・メモリと周辺機器を高速接続するバス規格
- DPDK(Data Plane Development Kit) — カーネルを介さずにNICを直接操作する高速パケット処理ライブラリ
- NFV(Network Functions Virtualization) — ネットワーク機器の機能をソフトウェアで実現する技術
- vSwitch(仮想スイッチ) — 仮想化環境内でVMをつなぐソフトウェアスイッチ
- DPU(Data Processing Unit) — ネットワーク処理をCPUからオフロードする専用プロセッサ