性能测试工具iPerf和Netperf使用介绍

2023-05-16

  • 实验教程

任务目的

1、 掌握iPerf的功能和基本命令,利用iPerf测试主机之间的吞吐量,熟悉基本命令参数的作用,为后期实验做准备。
2、 掌握Netperf的功能和基本命令,能够根据不同的测试需求使用不同的命令参数。

任务环境

设备名称软件环境(镜像)硬件环境
控制器Floodlight 1.0桌面版CPU:1核 内存:2G 磁盘:20G
交换机Open vSwitch 2.3.1命令行版CPU:1核 内存:2G 磁盘:20G
主机Ubuntu14.04命令行版CPU:1核 内存:2G 磁盘:20G

注:系统默认的账户为root/root@openlab,openlab/user@openlab。

任务内容

1、 使用 iPerf测试SDN网络的性能,熟悉iPerf常用的测试命令。
2、 使用Netperf测试SDN网络的性能,熟悉Netperf常用的测试命令。
3、 总结Netperf与iPerf的不同之处。

实验原理

在构建或管理一个网络系统时,除了关心网络的可用性,也要注意其整体的性能,这时就要用合适的工具对网络的各项性能进行测试。iPerf和Netperf是用于衡量网络性能的测试工具,本实验将对这两款工具进行具体介绍。

一、 iPerf工具

iPerf 是一种网络性能测试工具,可以运行于Linux、BSD、Unix及Windows等操作系统。 iPerf具有多种参数和特性,支持协议、定时、缓冲区等参数的配置调整,能够测试TCP/UDP最大带宽、延迟抖动、数据包丢失等统计信息,可以根据需求采用不同的参数从而达到不同的测试目的。iPerf基于Server/Client的工作模式,如下图所示。
 


客户端向服务端发送一定数量的数据,服务端统计并记录带宽、延时抖动等信息。客户端将数据全部发送后,服务端会回复一个数据包给客户端,将测试数据反馈给客户端。不过,如果网络较为拥塞或者误码率较高,客户端无法收到服务端回复的数据包,则只能显示本地记录的部分测试结果,所以服务端和客户端的测试结果可能有所不同。iPerf命令语法格式和参数解释如下:
1、 命令格式:
iperf [-s|-c host] [options]
3、 参数配置如下表所示:
表 1 客户端/服务器端通用参数

参数作用
-f/--format[kmKM]分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位
-i/--interval以秒为单位显示报告间隔
-l/--len读写的缓冲区大小,默认8KB
-m/--print_mss打印最大的TCP数据段大小 (MTU - TCP/IP header)
-o/--output将报告和错误信息输出到指定文件
-p/--port指定服务器端使用的端口或客户端所连接的端口
-u/--udp使用udp协议
-w/--window指定TCP窗口(socket缓冲区)大小,默认是8KB
-B/--bind绑定一个主机地址或接口
-C/--compatibility兼容旧版本(当server端和client端版本不一样时使用)
-M/--mss设置TCP最大数据段大小(MTU - 40 bytes)
-N/--nodelay设置无延迟TCP,禁用 Nagle’s Algorithm
-V/--IPv6Version设置传输Ipv6数据包

表 2. 服务器端参数
参数作用
-s/--server
-U/-- single_udp单线程UDP模式下运行
-D/-- daemon以守护进程模式运行服务器

表 3. 客户端参数
参数作用
-b/-- bandwidth对于UDP,使用bits/sec (默认 1 Mbit/sec, 亦即 -u)传送带宽
-c/-- client运行为客户端,连接到“主机”
-d/-- dualtest同步进行双向测试
-n/-- num传输的字节量
-r/-- tradeoff分别进行双向测试
-t/-- time传输持续时间 (默认10 secs)
-F/-- fileinput从文件中读取要传输的数据
-I/-- stdin从标准输入(stdin)中读取要传输的数据
-L/-- listenport双向测试接受端口
-P/-- parallel并行客户线程数量
-T/-- ttl多点传送的生存时间(默认1)

二、Netperf工具

Netperf是一种网络性能测量工具,主要用于测试TCP或UDP和Berkeley套接字接口的批量数据传输(bulk data transfer)和请求/应答(request/reponse)性能。Netperf工具以Client/Server方式工作,如下图所示。
 


