丢包分析工具 - iperf

丢包分析工具 - iperf

一、背景

由于我们的服务既支持 tcp 链接也支持 udp 链接,所以想测试下我们服务在 tcp 链接和 udp 链接的抗弱网能力。

所以我们使用 chaos-mesh 工具,模拟网络故障 - 丢包(Loss)。但在测试过程中发现一个奇怪的现象,当设置 75% 丢包后,tcp 链接就会断开,但使用 udp 链接时设置 100% 丢包,还是可以正常通信。

所以怀疑 chaos-mesh 的丢包没有限制 udp 协议?(最后发现是设置错了服务器😄)

开始想用 nc 来测试一下,但 nc 只能测试是否打开了 udp 端口,不能测试 udp 的丢包率。没办法只能使用 iperf 来测试了。

二、iperf 是一个网络性能测试工具,可以用来:

测试 tcp/udp 链接的 带宽、延迟抖动 和 丢包率

测试 tcp/udp 的连通性(比如测试防火墙是否开放了 8080 端口)

三、测试 udp 链接的丢包率

例如,要测试 udp 的丢包率。可以按如下步骤测试

1、登陆 服务器,并启动 iperf 服务端

iperf -p 80 -s -u -i 1

参数说明:

-p : 端口号

-s : 表示服务端

-u : 表示 udp 协议

-i : 检测的时间间隔(单位,秒)

2、在客户端,启动 iperf 客户端

iperf -c 127.0.0.1 -p 80 -u -b 10M -t 10 -i 1 -P 1

参数说明:

-c : 服务端的 ip 地址

-p : 端口号

-u : 标示udp协议

-b : 每一次发送的数据大小

-t : 总的发送时间(单位,秒)

-i : 发送数据的时间间隔 (单位,秒)

-P : 表示线程个数,不指定则默认单线程

3、运行结果如下图

注意:

由于只是想测试 udp 的丢包率,所以 -p 参数指定的 80 端口,只要你的机器上没有占用随便一个即可

由于只是想测试 udp 的丢包率,所以不必非要在 服务器 启动 iperf 服务端,随便你在哪里运行都行。

但要注意如果你在服务器设置的入站丢包,那 iperf 服务端一定要在服务器上运行

四、测试 tcp 链接的带宽

测试 tcp 跟 udp 没啥区别,就是去掉 -u 参数

1、登陆 服务器,并启动 iperf 服务端

iperf -p 80 -s -i 1

2、在客户端,启动 iperf 客户端

iperf -c 127.0.0.1 -p 80 -b 10M -t 10 -i 1 -P 1

3、运行结果如下图

注意:

用 iperf 只能测试 tcp 的带宽,不能测试丢包率。因为 tcp 会帮你重传来保证 tcp 链接的可靠

但可以看到带宽的下降。如果你在测试之前启动 chaos-mesh 工具,并设置一定丢包后,只能看到带宽下降而不会看到丢包率

五、测试 tcp/udp 的连通性

例如,要测试是否开放了服务器 A 的 udp 13000 端口。

1、登陆 服务器 A

2、将现有使用 udp 13000 端口

3、在服务器 A 中启动 iperf 服务端,命令如下

iperf -p 13000 -s -u -i 1

4、找一台机房外部的电脑(比如需要在家访问服务器),启动 iperf 客户端,命令如下

iperf -c 127.0.0.1 -p 13000 -u -b 10M -t 10 -i 1 -P 1

5、这样如果能看到丢包测试结果,也就证明网络是通的。如下图

无论在服务端还是客户端看到如红框内容都代表 udp 13000 是通的,没有被防火墙拦截。

相关推荐

【IT之家评测室】联想小新 Pro14 2024 AI 锐龙版体验评测:硬件全面升级,体验大提升
Java集合框架
365买球官网入口

Java集合框架

📅 08-10 👀 3868
自由之战2宝盒安卓版下载
365买球官网入口

自由之战2宝盒安卓版下载

📅 08-07 👀 2934