首页 > 其他分享 >网络灌包命令_iperf工作原理及使用方法

网络灌包命令_iperf工作原理及使用方法

时间:2023-05-25 15:33:40浏览次数:44  
标签:UDP 灌包 TCP server xx Iperf iperf 原理

 

       网络性能评估主要是监测网络带宽的使用率,将网络带宽利用最大化是保证网络性能的基础,但是由于网络设计不合理、网络存在安全漏洞等原因,都会导致网络带宽利用率不高。要找到网络带宽利用率不高的原因,就需要对网络传输进行监控,此时就需要用到一些网络性能评估工具,而Iperf就是这样一款网络带宽测试工具。

  Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位网络瓶颈,解决网络故障。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最大TCP带宽,具有多种参数和UDP特性。Iperf可以报告带宽,延迟抖动和数据包丢失。利用Iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。Iperf有两种版本,windows版和linux版本。

  下面介绍Iperf的主要功能。

  TCP方面:

    测试网络带宽。

    支持多线程,在客户端与服务端支持多重连接。

    报告MSS/MTU值的大小。

    支持TCP窗口值自定义并可通过套接字缓冲。

  UDP方面:

    可以设置指定带宽的UDP数据流

    可以测试网络抖动值、丢包数

    支持多播测试

    支持多线程,在客户端与服务端支持多重连接。

Iperf的安装与使用

  iperf可以运行在任何IP网络上,包括本地以太网、接入因特网、Wi-Fi网络等。在工作模式上,iperf运行于服务器、客户端模式下,其服务器端主要用于监听到达的测试请求,而客户端主要用于发起连接会话,因此要使用iperf,需要两台服务器,一台运行在服务器模式下,另一台运行在客户端模式下。

  iperf支持Win32、Linux、FreeBSD、MacOS X、OpenBSD和Solaris等多种操作系统平台。读者可以从 iperf官方主页链接下载各种版本,目前最新的版本是iperf3.1.3:

在这里插入图片描述

下载后解压放在某个路径即可。

然后在cmd中带入参数执行iperf即可。

 

iperf参数介绍

Iperf3 是一款网络性能测试工具,在网络中传输数据流,根据需要调整传输速率和数据流大小,也可以根据需要报告带宽、延迟抖动和数据包丢失。

网络性能测试工具:Iperf使用指南
Iperf是一款基于TCP/IP和UDP/IP的网络性能孝吵轮测试工具,巧信它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动、数据包丢失率、最大传输单元等统计信息。网络管理员可以根据这些信息了解并判断网络性能问题,从而定位碰团网络瓶颈,解决网络故障。

服务端 运行iperf,输入命令iperf –s –p port –i 1 以在本机端口上启用iperf,参数说明如下:

客户端 运行iperf,输入命令iperf –c server_ip –p server-port –i 1 –t 10,参数说明如下:

服务端:iperf -s -p 9999 -i 1,先运行
客户端:iperf -c 10.10.30.51 -p 9999 -i 1 -t 10

Iperf常用参数说明:

-c host以客户端模式启动,host是数据源所在的服务器端地址,比如:iperf -c 222.35.11.23;

-i sec以秒为单位显示报告间隔,比如:iperf -c 222.35.11.23 -i 2;

-u使用UDP协议,发送UDP数据包,默认使用TCP连接;

-w指定TCP窗口大小,默认是8KB,此参数比较重要,需要针对不同的带宽和时延进行调整;

-t测试时间长,默认10秒,比如:iperf -c 222.35.11.23 -t 5

-n(一般配合UDP协议时使用)指定传输的字节数,比如:iperf -c 222.35.11.23 -n 100000

-P  (大写)指定同时进行的TCP/UDP连接数,对于高带宽测速,需要该参数建立多条TCP/UDP连接以测得更准确的速率;

-s 以server模式启动,eg:iperf -s

-p  指定服务器端使用的端口或客户端所连接的端口

下行UDP灌包(从服务器向终端灌包)

服务器侧CMD窗口中启动如下命令:

iperf -c xx.xx.xx.xx -u -b 100m -p 6001 -t 9999

UE侧PC CMD窗口中启动如下命令:

iperf -s -u -p 6001

参数说明:

 

c xx.xx.xx.xx

表示向xx.xx.xx.xx灌包(xx.xx.xx.xx为UE ip地址)

-u

表示启动UDP灌包,如果是灌TCP则不需要-u这个参数

-b 100m

表示指定灌包大小,这里表示灌100M的数据

