Linux带宽测试

艺帆风顺 发布于 2025-04-03 16 次阅读


iperf是linux下一款非常实用的测带宽工具,是C/S模型的,支持使用TCP和UDP测试,可以测试带宽,丢包(丢包指的是UDP的丢包,TCP丢包会重传)等信息。若想使用此工具必须服务端必须是公网可访问的机器。

iperf原理

服务端监听监听在某个端口,客户端对该端口发送流量,由此可以测的客户端带宽的相关信息。(由于一般都是测试服务器的带宽,因此测试的时候需要有两台拥有公网地址的机器)。

带宽换算

通信公司说的带宽一般为Gb/s 、Mb/s;而我们使用的带宽实际说的是GB/s、MB/s;所以通信公司所给的带宽需要除以8进行换算。

以下分别用两台带宽分别为5Mb与100Mb的的主机互相进行测试

ct5           代表带宽为5Mb的主机

ct100       代表带宽为100Mb的主机

一、安装

以Centos8为例

[root@01-0001 yum.repos.d]# wget https://download-ib01.fedoraproject.org/pub/epel/8/Everything/aarch64/Packages/e/epel-release-8-16.el8.noarch.rpm[root@01-0001 yum.repos.d]# rpm -ivh epel-release-8-16.el8.noarch.rpm [root@01-0001 yum.repos.d]# yum install iperf

二、测试

测试5M带宽的主机,带宽是否为能达到5M
1.tcp方式
服务器端

[root@ecs-29d1 ~]# iperf -s------------------------------------------------------------Server listening on TCP port 5001TCP window size: 85.3 KByte (default)------------------------------------------------------------[ 4] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 57730 (peer 2.1.6)[ ID] Interval Transfer Bandwidth[ 4] 0.0-10.4 sec 6.13 MBytes 4.95 Mbits/sec[ 4] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 57732 (peer 2.1.6)[ 4] 0.0-10.3 sec 6.00 MBytes 4.88 Mbits/sec

客户端:

[root@01-0001 ~]# iperf -c ct100 -t 10 -i 1------------------------------------------------------------Client connecting to ct100, TCP port 5001TCP window size: 85.0 KByte (default)------------------------------------------------------------[ 1] local 192.168.0.215 port 57732 connected with 36.112.136.105 port 5001[ ID] Interval Transfer Bandwidth[ 1] 0.00-1.00 sec 768 KBytes 6.29 Mbits/sec[ 1] 1.00-2.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 2.00-3.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 3.00-4.00 sec 512 KBytes 4.19 Mbits/sec[ 1] 4.00-5.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 5.00-6.00 sec 384 KBytes 3.15 Mbits/sec[ 1] 6.00-7.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 7.00-8.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 8.00-9.00 sec 512 KBytes 4.19 Mbits/sec[ 1] 9.00-10.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 10.00-10.33 sec 128 KBytes 3.21 Mbits/sec[ 1] 0.00-10.33 sec 6.00 MBytes 4.87 Mbits/sec

2.udp方式
服务器端:

[root@ecs-29d1 ~]# iperf -s -u------------------------------------------------------------Server listening on UDP port 5001Receiving 1470 byte datagramsUDP buffer size: 208 KByte (default)------------------------------------------------------------[ 3] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 44211 (peer 2.1.6)[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.017 ms 1/ 895 (0.11%)[ 4] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 55893 (peer 2.1.6)[ 4] 0.0-10.0 sec 6.04 MBytes 5.07 Mbits/sec 0.018 ms 4612/ 8920 (52%)[ 3] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 47713 (peer 2.1.6)[ 4] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 45984 (peer 2.1.6)[ 4] 0.0-30.1 sec 5.53 MBytes 1.54 Mbits/sec 0.030 ms 4973/ 8920 (56%)[ 5] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 44776 (peer 2.1.6)[ 5] 0.0-46.1 sec 5.75 MBytes 1.05 Mbits/sec 0.021 ms 360/ 4462 (8.1%)[ 4] local 192.168.1.77 port 5001 connected with 36.112.130.213 port 52849 (peer 2.1.6)[ 4] 0.0-59.5 sec 5.37 MBytes 757 Kbits/sec 0.050 ms 632/ 4462 (14%) 

客户端:

//设置为10M带宽进行测试[root@01-0001 ~]# iperf -c ct100 -t 10 -i 1 -u -b 10M------------------------------------------------------------Client connecting to ct100, UDP port 5001Sending 1470 byte datagrams, IPG target: 1121.52 us (kalman adjust)UDP buffer size: 208 KByte (default)------------------------------------------------------------[ 1] local 192.168.0.215 port 45984 connected with 36.112.136.105 port 5001[ ID] Interval Transfer Bandwidth[ 1] 0.00-1.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 1.00-2.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 2.00-3.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 3.00-4.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 4.00-5.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 5.00-6.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 6.00-7.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 7.00-8.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 8.00-9.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 9.00-10.00 sec 1.25 MBytes 10.5 Mbits/sec[ 1] 0.00-10.00 sec 12.5 MBytes 10.5 Mbits/sec[ 1] Sent 8921 datagrams[ 1] Server Report:[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams[ 1] 0.00-0.00 sec 0.000 Bytes -nan bits/sec 131.073 ms 4294966296/0 (inf%)  //设置为5M带宽进行测试[root@01-0001 ~]# iperf -c ct100 -t 10 -i 1 -u -b 5M------------------------------------------------------------Client connecting to ct100, UDP port 5001Sending 1470 byte datagrams, IPG target: 2243.04 us (kalman adjust)UDP buffer size: 208 KByte (default)------------------------------------------------------------[ 1] local 192.168.0.215 port 44776 connected with 36.112.136.105 port 5001[ ID] Interval Transfer Bandwidth[ 1] 0.00-1.00 sec 642 KBytes 5.26 Mbits/sec[ 1] 1.00-2.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 2.00-3.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 3.00-4.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 4.00-5.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 5.00-6.00 sec 639 KBytes 5.23 Mbits/sec[ 1] 6.00-7.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 7.00-8.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 8.00-9.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 9.00-10.00 sec 640 KBytes 5.24 Mbits/sec[ 1] 0.00-10.00 sec 6.26 MBytes 5.25 Mbits/sec[ 1] Sent 4463 datagrams[ 1] Server Report:[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams[ 1] 0.00-0.00 sec 0.000 Bytes -nan bits/sec 131.073 ms 4294966296/0 (inf%)

