shell

Jim Ault jimaultwins at yahoo.com
Tue Jan 19 05:37:42 EST 2010


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



More information about the use-livecode mailing list