测量网络性能:使用 Iperf 查找带宽、抖动、数据报丢失
通常,当用户发现其应用程序存在问题时,他们会发送网络吞吐量问题报告,例如:
[a] FTP 传输 [b] NFS 性能 HTTP / SMTP / POP3 等作为系统管理员,您应该能够确认吞吐量问题。iperf 是您要查找的工具:
a) 网络吞吐量问题
b)丢包问题
c) 数据报丢失
d) 延迟抖动
从手册页中:
iperf 是一个测量最大 TCP 带宽的工具,允许调整各种参数和 UDP 特性。
iperf 以客户端/服务器模式运行。您需要在客户端计算机和服务器计算机上都安装 iperf,以测量两个节点之间的网络性能。
因此,通过将报告的应用程序吞吐量与测量的 TCP 吞吐量和测量的可用带宽进行比较,可以:
a) 找出应用程序问题
b) TCP 堆栈问题
c) 网络问题
d) 带宽瓶颈问题等
还有ttcp 程序,它是用于确定两个系统之间的 TCP 和 UDP 性能的基准测试工具。
任务:安装 iperf
如果您使用的是 Debian / Ubuntu Linux,请输入:
$ sudo apt-get install iperf
如果您使用的是 FreeBSD,请输入:
RHEL / CentOS 的源代码安装:您还可以使用EPEL repo
中的 yum 命令,如下所示:
# cd /usr/ports/benchmarks/iperf
# make install clean
# gunzip -c iperf-
# cd iperf-
# make; make install
# yum install iperf
在服务器上启动 iperf
要在服务器上启动 iperf,请输入以下命令:
root@freebsd42 # /usr/local/bin/iperf -s
输出:
------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 64.0 KByte (default) ------------------------------------------------------------
从客户端测试 iperf
尝试使用位于其他数据中心的 Linux 客户端连接到名为 freebsd42 的 FreeBSD 服务器,输入:
$ iperf -c freebsd42
输出(请注意,我的 freebsd42 服务器的互联网链接速度很慢):
------------------------------------------------------------
Client connecting to freebsdbox, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.106 port 40256 connected with 71.zzz.xxx.yyy port 5001
[ 3] 0.0-10.7 sec 624 KBytes 480 Kbits/sec
最后一行(红色数字)指定速度。
使用 UDP 而不是 TCP
-u 选项强制使用 UDP。以下示例运行 UDP 测试,并使用 -b 选项指定发送带宽(以位/秒为单位):
$ iperf -c rhelbox -u -l 512 -b 10m
进一步阅读:
- iperf 项目主页
- iperf 手册页
其他推荐的带宽测量工具
除了 iperf 之外,您还可以使用以下工具来评估网络中两点之间的带宽:
- 带宽测试控制器 (BWCTL)
- ndt(网络诊断工具)
- Netperf(网络性能基准)
- Thrulay (改进版)