注:本文为 “iperf 测网络吞吐量” 相关文章合辑。
未整理去重。
使用 iperf3 监测网络吞吐量
Tom 王 2019-12-21 22:23:52
一 iperf3 介绍
(1.1) iperf3 是一个网络带宽测试工具,iperf3 可以擦拭 TCP 和 UDP 带宽质量。iperf3 可以测量最大 TCP 带宽,具有多种参数和 UDP 特性,iperf3 可以报告带宽、延迟抖动和数据包丢失。利用 iperf3 这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。
(1.2) 使用 iperf3,你可以调整与时序、缓冲区和协议(如 TCP、UDP、SCTP)相关的几个参数。它对网络性能调优操作很方便,为了获得最大或相当改善的网络性能,你需要增加吞吐量以及网络接收个发送功能的延迟。但是在进行实际调整之前,你需要执行一些测试以收集整体网络性能统计信息,以指导你的调优过程。其结果包括以秒为单位的时间间隔,数据传输,带宽(传输速率),丢失和其他有用的网络性能参数,它主要用于协助调整特定路径上的 TCP 连接。
二 iperf3 安装
(2.1) 我们使用的操作系统是 CentOS 7.4,然后我们使用 base 源安装,便可以将 iperf3-3.1.7-2.el7.x86_64 软件包安装好。
(2.2) 然后我们使用两台主机,其中 192.168.26.51 作为服务器端,将 192.168.26.131 作为客户端。在两台主机上安装好 iperf3 后,即可开始测试网络吞吐量。我们首先连接到我们的服务器端的远程机器使用 - s 标志的是服务器模式下的 iperf3,默情况下它将监听 5201 端口,我们也可以使用 - f 开关指定生成报告的数据格式类型(其中 k 表示 Kbits、m 表示 Mbits、g 表示 Gbits、K 表示 KBytes、M 表示 MBytes、G 表示 GBytes)。
# iperf3 -s -f K
(2.3) 如果服务器上的另一个程序正在使用端口 5201,则我们可以使用 - p 开关指定其他端口监听(例如指定 4000 端口)
# iperf3 -s -p 4000
(2.4) 我们也可以使用 - D 标志作为守护程序运行,并将服务器消息写入日志文件
# iperf3 -s -D > iperf3.log
三 iperf3 客户端操作
(3.1) 我们将 192.168.26.51 作为服务器,并且执行监听 5201 端口的命令(图 3-1),在客户端 192.168.26.131 的主机上,使用 - c 标志在客户端模式下运行 iperf3 并指定运行服务器的主机(使用 IP 地址或域主机名都可以)。执行大约 18 至 20 秒后,客户端终止并生成指示基准测试平均吞吐量的结果,显示信息如下(图 3-2)。
注意:从基准测试结果中,如下面的屏幕接入所示,服务器和客户端的值存在差异,但是,我们应该始终考虑在执行的每个测试中使用从 iperf3 客户端主机获得的结果。
\# iperf3 -s -f K— 在服务器端执行
\# iperf3 -c 192.168.26.51 -f K— 在客户端执行
(3.2) 如果我们想在 Linux 中实现先进的网络测试吞吐量,确定网络中给定时间内数据量的一个重要因素是 TCP 窗口大小,它在调整 TCP 连接时很重要,我们可以使用 - w 标志设置窗口大小、套接字缓冲区大小,如图所示。
\# iperf3 -c 192.168.26.51 -f K -w 200K
(3.3) 如果要在服务器发送和客户端接收的反向模式下运行,可以添加 - R 开关。
\# iperf3 -c 192.168.26.51 -f K -w 200K -R
(3.4) 如果要运行双向测试,意味着我们要同时测量两个方向上的宽带,可以使用 - d 选项。
(3.5) 如果要在客户端输出中获取服务器结果,可以使用 “–get-server-output” 选项,此时我们便会在客户端 192.168.26.131 主机上获取两份数据。
(3.6) 也可以使用 - P 选项设置并行客户端流的数量,它们同时运行
——— 本文至此结束 ———
iperf 测 UDP 和 TCP 丢包率及带宽
嘟嘟嘟嘟于 2021-09-01 16:34:39 发布
iperf
iperf3 (安装包是:iperf-master)安装遇到 error while loading shared libraries:libiperf.so.0
解决方法:在正常编译以后运行 ldconfig
安装软件包的方法 (参考 REDMINE):在顶层目录下:
./configure
make
make install
yqq@ubuntu18:~/Tool/iperf-master$ iperf3 -s
iperf3: error while loading shared libraries: libiperf.so.0: cannot open shared object file: No such file or directory
yqq@ubuntu18:~/Tool/iperf-master$ sudo ldconfig
yqq@ubuntu18:~/Tool/iperf-master$ iperf3 -s
//tcp 和 udp 服务器端用 iperf3 的话都是这个命令,如果是 udp,在客户端加上 - u 即可
// 如果是 iperf,tcp 和 udp 在服务器端加 - u,tcp 和 udp 的客户端命令相同
Server listening on 5201 (test #1)
安装
方法 1:sudo apt-get install iperf
方法 2:下载 iperf 的源码包 ( 在板子上使用二进制文件时,可将源码直接拷贝到板子上 ./configure make)
测试
无论是 tcp 还是 udp 方式测试,都要一端运行服务器模式,另一端运行客户端模式,另外如果打开了 iptables, 要打开 tcp 5001 端口,当然也可以指定端口
tcp 方式
服务器端:iperf -s
客户端: iperf -c SERVERIP -t 60 -i 1 -P 5
udp 方式
服务器端:iperf -u -s //iperf3 服务端不支持 - u 选项
客户端: iperf -c SERVERIP -t 60 -i 1 -b 100M
共用的指令
-f -- 格式 [k|m|K|M] 分别表示 Kbits,Mbits,Kbits,KBytes,MBytes 显示报告,默认是 Mbits
-i -- 以秒为单位统计带宽值
-l -- 读写缓冲区的大小,默认是 8kb
-m -- 显示最大的 TCP 数据段大小 (MTU-TCP/IP header)
-o -- 将报告和错误信息输出到文件
-p -- 指定服务器和客户端连接的端口
-w -- 指定 TCP 窗口的大小,默认是 8KB
-B -- 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)
-C -- 兼容旧版本(当 server 和 client 端版本不一样时使用)
-M -- 指定 TCP 数据包的最大 MTU 值
-N