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

90 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
+++
title = "家庭组网系列(2):路由器性能测试"
date = 2025-01-22
[taxonomies]
tags = ["Network"]
+++
前言 本文介绍常用的家庭网络测试方法,包括开源固件和闭源商用设备的测试。
<!-- more -->
随着Wi-Fi7设备的逐渐普及和家用路由器的性能提升百元以内的wifi6路由器性价比变得非常高可以用非常少的预算搭建高速网络然而即使是同样的方案各家路由器的实际体验却不一致因此这里记载一些测试路由器性能的方法。
开源固件如OpenWrt无论是软路由还是硬路由都很方便测试。为了方便测试我们假设你的网络拓扑为简单的光猫+无线路由器;实际使用中自上而下的,运营商的套餐带宽/限速/QOS设备的转发性能和网线/网卡的质量都会引起整个网络的波动。
## 性能指标
| 指标 | 含义 |
| --------------- | --------------- |
| 吞吐量Throughput | 最大数据传输速度 |
| 延迟 / 抖动 | 延迟和波动情况 |
| 转发性能 / pps | 每秒能转发多少数据包 |
| 并发连接数 | 同时建立多少TCP连接 |
| NAT / 防火墙性能 | 打开转发、NAT、规则后的性能 |
## 带宽
带宽,也叫吞吐量,是我们最为关心的一个性能指标之一。
理论上1000兆宽带的极限下载速度为125MB每秒实际上日常生活中少有跑满带宽的使用情况毕竟商用服务器的带宽成本高比如B站的视频降码率等等。对于极客玩家来说内网文件共享游戏串流NAS服务和外网多线程下载BT下载等等需要比较高的带宽性能。以下是一些常见的测试方法
开源固件可以使用[iperf3](https://github.com/esnet/iperf)来测试。
在路由器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](/images/iperf3.webp)
如果你的路由器为闭源固件,也可以到在线测速站进行简单测试:
- [测速网:speedtest.cn](https://www.speedtest.cn/)
- [中国科学技术大学测速网站](https://test.ustc.edu.cn/)
- [Netflix运营的fast.com](fast.com)
- [Openspeedtest](https://openspeedtest.com/)
- [Cloudflare测速](https://speed.cloudflare.com/)
这些网站的测试速度随着节点的不同而有所差异比如测试节点在北京联通而你是广东电信会和实际差距较大。当然还有一个简单权威的方法就是下载一个Steam上的大型游戏Steam的节点在任何国家基本都可以跑满。
## 延迟与抖动
简单的ping命令即可测试延迟对网络排除故障很有帮助。ping命令是一个广泛使用的命令在各种系统上都有。
使用``ping <目标IP> -c 20``命令进行测试可以看到min/avg/max三个值即为最小/平均/最大延迟;
![ping](/images/ping.webp)
也可以使用iperf3来测试UDP抖动使用命令``iperf3 -c <server_ip> -u -b 100M -t 10``-u表示使用udp-100M表示使用100兆带宽可逐渐调高并接近极限性能。
![iperf3-udp](/images/iperf3-udp.webp)
## 转发
路由器的CPU作为核心需要处理外网与内网IP的转发这种转发能力称为包转发率通常拿小包的转发率来衡量能力的高低。测试“小包转发能力”其实就是测试 PPSPackets Per Second能力,在x86软路由上面这个性能尤为重要因为无线路由器有硬件级别的加速芯片而软路由没有。
> 以单位时间内发送64byte的数据包最小包的个数作为计算基准的。对于千兆以太网来说计算方法如下1000000000bps/8bit/64812byte=1,488,095pps,说明当以太网帧为64byte时需考虑8byte的帧头和12byte的帧间隙的固定开销。故一个线速的千兆以太网端口在转发64byte包时的包转发率为1.488Mpps
测试转发性能需要发包-转发-收包三台设备或者使用环回测试仪。由于iperf3 处于 TCP/UDP 层,包也会变大且加了协议头,测试的结果误差很大,因此不建议用其进行测试小包性能。
---
未完待续。