⽹络性能测试⼯具iperf详解
⽹络性能测试⼯具iperf详细使⽤图⽂教程
Iperf是⼀个⽹络性能测试⼯具。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最⼤TCP带宽,具有多种参数和UDP特性。Iperf可以报告带宽,延迟抖动和数据包丢失。利⽤Iperf这⼀特性,可以⽤来测试⼀些⽹络设备如路由器,防⽕墙,交换机等的性能。
Iperf和Jperf的相关⽂件已打包在附件中
Iperf的主要功能如下:
TCP
测量⽹络带宽
报告MSS/MTU值的⼤⼩和观测值
⽀持TCP窗⼝值通过套接字缓冲
当P线程或Win32线程可⽤时,⽀持多线程。客户端与服务端⽀持同时多重连接
UDP
客户端可以创建指定带宽的UDP流
测量丢包
测量延迟
⽀持多播
unique是什么意思当P线程可⽤时,⽀持多线程。客户端与服务端⽀持同时多重连接(不⽀持Windows)
其他
在适当的地⽅,选项中可以使⽤K(kilo-)和M(mega-)。例如131072字节可以⽤128K代替。
可以指定运⾏的总时间,甚⾄可以设置传输的数据总量。
在报告中,为数据选⽤最合适的单位。
服务器⽀持多重连接,⽽不是等待⼀个单线程测试。
在指定时间间隔重复显⽰⽹络带宽,波动和丢包情况。
服务器端可作为后台程序运⾏。
服务器端可作为Windows 服务运⾏。
使⽤典型数据流来测试链接层压缩对于可⽤带宽的影响。
⽀持传送指定⽂件,可以定性和定量测试
Iperf使⽤⽅法
1. 安装Iperf
1. 对于windows版的Iperf,直接将解压出来的和cygwin1.dll复制到%systemroot%⽬录即可
2. 对于linux版的Iperf,请使⽤如下命令安装
gunzip -c iperf-<version>. | tar -xvf -
cd iperf-<version>
.
personality作文/configure
make
make install
2. 使⽤Iperf(以windows版本为例)涸辙之鲋的故事
在命令提⽰符中输⼊iperf命令即可运⾏Iperf,使⽤命令Iperf –help可以查看iperf的帮助
3. Iperf参数介绍
命令⾏选项描述
客户端与服务器共⽤选项
-f, --format [bkmaBKMA]格式化带宽数输出。⽀持的格式有:
'b' = bits/c 'B' = Bytes/c
'k' = Kbits/c 'K' = KBytes/c
'm' = Mbits/c 'M' = MBytes/c
'g' = Gbits/c 'G' = GBytes/c
'a' = adaptive bits/c 'A' = adaptive Bytes/c
⾃适应格式是kilo-和mega-⼆者之⼀。除了带宽之外的字段都输出为字节,除⾮指定输出的格式,默认的参数是a。注意:在计算字节byte时,Kilo = 1024, Mega = 1024^2,Giga = 1024^3。通常,在⽹络中,Kilo = 1000, Mega = 1000^2, and Giga = 1000^3,所以,Iperf也按此来计算⽐特(位)。如果这些困扰了你,那么请使⽤-f b参数,然后亲⾃计算⼀下。
-i, --interval #设置每次报告之间的时间间隔,单位为秒。如果设置为⾮零值,就会按照此时间间隔输出测试报告。默认值为零。-l, --len #[KM]设置读写缓冲区的长度。TCP⽅式默认为8KB,UDP⽅式默认为1470字节。
-m, --print_mss输出TCP MSS值(通过TCP_MAXSEG⽀持)。MSS值⼀般⽐MTU值⼩40字节。通常情况
-p, --port #设置端⼝,与服务器端的监听端⼝⼀致。默认是5001端⼝,与ttcp的⼀样。
-u, --udp使⽤UDP⽅式⽽不是TCP⽅式。参看-b选项。
-w, --window # [KM]设置套接字缓冲区为指定⼤⼩。对于TCP⽅式,此设置为TCP窗⼝⼤⼩。对于UDP⽅式,此设置为接受UDP数据包的缓冲区⼤⼩,限制可以接受数据包的最⼤值。
-B, --bind host绑定到主机的多个地址中的⼀个。对于客户端来说,这个参数设置了出栈接⼝。对于服务器端来说,这个参数设置⼊栈接⼝。这个参数只⽤于具有多⽹络接⼝的主机。在Iperf的UDP模式下,此参数⽤于绑定和加⼊⼀个多播组。使⽤范
围在224.0.0.0⾄239.255.255.255的多播地址。参考-T参数。
-C, --compatibility 与低版本的Iperf使⽤时,可以使⽤兼容模式。不需要两端同时使⽤兼容模式,但是强烈推荐两端同时使⽤兼容模式。某些情况下,使⽤某些数据流可以引起1.7版本的服务器端崩溃或引起⾮预期的连接尝试。
-M, --mss # [KM}通过TCP_MAXSEG选项尝试设置TCP最⼤信息段的值。MSS值的⼤⼩通常是TCP/IP头减去40字节。在以太⽹中,MSS值为1460字节(MTU1500字节)。许多操作系统不⽀持此选项。
-N, --nodelay设置TCP⽆延迟选项,禁⽤Nagle's运算法则。通常情况此选项对于交互程序,例如telnet,是禁⽤的。
中翻英在线-
V (from v1.6 or higher)绑定⼀个IPv6地址。
服务端:$ iperf -s –V
客户端:$ iperf -c <Server IPv6 Address> -V
注意:在1.6.3或更⾼版本中,指定IPv6地址不需要使⽤-B参数绑定,在1.6之前的版本则需要。在⼤多数操作系统中,将响应IPv4客户端映射的IPv4地址。
服务器端专⽤选项
-s, --rver Iperf服务器模式
-D (v1.2或更⾼
版本)
Unix平台下Iperf作为后台守护进程运⾏。在Win32平台下,Iperf将作为服务运⾏。
-R(v1.2或更⾼
版本,仅⽤于
Windows)
剑桥雅思7卸载Iperf服务(如果它在运⾏)。
-o(v1.2或更⾼
版本,仅⽤于
Windows)
重定向输出到指定⽂件
-c, --client host如果Iperf运⾏在服务器模式,并且⽤-c参数指定⼀个主机,那么Iperf将只接受指定主机的连接。此参数不能⼯作于UDP模式。
-P, --parallel #服务器关闭之前保持的连接数。默认是0,这意味着永远接受连接。
客户端专⽤选项
-b, --
bandwidth #
[KM]
UDP模式使⽤的带宽,单位bits/c。此选项与-u选项相关。默认值是1 Mbit/c。
-c, --client host运⾏Iperf的客户端模式,连接到指定的Iperf服务器端。
-d, --dualtest运⾏双测试模式。这将使服务器端反向连接到客户端,使⽤-L 参数中指定的端⼝(或默认使⽤客户端连接到服务器端的端⼝)。这些在操作的同时就⽴即完成了。如果你想要⼀个交互的测试,请尝试-r参数。
-n, --num # [KM]传送的缓冲器数量。通常情况,Iperf按照10秒钟发送数据。-n参数跨越此限制,按照指定次数发送指定长度的数据,⽽不论该操作耗费多少时间。参考-l与-t选项。
-r, --tradeoff往复测试模式。当客户端到服务器端的测试结束时,服务器端通过-l选项指定的端⼝(或默认为客户端连接到服务器端的端⼝),反向连接⾄客户端。当客户端连接终⽌时,反向连接随即开始。如果需要同时进⾏双向测试,请尝试-d参
数。
-t, --time #设置传输的总时间。Iperf在指定的时间内,重复的发送指定长度的数据包。默认是10秒钟。参考-l与-n选项。
-L, --listenport指定服务端反向连接到客户端时使⽤的端⼝。默认使⽤客户端连接⾄服务端的端⼝。
#-P, --parallel #线程数。指定客户端与服务端之间使⽤的线程数。默认是1线程。需要客户端与服务器端同时使⽤此参数。
-S, --tos #出栈数据包的服务类型。许多路由器忽略TOS字段。你可以指定这个值,使⽤以"0x"开始的16进制数,或以"0"开始的8进制数或10进制数。
例如,16进制'0x10' = 8进制'020' = ⼗进制'16'。TOS值1349就是:
IPTOS_LOWDELAY minimize delay 0x10
IPTOS_THROUGHPUT maximize throughput 0x08
IPTOS_RELIABILITY maximize reliability 0x04
IPTOS_LOWCOST minimize cost 0x02
-T, --ttl #出栈多播数据包的TTL值。这本质上就是数据通过路由器的跳数。默认是1,链接本地。
-F (from v1.2 or higher)使⽤特定的数据流测量带宽,例如指定的⽂件。$ iperf -c <rver address> -F
<file-name>
-I (from v1.2 or
higher)
与-F⼀样,由标准输⼊输出⽂件输⼊数据。
杂项
-h, --help显⽰命令⾏参考并退出。
-v, --version显⽰版本信息和编译信息并退出。
4. ⽤Iperf测试路由器的性能
1. 测试单线程TCP
在服务端运⾏iperf,输⼊命令iperf –s –p 12345 –i 1 –M 以在本机端⼝12345上启⽤iperf
在客户端运⾏iperf,输⼊命令iperf –c rver-ip –p rver-port –i 1 –t 10 –w 20K,其中参数说明如下:
-c:客户端模式,后接服务器ip
-p:后接服务端监听的端⼝
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒
-w:设置tcp窗⼝⼤⼩,⼀般可以不⽤设置,默认即可
测试后截图如下:
客户端截图
服务端截图
其中:Interval表⽰时间间隔。Transfer表⽰时间间隔⾥⾯转输的数据量。Bandwidth是时间间隔⾥的传输速率。最后⼀⾏是本次测试的统计。测试可知带宽平均为89.9Mbit/s。
1. 测试多线程TCP
在客户端添加-P参即可测试多线程的TCP性能,如下为使⽤两个线程的测试情况
客户端
2. 测试单线程UDP(默认带宽)
在服务端运⾏iperf,输⼊命令iperf –s -u –p 12345 –i 1 以在本机端⼝12345上启⽤iperf,并运⾏于udp模式
在客户端运⾏iperf,输⼊命令iperf -c rver-ip -p rver-port -i 1 -t 10 -b,其中参数说明如下:
-c:客户端模式,后接服务器ip
-p:后接服务端监听的端⼝
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒
-b:设置udp的发送带宽,单位bit/s
客户端
服务端中国功夫
其中,Jitter为抖动,lost/total为丢包数量,Datagrams为包数量。
1. 测试单线程UDP(带宽为10Mbit/s)
设置客户端带宽为10M即可,使⽤参数-b指定
客户端
服务端
1. 测试多线程UDP
与多线程TCP类似,只需要客户端使⽤-P参数指定线程个数即可
1. 测试UDP的双向传输
客户端使⽤参数-d以运⾏双测试模式,客户端会与服务端进⾏udp往返测试。可以使⽤-L参数指定本端双测试监听的端⼝。
shoot是什么意思客户端
服务端
1. 测试UDP往复传输
与双向传输类似,使⽤参数-r以运⾏交互模式,仍然可以使⽤-L参数指定交互的端⼝。
客户端
服务端
1. 分布式测试
使⽤多台电脑或使⽤⼀台电脑的多个IP地址测试。当使⽤⼀台电脑的多个iP地址测试时,可以使⽤-B命令绑定⽹卡的某⼀个ip地址以测试
Jperf使⽤⽅法
JPerf2.0简介fdsa
Jperf是将iperf命令⾏图形化的JAVA程序;
使⽤JPerf程序能简化了复杂命令⾏参数的构造,⽽且它还保存测试结果,同时实时图形化显⽰结果。JPerf可以测试TCP和UDP带宽质量。JPerf可以测量最⼤TCP带宽,具有多种参数和UDP特性。JPerf
可以报告带宽,延迟抖动和数据包丢失。
JPerf2.0运⾏环境
操作系统:Java运⾏环境:
五金 英语
⽹络要求:Jperf可以在任何IP ⽹络上运⾏,包括本地以太⽹,因特⽹接⼊连接和Wi-Fi⽹络。
其他:使⽤JPerf必须安装两个组件:JPerf 服务器(⽤于监听到达的测试请求)和JPerf客户端(⽤于发起测试会话)JPerf2.0页⾯如下图:
JPerf2.0具体介绍
1. Iperf命令⾏(⽆法直接输⼊)
1. 服务端设置
监听端⼝:5001
client limit:客户端限制,仅允许指定客户端连接
Num Connections:最⼤允许连接的数量,为0不限制
2. 客户端设置
服务器地址:10.0.115.82 ,端⼝:5001 ,并发流:1个
3. 应⽤层设置
1、兼容旧版本(当rver端和client端版本不⼀样时使⽤)
2、设置测试模式:传输字节总量⼤⼩15Bytes或者按传输时间总长度15秒
3、同时进⾏双向传输测试
4、单独进⾏双向传输测试,先测c到s的带宽
5、指定需要传输的⽂件
6、显⽰tcp最⼤mtu值
4. 传输层设置
stefano1、TCP协议
设置缓冲区⼤⼩
指定TCP窗⼝⼤⼩
设定TCP数据包的最⼤mtu值
设定TCP不延时
2、UDP协议
设置UDP最⼤带宽
设置UDP缓冲区
UDP包封装⼤⼩:默认1470 byte