-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256
On 2014-01-14 04:41, Ryan Smith wrote:
packet loss is an issue and most people use UDP since it will be faster. Then if you're running into packet loss, for whatever reason, try switching to TCP.
UDP will be faster, as it has less overhead:
somebody listening on the far side)
way to signal back to the sender, that some data was missing - so there is no need for a complicated error correction stack
another cool thing about UDP is, that it is pretty stable in un-reliable situations (that is: if you can live with lossing some packets alltogether): if one side suddenly dies, the other side will not be affected. with TCP/IP this often means hangs of the remote side.
the issue of UDP being an unreliable protocol, is often found to be none, as it is used mostly in small well-behaving networks (LAN), were the chances of congestion are small, compared to the wild internet (though even in the wild internet you find crucial services that build on top of UDP - the most important is probably DNS).
however, i think the reason why OSC is used mostly with UDP is slightly different: the first OSC implementations only used UDP. furthermore, iirc the original OSC draft only mentioned UDP as a transport protocol (though it also claimed to be "transport portocol independent").
since OSC is a packet-based protocol (data is sent in atomic chunks), and UDP is one as well, they match quite well. TCP/IP is a stream-based protocol (data is sent serially; all chunk information is lost), which means, that you have to add some packetizing mechanism. the OSC specs that first mention TCP/IP (OSC-1.0) also mentioned such a packetizing mechanism (prefix each chunk with it's length), but unfortunately they chose a very bad packetizing algorithm (unrecoverable when you have drop-outs or otherwise miss parts of the stream). this was only fixed later (OSC-1.1, in 2009!), when serial procotols were explicitely requested to use SLIP as a packetizer.
to cut a long story short: in the beginnings, most OSC implementations *only* supported UDP. that's why OSC is still most often used on top of UDP.
fgmasdr IOhannes