一. Iperf 概述
Iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能。Iperf具有多种参数和UDP特性,可以根据需要调整。Iperf可以报告带宽,延迟抖动和数据包丢失。
iperf 分为两种版本,unix/linux版和windows版,unix/linux版更新比较快,版本最新。windows版更新慢。windows版的iperf叫jperf,或者xjperf。jperf是在iperf基础上开发了更好的UI和新的功能。
二. 测试环境搭建
因为wifi是空中传播原因,为避免环境中其他无线AP 的信道干扰,请尽量在干净环境测试throughput:
A: 请尽量选择屏蔽房(Shield Room)中测试
B: 地下车库往往也是一个不错的选择(地下车库可搜索到的AP网络往往很少)
C: 目前5G AP 尚少,亦可应用5G频带测试;(能够连上5G AP为准)
D: 若上述条件均不可得,可尝试用Cable 直连,取代空中传播,但为避免打坏设备,需要加衰减器;
注A, 双频带(20-MHz和40-MHz带宽)
IEEE 802.11n通过将两个相邻的20MHz带宽捆绑在一起组成一个40MHz通讯带宽,在实际工作时可以作为两个20MHz的带宽使用(一个为主带宽,一个为次带宽,收发数据时既可以40MHz的带宽工作,也可以单个20MHz带宽工作)
注B: Short Guard Interval(Short GI)
Short GI(Guard Interval)是802.11n针对802.11a/g所做的改进。射频芯片在使用OFDM调制方式发送数据时,整个帧是被划分成不同的数据块进行发送的,为了数据传输的可靠性,数据块之间会有GI,用以保证接收侧能够正确的解析出各个数据块。无线信号在空间传输会因多径等因素在接收侧形成时延,如果后续数据块发送过快,会和前一个数据块形成干扰,而GI就是用来规避这个干扰的。11a/g的GI时长为800us,而Short GI时长为400us,在使用Short GI的情况下,可提高10%的速率。另外,Short GI与带宽无关,支持20MHz、40MHz带宽。
注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 |
|
注:a:1500Byte,512Byte表示IP报文长度 |
|
|
|
|
b:"综合实际应用速率"以58%88Byte、17%512Byte、25%1500Byte报文进行计算 |
802.11n的理论速率由于MIMO、Short 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 平台截图,各项解释如下)
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值
附: