Even smart people
have trouble grasping the implications of latency on throughput. Part
of the problem is the misleading use of the word "faster."
Would you say a Boeing 747 is three times faster than a Boeing 737?
Of course not. They both cruise at around 500 miles per hour. The difference
is that the 747 carries 500 passengers where as the 737 only carries
150. The Boeing 747 is three times-bigger-than the Boeing 737, not faster.
If you were in a
hurry to get to London, you'd take the Concorde, which cruises around
1,350 miles per hour. It seats only 100 passengers though, so it's the
smallest of the three. Size and speed are not the same thing.
On the other hand,
if you had to transport 1,500 people and you only had one airplane to
do it, the 747 could do it in three trips while the 737 would take ten.
So, you might say the Boeing 747 can transport large numbers of people
three times faster than a Boeing 737, but you would never say that a
Boeing 747 "is" three times faster than a Boeing 737.
That's one problem
with communications devices today. Manufacturers say "speed"
when they mean "capacity". The other problem is that as far
as end-users are concerned, the main thing they want to do is transfer
large files more quickly. It may seem to make sense that a high-capacity,
slow link would be the best thing for the job. What end users don't
see is that in order to manage that file transfer, their computers are
sending dozens of little control messages back and forth. Computer communication
differs from television or radio broadcasting in the interactivity of
the communication, and interactivity depends on back-and-forth messages.
The phrase "high-capacity,
slow link" above probably looks odd to you. It looks odd even to
me. We've been used to wrong thinking for so long that correct thinking
looks odd now. How can a high- capacity link be a slow link? High-capacity
means fast, right? It's odd how that's not true in other areas. If someone
talks about a high-capacity oil tanker, do you immediately assume it's
a fast ship? If someone talks about a large-capacity truck, do you immediately
assume it's faster than a small sports car?
We must start making
this distinction again in communications. When someone tells us that
a modem has a speed of 28.8 Kbps we have to remember that 28.8 Kbps
is its capacity, not its speed. Speed is a measure of distance divided
by time, and "bits" is not a measure of distance.
But there's more
to perceived throughput than issues of speed and capacity, namely latency.
Many people know that when you buy a hard disk you should check its
seek time. The maximum transfer rate is something you might also be
concerned with, but seek time is more important. Why does no one think
to ask about a modem's seek time? Latency is the same thing as seek
time: the minimum time between asking for a piece of data and getting
it, just like the seek time of a disk, and it's just as important.
Once you have bad
latency you're stuck with it. If you want to transfer a large file over
your modem it might take several minutes. The less data you send, the
less time it takes, but there's a limit. No matter how small the amount
of data, for any particular network device there's always a minimum
time that you can never beat. That's called the latency of the device.
For a typical Ethernet connection the latency is usually about 0.3 ms
(milliseconds, or thousandths of a second). For a typical modem link,
ping and traceroute tests show the latency is typically about 100 ms,
about 300 times worse than Ethernet.
If you wanted to
send ten characters (at eight bits per character) over your 33 Kbps
modem link you might think it would take:
80 bits / 33000
bits per second = 2.4 ms
doesn't. It takes 102.4 ms because of the 100 ms latency introduced
by the modems at each end of the link.
If you want to send
a large amount of data, say 100K, then that takes 25 seconds, and the
100 ms latency isn't very noticeable, but for smaller amounts of data,
say 100 bytes, the latency overwhelms the transmission time.
Why would you care
about this? Why do small pieces of data matter? For most end-users it's
the time it takes to transfer big files that annoys them, not small
files, so they don't even think about latency when buying products.
In fact, if you look at the boxes modems come in, they proudly proclaim
"28.8 Kbps" and "33.6 Kbps", but they don't mention
latency at all.
What most people
don't realize is that computers must exchange hundreds of little control
messages in the process of transferring big files, so the performance
of small data packets "directly" affects the performance of
everything else on the network.
Now, imagine you
live in a world where the only network connection you can get to your
house is a modem running over a telephone line. Your modem has a latency
of 100 ms, but you're doing something that needs lower latency. Maybe
you're trying to do audio over the network. 100 ms may not sound like
much, but it's enough to cause a noticeable delay and echo in voice
communications, which makes conversation difficult. Maybe you're playing
an interactive game over the network. The game only sends tiny amounts
of data, but that 100 ms delay makes the interactivity of the game decidedly
What can you do
about this? Absolutely "nothing". You could compress the data,
but that won't help: the data was already small, and that 100 ms latency
is still there. You could install 80 phone lines in parallel and simultaneously
send a single bit over each phone line, but that 100 ms latency is still
In other words,
once you have a device with bad latency there's nothing you can do except
replace the device with one that has good latency.