Android系统 以太网吞吐量和丢包测试

简介: Android系统 以太网吞吐量和丢包测试

为了保证以太网的性能和质量,本文介绍了如何在以Rockchip Android平台上进行以太网吞吐量和丢包测试基本方法和步骤,以及如何使用一些常用的网络测试工具和指标来评估网络的性能。

硬件准备

要测试两台Android设备之间的以太网性能,我们需要准备以下硬件:

  • 两台支持以太网的Rockchip Android设备(设备A和设备B)。
  • 一台以太网交换机或路由器。
  • 两根以太网线。

连接设备

我们需要使用以太网线将设备A和设备B连接到交换机或路由器上,如下图所示:

设置IP地址

需要确保两台设备都在同一个局域网上,这样才能相互通信。例如,可以将设备A的IP地址设置为192.168.1.25,而将设备B的IP地址设置为192.168.1.183。可以通过以下步骤来设置静态IP地址:

  • 在设备上打开设置应用,选择“网络”选项。
  • 选择“以太网”选项,然后点击右上角的齿轮图标。
  • 选择“高级选项”,然后选择“静态”作为IP设置。
  • 输入IP地址、子网掩码、默认网关和DNS服务器等信息。
  • 点击“保存”按钮,完成设置。

安装测试工具

需要在两台设备上安装网络性能测试工具,例如iperf3iperf3是一个开源的网络性能测试工具,它可以测量TCP和UDP协议下的吞吐量、延迟、丢包率等指标。可以在Android源码中编译iperf3的Android版本,然后push到设备上。

mmm external/iperf3/
# 编译出来在out目录 ./system/bin/iperf3
adb push iperf3 /system/bin/iperf3

进行测试

可以使用iperf来进行以下两种类型的测试:

吞吐量测试

吞吐量是网络的最大数据传输速率,通常以Mbps(兆比特每秒)或Gbps(吉比特每秒)为单位。要测试两台设备之间的吞吐量,我们可以按照以下步骤进行:

  • 在设备A上启动iperf3作为服务器:在终端中输入命令iperf 3 -s并回车。
127|console:/ # iperf3 -s                                                      
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.1.25, port 40536
[  5] local 192.168.1.183 port 5201 connected to 192.168.1.25 port 40538
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  11.0 MBytes  92.7 Mbits/sec                  
[  5]   1.00-2.00   sec  11.0 MBytes  92.6 Mbits/sec                  
[  5]   2.00-3.00   sec  11.0 MBytes  92.4 Mbits/sec                  
[  5]   3.00-4.00   sec  11.0 MBytes  92.5 Mbits/sec                  
[  5]   4.00-5.00   sec  11.0 MBytes  92.5 Mbits/sec                  
[  5]   5.00-6.00   sec  11.1 MBytes  92.7 Mbits/sec                  
[  5]   6.00-7.00   sec  11.1 MBytes  92.8 Mbits/sec                  
[  5]   7.00-8.00   sec  11.1 MBytes  92.7 Mbits/sec                  
[  5]   8.00-9.00   sec  11.0 MBytes  92.3 Mbits/sec                  
[  5]   9.00-10.00  sec  11.0 MBytes  92.5 Mbits/sec                  
[  5]  10.00-10.01  sec  87.7 KBytes  91.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec   110 MBytes  92.6 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
  • 在设备B上启动iperf3作为客户端,连接到设备A:在终端中输入命令iperf3 -c 192.168.1.183并回车。
rk3568_r:/ # iperf3 -c 192.168.1.183
Connecting to host 192.168.1.183, port 5201
[  5] local 192.168.1.25 port 40538 connected to 192.168.1.183 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  11.8 MBytes  98.7 Mbits/sec    0    143 KBytes
[  5]   1.00-2.00   sec  11.2 MBytes  93.8 Mbits/sec    0    151 KBytes
[  5]   2.00-3.00   sec  10.8 MBytes  90.7 Mbits/sec    0    151 KBytes
[  5]   3.00-4.00   sec  11.2 MBytes  93.8 Mbits/sec    0    151 KBytes
[  5]   4.00-5.00   sec  11.2 MBytes  93.8 Mbits/sec    0    151 KBytes
[  5]   5.00-6.00   sec  10.8 MBytes  90.7 Mbits/sec    0    151 KBytes
[  5]   6.00-7.00   sec  11.2 MBytes  93.8 Mbits/sec    0    151 KBytes
[  5]   7.00-8.00   sec  11.2 MBytes  93.8 Mbits/sec    0    151 KBytes
[  5]   8.00-9.00   sec  10.8 MBytes  90.7 Mbits/sec    0    151 KBytes
[  5]   9.00-10.00  sec  11.2 MBytes  93.8 Mbits/sec    0    151 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   111 MBytes  93.4 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   110 MBytes  92.6 Mbits/sec                  receiver
  • 观察终端中显示的结果,它会报告每隔一秒钟的吞吐量,以及总共10秒钟的平均吞吐量。
