家庭组网系列(2):路由器性能测试
前言 本文介绍常用的家庭网络测试方法,包括开源固件和闭源商用设备的测试。
随着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单线程下载测试示例:
如果你的路由器为闭源固件,也可以到在线测速站进行简单测试:
这些网站的测试速度随着节点的不同而有所差异,比如测试节点在北京联通而你是广东电信,会和实际差距较大。当然,还有一个简单权威的方法,就是下载一个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 层,包也会变大且加了协议头,测试的结果误差很大,因此不建议用其进行测试小包性能。
未完待续。