RT_Thread-stm32f4 双网口网络性能测试

· · 2651 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

网络的主要性能参数包括带宽,时延,抖动、丢包率。

一、在RT-Thread 开启netutils网络组件

在rt-thread bsp工程ConEmu工具的中输入menuconfig,打开netutils的 iperf和 NetIO工具。

在 RT-Thread 上使用 Finsh/MSH 命令来获取 IP 地址

msh />ifconfig
network interface device: e0 (Default)
MTU: 1500
MAC: 00 80 e1 10 38 35 
FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE ETHARP BROADCAST IGMP
ip address: 10.55.2.188
gw address: 10.55.2.253
net mask  : 255.255.255.0
dns server #0: 10.51.0.1
dns server #1: 0.0.0.0

network interface device: W5500
MTU: 1472
MAC: 00 e0 81 dc 53 1a 
FLAGS: UP LINK_UP INTERNET_UP DHCP_ENABLE
ip address: 10.55.2.119
gw address: 10.55.2.253
net mask  : 255.255.255.0
dns server #0: 10.51.0.1
dns server #1: 0.0.0.0

二、iperf:网络带宽测试工具

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

​ PC端使用 JPerf 测试软件辅助测试。

1.RT-Thread 作为TCP服务端

msh />iperf -s -p 5001
  • -s 表示作为服务器启动
  • -p 表示监听 5001 端口

eth0 测试结果

# PC为客户端
Client connecting to 10.55.2.188, TCP port 5001
TCP window size: 0.06 MByte (default)
------------------------------------------------------------
[332] local 10.55.2.189 port 62125 connected with 10.55.2.188 port 5001
[ ID] Interval       Transfer     Bandwidth
[332]  0.0- 1.0 sec  4.17 MBytes  35.0 Mbits/sec
[332]  1.0- 2.0 sec  4.13 MBytes  34.6 Mbits/sec
[332]  2.0- 3.0 sec  4.11 MBytes  34.5 Mbits/sec
[332]  3.0- 4.0 sec  4.13 MBytes  34.6 Mbits/sec
[332]  4.0- 5.0 sec  4.11 MBytes  34.5 Mbits/sec
[332]  5.0- 6.0 sec  4.13 MBytes  34.6 Mbits/sec
[332]  6.0- 7.0 sec  4.12 MBytes  34.5 Mbits/sec
[332]  7.0- 8.0 sec  4.13 MBytes  34.7 Mbits/sec
[332]  8.0- 9.0 sec  4.10 MBytes  34.4 Mbits/sec
[332]  9.0-10.0 sec  4.12 MBytes  34.5 Mbits/sec
[332]  0.0-10.0 sec  41.2 MBytes  34.5 Mbits/sec
Done.

# RT-Thread为服务端
msh />new client connected from (10.55.2.189, 62125)
34.5500 Mbps!
34.5440 Mbps!

2.RT-Thread 作为TCP客户端

msh />iperf -c 10.55.2.189 -p 5001
  • ip地址为PC端ip地址

eth0 测试结果

# PC为服务端
Server listening on TCP port 5001
TCP window size: 0.06 MByte (default)
------------------------------------------------------------
[352] local 10.55.2.189 port 5001 connected with 10.55.2.188 port 49153
[ ID] Interval       Transfer     Bandwidth
[352]  0.0- 1.0 sec  5.25 MBytes  44.0 Mbits/sec
[352]  1.0- 2.0 sec  5.25 MBytes  44.0 Mbits/sec
[352]  2.0- 3.0 sec  5.24 MBytes  43.9 Mbits/sec
[352]  3.0- 4.0 sec  5.24 MBytes  44.0 Mbits/sec
[352]  4.0- 5.0 sec  5.24 MBytes  43.9 Mbits/sec
[352]  5.0- 6.0 sec  5.23 MBytes  43.8 Mbits/sec
[352]  6.0- 7.0 sec  5.23 MBytes  43.9 Mbits/sec
[352]  7.0- 8.0 sec  5.23 MBytes  43.9 Mbits/sec
[352]  8.0- 9.0 sec  5.23 MBytes  43.9 Mbits/sec
[352]  9.0-10.0 sec  5.22 MBytes  43.8 Mbits/sec

