Fighting Physics: A Tough Battle
link), poor route selection, and slow links. Nonetheless,
it is impressive that the IP routing infrastructure is only
about a factor of two “slower” than the speed of light in
fiber: 88 ms versus 38 ms.
This observation of the difference between pencil
and paper and measured results leads to the definition
of the throughput of a system, which is how many bits
per second you can send after taking into account all the
real-world limitations—propagation delays, bandwidth,
latency, and hops.
IN TERPROCESS COMMUNICATION AND PRO TOCOLS
In a distributed system, processes that need to communicate do so via one or more schemes for IPC.3 Example
schemes include messages, reliable streams, and remote
procedure calls. It is easiest to think of IPC in terms
of messages, sometimes called ADUs (application data
units), as they are the building blocks on which other IPC
mechanisms, including reliable bytestreams, are built.
Messages may require multiple IP packets. The socket API
is one example of a way in which message and reliable
bytestream services can be accessed. It resembles input/
output, supporting a read/write style of interface. The
impact of the IPC software on a single message’s latency
is typically low; ping measurements of a local loopback
interface on klondike.cis.upenn.edu show times of about
FIGURE
2
Packets in Flight between a
Sender and a Reciever
sender
receiver
20 microseconds of latency. The largest cause of propagation delays in IPC is protocols.
Protocols are rules for communicating intended to
provide desired properties, such as high application
throughput, reliability, or ordering. Reliable message
delivery is a common application requirement and usually requires confirmation from the receiver to the sender,
thus implying a round-trip. Communications requiring
more data than a single packet must use multiple packets,
implying multiple round-trip times. To see the impact of
the physics on a naïve protocol, imagine an IPC system
that uses 10-Kbit packets and must move 100 Kbits (10
packets’ worth of data) across the U.S., which as we have
seen (for a single transcontinental piece of fiber) should
require about 19 ms. If a new packet is sent only when a
previous one has been acknowledged, one packet will be
sent every 38 ms, and the communication will require
380 ms, or almost one half second, independent of the
bandwidth of the network. Yet, it’s clear that with a high-throughput network, one could have sent all 10 of the
packets in a row and waited for a confirmation that all 10
arrived, and this could be done in 38 ms.
This example along with figure 2 illustrates what
is often called the bandwidth-delay product, which is a
measure of the capacity of a path in bits between a source
and a destination. Figure 2 shows that there may be
usable capacity that is not being used, illustrated here
by the spaces between packets. If the network were fully
utilized, then all of the capacity would be fully occupied
by packets in flight. When the network is fully occupied
with packets, a bandwidth-delay product of bits will be
in flight between a source and destination. The challenge
is estimating the available capacity at any given time, as
network dynamics could make this estimate highly variable. If we overestimate the capacity, too many packets
will be pushed into the network, resulting in congestion.
If we underestimate the capacity, too few packets will be
in flight and performance will suffer.
Optimizing protocols to the available bandwidth-delay
product has been a long-standing problem of interest to