Skip to main content

Delay, Latency, RTT & Jitter

TL;DR
  • 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. ping reports 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 for rho near 0, grows without bound as rho approaches 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​

ANALOGYEveryday

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.

ANALOGYFor engineers

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.

ComponentFormulaDepends onTypical magnitudeWho controls it
Processingfixed per packetheader lookup, filtering, checksumsmicroseconds in hardware; more in software routers, firewalls, TLS terminatorsthe device and its configuration
Queuing(L / R) x rho / (1 - rho) (M/M/1 model, below)how busy the output link iszero when idle; milliseconds or more when loadedtraffic engineering, buffer sizing, AQM
TransmissionL / Rpacket size and link rate12 us for 1500 B at 1 Gbit/s; 1.2 ms at 10 Mbit/sthe link you buy
Propagationd / sdistance and signal speed5 us per km in fibre, one waygeography (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.

total nodal delay of this hop = 6.22 msProcessingQueuingTransmissionPropagation0.1 ms2 msL / R = 0.12 msd / s = 4 ms00.1 ms2.1 ms2.22 ms6.22 msdashed = depends on load, the other three are set by the hardware and the geography
The four delays follow each other in order for one packet at one hop, using the worked example below. Widths are fixed so labels fit, not drawn to scale (0.1 ms and 0.12 ms would be slivers). The dashed box marks the component that changes with load.
booth Abooth Bthe roadtransmission: the convoy clears the boothsize / ratepropagation: the drive to the next boothdistance / speed
Transmission is the time for the whole convoy to pass the first booth; propagation is the drive to the next one. Doubling the number of cars doubles the first and leaves the second untouched.

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/s is 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:

queued (not yet sent)in transmission (clocked out now)in flight (propagating)arrived at next node
Packet and path
One-way 6.22 ms, round trip 12.44 ms (t = 0.000 ms)
Processing 0.100 msQueuing 2.00 msTransmission 0.120 msPropagation 4.00 ms
Each link clocks out 12000 bits at 100 Mbps, then the bits cross 800 km at 2 x 10^8 m/s. A router starts forwarding only after it has stored the whole packet.
step 0 / 60

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:

  • rho near 0: packets rarely meet another, so queuing delay is close to 0.
  • rho approaching 1: a short burst arrives faster than the link drains it and the queue builds. Delay grows without bound.
  • rho above 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):

rhorho / (1 - rho)Mean queue waitWhole packet at this hop (add 0.12 ms transmission)
0.510.12 ms0.24 ms
0.840.48 ms0.60 ms
0.991.08 ms1.20 ms
0.95192.28 ms2.40 ms
0.999911.88 ms12.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:

0510151900.50.81utilization rho = L a / Rwait in units of L / Rrho 0.95: 19 x L / Rabove 1:queue grows,packets drop
Queue wait in units of L / R, from the M/M/1 formula rho / (1 - rho). Points are computed at rho 0.1 to 0.95 and joined by straight segments, so the last bend is coarse. The curve has no value at rho = 1; right of it the model breaks and a finite buffer overflows.

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.

Host AR1R2R3R4Host Blink 1link 2link 3link 4link 56.22 ms6.22 ms6.22 ms6.22 ms6.22 msend to end = 5 x 6.22 ms = 31.1 msN = 5 links, N - 1 = 4 routers (dashed)
Five links and four routers between two hosts, each hop costing the 6.22 ms of the worked example. Transmission is paid again on every link because each router stores the whole packet before forwarding.

Units​

Bandwidth and latency mix prefixes and bit/byte conventions, which causes most arithmetic slips.

QuantityUnit and meaningConversion to keep handy
Ratebit/s, written Mbps or Mbit/s (network gear)8 bits = 1 byte; 100 Mbit/s = 12.5 MB/s
File sizebytes (B, KB, MB), usually decimal on the wire1 MB = 8,000,000 bit
Timems = 10-3 s, us = 10-6 s, ns = 10-9 s1 ms = 1,000 us
Distance in fibre5 us per km one way1 ms of fibre is about 200 km one way
SerialisationL / R1500 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:

PathDistance usedFloor, derivedNotes
New York to London in fibre5,570 km great circle27.85 ms one way, 55.7 ms round trip5,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 replyabout 36,000 km altitude, 4 legs4 x 36,000 km / 3e8 m/s = 480 msRadio 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 altitude4 legs of at least 550 km4 x 550 km / 3e8 m/s = 7.3 msA 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 saysProduction doesWhy
Queues are M/M/1: Poisson arrivals, exponential serviceTraffic is bursty over many time scales, so queues build earlier and drain slower than the formula predictsthe 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/sRoutes are longer than great circles, so measured RTT is about 1.3 to 1.8 times the floorcables follow coasts, seabeds and rights of way, and BGP picks policy, not shortest, paths
Processing delay is negligibleSoftware routers, firewalls, NAT and TLS terminators each add their own time and queueper-packet work that is microseconds in an ASIC is much more in software
Delay is one number per pathDelay is a distribution with a tail, and it differs by directionqueues are shared, and forward and return paths can differ
A ping is the application's latencyICMP can be queued or rate-limited differently from your trafficrouters 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​

HISTORY
  • 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):

ping -c 10 8.8.8.8
--- 8.8.8.8 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 27.249/30.660/34.062/2.374 ms

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):

mtr -rwzc 20 example.com

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:

curl -w '%{time_namelookup} %{time_connect} %{time_appconnect} %{time_starttransfer} %{time_total}\n' -o /dev/null -s https://example.com/
0.014879 0.073902 0.141774 0.205569 0.205690

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​

GOTCHAS4
More bandwidth fixes latency
Transmission delay and propagation delay are the same thing
Ping time is one-way delay
ICMP ping equals application latency

Interview questions​

INTERVIEWWhat is the difference between latency, bandwidth and throughput?junior
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.
INTERVIEWWhat are the four components of packet delay?junior
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.
INTERVIEWWhy can't 1 Gbps fix a slow page?mid
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.
INTERVIEWWhat causes jitter and who cares?mid
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.
INTERVIEWBack-of-envelope: what is the RTT floor from New York to London?mid
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.
INTERVIEWExplain queuing delay as utilization approaches 100 percent.senior
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 rho reaches the knee (see rate limiting and load shedding) keeps queues on the flat part of the curve.
INTERVIEWWhy is the round-trip time on a geostationary satellite so high, and how does LEO change it?senior
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​

FACTSTrivia worth knowing
  • 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​

NUMBERSNumbers to remember
  • 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)