[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] UDP-based reliable bulk data transfer

From: Patrick Klos
Subject: Re: [lwip-users] UDP-based reliable bulk data transfer
Date: Tue, 25 Apr 2017 17:52:43 -0400
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0

On 4/25/2017 3:16 AM, pupkin wrote:

I need to send large quantities of data reliably from a Zynq-based device to
a PC.
I'm looking for a data transfer protocol which can get as close as possible
to wire speed on a dedicated 1Gb ethernet link. It would be nice although
not strictly required it it worked over arbitrary internet connections.

Currently I'm considering either porting http://enet.bespin.org/ or
http://udt.sourceforge.net/ to lwIp or rolling my own UDP-based protocol. I
will need support for zero-copy with scatter-gather DMA.

Has anyone done this before? Any suggestions?


For what it's worth, I've done some tests on a dedicated 100Mb link and they are quite reliable. I suspect the same could be said about a dedicated 1Gb link? I ran a test once on a dedicated link between an embedded system and a Windows computer with no lost packets for hours (maybe even overnight - I forget the exact details).

That means that you should be able to implement a high speed UDP based transfer protocol with very little overhead to make it "reliable". I would bet that creating a "window" of UDP packets (with sequence numbers) will do what you want with the receiver sending back an ACK of sorts for every so many packets or if it sees a sequence number missing.

I'm not sure about the zero-copy scatter-gather support - you'll probably just have to try it. The lwIP stack might scan your pbuf and decide to copy the packet to a single buffer pbuf depending on the capabilities of the ethernet interface. Even so, your Zynq processor will probably be able to handle the copies faster than a 1Gb link could transfer the data?

Good luck!

Patrick Klos
Klos Technologies, Inc.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]