Linux 上丢包,但同一台机器上运行的虚拟机不会丢包!

Linux 上丢包,但同一台机器上运行的虚拟机不会丢包!

我的网络堆栈现在似乎出了问题。不确定从哪里开始调试。我有 Ubuntu 18.10,运行带有 QEMU/KVM 的 Windows 10 VM。网络桥接在一起,因此 Ubuntu 和 Windows 都显示在同一子网上。计算机本身通过以太网直接连接到调制解调器/路由器。

在 Ubuntu 18.10 上过夜运行 ping:

--- 8.8.8.8 ping statistics ---
47870 packets transmitted, 45768 received, 4.39106% packet loss, time 48161ms
rtt min/avg/max/mdev = 7.666/26.841/1089.663/29.587 ms, pipe 2

在 Windows VM 上同时运行相同的命令:

Ping statistics for 8.8.8.8:
    Packets: Sent = 47466, Received = 47453, Lost = 13 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 8ms, Maximum = 521ms, Average = 26ms

Linux端网络配置:

bridge0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.18  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::5f60:4c3c:6e7d:fe0d  prefixlen 64  scopeid 0x20<link>
        inet6 2607:f2c0:e00a:6fb:909a:d129:4ca4:5178  prefixlen 64  scopeid 0x0<global>
        inet6 2607:f2c0:e00a:6fb::4  prefixlen 128  scopeid 0x0<global>
        ether 62:e1:cd:28:fc:23  txqueuelen 1000  (Ethernet)
        RX packets 1156702  bytes 266528351 (266.5 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1321781  bytes 148373341 (148.3 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether ac:1f:6b:77:45:68  txqueuelen 1000  (Ethernet)
        RX packets 1141435  bytes 826615245 (826.6 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1136699  bytes 175653093 (175.6 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0x52300000-52320000  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 5990  bytes 445099 (445.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5990  bytes 445099 (445.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vmtap0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::60e1:cdff:fe28:fc23  prefixlen 64  scopeid 0x20<link>
        ether 62:e1:cd:28:fc:23  txqueuelen 1000  (Ethernet)
        RX packets 1182468  bytes 136243741 (136.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1480981  bytes 686427281 (686.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

答案1

0)上下文。当您进行测试时,请尽可能记住您注意到的导致您进行过夜测试的原因。把它写下来可能会有所帮助。将其编辑到问题中。至少我认为这是有原因的;为了好玩而通宵运行命令是不寻常的:-)。

0a) 贝叶斯定理。我确认这“似乎是非常错误的”。这不是一个众所周知的问题。因此请记住,您的惊讶很可能是由于您误解或在测试方法中犯了错误而引起的。

一般来说,你可以写很多更详细地了解你的问题。首先,您没有说明操作系统是什么、VM 软件、您的路由器的 LAN 连接、您的路由器所连接的 ISP 类型。或者,如果每 100 分钟,您的互联网连接就会停止工作 4 分钟:-)。

(但说实话,我也可以说,除了严格质疑你的测试方法之外,我不知道从哪里开始。)

1次。如果你把它画出来,会不会一直有丢包,或者在某些时候丢包很严重?

您还可以缩短ping间隔以获得更快的统计数据(“flood ping”左右),但您不应该对 Google 这样做(除非您为此付费:-)。而是用于traceroute 8.8.8.8查找 ISP 内的第一个或第二个 IPv4 地址。 (您的 ISP 内的第一个可能是编号为 3 的线路。 ping 时间也可以作为线索)。谨防被跟踪路由结果所迷惑;它是专家的工具。

2) 通过查看问题是否也适用于 ping 本地路由器来具体确认这有多奇怪。同时运行这两个测试,以便您进行良好的比较。 (不过,请记住,与一次运行一个结果相比,这可能会产生不同的结果)

由于您没有说您使用的是直连以太网,因此上述问题是一个非常重要的问题。通常你想要排除 Wi-Fi 异常或 ISP 异常(或者至少尝试排除它是仅有的问题的原因)。这些是家庭网络使用中最常见的两个问题来源,因此排除其中一个非常有价值。

从技术上讲,您显示eno1的可能是以太网,但您仍然可以使用像电力线网络这样奇怪的东西。

如果可能,请让其他人对您的路由器执行 ping 操作。我喜欢https://www.thinkbroadband.com/broadband/monitoring/quality 即,如果您的线路在常用工具上显示出明显的数据包丢失 - 那么可能是因为您的线路上存在数据包丢失:-)。这取决于您的路由器防火墙是否允许对其进行 ping 操作;可能有一个设置。

3)抓包即Wireshark。与 Linux 相比,Windows 生成的 ping 数据包看起来是否有所不同? (可能需要在 Windows 内运行 Wireshark,具体取决于)。我们已经预计源 IPv4 地址和源 MAC 地址会有所不同。如果确实如此,您也许可以使用各种选项稍微调整 Linux ping 数据包。

相关内容