コンピューティングにおいて、ネットワーク仮想化とは、ハードウェアとソフトウェアのネットワークリソースとネットワーク機能を、単一のソフトウェアベースの管理エンティティである仮想ネットワークに統合するプロセスです。ネットワーク仮想化にはプラットフォーム仮想化が含まれ、多くの場合、リソース仮想化と組み合わせて使用されます。
ネットワーク仮想化は、多数のネットワークまたはネットワークの一部を仮想ユニットに結合する外部仮想化と、単一のネットワークサーバー上のソフトウェア コンテナーにネットワークのような機能を提供する内部仮想化のいずれかに分類されます。
ソフトウェアテストにおいて、ソフトウェア開発者はネットワーク仮想化を用いて、開発中のソフトウェアを、そのソフトウェアが動作することを想定したネットワーク環境をシミュレートした環境でテストします。アプリケーションパフォーマンスエンジニアリングの構成要素であるネットワーク仮想化により、開発者はあらゆるハードウェアやシステムソフトウェア上で物理的にソフトウェアをテストすることなく、テスト環境においてアプリケーション、サービス、依存関係、そしてエンドユーザー間の接続をエミュレートできます。テストの有効性は、実際のハードウェアとオペレーティングシステムをエミュレートする際のネットワーク仮想化の精度に依存します。
さまざまな機器およびソフトウェア ベンダーが、次のいずれかを組み合わせてネットワーク仮想化を提供しています。
外部ネットワーク仮想化は、1つまたは複数のローカルエリアネットワーク(LAN)を仮想ネットワークに統合または分割することで、大規模ネットワークまたはデータセンターの効率を向上させます。仮想ローカルエリアネットワーク(VLAN)とネットワークスイッチが主要なコンポーネントを構成します。この技術を使用することで、システム管理者は物理的に同じローカルネットワークに接続されたシステムを、別々の仮想ネットワークに構成できます。逆に、別々のローカルエリアネットワーク(LAN)上のシステムを、大規模ネットワークのセグメントにまたがる単一のVLANに統合することも可能です。
外部ネットワーク仮想化は、ネットワークスタックの中間に配置され、次世代ネットワークに提案されているさまざまなアーキテクチャの統合に役立つことが想定されています。[1]
内部ネットワーク仮想化は、Xenハイパーバイザー制御プログラムなどの ソフトウェアコンテナや、 VNICなどの擬似インターフェースを用いて単一システムを構成し、物理ネットワークをソフトウェアでエミュレートします。これにより、アプリケーションを個別のコンテナまたは擬似インターフェースに分離することで、単一システムの効率を向上させることができます。[2]
CitrixとVyatta は、Vyatta のルーティング、ファイアウォール、VPN 機能と、Citrix の Netscalerロード バランサ、ブランチ リピーターワイド エリア ネットワーク(WAN) 最適化、セキュア ソケット レイヤーVPN を組み合わせた仮想ネットワークプロトコル スタックを構築しました。
OpenSolarisネットワーク仮想化は、いわゆる「ネットワーク イン ア ボックス」を提供します ( 「OpenSolaris ネットワーク仮想化およびリソース制御」を参照)。
Microsoft Virtual Server は、仮想マシンを使用してx86システム向けの「ネットワーク・イン・ア・ボックス」を構築します。これらのコンテナは、 Microsoft WindowsやLinuxなどの異なるオペレーティングシステムを実行でき、特定のネットワークインターフェイスコントローラ(NIC)に関連付けられているか、独立しているかは問いません。
ネットワーク仮想化は、アプリケーション開発およびテストにおいて、現実世界のハードウェアおよびシステムソフトウェアを模倣するために使用されます。アプリケーションパフォーマンスエンジニアリングにおいては、ネットワーク仮想化により、アプリケーション、サービス、依存関係、エンドユーザー間の接続をエミュレートし、ソフトウェアテストを行うことができます。
無線ネットワーク仮想化は、スペクトル共有、インフラストラクチャ仮想化、無線インターフェース仮想化など、非常に幅広い範囲をカバーします。有線ネットワーク仮想化では、1つまたは複数のプロバイダが所有する物理インフラストラクチャを複数のサービスプロバイダ間で共有できますが、無線ネットワーク仮想化では、物理的な無線インフラストラクチャと無線リソースを抽象化し、複数の仮想リソースに分離する必要があります。これらの仮想リソースは、異なるサービスプロバイダに提供できます。言い換えれば、有線ネットワークか無線ネットワークかを問わず、仮想化はネットワークシステム全体を分割するプロセスと考えることができます。しかし、無線環境には、時間変動チャネル、減衰、モビリティ、ブロードキャストといった特有の特性があるため、問題はより複雑になります。さらに、無線ネットワーク仮想化は特定のアクセス技術に依存しており、無線ネットワークには有線ネットワーク仮想化よりもはるかに多くのアクセス技術が含まれており、それぞれのアクセス技術には固有の特性があるため、収束、共有、抽象化の実現が困難です。したがって、無線ネットワーク仮想化をネットワーク仮想化のサブセットと見なすのは正確ではない可能性があります。[3]
1 Gbit/sネットワークまでは、ネットワーク仮想化は相互接続を提供するソフトウェア層やハイパーバイザー層のオーバーヘッドの影響を受けませんでした。10 Gbit/sを超える高帯域幅の普及に伴い、パケットレートはネットワークスタックの処理能力を超えています。[要出典]高スループット処理を維持するために、いわゆる「ネットワーク・イン・ア・ボックス」には、ハイパーバイザーのSRIOV拡張機能を使用するハードウェア依存のネットワークインターフェースコントローラー(NIC) 、またはNICとペイロード(仮想マシンまたはコンテナ)間の高速パス技術のいずれかを組み合わせたソフトウェアとハードウェアのヘルパーの組み合わせが展開されています。
例えばOpenstackの場合、ネットワークはNeutronによって提供され、Linuxカーネルの多くの機能(iptables、iproute2、L2ブリッジ、L3ルーティング、OVSなど)をネットワークに活用しています。Linuxカーネルは10Gパケットレートを維持できないため([要出典])、高速パスのためのバイパス技術が使用されます。主なバイパス技術は、 DPDKユーザー空間実装を備えたOpen vSwitch (OVS)などの限定的な機能セットに基づくもの、または6WIND仮想アクセラレータ などのLinux処理のフル機能とオフロードに基づくもののいずれかです。