iperf -吞吐量测试工具

折月煮酒 提交于 2019-12-08 04:37:27

一. Iperf 概述

Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能。Iperf具有多种参数和UDP特性,可以根据需要调整。Iperf可以报告带宽,延迟抖动和数据包丢失。

  iperf 分为两种版本,unix/linux版和windows版,unix/linux版更新比较快,版本最新。windows版更新慢。windows版的iperf叫jperf,或者xjperf。jperf是在iperf基础上开发了更好的UI和新的功能。

 

二. 测试环境搭建

  • 了解测试需求(如果是对802.11n,了解测试模块的MIMO--也就是有几个天线),以及有线网口的规格(笔记本/AP是百兆网卡吗?因为802.11n的速率可以达到100Mbps以上,如果是百兆网口,肯定会成为测试速率的瓶紧)
  • 事先确定HW 基础
  • 测试环境:

因为wifi是空中传播原因,为避免环境中其他无线AP 的信道干扰,请尽量在干净环境测试throughput:

A: 请尽量选择屏蔽房(Shield Room)中测试

B: 地下车库往往也是一个不错的选择(地下车库可搜索到的AP网络往往很少)

C: 目前5G AP 尚少,亦可应用5G频带测试;(能够连上5G AP为准)

D: 若上述条件均不可得,可尝试用Cable 直连,取代空中传播,但为避免打坏设备,需要加衰减器; 

  • 测试AP (Access Point无线路由)设定:
  1. 无线模式选择”802.11b/g/n”
    1. 信道带宽选择”20/40”
    2. 开启”Guard Interval”
    3. AMPDU ?

注A, 双频带(20-MHz40-MHz带宽)

IEEE 802.11n通过将两个相邻的20MHz带宽捆绑在一起组成一个40MHz通讯带宽,在实际工作时可以作为两个20MHz的带宽使用(一个为主带宽,一个为次带宽,收发数据时既可以40MHz的带宽工作,也可以单个20MHz带宽工作)

注B: Short Guard IntervalShort GI

Short GIGuard Interval)是802.11n针对802.11a/g所做的改进。射频芯片在使用OFDM调制方式发送数据时,整个帧是被划分成不同的数据块进行发送的,为了数据传输的可靠性,数据块之间会有GI,用以保证接收侧能够正确的解析出各个数据块。无线信号在空间传输会因多径等因素在接收侧形成时延,如果后续数据块发送过快,会和前一个数据块形成干扰,而GI就是用来规避这个干扰的。11a/gGI时长为800us,而Short GI时长为400us,在使用Short GI的情况下,可提高10%的速率。另外,Short GI与带宽无关,支持20MHz40MHz带宽。

 

注C:关于理论吞吐量:

a:不同标准理论传送吞吐量不同;

b:实际传送带宽视环境,wifi系统会不同选择,40M带宽可获得更大throughput)

附:不同网络的理论最大吞吐量参考:

 

802.11b

802.11g

802.11a

 

最大物理发送速率

11M

54M

54M

 

理论最大吞吐量(1500Byte报文)

5M

24M

24M

 

512Byte 报文吞吐量

3.5M

14M

14M

 

88Byte报文吞吐量

1.6M

3.2M

3.2M

 

综合实际应用速率

2.77M

9.73M

9.73M

 

按照80%干扰计算应用速率

2.21M

7.78M

7.78M

 
         

注:a1500Byte512Byte表示IP报文长度

 

 

 

b"综合实际应用速率"58%88Byte17%512Byte25%1500Byte报文进行计算

 

802.11n的理论速率由于MIMOShort GI 以及频宽的区别,会有不同是速率

 

三. 网络连线设定:

1.  Infra Network(基础网络构架):

     a. PC 通过Cable 连接AP Lan口,然后AP wifi连接待测Platform

       --- 注,请注意网口规格,是百兆或吉兆?

     b. PC 通过wifi 连接AP,然后AP wifi 连接待测Platform:

       --- 选择合适测试无线网卡,不能选择MIMO 规格低于测试AP的无线网卡;

            (比如测试用2x2的AP,就不能选择1x1 的无线网卡,应该选择2x2或者3x的无线网卡)

 

2. 请在PC1/Platform 运行相应版本的iperf;分别运行下面表格命令即可,由命令决定哪个平台做Server,哪个平台做Client

 

TCP:

TV 收包端 ./iperf -s -w 4000k -i 1 &

