工作需要测试机器wifi的网络性能,采用iperf3工具来进行测试
iperf3 是基于Client/Server ,需要一端作为服务器,另一端作为客户端,相互发送接收消息,因此两端都需要安装iperf3工具。
下载链接 window可以从第一个链接下载window版本的,
其它的两个链接中都可以下载。
https://iperf.fr/iperf-download.php
https://downloads.es.net/pub/iperf/
window
下载地址 https://iperf.fr/iperf-download.php
https://iperf.fr/ipe
下载后解压, 将解压出来的iperf.exe 和cygwin1.dll 复制到C:\Windows\System32, 然后就可以打开cmd使用iperf3
linux
mkdir ~/iperf
cp iperf-3.1.3-source.tar.gz ~/iperf
cd ~iperf
tar xzf iperf-3.1.3-source.tar.gz
cd iperf-3.1.3
mkdir …/install
./configure --host=arm-none-linux-gnueabi --prefix=/home/user/iperf/install
make
make install
$ cd …/install # 进入安装目录
$ arm-none-linux-gnueabi-strip bin/iperf3 # 去除iperf3镜像调试信息
$ arm-none-linux-gnueabi-strip lib/libiperf.so.0.0.0 # 去除共享库的调试信息
$ rm lib/libiperf.a lib/libiperf.la # 删除两个不用的库文件
$ tar jcf iperf-3.0.3.tar.bz2 bin lib # 压缩bin和lib目录
将打包好的压缩包拷贝到机器上, 并分别解压到/bin 和 /lib目录
$ cp iperf-3.1.3.tar.bz2 ~ # 将复制压缩包到目标板用户目录
$ tar jxf iperf-3.1.3.tar.bz2 bin -C /usr # 解压镜像到/usr/bin
$ tar jxf iperf-3.1.3.tar.bz2 lib -C /usr # 解压库文件到/usr/lib
iperf 使用
server和client 通用参数
-p --port 要监听/连接到的服务器端口
-f --format 报告格式:kbits,mbits,k字节,mb字节
-i --interval 定期进行带宽报告之间的秒数
-F --file name xmit/恢复指定的文件
-A --affinity n/n, m
-B --bind 绑定到一个特定的接口
-V --verbose 更详细的输出
-J --json 输出json 格式
–logfile f 输出到日志文件
-d --debug 发出调试输出
-v version 显示版本信息并退出
-h --help 帮助
server
-s --server 以服务端运行
-D --daemon 将服务器作为守护进程运行
-I --pidfile file 写入PID文件
-1 --one-off 处理一个客户端连接,然后退出
client
-c --client 以客户端运行
-u --udp 使用udp而不是TCP
-b --bandwidth #[KMG][/# 目标带宽,单位为位/秒(0表示无限制) (udp默认为1mbit/秒,tcp默认为无限制) (突发模式的可选斜线和包数)
-t --time 传输时间为秒(默认为10秒)
-n --bytes #[KMG] 要传输的字节数(而不是-t)
-k, --blockcount #[KMG] 要传输的块(数据包)数(而不是t或n)
-l --len #[KMG] 要读取或写入的缓冲区的长度 (tcp默认为128kb,udp默认为8kb)
–cport 绑定到特定的客户端端口(tcp和udp,默认为:临时端口)
-P, --parallel 要运行的并行客户端流数
-R, --reverse 以反向模式运行(服务器发送,客户端接收)
-w, --window #[KMG] 设置窗口大小/套接字缓冲区大小
-C, --congestion 设置tcp拥塞控制算法(仅限linux和freebsd)
-M, --set-mss 设置tcp/sctp的最大段大小(mtu-40字节)
-N, --no-delay 设置tcp/sctp无延迟,禁用nagle的算法
-4, --version4 only use IPv4
-6, --version6 only use IPv6
-S, --tos N set the IP ‘type of service’
-L, --flowlabel N 设置ipv6流标签(仅在linux上支持)
-Z, --zerocopy 使用“零复制”的方法来发送数据
-O, --omit N 省略钱 n秒
-T, --title str 用此字符串作为每个输出行的前缀
–get-server-output 从服务器获取结果
–udp-counters-64bit 在udp测试数据包中使用64位计数器
–no-fq-socket-pacing 禁用基于公平排队的套接字起搏 (仅限linux)
测试:
路由器与window直接相连,
机器连接路由器wifi.
window ip: 192.168.136.211
机器: 192.168.136.200
tcp 测试
window 作为服务器 :iperf3 -s
客户端: iperf3 -c 192.168.136.211 -t 60
Interval表示时间间隔。
Transfer表示时间间隔里面转输的数据量。
Bandwidth是时间间隔里的传输速率。
要停止iperf3服务进程,请按CTRL+z或CTRL+c
客户端可以多开几个客户端: iperf3 -c 192.168.136.211 -t 60 -P 10
结果看 SUM
测试UDP吞吐量
带宽测试通常采用UDP模式,因为能测出极限带宽、时延抖动、丢包率。在进行测试时,首先以链路理论带宽作为数据发送速率进行测试,例如,从客户端到服务器之间的链路的理论带宽为100Mbps,先用-b 100M进行测试,然后根据测试结果(包括实际带宽,时延抖动和丢包率),再以实际带宽作为数据发送速率进行测试,会发现时延抖动和丢包率比第一次好很多,重复测试几次,就能得出稳定的实际带宽。
服务端:iperf3 -s
客户端:iperf3 -c 192.168.136.211 -t 60 -b 10M
Jitter为抖动,在连续传输中的平滑平均值差。
Lost为丢包数量。
Total Datagrams为包数量。
进行上下行带宽测试(双向传输)
iperf3 -u -c 192.168.136.211 -b 10M -d -t 60
这篇博文有 iperf原理介绍,做个标记
https://blog.csdn.net/huyuan7494/article/details/77073459