当前位置: 代码网 > it编程>软件设计>软件测试 > iPerf 3 测试UDP和TCP方法详解

iPerf 3 测试UDP和TCP方法详解

2024年08月01日 软件测试 我要评论
网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。

前言

工具安装、说明等详细信息可参考官方文档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是时间间隔里的传输速率 (千兆以太网 104mb/s对的)。

4. 测试udp吞吐量

带宽测试通常采用udp模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100mbps,先用-b 100m进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。

  • server端开启iperf的服务器模式
    在这里插入图片描述
  • client端启动iperf的客户端模式,连接服务端
    在这里插入图片描述
  • server端监听结果
    在这里插入图片描述
    ① jitter为抖动,在连续传输中的平滑平均值差。
    ② lost为丢包数量。
    ③ total datagrams为包数量。
(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com