网络性能测试的一些方法 & 工具一、 意义测试网络性能
二、 网络性能指标带宽(Bandwidth)
定义:网络连接在单位时间内能够传输的最大数据量,通常以每秒兆比特(Mbps)或每秒千兆比特(Gbps)来表示。正常范围:取决于网络类型和需求。例如,家庭宽带通常为100 Mbps到1 Gbps;企业网络可能为100 Mbps到10 Gbps或更高。吞吐量(throughput)
定义:实际在单位时间内传输的数据量,通常以每秒兆比特(Mbps)来表示。正常范围:理想情况下接近带宽,但由于网络开销和其他因素,实际吞吐量通常比带宽低。延迟(Latency)
定义:数据包从源端到达目的端所需的时间,通常以毫秒(ms)为单位。正常范围:局域网(LAN)通常在1 ms到5 ms之间;广域网(WAN)可能在10 ms到100 ms或更高。抖动(Jitter)
定义:数据包传输延迟的变异性,通常以毫秒(ms)为单位。正常范围:对于语音和视频应用,抖动应尽量低,一般在30 ms以内较为理想。丢包率(Pocket Lost Rate)
定义:在数据传输过程中丢失的数据包占总数据包的比例,通常以百分比表示。正常范围:理想情况下应接近0%。对于大多数应用,丢包率应低于1%;对于实时应用如视频会议,丢包率应低于0.1%。三、 环境准备确定测试目标如下图网络环境,需测试接入层至核心层的有线无线网络性能,则需将服务器放置在核心层。
测试设备如测试10G网络,确保服务器及测试终端拥有足够处理性能,同时具备10G网络接入能力,尽量使用Linux系统进行测试;无线测试终端确保拥有高性能无线网卡,以尽可能消除测试终端的性能瓶颈。
测试时间选择网络流量低峰期测试,以减少外界干扰
四、 测试工具1. iPerf3 (C/S)iPerf及微软官方均不建议在Windows环境下使用iPerf3,测试性能可能会降低,具体原因可浏览以下文章:不应该在 Windows 上使用 iPerf3 的三个原因
服务端Linux
根据不同Linux系统,安装iPerf3### 用于 RedHat/CentOS/openEuler
dnf install iperf3 -y
### 用于 Debian/Ubuntu
apt-get install iperf3 -y运行iPerf3服务端iperf3 -h ### 查看帮助
iperf3 -s ### 以服务端模式运行
iperf3 -s -D ### 以服务端模式运行并开启进程守护如下图所示,iPerf3服务端以运行并默认监听5201端口
Windows (官方不建议)
从https://files.budman.pw/下载iPerf3将压缩包内的exe及dll文件解压并复制到目录C:\Windows\System32运行iPerf3服务端打开 CMD/PowerShell:
iperf3 -h ### 查看帮助
iperf3 -s ### 以服务端模式运行
iperf3 -s -D ### 以服务端模式运行并开启进程守护如下图所示,iPerf3服务端以运行并默认监听5201端口
客户端Linux / Windows
安装iPerf3:客户端与服务端为相同程序,安装方法参考服务端使用iPerf3,(Windows通过CMD/PowerShell)以下列举几个常用的性能指标测试,可根据实际情况使用具体参数,参数说明通过iperf3 -h命令查看。
吞吐量测试
iperf3 -c
Interval:表示测试的时间段,从 0 到 5 秒,默认每隔 1 秒汇报一次结果;Transfer:表示在单位时间内传输的数据总量;Bitrate:表示在单位时间内的平均传输速率,单位可以是 Kbits/sec、Mbits/sec 或 Gbits/sec,可通过 -f 参数指定单位;Retr:表示在测试过程中 TCP 数据包重传的次数,重传次数越多,可能表明网络质量较差;Cwnd:表示 TCP 拥塞窗口的大小,反映了 TCP 连接的流量控制情况。网络抖动、丢包率测试
实时应用(如视频会议、VoIP、直播等)通常使用 UDP,因为这些应用更关心网络抖动和丢包,而不需要数据包重传。因此,使用 UDP 模式可以更真实地模拟这些应用的网络行为,而 TCP 模式主要关注吞吐量和连接的可靠性。
iperf3 -c
Interval:表示测试的时间段,从 0 到 5 秒,默认每隔 1 秒汇报一次结果;Transfer:表示在单位时间内传输的数据总量;Bitrate:表示在单位时间内的平均传输速率,单位可以是 Kbits/sec、Mbits/sec 或 Gbits/sec,可通过 -f 参数指定单位;Total Datagrams:表示在单位时间内传输的数据包总量;Jitter:表示网络延迟的变化情况;抖动值越小,网络延迟越稳定;Lost/Total Datagrams:表示测试过程中的丢包率。移动端
Android系统使用华为CloudCamups APPiOS系统自行寻找兼容iPerf3的APP2. ethr (C/S)服务端Linux
安装ethr### 下载软件包
wget https://github.com/microsoft/ethr/releases/latest/download/ethr_linux.zip
### 解压软件包
unzip ethr_linux.zip
### 复制ethr至系统可执行文件目录/usr/local/bin
cp ./ethr /usr/local/bin运行ethr服务端ethr -h ### 查看帮助
ethr -s -ui ### 以服务端模式运行ethr,并开启ui界面如下图所示,ethr服务端以运行并默认监听8888端口
Windows
从https://github.com/microsoft/ethr/releases/latest/download/ethr_windows.zip下载软件包将压缩包内的exe文件解压并复制到目录C:\Windows\System32运行ethr服务端打开 CMD/PowerShell:
ethr -h ### 查看帮助
ethr -s ### 以服务端模式运行ethr如下图所示,ethr服务端以运行并默认监听8888端口
客户端Linux / Windows
安装ethr:方法与服务端相同吞吐量测试,(Windows通过CMD/PowerShell)ethr -c
Protocol:测试协议,默认为TCP,可通过-p参数指定Interval:表示测试的时间段,从 0 到 5 秒,默认每隔 1 秒汇报一次结果Bits/s:表示在单位时间内的平均传输速率3. Speedtest (B/S)相比iPerf、ethr,Speedtest提供Web测速界面,对客户端提供更直观、便捷的测速体验。
服务端以下为Linux系统下通过Docker容器运行Speedtest
安装Docker环境### Docker 一键安装脚本
sudo bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
### 查看Docker版本
sudo docker -v运行Speedtest### 拉取Speedtest镜像
sudo docker pull ghcr.io/librespeed/speedtest:latest
### 运行Speedtest容器,监听80端口
sudo docker run -d --name=speedtest -p 80:80 ghcr.io/librespeed/speedtest:latest客户端PC端/移动端
打开浏览器,建议使用Chrome/Edge等主流高性能浏览器访问http://
参考链接iPerf3 官网
ethr
Speedtest