Files
My-Blog/content/Network-homenet-2.md
2025-08-25 13:03:43 +08:00

4.4 KiB
Raw Permalink Blame History

+++ title = "家庭组网系列(2):路由器性能测试" date = 2025-01-22

[taxonomies] tags = ["Network"] +++

前言 本文介绍常用的家庭网络测试方法,包括开源固件和闭源商用设备的测试。

随着Wi-Fi7设备的逐渐普及和家用路由器的性能提升百元以内的wifi6路由器性价比变得非常高可以用非常少的预算搭建高速网络然而即使是同样的方案各家路由器的实际体验却不一致因此这里记载一些测试路由器性能的方法。

开源固件如OpenWrt无论是软路由还是硬路由都很方便测试。为了方便测试我们假设你的网络拓扑为简单的光猫+无线路由器;实际使用中自上而下的,运营商的套餐带宽/限速/QOS设备的转发性能和网线/网卡的质量都会引起整个网络的波动。

性能指标

指标 含义
吞吐量Throughput 最大数据传输速度
延迟 / 抖动 延迟和波动情况
转发性能 / pps 每秒能转发多少数据包
并发连接数 同时建立多少TCP连接
NAT / 防火墙性能 打开转发、NAT、规则后的性能

带宽

带宽,也叫吞吐量,是我们最为关心的一个性能指标之一。

理论上1000兆宽带的极限下载速度为125MB每秒实际上日常生活中少有跑满带宽的使用情况毕竟商用服务器的带宽成本高比如B站的视频降码率等等。对于极客玩家来说内网文件共享游戏串流NAS服务和外网多线程下载BT下载等等需要比较高的带宽性能。以下是一些常见的测试方法

开源固件可以使用iperf3来测试。

在路由器A上和设备B上安装iperf3,openwrt为opkg install iperf3随后在A上使用命令iperf3 -s开启服务端在B上使用命令iperf3 -c <A的IP>,即可测试B到A的TCP单线程上传速率(本地带宽)应该和A的物理端口速率相近。若要测试下载速率iperf3 -c <A的IP> -R即可。

TCP单线程下载测试示例 iperf3.webp

如果你的路由器为闭源固件,也可以到在线测速站进行简单测试:

这些网站的测试速度随着节点的不同而有所差异比如测试节点在北京联通而你是广东电信会和实际差距较大。当然还有一个简单权威的方法就是下载一个Steam上的大型游戏Steam的节点在任何国家基本都可以跑满。

延迟与抖动

简单的ping命令即可测试延迟对网络排除故障很有帮助。ping命令是一个广泛使用的命令在各种系统上都有。

使用ping <目标IP> -c 20命令进行测试可以看到min/avg/max三个值即为最小/平均/最大延迟;

ping

也可以使用iperf3来测试UDP抖动使用命令iperf3 -c <server_ip> -u -b 100M -t 10-u表示使用udp-100M表示使用100兆带宽可逐渐调高并接近极限性能。

iperf3-udp

转发

路由器的CPU作为核心需要处理外网与内网IP的转发这种转发能力称为包转发率通常拿小包的转发率来衡量能力的高低。测试“小包转发能力”其实就是测试 PPSPackets Per Second能力,在x86软路由上面这个性能尤为重要因为无线路由器有硬件级别的加速芯片而软路由没有。

以单位时间内发送64byte的数据包最小包的个数作为计算基准的。对于千兆以太网来说计算方法如下1000000000bps/8bit/64812byte=1,488,095pps,说明当以太网帧为64byte时需考虑8byte的帧头和12byte的帧间隙的固定开销。故一个线速的千兆以太网端口在转发64byte包时的包转发率为1.488Mpps

测试转发性能需要发包-转发-收包三台设备或者使用环回测试仪。由于iperf3 处于 TCP/UDP 层,包也会变大且加了协议头,测试的结果误差很大,因此不建议用其进行测试小包性能。


未完待续。