参数/测试方向 从 192.168.1.25 到 192.168.1.183 (发送端) 从 192.168.1.25 到 192.168.1.183 (接收端)
测试模式 TCP TCP
测试时间 10秒 10秒
平均比特率 93.4 Mbits/sec 92.6 Mbits/sec
总传输数据 111 MBytes 110 MBytes
TCP重传次数 0 N/A
拥塞窗口 (Cwnd) 151 KBytes (平均) N/A

这个表格提供了一个清晰的视图,展示了TCP测试的关键参数和结果。

问题来了 , 为什么发送了93.4 Mbits/sec 接收却是92.6 Mbits/sec 的数据?

根据我查阅的资料 , 当使用iperf3或其他网络测试工具进行TCP测试时,发送和接收的数据量之间可能存在微小的差异。这种差异可能是由以下几个原因造成的:

  1. TCP握手和结束过程:TCP连接的建立和结束涉及到一系列的握手过程。例如,三次握手(SYN, SYN-ACK, ACK)用于建立连接,而四次握手用于结束连接。这些握手数据包也占用了一定的带宽,但它们不包含实际的测试数据。
  2. TCP重传:尽管在提供的结果中没有显示TCP重传,但在实际的网络测试中,可能会有一些数据包丢失并被重传。重传的数据包可能会被计算在发送的数据量中,但由于它们是重复的,所以不会被计算在接收的数据量中。
  3. 协议开销:TCP/IP协议本身有一些开销,例如头部信息。这些开销可能会被计算在发送的数据量中,但不会被计算在接收的有效数据量中。
  4. 测试结束时的数据包:在测试结束时,可能有一些数据包仍在网络中传输,但由于测试已经结束,它们没有被计算在接收的数据量中。
  5. 其他网络因素:例如,网络设备的缓冲、延迟、路由变化等都可能影响到发送和接收的数据量。

当进行网络测试时,微小的数据量差异是正常的。关键是要关注大的差异或异常,因为它们可能指示网络问题或其他潜在问题。

丢包测试

丢包是指在传输过程中丢失的数据包的百分比。丢包会影响网络的可靠性和质量。要测试两台设备之间的丢包率,我们可以使用iperf的UDP模式进行测试,按照以下步骤进行:

  • 在设备A上启动iperf3作为服务器:在终端中输入命令iperf3 -s并回车。
1|console:/ # iperf3 -s                                                        
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.1.25, port 40540
[  5] local 192.168.1.183 port 5201 connected to 192.168.1.25 port 45222
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-1.00   sec   124 KBytes  1.02 Mbits/sec  1875.838 ms  0/88 (0%)  
[  5]   1.00-2.00   sec   129 KBytes  1.05 Mbits/sec  5.299 ms  0/91 (0%)  
[  5]   2.00-3.00   sec   127 KBytes  1.04 Mbits/sec  0.034 ms  0/90 (0%)  
[  5]   3.00-4.00   sec   129 KBytes  1.05 Mbits/sec  0.015 ms  0/91 (0%)  
[  5]   4.00-5.00   sec   127 KBytes  1.04 Mbits/sec  0.018 ms  0/90 (0%)  
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  0.018 ms  0/91 (0%)  
[  5]   6.00-7.00   sec   129 KBytes  1.05 Mbits/sec  0.015 ms  0/91 (0%)  
[  5]   7.00-8.00   sec   127 KBytes  1.04 Mbits/sec  0.017 ms  0/90 (0%)  
[  5]   8.00-9.00   sec   129 KBytes  1.05 Mbits/sec  0.012 ms  0/91 (0%)  
[  5]   9.00-10.00  sec   127 KBytes  1.04 Mbits/sec  0.012 ms  0/90 (0%)  
[  5]  10.00-10.03  sec  4.24 KBytes  1.21 Mbits/sec  0.013 ms  0/3 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.03  sec  1.25 MBytes  1.05 Mbits/sec  0.013 ms  0/906 (0%)  receiver
-----------------------------------------------------------
Server listening on 5201
  • 在设备B上启动iperf3作为客户端,连接到设备A:在终端中输入命令iperf3 -c192.168.1.183 -u并回车。
rk3568_r:/ # iperf3 -c 192.168.1.183 -u
Connecting to host 192.168.1.183, port 5201
[  5] local 192.168.1.25 port 45222 connected to 192.168.1.183 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   3.00-4.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   4.00-5.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  91
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.000 ms  0/906 (0%)  sender
[  5]   0.00-10.03  sec  1.25 MBytes  1.05 Mbits/sec  0.013 ms  0/906 (0%)  receiver
iperf Done.
  • 观察终端中显示的结果,它会报告每隔一秒钟的丢包率,以及总共10秒钟的平均丢包率。
参数/测试方向 从 192.168.1.25 到 192.168.1.183 (发送端) 从 192.168.1.25 到 192.168.1.183 (接收端)
测试模式 UDP UDP
测试时间 10秒 10秒
平均比特率 1.05 Mbits/sec 1.05 Mbits/sec
总传输数据 1.25 MBytes 1.25 MBytes
数据包丢失率 0/906 (0%) 0/906 (0%)
平均抖动 (Jitter) 0.000 ms 0.013 ms

这个表格提供了一个清晰的视图,展示了UDP测试的关键参数和结果。

