正点原子lwIP学习笔记——Jperf测试网速

news2024/11/20 13:30:03

1. Jperf与iperf简介

简介
iperf是命令行形式的网络性能测试工具;而Jperf就是在iperf的基础上进行UI开发,搭建了界面的图形化网络性能测试工具。

是用来测试TCP/UDP的带宽、延迟抖动和数据包丢失等功能!

iperf命令行

iperf -c server -ip -p server-port -i 1 -t 10 -w 20K

可通过以上命令行来进行测试;

-c后跟客户端的模式、-ip就是IP地址、-p后跟端口号、-i时贷款间隔、-t就是测试时长、iw是带宽间隔。

Jperf图形界面
第一行的iperf command就是根据下面的图形化选择,通过设定的参数自动生成的iperf命令。

  • 服务端设置
    (1) Listen Port 监听端口 ;
    (2) client limit: 客户端限制,仅允许指定客户端连接 ;
    (3) Num Connections :最大允许连接的数量,为 0 不限制;
  • 客户端设置:
    (1) Server address 表示服务器地址;
    (2) Port 表示端口;
    (3) Parallel Streams 表示并发流;
  • 应用层设置:
    (1) Enable Compatibilitu Mode 兼容旧版本(当 server 端和 client 端版本不一样时使用);
    (2) Transmit 设置测试模式:传输字节总量大小 10Bytes 或者按传输时间总长度10秒;
    (3) Dual 复选框勾上表示同时进行双向传输测试;
    (4) Trade 复选框 勾上表示单独进行双向传输测试,先测 c 到 s 的带宽;
    (5) Representative File 表示指定需要传输的文件;
    (6) Print MSS 表示显示 tcp 最大 mtu 值;
  • 传输层设置:
    (1) TCP 协议 设置缓冲区大小;
    (2) TCP 协议 指定 TCP 窗口大小;
    (3) TCP 协议 设定 TCP 数据包的最大 mtu 值;
    (4) TCP 协议 设定 TCP 不延时;
    (5) UDP 协议 设置 UDP 最大带宽;
    (6) UDP 协议 设置 UDP 缓冲区;
    (7) UDP 协议 UDP 包封装大小:默认1470byte;
  • IP层设置:
    (1) TTL 表示 指定 ttl 值;
    (2) Type of Service 表示 服务类型( Type of Service ToS ),大小范围从 0x10 ( 最小延迟 )
    到 0x2 ( 最少费用 )在使用 802.11e 来控制服务质量的 WLAN 中, ToS 是映射在 Wi Fi
    多媒体 (WMM)存取范畴的 。

2. lwIP如何提高网络传输速率

虽然LAN8720A和YT8512C(正点原子开发板的PHY芯片)都是支持10M/100MBits/s的传输速率,但是网速必然受限于硬件

影响因素举例
如果内存和收发缓冲取能大一些,那么显然一次能接受到的数据更多,缓冲的数据也更多;TCP的滑动窗口越大,那么能处理的数据越多,传输速度也会越快;再例如控制块、监听和排队队列越大,也会是的缓冲空间变大,提高传输速度;最后再比如DMA描述符,其就是一个缓冲区,也会影响速率。

3. lwIP网络测速

lwIP是提供网络测速的代码的,其再lwiperf.c中;

官方是直接给出了使用的示例的,我们自己使用的时候,直接比对examples文件夹下的lwiperf文件夹中的官方代码示例,就可以直接使用了。

在lwip_demo中,可以直接调用lwiperf_start_tcp_server__default这个函数来完成网速的测试,传入的参数有两个,一个是lwiperf_report,一个是NULL;

static void lwiperf_report(void *arg,
enum lwiperf_report_type report_type,
const ip_addr_t *local_addr,
u16_t local_port,
const ip_addr_t *remote_addr,
u16_t remote_port,
u32_t bytes_transferred,
u32_t ms_duration,
u32_t bandwidth_kbitpsec)

可以通过直接printflwiperf_report之中的参数信息来完成测试,可以测试的参数有:动态IP地址、本地端口号、远程IP地址、远程端口号、转换速度、持续时间还有带宽。

