网络灌包命令_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即可。

   

UDP:

 

下行:./iperf -u -c 190.254.1.2 -t 9999 -i 1 -l 300 -b 800m -P 2

 

上行:iperf -u -c 101.223.201.113 -t 9999 -i 1 -l 1024 -b 300m -P 1 -B

 

TCP:

 

下行:

 

CPE收:iperf -s -p 20005 -i 1

 

PDN灌:./iperf -c 190.254.2.9 -p 20002 -i 1 -w 1400K -t 999 -P 20

 

上行 :

 

PDN收:./iperf -s -i 1 -w 1024K -p 19006 -B 60.30.1.14 -P 10

 

CPE灌:iperf -c 90.30.7.13 -i 1 -t 999 -w 1024K -p 25836 -B 190.254.10.90 -P10

 


TCP灌包一般命令:

 

客户端:./iperf -c XX.XX.XX.XX -p 12345 -i 1 -w 512k -t 999 -P 10

 

服务端:./iperf -s -p 12345 -i 1 -w 512k -P 10

 


各参数说明:

 

-c:主动发起连接的一端,可以认为是客户端,后面加需要灌包的地址(上面命令中的XX.XX.XX.XX)。

 

-p:灌包的端口,客户端要和服务器一致。

 

-i:显示报告的间隔。

 

-w:TCP窗口大小。

 

-t:灌包时长

 

-P:线程数。

 

注意事项:1)测试TCP极限流量的时候,建议PDN的MTU设置为1400(目前实验室共用PDN的MTU都设置为1400)。如果是默认的MTU(1500),核心网发给基站的灌包数据由于加了GTP的头,会大于各个传输节点的MTU(一般也是1500),从而报文会分片,会影响性能。

 


2、UDP灌包

 

UDP灌包一般命令:

 

客户端:./iperf -u -c 60.30.1.14 -p 10086 -i 1 -b 100m -l 1024 -t 9999 -P 10 -B 190.177.9.157

 

服务端(可以不开启,开启主要是看收包情况):./iperf -u -s -p 10086 -i 1 -P 10

 


各参数说明:

 

-u:指定协议为UDP。

 

-c:主动发起连接的一端,可以认为是客户端,后面加需要灌包的地址(上面命令中的XX.XX.XX.XX)。

 

-p:灌包的端口。

 

-i:显示报告的间隔。

 

-b:灌包的流量大小。

 

-l:包长大小。

 

-t:灌包时间。

 

-P:线程数。

 

注意事项:1)UDP灌包一定要指定包长,即-l参数,如果不指定,PDN出来的报文可能会分片,会影响性能,一般建议指定包长在1000-1300之间。

 

2)灌包时-t的值建议按照实际需要灌包的时间指定,不要指定9999或者99999这样很长的时间,否则测试结束而没有关闭灌包进程,那么PDN会一直灌包,影响PDN和核心网的性能。

 

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
posted @ 2023-05-25 15:29  konglingbin  阅读(8009)  评论(0编辑  收藏  举报