记一次局域网文件传输速度瓶颈排查

AI大语言模型

单板机使用超5类网线连接路由器百兆端口,路由器连接光猫千兆端口,笔记本通过Wifi连接路由器。

单板机和笔记本都安装iperf3:

sudo apt install iperf3

单板机执行:

iperf3 -s

如果单板机配置了防火墙,需要放行5201端口:

sudo ufw allow 5201/tcp

笔记本执行以下命令(IP为单板机地址):

iperf3 -c 192.168.1.8 -t 30

测试结果吞吐速率在10-15Mbps之间,明显不正常。

使用ifconfig查看Wifi设备名称:

sudo apt install net-tools
ifconfig

使用ethtool查看有线网卡链路速率:

sudo apt install ethtool
sudo ethtool end0 | grep Speed

使用iw查看无线网卡链路速率:

iw dev wlp4s0 link | grep bitrate

单板机的链路速率10Mb/s,笔记本的链路速率是72Mb/s。所以怀疑网线质量问题,更换后单板机的链路速率达到100Mb/s,iperf3测试达到了32Mbps左右。

台式电脑通过网线连接光猫百兆端口,与单板机不在同一网段。偶然需要使用台式电脑连接单板机,只得开启路由器AP模式,发现台式电脑的传输速率接近100Mbps。

笔记本是10多年前的老产品了,只支持2.4G频段,查看链路速率只有72Mbps,吞吐速率只有32Mbps是因为Wifi工作在半双工模式外加损耗。

手机连接Wifi 5G频段,速率433Mbps,说明手机是1×1 MIMO单空间流。开启AP后目测局域网内下载文件速度比之前快一些。

我的路由器也是非常老的产品了,性能应该是弱于光猫的,因此,开启AP后应该有所提升。如果路由器性能本身比较好则不建议开启AP模式。

2025年12月21日补充

本本的Wifi模块突然挂了,拆开将Wifi模块的金手指用橡皮擦擦干净,发现链路速率达到了150Mbps,于是又折腾了一下。

查看路由器2.4G频段Wifi当前频宽为40MHz,不过在附近Wifi干扰下必然会降回20MHz。如果在路由器中强制频宽40MHz,可能在附近Wifi干扰下会出现丢包、掉线的情况。所以,选择用户最少的信道是关键。

查看无线链路协商情况:

iw dev wlp4s0 link

结果如下:

SSID: BeiZiGen
	freq: 2412
	RX: 531435 bytes (1194 packets)
	TX: 213156 bytes (665 packets)
	signal: -33 dBm
	rx bitrate: 65.0 MBit/s MCS 7
	tx bitrate: 72.2 MBit/s MCS 7 short GI
	bss flags:	short-slot-time
	dtim period: 1
	beacon int:	100
  • SSID:网络名称;
  • freq:当前连接的频率(MHz);
  • RX:从 AP 收到的数据量;
  • TX:发给 AP 的数据量;
  • signal:信号强度:-30 dBm(极强), -80 dBm(很差);
  • rx bitrate / tx bitrate:当前链路的真实速率,重点关注参数;
  • bss flags:AP 是否启用了保护机制?
    • short-slot-time:正常,表示 802.11g/n 模式;
    • CTS-protection:AP 启用了 CTS-to-Self 或 RTS/CTS 保护机制,会自动降频;
    • HT-protection:AP 检测到 legacy 设备或干扰,会导致降速;
    • short-preamble:AP 使用短前导码,性能更好。
  • dtim period:AP 广播 DTIM 的周期,1 是正常;
  • beacon int:Beacon 间隔,100ms 是标准值。

扫描附近Wifi筛选最优信道:

nmcli dev wifi

结果如下:

IN-USE  BSSID  SSID            MODE   CHAN  RATE        SIGNAL  BAR>
*         	   BeiZiGen        Infra  11    270 Mbit/s  100     ▂▄▆>
               ap-bridge-A-73  Infra  6     65 Mbit/s   60      ▂▄▆>
               ChinaNet-5-1    Infra  11    130 Mbit/s  52      ▂▄_>
               TP-LINK_6741    Infra  1     405 Mbit/s  44      ▂▄_>
               ChinaNet-5-1    Infra  11    130 Mbit/s  42      ▂▄_>
  • IN-USE:当前自己连接的Wifi;
  • BSSID:MAC地址;
  • SSID:网络名称;
  • MODE:模式:Infra(基站模式,正常路由器),Ad-Hoc(点对点模式);
  • CHAN:Wifi所在信道;
  • RATE:AP 广播的最大支持速率;
  • SIGNAL:信号强度;
  • BAR:图形化的信号强度;

从结果可以看出,信道11除了自己还有两个设备(虽然名称相同,但MAC地址不同);信道1虽然只有1个,但速率405 Mbit/s,信号强度也不弱,干扰比较大;信道6虽然信号强,但65 Mbit/s的速率说明是老旧设备。

2.4G频段可用信道有1、6、11,所以,根据之前的测试结果,最终选择了信道6。

2.4G频段可用信道太少、干扰大,扩频后反而更慢,所以频宽设置为20/40MHz。

5G频段信道多、干扰少,扩频能显著提升吞吐,所以频宽选择固定最大值,而不是自动切换。

AI大语言模型