129,248
社区成员




一、前言
这里需借助iperf3工具来完成,yum install -y iperf3。
说明:注意网络时延超过30ms时,会开始影响iperf的结果;当丢包率超过0.1%时,开始影响iperf结果。在丢包达到0.5%时,已经有很显著的影响。
时延+丢包越大,则 iperf3打流结果越差,其中时延的影响更明显。TCP引入了拥塞窗口(cwnd)的概念。其基本理念为如果出现丢包,则认为网络上存在拥塞。TCP会调小拥塞窗口,以降低发送速度。反之,如果判断没有拥塞,拥塞窗口会调大,增大发包速度。目前,多数Linux默认的拥塞控制算法为Cubic,这是一种基于丢包的拥塞控制算法。一旦检测到丢包,Cubic会减小30%的拥塞窗口,在广域网存在一定丢包的情况下,将对iperf打流速度影响较大。
BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种新型的TCP 拥塞控制算法。与Cubic不同,BBR是一种基于带宽和延迟反馈的拥塞控制算法。目前已经演化到第二版,是一个典型的封闭反馈系统,发送多少报文和用多快的速度发送这些报文都是在每次反馈中不断调节。BBR算法的核心是找到最大带宽(Max BW)和最小延时(Min RTT)这两个参数,最大带宽和最小延时的乘积可以得到BDP(Bandwidth Delay Product), 而BDP就是网络链路中可以存放数据的最大容量。BDP驱动Probing State Machine(探测状态机)得到rate quantum和cwnd,分别设置到发送引擎中就可以解决发送速度和数据量的问题。BBR算法出现之后,会平稳的发送数据,不会突发流量冲击。BBR相对Cubic的优点包括抗丢包能力强、延迟低、抢占能力强和平稳发送。使用BBR,可以获得显著的网络吞吐量的提升和延迟的降低。吞吐量的改善在远距离路径上尤为明显,Iperf的打流性能通常也会看到较好的提升。 Linux Kernel从4.9版本开始支持BBR,win11 22H2内置了BBRv2 算法。
二、过程命令
2.1、测试TCP发送带宽
1)服务端启动监听:iperf3 -s -i 1 -p 1234
2)被测客户端:iperf3 -c <server_ip> -i 1 -p 1234 -t 120 -P 1
2.2、测试TCP接收带宽
1)被测服务端:iperf3 -s -i 1 -p 1234
2)客户端:iperf3 -c <server_ip> -i 1 -p 1234 -t 120 -P 1
2.3、时延测试,
1)被测端:qperf &
2)客户端:qperf 192.168.2.10 -m 64 -t 60 -vu udp_lat,结果的latency字段就是主机间时延
2.4、多并发打流
使用单连接或单线程打流容易受到地域、网络时延、TCP拥塞算法等因素的影响,打流测试结果可能无法达到订购带宽值。因此建议采用多个并发连接或多线程的方式来进行带宽打流测试;还可以采用BBR拥塞控制算法来提高吞吐。开启BBR算法方法为:
##升级Linux内核到4.9以上
echo “net.ipv4.tcp_congestion_control=bbr” >> /etc/sysctl.conf
sysctl -p
sysctl -a | grep cong
iperf3 -c 192.168.2.10 -p 5201 -i 1 -P 8 #iperf3进程是单线程的,-P参数会建立多个并发连接,但都是使用的同一个CPU
2.5、网络连通性
mtr server_ip #结果分析:默认配置下,返回结果中各数据列的说明:
Host:节点IP地址和域名。如前面所示,按n键可以切换显示。
Loss%:节点丢包率。
Snt:每秒发送数据包数。默认值是10,可以通过参数 -c 指定。
Last:最近一次的探测延迟值。
Avg、Best、Wrst:分别是探测延迟的平均值、最小值和最大值。
StDev:标准偏差。越大说明相应节点越不稳定。