VMwareからKVMに移行する人のための機能比較 Vol.5 ネットワーク編

商用サービス向けにVMwareを利用しているユーザーがKVMへの移行を検討する際、特にミッションクリティカルなシステムであればあるほど、「VMwareからKVMに移行する際のリスクは何か?」という点が大きな関心事となります。
 VMwareはエンタープライズ向けに最適化されており、内部的に多数の性能・安定性向上の工夫が組み込まれています。こうした仕組みを把握せずに移行した場合、それがリスクとして顕在化することなく移行計画から漏れてしまい、運用開始後に致命的な性能劣化や障害を引き起こす可能性もあります。
 今回はネットワーク仮想化の仕組みに焦点をあてて取り上げます。
 なお、ネットワークは規模に応じて活用する技術要素が異なるため、ここではVMware(vSphere)、Linuxの標準機能を組み合わせて実現できる範囲に記述を留めます。
 規模が大きいネットワークでは、SDN(Software Defined Networking)を実現するためにVMware(NSX)を導入することがあります。
 一方で、KVMはVMware(vSphere)の代替にはなり得ますが、VMware(NSX)の代替にはなりません。
 以上を踏まえ、管理対象ホストが数台程度の小規模なネットワーク環境を前提に、両者の比較を行います。

前回の記事「VMwareからKVMに移行する人のための機能比較 Vol.4 ディスク編」で
「仮想化基盤の内部構造」のうち、ディスク仮想化の仕組みに焦点をあてて解説しました。
 ディスク仮想化におけるアーキテクチャを図解すると、VMware(vSphere)とKVMは類似した構造を持っています。
 ただし、単純に両者を比較するだけでなく、KVMにおける構成オプションを理解し適切に選択することの方が重要となる場合があることを説明しました。

ネットワークの仮想化の基本的な概念は、VMwareとKVMのいずれも同じであり、ホストマシン上に仮想ネットワーク機器を配置し、仮想マシンの仮想NICとホストマシンの物理NICを接続する構成となっています。
 両者はディスク仮想化と同様に基本アーキテクチャの考え方は類似しています。
 ただし、仮想ネットワーク機器の実装や機能には違いがあります。
 VMwareでは、ネットワーク機能の大半がVMkernel上で動作する「仮想スイッチ」によって実現されています。
 この仮想スイッチは、L2スイッチ機能に加えて、ポートグループ、VLAN、トラフィックシェーピング、NICチーミングなど、エンタープライズ向けの高度な機能を統合的に提供します。
 一方、KVMでは、Linuxカーネルの「bridge」機能(ブリッジ)を仮想スイッチとして利用します。
 さらに、VLAN、bonding/teaming、トラフィック制御(tc)など、Linux標準機能を組み合わせて同様の機能を実現します。

(1)VMware(vSphere)


①仮想NIC(vNIC)
 VMwareの用語では、仮想NICはvNICと表現しますが、KVMとの比較のため一般的な用語で表記しています。仮想マシンはVMware Toolsに含まれるVMXNET3ドライバを通じて仮想NICを利用します。
 VMXNET3はマルチキューに対応しており、複数の通信が同時に発生しても処理が1本のキューに集中せず分散して処理できます。
 キュー数はvCPU数以下の範囲でVMwareが設定します。
②VMM(Virtual Machine Monitor)
 仮想マシンのI/O要求をVMkernelに中継する役割を担います。
 VMwareの公式ドキュメントや書籍に明記されていませんが、VMM内には複数のI/Oスレッドが存在し並列処理を可能にしているものと考えられます。
③仮想スイッチ(VSS:標準スイッチ)
 標準スイッチVSSは、VMkernelに組み込まれたカーネル機能で仮想的なスイッチであり、ESXiごとに独立して存在します。
 仮想NIC(vNIC)と物理NIC(vmnic)の間でパケットを転送し、仮想マシン間のL2通信を実現します。
 標準スイッチVSSには以下のような機能が統合されています。
 ・VLAN
 ・NICチーミング
 ・負荷分散
 ・トラフィックシェーピング
 ・ポートグループ
④物理NIC(vmnic)
 VMwareの用語では物理NICはvmnicと呼びますが、ここでは一般的な「物理NIC」として記載します。これはESXiホストに搭載された実NICであり、仮想スイッチを通じて外部ネットワークと接続します。

(2)Red Hat KVM


①仮想NIC
 仮想マシンはLinuxカーネル標準モジュールのvirtio-netドライバを通じて仮想NICを利用します。
 virtio-netもマルチキューに対応していますが、キュー数は手動で設定する必要があります。
②vhost(virtio-netのスレッド)
 virtio-netはデータ転送を高速化するためのカーネルモジュールです。
 QEMUのユーザー空間を介さず、カーネル空間でパケットを直接処理することでオーバーヘッドを削減します。
 vhost-netはvhostスレッドを生成し、I/O処理を並列化しています。
