iPerf 3 测试UDP和TCP方法详解
创作时间:
作者:
@小白创作中心
iPerf 3 测试UDP和TCP方法详解
引用
CSDN
1.
https://blog.csdn.net/weixin_44399845/article/details/137950306
前言
工具安装、说明等详细信息可参考官方文档ipef user doc
一、What is iPerf / iPerf3 ?
Perf3 是一款用于主动测量 IP 网络最大带宽的工具。它支持调整与定时、缓冲区和协议(TCP、UDP、SCTP 与 IPv4 和 IPv6)相关的各种参数。每次测试都会报告带宽、损耗和其他参数。
二、功能
1. TCP and SCTP
- 测量带宽
- 报告 MSS/MTU 大小和观察到的读取大小
- 通过套接字缓冲区支持 TCP 窗口大小。
2. UDP
- 客户端可创建指定带宽的 UDP 数据流
- 测量数据包丢失
- 测量延迟抖动
- 支持组播
3. 其他
- 客户端和服务器可同时进行多个连接(-P 选项)。
- 服务器处理多个连接,而不是在一次测试后退出。
- 可在指定时间(-t 选项)内运行,而不是在设定的数据传输量(-n 或 -k 选项)内运行。
- 以指定时间间隔打印定期的中间带宽、抖动和损耗报告(-i 选项)。
- 将服务器作为守护进程运行(-D 选项)
- 使用代表性数据流测试链路层压缩对可实现带宽的影响(-F 选项)。
- 服务器同时接受单个客户端(iPerf3)或多个客户端(iPerf2)
- 新功能:忽略 TCP 慢启动(-O 选项)。
- 新功能:为 UDP 和(新)TCP 设置目标带宽(-b 选项)。
- 新功能:设置 IPv6 流量标签(-L 选项)
- 新功能:设置拥塞控制算法(-C 选项)
- 新功能: 使用 SCTP 而非 TCP(–sctp 选项)
- 新功能: 以 JSON 格式输出(-J 选项)。
- 新功能: 磁盘读取测试(服务器:iperf3 -s / 客户端:iperf3 -c testhost -i1 -F 文件名)
- 新功能: 磁盘写入测试(服务器:iperf3 -s -F 文件名/客户端:iperf3 -c testhost -i1)
三、 Iperf的使用
1.Iperf的工作模式
Iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起测试连接会话,因此要使用iperf至少需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。
2. 通用指令
3. 服务端特有选项
4. 客户端特有选项
5. -t -n参数联系
-t 参数说明如下:
-n 参数说明如下:
-n会重写-t参数,-n参数会使-t参数失效。
-n 30M 意思表明,传输完30M便停止,-t失效。
四、Iperf使用实例
1. 调整 TCP 连接
1. 1TCP 窗口大小调节
iPerf 的主要目标是帮助调整特定路径上的 TCP 连接。TCP 最基本的调整问题是 TCP 窗口大小,它控制着网络中任何一点的数据量。如果窗口大小太小,发送方有时就会处于空闲状态,从而导致性能低下。
窗口大小的理论值为:
若瓶颈链路是 45 Mbit/sec 链路,用 ping 测量的往返时间是 42 ms。带宽延迟乘积为:
45 Mbit/sec * 42 ms
= (45e6) * (42e-3)
= 1890000 bits
= 230 KByte
这是计算最佳窗口大小的一个起点;将其设置得更高或更低可能会产生更好的结果。
请注意,许多操作系统和主机都有 TCP 窗口大小的上限。iPerf 会尝试检测这些限制,并在实际窗口大小与请求的窗口大小不相等时发出警告。
另一个测试方法是运行并行 TCP 流。如果总带宽大于单个数据流的带宽,就说明出了问题。要么是 TCP 窗口大小太小,要么是操作系统的 TCP 实现有问题,要么是网络本身有缺陷。
测试示例:
- 启动服务端
- 启动客户端
1.
单线程测试,TCP窗口大小1000字节。(非常小,所以性能不能达到网卡瓶颈1Gbit)
2.
单线程测试,TCP窗口大小16K。速度有所提升

