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_PACKET,SOCK_RAW套接字)來完成此操作:接收訊框從一個介面和傳送他們給另一個人。

答案4

建議使用 TAP 設備的人是在正確的軌道上,但您還需要其他東西:

首先,創建一個veth對。這是一對虛擬接口,每個接口僅將其接收到的任何流量傳遞給另一個虛擬接口。

接下來,透過 macvtap 將兩個虛擬機器之一連接到該對中的一個 veth 接口,並將另一個虛擬機器連接到另一個 veth 接口。

最後,發送一些流量。

相關內容