• 实验教程

任务目的

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算法。以下是进行的一些简单比较:

比较项 iPerf Netperf
支持多线程
可以设置服务器关闭之前保持的连接数
支持多播
支持除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

性能测试工具iPerf和Netperf使用介绍相关推荐

  1. 网络性能测试工具Iperf和netperf

    网络性能测试工具Iperf和netperf 一.iperf工具的使用 同主机网络传输速率吞吐率 网络响应时间 TCP/UDP吞吐率 跨主机网络传输速率吞吐率 网络响应时间 TCP/UDP吞吐率 1.测 ...

  2. tcp连接服务器性能测试,TCPIP网络性能测试工具 - Iperf.pdf

    TCPIP网络性能测试工具 - Iperf.pdf TCP/IP 网络性能测试工具 - Iperf TCP/IP网络性能测试工具 - Iperf 1 简介 Iperf 是一个 TCP/IP 和 UDP ...

  3. 网络性能测试工具Iperf介绍

    [概要]Iperf是一款网络性能测试工具,可以方便的用它进行SDN网络带宽和网络质量的测试,Iperf支持协议.定时.缓冲区等参数的配置调整,报告TCP/UDP最大带宽.延迟抖动.数据包丢失等统计信息 ...

  4. 网络性能测试工具iperf的使用与参数解析

    介绍   网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理.网络存在安全漏洞等原因,都会导致网络带宽利用率不高.要找到网络带宽利用率不高的原因, ...

  5. iperf java_网络性能测试工具Iperf/Jperf

    Iperf 是一个网络性能测试工具.Iperf 可以测试TCP 和UDP 带宽质量.Iperf 可以测量最大TCP 带宽,具有多种参数和UDP 特性. Iperf 可以报告带宽,延时抖动和数据包丢失. ...

  6. iperf java_网络性能测试工具Iperf/Jperf解读

    Iperf 是一个网络性能测试工具.Iperf 可以测试TCP 和UDP 带宽质量.Iperf 可以测量最大TCP 带宽,具有多种参数和UDP 特性. Iperf 可以报告带宽,延时抖动和数据包丢失. ...

  7. 网络性能测试工具Iperf上手指南

    Iperf是一个网络性能测试工具.可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失.Iperf在linux和windows平台均有二 ...

  8. Linux如何安装iperf软件,Linux 下网络性能测试工具 iperf 的安装和使用

    很久没写文章,iperf 也一直有用,感受不错就记录一下html 说明: OS :CentOS 6.4 x86_64 Server: 192.168.100.55 Client: 192.168.10 ...

  9. 网络性能测试工具 -- iperf

    Iperf 是一个网络性能测试工具.可以测试 TCP 和 UDP 带宽质量,可以测量最大 TCP 带宽,具有多种 参数和 UDP 特性,可以报告带宽,延迟抖动和数据包丢失. download:Inde ...

  10. linux网络性能测试工具Iperf使用介绍

    1.下载 (可以到这里下载:) http://downloads.sourceforge.net/ 2.安装 [root@localhost]#tar zxvf iperf-2.5.0.tar.gz ...

最新文章

  1. windows socket编程入门示例3
  2. 十二张图详解Redis的数据结构和对象系统
  3. 判断一个序列是不是堆的方法
  4. python基础看什么书-python新手看什么书比较好?这五本最靠谱
  5. python语法问题
  6. notepad++的NppFTP插件远程连接linux操作系统
  7. 如何搭建一个“不可告人的”私人专属网盘?教程拿去
  8. viper4android 生效,另一种让V4a音效在Poweramp上生效的方法
  9. 递归函数之阶乘的实现
  10. C++ 虚函数表浅析
  11. 解决Ubuntu安装tensorflow报错:tensorflow-0.5.0-cp27-none-linux_x86_64.whl is not a supported wheel on this
  12. 8-BIT OPTIMIZERS VIA BLOCK-WISE QUANTIZATION--通过块级量化的8位优化器
  13. win10系统以太网连接显示“未识别网络”问题的解决
  14. 模板匹配理论的优缺点,模板匹配和神经网络
  15. 【Pytorch】tensor类型数据.squeeze()和.unsqueeze()函数的简明教程(一看就会)
  16. 小熊派移植 TencentOS-tiny+EC20+SAL框架对接 TCP/UDP 服务器
  17. 小程序开发教程,深入解析android核心组件和应用框架,附面试题答案
  18. 政府工作报告词云实例
  19. 联想win10 开启 intel vt-x
  20. 【矢量分析】工科矢量分析注意事项与结论

热门文章

  1. clickhouse
  2. java 微信公众号微信支付
  3. php weka,使用Weka进行数据挖掘
  4. 禅道、码云、coding、redmine、jira、teambition几大敏捷开发项目管理系统试用对比体验
  5. 后端代码增删改查的编写~
  6. Unity3D学习历程之Rect函数
  7. java打印某年日历_java打印指定年月份的日历
  8. godot常用的一些概念、组件(整理于官方教程)
  9. OpenGL学习笔记一
  10. sqlServer相关