用UDP测试时注意查看服务端的丢包情况,可以发现当设置带宽为10M,会有接近50%的丢包,而当带宽设置为5M,丢包显著下降只有10%左右,而带宽设置为1M的时候,丢包为0.11%,说明了客户端带宽为5M左右,同时也说明UDP本身传输就不可靠,即使带宽设置的很低也存在丢包。

同理测试100M主机的带宽

//服务端[root@01-0001 ~]# iperf -s------------------------------------------------------------Server listening on TCP port 5001TCP window size: 85.3 KByte (default)------------------------------------------------------------[ 1] local 192.168.0.215 port 5001 connected with 36.112.136.105 port 52722[ ID] Interval Transfer Bandwidth[ 1] 0.00-10.04 sec 104 MBytes 87.3 Mbits/sec[ 2] local 192.168.0.215 port 5001 connected with 36.112.136.105 port 52724[ ID] Interval Transfer Bandwidth[ 2] 0.00-10.08 sec 109 MBytes 90.4 Mbits/sec  //客户端[root@ecs-29d1 ~]# iperf -c ct5 -t 10 -i 1------------------------------------------------------------Client connecting to ct5, TCP port 5001TCP window size: 374 KByte (default)------------------------------------------------------------[ 3] local 192.168.1.77 port 52724 connected with 36.112.130.213 port 5001[ ID] Interval Transfer Bandwidth[ 3] 0.0- 1.0 sec 5.62 MBytes 47.2 Mbits/sec[ 3] 1.0- 2.0 sec 12.4 MBytes 104 Mbits/sec[ 3] 2.0- 3.0 sec 12.0 MBytes 101 Mbits/sec[ 3] 3.0- 4.0 sec 11.2 MBytes 94.4 Mbits/sec[ 3] 4.0- 5.0 sec 10.5 MBytes 88.1 Mbits/sec[ 3] 5.0- 6.0 sec 11.5 MBytes 96.5 Mbits/sec[ 3] 6.0- 7.0 sec 12.2 MBytes 103 Mbits/sec[ 3] 7.0- 8.0 sec 11.8 MBytes 98.6 Mbits/sec[ 3] 8.0- 9.0 sec 9.62 MBytes 80.7 Mbits/sec[ 3] 9.0-10.0 sec 11.8 MBytes 98.6 Mbits/sec[ 3] 0.0-10.1 sec 109 MBytes 90.6 Mbits/sec 

iperf常用参数说明:

适用客户端/服务器:

-f --格式[k|m|K|M] 分别表示以Kbits、Mbits、KBytes、MBytes显示报告,默认是Mbits-i 以秒为单位统计带宽值 -l 读写缓冲区大小,默认是8KB-m 显示最大的TCP数据段大小 (MTU - TCP/IP header)-o 将报告和错误信息输出到文件-p 指定服务器和客户端连接的端口-u 使用udp协议-w 指定TCP窗口大小,默认是8KB-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)-C 兼容旧版本(当server端和client端版本不一样时使用)-M 设定TCP数据包的最大mtu值-N 设定TCP不延时-V 传输ipv6数据包

适用服务器端:

-s 以服务器模式启动-U 单线程UDP模式下运行-D 以守护进程模式运行

适用客户端:

-b 指定客户端通过UDP协议发送信息的带宽,默认值为1Mbit/s-c 指定服务器地址  -d 同时进行双向传输测试-n 指定传输的字节数-r 单独进行双向传输测试-t 指定Iperf测试时间,默认10秒-F 指定需要传输的文件-I 从标准输入(stdin)中读取要传输的数据 -L 指定一个端口,服务器将利用这个端口与客户机连接-P 客户端到服务器的连接数,默认值为1-T 指定ttl值

带宽也可以配合scp进行快速测试,只需一个公网地址,节省资源

 ct100为带宽100Mb/s的主机[root@zyq tmp]# scp -P 5499 ct100:/boot/initramfs-0-rescue-6748d698cc244bdebd23ef4793c8dd1d.img /tmp/initramfs-0-rescue-6748d698cc244bdebd23ef4793c8dd1d.img 100% 56MB 8.5MB/s 00:06  ct5为带宽5Mb/s的主机[root@zyq tmp]# scp ct5:/boot/initramfs-4.18.0-240.el8.x86_64.img /tmp/initramfs-4.18.0-240.el8.x86_64.img 100% 28MB 576.2KB/s 00:49 

版权声明:本文内容来自CSDN:巭犇,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://blog.csdn.net/zyqash/article/details/125770500如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。