仮想ネットワークインターフェース(VIF)は、ネットワークインターフェースの抽象的な
仮想化表現です。VIFは、実際のネットワークインターフェースコントローラー(NIC)に直接対応する場合もあれば、そうでない場合もあります。
OSレベルでの仮想化
オペレーティングシステム(OS)の
カーネルは、通常、メモリ上に仮想ネットワークインターフェースのテーブルを保持します。これにより、システムは物理インターフェースとは独立して、あるいは直接的な物理インターフェースであるか、トンネルやブリッジインターフェースであるかに関わらず、ネットワークインターフェースの情報を格納し、動作させることができます。この仕組みにより、単一の「インターネット」を想定するよりも、ネットワーク接続に関するシステムのプロセスがより詳細な方法で相互作用することが可能になります。
W・リチャード・スティーヴンスは、著書「TCP/IP Illustrated」の第2巻で、マルチキャストルーティングに関する議論の中で
カーネルの仮想インターフェイステーブルについて触れています。例えば、マルチキャストルーターは、物理インターフェースとトンネルインターフェースで異なる動作をすることがあります。そのため、仮想インターフェースは、物理インターフェースを直接表すかどうかなど、いくつかの情報をユーザーに提供する必要があります。
一部のシステムでは、ユーザー空間アプリケーションが抽象的なネットワークインターフェース接続を参照できるようにするだけでなく、指定された帯域幅制限とキューイングモデルを使用して抽象インターフェースを階層的に細分化することで、プロセスが所定の物理インターフェースの共有を(OSのデフォルトの動作を超えて)より適切に調整できるようになります。これは、例えば、階層の制限された分岐を継承することでプロセスの制限を課すことができます。
ネットワーク抽象化のこの追加レイヤーは、必ずしも必要ではなく、わずかなパフォーマンスの低下をもたらす可能性があります。しかし、抽象化レイヤーは、パフォーマンスのボトルネックを回避したり、最適化のために
カーネルをバイパスしたりするためにも使用できます。
アプリケーションレベルでの仮想化
VIFという用語は、アプリケーションがネットワークインターフェースを
仮想化または抽象化する際にも使用されます。ほとんどの
ソフトウェアはネットワークインターフェースの詳細を気にする必要がなく、またOSを通じて抽象化がすでに利用可能な場合もあるため、この使用法は比較的まれです。
関連用語
ループバック
ネットワーク
仮想化
仮想インターフェースアーキテクチャ
仮想LANカード
参考資料
* Linux Network Interfaces (外部リンク)