③tap(Terminal Access Point)
 TAPデバイスは、仮想マシンの仮想NICとホスト側ネットワーク(bridge)を接続するための、カーネル上の仮想Ethernetデバイスです。
④bridge
 bridgeは、Linuxカーネルが提供する仮想ブリッジ機能(L2スイッチ相当)です。
 ホストごとに独立して存在し、仮想NIC(vnetXなど)と物理NIC(ethXなど)の間でパケットを転送します。
 VMwareの標準スイッチVSSのような高度な機能は持ちませんが、Linuxカーネルの他の機能を組み合わせることで同様の仕組みを構築できます。
 ※RHELのドキュメントや入門書ではまずvirbr0が紹介されますが、これはlibvirtが自動生成するNAT用ブリッジです。仮想マシンから外部ネットワークへはNAT経由でアクセス可能ですが、外部から仮想マシンへ直接アクセスできないため、サーバ用途には不向きです。
  本記事では、実ネットワークと同一セグメントに接続できるbridge(例:br0)を前提に解説します。
⑤カーネル:RHEL Kernel
 RHEL Kernelには、ネットワーク機能として以下のようなモジュールや仕組みが標準で組み込まれています。
 ・VLAN
 ・NICチーミング(bonding、teamd)
 ・負荷分散(bonding、teamd、iptables、nftables)
 ・トラフィックシェーピング(tc)
 ・VXLAN
  VMwareではvSphere標準機能だけではVXLANを構成できず、NSXの導入が必要でした。
  一方、KVMではLinuxカーネル標準のモジュールを利用して、追加ソフトウェアなしにVXLANを構築できます。
⑥物理NIC
 これはホストに搭載された実NICであり、仮想スイッチを通じて外部ネットワークと接続します。

(3)VMwareからKVMに移行する際の主な考慮点

VMwareとKVMはネットワークの仮想化の基本アーキテクチャは類似しており、仮想マシンから物理NICまでのデータ経路や処理構造も概ね同等です。
 VMwareの場合は、標準スイッチVSSに機能が集約されているため、設計や運用を一元的に行いやすいという利点があります。
 一方、KVMではLinuxカーネルの複数の機能を組み合わせて構築する必要があるため、より幅広いLinuxネットワークの知識が求められます。
 とはいえ、VMwareから移行する際には、VMwareで利用している機能をLinuxカーネルや標準ツールに対応づけて置き換える形で設計できるため、アプローチ自体は比較的取りやすいと言えます。
 ただし、ネットワーク規模が大きく、VMware(NSX)を利用している場合には注意が必要です。
 NSXには分散ファイアウォールなど、Linux標準機能では代替できない機能が含まれます。
 なお、NSXのオーバーレイネットワークについては、Linuxカーネル標準のVXLANによって同様の仕組みを構築することが可能です。

VMwareとKVMは、ネットワーク仮想化の基本アーキテクチャが類似しています。
 そのため、ネットワーク機能に関してVMwareとLinuxの機能対応(Fit & Gap)を整理し、VMwareで利用している機能をLinux標準機能へ適切に置き換えることで、KVMへの移行は十分に可能と考えられます。
 ただし、VMware(NSX)を利用している場合は注意が必要です。NSXが提供する分散ファイアウォールなどの機能は、Linux標準機能だけでは代替できないため、追加技術の導入が必要になります。

VMwareからKVMに移行する人のための機能比較 Vol.1 アーキテクチャ編
VMwareからKVMに移行する人のための機能比較 Vol.2 CPU編
VMwareからKVMに移行する人のための機能比較 Vol.3 メモリ編
VMwareからKVMに移行する人のための機能比較 Vol.4 ディスク編

仮想化の設定および管理 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
 14.2. 仮想デバイスの種類
 第17章 仮想マシンのネットワーク接続の設定
 17.6. 仮想マシンをネットワークに接続するためにネットワークボンディングにブリッジを設定する
 18.8. 仮想マシンのネットワークパフォーマンスの最適化
仮想化のチューニングと最適化ガイド| Red Hat Enterprise Linux | 7 | Red Hat Documentation
 5.2. Virtio と vhost_net
 5.4.2. マルチキュー virtio-net
③書籍:平初・森若和雄・鶴野隆一郎・まえだこうへい『KVM徹底入門 Linuxカーネル仮想化基盤 構築ガイド』翔泳社、2013年出版
④書籍:ヴイエムウェア株式会社 Broadcom『VMware vSphere徹底入門』翔泳社、2025年出版
⑤書籍:ヴイエムウェア株式会社『VMware徹底入門』翔泳社、2016年出版
⑥書籍:今井悟志『VMware vSphere7 インテグレーションガイド』インプレス、2021年出版
VMware vSphere 8.0


元の記事を確認する

関連記事