ZoyaPatel

iperf3 一篇文章弄明白该如何使用?

SohaniSharma

##网络基础 iperf3 主要用于测试网络带宽,延迟抖动和丢包率,而不是延迟。{alertInfo}
 

 由人工编写审核,非AI生成内容,请放心观看!

{getToc} $title={文章目录}

iperf3 一篇文章弄明白该如何使用?
iperf3 一篇文章弄明白该如何使用?

## 基本用法

安装

yum install iperf3.x86_64 -y

服务器端:

服务器端开启默认的监控端口 5201,等待客户端进行访问测试。

iperf3 -s -i 1

客户端:

iperf3 -c 127.0.0.1 -t 10 

-c 链接地址

-t 测试时间

## 测试带宽

iperf3 -c <server-ip> -t 60 -i 5 -J
iperf3 -c <server-ip> -t 60 -P 8 -i 5 -J
iperf3 -c <server-ip> -t 60 -P 8 -w 256K -J

解释

  1. 第一条: 测试 60s , 间隔报告 5 -J 输出Json 数据
  2. 第二条:-P 表示多线程测试
  3. 第三条:-w 设置的 TCP 发送/接收缓冲区大小(这里双向 都被设置了)

服务端和客户端结果

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-60.05 sec   289 MBytes  40.4 Mbits/sec                 receiver
[  8]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 10]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 12]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 14]   0.00-60.05 sec   289 MBytes  40.3 Mbits/sec                 receiver
[ 16]   0.00-60.05 sec   286 MBytes  40.0 Mbits/sec                 receiver
[ 18]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 20]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[SUM]   0.00-60.05 sec  2.25 GBytes   322 Mbits/sec                 receiver
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.03 sec   289 MBytes  40.4 Mbits/sec    0             sender
[  5]   0.00-60.05 sec   289 MBytes  40.4 Mbits/sec                 receiver
[  7]   0.00-60.03 sec   288 MBytes  40.2 Mbits/sec    0             sender
[  7]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[  9]   0.00-60.03 sec   288 MBytes  40.2 Mbits/sec    0             sender
[  9]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 11]   0.00-60.03 sec   288 MBytes  40.2 Mbits/sec    0             sender
[ 11]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 13]   0.00-60.03 sec   289 MBytes  40.3 Mbits/sec    0             sender
[ 13]   0.00-60.05 sec   289 MBytes  40.3 Mbits/sec                 receiver
[ 15]   0.00-60.03 sec   286 MBytes  40.0 Mbits/sec    0             sender
[ 15]   0.00-60.05 sec   286 MBytes  40.0 Mbits/sec                 receiver
[ 17]   0.00-60.03 sec   288 MBytes  40.2 Mbits/sec    0             sender
[ 17]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[ 19]   0.00-60.03 sec   288 MBytes  40.2 Mbits/sec    0             sender
[ 19]   0.00-60.05 sec   288 MBytes  40.2 Mbits/sec                 receiver
[SUM]   0.00-60.03 sec  2.25 GBytes   322 Mbits/sec    0             sender
[SUM]   0.00-60.05 sec  2.25 GBytes   322 Mbits/sec                 receiver

推荐的测试矩阵

  1. TCP 单流基线(30s)
  2. TCP 并发流扩展:-P 2,4,8,16,每次 30–60s,观察吞吐随流数变化
  3. TCP 窗口调优:按 BDP 调整 -w 并复测
  4. UDP 递增:10%、50%、80%、100% 发送率,记录丢包与抖动
  5. 长运行(5–10 分钟)以检测间歇性问题
  6. 不同时间点重复测试,观测方差

对于 10Gbps 及以上链路,通常需要多流并分派到不同 CPU 核心。

## 延迟测试

持续4K数据包网络延迟和吞吐率

在实际应用中,很多关键的网络流量都是由小数据包组成的:

  • 数据库查询 (Database Lookups):每次请求和响应的数据量通常很小。
  • 网络游戏 (Online Gaming):持续发送和接收的是玩家状态的微小更新包。
  • Web 浏览 (Web Browsing):大量的 HTTP 头、Cookies、小图片、API 调用等都是小数据包。
  • 语音和视频通话 (VoIP):语音数据流也是由许多小包组成。

如果你的网络处理小包的效率低,即使最大带宽很高(比如 10 Gbps),你的网页加载速度游戏体验也会感觉“卡顿”或“慢”。

iperf3 -c <server-ip> -u -b 100M -l 4K -t 30

