Linux KVM 中的网络

Linux KVM 中的网络

我想知道除了使用 Linux 桥来连接两个虚拟机的接口之外是否还有其他方法?

由于我试图在虚拟机中运行私有生成树实现...连接两个虚拟机的底层 Linux 桥正在丢弃 BPDU。

VirtualBox 通过提供内部网络选项解决了该问题。

如果我使用 KVM,是否有类似的选项?

更新-01:启用 STP 最终会创建一个包含 3 个桥接器(2 个虚拟机和 1 个连接两个虚拟机的 Linux 桥接器)而不是 2 个桥接器(2 个虚拟机)的拓扑。

答案1

似乎您可以-netdev socket在这里使用 QEMU 的选项,可能 UDP 版本更适合。

-netdev vde可以工作,尽管更复杂并且需要配置 VDE 交换机守护进程。

但无论如何,我都会尝试解决 Linux 桥接的问题,启用 STP 选项,正如 @Martin 所建议的那样。这是一个简单且非常常见的设置。

答案2

您可以尝试使用 macvtap 驱动程序。请注意,这确实有一些限制 - 请务必阅读有关它的 libvirt 文档。

答案3

QEmu/KVM 提供了使用轻敲主机中的接口:

  1. 当您的主机向该接口发送以太网帧时,该帧将被发送到您的客户的接口;

  2. 当您的客户机向其接口发送以太网帧时,它将被发送到主机中的 TAP 接口。

您可以创建带有 TAP 接口的两个 VMS。现在您需要在两个 TAP 接口之间交换帧:您可以通过编写一个在接口之间转发以太网帧的程序(使用AF_PACKETSOCK_RAW套接字)来实现这一点接收帧从一个界面发送把它们传给另一个。

答案4

建议使用 TAP 设备的人是正确的,但您还需要其他东西:

首先,创建一个veth 对。这是一对虚拟接口,每个接口只是将接收到的任何流量传递给另一个接口。

接下来,通过 macvtap 将两台虚拟机中的一台连接到对中的一个 veth 接口,并将另一台虚拟机连接到另一个 veth 接口。

最后,发送一些流量。

相关内容