当前位置: 首页 > web >正文

OpenWrt | 使用 Docker 运行 iperf3

文章目录

  • 一、问题背景
  • 二、安装方法

一、问题背景

iperf3 是一套测试网络性能的工具,其可以测试出在两个 IP 之间最大的带宽速率。其官网地址如下:https://software.es.net/iperf/。其可以被安装在 OpenWrt 的系统上,用来测试设备到路由器间内网的最大速率,可以测试 lan 口网络和 wifi 的极限速率以及各种性能,对于调试路由器和分析网络问题时起到极大的帮助,也能推测出通信的性能瓶颈是出自哪里。

iperf3 已经被预置在了 OpenWrt 的官方包中,在编译时可以选择 Network > iperf3,即可在 OpenWrt 运行 iperf3

在这里插入图片描述
iperf3 可能会占用太多的磁盘空间,对于空间小的路由器来说,可能使用 iperf3 会对空间造成压力。因此本文将介绍在 Docker 中运行 iperf3,实现快速复用和减少系统的占用。

不过使用 docker 运行 iperf3 会造成或多或少的内存损耗,对测试结果带来一定的不准确。如果

Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。可以实现快速部署大量的应用程序。

参考 OpenWrt 的 [OpenWrt as Docker container host[(https://openwrt.org/docs/guide-user/virtualization/docker_host) 官方教程,只要安装了 luci-app-dockerman luci包,即可在 OpenWrt 上运行 docker
在这里插入图片描述
luci-app-dockerman 包的位置位于:LuCI > 3. Applications > luci-app-dockerman,勾选编译即可。
在这里插入图片描述

由于 Docker 空间占用相对较大,因此需要提前挂载 USB 磁盘才能较好的体验 Docker,参考 OpenWrt 搭建 Samba 服务器的方法:https://openwrt.org/docs/guide-user/services/nas/cifs.server

二、安装方法

本文将使用 networkstatic/iperf3 镜像进行安装:https://hub.docker.com/r/networkstatic/iperf3

首先在 luci 管理界面,Docker > 镜像 > 拉取镜像,输入 networkstatic/iperf3,点击拉取,即可将 networkstatic/iperf3 镜像拉取到本地。

如果因为下载包较大导致下载镜像超时,可以用命令进行安装

docker pull networkstatic/iperf3

随后在 luci 管理界面,Docker > 新增,打开 新增 容器的界面
在这里插入图片描述
为了便于输入,可以使用命令行输入命令的方式,添加容器,参考官方的 Cli

docker run -it --rm --name=iperf3-server --net=host networkstatic/iperf3 -s

这里与官方介绍不一样的地方在于,我们使用了 host 的网络模式,而不是 bridge。因为使用 host 的网络模式可以消除网络隔离,容器与主机共享网络命名空间,此时会带来性能提升,对于 iperf3 性能测试工具来说,使用此模式才能真实反映出性能数据。

最后的 -s 传递的是 iperf3 的命令参数,可以依据官方文档传递相关参数,配置 iperf3 。此处仅传递 -s 表示启动服务端,其默认会占用 5201 端口,等待客户端连接并测试网络性能。

为了便于复用,可以编写 docker-composeyaml 文件,方便在多个设备进行部署:

---
services:iperf3-server:image: networkstatic/iperf3:latestcontainer_name: iperf3-serverhostname: iperf3-serverrestart: unless-stoppednetwork_mode: hostcommand: -s

保存在路由器合适的位置之后,在 OpenWrt 的终端运行如下命令:

docker-compose -f .yml文件 up -d

在添加完成之后,此时点击容器的运行,即可启动 iperf3 服务端。在终端设备中,输入 iperf -c 路由器IP 即可开始测试性能数据。
在这里插入图片描述

http://www.xdnf.cn/news/14854.html

相关文章:

  • 深度解析基于贝叶斯的垃圾邮件分类
  • android BottomSheet及AlertDialog的几种material3 常见ui的用法
  • 链表题解——设计链表【LeetCode】
  • 贪心算法在C++中的应用与实践
  • 机器学习-- 神经网络
  • 认识 Spring AI
  • 【Springai】项目实战进度和规划
  • Android阴影效果的艺术与实现:从入门到精通
  • 【冷知识】Spring Boot 配置文件外置
  • [15-2] 读写内部FLASH读取芯片ID 江协科技学习笔记(20个知识点)
  • YOLOv13:最新的YOLO目标检测算法
  • AlpineLinux安装部署MongoDB
  • Flutter 布局之 IntrinsicHeight 组件
  • 浪潮和曙光服务器的ipmi配置教程
  • jenkins集成sonarqube(使用token进行远程调用)
  • 【硬核数学 · LLM篇】3.1 Transformer之心:自注意力机制的线性代数解构《从零构建机器学习、深度学习到LLM的数学认知》
  • Springboot + vue + uni-app小程序web端全套家具商场
  • Junit_注解_枚举
  • 网络安全2023—新安全新发展
  • Java 案例 6 - 数组篇(基础)
  • 【知识图谱构建系列7】:结果评价(1)
  • DBeaver 设置阿里云中央仓库地址的操作步骤
  • 基于hive的电商用户行为数据分析
  • Webpack原理剖析与实现
  • 【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(三)
  • 《AI for Science:深度学习如何重构基础科学的发现范式?》
  • 用户行为序列建模(篇十)-【加州大学圣地亚哥分校】SASRec
  • mybatis-plus从入门到入土(一):快速开始
  • 【学习】《算法图解》第八章学习笔记:平衡树
  • Linux下基于C++11的socket网络编程(基础)个人总结版