1、Iperf 使用说明Iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。参数说明-s 以 server 模式启动,eg:iperf s-c host 以 client 模式启动,host 是 server 端地址,eg:iperf -c 222.35.11.23通用参数-f k|m|K|M 分别表示以 Kbits, Mbits, KBytes, MBytes 显示报告,默认以 Mbits 为单位,eg:iperf -c 222.35.11.23 -f K-i
2、 sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 I 2-l 缓冲区大小,默认是 8KB,eg:iperf -c 222.35.11.23 -l 16-m 显示 tcp 最大 mtu 值-o 将报告和错误信息输出到文件 eg:iperf -c 222.35.11.23 -o c:iperflog.txt-p 指定服务器端使用的端口或客户端所连接的端口 eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999-u 使用 udp 协议-w 指定 TCP 窗口大小,默认是 8KB-B 绑定一个主机地址或接口(当主机有多个地址
3、或接口时使用该参数)-C 兼容旧版本(当 server 端和 client 端版本不一样时使用)-M 设定 TCP 数据包的最大 mtu 值-N 设定 TCP 不延时-V 传输 ipv6 数据包server 专用参数-D 以服务方式运行 ipserf,eg:iperf -s D-R 停止 iperf 服务,针对-D,eg:iperf -s Rclient 端专用参数-d 同时进行双向传输测试-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000-r 单独进行双向传输测试-t 测试时间,默认 10 秒,eg:iperf -c 222.35.11.23 -t
4、5-F 指定需要传输的文件-T 指定 ttl 值Iperf 使用方法与参数说明Iperf 是一个网络性能测试工具。可以测试 TCP 和 UDP 带宽质量,可以测量最大 TCP 带宽,具有多种参数和 UDP 特性,可以报告带宽,延迟抖动和数据包丢失。Iperf 在 linux 和 windows 平台均有二进制版本供自由使用。Iperf was developed by NLANRDAST as a modern alternative for measuring maximum TCP and UDP bandwidth performance. Iperf allows the tuning
5、 of various parameters and UDP characteristics. Iperf reports bandwidth, delay jitter, datagram loss. Iperf 的是由 NLANRDAST 开发作为一个现代的替代测量最大 TCP 和 UDP 带宽性能。iperf 的可以调整各种参数和 UDP 特性。iperf 的报告带宽,时延抖动,数据包丢失。Iperf 使用方法与参数说明参数说明-s 以 server 模式启动,eg:iperf -s-c host 以 client 模式启动,host 是 server 端地址,eg:iperf -c 2
6、22.35.11.23通用参数-f kmKM 分别表示以 Kbits, Mbits, KBytes, MBytes 显示报告,默认以 Mbits 为单位,eg:iperf -c 222.35.11.23 -f K-i sec 以秒为单位显示报告间隔,eg:iperf -c 222.35.11.23 -i 2-l 缓冲区大小,默认是 8KB,eg:iperf -c 222.35.11.23 -l 16-m 显示 tcp 最大 mtu 值-o 将报告和错误信息输出到文件 eg:iperf -c 222.35.11.23 -o ciperflog.txt-p 指定服务器端使用的端口或客户端所连接的端
7、口 eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999-u 使用 udp 协议-w 指定 TCP 窗口大小,默认是 8KB-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)-C 兼容旧版本(当 server 端和 client 端版本不一样时使用)-M 设定 TCP 数据包的最大 mtu 值-N 设定 TCP 不延时-V 传输 ipv6 数据包server 专用参数-D 以服务方式运行 iperf,eg:iperf -s -D-R 停止 iperf 服务,针对-D,eg:iperf s -Rclient 端专用参数-d 同时进行双
8、向传输测试-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000-r 单独进行双向传输测试-t 测试时间,默认 10 秒,eg:iperf -c 222.35.11.23 -t 5-F 指定需要传输的文件-T 指定 ttl 值应用实例使用 iperf -s 命令将 Iperf 启动为 server 模式,在客户机上使用 iperf -c 启动 client 模式。iperf s-Server listening on TCP port 5001TCP window size: 8.00 KByte (default)-iperf -c 59.128.103
9、.56上面使用服务端和客户端的默认设置进行测试iperf s -w 300K-Server listening on TCP port 5001TCP window size: 300 KByte-iperf -c 59.128.103.56 -f K -i 2 -w 300K设定报告间隔为 2 秒,服务器端和客户端的 TCP 窗口都开到300KBiperf -c 59.128.103.56 -f K -I 2 -w 300K n 1000000测试传输约 1MB 数据Iperf -c 59.128.103.56 -f K -I 2 -w 300K t 36测试持续 36 秒iperf -c
10、59.128.103.56 -f K -I 2 -w 300K -n 10400000 d测试双向的传输iperf -c 59.128.103.56 -f K -I 2 -w 300K uUDP 测试其中 -i 参数的含义是周期性报告的时间间隔(interval) ,单位为秒;在上面的例子中,表示每隔 2 秒报告一次带宽等信息。启动一个 iperf 服务器进程首先要介绍的命令用来启动 iperf 服务器监听进程以便监听客户端连接的。命令如下:iperf.exe -s -P 2 -i 5 -p 5999 -f k这个命令会启动 iperf,后续参数用来设定监听 5999 端口(默认端口是 500
11、1), 限定 iperf 只允许两个连接,每 5 秒汇报一次连接情况。连接限制参数(-P 参数)非常重要,当两个连接建立后,服务器进程就会退出。如果这个参数设定为 0,那么 iperf 进程将持续监听端口,并且不限制连接数量。在 Windows 主机上键入该命令,会显示出如图 A 所示界面图 A启动一个 iperf 客户端连接iperf 的另一半就是客户端,用来连接到服务器监听端口。比如我们要连接到一台叫做 s-network1.amcs.tld 的服务器,端口为5999,连接 60 秒并且每 5 秒显示一次状态,命令行如下:iperf.exe -c s-network1.amcs.tld -
12、P 1 -i 5 -p 5999 -f B -t 60 -T 1命令启动后,s-network1 主机被用来进行网络性能检测。与Jperf GUI 界面提供的漂亮图形不同, iperf 只会根据测量参数简单的报告网络带宽状况,在本例中是以 比特为单位(-f 参数)进行带宽表示的。图 B 显示了远程客户端与 s-network1 主机间的带宽性能。图 B为了应对日常便捷应用的需求,我们可以建立一个 .bat 批处理文件,届时填入服务器名称即可实现快速检测。以下为实际使用的拷屏:C:jperfjperfbiniperfUsage: iperf -s|-c host optionsTry iperf
13、 -help for more information.C:jperfjperfbiniperf helpUsage: iperf -s|-c host optionsiperf -h|-help -v|-versionClient/Server:-f, -format kmKM format to report: Kbits, Mbits, KBytes, Mbytes-i, -interval # seconds between periodic bandwidth reports-l, -len #KM length of buffer to read or write (default
14、 8 KB)-m, -print_mss print TCP maximum segment size (MTU - TCP/IP header)-o, -output output the report or error message to this specified file-p, -port # server port to listen on/connect to-u, -udp use UDP rather than TCP-w, -window #KM TCP window size (socket buffer size)-B, -bind bind to , an inte
15、rface or multicast address-C, -compatibility for use with older versions does not sent extra msgs-M, -mss # set TCP maximum segment size (MTU - 40 bytes)-N, -nodelay set TCP no delay, disabling Nagles Algorithm-V, -IPv6Version Set the domain to IPv6Server specific:-s, -server run in server mode-D, -
16、daemon run the server as a daemon-R, -remove remove service in win32Client specific:-b, -bandwidth #KM for UDP, bandwidth to send at in bits/sec(default 1 Mbit/sec, implies -u)-c, -client run in client mode, connecting to -d, -dualtest Do a bidirectional test simultaneously-n, -num #KM number of byt
17、es to transmit (instead of -t)-r, -tradeoff Do a bidirectional test individually-t, -time # time in seconds to transmit for (default 10 secs)-F, -fileinput input the data to be transmitted from a file-I, -stdin input the data to be transmitted from stdin-L, -listenport # port to recieve bidirectiona
18、l tests back on-P, -parallel # number of parallel client threads to run-T, -ttl # time-to-live, for multicast (default 1)Miscellaneous:-h, -help print this message and quit-v, -version print version information and quitKM Indicates options that support a K or M suffix for kilo- or mega-The TCP windo
19、w size option can be set by the environment variableTCP_WINDOW_SIZE. Most other options can be set by an environment variableIPERF_, such as IPERF_BANDWIDTH.使用测试工具 iPerf 监控无线网络性能很多公司都在将自己的无线网络升级到 802.11n,以实现更大的吞吐量、更广的覆盖范围和更高的可靠性,然而保证无线LAN(WLAN)的性能对于确保足够的网络容量和覆盖率尤为重要。下面,我们将探讨如何通过 iPerf 来测定网络性能,这是一个简单
20、易用测量 TCP/UDP 的吞吐量、损耗和延迟的工具。 应用前的准备iPerf 是专门用于简化 TCP 性能优化的工具,使用它可以很容易地测量吞吐量和带宽的最大值。当与 UDP 一起使用时,iPerf 还可以测量数据丢失和延迟(抖动) 。iPerf 可以在任何 IP 网络上运行,包括本地以太网,因特网接入连接和 Wi-Fi 网络。使用 iPerf 之前,必须安装两个组件:iPerf 服 务器(用于监听到达的测试请求)和 iPerf 客户端(用于发起测试会话) 。iPerf可通过开放源代码或可执行二进制方式获取,它支持许多操作系统平台,包括 Win32、Linux、FreeBSD、MacOS X
21、、OpenBSD 和Solaris。你可以在 NLANR 上下载 iPerf 的 Win32 安装程序,而Java GUI 版本(JPerf)则可以从 SourceForge 下载。为了测量 Wi-Fi 性能,你可能需要在所测试的接入点(AP)的以太网主机上游位置上安装 iPerf这个也就是你的测试服务器。接着,在一个或更多的 Wi-Fi 笔记本上安装 iPerf这些将是你的测试客户端。这个就是典型的 Wi-Fi 客户端与有线服务器之间的应用网络。如果你的目的是测量 AP 性能,那么可以把 iPerf 服务器与 AP 放置在相同 LAN 上,并通过高速或超高速以太网连接。如果你的目的是清除瓶颈
22、问题,那么可以将 iPerf 服务器要与实际的应用服务器放置在相同位置,这样就会有一个可比较的网络通道。另外,iPerf 服务器和客户端可以同时安装在 Wi-Fi 笔记本上的。当你要在无线客户端上支持视频或语音通信,那么这对于测量客户端到客户端性能是有帮助的。同样,要确保 iPerf 流量能够穿越你要测试的整个网络通道。比如,如果你要在相邻位置的 Wi-Fi客户端上测量性能的最佳值,你必须把你的 iPerf 客户端和服务器接入到相同的 AP 上。如果你想要观察穿越上流交换机或 WAN 的路由是如何影响网络性能的,那么可以把你的 iPerf 服务器接入到一个中央 AP 上,并且将 iPerf 客
23、户端与在不同的地点的 AP 连接。使用测试工具 iPerf 监控无线网络性能:运行 iPerf运行 iPerf在默认的情况下,iPerf 客户端与指定的监听 5001 端口的iPerf 服务器建立一个 TCP 会话。比如,在命令提示符上执行命令:iperf s,打开 iPerf 服务器;然后打开另一个窗口来启动你的iPerf 客户端:上面命令是你可以用来测量通过某个计算机回环地址(127.0.0.1)吞吐量。如果执行失败,那么这就表示你没有正确的安装 iPerf。默认的情况下,iPerf 运行一个 10 秒钟的测试,测量所传输的字节总数(如 270 兆字节)和相应的带宽使用估计(如226 兆比
24、特每秒) 。测试长度可以通过指定时间参数(-t seconds)或缓冲参数(-n buffers)控制。而且,你还可以在指定时间间隔(-i seconds)中看到测试的结果。如果要长时间地运行多个的测试,你应该更愿意将 iPerf 服务器作为后台程序运行,并将服务器输出写入一个日志文件中。在Win32 平台上,它可以通过把 iPerf 作为服务(iPerf -s -D -o logfile.txt)安装来实现。如果你测试的流量将要通过网络防火墙,那么要确保打开端口 5001 或指定 iPerf 使用已经开放的端口(如,iPerf -c -p 80)。如果你的 iPerf 服务器处于 NAT 防
25、火墙之后,那么你可能需要配置一个端口转发规则来进行连接(这种情况在服务器到客户端流量的双向测试中也一样适用) 。最后,要禁用你的iPerf 客户端和服务器上的任何个人防火墙。当客户端能够到达服务器时,你就可以开始测量网络性能了。测量 TCP 吞吐量为了确定最大 TCP 吞吐量,iPerf 尝试从客户端尽可能快地向服务器上发送数据。默认时数据是以 8KB 大小缓冲发送的,这也是通过操作系统的默认的 TCP 窗口大小值。为了模拟特定 TCP 应用,你可以指定你的 iPerf 客户端从一个特定的文件(-F 文件名)或交互式输入(-I)来发送数据。比如:如果你没有指定发送方式,iPerf 客户端只会使
26、用一个单一的线程。而你可以修改为使用多个并行线程(-P 数目)来发送数据。在测试 Wi-Fi 时,在同一台笔记本上的多线程可能会略微增加整体的吞吐量。n a single laptop are still sharing time on one Wi-Fi adapter.但是,有时你将需要使用多台拥有各自 Wi-Fi 适配器的笔记本来模拟几个不同位置用户体验的性能。这是因为在同一个笔记本上运行的多线程仍然共享同一个 Wi-Fi 适配器上的占用时间。另外一方面,如果你的笔记本上拥有多个激活的适配器,你可以使用 IP 地址(-B IPAddress)将 iPerf 客户端绑定到一个适配器上。这个
27、对于同时连接到 Ethernet 和 Wi-Fi(3G、Wi-Fi)的多连接笔记本来说是相当重要的。iPerf 原先是开发用来辅助 TCP 参数优化的,但在此我们不想深入研究 TCP 窗户尺度和最大段长度,因为这不是我们目前讨论的重点。然而,在测试高吞吐量 AP 时,你可能发现有必要对 TCP 参数进行调优,以便在每个 iPerf 客户端上获得更大吞吐量详细请阅读 DrTCP。使用测试工具 iPerf 监控无线网络性能:测量 UDP 丢包和延迟iPerf 同样也可以用于测量 UDP 数据包吞吐量、丢包和延迟指标。与 TCP 测试不同的是,UDP 测试不采取尽可能快地发送流量的方式。与之相对的是
28、,iPerf 尝试发送 1 Mbps 的流量,这个流量是打包在 1470 字节的 UDP 数据包中(成为以太网的一帧) 。我们可以通过指定一个目标带宽参数来增加数据量,单位可以是 Kbps 或Mbps(-b #K 或 -b #M) 。举例如下:然而,上面的例子只说明了 iPerf 客户端能够以多快的速度传输数据。为了得到更多关于 UDP 发送的数据,我们必须查看服务器上的结果:这样,我们就可以看到吞吐量(间隔 1 秒测量的) ,以及丢包数(丢失的数据屯接收到的数据对比)和延迟(如 jitter在连续传输中的平滑平均值差) 。延迟和丢失可以通过应用的改变而被兼容。比如,视频流媒体通过缓冲输入而能
29、够容忍更多的延迟,而语音通讯则随着延迟增长性能下降明显。UDP 测试可以通过改变报文缓冲长度进行优化,长度单位为Kbytes 或 Mbytes(-l #K or #M) 。与以太网帧的 1500 比特的MTU(最大转换单位)不同的是,802.11 数据帧可以达到 2304 比特(在加密之前) 。但是,如果你正在测试的路径中包括 Ethernet 和 802.11,那么要控制你的测试数据包长度,使它在一个 Ethernet 帧以内,以避免分片。另一个有趣的 iPerf UDP 测试选项是服务类型(Type of Service, ToS) ,它的大小范围从 0x10 (最小延迟) 到 0x2 (
30、最少费用)。在使用 802.11e 来控制服务质量的 WLAN 中,ToS 是映射在Wi-Fi 多媒体(WMM)存取范畴的。对比两种方式在 802.11a/b/g 网络中,无线电的传输性能变化在在两个方向上都很相似。比如,当距离导致数据传输率下降或干扰造成重要数据包丢失时,发送和接收的应用吞吐量都受到影响。在 802.11n 网络中,MIMO 天线和多维空间流使问题又有所不同。从笔记本发送到 AP 上的数据帧可能(有意地)使用一个完全与从AP 发送到笔记本上帧时不同的空间路径。这样的结果是,现在对两个方向的测试都很重要的。幸运的是,iPerf 本身就已经拥有这个功能,这是由两个选项所控制的:-
31、d 选项是用于告诉 iPerf 服务器马上连接回 iPerf 客户端的由-L 所指定端口,以支持同时测试两个方向的传输。-r 选项虽然有些类似,但是它是告诉 iPerf 服务器等到客户端测试完成后再在相反的方向中重复之前的测试。最后,如果你需要支持多点传送应用,那么可以使用-B 选项指定多点传送组 IP 地址来启动多个 iPerf 服务器。然后再打开你的iPerf 客户端,连接之前启动的多点传送组 iPerf 服务器。使用测试工具 iPerf 监控无线网络性能:图形化测试结果如本文介绍的,iPerf 程序可以在命令行下运行,它或者也在一个名为 JPerf 的 Java 实现前端工具上运行。JP
32、erf 不仅能简化复杂命令行参数的构造,而且它还保存测试结果同时实时图形化显示结果。图 1 使用 JPerf 运行 iPerf事实上,iPerf 测试工具被嵌入到一些其它的网络流量分析工具中包括底层 LAN 分析工具,如 AirMagnet。比如,在下面的屏幕截图中显示了一个 Wi-Fi 笔记本上运行的 AirMagnet 作为iPerf 客户端与安装在有线网络上的常规 iPerf 服务器进行交互的情况。图 2 使用 AirMagnet 运行 iPerf总结正如我们所看到的,iPerf 简化了对基于 TCP 数据流应用和 UDP数据包应用的端对端性能测定。然而,iPerf 仍然无法模拟所有类型的应用比如,对于交互式上网的模拟就不是很好。同时,用于 iPerf Wi-Fi 测试的 WLAN 适配器也会影响你的测试为了获得更好的测试结果,我们可以配置一个类似于“实际”用户的有代表性的适配器。尽管如此,iPerf 仍然是一个非常方便的工具,它可以帮助你生成和检测 WLAN 应用流量。同时,因为 iPerf 可以方便以开源软件方式获取,因此使用它来在其它位置重复创建测试环境是一个很好的方法如分公司、供应商技术支持等等。想要了解更多关于iPerf 的信息,可以阅读 NLANR 上的更老的文件或者浏览SourceForge 上新的项目页面。