服务端是netServer,用来侦听来自客户端的连接,客户端是netperf,用来向服务发起网络测试。在客户端与服务端之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果。在控制连接建立并传递了测试配置信息以后,客户端与服务端之间会再建立一个测试连接,用于来回传递特殊的流量,以测试网络的性能。当netServer在服务端启动后,就可在客户端运行netperf来测试网络的性能。netperf通过命令行参数来控制测试的类型和具体的测试选项,根据作用范围的不同,netperf的命令行参数可以分为两大类:全局命令行参数和测试相关的局部参数,两者之间使用—分隔。Netperf命令语法格式和参数解释如下:
1、 命令格式:
netperf [global options] —[test-specific options]
2、 [global options]可选参数,可选的参数有如下几个:
表 4. 全局命令行参数

参数作用
-H host指定远端运行netserver的server IP地址
-l testlen指定测试的时间长度(秒)
-t testname指定进行的测试类型(TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR)

3、 [test-specific options] 可选参数,可选的参数有如下几个:
表 5. 测试相关的局部参数
参数作用
-s size设置本地系统的socket发送与接收缓冲大小
-S size设置远端系统的socket发送与接收缓冲大小
-m size设置本地系统发送测试分组的大小
-M size设置远端系统接收测试分组的大小
-D对本地与远端系统的socket设置TCP_NODELAY选项
-r req,resp设置request和reponse分组的大小

四、 网络性能指标

学习网络性能测试工具不仅要掌握基本使用方法,还要学会分析测试结果,所以常见的网络性能参数一定要如数家珍。
1、 网络吞吐量:单位时间内通过某个网络(信道或接口)的数据量,吞吐量受网络的带宽或者网络的额定速率限制,单位通常表示为bit/s或bps。
2、 网络延时:一个数据包从用户的计算机发送到网站服务器,然后再立即从网站服务器返回用户计算机的来回时间。影响网络延时的主要因素是路由的跳数和网络的流量。交换机延时(Latency)是指从交换机接收到数据包到开始向目的端口复制数据包之间的时间间隔。有许多因素会影响交换机延时大小,比如转发技术等等。
3、 抖动:用于描述包在网络中的传输延时的变化,抖动越小,说明网络质量越稳定越好。抖动是评价一个网络性能的最重要的因素。
4、 丢包率:理想状态下是发送了多少数据包就能接收到多少数据包,但是由于信号衰减、网络质量等诸多因素的影响并不能达到理想状态,而丢包率就是指测试中所丢失的数据包数量占所发送的数据包的比率。

五、 iPerf和Netperf比较

iPerf和Netperf都是开源软件,都可以支持TCP、UDP协议,可以指定端口号、指定TCP发送缓冲区大小、指定测试时间,都可以禁用Nagle’s算法。以下是进行的一些简单比较:

比较项iPerfNetperf
支持多线程
可以设置服务器关闭之前保持的连接数
支持多播
支持除TCP、UDP之外的协议
支持IPv6一定程度上
可以输出TCP MSS值
设置测试分组大小
支持多种测试范式

实验步骤

一、 实验环境检查

步骤1 以root用户登录交换机,执行如下命令初始化OVS。

 #cd /home/fnic #./ovs_init 

步骤2 登录主机1,执行ifconfig命令查看主机1的IP地址,如下图所示。

步骤3 登录主机2,执行ifconfig命令查看主机2的IP地址,如下图所示。

步骤4 登录主机3,执行ifconfig命令查看主机3的IP地址,如下图所示。

二、基于iPerf测试SDN网络

  • 场景一 TCP测试

步骤1 在主机1上执行iperf -s命令,以主机1为服务器端进行TCP测试,如下图所示。


说明:服务器端默认端口为5001,默认测试时间为10s。

步骤2 在主机2上执行iperf -c 10.0.0.8命令,以主机2为客户端去连接主机1,测试主机1与主机2之间的吞吐量,如下图所示。


上图结果表明主机1与主机2之间的带宽是874Mbits/sec。