4. lwIP配置提高传输速率

首先要找到lwipopts.h文件,这个文件完成了一些配置,可以通过改变这些配置来提升网络传输速率。

例如MEM_SIZE就是内存堆的大小,可以配置大一点来提速;改变MEMP_NUM_PBUF来增加内存堆的数量以提高传输速率;增加MEMP_NUM_UDP_PCB和MEMP_NUM_TCP_PCB来增加UDP(TCP)的控制块数量也可以提速;提高MEMP_NUM_TCP_PCB_LISTEN增加监听控制块的数量,或者MEMP_NUM_TCP_SEG增加同时排队的TCP数量段,也可以提速;

修改内存池也可以提速:比如增加PBUF_POOL_SIZE来增加内存池中每个内存块的大小,或者增加PBUF_POOL_BUFSIZE来增加pbuf池中每个pbuf的大小,均可以提速;

修改TCP最大段同样可以影响网速:增加TCP_MSS来增加TCP的最大段(也就是TCP的最大分片,在传输层分包)也会提升网速;

修改TCP的相关参数,比如发送缓冲区的大小TCP_SND_BUF,发送的队列TCP_SND_QUEUELEN以及窗口大小TCP_WND,这几个变量变大也会提升网速。

再比如再ethernet.c中,可以修改DMA的大小来提升网速。

在实验代码中就可以通过修改以上值,配合Jperf的界面来进行网速测试。

总结

主要学习的其实是有一个叫Jperf的网速测试平台,并且学习了内存、缓冲区的大小以及控制块的数量越大,就会让网速越快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1046283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决GC毛刺问题——转转搜索推荐服务JDK17升级实践

解决GC毛刺问题——转转搜索推荐服务JDK17升级实践 1 升级背景2 JDK17简介2.1 新语法简介2.2 新GC算法简介 3 升级过程3.1 升级步骤3.2 遇到问题及解决方法 4 升级效果4.1 整体耗时对比4.2 分节点耗时对比4.3 GC停顿时长对比4.4 堆空间占用对比 5 总结 1 升级背景 随着转转业务…

HTTPS协议概述

