1389 字
7 分钟
局域网内主机传输速度慢问题排查
问题
Windows主机通过sftp向同局域网内的Ubuntu22.04主机上传文件时发现传输速度基本为0
Windows主机无线连接路由器,Ubuntu主机通过网线连接路由器。
排查过程
iperf3
测试原始网络带宽
两台主机分别安装iperf3
:
apt updateapt install iperf3
一台运行服务端,一台连接,我这里在192.168.0.105
主机运行的服务端
# 运行服务端iperf3 -s
# 另一台主机连接iperf3 -c 192.168.0.105 -t 10 -P 4
测试结果如下:
[ 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
)
# 查看主机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
另一个主机:
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
测速,结果如下:
[ 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
这次速度跑满千兆带宽了
问题原因
数据转发路径完全不同
- 两台设备都通过网线连接(有线↔有线)
- 数据路径:PC1(有线) -> 路由器的交换机芯片 -> PC2(有线)
- 硬件处理:现代家用路由器的有线LAN口通常由一个内置的高速交换机芯片直接管理。这个芯片专门为高速有线数据交换而设计。
- 一台有线、一台无线(有线↔无线)
- 数据路径:PC1(有线) -> 路由器的交换机芯片 -> 路由器的中央处理器(CPU) -> 路由器的无线芯片(Wi-Fi Radio) -> PC2(无线)
- 硬件处理:数据必须从交换机芯片出来,交给路由器的CPU进行处理,再由CPU指令无线芯片将数据发送出去。这个过程完全依赖于软件的“桥接”功能,无法使用高效的硬件交换
打个比方:
- 有线↔有线:就像在两个办公室之间修建了一条直达高速公路,车流畅通无阻
- 有线↔无线:就像车辆下了高速公路后,必须进入一个繁忙的、只有一个收费亭的市区环岛,所有车都要在这个环岛里排队、等待CPU这个“收费员”处理,才能驶向目的地(无线端)。这个环岛就是最大的瓶颈。
尝试复现
将笔记本的网线拔掉,恢复成wifi连接路由器,查看链接速度为1000Mbps,没有问题,再次通过iperf3
测速,速度仍接近于0,问题稳定复现,确实是一个无线连接一个有线连接的问题
更多疑问
-
如果两台电脑都是Windows,一台无线连接到路由器,一台有线连接到路由器,还会这么慢吗?
-
那么如果是NAS通过网线连接路由器,然后笔记本通过Wifi连接路由器,向NAS中上传文件也会这么慢吗?我猜不会,目前手里没有相关的设备,留着后续有机会再搞清楚。
局域网内主机传输速度慢问题排查
https://fuwari.cbba.top/posts/局域网内主机传输速度慢问题排查/