PTP Time Error Budget

How much time error a sync chain accumulates, and where it comes from — including the part the protocol is structurally unable to detect.

Asymmetry is invisible from inside PTP works out a clock’s offset by measuring a round trip and assuming the two halves took equally long. When they did not, every clock downstream is wrong by exactly half the difference — steadily, with every timestamp perfectly consistent and no counter anywhere incrementing. One metre of fibre length difference is 2.45 ns. A 1100 ns network budget is gone at 449 m.

The requirement

Where the asymmetry comes from

Two strands of a fibre pair are never cut to the same length. A metre of difference is normal, ten is not unusual on a route with several joints, and none of it appears in any alarm. Bidirectional working on a single fibre removes the whole term.

The budget, spent

boundary clocks path asymmetry margin

Holdover

One part per billion is one nanosecond of drift per second, which makes this arithmetic unusually easy — 3.6 µs an hour. A ppb figure is a specification under stated conditions, and in practice it is temperature change rather than the oscillator’s own ageing that ends holdover.

Why asymmetry is different from everything else

Most timing problems announce themselves. Jitter shows up as variance. A lost reference raises an alarm. A drifting oscillator is visible in the phase record. Asymmetry does none of that, and the reason is structural rather than a gap in the implementation.

PTP measures a round trip and divides by two. That division is not an approximation it makes for convenience — it is the only information available. The protocol cannot separate "the forward path is slow" from "my clock is late", because both produce identical timestamps. There is no measurement it could add, no filter it could apply, and no better oscillator that would help.

So the error sits there as a constant offset. The clock is confidently, consistently wrong, every packet agrees with every other packet, and the only way to find it is to know the physical path.

Where it actually comes from

Two fibres of a pair are not the same length

The commonest source, and the most mundane. Fibre in a pair is cut, spliced and coiled by people, and a metre of difference between the two strands is ordinary. Each metre is 2.45 ns of time error.

The arithmetic is worth internalising because it converts a cabling question into a timing one. A 1100 ns network budget for basic TDD is entirely consumed by 449 m of accumulated difference. A 60 ns positioning budget is gone at 25 m.

The fix is not better measurement — it is single-fibre bidirectional working, where both directions traverse literally the same glass and the term vanishes.

Different wavelengths travel at different speeds

This one catches people because there is nothing wrong with the fibre. One fibre, one length, no splice imbalance — and still an error, because the forward and reverse channels are at different wavelengths and chromatic dispersion means they do not travel at the same group velocity.

Δt = D·Δλ·L, halved. At DWDM's 0.8 nm spacing over 100 km that is 0.68 ns — small, and not nothing. At CWDM's 20 nm spacing it is 17 ns over the same fibre, which is a fifth of an entire class A node budget arising from a cable with nothing wrong with it at all.

The fix is the same wavelength in both directions, or a deliberately compensated pair.

Anything asymmetric in the path

Different routes for the two directions is the extreme case and produces microseconds, not nanoseconds. But asymmetric protection switching, a repaired span with extra slack coiled in one direction only, and equipment with different processing delays each way all contribute, and none of them are visible in the timing record.

Constant error adds, it does not average

The other common mistake is statistical. Time error from a boundary clock has two parts: a dynamic part that varies and largely averages out, and a constant part that does not.

Constant time error is a fixed offset in a fixed direction, so it adds linearly down the chain. Ten class B clocks are 200 ns, not 63. Combining them in quadrature — which is the right thing to do for genuinely independent random errors — is optimistic by the square root of the hop count, and on a twenty-hop chain that is a factor of four and a half in the unsafe direction.

What this does not do

It sums budgets; it does not measure a network. Real time error is measured with a tester at the far end against a reference, and a calculation is a design aid rather than a substitute for that measurement.

It uses the constant time error figure for each clock class and ignores dynamic time error and noise transfer, which matter for a long chain and need the full G.8273.2 treatment. It says nothing about the choice of profile, about whether SyncE is providing frequency assistance underneath, or about how the chain behaves during a rearrangement — which is often when time error is worst.

Everything is calculated in your browser. Network topology, span lengths and equipment figures are not uploaded.