取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
tanyushuang
Participant
Participant
221 次查看
注册日期: ‎07-24-2019

关于UDP每次传输的最大值的问题

现在,使用的芯片为xc7z020clg400-1Vivado的版本为:2014

 

在调试使用UDP来进行传输数据的过程中,出现了一个这样的问题:

在使用UDP传输的时候,使用了udp_sendto函数。但是,每次传输的数据只能是1500个字节。将字节数量再增加的话,就完全不传输数据了。

通过查阅资料,似乎这个就是UDP传输最大的MTU的数值。

 

我的问题是:

如果,我想要加大UDP每次传输的数据量。应该怎么做呢?

各位伙伴,有遇到这样的问题的吗?是如何解决的呢?谢谢各位!

0 项奖励
4 回复数
shengjie
Moderator
Moderator
216 次查看
注册日期: ‎07-01-2019

MTU超过1500字节属于Jumbo frame了,Zynq PS GEM是不支持Jumbo frame的

其他方案是PL侧用AXI Ethernet,这个IP可以支持Jumbo Frame,另外Zynq MPSoC GEM也支持Jumbo Frame

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
tanyushuang
Participant
Participant
172 次查看
注册日期: ‎07-24-2019

@shengjie ,谢谢你的热情回复。

也就是说在SDK的关于UDP的传输发送过程中,如果要进行”大数据量“的传输,超过一个MTU的数据的话,并没有底层函数进行”拆分“的工作。需要自行进行”拆分“,只能进行循环发送?

是这样吗?再次感谢!

0 项奖励
shengjie
Moderator
Moderator
167 次查看
注册日期: ‎07-01-2019

Zynq作为接收端的话,如果MTU超过1500,超出了MAC所能处理的范畴,就直接丢弃处理了。

如果作为发送端,应该由链路层的上一层IP层来负责将大的数据报文拆分,让链路层按照MTU=1500的帧长往外发送,你用的是LWIP裸核开发吗?这个拆分的操作应该是库中已经做好的,用户应该是不需要去调用的,只要在LWIP配置中修改MTU相关参数就可以的

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
tanyushuang
Participant
Participant
77 次查看
注册日期: ‎07-24-2019

再次感谢你的回应。

我的ZYNQ确实是作为“发送端”的。我用的也是LWIP裸核开发。

好的。我在LWIP的配置中修改一下MTU的参数。

再次感谢你的善意。

0 项奖励