1389 字
7 分钟
局域网内主机传输速度慢问题排查

问题#

Windows主机通过sftp向同局域网内的Ubuntu22.04主机上传文件时发现传输速度基本为0

Windows主机无线连接路由器,Ubuntu主机通过网线连接路由器。

排查过程#

iperf3 测试原始网络带宽#

两台主机分别安装iperf3

Terminal window
apt update
apt install iperf3

一台运行服务端,一台连接,我这里在192.168.0.105主机运行的服务端

Terminal window
# 运行服务端
iperf3 -s
# 另一台主机连接
iperf3 -c 192.168.0.105 -t 10 -P 4

测试结果如下:

Terminal window
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.01 sec 1.14 MBytes 954 Kbits/sec 318 sender
[ 5] 0.00-9.29 sec 1.08 MBytes 979 Kbits/sec receiver
[ 8] 0.00-10.01 sec 1.20 MBytes 1.00 Mbits/sec 333 sender
[ 8] 0.00-9.29 sec 1.13 MBytes 1.02 Mbits/sec receiver
[ 10] 0.00-10.01 sec 1.11 MBytes 928 Kbits/sec 314 sender
[ 10] 0.00-9.29 sec 1.04 MBytes 938 Kbits/sec receiver
[ 12] 0.00-10.01 sec 1.26 MBytes 1.06 Mbits/sec 340 sender
[ 12] 0.00-9.29 sec 1.19 MBytes 1.07 Mbits/sec receiver
[SUM] 0.00-10.01 sec 4.70 MBytes 3.94 Mbits/sec 1305 sender
[SUM] 0.00-9.29 sec 4.44 MBytes 4.01 Mbits/sec receiver
iperf Done.

可以发现总带宽仅 ~4 Mbps,且重传(Retr)高达1305次,网络存在严重问题

排查物理层的网卡#

先通过ifconfig查看网卡,例如我这里一台是eth0,一台是enp3s0,通过ethtool查看网卡状态(如果没有则先apt install ethtool

Terminal window
# 查看主机1网卡状态
ethtool enp3s0
# 输出如下:
Settings for enp3s0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Auto-negotiation: on
master-slave cfg: preferred slave
master-slave status: slave
Port: Twisted Pair
PHYAD: 0
Transceiver: external
MDI-X: Unknown
Supports Wake-on: pumbg
Wake-on: d
Link detected: yes

重点关注输出中的:

  • Speed: 1000Mb/s (应该是1000,而不是10或100)
  • Duplex: Full (应该是全双工)
  • Link detected: yes

另一个主机:

Terminal window
ethtool eth0
# 输出
Settings for eth0:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Current message level: 0x000000f7 (247)
drv probe link ifdown ifup rx_err tx_err
Link detected: yes

可以发现网卡并没有故障,问题的主要原因并不是网卡

更换网线#

更换一根新的网线,再次通过iperf3测速,发现速度还是很低,那么主要原因也不是网线

同时通过网线连接路由器#

网线和网卡都没有问题,那么有理由怀疑是路由器的问题了,目前使用的习惯是在公司中的习惯:

即笔记本连接Wifi,然后访问局域网中主机的共享文件夹(ftp)

公司中通常是企业级方案,是否应该怀疑是路由器瓶颈了,无法像在公司中那样以较高的速度传输大文件

经过实测,两台主机都通过网线连接路由器,再次使用iperf3测速,结果如下:

Terminal window
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 240 MBytes 202 Mbits/sec 0 sender
[ 5] 0.00-9.95 sec 240 MBytes 202 Mbits/sec receiver
[ 8] 0.00-10.00 sec 297 MBytes 249 Mbits/sec 0 sender
[ 8] 0.00-9.95 sec 297 MBytes 250 Mbits/sec receiver
[ 10] 0.00-10.00 sec 296 MBytes 249 Mbits/sec 0 sender
[ 10] 0.00-9.95 sec 296 MBytes 249 Mbits/sec receiver
[ 12] 0.00-10.00 sec 279 MBytes 234 Mbits/sec 0 sender
[ 12] 0.00-9.95 sec 279 MBytes 235 Mbits/sec receiver
[SUM] 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec 0 sender
[SUM] 0.00-9.95 sec 1.09 GBytes 938 Mbits/sec receiver

这次速度跑满千兆带宽了

问题原因#

数据转发路径完全不同

  1. 两台设备都通过网线连接(有线↔有线)
    • 数据路径:PC1(有线) -> 路由器的交换机芯片 -> PC2(有线)
    • 硬件处理:现代家用路由器的有线LAN口通常由一个内置的高速交换机芯片直接管理。这个芯片专门为高速有线数据交换而设计。
  2. 一台有线、一台无线(有线↔无线)
    • 数据路径:PC1(有线) -> 路由器的交换机芯片 -> 路由器的中央处理器(CPU) -> 路由器的无线芯片(Wi-Fi Radio) -> PC2(无线)
    • 硬件处理:数据必须从交换机芯片出来,交给路由器的CPU进行处理,再由CPU指令无线芯片将数据发送出去。这个过程完全依赖于软件的“桥接”功能,无法使用高效的硬件交换

打个比方:

  • 有线↔有线:就像在两个办公室之间修建了一条直达高速公路,车流畅通无阻
  • 有线↔无线:就像车辆下了高速公路后,必须进入一个繁忙的、只有一个收费亭的市区环岛,所有车都要在这个环岛里排队、等待CPU这个“收费员”处理,才能驶向目的地(无线端)。这个环岛就是最大的瓶颈。

尝试复现#

将笔记本的网线拔掉,恢复成wifi连接路由器,查看链接速度为1000Mbps,没有问题,再次通过iperf3测速,速度仍接近于0,问题稳定复现,确实是一个无线连接一个有线连接的问题

更多疑问#

  1. 如果两台电脑都是Windows,一台无线连接到路由器,一台有线连接到路由器,还会这么慢吗?

  2. 那么如果是NAS通过网线连接路由器,然后笔记本通过Wifi连接路由器,向NAS中上传文件也会这么慢吗?我猜不会,目前手里没有相关的设备,留着后续有机会再搞清楚。

局域网内主机传输速度慢问题排查
https://fuwari.cbba.top/posts/局域网内主机传输速度慢问题排查/
作者
Chen_Feng
发布于
2025-08-22
许可协议
CC BY-NC-SA 4.0