仮想マシン コミュニケーション インターフェイス (VMCI) は、仮想マシンとホスト オペレーティング システム間、および同じホスト上の複数の仮想マシン間での高速かつ効率的な通信を実現するインフラストラクチャです。VMCI SDK によって、VMCI インフラストラクチャを使用するアプリケーションの開発が容易になります。VMCI がない場合、仮想マシンは、ネットワーク レイヤーを使用してホストと通信します。ネットワーク レイヤーを使用すると、通信のオーバヘッドが増加します。VMCI を使用すると、通信のオーバーヘッドが最小限に抑えられ、その通信を要求するさまざまなタスクを最適化できます。内部ネットワークでは、vmxnet3 を使用することにより、平均で 2 Gbit/s を若干超える速度で転送を処理できます。VMCI では、サイズが 128k のキューをペアで使用することにより、10 Gbit/s 近くまで転送速度を向上させることができます。
通信には、次の 2 つのタイプがあります。
- データグラム:コネクションレス – UDP キュー ペアに似ています
- コネクション指向 – TCP に似ています
VMCI は、ソケット API を提供しています。この API は、TCP/UDP アプリケーションですでに使用されているものと非常に似ています。IP アドレスは、VMCI ID の数値で置き換えられます。たとえば、TCP/UDP の代わりに VMCI ソケットを使用するように netperf を移植することが可能です。
VMCI は、デフォルトでは無効になっています。
同一ホスト上で実行される仮想マシン間で通信を行えるようにするには:
注:次の手順を実行する前に、仮想マシンでハードウェア バージョン 7 が使用されていることを確認してください。
- vSphere Client インベントリで仮想マシンを右クリックして、[設定の編集] を選択します。
- [ハードウェア] タブを開きます。
- VMCI デバイスを選択して、仮想マシン間で VMCI を有効化 を選択します。
- OK をクリックします。これで、同じホスト上で実行中の他の仮想マシンが、この仮想マシンと通信できるようになります。
次の行は、仮想マシン構成ファイル (.vmx) に自動的に追加されます。
vmci0.present = "TRUE"
注:VMware Tools の VMCI コンポーネントも仮想マシンにインストールする必要があります。
オプションで、次の行を .vmx ファイルに追加して、通信インターフェイスを定義することができます。
vmci0.id = "num"
注: num は、ホスト上の仮想マシンごとに固有の正整数です。つまり、どの仮想マシンに対しても数値(1、2、3 など)を選択できますが、2 つの仮想マシンがそれらの vmci0.id と同じ数値を持つことはできません。