Three numbers people constantly confuse
Fast means two unrelated things, and mixing them up leads to buying the wrong fix. Keep these three separate.
- Bandwidth is capacity: how many bits per second a link can carry when it
is busy. Measured in bits per second, so 100 Mbps means 100,000,000 bits each
second. Notice bits, not bytes. Divide by 8 to get bytes, so 100 Mbps is
12.5 MB per second at best.
- Latency is delay: how long one bit takes to get from one end to the other.
Measured in milliseconds. Usually quoted as RTT (round trip time), the
there and back number that ping prints.
- Throughput is what you actually got: bits per second delivered to the
application over some real interval, after every loss, retransmission, and
slow hop.
Bandwidth is the number on the bill. Throughput is the number you feel. Latency is the one nobody can buy their way out of, because it is limited by distance and the speed of light.
Where latency comes from
Total delay at each hop is the sum of four components. Only the first is fixed by physics.
| Component | What it is | Typical size |
|---|---|---|
| Propagation | distance ÷ signal speed in the medium | 5 µs per km of fiber |
| Transmission | packet bits ÷ link bandwidth | 12 µs for 1500 B at 1 Gbps |
| Queueing | waiting behind other packets in a buffer | 0 to hundreds of ms |
| Processing | header lookup and checks in the device | under 100 µs |
Light in fiber travels at roughly 200,000 km per second, about two thirds of its speed in vacuum. New York to London is about 5,600 km, so one way propagation is 5,600 ÷ 200,000 = 0.028 seconds, that is 28 ms. A round trip is 56 ms before a single router does any work. No upgrade removes that. It is the distance.
Queueing is the component that explodes under load. When a link is nearly full, packets pile up in the router's buffer and wait. That is why a saturated upload can make an unrelated video call stutter, and why the fix is often smaller buffers or traffic shaping rather than more bandwidth.
Throughput is set by the bottleneck
A path is a chain of links. Throughput on the whole path can never beat the slowest link in the chain, called the bottleneck.
laptop --1 Gbps--> router --40 Mbps--> ISP --10 Gbps--> server best possible end to end throughput: 40 Mbps
Upgrading the laptop's cable to 10 Gbps changes nothing, because the 40 Mbps hop still decides. Find the bottleneck before spending money.
There is a second, subtler limiter. To keep a long path full, a sender must have enough unacknowledged data in flight to cover one round trip. That amount is the bandwidth delay product:
BDP = bandwidth × RTT
= 100 Mbps × 0.080 s
= 8,000,000 bits
= 1,000,000 bytes (about 1 MB in flight)If the sender is only allowed 64 KB in flight, it sends 64 KB, then stops and waits 80 ms for an acknowledgment. Effective throughput becomes 65,536 bytes ÷ 0.080 s = 819,200 bytes per second, about 6.5 Mbps on a 100 Mbps link. The link is not the problem, the window is. This is exactly the window that Unit 7 tunes.
Measuring it yourself
Two tools cover most of the ground. Run these in your own terminal on your own network to see your numbers.
ping -c 4 1.1.1.1
64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=13.9 ms 64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=12.6 ms 64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=71.2 ms 64 bytes from 1.1.1.1: icmp_seq=4 ttl=57 time=12.8 ms --- 1.1.1.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss rtt min/avg/max/mdev = 12.6/27.6/71.2/25.1 ms
Read three things off that output. The min is close to pure propagation and processing, the floor for this path. The max of 71.2 ms is queueing, some buffer was full for a moment. The gap between min and max, reported as mdev, is called jitter, and it is what ruins voice calls even when the average looks fine.
Loss matters more than either number. At 1 percent loss a TCP transfer can lose most of its speed, because every loss makes the sender back off. When a link looks slow, check loss before checking bandwidth.