OK, it has been said that I would chime in at some point, and so here it is.

I use UDP for several networking configurations, now and in the past.
The computers in one configuration were located in Las Vegas, New York, London, and Vancouver BC.
Another configuration is mostly West Coast USA.

I have seen virtually no packet loss or corruption using Rev stacks and apps that I have written over the last 4 years. The apps run cross platform, on the same and different networks. I am always sending data files that have to be accurate.

The reason for this reliability... I crafted ACK loops, resend logic, socket management, plus multi-part data packet routines. This means that each packet is acknowledged and resent until success, then the next packet is sent. This way all packets arrive in the same sequence as the originating data source. Using UDP is so fast that I rarely detect transmission failures ( I write log files ) and that is usually do to ISP or internet down times.

UDP is so fast that using the ACK loops is still many times faster than TCP.

I also have designed code loops that recover from any socket errors that would stop operation, thus avoiding manually requesting that the operating system reset sockets.

Another essential routine that is called at the end of all socket operations is "killOpenSockets" to reduce the number of open sockets to less than 20. The reason this is important is that sockets are controlled by the operating system, such as Win XP. There are lots of high-numbered sockets (eg. 34221, 56449) that are opened simply by using UDP or TCP. If more than 50 are left open the operating system does sockets more and more slowly, making it almost impossible to keep repeat loops from becoming infinite.

One last bit of caution needs to be taken. You need to measure the limitations of the networking equipment and computers. Routing traffic means that you need to measure the maximum packet size that will flow through the network, then subtract about 20% for reliability insurance. Now you send packets at or below that maximum, using multi- part packet sizing if necessary. I have found that 8K-20% (yes, very small) works for me.

Vonage and Skype don't need to resend packets except for the voice and audio, but do for the user data, etc.

Hope this helps someone.

Jim Ault
Las Vegas
_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to