Debian 服务器上虚拟客户机的互联网速度问题

Debian 服务器上虚拟客户机的互联网速度问题

我正在使用 KVM/qemu 在 Debian 主机内运行 Debian 客户机。系统上还有更多客户机(总共三个)。我设置了辅助 IP 地址,因此我不必担心端口转发等问题。不幸的是,这种设置似乎有其自身的问题。

我建立了桥接网络,主要使用本指南:https://wiki.ubuntu.com/KvmWithBridge。它在原理上是可行的,因为服务器是可访问的并且可以访问互联网,但使用网络很慢。即使服务器不忙,从服务器下载文件的速度也仅为~150 KB/s,而不是服务器能够达到的~10 MB/s(与主机和其他来宾一起测试)。上传似乎没问题,但受到我家上传速度的限制。游戏服务器,尤其是 Minecraft,有很大的延迟。我还用 ping 测试了连接,从我的家用电脑到服务器,反之亦然,数据包丢失率约为 15-20%。

其他客人没有遇到这些问题,所以我怀疑我的设置一定有错误。

ifconfig 的输出显示了很多冲突:

ens3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet <secondaryIP>  netmask 255.255.255.248  broadcast <secondaryBroadcast>
        inet6 <secondaryIP6>  prefixlen 64  scopeid 0x20<link>
        ether <secondaryMAC>  txqueuelen 1000  (Ethernet)
        RX packets 96833  bytes 56268227 (53.6 MiB)
        RX errors 0  dropped 558  overruns 0  frame 0
        TX packets 89692  bytes 93703188 (89.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 479793

这是重启后不久发生的,但即使在较长的正常运行时间内,比例仍保持在约 1:6。

主机接口的配置(/etc/network/interfaces):

auto br0
iface br0 inet static
  address <primaryIP>
  netmask 255.255.255.224
  gateway <primaryGateway>
  bridge_ports enp2s0
  bridge_stp off
  bridge_maxwait 5

iface enp2s0 inet6 static
  address <primaryIP6>
  netmask 64
  gateway fe80::1

以及访客界面:

auto ens3
iface ens3 inet static
        address <secondaryIP>
        netmask 255.255.255.248
        gateway <secondaryGateway>

两个interfaces.d文件夹中都没有接口定义。

/etc/libvirt/qemu/guest.xml中的接口配置:

<interface type='bridge'>
  <mac address='<secondaryMAC>'/>
  <source bridge='br0'/>
  <model type='rtl8139'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

最后是主机上的 ifconfig 的输出:

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet <primaryIP>  netmask 255.255.255.224  broadcast <primaryBroadcast>
    inet6 <primaryIP6>  prefixlen 64  scopeid 0x20<link>
    ether <primaryMAC>  txqueuelen 1000  (Ethernet)
    RX packets 1864843254  bytes 213533425526 (198.8 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 4441624847  bytes 564472843883 (525.7 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    ether <primaryMAC>  txqueuelen 1000  (Ethernet)
    RX packets 2467024205  bytes 288208293294 (268.4 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 5414543354  bytes 732866918235 (682.5 GiB)
    TX errors 1  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255
    ether <anotherMAC_1>  txqueuelen 1000  (Ethernet)
    RX packets 4426221535  bytes 499401359892 (465.1 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 1847079213  bytes 234714216395 (218.5 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet6 <anotherIP6_1>  prefixlen 64  scopeid 0x20<link>
    ether <anotherMAC_2>  txqueuelen 1000  (Ethernet)
    RX packets 4397127572  bytes 497903595847 (463.7 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 1834595176  bytes 223010663369 (207.6 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vnet1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet6 <anotherIP6_2>  prefixlen 64  scopeid 0x20<link>
    ether <anotherMAC_3>  txqueuelen 1000  (Ethernet)
    RX packets 29093977  bytes 63464879814 (59.1 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 41770457  bytes 13226829212 (12.3 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vnet2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
    inet6 <notQuiteSecondaryIP6>  prefixlen 64  scopeid 0x20<link>
    ether <notQuiteSecondaryMAC>  txqueuelen 1000  (Ethernet)
    RX packets 937466500  bytes 164125096519 (152.8 GiB)
    RX errors 0  dropped 0  overruns 0  frame 0
    TX packets 583314253  bytes 47334133493 (44.0 GiB)
    TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

其中主 IP 是主机的 IP,辅助 IP 是仅供我的客户机使用的附加 IP。

vnet 接口的 IP6 似乎基于它们的 MAC 地址,至少对于我的客户来说,这里仅在第一组(fe 而不是 00)中有所不同。

此设置有问题吗?我是否应该检查其他配置是否存在问题?

答案1

我将客户机的网络适配器切换为“virtio”驱动程序,这是我在其他几篇帖子中看到的建议。通过配置文件更改它不起作用(可能是我的错误),但通过 virt-manager 更改它却成功了。

现在的下载速度达到了我预期的 10 MByte/s,并且使用 Minecraft 进行的快速测试也显示出了很大的改善。

相关内容