步骤3 服务器端保持运行状态,在主机2上执行如下命令,测试主机1与主机2之间的网络性能。

 # iperf -c 10.0.0.8 -t 32 -i 8 

其中:“-t 32”表示测试时间为32s,“-i 8”表示输出频率为8s。该命令表示每8s输出一次测试结果,直到达到32s为止,结果如下图所示。
 


上图显示,输出5次测试结果,带宽基本在892Mbits/sec左右。

步骤4 在主机2上执行如下命令,测试主机1与主机2之间的网络性能。

 # iperf -c 10.0.0.8 -n 2000M -i 5 

其中:“-n 2000M”表示传输的数据量为2000M,“-i 5”表示输出频率为5s。该命令表示每5s输出一次测试结果,到最接近总时间为止,最后再输出总的测试结果,结果如下图所示。
 


由上图可知带宽依旧稳定保持在892 Mbits/sec左右。

步骤5 依旧将主机1作为服务器端,主机2、主机3都作为客户端,分别登录主机2、主机3多次执行以下命令,测试主机1与主机2、主机1与主机3之间的带宽。并在主机1上查看最后的测试结果,如下图所示。

 # iperf -c 10.0.0.8 


对比可以看出同一时间段内主机1与主机2、主机1与主机3的带宽接近,不过主机1与主机2、主机1与主机3之间的带宽都不稳定,不同时间段的带宽相差比较大。

  • 场景二 UDP测试

步骤1 选择主机1,按Ctrl+c键,停止主机1上的iPerf服务。

步骤2 执行iperf -s -u命令,以主机1为服务器端进行UDP测试,如下图所示。

步骤3 在主机2上执行如下命令,以主机2为客户端去连接主机1,测试主机1与主机2之间的网络性能。

 # iperf -c 10.0.0.8 -u -b 2000M -i 5 -l 1380 

其中:“-b 2000M”指定客户端以2000Mbps为数据发送速率,“-i 5”表示输出频率为5s,“-l 1380”表示数据包大小是1380个字节,客户端测试结果如下图所示。
 


上图显示,输出2次测试结果,带宽是752Mbits/sec左右。
服务器端测试结果如下图所示。

 


上图显示,主机1与主机2之间带宽为519Mbit/s,抖动(Jitter)为0.012ms,丢包率(Lost/Total Datagrams)为32%。
说明:若发现sever端收不到client端发过来的包,即没有任何输出,请检查是不是client端发的数据包大小大于server端的网卡设置的MTU值。当不设置“-l”时,client端默认发送的数据包的大小为1470。

步骤4 选择主机1,按Ctrl+C键,停止主机1上的iPerf服务。

三、基于Netperf测试SDN网络

  • 场景一 TCP测试

步骤1 在主机1上执行以下命令运行服务器端,用-p指定监听端口为9991。

 # netserver -p 9991 

步骤2 在主机2上运行客户端,指定服务器端的IP地址以及端口。缺省情况下Netperf进行TCP批量传输,即-t TCP_STREAM。执行以下命令:

 # netperf -H 10.0.0.8 -p 9991 


从测试结果可以看出,服务器端使用87380字节大小的socket接收缓冲,客户端使用16384字节大小的socket发送缓冲。缺省情况下,Netperf向服务器端发送的测试分组大小也是16384字节,用时10.03s,吞吐量为888.57Mbits/sec。

步骤3 执行以下命令再次发起测试,-m设置客户端发送的数据为1024比特。

 # netperf -H 10.0.0.8 -p 9991 -- -m 1024 


上图表示测试时间10.01秒,吞吐量871.29Mbits/sec。

  • 场景二 UDP测试

在主机2上执行以下命令,测试主机1与主机2之间的网络性能,如下图所示。

 # netperf -t UDP_STREAM -H 10.0.0.8 -p 9991 -- -m 1024 

说明:不同于iPerf,Netperf测试UDP数据包无需在服务器端指定参数,所以不用重启服务器端,只需要在客户端加上-t UDP_STREAM。
 


由上图可知,UDP测试结果有两行,第一行显示的是客户端的发送统计,这里的吞吐量表示Netperf向本地socket发送分组的能力。第二行显示的是服务器端接收的情况,由于UDP协议的不可靠性,远端系统的接收吞吐量要远远小于发送出去的吞吐量,只有791.85Mbits/sec。

  • 登录用户名:root     密码:user@openlab×
  • controller1
  • host1
  • host2
  • host3
  • layer2-switch1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

