|
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:
Greetings, 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? Regards VP
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.
[Prev in Thread] | Current Thread | [Next in Thread] |