In a "streaming" or servo (or tracking) application latency matters a lot, bandwidth is usually pre-limited by the sampling rate. Its usually better to drop or distort a frame than stop and wait for a re-transmission.
In a soft real-time system a few errors once in a while usually doesn't create too bad of a glitch, but when using TCP the retry for error correction can often make the glitch worse. Its all application dependent, but on a lightly loaded subnet I agree there is usually no significant difference between UDP and TCP within UDP's limitation (maximum packet size can be a function of the subnet its on), but for things like the 6-DOF motion controller I was talking about, using UDP and just dropping any bad data and "catching up" next sample works far better than prolonging the glitch to wait for the "correct" data which is by now too "stale" to care about. I've setup systems both ways using which ever was most appropriate Basically if a decent amount of data buffering is needed in the system, or you need to cross subnets TCP is almost always the way to go, but if quick response to changes is required UDP usually works better for soft-real time applications. On Saturday, March 12, 2016 at 4:08:54 PM UTC-6, William Hermans wrote: > > Hey Walley, > > I don't think TCP/IP would be all that much slower than UDP when > transmitting data over the wire on this board. The Beaglebone's ethernet is > incredibly fast for 10/100 fast ethernet. What's more, yes by comparrison > TCP connection can have more latency than UDP connections but latency does > not usually matter. What matters most of the time is bandwidth. So the > connection speed could be the same, it may just arrive a few milliseconds > slower. > > But, I'll have to devise some sort of test using netcat to see what's > really up with netcat. That should not be too hard to do. I can say that > NFS comes really close to the interfaced maximum theoretical speed. But NFS > uses neither UDP, or TCP, and if memory serves it operates on layer2 on > some level . . . > > On Sat, Mar 12, 2016 at 12:57 PM, Wally Bkg <[email protected] > <javascript:>> wrote: > >> TCP/IP connection will guarantee no data loss at the cost of possibly >> greatly increased latency. I've done such in the past using UDP which, if >> client and server are on the same subnet, is about as deterministic as >> standard Ethernet gets, but is generally blocked by default on most >> firewalls. If the data leaves your subnet you will need error correction >> and likely just end up reinventing TCP badly. >> >> I've done pseudo-simultaneous sampling systems (all the A/D channels are >> sampled at the maximum rate once per tick of a slower timer that sets the >> system sampling rate) using this method with the server sending each >> multi-channel sample to a different system via UDP for further processing >> at every tick of the sample clock. It works very well when the systems are >> on the same subnet and the data rate is not too high compared to the >> network overhead. >> >> If your data rate is low enough the "file system" based solutions might >> be easier to code and troubleshoot, but you have extra overhead from the >> network transport and the file system layer to contend with. IMHO the >> easiest to code, troubleshoot, and document architecture is the way to go >> as long as all requirements can be met. >> >> The UDP client/server solution can be pretty fast -- I've controlled a >> 6-DOF motion base (Stewart Platform) with a 100Hz servo loop where one >> system calculated the desired motion profile from user input while another >> did the matrix calculations to set the actuator link lengths for the >> desired motion, and a third processed the visual scene presented to the >> user, all talking via UDP on an isolated network (only these three systems >> were connected). >> >> >> >> On Friday, March 11, 2016 at 11:22:18 AM UTC-6, Dhanesh Kothari wrote: >>> >>> Thank you @Wally and @William. >>> My goal is to send continuous data stream from my system and my >>> beaglebone should be receiving data serially and than process the data as >>> per my algorithm without any data loss. >>> We are using sshfs to mount a directory on beaglebone to our system. >>> >> -- >> For more options, visit http://beagleboard.org/discuss >> --- >> You received this message because you are subscribed to the Google Groups >> "BeagleBoard" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
