Delay, Latency, RTT & Jitter
- A packet's delay at one hop is the sum of four parts: processing, queuing, transmission (
L / R, size over link rate) and propagation (d / s, distance over signal speed). Two scale with bytes, one with distance, one with load. - Latency is how long one thing takes; bandwidth is how much fits per second. More bandwidth does not shorten the trip, and a far destination cannot be bought closer.
- RTT is the there-and-back time.
pingreports it, not one-way delay. Most request protocols pay it several times before the first byte of useful data. - Queuing is the only part that explodes: with traffic intensity
rho = L a / R, delay stays small forrhonear 0, grows without bound asrhoapproaches 1, and above 1 packets are dropped. - Jitter is the variation in delay. It, not the average, is what breaks voice, video and games, and the tail (p99) is what breaks request-response systems.
Loss, throughput and the bandwidth-delay product have their own page ("Loss, throughput and BDP"). This page stays with time: where it goes and how to measure it. The reference ladder of numbers lives in latency and capacity numbers; this page derives the model behind them and does not repeat those tables.
Mental model
A convoy of 10 cars reaches a toll booth, then drives 100 km to the next booth. The booth lets one car through every few seconds, so the time for the whole convoy to get past the booth depends on how many cars there are and how fast the booth works: that is transmission delay. After the last car clears, the drive to the next booth depends only on the distance and the speed limit: that is propagation delay. Cars waiting in line behind other drivers are queuing delay, and the booth attendant glancing at each ticket is processing delay. A faster booth shortens the first and does nothing for the second; a shorter road does the reverse.
Where it breaks: bits are not cars. A signal moves at a fixed fraction of the speed of light that no engine upgrade changes (about two thirds of it in glass), and a link's bits are clocked out back to back, so the "convoy" is one continuous stream, not separate vehicles.
One request's latency is a sum of stages: CPU time + queue wait + serialisation + wire time. It is the same decomposition you use on a service call. Bandwidth is the thread-pool size or the line rate, latency is the per-call time, and they are different knobs: adding workers raises capacity, not the time one call takes.
Where it breaks: a service call has one queue you can inspect. A packet crosses many queues on many machines you do not own, and each hop pays serialisation again, so the path total is not a single measurable number but a distribution.
How it works
The four delays at one node
At every node on its path, a packet suffers nodal delay:
d_nodal = d_proc + d_queue + d_trans + d_prop
Each term has a different cause, so each has a different fix.
| Component | Formula | Depends on | Typical magnitude | Who controls it |
|---|---|---|---|---|
| Processing | fixed per packet | header lookup, filtering, checksums | microseconds in hardware; more in software routers, firewalls, TLS terminators | the device and its configuration |
| Queuing | (L / R) x rho / (1 - rho) (M/M/1 model, below) | how busy the output link is | zero when idle; milliseconds or more when loaded | traffic engineering, buffer sizing, AQM |
| Transmission | L / R | packet size and link rate | 12 us for 1500 B at 1 Gbit/s; 1.2 ms at 10 Mbit/s | the link you buy |
| Propagation | d / s | distance and signal speed | 5 us per km in fibre, one way | geography (and the route taken) |
The router must receive the whole packet before it can start sending it on (store and forward, covered on Packet switching), so transmission delay is paid once per link, not once per path.
Worked example: one hop
A 1500-byte (12,000-bit) packet crosses a router. The outgoing link runs at 100 Mbit/s over 800 km of fibre, the router takes 0.1 ms to look up the route, and the queue it joins costs 2 ms right now.
- Processing: 0.1 ms (given).
- Queuing: 2 ms (given, the component that moves minute to minute).
- Transmission: 12,000 bit / 100,000,000 bit/s = 0.00012 s = 0.12 ms.
- Propagation: 800,000 m / 200,000,000 m/s = 0.004 s = 4 ms. The speed
2e8 m/sis roughly two thirds of the speed of light in vacuum, which is what light does in glass (derived in latency and capacity numbers). - Total: 0.1 + 2 + 0.12 + 4 = 6.22 ms.
Here propagation (4 ms) dwarfs transmission (0.12 ms) because the link is fast and the fibre is long. On a 1 Mbit/s link over 1 km the same packet flips: transmission is 12 ms and propagation is 5 us. Step the sliders to move between the two regimes:
The Path view starts at exactly this example (1500 B, 100 Mbit/s, 800 km, one hop, 0.1 ms processing, 2 ms queuing). Add hops to watch store-and-forward pay transmission again on every link, and switch to the Queue view to see rho push the buffer toward overflow. The bottleneck rate belongs to the Loss, throughput and BDP page.
Queuing and traffic intensity
Queuing delay is the odd one: the other three are fixed by the packet, the link and the map. Let packets arrive at an average of a packets per second, each L bits, onto a link of rate R bit/s. The traffic intensity is
rho = L x a / R
the fraction of the link's capacity that is demanded. Its behaviour is the single most important intuition on this page:
rhonear 0: packets rarely meet another, so queuing delay is close to 0.rhoapproaching 1: a short burst arrives faster than the link drains it and the queue builds. Delay grows without bound.rhoabove 1: work arrives faster than it can be served on average. A finite buffer fills and packets are dropped. The loss side is the subject of the Loss, throughput and BDP page.
For random (Poisson) arrivals and one server (the M/M/1 model, see the queue; Kleinrock's textbook treatment is the standard source), the mean wait in the queue before service starts is
d_queue = (L / R) x rho / (1 - rho)
With L / R = 0.12 ms (the 1500 B packet on 100 Mbit/s):
| rho | rho / (1 - rho) | Mean queue wait | Whole packet at this hop (add 0.12 ms transmission) |
|---|---|---|---|
| 0.5 | 1 | 0.12 ms | 0.24 ms |
| 0.8 | 4 | 0.48 ms | 0.60 ms |
| 0.9 | 9 | 1.08 ms | 1.20 ms |
| 0.95 | 19 | 2.28 ms | 2.40 ms |
| 0.99 | 99 | 11.88 ms | 12.00 ms |
Going from 90% to 99% utilization adds 9 more percentage points of load and multiplies the wait by 11. That is the hockey stick:
RTT
Round-trip time (RTT) is the time from sending a packet to receiving its reply: forward delay plus return delay plus the far end's turnaround. The IETF defines the measurement in RFC 2681, the one-way counterpart in RFC 7679, and both are about the same four components.
The two directions need not match: routes can differ, and the reverse path crosses different queues. Dividing a measured RTT by two gives one-way delay only if the path is symmetric.
End to end across N hops
A path with N links has N - 1 routers between the two hosts. Each link repeats transmission and propagation, and each router repeats processing and queuing, so the end-to-end delay is, in the textbook simplification that treats each hop alike (Kurose and Ross use the same form, ignoring queuing):
d_end_to_end = N x (d_proc + d_trans + d_prop) (+ queuing at each router)
With the five identical hops of the worked example (all four parts, 6.22 ms each): 5 x 6.22 = 31.1 ms one way. Real hops differ, so you add each hop's own numbers rather than multiplying.
Units
Bandwidth and latency mix prefixes and bit/byte conventions, which causes most arithmetic slips.
| Quantity | Unit and meaning | Conversion to keep handy |
|---|---|---|
| Rate | bit/s, written Mbps or Mbit/s (network gear) | 8 bits = 1 byte; 100 Mbit/s = 12.5 MB/s |
| File size | bytes (B, KB, MB), usually decimal on the wire | 1 MB = 8,000,000 bit |
| Time | ms = 10-3 s, us = 10-6 s, ns = 10-9 s | 1 ms = 1,000 us |
| Distance in fibre | 5 us per km one way | 1 ms of fibre is about 200 km one way |
| Serialisation | L / R | 1500 B at 1 Gbit/s = 12 us; at 10 Mbit/s = 1.2 ms |
A capital B is bytes and a lowercase b is bits: MB/s is 8 times Mbit/s. Rates use powers of 1000, not 1024, so 1 Gbit/s is exactly 109 bit/s.
Deep dive
Latency is not bandwidth
Bandwidth (capacity) is the most a link can carry per second. Latency is how long one packet takes. Throughput is what you actually achieve, and it is the topic of the Loss, throughput and BDP page. They are independent axes: a fat pipe across an ocean has high bandwidth and high latency, a modem to the next room has the opposite.
A water-pipe version: bandwidth is the pipe's width, latency is its length, and widening the pipe does not shorten it. A page made of many small, sequential requests is bound by round trips, not by link rate. A cold HTTPS fetch of a 100 KB object takes about 5 RTTs over TCP and TLS 1.3 whether the link is 100 Mbit/s or 10 Gbit/s (TCP performance). What helps is fewer round trips (connection reuse, HTTP/2 and HTTP/3) and a nearer server (a CDN), not a bigger plan.
Jitter
Jitter is variation in delay. The IETF formalises it as IP packet delay variation (IPDV), the difference in one-way delay between two selected packets of a stream (RFC 3393). Propagation is fixed for a given path, so jitter comes almost entirely from queuing: packet 7 met an empty queue, packet 8 met a burst.
Real-time media, which sends a packet every fixed interval, wants them to arrive at the same spacing. The receiver hides jitter with a playout buffer: it holds each packet for a fixed extra time, then plays them at the original cadence. A packet that arrives later than its slot is as good as lost. The trade is direct: a bigger buffer absorbs more jitter and adds the same amount of delay to a conversation. ITU-T G.114 is the standard that sets one-way delay targets for voice (its commonly cited guidance is that one-way delays up to about 150 ms are acceptable for most applications); every millisecond of playout buffer comes out of that budget.
RTP receivers estimate jitter continuously with an exponentially smoothed mean of how far each packet's spacing differs from the sender's spacing: J = J + (|D| - J) / 16 (RFC 3550 section 6.4.1), where D is the difference in relative transit time of two consecutive packets. Game netcode uses the same idea with a smaller buffer and prediction. ping prints a spread of its own: its summary line shows stddev (macOS) or mdev (Linux), the spread of the RTT samples, which is a rough jitter signal.
Speed of signals and the geometric floor
Signals in glass move at about 2e8 m/s (the speed of light divided by the refractive index of about 1.5; the derivation is in latency and capacity numbers). Signals in air (radio, microwave, free-space optics) move at about 3e8 m/s, so over the same length radio is about 1.5 times faster than fibre. That is why trading firms used microwave towers between Chicago and New York: a straighter path and a faster medium.
Fibre costs 5 us per km one way, so 1 ms of fibre is about 200 km one way, and each 100 km of path costs 1 ms of round trip. A floor is the best any path of that length can do:
| Path | Distance used | Floor, derived | Notes |
|---|---|---|---|
| New York to London in fibre | 5,570 km great circle | 27.85 ms one way, 55.7 ms round trip | 5,570 km x 5 us/km. Azure measures 78 ms P50 between nearby regions (East US and UK South), about 1.3 times the floor, because cables are longer than great circles and every hop adds delay |
| Geostationary satellite request and reply | about 36,000 km altitude, 4 legs | 4 x 36,000 km / 3e8 m/s = 480 ms | Radio speed. The request goes up to the satellite and down to the ground station, and the reply repeats it. Measured RTTs are typically reported as 550 to 700 ms because processing, queuing and ground paths add to the floor |
| Low-Earth-orbit satellite, assumed 550 km altitude | 4 legs of at least 550 km | 4 x 550 km / 3e8 m/s = 7.3 ms | A minimum with the satellite straight overhead; real paths slant and add ground links. Starlink publishes 25 to 60 ms typical latency for the service |
For the wider ladder (same rack to cross-continent, with measured values) see latency and capacity numbers. The satellite gap is a distance gap: orbit height changes the floor by a factor of about 65 (36,000 km against 550 km), and no amount of bandwidth recovers it. A "25 Mbit/s" geostationary plan still has a floor near half a second.
Tail latency
A distribution has a median and a tail. p99 is the delay that 99% of requests beat. When one user request fans out to many servers and waits for all of them, the slow calls dominate (Dean and Barroso, The Tail at Scale): a 1% slow rate per server across 100 servers makes 1 - 0.99100 = 63.4% of requests slow. Averages hide this, which is why latency budgets name a percentile. Queuing explains much of the tail: the hockey stick means that a system running at 95% utilization has a long, heavy tail even though most requests are fast. That is the argument for load shedding: refuse some work before rho reaches the steep part of the curve.
Latency and page load
A page load is a chain of dependent round trips: DNS, TCP, TLS, the HTML, then the subresources it names. Total time is roughly the number of sequential round trips times the RTT, plus transfer time. Cutting RTT (a nearer edge) and cutting round trips (reuse, HTTP/3, preconnect) both pay; raising bandwidth pays only when the transfer term dominates. TCP performance owns the slow-start side of this.
Textbook vs real world
| The textbook says | Production does | Why |
|---|---|---|
| Queues are M/M/1: Poisson arrivals, exponential service | Traffic is bursty over many time scales, so queues build earlier and drain slower than the formula predicts | the formula is a model that gives the shape (a knee near 1), not an exact figure; measure queue depth |
Propagation is distance over 2e8 m/s | Routes are longer than great circles, so measured RTT is about 1.3 to 1.8 times the floor | cables follow coasts, seabeds and rights of way, and BGP picks policy, not shortest, paths |
| Processing delay is negligible | Software routers, firewalls, NAT and TLS terminators each add their own time and queue | per-packet work that is microseconds in an ASIC is much more in software |
| Delay is one number per path | Delay is a distribution with a tail, and it differs by direction | queues are shared, and forward and return paths can differ |
| A ping is the application's latency | ICMP can be queued or rate-limited differently from your traffic | routers may deprioritise ICMP, and your application also pays handshakes and server time |
In production
- Google documents that fan-out turns rare slow calls into the common case, which is why latency targets are set at percentiles and calls are hedged (The Tail at Scale).
- Cloudflare states on its network page that it serves from a presence close to most Internet users, which is a claim about RTT to the edge and reflects why CDNs sell latency (Cloudflare network). Check that page for the current figure rather than a remembered one.
- High-frequency traders built microwave links between Chicago and New York data centres to beat fibre's one-way time, as analysed in Laughlin, Aguirre and Grundfest.
- Satellite operators publish typical latency for their service; Starlink quotes 25 to 60 ms (Starlink specifications), against the geostationary floor derived above.
- The widely repeated claims that "100 ms of delay costs Amazon 1% of sales" or "500 ms costs Google 20% of traffic" come from conference slides and anecdote, not from a primary study that this page could cite. Treat them as folklore and measure your own conversion against latency instead.
History and evolution
- 1961 Leonard Kleinrock's work at MIT applies queueing theory to message-switched networks, the basis for reasoning about queuing delay in packet networks, and John Little proves the law that bears his name (items in a system equal arrival rate times time in system).
- 1969 ARPANET goes live as a packet-switched network where queuing, transmission and propagation delay all first become measurable in practice.
- 2004 David Patterson argues in "Latency lags bandwidth" (CACM, October 2004) that over several decades bandwidth grew far faster than latency fell, which is why round-trip counts keep mattering.
- 2010 to 2011 Jim Gettys names bufferbloat: oversized buffers keep queues full and turn high utilization into seconds of delay (bufferbloat.net). AQM such as CoDel follows.
- 2019 onwards LEO constellations such as Starlink deliver tens of milliseconds instead of hundreds from geostationary satellites, and edge computing moves work closer to users.
- Now Latency budgets are set at p99, CDNs and QUIC cut round trips, and low-latency queue management is deployed in places.
- Next L4S (RFC 9330) and deterministic networking aim at bounded queuing delay for applications that cannot tolerate jitter.
Hands-on
Measure RTT and jitter with ping. Real output from a macOS laptop on a home network (abridged; yours will differ):
The time= on each line is one RTT, not one-way delay. The summary gives the floor (min, close to propagation plus transmission with no queuing), the average, and the spread. A max much larger than the min, or a large stddev, means queuing and jitter. On Linux the last field is named mdev and the line begins rtt min/avg/max/mdev.
See each hop with mtr (not installed by default; brew install mtr on macOS, and it usually needs sudo there):
Read the Avg and Wrst columns per hop; a jump that persists to the end is real, while a slow middle hop that vanishes downstream is usually ICMP rate limiting. Ping and mtr covers the tools in full.
Split a request's time by phase with curl's cumulative timers (curl write-out). Real output from the same laptop:
Subtract neighbouring fields. time_connect - time_namelookup = 0.059 s is the TCP handshake, about one RTT to that server. time_appconnect - time_connect = 0.068 s is the TLS handshake, about one more. time_starttransfer - time_appconnect = 0.064 s is the request round trip plus server time. Almost all of the 206 ms is round trips; the download itself (time_total - time_starttransfer) is 0.1 ms. More bandwidth would have changed nothing here.
Gotchas
Interview questions
Show answer
Latency is how long one packet or request takes, in time. Bandwidth is the most a link can carry per second, in bit/s. Throughput is the rate you actually achieve, which is at most the bandwidth. A pipe is a good picture: bandwidth is its width, latency is its length, and throughput is the flow you get.
Follow-ups:
- Give an analogy. A motorway: lanes are bandwidth, the length of the road is latency, and cars per hour actually passing is throughput.
Show answer
Processing (reading the header and choosing the output link), queuing (waiting behind other packets), transmission (L / R, time to put all the bits on the link), and propagation (d / s, time for the signal to travel the link). They sum to nodal delay at each hop.
Follow-ups:
- Which dominates on a LAN versus transatlantic? On a LAN, transmission and queuing dominate, since propagation is nanoseconds to microseconds. Transatlantic, propagation dominates: about 5 us per km in fibre.
Show answer
A page load is a chain of dependent round trips: DNS, TCP, TLS, the HTML, then the resources it names. Time is roughly the number of round trips times the RTT, and bandwidth only affects the transfer term. If the page is made of many small objects the transfer term is small, so the link rate hardly matters; the RTT does.
Follow-ups:
- What does help? Fewer round trips (connection reuse, HTTP/3), a nearer server such as a CDN, and parallel fetching.
Show answer
Jitter is variation in packet delay, mostly from queuing: one packet meets an empty queue and the next meets a burst. Real-time traffic cares, because voice, video and games need packets spaced evenly, and a packet that arrives after its playout slot is useless. The standard definition is IP packet delay variation, RFC 3393.
Follow-ups:
- How does a playout buffer trade latency for smoothness? The receiver delays playback by a fixed amount so late packets still arrive in time. A bigger buffer hides more jitter and adds exactly that much delay to the conversation.
Show answer
The great-circle distance is about 5,570 km. Light in fibre travels about 200,000 km/s, which is 5 us per km, so one way is 5,570 x 5 us = 27.85 ms and the round trip is about 56 ms. Nothing can beat that in fibre.
Follow-ups:
- Why is the real number higher? Cables are longer than great circles, routes follow policy, and every hop adds processing, transmission and queuing. Azure measures 78 ms P50 between regions near these cities, about 1.3 times the floor.
Show answer
With traffic intensity rho = L a / R, queuing delay is near zero for small rho, then rises faster and faster. For an M/M/1 queue the mean wait is (L / R) x rho / (1 - rho), so it is 1 packet-time at 50%, 9 at 90% and 99 at 99%. Above 1 the queue grows without bound and a finite buffer drops packets.
Follow-ups:
- How does this relate to p99 and load shedding? The tail gets heavy well before the average does, so p99 is the first thing to degrade as load rises. Shedding load before
rhoreaches the knee (see rate limiting and load shedding) keeps queues on the flat part of the curve.
Show answer
Geostationary satellites orbit at about 36,000 km. A request and its reply each go up and down, four legs at radio speed of about 3e8 m/s, which puts the floor at about half a second before any processing or queuing, and real figures are higher. Low-Earth-orbit satellites are roughly 65 times closer (an assumed 550 km), so the same four-leg floor is under 10 ms and real service latency is tens of milliseconds.
Follow-ups:
- Does more bandwidth help a geostationary link? No. The delay is distance divided by speed, independent of rate.
- What is the cost of LEO? Satellites move, so the path changes and handoffs add variation, which means more jitter.
Fun facts
- Light in fibre loses about a third of its vacuum speed; hollow-core fibre guides light through air to close that gap, which is one reason it is attractive for latency-sensitive links.
- 1 ms of fibre is about 200 km one way, so a 100 km path is a 1 ms round trip before anything else is added.
- Radio in air beats light in glass by a factor of about 1.5 over the same length, which is why trading firms prefer microwave.
- At 90% utilization an M/M/1 queue waits 9 packet-times; at 99% it waits 99, an 11-fold jump for 9 more points of load.
Cheat sheet
- L / R - transmission delay; 1500 B at 1 Gbit/s = 12 us
- d / s - propagation delay; 5 us per km in fibre, so 1 ms is about 200 km one way
- rho = L a / R - traffic intensity; delay explodes as it approaches 1
- rho / (1 - rho) - queue wait in packet-times for M/M/1: 1, 4, 9, 19, 99 at 0.5, 0.8, 0.9, 0.95, 0.99
- N x (proc + trans + prop) - end-to-end delay over N links, N - 1 routers
- 55.7 ms - fibre RTT floor, New York to London (5,570 km)