首页 > 其他分享 >iperf 使用

iperf 使用

时间:2024-08-20 21:27:41浏览次数:13  
标签:指定 带宽 复制 测试 使用 iperf bash

 

 

iperf 是一个常用的网络性能测试工具,用于测量网络带宽、延迟、抖动等指标。它支持 TCP 和 UDP 协议,可以用于测试点对点的网络连接质量。iperf 通常用于网络带宽测试、吞吐量测量、网络诊断等场景。

基本概念

  • Server:在测试中接收流量的端。
  • Client:在测试中发送流量的端。

iperf 的工作模式通常是一个端作为服务器(Server)运行,另一个端作为客户端(Client)连接到服务器并进行测试。

基本用法

  1. 在服务器端启动 iperf

    bash iperf -s

    这将在默认的端口(5001)上启动 iperf 服务器。可以使用 -p 选项指定其他端口:

    bash iperf -s -p 5201
  2. 在客户端发起测试

    bash iperf -c <server_ip>

    这会向服务器发送 TCP 流量并测量带宽。你需要指定服务器的 IP 地址。可以指定端口:

    bash iperf -c <server_ip> -p 5201

常用选项

  • -s:启动 iperf 服务器。

  • -c <host>:指定服务器的地址,启动客户端进行测试。

  • -p <port>:指定要使用的端口(默认为 5001)。

  • -u:使用 UDP 而不是 TCP 进行测试。UDP 测试可以测量丢包率、抖动等网络质量指标。

    bash iperf -c <server_ip> -u
  • -b <bandwidth>:在使用 UDP 测试时,指定带宽。例如 -b 10M 表示使用 10 Mbps 的带宽发送数据。

  • -i <interval>:指定报告的时间间隔。例如,-i 1 每秒输出一次带宽报告。

  • -t <time>:指定测试的持续时间,默认是 10 秒。例如,-t 30 表示测试 30 秒。

  • -n <number>:指定要发送的字节数或数据量。例如,-n 100M 表示发送 100 MB 数据。

  • -f <format>:指定报告输出的格式,k 为 KBytes,m 为 MBytes,g 为 GBytes。

  • -w <window>:指定 TCP 窗口大小。例如,-w 512K 指定 512 KB 的窗口大小。

  • -P <num>:使用多个并发连接进行测试。iperf 会启动 num 个并发会话进行测试,通常用于测试多线程或多路复用环境下的带宽。

  • -d:双向测试,即同时进行上传和下载测试。

  • -r:进行往返测试,即先进行下载测试,然后进行上传测试。

  • -B <bind_ip>:指定客户端要绑定的本地 IP 地址。

  • -V:使用 IPv6 地址进行测试。

示例

  1. 最简单的 TCP 带宽测试

    bash # 在服务器端启动 iperf iperf -s # 在客户端发起测试 iperf -c <server_ip>
  2. 进行 UDP 带宽测试

    bash iperf -s -u iperf -c <server_ip> -u -b 10M
  3. 多线程测试(多个并发连接)

    bash iperf -c <server_ip> -P 5
  4. 指定测试时长

    bash iperf -c <server_ip> -t 60
  5. 双向带宽测试

    bash iperf -c <server_ip> -d
  6. 查看结果每秒报告

    bash iperf -c <server_ip> -i 1

输出解读

运行 iperf 后,你会看到一些输出数据,主要包括以下内容:

  • 传输数据量(Transfer):显示在测试中传输的数据总量。
  • 带宽(Bandwidth):表示测得的带宽,通常以 Mbps 为单位。
  • 丢包率(UDP 模式下):显示在测试过程中丢失的包数及其占总包数的比例。
  • 抖动(Jitter, UDP 模式下):显示网络传输的抖动情况,通常用于测量实时传输的稳定性。

总结

iperf 是一个功能强大且易于使用的工具,适用于各种网络性能测试。通过灵活地使用选项,你可以测试网络的不同方面,并根据需要调整测试参数来诊断和优化网络性能。