# RT-Thread客户端
msh />Connect to iperf server successful!
43.9740 Mbps!
43.8760 Mbps!

3.RT-Thread 作为UDP服务端

msh />iperf -u -s -p 5001

e0 测试结果

# PC客户端
Client connecting to 10.55.2.188, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 0.06 MByte (default)
------------------------------------------------------------
[352] local 10.55.2.189 port 49720 connected with 10.55.2.188 port 5001
[ ID] Interval       Transfer     Bandwidth
[352]  0.0- 1.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  1.0- 2.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  2.0- 3.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  3.0- 4.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  4.0- 5.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  5.0- 6.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  6.0- 7.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  7.0- 8.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  8.0- 9.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  9.0-10.0 sec  2.38 MBytes  20.0 Mbits/sec
[352]  0.0-10.0 sec  23.8 MBytes  20.0 Mbits/sec

# RT-Thread服务端
20.0080 Mbps! lost:2 total:8509

4.RT-Thread 作为UDP客户端

msh />iperf -u -c 10.55.2.189 -p 5001

eth0测试结果

# PC服务端
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 0.06 MByte (default)
------------------------------------------------------------
[340] local 10.55.2.189 port 5001 connected with 10.55.2.188 port 49154
[ ID] Interval       Transfer     Bandwidth       Jitter   Lost/Total Datagrams
[340]  0.0- 1.0 sec  6.63 MBytes  55.6 Mbits/sec  0.408 ms    1/ 4732 (0.021%)
[340]  1.0- 2.0 sec  6.64 MBytes  55.7 Mbits/sec  0.321 ms    0/ 4733 (0%)
[340]  2.0- 3.0 sec  6.64 MBytes  55.7 Mbits/sec  0.310 ms    0/ 4735 (0%)
[340]  3.0- 4.0 sec  6.63 MBytes  55.6 Mbits/sec  0.405 ms    0/ 4730 (0%)
[340]  4.0- 5.0 sec  6.64 MBytes  55.7 Mbits/sec  0.241 ms    0/ 4736 (0%)
[340]  5.0- 6.0 sec  6.63 MBytes  55.6 Mbits/sec  0.381 ms    0/ 4732 (0%)
[340]  6.0- 7.0 sec  6.64 MBytes  55.7 Mbits/sec  0.294 ms    0/ 4733 (0%)
[340]  7.0- 8.0 sec  6.63 MBytes  55.6 Mbits/sec  0.405 ms    0/ 4730 (0%)
[340]  8.0- 9.0 sec  6.64 MBytes  55.7 Mbits/sec  0.349 ms    0/ 4734 (0%)
[340]  9.0-10.0 sec  6.64 MBytes  55.7 Mbits/sec  0.413 ms    0/ 4736 (0%)
[340] 10.0-11.0 sec  6.63 MBytes  55.6 Mbits/sec  0.409 ms    0/ 4729 (0%)

三、eth0接收,w5500转发测试

1.测试方式

  • RT-Thread eth0与RK3399 eth0接同一个路由器,RT-Threa w5500与RK3399 eth1接另一个路由器。

    • RT-Thread eth0作为udp server,w5500作为udp client。
    • RK3399 eth0作为udp client,eth1作为udp server。
  • RK3399 eth0 向 RT-Thread eth0 发送256bytes数据, RT-Thread 接收数据后,从w5500转发给RK3399 eth1。

  • RK3399统计从发送数据到接收数据的时间差。

2.程序语言

  • RT-Thread:micropython
  • RK3399:golang

3.测试结果

  • rk3399发送数据
时间戳(毫秒):1574083487354;
eth0 send len:: 256
eth0 read data:: '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
  • RT-Thread接收数据
from_space_('192.168.16.101', 38798)_space_msg_space_b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
  • rk3399接收的转发数据
eth1 read len:: 256
eth1 read data:: return,b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
时间戳(毫秒):1574083487465;

256bytes数据转发时间:11ms


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:

查看原文:RT_Thread-stm32f4 双网口网络性能测试

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2651 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传