搜索
bottom↓
回复: 22

udp通信,1秒钟最快能发多少个包?不连包的情况下

[复制链接]

出0入90汤圆

发表于 2019-5-14 19:14:22 | 显示全部楼层 |阅读模式
我现在使用的平台是ZYNQ了,不是STM32了。但是使用的也是ucos,网络协议栈用的是uc tcpip。STM32的时候是用W5500来通信的。
ZYNQ上面用的是千兆网。
但是实际操作的时候发现好像速度还不如W5500啊。

说下我的情况,我是用UDP给上位机软件发数据包,一个数据包最大1000字节,一帧数据可能1-20KB。不停的连续发送。
不加延时的时候,一次发送17个1000字节的数据包,后面的几个会丢掉,可能是我缓冲区的设置问题,因为是非阻塞的。
然后我在网络助手里面看到发上来的数据,固定的能收到9个包,合计9000字节。

然后这9个包用了60ms的时间,这个时间也太长了吧。我每个发送加5ms的延时,也是差不多这个时间。因为是非阻塞的,底层是库也看不到。

所以我的疑惑是,是不是UDP包不能发得很频繁,好比1ms发一个UDP包。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入8汤圆

发表于 2019-5-14 19:41:38 来自手机 | 显示全部楼层
都用上zynq了,要想发包快且稳,肯定是上IP Core啊,直接给你线速的性能

出0入22汤圆

发表于 2019-5-14 19:14:23 来自手机 | 显示全部楼层
上位机一般我自己写,用多线程,目前的调试软件性能都很差。以前用周公那个,不管如何,只能达到2m多,后来自己写的程序,瞬间彪到700+。

出10入46汤圆

发表于 2019-5-14 22:08:14 | 显示全部楼层
1. 最好开启巨包机制
2. 考虑转发速度,开启UDP高速转发(如果中间有路由器,有的不支持)
3. UDP是不考虑数据完整性的机制。需要协议自己验证。

出0入8汤圆

发表于 2019-5-14 22:55:36 来自手机 | 显示全部楼层
gonboy 发表于 2019-5-14 22:08
1. 最好开启巨包机制
2. 考虑转发速度,开启UDP高速转发(如果中间有路由器,有的不支持)
3. UDP是不考虑 ...

3. IP层会保证数据完整性,UDP只是不能保证数据一定能收到。

出10入46汤圆

发表于 2019-5-15 08:30:51 | 显示全部楼层
canspider 发表于 2019-5-14 22:55
3. IP层会保证数据完整性,UDP只是不能保证数据一定能收到。

是的。 谢谢修正                                      

出870入263汤圆

发表于 2019-5-15 08:47:40 | 显示全部楼层
udp本身没这限制,我用lwip和rtl-tcpnet都可以沾满带宽。uc/tcpip是闭源产品,没试过。

出0入475汤圆

发表于 2019-5-15 08:48:53 来自手机 | 显示全部楼层
为了排除你的程序写的有问题,或者是其他任务干扰了你的结果,简单的做个死循环不停的发同一个包不就得了,

出0入0汤圆

发表于 2019-5-15 10:27:54 | 显示全部楼层
跟udp没有任何关系, 只跟物理带宽有关,其它的都是软件问题, 这个就跟串口一样的,只要你的物理速率一定,你就能以这个速率一直发,至于发不发,中间有空闲等,都是软件问题(驱动/应用)

出0入90汤圆

 楼主| 发表于 2019-5-15 14:10:01 | 显示全部楼层
yj_yulin 发表于 2019-5-15 10:27
跟udp没有任何关系, 只跟物理带宽有关,其它的都是软件问题, 这个就跟串口一样的,只要你的物理速率一定,你就 ...


今天调试发现,不一定是我发的不对。好像是网络调试助手有问题。我用另外一个网络助手软件,100字节发送一次,连续发送100次,中间没有加延时。经过测试,网络助手只能收到前80+次。后面的就收不到了。测试了多次也是这样。

出10入12汤圆

发表于 2019-5-15 14:21:12 | 显示全部楼层
FPGA 和电脑     最快1500个包

出0入90汤圆

 楼主| 发表于 2019-5-15 14:23:45 | 显示全部楼层
结论出来了:我使用的netassist,xnet等多种上位机软件的接收都有问题。它们好像缓冲区设置得很小,多个udp包不间断接收得时候,会只显示前面得一些,猜测它们得缓冲区大小好像是8K左右。我一次发16K得数据,它就只能显示前面得8-9K。

直接使用我们自己做得软件来接收,就可以收到完整得数据。这次算是被网络调试助手给坑了。

出0入42汤圆

发表于 2019-5-15 14:28:02 | 显示全部楼层
插根网线, wireshark走一波. 抓包就让专业的来

出0入90汤圆

 楼主| 发表于 2019-5-15 16:17:15 | 显示全部楼层
使用ucos加uc tcpip最后测试的结果是持续发送udp包,大概速度是400mbps。考虑到代码的开销,这个速度差不多了。

出0入0汤圆

发表于 2019-5-15 16:37:12 | 显示全部楼层
如果udp数据率超过80Mbps,对接收端的系统和软件都有要求了,有时候是能发出来,但接收端丢包。建议先用Wireshark作为参照,看有没有发出来

出0入71汤圆

发表于 2019-5-15 16:46:01 | 显示全部楼层
刚刚用INTEL的FPGA写了一个RMII的接口程序,由于时序控制原因,每秒发送40K个包,每个以太网包64字节。 仅供参考。

出0入71汤圆

发表于 2019-5-15 16:49:17 | 显示全部楼层
honami520 发表于 2019-5-15 14:10
今天调试发现,不一定是我发的不对。好像是网络调试助手有问题。我用另外一个网络助手软件,100字节发送 ...

包间必须要加延迟,这个是以太网底层协议规定的,否则你的数据包会被交换机过滤掉。

出0入22汤圆

发表于 2019-5-15 18:14:08 来自手机 | 显示全部楼层
honami520 发表于 2019-5-15 16:17
使用ucos加uc tcpip最后测试的结果是持续发送udp包,大概速度是400mbps。考虑到代码的开销,这个速度差不多 ...

其实可以更高,只不过能够满足要求即可。zynq跑800M没有问题,另外就是对电脑性能也有要求,曾经p8400cpu,只能达到400m的速度,换i5,立马上800m多

出55入66汤圆

发表于 2019-5-15 19:54:46 来自手机 | 显示全部楼层
本帖最后由 cpumaker 于 2019-5-15 19:56 编辑

实时性怎样?例如一个100字节的包,rtt时间能不能做到100us以内?

出0入22汤圆

发表于 2019-5-15 20:09:37 来自手机 | 显示全部楼层
cpumaker 发表于 2019-5-15 19:54
实时性怎样?例如一个100字节的包,rtt时间能不能做到100us以内?

udp经过的层数太多,不适合实时性要求比较高的场合。

出10入12汤圆

发表于 2019-5-15 23:34:55 来自手机 | 显示全部楼层
zxq6 发表于 2019-5-15 20:09
udp经过的层数太多,不适合实时性要求比较高的场合。

那应该用哪种?请大师赐教

出0入22汤圆

发表于 2019-5-16 08:32:28 | 显示全部楼层
442502587 发表于 2019-5-15 23:34
那应该用哪种?请大师赐教

ethercat,profinet,你可以去看看。
看描述,都是实时性比较好的。

出0入0汤圆

发表于 2019-5-18 10:59:19 | 显示全部楼层
应该直接用抓包软件看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 02:05

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表