iperf3 网络质量测试指南:UDP 丢包分析与端口占用修复

在进行跨地域 Linux 服务器之间的网络质量测试时,iperf3 是一个非常强大的命令行工具。本文将介绍如何使用 iperf3 重点测试线路的 UDP 丢包率,以及如何解决服务端常见的端口占用报错。

1. 客户端测试命令详解

UDP 模式 (测试丢包率与延迟)

要测试线路质量,特别是 UDP 丢包率 (Datagrams lost),请使用:

iperf3 -c 192.0.2.1 -u -R -t 15 -b 128M

TCP 模式 (测试最大带宽)

如果仅测试 TCP 最大带宽,可使用:

iperf3 -c 192.0.2.1 -R

(注:TCP 模式会自动重传丢包,无法直接看到丢包率,但适合测试最大吞吐量)

参数解析

  • -c 192.0.2.1: 指定客户端模式 (Client),并连接到目标服务器 IP 192.0.2.1
  • -u关键参数。使用 UDP 协议而不是默认的 TCP。UDP 测试不会进行重传,因此能更直观地反映线路的丢包情况(Packet Loss)和抖动(Jitter)。
  • -R: 反向模式 (Reverse)。
    • 默认情况下,客户端发送数据,服务端接收(测试上传速度)。
    • 加上 -R 后,服务端发送数据,客户端接收(测试下载速度)。这对于测试“服务器到我本地”或“源站到中转机”的入站网络质量非常有用。
  • -t 15: 测试持续时间为 15 秒。
  • -b 128M: 目标带宽 (Bandwidth) 设置为 128 Mbits/sec。
    • 如果不设置此项,UDP 模式下 iperf3 默认只使用 1Mbps,无法测出高带宽下的丢包表现。建议将其设置为略低于你的物理带宽上限。

结果关注点

执行命令后,重点关注最后报告中的 Lost/Total 和 Datagrams 一栏:

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams[  5]   0.00-15.00  sec   229 MBytes   128 Mbits/sec  0.038 ms  0/169410 (0%)  receiver

如果 Lost 百分比过高(例如 > 5%),说明线路质量较差,用于视频推流或游戏可能会出现卡顿。


2. 服务端常见报错与修复

在服务端启动 iperf3 时,你通常会运行:

iperf3 -s

但有时会遇到如下报错,提示地址已被占用:

root@us-free-center:~# iperf3 -s iperf3: error - unable to start listener for connections: Address already in useiperf3: exiting

原因分析

这通常意味着 5201 端口(iperf3 默认端口)已经被另一个 iperf3 进程占用,或者上一次异常退出后进程卡死。

解决方案

我们需要找到占用该端口的进程并将其终止。最简单的方法是使用 fuser 命令:

fuser -k 5201/tcp
  • 5201/tcp: 指定要查找的端口和协议。
  • -k:不仅仅是查找,直接 Kill 掉占用该端口的进程。

执行完上述命令后,再次运行 iperf3 -s 即可恢复正常。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注