SR-IOV 网络如何在 Ubuntu 22.04 Hyper-V 虚拟机中工作?

SR-IOV 网络如何在 Ubuntu 22.04 Hyper-V 虚拟机中工作?

使用 Windows Server 2022 作为虚拟机管理程序,我创建了两个 Ubuntu VM:一个 Ubuntu 服务器和一个桌面。以下内容基于我在 22.04 和 23.xx 上使用服务器的经验,尽管桌面操作系统似乎工作方式相似,因为我遇到了相同的问题。

由于我尚不清楚的原因,启用了 SR-IOV 的 Hyper-V 和 Ubuntu 客户机在客户机上创建了两个网络接口:一个显示 vF(Broadcom),另一个显示 Hyper-V 驱动程序。

lshw -C network

双网络接口

在启用了 SR-IOV 的 Windows VM 中,这种情况不会发生。为 Broadcom 接口创建了一个网络适配器。我唯一的猜测是,这与 Hyper-V 不知道客户操作系统是否支持它有关,因此它创建了一个将使用虚拟交换机的后备适配器。

然而,我的假设似乎不正确。我原本以为我可以简单地禁用 Ubuntu 中的 Hyper-V 网络接口 (eth0),以强制操作系统使用支持 SR-IOV 的适配器。例如ip link set eth0 down

不幸的是,这会导致网络功能完全丧失。事实上,禁用该接口会自动禁用另一个接口。即使我手动设置 Broadcom 接口,也无法 ping 任何内容。

但是,如果我禁用第二个接口enP33973s1,SR-IOV 将丢失,并且流量将通过 vSwitch 流过。

我目前正在为这两个适配器分配静态 IP。我只是不太明白这里到底发生了什么。

此设置的另一个有趣之处是,如果您告诉 Hyper-V 为该虚拟机的网卡分配一个静态 MAC 地址,则在 Ubuntu 中创建的两个接口将使用相同的 MAC。也许这就是为什么您还可以为虚拟机启用“MAC 地址欺骗”的原因?使用共享静态 MAC,我无法为此虚拟机使用 DHCP 预留。

问:为什么我需要两个适配器才能在 Ubuntu 中工作。

问:我使用哪个 IP 进行通信有关系吗?假设我想在 DNS 中设置 A 记录,它应该指向 enP339… 接口 IP 吗?还是两者都指向?

我很想说 Hyper-V 中对 Ubuntu 的 SR-IOV 支持还不够成熟,但我想我真的不明白它是如何工作的。我有点想完全切换回使用 ESXi。有人能帮我解惑吗?提前谢谢!

相关内容