# 家庭组网系列(2):路由器性能测试

2025-01-22
:: 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单线程下载测试示例：

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

- 测速网:speedtest.cn
- 中国科学技术大学测速网站
- Netflix运营的fast.com
- Openspeedtest
- Cloudflare测速

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

## 延迟与抖动

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

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

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

## 转发

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

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

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

未完待续。

Thanks for reading! Read other posts?

← 家庭组网系列(1):方案与设备选购 乱七八糟:Ventoy战斗盘部署 →