3.
单线程测试,窗口调整为420K时,基本达到了1Gbit的极限。
4.
最后测试一下多线程,使用190k的窗口,同样可以把网卡极限跑满:
所以如果我们使用单线程传输,tcp窗口的大小很关键。
##### 1. 2 最大传输单元 (MTU)调整
为了达到最佳效果,两台主机都应支持路径 MTU 发现。不支持路径 MTU 发现的主机通常使用 536 作为 MSS,这会浪费带宽和处理时间。使用 -m 选项可显示正在使用的 MSS,并查看是否与预期相符。以太网的 MSS 通常在 1460 字节左右。
#### 2. 调整 UDP 连接
iPerf 创建了一个恒定比特率的 UDP 数据流。没有其他功能。
需要将数据报大小 (-l) 调整为您的应用程序所使用的大小。
服务器通过数据报中的 ID 号来检测 UDP 数据段是否丢失。通常,一个 UDP 数据段会变成多个 IP 数据包。丢失一个 IP 数据包就会丢失整个数据段。要测量数据包丢失而不是数据段丢失,**可使用 -l 选项使数据段小到足以容纳进一个数据包**。默认的 1470 字节大小适用于以太网。还能检测出乱序数据包。由于 TCP 不会向用户报告数据包丢失情况,UDP 测试有助于查看路径上的数据包丢失情况。
根据 RFC 1889 中 RTP 的规定,抖动计算由服务器持续计算。客户端在数据包中记录 64 位秒/微秒时间戳。服务器计算的相对传输时间为(服务器接收时间-客户端发送时间)。客户端和服务器的时钟无需同步;抖动计算中会减去任何差异。抖动是连续传输时间差的平滑平均值。
测试示例:
- 服务端启动
- 启动客户端
请注意,在使用较大的 50 KB 数据报(每个数据报分成 23 个 1500 字节的数据包)时,数据报重组导致的抖动较高。这里看到的数据报丢包率较高,可能是由于流量的突发性,即 23 个背靠背的数据包,然后是长时间的停顿,而不是均匀分布的单个数据包。
#### 3. 测试TCP吞吐量
- Server端开启iperf的服务器模式:
- Client端启动iperf的客户端模式

- Server端监听结果
① Interval表示时间间隔。
② Transfer表示时间间隔里面转输的数据量。
③ Bandwidth是时间间隔里的传输速率 。
#### 4. 测试UDP吞吐量
带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
- Server端开启iperf的服务器模式
- Client端启动iperf的客户端模式,连接服务端
- Server端监听结果
① Jitter为抖动,在连续传输中的平滑平均值差。
② Lost为丢包数量。
③ Total Datagrams为包数量。
**本文原文来自CSDN**
热门推荐
开源AI添动力—— 多家券商启用DeepSeek大模型
重庆长江索道门票购买指南:单程还是往返?
一位投资交易者的20年感悟:阳胜进,阴胜出,小倍阳,大胆入!
英国租房怎么和房东联系
还款调解协议后续还款风险及应对策略
带薪休假工资计算方法:企业如何合理制定政策?
荞麦面条:糖友们的优选还是陷阱?深入剖析升糖真相
铁锈战争的单位优劣说明及常用单位排行榜(第一期)
利用GitHub Actions快速编译和定制RustDesk客户端详细教程
奥利奥饼干保质期是多久?过期了还能吃吗?
银行储蓄存款利率调整对存款的多方面影响
道德与伦理义务论:差异、例子和应用
手背鼓起一个包是什么原因
螺纹钢的利润空间如何拓展?拓展利润空间的方法有哪些?
心宝丸会使血压升高吗?医生的专业解答来了
低蛋白血症是什么?医生专业解析病因、症状与治疗方案
教育部:严禁超前教学和超纲教学!严管老师拖堂,原则上采用纸质作业……
曹真简介 曹真生平
曹真:三国时期曹魏的杰出将领与智勇双全的名将
武术流派之健身气功•马王堆导引术口诀
如何高效挖掘外商投资信息,助力企业决策
人工智能是如何模仿思维?
痛风患者是否适合饮茶?这份指南请收好
上海、广州、深圳节前官宣,一线城市调整住房限购政策!
API安全性指南:从认证到监控的全方位防护策略
孕吐喝电解质水能缓解么
诛三族是最重的刑罚:古代中国刑法中的极端惩罚及其历史意义
明朝因何成为历史上唯一被诛十族的人?让我们来一探究竟。
2025年全国种植牙费用表:了解不同地区和医院的收费情况
茶叶蛋的魅力:选择合适茶叶提升美味的秘诀与技巧