ABSTRACT

The Internet is used for a wide variety of distributed applications that can benefit from mobile software. Specific examples include search engines, mining of data repositories, scripting languages for web browser animations, peer-to-peer file sharing systems, financial trading software, consumer auction sites, and travel reservation systems. Unfortunately, these applications are often hindered by two phenomena that cannot be abstracted away in a distributed setting: network latency and network failure (see Ref. [29] for technical definitions and related discussion). Network latency refers to the interval of time between the departure of a message from one machine and its arrival on another machine. Two common factors of network latency are network congestion and the use of a slow network interface. Network failure, on the other hand, refers to a break in the connectivity between two machines on a network. This can occur for a variety of reasons. In some cases, network congestion can cause certain packets to be lost, resulting in a temporary disconnection between two machines. In other cases, a machine can be brought down by a direct attack from another machine and become isolated from the rest of the network. Alternatively, a machine can be physically unplugged from the network for a period of time.