これらのメソッドは、根本的に異なることを行っています。その理由を理解するには、ネットワークの階層化モデルを理解する必要があります。ここでは、レイヤー1、2、3が重要です。
- レイヤー1は物理層です-これは、使用できるケーブル、そのケーブルの1と0を表す電圧/電流パターン、ケーブルの両端のデバイスが動作するビットレートをネゴシエートする方法などを指定します。
- レイヤー2はリンクレイヤーです-これは、ケーブルの各端でどの言語のものが互いに通信するかを指定します。この層のイーサネットデバイスには、フレームやMACアドレスなどがあります。
- レイヤー3はネットワークレイヤーです-これは、デバイスが別のデバイスへの直接のレイヤー2リンクを使用して、レイヤー2で直接到達できない3番目のデバイスに到達する方法を指定します。このレイヤーのデバイスにはIPアドレスとルーティングテーブルがあります。
MACVLAN / MACVTAP
MACVLANは、独自のMACアドレスを持つ仮想レイヤー2またはリンクレイヤーデバイスを作成し、レイヤー1または物理レイヤーを既存のデバイスと共有します。最も明らかに理解できるケースは、イーサネットデバイスをネットワークに接続し、そのイーサネットデバイスに基づいてMACVLANデバイスを作成する場合です。これで、異なるMACアドレスを持つ2つのイーサネット「デバイス」がありますが、どちらも同じケーブルでフレームを送信します。MACVTAPについてもう少し詳しく説明します。
MACVLANインターフェースは、特に他のインターフェースのアドレスであるインターフェースの1つにフレームが表示される場合、既存のイーサネットインターフェースといくつかの異なる方法で対話できます。
- でプライベートモードでは、フレームが捨てられています。2つのインターフェイスが外部デバイスとのみ通信することはできません。
- VEPAモードでは、フレームは他のフレームのような物理層を介して送信されます。デバイスがスイッチに接続されていて、フレームが到着した同じポートに送り返される必要があることを発見するのに十分賢い場合、それを送信したのと同じ物理層が受信し、レイヤー2はMACを使用して、目的のネットワークインターフェイスに送信します。
- でブリッジフレームは、一つのデバイスに表示されたときのモード、他のためのものであり、もしそうなら、それはレイヤ1を経由せずにそこに送信されたかどうかチェックされます。
- さらにいくつかの不明瞭なモードがあります。
MACVLANインターフェイスには重要な制限があることに注意してください。アドレス学習はできません。そのため、MACVLANインターフェイスを2番目の物理デバイスにブリッジして、最初の物理デバイスを介してその2番目の物理デバイスに到達できるとは期待できません。これは元のイーサネットインターフェイスで機能しますが、MACVLANインターフェイスが接続されている場合は機能しません。
TUN / TAP
TAPインターフェースも新しい仮想レイヤー2デバイスですが、レイヤー1は接続されていません。代わりに、プログラムは物理層を表すファイル記述子を取得できます。その後、生のイーサネットフレームデータをそのファイル記述子に書き込むことができ、カーネルはそれを実際の物理インターフェースで受信する他のイーサネットパケットと同様に扱います。
TAPインターフェースの大きな特徴は、物理層がユーザーモードになっていることです。適切な許可を持つソフトウェアのビットは、好きな方法でイーサネットフレームを生成し、カーネルが実際の物理インターフェースと同じように扱うものに押し込むことができます。これにより、VPNやトンネリングなどに非常に役立ちます。ユーザー空間に好きな種類のトンネリングソフトウェアを書くことができ、フレームをネットワークスタックに入れるためにカーネル空間に干渉する必要はありません。TAPデバイスを作成し、そのファイル記述子にフレームを書き込むだけです。
TUNデバイスはTAPデバイスに似ていますが、レイヤー2ではなくレイヤー3で動作し、ユーザーモードソフトウェアは生のイーサネットフレームではなく生のIPパケットをファイル記述子に書き込む必要があります。
MACVTAPデバイスに戻ると、これらはMACVLANとTAPインターフェース間の混同のようなものです。TAPインターフェイスと同様に、ユーザーモードプログラムはファイル記述子を取得して、そこに生のイーサネットフレームを書き込むことができます。MACVLANインターフェイスと同様に、これらのフレームは実際のイーサネットデバイスの物理層を介して送信されます。これにより、TAPデバイスを使用するように作成されたソフトウェアを簡単に調整して、代わりにMACVLANデバイスを使用できます。
VNet
これは概念的にはTUN / TAPネットワーキングに似ていますが、より高度なコントロールプレーン(それを使用するユーザーモードソフトウェアがインターフェイスをより柔軟に構成できるようになっています)およびより最適化されたデータプレーン(仮想ネットワークデバイスを介してデータを移動できるようになっています)効率的に)。
これらはすべて同様のことを行いますが、機能がわずかに異なります。それらはすべて、VMをイーサネットネットワークに接続するために使用できます。
- 仮想化製品は、ゲストからイーサネットフレームを取得して、TAPデバイスのファイル記述子に書き込むことができます。そのTAPデバイスには、ホストが独自のIPアドレスを割り当てるか、イーサネットインターフェイスとともにブリッジにスレーブ接続してホストのIPアドレスを共有したり、NATを使用してトラフィックを転送するようにiptablesを構成したりできます。
- 仮想化製品は、ゲストからのイーサネットフレームをMACVTAPデバイスのファイル記述子に書き込むことができます。これらはイーサネットデバイスの物理層で直接送信され、VMに「実際の」イーサネットデバイスを効果的に提供します(ただし、ブリッジなどの他のタイプのネットワークインターフェース用にMACVLAN / MACVTAPデバイスを作成できることに注意してください)。
- 仮想化製品は、ゲストのvirtioドライバーをホストのvirtioドライバーに接続して、非常に効率的なネットワーキングを実現できます。