Iperf介绍
iperf是一个基于TCP/IP和UDP/IP的网络性能测试工具,用于检测网络带宽使用率和网络质量,能测试最大TCP和UDP带宽性能,可以报告带宽、网络延迟抖动、数据包丢失率和最大传输单元等统计信息等。如测试服务器和网络设备如路由器,交换机,防火墙等的网络性能。
Iperf的主要功能
1、TCP方面测试网络带宽
支持多线程,在客户端与服务端支持多重连接
报告MSS/MTU值大小
支持TCP窗口值自定义并可通过套接字缓冲
2、UDP方面可以设置指定带宽的UDP数据流
可以测试网络抖动值、丢包数
支持多播测试
支持多线程,在客户端与服务器端支持多重连接
Iperf的安装
1、下载源码包,官方地址:https://iperf.fr/iperf-download.php
2、安装[root@web1~]#tarzxfiperf-3.1.2-source.tar.gz
[root@web1~]#cdiperf-3.1.2
[root@web1iperf-3.1.2]#./configure
[root@web1iperf-3.1.2]#make&&makeinstall
3、参数(iperf3 -h)[root@web1~]#iperf3-h
Usage:iperf[-s|-chost][options]
iperf[-h|--help][-v|--version]
ServerorClient:
-p,--port#serverporttolistenon/connectto
-f,--format[kmgKMG]formattoreport:Kbits,Mbits,KBytes,MBytes
-i,--interval#secondsbetweenperiodicbandwidthreports
-F,--filenamexmit/recvthespecifiedfile
-A,--affinityn/n,msetCPUaffinity
-B,--bindbindtoaspecificinterface
-V,--verbosemoredetailedoutput
-J,--jsonoutputinJSONformat
--logfilefsendoutputtoalogfile
-d,--debugemitdebuggingoutput
-v,--versionshowversioninformationandquit
-h,--helpshowthismessageandquit
Serverspecific:
-s,--serverruninservermode
-D,--daemonruntheserverasadaemon
-I,--pidfilefilewritePIDfile
-1,--one-offhandleoneclientconnectionthenexit
Clientspecific:
-c,--clientruninclientmode,connectingto
-u,--udpuseUDPratherthanTCP
-b,--bandwidth#[KMG][/#]targetbandwidthinbits/sec(0forunlimited)
(default1Mbit/secforUDP,unlimitedforTCP)
(optionalslashandpacketcountforburstmode)
-t,--time#timeinsecondstotransmitfor(default10secs)
-n,--bytes#[KMG]numberofbytestotransmit(insteadof-t)
-k,--blockcount#[KMG]numberofblocks(packets)totransmit(insteadof-tor-n)
-l,--len#[KMG]lengthofbuffertoreadorwrite
(default128KBforTCP,8KBforUDP)
--cportbindtoaspecificclientport(TCPandUDP,default:ephemeralport)
-P,--parallel#numberofparallelclientstreamstorun
-R,--reverseruninreversemode(serversends,clientreceives)
-w,--window#[KMG]setwindowsize/socketbuffersize
-C,--congestionsetTCPcongestioncontrolalgorithm(LinuxandFreeBSDonly)
-M,--set-mss#setTCP/SCTPmaximumsegmentsize(MTU-40bytes)
-N,--no-delaysetTCP/SCTPnodelay,disablingNagle'sAlgorithm
-4,--version4onlyuseIPv4
-6,--version6onlyuseIPv6
-S,--tosNsettheIP'typeofservice'
-L,--flowlabelNsettheIPv6flowlabel(onlysupportedonLinux)
-Z,--zerocopyusea'zerocopy'methodofsendingdata
-O,--omitNomitthefirstnseconds
-T,--titlestrprefixeveryoutputlinewiththisstring
--get-server-outputgetresultsfromserver
--udp-counters-64bituse64-bitcountersinUDPtestpackets
[KMG]indicatesoptionsthatsupportaK/M/Gsuffixforkilo-,mega-,orgiga-
iperf3homepageat:/iperf/
Reportbugsto:/esnet/iperf
Iperf应用实例
iperf是以C/S模式工作,运行于服务端和客户端下。服务端主要用于监听到达的测试请求,而客户端主要用于发起连接会话。因此要使用iperf,需要两台服务器,一台运行在服务器模式下,一台运行在客户端模式下。
1、测试TCP吞吐量
启动一个服务器端,使用iperf -s命令,默认监听5201端口,在客户端使用iperf -c +服务端ip,运行测试(这里使用web1作为服务端,web2作为客户端)
服务端自动接收客户端的连接请求
由输出结果看出,iperf默认输出10s的状态,Transfer列输出每秒的数量量在370MB左右,Bandwidth列显示网卡的速率
2、指定iperf的运行时间(-t参数)和输出速率(-i参数)##指定20秒内每隔5秒输出一次结果
[root@web2~]#iperf3-c192.168.1.250-t20-i5
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port55780connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthRetrCwnd
[4]0.00-5.00sec1.79GBytes3.07Gbits/sec01.07MBytes
[4]5.00-10.00sec1.85GBytes3.18Gbits/sec01.16MBytes
[4]10.00-15.00sec1.83GBytes3.14Gbits/sec01.20MBytes
[4]15.00-20.00sec1.78GBytes3.06Gbits/sec01.24MBytes
-------------------------
[ID]IntervalTransferBandwidthRetr
[4]0.00-20.00sec7.25GBytes3.11Gbits/sec0sender
[4]0.00-20.00sec7.24GBytes3.11Gbits/secreceiver
iperfDone.
3、指定发送数据量(-n参数)#指定发送一个5GB左右的数据包,并且每隔2秒输出状态结果
[root@web2~]#iperf3-c192.168.1.250-i2-n5000000000
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port56432connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthRetrCwnd
[4]0.00-2.00sec758MBytes3.18Gbits/sec0952KBytes
[4]2.00-4.00sec769MBytes3.23Gbits/sec0984KBytes
[4]4.00-6.00sec757MBytes3.17Gbits/sec01.01MBytes
[4]6.00-8.00sec684MBytes2.87Gbits/sec01.05MBytes
[4]8.00-10.00sec734MBytes3.08Gbits/sec01.08MBytes
[4]10.00-12.00sec754MBytes3.16Gbits/sec01.11MBytes
[4]12.00-12.88sec313MBytes2.99Gbits/sec01.12MBytes
-------------------------
[ID]IntervalTransferBandwidthRetr
[4]0.00-12.88sec4.66GBytes3.11Gbits/sec0sender
[4]0.00-12.88sec4.65GBytes3.10Gbits/secreceiver
iperfDone.
##指定一个文件传输(-F)
[root@web2~]#du-shntopng-2.2.tar.gz
88Mntopng-2.2.tar.gz
[root@web2~]#iperf3-c192.168.1.250-Fntopng-2.2.tar.gz-t20-i2
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port56948connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthRetrCwnd
[4]0.00-0.12sec36.7MBytes2.47Gbits/sec0420KBytes
-------------------------
[ID]IntervalTransferBandwidthRetr
[4]0.00-0.12sec36.7MBytes2.47Gbits/sec0sender
Sent36.7MByte/87.1MByte(42%)ofntopng-2.2.tar.gz
[4]0.00-0.12sec34.9MBytes2.36Gbits/secreceiver
iperfDone.
4、指定多线程网络传输测试(-P),同时可以使用-f M参数将结果通过MBytes/sec来显示#使用单线程传输,传输10GB的数据一共消耗了27.36秒,平均速率为350MBytes/sec
[root@web2~]#iperf3-c192.168.1.250-n10000000000-i5-fM
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port57348connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthRetrCwnd
[4]0.00-5.00sec1.58GBytes324MBytes/sec01.11MBytes
[4]5.00-10.00sec1.62GBytes333MBytes/sec01.21MBytes
[4]10.00-15.00sec1.65GBytes339MBytes/sec01.27MBytes
[4]15.00-20.00sec1.76GBytes361MBytes/sec01.31MBytes
[4]20.00-25.00sec1.82GBytes373MBytes/sec371.32MBytes
[4]25.00-27.36sec886MBytes376MBytes/sec01.35MBytes
-------------------------
[ID]IntervalTransferBandwidthRetr
[4]0.00-27.36sec9.31GBytes349MBytes/sec37sender
[4]0.00-27.36sec9.31GBytes348MBytes/secreceiver
iperfDone.[root@web2~]#iperf3-c192.168.1.250-n10000000000-i5
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port57585connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthRetrCwnd
[4]0.00-5.00sec1.87GBytes3.21Gbits/sec0990KBytes
[4]5.00-10.00sec1.87GBytes3.22Gbits/sec01.04MBytes
[4]10.00-15.00sec1.81GBytes3.12Gbits/sec01.12MBytes
[4]15.00-20.00sec1.75GBytes3.01Gbits/sec01.20MBytes
[4]20.00-25.00sec1.76GBytes3.03Gbits/sec141.37MBytes
[4]25.00-25.81sec245MBytes2.53Gbits/sec01.38MBytes
-------------------------
[ID]IntervalTransferBandwidthRetr
[4]0.00-25.81sec9.31GBytes3.10Gbits/sec14sender
[4]0.00-25.81sec9.31GBytes3.10Gbits/secreceiver
iperfDone.
5、指定多线程传输[root@web2~]#iperf3-c192.168.1.250-n10000000000-i5-P2-fM
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port57751connectedto192.168.1.250port5201
[6]local192.168.1.209port57752connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthRetrCwnd
[4]0.00-5.00sec905MBytes181MBytes/sec0585KBytes
[6]0.00-5.00sec903MBytes181MBytes/sec0602KBytes
[SUM]0.00-5.00sec1.77GBytes362MBytes/sec0
-------------------------
[4]5.00-10.00sec917MBytes183MBytes/sec0687KBytes
[6]5.00-10.00sec917MBytes183MBytes/sec0704KBytes
[SUM]5.00-10.00sec1.79GBytes367MBytes/sec0
-------------------------
[4]10.00-15.00sec929MBytes186MBytes/sec0723KBytes
[6]10.00-15.00sec929MBytes186MBytes/sec0735KBytes
[SUM]10.00-15.00sec1.81GBytes372MBytes/sec0
-------------------------
[4]15.00-20.00sec921MBytes184MBytes/sec0745KBytes
[6]15.00-20.00sec920MBytes184MBytes/sec0759KBytes
[SUM]15.00-20.00sec1.80GBytes368MBytes/sec0
-------------------------
[4]20.00-25.00sec919MBytes184MBytes/sec0782KBytes
[6]20.00-25.00sec919MBytes184MBytes/sec0802KBytes
[SUM]20.00-25.00sec1.79GBytes368MBytes/sec0
-------------------------
[4]25.00-25.97sec179MBytes184MBytes/sec0785KBytes
[6]25.00-25.97sec180MBytes185MBytes/sec0803KBytes
[SUM]25.00-25.97sec359MBytes369MBytes/sec0
-------------------------
[ID]IntervalTransferBandwidthRetr
[4]0.00-25.97sec4.66GBytes184MBytes/sec0sender
[4]0.00-25.97sec4.65GBytes183MBytes/secreceiver
[6]0.00-25.97sec4.66GBytes184MBytes/sec0sender
[6]0.00-25.97sec4.65GBytes183MBytes/secreceiver
[SUM]0.00-25.97sec9.31GBytes367MBytes/sec0sender
[SUM]0.00-25.97sec9.30GBytes367MBytes/secreceiver
iperfDone.
6、测试UDP丢包和延迟,使用-u参数指定UDP协议,-b(K|M|G)参数指定UD式使用的带宽模式[root@web2~]#iperf3-c192.168.1.250-u-b1G-fM-i2
Connectingtohost192.168.1.250,port5201
[4]local192.168.1.209port45424connectedto192.168.1.250port5201
[ID]IntervalTransferBandwidthTotalDatagrams
[4]0.00-2.00sec81.1MBytes40.5MBytes/sec10377
[4]2.00-4.00sec94.5MBytes47.3MBytes/sec12102
[4]4.00-6.00sec94.6MBytes47.3MBytes/sec12107
[4]6.00-8.00sec103MBytes51.5MBytes/sec13192
[4]8.00-10.00sec93.6MBytes46.8MBytes/sec11983
-------------------------
[ID]IntervalTransferBandwidthJitterLost/TotalDatagrams
[4]0.00-10.00sec467MBytes46.7MBytes/sec0.037ms435/59760(0.73%)
[4]Sent59760datagrams
iperfDone.
由输出结果显示,Jitter表示抖动时间,或者称为传输延迟,Lost/Total表示丢失的数据包和总的数据包数量,Datagrams表示总共传输数据包的数量
#在服务端的输出
Acceptedconnectionfrom192.168.1.209,port58179
[5]local192.168.1.250port5201connectedto192.168.1.209port45424
[ID]IntervalTransferBandwidthJitterLost/TotalDatagrams
[5]0.00-1.00sec35.6MBytes299Mbits/sec0.054ms29/4590(0.63%)
[5]1.00-2.00sec43.0MBytes361Mbits/sec0.071ms30/5533(0.54%)
[5]2.00-3.00sec48.4MBytes406Mbits/sec0.154ms29/6225(0.47%)
[5]3.00-4.00sec45.6MBytes382Mbits/sec0.026ms6/5837(0.1%)
[5]4.00-5.00sec47.3MBytes397Mbits/sec0.168ms124/6183(2%)
[5]5.00-6.00sec46.1MBytes387Mbits/sec0.023ms40/5941(0.67%)
[5]6.00-7.00sec49.0MBytes411Mbits/sec0.022ms48/6322(0.76%)
[5]7.00-8.00sec53.1MBytes446Mbits/sec0.037ms67/6867(0.98%)
[5]8.00-9.00sec44.9MBytes376Mbits/sec0.163ms26/5769(0.45%)
[5]9.00-10.00sec48.4MBytes406Mbits/sec0.015ms36/6232(0.58%)
[5]10.00-10.04sec2.04MBytes426Mbits/sec0.037ms0/261(0%)
-------------------------
[ID]IntervalTransferBandwidthJitterLost/TotalDatagrams
[5]0.00-10.04sec0.00Bytes0.00bits/sec0.037ms435/59760(0.73%)
-----------------------------------------------------------
Serverlisteningon5201
-----------------------------------------------------------
如果觉得《jperf linux运行 Linux网络性能评估工具iperf》对你有帮助,请点赞、收藏,并留下你的观点哦!