前言
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
拓展
字节单位换算
- 1Byte = 8 bit
- ascii:英文字母占1个字节,中文汉字2个字节
- utf-8:英文字母占1个字节,中文汉字3个字节
- Unicode: 英文字母占2个字节,中文汉字2个字节
网络数据包
MTU
- TCP/IP协议涉及四层:链路层,网络层,传输层,应用层
- 以太网的数据帧在链路层
- IP包在网络层
- TCP或UDP在传输层
- 关系:数据帧{IP包{TCP或UDP包{Data}}}
- 链路层MTU通常为1500
- 网络层IP首部占用20字节,MTU变为1480
- 传输层UDP占用8字节,MTU为1480-8=1472;TCP占用20字节,MTU为1480-20=1460。