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

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的网速测试平台,并且学习了内存、缓冲区的大小以及控制块的数量越大,就会让网速越快。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值