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