可用的网络带宽在虚拟机之间如何分配?

可用的网络带宽在虚拟机之间如何分配?

划分带宽的一种方式可能取决于 CPU,这意味着每个虚拟机在获得 CPU 周期时都有机会使用 NIC。但现在我们有许多其他方式在各个虚拟机之间共享同一个 NIC,其中 CPU 根本不起作用,数据包直接复制到虚拟机内存空间(例如:使用 DPDK 库或使用 SR-IOV 等)。

您能否解释一下如何在各个虚拟机之间分配总可用网络带宽,以及如何确保一个虚拟机不会干扰其他虚拟机(就网络带宽而言)?

修改 1:我对概念更感兴趣,而不是对特定的虚拟机管理程序更感兴趣。事实上,任何能解决问题的方法对我来说都足够了。

答案1

我认为你可能想错了。

当您拥有多个虚拟机时,网络设备就像一座桥梁(或路由器),因此它只是像交换机一样将数据放到网络上来处理 - 它不执行 QoS 或数据包控制。

其传输效率在某种程度上取决于所使用的虚拟 NIC 驱动程序 - 简而言之,这一切都发生在 TCP/IP 级别之下。

您可以在主机上实施数据包整形、QOS、不同的路由策略等(如果使用 Linux,您还可以使用 ebtables、vlans 等)或上游路由器,并且大概您可以强制 NICS 进入 10 兆位或 100 兆位和/或半双工模式以粗略地限制性能,但在大多数情况下,它是一个先到先得的系统 - 与非管理型交换机相同。

简而言之,除非是商业模式,否则通常不会对单个虚拟机施加限制,在这种情况下,您可以将其放在路由器后面来处理它,或者将主机变成路由器。请记住,每个虚拟机上的每个虚拟网卡都有自己的 MAC 地址,因此您可以在那里进行一些控制 - 尽管我确信这可以被颠覆。如果您需要防止它被颠覆,您可能需要创建单独的桥接器 - 可能在单独的 VLAN 上将虚拟机彼此隔离,然后管理它们。

相关内容