性能测试工具iPerf和Netperf使用介绍 的相关文章

  • Java Timer使用介绍

    x1f680 优质资源分享 x1f680 学习路线指引 xff08 点击解锁 xff09 知识定位人群定位 x1f9e1 Python实战微信订餐小程序 x1f9e1 进阶级本课程是python flask 43 微信小程序的完美结合 xf
  • 在CLI中打印表格----gotable使用介绍

    目录 介绍 获取gotable 在github中获取 下载源码 git clone go mod API 创建table 从结构体中创建空table 获取版本信息 获取版本列表 打印表格 给表格添加行 给表格添加多个行 给表格添加列 介绍
  • CAS新版本(6.0-RC4)使用介绍(一)

    新版本CAS介绍 xff08 6 0 RC4 xff09 简介 Central Authentication Service CAS xff0c 通常称为CAS CAS是一种针对Web的企业多语言单点登录解决方案 xff0c 并尝试成为您的
  • netperf使用笔记

    一 netperf是什么 netperf是一个基于client server模式的网络测试工具 xff0c 可以测量TCP和UDP传输的吞吐量 时延 CPU占用率等性能参数 它可以测试以下几种模式的TCP核UDP网络性能 xff1a TCP
  • 性能测试工具iPerf和Netperf使用介绍

    实验教程 任务目的 1 掌握iPerf的功能和基本命令 xff0c 利用iPerf测试主机之间的吞吐量 xff0c 熟悉基本命令参数的作用 xff0c 为后期实验做准备 2 掌握Netperf的功能和基本命令 xff0c 能够根据不同的测试
  • Python日志系统logging使用介绍

    日志记录对于软件开发调试和运行都非常重要 Python标准库提供了一个日志记录系统 xff0c 可以很方便的在python项目中添加日志记录 本文将详细介绍如何使用python的 logging 模块来记录日志 目录 基础使用日志级别基本配
  • 性能测试工具 IxChariot:Tcl脚本调用方法介绍

    ixChariot是一款功能强大的性能测试软件 xff0c 可用来测试有线和无线性能 xff0c 可以模拟真实应用程序流量 xff0c 并提供关键性能指标 xff0c 包括吞吐量 丢包 抖动 延迟 MOS等 本文简单介绍如何使用IxChar
  • 自动分析局域网内网速慢的电脑---结合IPERF,TASK SCHEDULE,PYTHON,MAIL

    今天写的 用IPERF作测试局域网速度的工具 用AD域组策略推送给客户端 xff0c xcopy y XXX XXX Iperf c Iperf 然后 xff0c 客户端会在每次LOGON的执行测试网速的BAT文件 xff0c 并将结果存放
  • linux的netperf测试,linux下Netperf使用详解

    转载自 xff1a http blog sina com cn s blog 6b1ccd6501013119 html 首先下载 http www netperf org netperf DownloadNetperf html 安装 x
  • Kafka性能测试工具

    简介 Kafka本身自带了性能测试的脚本 xff0c 可以测试发送端和消费端的速度 xff0c 分别为 xff1a kafka producer perf test sh kafka consumer perf test sh 这两个脚本可
  • netperf使用指南

    netperf使用笔记 netperf 是一种非常常见的测量网络带宽的工具 xff0c 其安装非常简单 xff1a 1 下载netperf包 2 进入netperf目录 xff0c configure 3 make 4 make insta
  • explian使用介绍

    1 xff09 id列数字越大越先执行 xff0c 如果说数字一样大 xff0c 那么就从上往下依次执行 xff0c id列为null的就表是这是一个结果集 xff0c 不需要使用它来进行查询 2 xff09 select type列常见的
  • rosbag使用介绍

    rosbag 1 录制包 span class token comment 录制所有的topic span rosbag record span class token operator span a 2 查看包的信息 rosbag inf
  • alsa amixer 使用介绍

    alsa utils 提供的工具中 xff0c arecord 可以用来录音 xff0c aplay 可以用来播放 xff0c amixer 可以用来控制音量 增益等 amixer controls numid 61 34 iface 61
  • OKHttpUtils使用介绍

    一 xff0c 概述 在上一篇blog的末尾讲到了OKHttp使用时的缺点 xff0c 和对OKHttp封装的必要性 在github上有很多对OKHttp封装的优秀框架 xff0c 其首推的就是hongyang大神的OKHttpUtils
  • UnixBench - Linux性能测试工具

    目录 1 简介 2 测试项目 Dhrystone测试 Whetstone 测试 File Copy测试 Pipe Throughput xff08 管道吞吐 xff09 测试 Pipe based Context Switching xff
  • iperf详细使用方法

    Iperf 是一个网络性能测试工具 Iperf可以测试TCP和UDP带宽质量 Iperf可以测量最大TCP带宽 xff0c 具有多种参数和UDP特性 Iperf可以报告带宽 xff0c 延迟抖动和数据包丢失 Iperf使用方法与参数说明 参
  • 性能测试调优应该注意哪些要点,一般性能测试调优的步骤-Alltesting

    性能测试调优应该注意的要点 要点1 在应用系统的设计开发过程中 应始终把性能放在考虑的范围内 要点2 确定清晰明确的性能目标是关键 要点3 必须保证调优后的程序运行正确 要点4 系统的性能更大程度上取决于良好的设计 调优技巧只是一个辅助手段
  • QUIC 流量生成

    我想知道这个社区中是否有人知道 找到一种模拟 QUIC 流量配置文件的方法 为了通过 WLAN WiFi 分析 模拟 youtube 我想知道是否有像 iperf 这样方便的软件包 谢谢 巴拉特 CP 目前还没有任何模拟框架可用于测试 QU
  • iperf 如何计算网络统计信息

    iperf 是测量网络统计数据 例如丢失 吞吐量 抖动 的出色工具 我已经用过很多次了 但是 我只是想知道它是如何计算这些统计数据的 对于吞吐量来说 可以简单地测量在一定时间内接收到的字节数 对于抖动 它只能测量数据包到达时间 但是 对于U