-p 6001

表示指定灌包的端口为6001,可根据需要更改

-t 99999

表示指定灌99999秒,可根据需要修改灌包时长

-s

表示启动iperf服务器

上行UDP灌包(从UE灌向服务器)

服务器侧CMD窗口中启动如下命令:

Iperf –s –u –p 6002

UE侧PC CMD窗口中启动如下命令:

Iperf –c xx.xx.xx.xx –u –b 100m –p 6002 –t 99999

参数说明:

c xx.xx.xx.xx

表示向xx.xx.xx.xx灌包(xx.xx.xx.xx为服务器地址)

下行TCP灌包

服务器侧CMD窗口中启动如下命令:

Iperf –c xx.xx.xx.xx –p 6003 –w 512k –t 99999

UE侧PC CMD窗口中启动如下命令:

Iperf –s –w 512k–p 6003

参数说明:

c xx.xx.xx.xx

表示向xx.xx.xx.xx灌包(xx.xx.xx.xx为UE ip地址)

-w

指定TCP窗口大小

需要特别注意的是千万不要-b,否则就成为UDP灌包。

上行TCP灌包

服务器侧CMD窗口中启动如下命令:

Iperf –s –w 512k–p 6004

UE侧PC CMD窗口中启动如下命令:

Iperf –c xx.xx.xx.xx –p 6004 –w 512k –t 99999

参数说明:

c xx.xx.xx.xx

表示向xx.xx.xx.xx灌包(xx.xx.xx.xx为服务器地址)

-w

指定TCP窗口大小

需要特别注意的是千万不要-b,否则就成为UDP灌包。

IPERF其他命令参数说明

PERF参数大全

共选项参数

-f:format

速率报告的格式:是采用Kbits, Mbits, Kbytes,还是MBytes

-i: interval

周期性带宽报告的时间间隔。单位:秒

-l:len

读写缓冲区的长度。对于TCP,默认:8KB;对于UDP,默认:1470B

-m:print_mss

打印TCP最大段的大小(MTU - TCP/IP header)

-p:port

Iperf server监听的服务端口;或Iperf client连接的服务端口。

在Iperf server和Iperf client两边的端口必须是相同的。默认服务端口:5001

-u:UDP

使用UDP进行测量

-w:window

设置套接字缓冲区大小为指定的数值。对于TCP,本选项将设置TCP窗口大小;对于UDP,本选项是接收数据报文的缓冲,所以它被限制到最大的接收数据报文大小

-B:bind

绑定到主机的一个接口或组播地址。对于Iperf client,本选项设置的是对外的接口;对于Iperf server,本选项设置的是进入的接口。本选项参数仅用于多宿主主机,它有多个网络接口

-C:compatibility

兼容模式,允许和低版本的Iperf一起使用。兼容模式对于互用性并不是必需的,但是高度建议的。在某些案例里,当在使用典型的流(streaming)时,你可能会引起1.7版本的Iperf server冲突,或造成一些不希望发生的连接尝试

-M:mss

通过TCP_MAXSEG选项,设置TCP最大段大小(Maximum Segment Size )。对于TCP/IP头部来说,MSS通常是MTU - 40 bytes;对于以太网,MSS是1640 bytes(1500 byte MTU)。在很多OSes里,本选项没有被执行

-N:no delay

设置TCP为零时延选项,禁止Nagle算法。通常,对于像Telnet这样的交互式应用程序,此选项仅被禁止

-V

绑定到一个IPv6地址。从V1.6或更高版本开始支持。其格式是:

Server 侧:$ iperf -s -V

Client侧:$ iperf -c -V

注意:在V1.6.3版本或更高版本,一个特定的IPv6地址并不需要用“-B”选项来绑定,V1.6以前的版本需要。同样,在大多数的OSes里,本选项的使用,也取决于使用IPv4映射地址的IPv4客户端

Iperf server特定选项参数

-s:server

Iperf运行在server模式下

-D:daemon

让server运行为守护神程序(Unix平台)。在Win32平台,服务是有效的,Iperf将作为一个服务运行。本选项从Iperf的V1.2或更高版本开始支持

-R:Remove

删除Iperf服务(如果它正在运行)。本选项仅仅对于Windows有效,从Iperf的V1.2或更高版本开始支持

-o

输出报告或错误信息到一个指定的文件里。(仅适用于windows。从Iperf的V1.2或更高版本开始支持)

-c:client host