-b 100M: 设置目标带宽为 100 Mbps。因为小包测试的重点不是最大带宽,而是特定带宽下的吞吐和丢包,所以通常会限制一个速率。

-l 4K: 设置发送的数据包长度为 4K 字节。 设置发送数据包的载荷(Payload)大小4 Kilobytes (4096 字节)。这个大小指的是数据包中实际数据的部分,不包括 IP、UDP/TCP 头等网络开销。

-t 30: 测试 30 秒。

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-30.00 sec   358 MBytes   100 Mbits/sec  0.000 ms  0/91551 (0%) sender
[  5]   0.00-30.02 sec   358 MBytes  99.9 Mbits/sec  0.430 ms  0/91550 (0%) receiver

Jitter (延迟抖动):小包测试会准确反映网络抖动情况,抖动大会影响 VoIP 和游戏。每个包延迟和前一个包延迟差的平均值

Datagrams (每秒数据包数):评估网络路由器和交换机的包转发性能

Lost/Total Datagrams (丢包率)这是小包测试最重要的指标之一。高丢包率表明网络拥塞或设备处理小包的能力不足。

  • -l 决定了每个包裹里装了多少货物(字节)。

由于以太网有默认的 MTU (最大传输单元,通常是 1500 字节) 限制,当:

  • -l 小于 1500 (如 64512):用于模拟 VoIP 或游戏等大量小事务,测试网络的每秒事务处理能力延迟抖动
  • -l 大于 1500 (如 4K):强制 IP 层对数据包进行分片 (Fragmentation)。这是在测试网络设备(路由器、防火墙)处理分片的能力,分片过多通常会导致丢包率上升

案例:一个基本都iperf3 项目测试

基础概念:TCP 窗口

  • TCP 窗口(Window Size):TCP 协议用来控制“发送方一次可以发送多少未确认的数据”的机制。

    • 发送窗口(Send Window):发送端能发送但未收到确认的数据量。
    • 接收窗口(Receive Window):接收端能接收但尚未处理的数据量。
  • 窗口越大,高带宽高延迟链路(例如长距离光纤或卫星链路)的吞吐就越高;窗口太小,会造成链路空闲,吞吐无法充分利用。

BDP 理论

BDP(Bandwidth-Delay Product,带宽-延迟积)公式:

BDP=带宽(bps)×往返延迟RTT(秒)

  • 意义:为了充分利用链路带宽,TCP窗口大小应该至少等于 BDP。
  • 示例:

  1. 链路带宽:1 Gbps
  2. RTT:50 ms

BDP=1G×0.05s=6.25 MB

→ TCP窗口至少 6.25 MB 才能满载链路。


iperf3 中的窗口调优

  • 选项:-w <窗口大小>
  • 同时会设置发送/接收缓冲区,影响 TCP 最大窗口
  • Linux 特性:指定的窗口值在内核上会自动放大(TCP window scaling),实际最大窗口约为指定值的 2 倍。

示例命令

iperf3 -c 192.168.1.1 -w 6M -t 30
意思:根据链路 BDP(6MB)调整 TCP 窗口,观察吞吐提升效果。

调优效果

  • 小窗口 < BDP → 吞吐不足,链路利用率低
  • 窗口 ≈ BDP → 链路带宽充分利用
  • 窗口 >> BDP → 不一定再提升吞吐,但增加内存占用

核心思想:窗口调优就是匹配 TCP 窗口和链路 BDP,使链路带宽被充分利用

中文总结

TCP 窗口调优(BDP匹配)就是根据链路的带宽和往返延迟计算出最佳的 TCP 窗口大小,保证数据在网络中持续流动而不被限制,从而实现最大吞吐。

  • 窗口太小 → 链路利用率低
  • 窗口匹配 BDP → 最佳吞吐
  • 窗口过大 → 内存浪费但吞吐提升有限

测试类型参数时间说明
TCP 单流基线iperf3 -c <server> -t 3030s单条TCP连接,评估基础吞吐
TCP 并发流`iperf3 -c <server> -P 248
TCP 窗口调优iperf3 -c <server> -w <BDP>30s根据链路 BDP 调整窗口,验证吞吐提升
UDP 递增iperf3 -c <server> -u -b <10%,50%,80%,100%带宽>每步30s记录丢包率、延迟抖动,找到最大可承受UDP负载

Ahmedabad
Kolkata
Hyderabad
后一页 Bangalore 前一页

Random Manga

Ads

نموذج الاتصال