PC 灌包端 iperf.exe  -c 192.168.1.11 -w 2000k -i 1 -n 1000M

 

Byte/s

Mbit/s

CPU: usr

CPU : sys

CPU : IDLE

CPU:soft irq

 

 

 

 

 

 

 

 

UDP:

TV 收包端:./iperf -s -u -i 1 &

PC 灌包端:iperf.exe  -u -c 192.168.1.11  -l 1024 -b 50M -t 30 -i 1

 

 

 

 

 

 

 

B

Byte/s

Mbit/s

CPU: usr

CPU : sys

CPU : IDLE

CPU:soft irq

50M

 

 

 

 

 

 

75M

 

 

 

 

 

 

90M

 

 

 

 

 

 

100M

 

 

 

 

 

 

270M

 

 

 

 

 

 

300M

 

 

 

 

 

 

a. 在TV 端,需要测试CPU loading,请在TV端iperf命令后加’&’

b. linux/Android 平台,测试CPU loading 用top 命令,会每隔5秒刷新CPU loading:(如下图是Android 平台截图,各项解释如下)

  1. User 35%, System 13%, IOW 0%, IRQ 0% // CPU占用率 
  2. User 109 + Nice 0 + Sys 40 + Idle 156 + IOW 0 + IRQ 0 + SIRQ 1 = 306 // CPU使用情况 
  3.  
  4. PID CPU% S #THR VSS RSS PCY UID Name // 进程属性 
  5. xx  xx% x   xx  xx  xx  xx  xx   xx 
  6.  
  7. CPU占用率: 
  8. User    用户进程 
  9. System  系统进程 
  10. IOW IO等待时间 
  11. IRQ 硬中断时间 
  12.  
  13. CPU使用情况(指一个最小时间片内所占时间,单位jiffies。或者指所占进程数): 
  14. User    处于用户态的运行时间,不包含优先值为负进程 
  15. Nice    优先值为负的进程所占用的CPU时间 
  16. Sys 处于核心态的运行时间 
  17. Idle    IO等待时间以外的其它等待时间 
  18. IOW IO等待时间 
  19. IRQ 硬中断时间 
  20. SIRQ    软中断时间 
  21.  
  22. 进程属性: 
  23. PID 进程在系统中的ID 
  24. CPU%    当前瞬时所以使用CPU占用率 
  25. S   进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。 
  26. #THR    程序当前所用的线程数 
  27. VSS Virtual Set Size 虚拟耗用内存(包含共享库占用的内存) 
  28. RSS Resident Set Size 实际使用物理内存(包含共享库占用的内存) 
  29. PCY OOXX,不知道什么东东 
  30. UID 运行当前进程的用户id 
  31. Name    程序名称android.process.media 
  32.  
  33. // ps:内存占用大小有如下规律:VSS >= RSS >= PSS >= USS 
  34. // PSS  Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存) 
  35. // USS  Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存

c.  记录数据,请用平均值记录,如下图,选用0.0-300.0sec 的数据:

 

d.  关于iperf 各项命令的意思:(重点解释与性能相关的命令)

通用参数

-f [kmKM] 分别表示以Kbits, Mbits, KBytes, MBytes显示报告,默认以Mbits为单位,eg:iperf -c 222.35.11.23 -f K

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

-l 缓冲区大小,默认是8KB,eg:iperf -c 222.35.11.23 -l 16

-m 显示tcp最大mtu值

-o 将报告和错误信息输出到文件eg:iperf -c 222.35.11.23 -o ciperflog.txt

-p 指定服务器端使用的端口或客户端所连接的端口eg:iperf -s -p 9999;iperf -c 222.35.11.23 -p 9999

-u 使用udp协议

-w 指定TCP窗口大小,默认是8KB

-B 绑定一个主机地址或接口(当主机有多个地址或接口时使用该参数)

-C 兼容旧版本(当server端和client端版本不一样时使用)

-M 设定TCP数据包的最大mtu值

-N 设定TCP不延时

-V 传输ipv6数据包

 

server专用参数

-D 以服务方式运行iperf,eg:iperf -s -D

-R 停止iperf服务,针对-D,eg:iperf -s -R

 

client端专用参数

-d 同时进行双向传输测试

-n 指定传输的字节数,eg:iperf -c 222.35.11.23 -n 100000

-r 单独进行双向传输测试

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

-F 指定需要传输的文件

-T 指定ttl值

 

附:

  1. Iperf apk 界面:需要遥控在APK软键盘输入命令:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!