first commit
This commit is contained in:
@@ -0,0 +1,276 @@
|
||||
**iperf3 是最常用的网络吞吐测试工具之一,可以在两台设备之间通过“客户端 ↔ 服务端”产生测试流量,测出链路的:**
|
||||
|
||||
* **TCP 吞吐(带宽上限、拥塞、窗口等)**
|
||||
* **UDP 吞吐 + 丢包 + 抖动(jitter)**
|
||||
* **单向/反向/双向**
|
||||
* **多连接并发能力**
|
||||
* **长时间稳态、突发等**
|
||||
|
||||
> **一句话原理**:一台机器跑 `iperf3 -s` 当服务端;另一台跑 `iperf3 -c <server_ip>` 当客户端。 **在 fnOS 上最推荐用 Docker 跑服务端。**
|
||||
|
||||
0\. 推荐方案
|
||||
--------
|
||||
|
||||
* **推荐**:fnOS(飞牛 NAS)用 **Docker 部署 iperf3 Server**
|
||||
* **优点:一键、干净、升级方便**
|
||||
* **备选**:如果你已有 SSH 权限,也可以在 fnOS 终端里直接安装 iperf3
|
||||
|
||||
* * *
|
||||
|
||||
1\. 方案 A:Docker 在 fnOS 上部署 iperf3 服务端(推荐)
|
||||
-----------------------------------------
|
||||
|
||||
### 1.1 图形界面部署(最简单)
|
||||
|
||||
1. **打开 fnOS 的** **Docker** 应用
|
||||
2. **进入** **镜像仓库/镜像管理**
|
||||
3. **搜索** `iperf3`
|
||||
4. **选择镜像(例如** `networkstatic/iperf3`)并下载
|
||||
5. **创建容器:**
|
||||
* **网络模式**:建议 `host`
|
||||
* \*\*或者端口映射 \*\*`5201:5201`
|
||||
* **启动命令/command**:`-s`(server 模式)
|
||||
6. **启动容器后,日志里看到:**
|
||||
* `Server listening on 5201` **说明服务端已就绪**
|
||||
|
||||
> **为什么建议 host?** \*\* \*\*避免端口映射、NAT 或容器网络限制导致测速偏差。
|
||||
|
||||
* * *
|
||||
|
||||
### 1.2 Docker Compose 部署(喜欢 compose 的同学)
|
||||
|
||||
在 fnOS 的 compose/stack 面板里新建:
|
||||
|
||||
```null
|
||||
services:
|
||||
iperf3:
|
||||
image: networkstatic/iperf3:latest
|
||||
container_name: iperf3
|
||||
command: -s
|
||||
network_mode: host
|
||||
restart: unless-stopped
|
||||
|
||||
```
|
||||
|
||||
保存并启动即可。
|
||||
|
||||
### 1.3 端口/防火墙说明
|
||||
|
||||
* **iperf3 默认监听:5201/TCP + 5201/UDP**
|
||||
* **如果 NAS 有防火墙/安全策略,记得放行端口**
|
||||
* ****也可以换端口:****
|
||||
|
||||
**服务端:**
|
||||
|
||||
```null
|
||||
iperf3 -s -p 6000
|
||||
|
||||
```
|
||||
|
||||
**客户端:**
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -p 6000
|
||||
|
||||
```
|
||||
|
||||
* * *
|
||||
|
||||
2\. 方案 B:SSH 进 fnOS 直接安装(有终端权限时)
|
||||
--------------------------------
|
||||
|
||||
**如果你已开启 SSH(fnOS 系统设置可开),终端里尝试:**
|
||||
|
||||
```null
|
||||
# Debian/Ubuntu 系
|
||||
sudo apt update
|
||||
sudo apt install iperf3
|
||||
|
||||
# CentOS/RHEL 系
|
||||
sudo yum install iperf3
|
||||
|
||||
```
|
||||
|
||||
**如果包管理不可用或装不上,回到 Docker 方案即可(最稳)。**
|
||||
|
||||
* * *
|
||||
|
||||
3\. NAS 当服务端,客户端怎么测
|
||||
-------------------
|
||||
|
||||
### 3.1 fnOS/NAS 上启动 server
|
||||
|
||||
* \*\*Docker 方式已经 \*\*`-s` 就不用再管
|
||||
* **命令行方式:**
|
||||
|
||||
```null
|
||||
iperf3 -s
|
||||
|
||||
```
|
||||
|
||||
* * *
|
||||
|
||||
### 3.2 客户端测速(任何 PC/服务器/路由器)
|
||||
|
||||
**最基础 TCP 上行(客户端 → NAS):**
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP>
|
||||
|
||||
```
|
||||
|
||||
* * *
|
||||
|
||||
4\. 飞牛 NAS 场景下常用测速方式
|
||||
--------------------
|
||||
|
||||
\*\*下面所有命令都在 \*\***客户端** 执行。
|
||||
|
||||
### 4.1 测上行 TCP(Client → NAS)
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -t 30 -i 1
|
||||
|
||||
```
|
||||
|
||||
* `-t 30` 测 30 秒(默认 10 秒)
|
||||
* `-i 1` 每秒输出一次(看波动)
|
||||
|
||||
* * *
|
||||
|
||||
### 4.2 测下行 TCP(NAS → Client)
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -R -t 30 -i 1
|
||||
|
||||
```
|
||||
|
||||
`-R` 表示反向测试(server 发 → client 收)。
|
||||
|
||||
* * *
|
||||
|
||||
### 4.3 多并发 TCP(测跑满能力)
|
||||
|
||||
**在 2.5G/10G 或高延迟链路下,单流可能跑不满,用多流:**
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -P 8 -t 30 -i 1
|
||||
|
||||
```
|
||||
|
||||
`-P` = 并发流数量。
|
||||
|
||||
* * *
|
||||
|
||||
### 4.4 双向同时测(上行 + 下行)
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> --bidir -t 30 -i 1
|
||||
|
||||
```
|
||||
|
||||
**适合验证全双工链路或 NAT/防火墙策略。**
|
||||
|
||||
* * *
|
||||
|
||||
### 4.5 UDP 测吞吐 + 丢包 + jitter(常用于 Wi-Fi / 实时业务)
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -u -b 300M -l 1400 -t 30 -i 1
|
||||
|
||||
```
|
||||
|
||||
* `-u` 使用 UDP
|
||||
* `-b 300M` 目标速率(UDP **必须指定**)
|
||||
* `-l 1400` 包长(避免超过 MTU 分片)
|
||||
|
||||
* * *
|
||||
|
||||
### 4.6 UDP 找上限(压到开始丢包)
|
||||
|
||||
**从小到大逐步加速率,例如:**
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -u -b 500M -l 1400 -t 20 -i 1
|
||||
|
||||
```
|
||||
|
||||
**当丢包明显上升、jitter 飙升,即接近链路上限。**
|
||||
|
||||
* * *
|
||||
|
||||
### 4.7 长时间稳态(看是否降速/抖动)
|
||||
|
||||
```null
|
||||
iperf3 -c <NAS_IP> -t 300 -i 5
|
||||
|
||||
```
|
||||
|
||||
**测 5 分钟,每 5 秒一报。**
|
||||
|
||||
* * *
|
||||
|
||||
5\. 结果怎么看
|
||||
---------
|
||||
|
||||
### 5.1 TCP
|
||||
|
||||
**看最后两行:**
|
||||
|
||||
* `sender`:客户端发出去的带宽
|
||||
* `receiver`:NAS 实际收到的带宽
|
||||
|
||||
**两者应接近;差距大通常说明重传/拥塞/丢包。**
|
||||
|
||||
* * *
|
||||
|
||||
### 5.2 UDP
|
||||
|
||||
**重点三项:**
|
||||
|
||||
* **带宽(Mbits/sec)**
|
||||
* **jitter(ms)**
|
||||
* **丢包率(lost/total)**
|
||||
|
||||
**丢包 > 1% 或 jitter 很大,对语音/视频/游戏会明显影响。**
|
||||
|
||||
* * *
|
||||
|
||||
6\. 常见坑 & 排查
|
||||
------------
|
||||
|
||||
1. **测速比预期低**
|
||||
* **先试** `-P 4/8/16` 多流
|
||||
* **单流 TCP 在高带宽链路上经常跑不满**
|
||||
2. **UDP 忘了加 `-b`**
|
||||
* **默认只有 1M,测速会假低**
|
||||
3. **容器网络模式不对**
|
||||
* **推荐** `host`
|
||||
* `bridge` 可能被 NAT/限速影响
|
||||
4. **MTU/分片导致性能怪异**
|
||||
* **UDP 用** `-l 1400`
|
||||
* **TCP 用** `-M 1400`
|
||||
|
||||
* * *
|
||||
|
||||
7\. 一键抄走的飞牛 NAS 测速模板
|
||||
--------------------
|
||||
|
||||
**假设 NAS IP =** `192.168.1.10`
|
||||
|
||||
```null
|
||||
# 1) 上行 TCP
|
||||
iperf3 -c 192.168.1.10 -t 30 -i 1
|
||||
|
||||
# 2) 下行 TCP
|
||||
iperf3 -c 192.168.1.10 -R -t 30 -i 1
|
||||
|
||||
# 3) 多流跑满
|
||||
iperf3 -c 192.168.1.10 -P 8 -t 30 -i 1
|
||||
|
||||
# 4) UDP Wi-Fi/实时压测
|
||||
iperf3 -c 192.168.1.10 -u -b 300M -l 1400 -t 30 -i 1
|
||||
|
||||
```
|
||||
|
||||
* * *
|
||||
Reference in New Issue
Block a user