HTTPS(Hypertext Transfer Protocol over Secure Socket Layer,基于安全套接字层的超文本传输协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,…

C语言入门Day_26 结构体

目录 前言: 1.结构体的定义 2.结构体的使用 3.易错点 4.思维导图 前言: 变量只能表示单一的属性,比如用int去表示一个年龄,用float去表示一个身高或一个体重,一个字符串/字符数组去表示一个性别或一个名字。 …

2023年腾讯云服务器优惠活动整理汇总

腾讯云是腾讯集团倾力打造的云计算品牌,为了吸引更多的用户,腾讯云经常会推出各种各样的优惠活动。本文将为大家整理汇总一些腾讯云服务器的优惠活动,希望能够帮助到需要购买腾讯云服务器的用户。 一、腾讯云服务器优惠券 腾讯云优惠券是腾讯…

创建型设计模式——工厂模式

摘要 本博文主要介绍软件设计模式中工厂模式,其中工厂设计模式的扩展为简单工厂(Simple Factory)、工厂方法(Factory Method)、抽象工厂(Abstract Factory)三种。 一、简单工厂(Simple Factory) 主要分析设计模式 - 简单工厂(Simple Factory),它把实例…

腾讯大牛耗时1个月整理的“JVM学习笔记“深入底层,面面俱到!

为什么要学习JVM? 1、 程序调优2、 排查程序运行问题3、 掌握了程序执行的根本和原理4、 规避写代码时候的一些错误5、 应付面试6、 掌握了其他语言的通用机制 怎么有效的学习JVM? 以上了解了学习JVM的种种好处,但是怎么有效的学习JVM呢&a…

029-从零搭建微服务-消息队列(一)

写在最前 如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。 源码地址(后端):mingyue: 🎉 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年省市县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:1992-2013年来源于DMSP、2013-2021年3月来自VIIRS 3、范…

spring AOP源码阅读分析

理论知识 AOP是面向切面编程(Aspect Oriented Programming)的意思。定义一些切点(pointcut),然后可以在切点织入一些通知(advice),对切点方法进行代理增强,与核心业务逻辑分离开来,以提高系统的可维护性、可扩展性和重…

网工内推 | 网络工程师,软考证书优先,六险一金,包吃

01 科力信息 招聘岗位:网络工程师 职责描述: 1、负责蚌埠项目的设备安装及调试; 2、对边界网络运行中的监控、故障排除、问题处理。 任职要求: 1、2年及以上网络相关工作经验,有交通管理网络运维经验优先&#xff1b…

【移动端测试工具】Appium自动化测试工具安装与配置

文章目录 一、JAVA环境配置检查是否已安装java jdk 二、android SDK安装1.下载android sdk压缩包2.解压压缩包3.安装SDK Manager4.sdk环境变量配置5.验证sdk是否安装成功 三、node JS安装1.下载node.js安装包2.安装node.js3.环境配置4.测试完成验证5.安装淘宝镜像并检验是否安装…

Android MeasureSpec测量规格

文章目录 Android MeasureSpec测量规格概述MeasureSpec组成常用APIMeasureSpec源码分析getChildMeasureSpec源码分析总结 Android MeasureSpec测量规格 概述 MeasureSpec指View的测量规格,MeasureSpec是View的一个静态内部类。 View的MeasureSpec是根据自身的布局…

SoloX:Android和iOS性能数据的实时采集工具

SoloX:Android和iOS性能数据的实时采集工具 github地址:https://github.com/smart-test-ti/SoloX 最新版本:V2.7.6 一、SoloX简介 SoloX是开源的Android/iOS性能数据的实时采集工具,目前主要功能特点: 无需ROOT/越狱…

Java调用操作系统命令的输出乱码问题解决

本篇解决的问题 使用Java 的Runtime调用操作系统的命令,出现异常时使用getErrorStream()获取错误信息的字节流,转换该字节流为字符串显示时,出现乱码。 Java调用操作系统命令 这里以Windows 操作系统为例, 调用cd 命令切换路径…

SAP 销售订单审批状态参数设置

定义权限码 BS52 Spro->控制->内部订单->订单主数据->状态管理->定义状态管理授权码 创建状态参数文件 BS02 SPRO->销售与分销->销售->销售凭证->定义并分配状态参数文件->定义状态参数文件 1)命名,描述 设置对象类型:销…

记录一个iOS UITableView 正在刷新的时候修改数据源导致的崩溃

首先看一下崩溃堆栈信息 由于tableview 调用layoutsubViews 执行到代理方法 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 由于是崩溃在系统方法里面的,我们无法直接看到是因为调用哪个方法导致的崩溃 后来…

秦时明月沧海手游礼包码,秦时明月沧海兑换码

在玩《秦时明月沧海》手游时,你可能会遭到礼包码的诱惑。如果你还没找到可用的兑换码,这里有一些可供使用的礼包码,赶快领取吧! 关注【娱乐天梯】,获取内部福利号 1. 礼包码:QIN0809 包含:金镒…

面试打底稿⑤ 项目一的第一部分

简历原文 抽查部分 项目描述 该项目旨在服务广州地区的快递物流,实现了下单、快递员取派件、订单转运单、线路规划、网点设置等功能。 责任描述 登录系统优化,双token三验证模式实现设置token状态、提高登录安全性的效果 模拟问答 1.能简单介绍一下…

2023-9-27 JZ18 删除链表的结点

题目链接: 删除链表的结点 import java.util.*;/** public class ListNode {* int val;* ListNode next null;* public ListNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请…

【C++】友元函数 ( 友元函数简介 | 友元函数声明 | 友元函数语法 | 友元函数声明不受访问控制限制 | 友元函数参数要求 )

文章目录 一、友元函数简介二、友元函数声明1、友元函数语法2、友元函数声明不受访问控制限制3、友元函数参数要求4、友元函数示例 三、完整代码示例 - 友元函数 一、友元函数简介 在 C 语言中 , " 友元函数 " 是 与 类 相关联的函数 , " 友元函数 " 不是…