Linux KVM でのネットワーク

Linux KVM でのネットワーク

2 つの仮想マシンのインターフェースを相互接続するために Linux ブリッジを使用する以外の方法があるかどうかを知りたいです。

仮想マシンでプライベート スパニング ツリー実装を実行しようとしているため、両方の仮想マシンを接続する基盤となる Linux ブリッジが BPDU をドロップしています。

VirtualBox は、内部ネットワーク オプションを提供することでこの問題を解決します。

KVM を使用する場合、同様のオプションはありますか?

アップデート-01:STP を有効にすると、2 つのブリッジ (2 つの VM) ではなく、3 つのブリッジ (2 つの VM と、両方の VM を接続する 1 つの Linux ブリッジ) を含むトポロジが作成されます。

答え1

ここではQEMU のオプションを使用できるようです-netdev socketが、おそらく UDP バージョンの方が適しているでしょう。

動作する可能性はあります-netdev vdeが、より複雑で、VDE スイッチ デーモンを構成する必要があります。

しかし、@Martin が提案したように、STP オプションを有効にして Linux ブリッジの問題を克服しようとします。これはシンプルで非常に一般的な設定です。

答え2

macvtap ドライバーの使用を試すこともできます。ただし、これにはいくつかの制限がありますので、必ず libvirt のドキュメントをお読みください。

答え3

QEmu/KVMは、タップホストのインターフェース:

  1. ホストがこのインターフェースにイーサネット フレームを送信すると、ゲストのインターフェースに送信されます。

  2. ゲストがイーサネット フレームをそのインターフェイスに送信すると、そのフレームはホストの TAP インターフェイスに送信されます。

両方のVMSをTAPインターフェースで作成できます。次に、2つのTAPインターフェース間でフレームを交換する必要があります。これは、インターフェース間でイーサネットフレームを転送するプログラム(ソケットを使用)を作成することで実現できる可能性がありAF_PACKETますSOCK_RAW受信フレーム1つのインターフェースから送信それらをもう一方に移します。

答え4

TAP デバイスを提案した人たちは正しい方向に進んでいますが、他にも必要なものがあります。

まず、ベスペアこれは仮想インターフェースのペアであり、それぞれが受信したトラフィックを他方に渡すだけです。

次に、2 つの VM のうちの 1 つを macvtap 経由でペアの veth インターフェイスの 1 つに接続し、もう 1 つの VM をもう 1 つの veth インターフェイスに接続します。

最後に、トラフィックを送信します。

関連情報