标签:指定,带宽,复制,测试,使用,iperf,bash
From: https://www.cnblogs.com/rebrobot/p/18370357

相关文章

  • 线程(Thread)的使用方法和锁(同步代码块,lock锁)的问题
    多线程:    进程:      正在运行的程序,是系统进行资源分配和调用的独立单位。      每一个进程都有它自己的内存空间和系统资源。      理解:一个正在运行的软件    线程:      是进程中的单个顺序控制流,是......
  • 036、Vue3+TypeScript基础,路由中使用replace不让前进后退
    01、代码如下:<template><divclass="app"><h2class="title">App.Vue路由测试</h2><!--导航区--><divclass="navigate"><router-linkreplaceto="/Home"class="nav......
  • InetAddress类的使用
    packagecom.shujia.day20;importjava.net.InetAddress;/*InetAddress:是用来描述IP地址的此类表示Internet协议(IP)地址。IP地址是由IP使用的32位或128位无符号数字,构建UDP和TCP协议的低级协议。IP地址结构由定义RFC790:AssignedNumbers,RFC1918:......
  • vSphere5.11.1.使用Alarms
    第一部分使用alarmsvirtualmachines面板性能摘要monitoringperformanceisakeypartofeveryvsphereadministrator'sjob.fortunately,vcenterserverprovidesanumberofwaystogetinsightintothebehaviorofthevsphereenvironmentandthevmsrunningwit......
  • 使用redis-trib.rb工具快速搭建redis集群
    使用redis-trib.rb工具快速搭建redis集群手动搭建集群便于理解集群创建的流程和细节,不过手动搭建集群需要很多步骤,当集群节点众多时,必然会加大搭建集群的复杂度和运维成本,因此官方提供了redis-trib.rb的工具方便我们快速搭建集群。redis-tribyb是采用Ruby实现的redis集群管......
  • [C++] template+struct 组合使用小技巧
    1.简单说明  struct+template的组合可以让我们使用同一个结构体名称(注意:只是名称相同,但是本质上已经不同了),实现不同的结构体功能,可以将其理解为设计模式中的工程模式。2.代码示例  首先,声明一个枚举类型,用于区别结构体,然后使用template+struct,声明一个结构体,只声明不实现......
  • 前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)
    本章开始补充一些基础的图形绘制,比如绘制:直线、曲线、圆/椭形、矩形。这一章主要分享一下本示例是如何开始绘制一个图形的,并以绘制圆/椭形为实现目标。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码gitee源码示例地址接下来主要......
  • 数据结构-队列 c语言使用链表和数组分别实现
    队列定义队列(queue)是一种遵循先入后到规则的线性数据结构,将队列头部称为“队首”,尾部称为“队尾”,把元素加入队尾称为“入队”,删除队首元素称为“出队”。队列实现基于链表的实现将链表的头节点和尾结点分别视为“队首”和“队尾”,规定队尾仅可添加节点,队首仅可删除节点。......
  • React.js如何使用Bootstrap
    在React.js项目中使用Bootstrap有多种方法,主要包括直接引入BootstrapCSS文件和使用ReactBootstrap库。下面将详细介绍这两种方法。方法一:直接引入BootstrapCSS文件这是最简单的方式,只需在项目中引入Bootstrap的CSS文件即可。安装Bootstrap:你可以通过......
  • 使用对比!SLS 数据加工 SPL 与旧版 DSL 场景对照
    作者:灵圣概述如前一篇《SLS数据加工全面升级,集成SPL语法》所述,SLS数据加工集成了SLS数据处理语法SPL。与旧版本数据加工DSL相比,SPL在处理非结构化数据的场景中,其语法简洁度上有很多提升,比如中间类型保持、字段引用、无缝兼容SQL函数等。这里我们继续讨论在不同的数......