这表示设备A到设备B的丢包率约为0%。要测试反方向的丢包率,只需在设备B上启动服务器并在设备A上启动客户端即可。

其他设置

要进行持续的测试、大量数据的测试以及TCP测试,可以使用以下方法:

1. 持续测试:

使用iperf3-t参数可以指定测试的持续时间。例如,要进行一个小时的测试,可以使用:

iperf3 -c 192.168.1.183 -t 3600
2. 进行大量数据的测试:

要进行大量数据的测试,可以结合使用-t(时间)和-b(带宽)参数。例如,要测试一个小时的时间内以100 Mbits/sec的速度传输数据,可以使用:

iperf3 -c 192.168.1.183 -t 3600 -b 100M
3. 测试TCP:

默认情况下,iperf3使用TCP进行测试。只需简单地指定客户端和服务器即可:

  • 在目标机器上启动iperf3服务器:
iperf3 -s
  • 在Rockchip Android设备上启动iperf3客户端:
iperf3 -c 192.168.1.183

要进行特定的TCP测试,例如测试不同的TCP窗口大小,可以使用-w参数:

iperf3 -c 192.168.1.183 -w 2M

这将设置TCP窗口大小为2 MB。

  • TCP和UDP的性能可能会有所不同,因为TCP是一个连接导向的协议,它有流量控制、拥塞控制和重传机制,而UDP则没有这些特性。

分析结果

可以根据测试结果,观察吞吐量和丢包率,以确定网络的性能。高的吞吐量和低的丢包率通常意味着良好的网络性能。我们也可以将测试结果与其他网络或设备进行比较,以评估相对的性能差异。

比如 , 根据日志我们大概可以分析

  1. 测试方向:从设备(IP地址为192.168.1.25)到目标主机(IP地址为192.168.1.183)。
  2. 测试模式:UDP模式。
  3. 传输速率:每秒的数据传输量,例如在第一秒,传输了129 KBytes的数据。
  4. 比特率:每秒的数据传输速率,例如在第一秒,数据传输速率为1.05 Mbits/sec。
  5. 数据报文总数:例如在第一秒,发送了91个数据报文。
  6. 总结信息
  • 总传输数据:在10秒内,总共传输了1.25 MBytes的数据。
  • 平均比特率:在10秒内,平均数据传输速率为1.05 Mbits/sec。
  • 抖动(Jitter):数据报文的延迟变化,这里的值非常小,几乎为0,这是好的。
  • 丢失/总数据报文:这里显示了丢失的数据报文数和总的数据报文数。例如,发送了906个数据报文,丢失了0个。

需要关注的重要信息

  1. 比特率(Bitrate):这告诉我们网络的实际传输速度。在这个测试中,它保持在1.05 Mbits/sec,这是一个相对稳定的速率。
  2. 丢失的数据报文:在UDP传输中,数据报文的丢失是很关键的。在这里,丢失率为0%,这是非常好的。
  3. 抖动(Jitter):在实时应用(如VoIP或在线游戏)中,低抖动是很重要的。这里的抖动几乎为0,这意味着网络延迟是非常稳定的。
  4. 数据报文总数:这可以帮助我们了解测试的规模。

总结

本文介绍了如何在Rockchip Android平台上进行以太网性能测试的基本方法和步骤,以及如何使用一些常用的网络测试工具和指标来评估网络的性能。这只是一个基本的测试方法,根据你的具体需求和环境,可能需要进行更复杂或详细的测试。希望本文对你有所帮助。如果你有任何问题或建议,请在评论区留言。谢谢!

目录
打赏
0
1
1
0
76
分享
相关文章
利用Apipost轻松实现用户充值系统的API自动化测试
API在现代软件开发中扮演着连接不同系统与模块的关键角色,其测试的重要性日益凸显。传统API测试面临效率低、覆盖率不足及难以融入自动化工作流等问题。Apipost提供了一站式API自动化测试解决方案,支持零代码拖拽编排、全场景覆盖,并可无缝集成CI/CD流程。通过可视化界面,研发与测试人员可基于同一数据源协作,大幅提升效率。同时,Apipost支持动态数据提取、性能压测等功能,满足复杂测试需求。文档还以用户充值系统为例,详细介绍了从创建测试用例到生成报告的全流程,帮助用户快速上手并提升测试质量。
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
289 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
96 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
73 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
132 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
如何进行系统压力测试?
【10月更文挑战第11天】如何进行系统压力测试?
303 34
Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性
本文探讨了Go语言中的错误注入与防御编程。错误注入通过模拟网络故障、数据库错误等,测试系统稳定性;防御编程则强调在编码时考虑各种错误情况,确保程序健壮性。文章详细介绍了这两种技术在Go语言中的实现方法及其重要性,旨在提升软件质量和可靠性。
93 1
全网最全压测指南!教你如何测试和优化系统极限性能
大家好,我是小米。本文将介绍如何在实际项目中进行性能压测和优化,包括单台服务器和集群压测、使用JMeter、监控CPU和内存使用率、优化Tomcat和数据库配置等方面的内容,帮助你在高并发场景下提升系统性能。希望这些实战经验能助你一臂之力!
301 3
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等