如果Iperf运行在server模式下,那么用“-c”指定一个主机将限制Iperf将要接受的指定主机的连接。本选项对UDP支持得不是很好

-P:parallel

在关闭前被server处理的连接数目。默认:0(这意味着永久接受连接)

Iperf client特定选项参数

-b:bandwidth

带宽。UDP的发送带宽, 单位:bits/sec。这暗示着使用“-u”选项。默认:1 Mbit/sec

-c:client host

运行在client模式,连接到运行在主机上的Iperf server

(注意:-c后面一定要有host的IP地址,即格式是:-c 10.0.0.79。否则,命令执行失败。Host的IP地址指的是Iperf server端的IP地址)

-d:dualtest

同时进行双向传输测试,运行Iperf在双向测试模式下。这将引起server在用“-L”选项指定的端口(或client连接到server所用的默认端口)上,重新连接回client。这是立即完成的,所以同时地运行测试。如果你想用单独的交互式测试,请尝试“-r”选项

-n:number

要发送的字节数。单位:Kbyte/s,Mbyte/s。通常,Iperf发送数据的时间为10秒。“-n”选项改写了这个时间,它发送完指定大小的数据,而不管这个过程花费了多长时间。请参考“-l”、“-t”选项

-r:tradeoff

单独进行双向传输测试,运行Iperf在折衷测试(tradeoff testing)模式下。这将引起server在用“-L”选项指定的端口(或client连接到server所用的默认端口)上,重新连接回client。随着client连接的终止,这个过程就完成了,所以单独地运行测试。如果你想用同时的测试,请尝试“-d”选项

-t:time

传送数据的测试时间。单位:秒。默认:10秒。当与“–n”参数同时使用时,以“ -n ”选项为准。即设置的测试时间失效。请参考“-l”、“-n”选项

-L:listenport

本选项指定一个监听端口,server从这个端口连接回client。默认的监听端口是client连接server所使用的端口

-P:parallel

并行运行的client数目。默认值:1。需要client和server之间的线程支持

-S:tos

发出的数据包的服务类型。(很多路由器忽略TOS域)。你可以用十六进制“0x”为前缀,以八进制“0”为前缀,或以十进制为前缀。例如,(0x10)16=(020)8=(16)10。

在RFC 1349里,对TOS的定义如下:

IPTOS_LOWDELAY:最小时延    0x10

IPTOS_THROUGHPUT:最大吞吐量   0x08

IPTOS_RELIABILITY:最大可靠性  0x04

IPTOS_LOWCOST:最小成本   0x02

-T:TTL

发出的组播包的存活期(time-to-live)。这是报文穿越路由器跳数的基本数字。默认值:1

-F:fileinput

使用一个典型的流(stream)来测量带宽。从Iperf的V1.2或更高版本开始支持。例如:

$ iperf -c -F

————————————————————————

cpe client tcp

iperf -c 192.168.3.108 -i 1 -w 1M -t 300

cpe server tcp

iperf -s -i 1 -w 1M

cpe client udp

iperf -u -c 192.168.3.108 -b 100M -i 1 -w 1M -t 300

cpe server udp

iperf -s -u -p 0 -i 1 -p 5001 -f k -s 0x10

-c 表示客户端

-s 表示服务端

-u udp通信

-i 表示每次发包时间间隔

-w 套接字大小或每次发包大小

-t 每次测试一共时间 秒

-p 指定端口

-f 指定单位 k表示kbits/sec 

-b参数可以指定带宽大小,请注意这个指定的带宽大小并不是我们要测试的网络的带宽,

    我们测试的网络的带宽是指最大值。要获得带宽数据,需要通过-b不断在client端增加带宽值,

 

    直到server端出现轻微的丢包为止,此时server端显示的带宽就是被测系统的吞吐量。

——————————————————————

例子:

 

 Interval表示时间间隔。Transfer表示时间间隔里面转输的数据量。Bandwidth是时间间隔里的传输速率。

jitter :抖动,网络中的延迟是指信息从发送到接收经过的延迟时间,一般由传输延迟及处理延迟组成。而抖动是指最大延迟与最小延迟的时间差,如最大延迟是20毫秒,最小延迟为5毫秒,那么网络抖动就是15毫秒,它主要标识一个网络的稳定性。

packet loss:丢包率,封包在传送过程中因不明原因无法让接收者收到,丢失的封包就是 packet loss。

最后一行是本次测试的统计。测试可知带宽平均为490Mbit/s。

 

 

参考:https://www.zhuangpeitu.com/article/46413976.html

   https://blog.csdn.net/bingyu9875/article/details/105700655/

https://wenku.baidu.com/view/e95946db730abb68a98271fe910ef12d2af9a9d2.html?_wkts_=1684997207412&bdQuery=%E7%BD%91%E7%BB%9C%E6%80%A7%E8%83%BD%E6%B5%8B%E8%AF%95%E5%B7%A5%E5%85%B7iperf%E7%9A%84%E4%BD%BF%E7%94%A8%E4%B8%8E%E5%8F%82%E6%95%B0%E8%A7%A3%E6%9E%90

ProcCuMsgInfoDump

标签:UDP,灌包,TCP,server,xx,Iperf,iperf,原理
From: https://www.cnblogs.com/klb561/p/17431432.html

相关文章

  • ThreadLocal 的应用及原理
    1.是什么JDK对ThreadLocal类的描述为:此类提供线程局部变量。这些变量与普通变量的不同之处在于,每个访问一个变量的线程(通过其get或set方法)都有自己的、独立初始化的变量副本。ThreadLocal实例通常是类中的私有静态字段,这些字段希望将状态与线程(例如,用户ID或事务ID)相关联。......
  • 深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用
    深度学习进阶篇-预训练模型[2]:Transformer-XL、Longformer、GPT原理、模型结构、应用场景、改进技巧等详细讲解1.Transformer-XL:AttentiveLanguageModelsBeyondsaFixed-LengthContext1.1.Transformer-XL简介在正式讨论Transformer-XL之前,我们先来看看经典的Transform......
  • 红外光学雨量传感器的工作原理
    红外光学雨量传感器的工作原理IFR02红外光学雨量传感器是一种非接触式的雨量监测装置,其工作原理基于红外光学测量技术。 传感器在工作时,通过发射红外光束对测量区域进行照射,当红外光线被雨滴所遮挡时,光束会被反射或散射,此时传感器可以通过接收反射或散射的光线来计算测量区域......
  • 红外光学雨量传感器的工作原理
    红外光学雨量传感器的工作原理IFR02红外光学雨量传感器是一种非接触式的雨量监测装置,其工作原理基于红外光学测量技术。传感器在工作时,通过发射红外光束对测量区域进行照射,当红外光线被雨滴所遮挡时,光束会被反射或散射,此时传感器可以通过接收反射或散射的光线来计算测量区域的雨......
  • 单片机消息队列的实现原理和机制2
    出处消息队列在RTOS中基本都有消息队列这个组件,也是使用最常见的组件之一。1.消息队列的基本概念消息队列是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息。通过消息队列服务,任务或中断服务......
  • 单片机消息队列的实现原理和机制1
    出处单片机开发过程中通常会用到“消息队列”,一般实现的方法有多种。本文给大家分享一下队列实现的原理和机制。环形队列环形队列是在实际编程极为有用的数据结构,它是一个首尾相连的FIFO的数据结构,采用数组的线性空间,数据组织简单,能很快知道队列是否满为空,能以很快速度的来存......
  • java基本原理及三大框架原理和数据库基本知识点总结
    这个也是超详细的,自己遇到的问题,然后总结下来的,有查的和自己理解的,很多点,对于做javaweb开发的同学很有帮助。笔记如下:1、面向对象的特征有哪些方面1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选......
  • MapperProxyFactory(映射器代理工厂)的实现原理
    再次回顾Mybatis的基本用法1、定义Mapper接口2、在xml(或注解)中写sqlmybatis帮我们屏蔽了所有和数据库相关的操作,我们只需要给他提供参数、sql、标注返回值的类型即可。通过mapper接口我们可以传递参数、获取返回值;通过xml或者注解我们可以提供需要执行的sql。那么问题来了,究竟......
  • python代码热更新原理
    python代码热更新原理热更新概念在进程不重启的前提下,修改代码并且使得修改的代码生效热更新背景需求紧急修复线上问题实现不停机维护要实现上面的用户需求,需要在原理上支持下面需求*1.支持任意的import语法并且无顺序依赖要求2.对应回调函数、已实例化对象等也要支持代码......
  • 微服务架构基本原理学习笔记(一)
    一、什么是微服务微服务是一种技术架构,通常我们可以把它理解为一组可以相互之间协同工作的应用程序或服务,这些应用程序或服务能够被单独部署到不同的服务器中,并且能够自主运行和维护。微服务技术只是一个名称而已,或许我们在日常工作中已经或多或少在使用其中的一种或几......