随机推荐

  • Python 循环语句

    循环语句允许我们执行一个语句或语句组多次 xff0c 下面是在大多数编程语言中的循环语句的一般形式 xff1a While 循环语句 Python 编程中 while 语句用于循环执行程序 xff0c 即在某条件下 xff0c 循环执行某段
  • 关于Maven项目junit依赖出现版本号标红的解决方案

    关于Maven项目junit依赖出现版本号标红的解决方案 使用IDEA创建Maven项目时 xff0c pom里面的junit依赖的版本号出现标红 即版本号错误 xff09 xff0c 之前版本为4 10 解决方案 xff1a 找到本地仓库
  • 【C语言】单链表及插入(头插法、尾插法)

    目录 一 什么是单链表 二 单链表的插入 1 头插法 xff08 1 xff09 空链表情况 xff08 2 xff09 非空链表情况 2 尾插法 一 什么是单链表 链表是一种数据存储结构 xff0c 其存储地址并不连续 xff0c 数据元
  • Debian基础配置

    Debian的安装及基础配置 正文 debian基本介绍debian基本安装debian基本配置 结尾 本文介绍Debian的安装与基础配置 debian基本介绍 debian是一款稳定的基于Linux的操作系统 xff0c 它是由自由和开
  • OpenGL:配置glad

    GLAD库的作用 GLAD是一个开源的库 xff0c 它能解决我们上面提到的那个繁琐的问题 GLAD的配置与大多数的开源库有些许的不同 xff0c GLAD使用了一个在线服务 在这里我们能够告诉GLAD需要定义的OpenGL版本 xff0c
  • MySQL中ENGINE = InnoDB AUTO_INCREMENT = 200 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci的作用

    span class token keyword CREATE span span class token keyword TABLE span span class token punctuation 96 span permission
  • Docker数据管理,镜像创建与分层结构

    Docker数据管理 xff0c 镜像创建与分层结构 一 Docker的数据管理1 数据卷2 数据卷容器 二 容器互联 使用centos镜像 三 Docker 镜像的创建1 基于现有镜像创建2 基于本地模板创建3 基于Dockerfile
  • R语言——数据分析

    R语言 什么是数据分析 数据 数据 xff1a 是指对客观事件进行记录并可以鉴别的符号 xff0c 是对客观事物的性质 状态以及相互关系等进行记载的物理符号或这些物理符合的组合 为什么要做数据分析 我们可以通过数据分析的结果来指导决策 数据
  • CentOS 7 云服务器安装mysql5.7

    将mysql5 7的安装包上传到主机上 解压安装到 opt app 中 tar zxvf mysql 5 7 34 linux glibc2 12 x86 64 tar gz C opt app 修改目录名 mv opt app mysql
  • java求1000以内的完数及分析

    需求 一个数如果恰好等于它的因子之和 这个数就称为 完数 例如 6 61 1 43 2 43 3 编程找出 1000 以内的所有完数 分析 一千个数肯定跑不了循环的使用 xff0c 常用的循环有两个 xff0c 一个是for xff0c 一
  • 数据结构算法设计题汇总

    五 算法设计题 xff08 本题10分 xff09 34 二叉排序树的类型定义如下 xff1a typedef struct BSTNode 二叉排序树的结点结构 int data 数据域 struct BSTNode lchild rch
  • 初学node.js 对app.js的解释

    使用各种模块包 http errors模块包主要功能监视http请求过程的错误 中间件middleware xff0c 中间件本质上就是一个模块包 监听错误的中间件 var createError 61 span class token f
  • 什么是原码、反码和补码

    什么是原码 反码和补码 文章目录 什么是原码 反码和补码1 机器数2 原码3 反码4 补码5 总结 1 机器数 前言 一个数在计算机中的表示形式是二进制的话 xff0c 这个数其实就叫机器数 机器数通常是带有符号的 xff08 指有正数和负
  • ros找不到包的两种原因

    目前遇到的找不到包的两种情况是 没有设置环境变量而找不到包 解决方法1 xff0c 当前终端输入source 加包所在工作空间的devel set bash的绝对路径或相对命令行的路径 解决方法2 xff0c 打开用户目录 xff5e 的
  • Python 设计一个窗口程序,进行多种数学计算

    设计一个窗口程序 xff1a 想要实现四种功能 xff1a 1 设置按钮 x1f518 1 xff1a 点击 弹出三行输入框 输入函数表达式 显示其Latex数学表达式 输入三个函数 分别为 f 1 x f 2 x f 3 x 点击 run
  • OpenGL:如何从缓存中读取颜色、深度信息【转】

    GPU渲染完数据在显存 xff0c 回传内存的唯一方式glReadPixels函数 显存也被叫做显示内存 帧缓存 xff0c 它是用来存储显示芯片处理过或者即将读取的渲染数据 如同计算机的内存一样 xff0c 显存是用来存储图形数据的硬件
  • 字符串的练习

    字符串的练习 1 接受用户输入的字符串 将其中的字符以输入相反的顺序输出 例如 34 abc 39 34 cab 39 39 解法1 用for循环的倒叙 但这样并有改变字符串的值 string str 61 34 werthueyihzii
  • eNSP配置ospf——三台路由器

    文章目录 拓扑配置IP地址配置ospfAR1AR2AR3 总结两路由器之间配置ospf xff0c 需要将接口配置为同一网段再宣告 两路由器之间配置ospf xff0c 需要两边都进行宣告 拓扑 配置IP地址 如拓扑图所示 xff0c 不再
  • 【openstack】cloudkitty组件,入门级安装(快速)

    文章目录 前言架构安装配置启动检索并安装 CloudKitty 的仪表板 前言 什么是CloudKitty xff1f CloudKitty是OpenStack等的评级即服务项目 该项目旨在成为云的退款和评级的通用解决方案 从历史上看 xf
  • 性能测试工具iPerf和Netperf使用介绍

    实验教程 任务目的 1 掌握iPerf的功能和基本命令 xff0c 利用iPerf测试主机之间的吞吐量 xff0c 熟悉基本命令参数的作用 xff0c 为后期实验做准备 2 掌握Netperf的功能和基本命令 xff0c 能够根据不同的测试