网络的基本目的是有效地共享资源。利用可靠的网络测试工具建立定期的网络测试对于:了解网络的状态、确保配置更改按预期工作、检测瘫痪网络、提供一流的终端用户体验。那么网络性能也是非常关键的。只要是需要快速而且大量的网络数据传输的应用都可以作为网络性能基准测试工具,可以是专门用于测试网络带宽的Netperf、Iperf等,也可以是常用的Linux上的文件传输工具SCP。下面简单介绍几种常用的网络性能测试工具。

1. Netperf

Netperf可以测试网络性能的多个方面,主要包括使用TCP、UDP等协议的单向批量数据传输模式和请求-响应模式的传输性能。Netperf主要测试的项目包括:使用BSD Sockets的TCP和UDP连接(IPv4和IPv6)、使用DLPI接口的链路级别的数据传输、Unix Domain Socket、SCTP协议的连接(IPv4和IPv6)。下载链接:​​https://github.com/HewlettPackard/netperf​​。

Netperf采用客户机/服务器(Client/Server)的工作模式:服务端是netserver,用来侦听来自客户端的连接,客户端是netperf,用来向服务端发起网络测试。在客户端与服务端之间,首先建立一个控制连接,用于传递有关测试配置的信息和测试完成后的结果;在控制连接建立并传递了测试配置信息以后,客户端与服务端之间会另外再建立一个测试数据连接,用来传递指定测试模式的所有数据;当测试完成后数据连接就断开,控制连接会收集好客户端和服务端的测试结果,然后让客户端展示给用户。

可以测试以下几种模式的TCP核UDP网络性能:

  • TCP_STREAM: client端向server端发送批量TCP数据
  • UDP_STREAM:client端向server端发送批量UDP数据
  • TCP_RR和TCP_CRR:前者是在同一个连接中进行多次request和response请求,后者是每次请求新建一个连接(HTTP)
  • UDP_RR:使用UDP进行request和response请求
2. Iperf3

iperf3 的主要开发在 CentOS Linux、FreeBSD 和 macOS 上进行。iperf 系列工具执行主动测量以确定 IP 网络上可实现的最大带宽。它支持调整与时序、协议和缓冲区相关的各种参数。对于每个测试,它都会报告测量的吞吐量、损耗和其他参数。下载链接:​​https://downloads.es.net/pub/iperf/iperf-3.11.tar.gz​​。

iperf3 是一个从头开始的新实现,目标是更小、更简单的代码库,以及可在其他程序中使用的功能的库版本。iperf3 还集成了其他工具(例如 nuttcp 和 netperf)中的许多功能,但原始 iperf 中缺少这些功能。例如,这些包括零复制模式和可选的 JSON 输出。请注意,iperf3与原始 iperf不向后兼容。

简单参数介绍如下:

#常用公共参数
-i 2 #表示每2秒显示一次报告
-w 80k #对于TCP方式,此设置为TCP窗口大小。对于UDP方式,此设置为接受UDP数据包的缓冲区大小,限制可以接受数据包的最大值

-B 192.168.122.1
#绑定到主机的多个地址中的一个。对于客户端来说,这个参数设置了出栈接口。对于服务器端来说,这个参数设置入栈接口。这个参数只用于具有多网络接口的主机。
#在Iperf的UDP模式下,此参数用于绑 定和加入一个多播组。使用范围在224.0.0.0至239.255.255.255的多播地址

#常用客户端参数
-b 100m #用于udp测试时,设置测试发送的带宽,单位:bit/秒,不设置时默认为:1Mbit/秒
-c  #指定服务端ip地址
-d  #同时测试上行和下行
-t 10 #设置传输时间,为10秒
-P 5 #指定发起5个线程
3. SCP

SCP是Linux系统上最常用的远程文件复制程序,它可以作为实际的应用来测试网络传输的效率。用SCP远程传输同等大小的一个文件,根据其花费时间的长短可以粗略评估出网络性能的好坏。

常见参数如下:

-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。

示例如下:

  • 从远处复制文件到本地目录,从192.168.1.1机器上的/home/soft/的目录中下载nginxtar.gz 文件到本地/root/soft/目录中。
scp root@192.168.1.1:/home/soft/nginx.tar.gz  /root/soft/
  • 上传本地文件到远程机器指定目录,复制本地/root/soft/目录下的文件nginx.tar.gz到远程机器192.168.1.1的/home/soft/nginx目录。
scp /root/soft/nginx.tar.gz root@192.168.1.1:/home/soft/ngnix
4. TTCP

TTCP是一个传统的测试TCP性能的工具,它主要测试两个机器之间TCP的吞吐量,在应用层模拟消息传递的过程——客户端发送一个包,服务端对包进行确认,并且在确认之前客户端不发送下一个包。可以设置发包的数量和每个包的大小,程序计算传输所有包所用的时间,然后计算出带宽。源码下载:​​https://sourceforge.net/projects/ttcp/​​。