一、iperf3和iperf测试万兆网卡传输带宽
1、iperf3
tcp是面向连接的,建立连接需要经过三次握手,抖动和延迟都比较大
udp是面向对象的,消耗网络资源要比tcp小很多,抖动和延迟比较小
iperf1 测试udp结果要比iperf3测udp更准确
nping 可以测试udp丢包率003-nping
iperf3是一个可以测试最大传输带宽的工具
工具: iperf3
环境: 两台服务器,各安装万兆网卡测试速率。
1、下载iperf3
(1) windows 直接去官网下载
https://iperf.fr/iperf-download.php
(2) linux
# yum -y install iperf3 iperf3-devel
2、启动iperf3测试带宽速度
(1) 启动iperf3服务端(server:172.16.10.100)
# iperf3 -s # -s表示我是服务端,之后会启动5102端口进行监听
# ifconfig enp1s0f0 mtu 9000 up # 调mtu值
(2) windows客户端连接服务端(client: 172.16.10.101)
# iperf3 -c 172.16.10.100 -t -P 2 # -c表示我是客户端, 后面的ip是服务端ip
# iperf3 -u -c 172.16.10.100 -b 10M -n 1G -P 2 # -u表示udp,默认不加是tcp, udp协议需要-b指定带宽,-P 表示并发
(3)linux
https://www.cnblogs.com/hjc4025/p/10438028.html # 和这个一样
# iperf3 -s -B 172.16.10.103 # 启动服务端-B绑定本地网卡ip
# iperf3 -u -c 172.16.10.103 -b 10G -P 2 # 客户端测试不绑定网卡的情况下
# iperf3 -u -c 172.16.10.103 -B 172.16.10.104 -b 10G -P 2 # 客户端测试udp协议,10G就是万兆,客户端向服务端传输数据,-B绑定本地地址
Connecting to host 172.16.10.103, port 5201
[ 4] local 172.16.10.104 port 57818 connected to 172.16.10.103 port 5201 # 从104(本地)到103(服务端)
[ ID] Interval Transfer Bandwidth Total Datagrams
[ 4] 0.00-1.00 sec 1.12 GBytes 9.59 Gbits/sec 54795
[ 4] 1.00-2.00 sec 1.17 GBytes 10.1 Gbits/sec 57404
[ 4] 2.00-3.00 sec 1.16 GBytes 10.0 Gbits/sec 57113
[ 4] 3.00-4.00 sec 1.15 GBytes 9.88 Gbits/sec 56425
^C[ 4] 4.00-4.90 sec 1.03 GBytes 9.83 Gbits/sec 50648
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 4] 0.00-4.90 sec 5.63 GBytes 9.87 Gbits/sec 0.000 ms 0/276385 (0%) # 丢标率0%,传输速度9.87G/s
[ 4] Sent 276385 datagrams
iperf3: interrupt - the client has terminated
3、测试udp需要增加参数
# cat /etc/sysctl.conf
net.core.rmem_max=52428800
net.core.rmem_default=52428800
net.core.netdev_max_backlog = 16384
net.core.somaxconn = 16384
# sysctl -p
(1) 服务端192.168.2.155监听一个随机端口
# iperf3 -s
-----------------------------------------------------------
Server listening on 5201 # 是个端口是tcp还是udp取决于客户端的传参
-----------------------------------------------------------
(2) 客户端测试tcp传输速率(iperf3测tcp看不到丢包率,可以用ethr测试tcp)
# 最大带宽10000M,每秒100G的传输速度测试
# iperf -i 1 -c 120.31.160.241 -b 10M -n 100M -p 5201
# iperf3 -c 192.168.2.155 -b 10000M -n 100G
Connecting to host 192.168.2.155, port 5201 # 在服务端查看
[ 4] local 192.168.2.249 port 6002 connected to 192.168.2.155 port 5201
[ ID] Interval(间隔秒) Transfer(实际下载速度大B) Bandwidth(每次传输量小b) Retr Cwnd
[ 4] 0.00-1.00 sec 189 MBytes 1.59 Gbits/sec 0 1.06 MBytes
[ 4] 1.00-2.00 sec 84.0 MBytes 705 Mbits/sec 0 1.59 MBytes
[ 4] 2.00-3.00 sec 89.2 MBytes 749 Mbits/sec 12 1.32 MBytes
[ 4] 3.00-4.00 sec 290 MBytes 2.43 Gbits/sec 0 1.43 MBytes
[ 4] 4.00-5.00 sec 264 MBytes 2.22 Gbits/sec 0 1.54 MBytes
[ 4] 5.00-6.00 sec 105 MBytes 879 Mbits/sec 0 1.64 MBytes
[ 4] 6.00-7.00 sec 278 MBytes 2.33 Gbits/sec 0 1.71 MBytes
[ 4] 7.00-8.00 sec 231 MBytes 1.94 Gbits/sec 0 1.76 MBytes
^C[ 4] 8.00-8.29 sec 67.2 MBytes 1.98 Gbits/sec 0 1.77 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-8.29 sec 1.56 GBytes 1.62 Gbits/sec 12 sender
[ 4] 0.00-8.29 sec 0.00 Bytes 0.00 bits/sec receiver
(3)客户端测试udp传输
# iperf3 -u -c 192.168.2.155 -b 1000M -n 10G -P 1
Accepted connection from 192.168.2.249, port 32072 # 服务端查看
[ 5] local 192.168.2.155 port 5201 connected to 192.168.2.249 port 43518
[ ID] Interval(间隔) Transfer(实际下载速度大B) Bandwidth(每秒传输量小b) Jitter(延迟) Lost/Total Datagrams(丢包率)
[ 5] 0.00-1.00 sec 40.0 MBytes 335 Mbits/sec 0.027 ms 0/28714 (0%)
[ 5] 1.00-2.00 sec 48.8 MBytes 409 Mbits/sec 0.024 ms 0/35021 (0%)
[ 5] 2.00-3.00 sec 54.4 MBytes 456 Mbits/sec 0.023 ms 30/39077 (0.077%)
[ 5] 3.00-4.00 sec 52.2 MBytes 438 Mbits/sec 0.020 ms 75/37601 (0.2%)
[ 5] 4.00-5.00 sec 52.9 MBytes 444 Mbits/sec 0.023 ms 58/38052 (0.15%)
^C[ 5] 5.00-5.30 sec 16.3 MBytes 450 Mbits/sec 0.022 ms 0/11678 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 5] 0.00-5.30 sec 0.00 Bytes 0.00 bits/sec 0.022 ms 163/190143 (0.086%)
(4) 客户端测试时查看服务端netstat -anputl 可以看到udp端口
# netstat -anpul|grep 5201
udp6 0 0 192.168.2.183:5201 192.168.2.185:8910 ESTABLISHED 24773/iperf3
--------------------------------------------------------------------
Client 端参数
-c, --client ,以 Client 模式运行;
-u, --udp,以 UDP 协议进行测试,如果是tcp默认不用写;
-b, --bandwidth #[KMG][/#],每秒带宽速率。UDP 默认为 1Mbit/秒,TCP 默认无限制;
-t, --time #,以时间为测试结束条件进行测试,默认为 10 秒;
-n, --bytes #[KMG],测试传输流量总量(也就是测试要传输的文件总大小);
-P, --parallel 表示并发数。
4、iperf用法
https://iperf.fr/iperf-download.php#fedora
https://iperf.fr/download/fedora/iperf-1.7.0-1.1.el3.rf.x86_64.rpm
# 服务端
iptables -I INPUT -p udp --dport 5201 -j ACCEPT
# iperf -i 1 -s -u -p 5201 # udp
# iperf -i 1 -s -p 5201 # tcp
# 客户端和iperf3一样,但是支持最大并发高于128
# iperf -i 1 -u -c 192.168.2.183 -b 10M -n 100M -p 5201 -P 129
# iperf -i 1 -c 120.31.160.241 -b 10M -n 100M -p 5201 # tcp
---------------------------
-i: 间隔(秒)
-u: udp,默认不写为tcp
-c: 开启客户端
-b: 传输带宽
-n:传输流量总量
-P; 并发
二、ethr
ethr网络压测工具
@[toc]
工具介绍
Ethr是一个用golang编写的跨平台网络性能测量工具。该项目的目标是提供本机工具,用于跨多种协议(如TCP,UDP,HTTP,HTTPS和跨多个平台)对带宽,连接,数据包,延迟,丢失进行全面的网络性能测量。
windows版公网下载 linux版公网下载 官方文档
Ethr服务端
Ethr服务端启动命令: ./ethr -s
Ethr客户端
tcp测试延时示例(yyy.yyy.yyy.y为ethr服务(./ethr -s )的服务端ip)
./ethr -c yyy.yyy.yyy.y -t pi -p tcp
udp测试传包示例(yyy.yyy.yyy.y为ethr服务(./ethr -s )的服务端ip)
./ethr -c yyy.yyy.yyy.y -t p -p udp
参数详情
-c 客户端方式运行,后面跟服务端ip
-b 每秒发送的数据包,默认不设上限,仅支持测试带宽
-d 测试几秒,默认10s
-g 连续测量的时间间隔,默认1s,用于测试延时,ping,traceroute
-l 测试带宽的包大小,默认16Kb,最大1G,用来测带宽
-port 对应服务端非8888端口测试
-p "tcp", "udp", "http", "https", "icmp", 默认tcp
-s 服务端方式运行
-t 要测的项目 `Test to run ("b", "c", "p" or "l") b:带宽 c:不支持udp,Connections/s p: Packets/s l: 不支持udp,延迟、丢失和抖动 Latency, Loss & Jitter pi:不支持udp,ping丢包延时 tr:不支持udp,TraceRoute mtr:不支持udp,TraceRoute+延时