使用 iperf3 工具测试TCP/UDP吞吐量

server/2024/10/18 1:31:28/

测试目标


- 测试网络的 TCP 和 UDP 吞吐量性能,包括不同并发连接数和目标带宽条件下的表现。

测试环境


- **测试工具**: iperf3
- **固定 IP 地址**:
  - 服务器 IP: `192.168.1.10`
  - 客户端 IP: `192.168.1.20`
- **端口号**: `5201`

测试准备


1. **安装 iperf3**:
   在服务器和客户端上安装 iperf3:
   sudo apt-get install iperf3

2. **启动服务器端**:
   在服务器上执行以下命令以开始监听:
   iperf3 -s -p 5201

测试步骤

### 4.1 TCP 吞吐量测试

1. **执行客户端测试**:
   在客户端上进行 TCP 吞吐量测试,循环执行,并将结果重定向到文件 `tcp_results.txt`:
   ```
   for i in {1..5}; do
       iperf3 -c 192.168.1.10 -p 5201 -t 60 -P 1 >> tcp_results.txt
       echo "=====================" >> tcp_results.txt
   done
   ```

2. **增加进程数**:
   执行 TCP 测试时增加并发连接数(例如:4个连接)并记录结果:
   ```
   for i in {1..5}; do
       iperf3 -c 192.168.1.10 -p 5201 -t 60 -P 4 >> tcp_results.txt
       echo "=====================" >> tcp_results.txt
   done
   ```

### 4.2 UDP 吞吐量测试

1. **执行客户端测试**:
   在客户端上进行 UDP 吞吐量测试,循环执行并将结果重定向到文件 `udp_results.txt`,设置目标带宽为 100 Mbps:
   ```
   for i in {1..5}; do
       iperf3 -c 192.168.1.10 -p 5201 -u -t 60 -b 100M >> udp_results.txt
       echo "=====================" >> udp_results.txt
   done
   ```

2. **增加目标带宽变化**:
   修改目标带宽参数进行多次测试,记录不同带宽下的结果:
   ```
   for bandwidth in 50M 100M 200M; do
       for i in {1..5}; do
           iperf3 -c 192.168.1.10 -p 5201 -u -t 60 -b $bandwidth >> udp_results.txt
           echo "=====================" >> udp_results.txt
       done
   done
   ```

3. **增加进程数变化**:
   对于 UDP 测试,指定并发连接数并记录结果:
   ```
   for bandwidth in 100M; do
       for i in {1..5}; do
           iperf3 -c 192.168.1.10 -p 5201 -u -t 60 -b $bandwidth -P 4 >> udp_results.txt
           echo "=====================" >> udp_results.txt
       done
   done
   ```

## 5. 数据统计与分析
### 5.1 结果整理
- 整理 `tcp_results.txt` 和 `udp_results.txt` 中的结果,提取关键信息(如带宽、丢包率、延迟等)。

### 5.2 示例表格格式

| 测试类型 | 进程数 | 目标带宽 | 平均带宽 (Mbps) | 丢包率 (%) | 发送端统计信息 | 接收端统计信息 |
|----------|--------|----------|-----------------|-------------|-----------------|-----------------|
| TCP      | 1      | N/A      | XX              | N/A         | XX              | XX              |
| TCP      | 4      | N/A      | XX              | N/A         | XX              | XX              |
| UDP      | 1      | 50M      | XX              | XX          | XX              | XX              |
| UDP      | 1      | 100M     | XX              | XX          | XX              | XX              |
| UDP      | 1      | 200M     | XX              | XX          | XX              | XX              |
| UDP      | 4      | 100M     | XX              | XX          | XX              | XX              |

测试报告


- 整理测试结果,形成报告,包含以下内容:
  - 测试环境概述
  - 测试步骤
  - TCP 和 UDP 吞吐量结果总结
  - 数据分析及结论

注意事项


- 确保在测试期间网络没有其他干扰(如大流量传输)。
- 多次运行测试以获取更具代表性的结果,并计算平均值。
- 根据需求调整测试时长和带宽配置。


http://www.ppmy.cn/server/131284.html

相关文章

Python网络爬虫技术

Python网络爬虫技术详解 引言 网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定规则自动抓取互联网信息的程序或脚本。它们通过遍历网页链…

安全工具 | 搭建带有 Web 仪表板的Interact.sh

介绍 Interactsh 是一个用于检测带外交互的开源工具。它是一种旨在检测导致外部交互的漏洞的工具。本文将主要介绍在子域上设置私有 Interact.sh 服务器以及部署其 Web 应用程序。只需一个 AWS EC2 或 VPS 实例和一个域。 要求 •具有静态IP的AWS EC2 / VPS •拥有自己的域…

QML tableView设置role为index的问题

项目中,需要将一个tableview的第一列表示为索引,且索引需从1开始。于是编写代码如下: 下面展示一些 内联代码片。 ListModel {id: com_model;} GE_TableView {id: tableview;height: 510;anchors.top: root.top;anchors.left: root.left;anc…

鸿蒙OS启动流程

启动流程(基于openharmony4.1) 系统上电加载内核后,按照以下流程完成系统各个服务和应用的启动: 内核加载init进程,一般在bootloader启动内核时通过设置内核的cmdline来指定init的位置。init进程启动后,会挂载tmpfs,…

51单片机-第十四节-AD/DA(XPT2046触摸屏)

一、AD/DA介绍: AD:模拟-数字转换,将模拟信号转换为计算机可操作的数字信号。 DA:数字-模拟转换,将计算机输出的数字信号转换为模拟信号。 二、运算放大器: 1.介绍: (1&#xf…

笔试算法总结

文章目录 题目1题目2题目3题目4 题目1 使用 StringBuilder 模拟栈的行为&#xff0c;通过判断相邻2个字符是否相同&#xff0c;如果相同就进行删除 public class Main {public static String fun(String s) {if (s null || s.length() < 1) return s;StringBuilder builde…

python发邮件附件:配置SMTP服务器与认证?

python发邮件附件技巧&#xff1f;Python发送多附件邮件的方法&#xff1f; Python作为一种强大的编程语言&#xff0c;提供了丰富的库和工具来实现这一功能。AokSend将深入探讨如何使用Python发邮件附件&#xff0c;并详细介绍配置SMTP服务器与认证的关键步骤。 python发邮件…

自然语言处理问答系统:技术进展、应用与挑战

自然语言处理&#xff08;NLP&#xff09;问答系统是人工智能领域的一个重要分支&#xff0c;它通过理解和分析用户的提问&#xff0c;从大量的文本数据中提取相关信息&#xff0c;并以自然语言的形式回答用户的问题。随着深度学习技术的发展&#xff0c;尤其是预训练语言模型&…