# [ntp:questions] Asymmetric Delay and NTP

Magnus Danielson magnus at rubidium.dyndns.org
Mon Mar 17 22:21:50 UTC 2014

```Joe,

On 16/03/14 23:16, Joe Gwinn wrote:
> I recall seeing something from Dr. Mills saying that a formal proof had
> been found showing that no packet-exchange protocol (like NTP) could
> tell delay asymmetry from clock offset.  Can anyone provide a reference
> to this proof?

It's relative simple.

You have two nodes (A and B) and a link in each direction (A->B and B->A).

You have three unknowns, the time-difference between the nodes (T_B -
T_A), the delay from node A to B (d_AB) and the delay from node B to A
(d_BA).

You make two observations of the pseudo-range from node A to node B
(t_AB) and from node B to node A (t_BA). These are made by the source
announcing it's time and the receiver time-stamping in it's own time
when it occurs.

t_AB = T_B - T_A + d_AB
t_BA = T_A - T_B + d_BA

We thus have three unknowns and two equations. You can't solve that.
You can't win this game.

There are things you can do. Let's take out observations and add them,
then we get

RTT = t_AB + t_BA = (T_B - T_A) + d_AB + (T_A - T_B) + d_BA
= d_AB + d_BA

Now, that is useful. If we diff them we get

/|T = t_AB - t_BA = (T_B - T_A) + d_AB - (T_A - T_B) - d_BA
= 2(T_B - T_A) + d_AB - d_BA

TE = /|T / 2 = T_B - T_A + (d_AB - d_BA)/2

So, diffing them gives the time-difference, plus half the asymmetric delay.
If we assume that the delay is symmetric, then we can use these measures
to compute the time-difference between the clocks, and if there is an
asymmetry, it *will* show up as a bias in the slave clock.

The way to come around this is to either avoid asymmetries like the
plauge, find a means estimate them (PTPv2) or calibrate them away.

Is that formal enough for you?

Cheers,
Magnus
```