利用iperf3测试两个节点之间的网络性能

2023-11-17 14:08:35 浏览数 (1)

前言

iperf3 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动、丢包率、最大段和最大传输单元大小等统计信息;从而能够帮助我们测试网络性能,定位网络瓶颈。iperf是开源的。iperf 不能够测试时延。

网络性能参数(服务质量QOS)

在iperf中,测试需要发送大量的包,计算出来的抖动值就是连续发送时延差值的平均值。

软件安装

代码语言:javascript复制
#安装
yum install -y iperf3

#简单回测
#启动服务端
iperf3 -s

#客户端测试
iperf3 -c 127.0.0.1

参数说明

-s 以server模式启动 -c 以client模式启动

-f [k|m|K|M] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告 -i sec 以秒为单位显示报告间隔 -l 缓冲区大小,默认是8KB -m 显示tcp最大mtu值 -o 将报告和错误信息输出到文件 -p 指定服务器端使用的端口或客户端所连接的端口 -u 使用udp协议 -w 指定TCP窗口大小,默认是8KB

网络带宽为40Mbit/s,回环路径消耗时间是2ms,那么TCP的窗口大小不小于40Mbit/s×2ms = 80kbit = 10Kbytes

-D 以服务方式运行ipserf -R 停止iperf服务,针对-D

-d 同时进行双向传输测试 -n 指定传输的字节数 -r 单独进行双向传输测试 -b 指定发送带宽,默认是1Mbit/s -t 测试时间,默认10秒,eg:iperf3 -c 222.35.11.23 -t 5 -F 指定需要传输的文件 -T 指定ttl值

测试用例

服务端

代码语言:javascript复制
# 使用udp协议
iperf3 -s -u

# 默认tcp,以服务方式启动
iperf3 -s -D

客户端

代码语言:javascript复制
# 每秒输出一次结果, 采用udp, 带宽限制为10M 
iperf3 -c ip -u -i 1 -t 10 -b 10M  

#  反转server和client
iperf3 -c 163.177.76.26  -b 100M  -i 1 -t 5 -R

# 单线程传输1GB数据,每秒输出1次结果
iperf3 -c ip -n  -n 1G  -i 1

# 100M,单线程
iperf3 -c ip -n 100M  -i 1

# 100M,双线程
iperf3 -c ip -n 100M  -i 1 - P2

拓展

字节单位换算

  1. 1Byte = 8 bit
  2. ascii:英文字母占1个字节,中文汉字2个字节
  3. utf-8:英文字母占1个字节,中文汉字3个字节
  4. Unicode: 英文字母占2个字节,中文汉字2个字节

网络数据包

MTU

  • TCP/IP协议涉及四层:链路层,网络层,传输层,应用层
  • 以太网的数据帧在链路层
  • IP包在网络层
  • TCP或UDP在传输层
  • 关系:数据帧{IP包{TCP或UDP包{Data}}}
  1. 链路层MTU通常为1500
  2. 网络层IP首部占用20字节,MTU变为1480
  3. 传输层UDP占用8字节,MTU为1480-8=1472;TCP占用20字节,MTU为1480-20=1460。

0 人点赞