From 2950935e9a73f50c7cd369d80a7602a2f4ae1f26 Mon Sep 17 00:00:00 2001 From: Martin Fouilleul Date: Sat, 4 Jun 2022 15:22:52 +0200 Subject: [PATCH] NTP clock selection --- selected/time.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/selected/time.md b/selected/time.md index e2252b2..3b24b22 100644 --- a/selected/time.md +++ b/selected/time.md @@ -172,6 +172,8 @@ $\begin{align*} \varepsilon = \varphi_p \times \varphi_c \times \delta\,. \end{align*}$ +Note that peers also transmit the delay and dispersion statistics accumulated at each stratum from the root down to the peer, yielding the root delay and dispersion, $\theta_r$ and $\varepsilon_r$. These statistics are used to assess the "quality" of the samples computed from each peer. + Simple NTP clients that are only synchronized to one server, that don't act as a source for other peers, and that don't need a high precision, can implement only the on-wire protocol and directly use $\theta$ to correct their local clock. However this estimate is vulnerable to network jitter, delay asymetry, clock drift and wander. To get better precision, the samples produced by the on-wire protocol must be processed by a number of mitigation algorithms. Links: [Analysis and Simulation of the NTP On-Wire Protocols](https://www.eecis.udel.edu/~mills/onwire.html), [RFC5905 - section 8](https://datatracker.ietf.org/doc/html/rfc5905#section-8) @@ -197,10 +199,18 @@ The server's jitter $\psi_p$ is computed as the root mean square (RMS) of the of $\psi_p = \frac{1}{n-1}\sqrt{\sum_{i=0}^{N-1}(\theta_0-\theta_i)^2} \,.$ -Links: [Clock Filter Algorithm](https://www.eecis.udel.edu/~mills/ntp/html/filter.html), [rfc5905 - section 10](https://datatracker.ietf.org/doc/html/rfc5905#section-10) +Links: [Clock Filter Algorithm](https://www.eecis.udel.edu/~mills/ntp/html/filter.html), [RFC5905 - section 10](https://datatracker.ietf.org/doc/html/rfc5905#section-10) ### Clock Selection +The estimates we get from the clock filters of each peer can be in contradiction, either because of network perturbation or because some peers are faulty (or malicious!). The clock selection algorithm tries find a majority group of peers with consistent time estimates (the "truechimers"), and eliminates the other peers (the "falsetickers"). + +The algorithm is based on the observation that for a non-faulty peer, the time offset error at the time of measurement is bounded by half the round-trip delay to the reference clock. This bound then increases with the age of the sample, due to the accumulated dispersion. + +The true offset thus lies in the correctness interval $[\theta - \lambda_r, \theta + \lambda_r]$ ($\lambda_r$ being the accumulated distance to the root). Two peers whose correctness intervals do not intersect can not possibly agree on the time, and one of them must be wrong. The algorithm tries to find the maximum number of candidates whose correctness intervals share a common intersection, and discards the other candidates. + +Links: [Clock Select Algorithm](https://www.eecis.udel.edu/~mills/ntp/html/select.html), [RFC5905 - section 11](https://datatracker.ietf.org/doc/html/rfc5905#section-11.2.1), [Marzullo and Owicki, 1983](https://dl.acm.org/doi/pdf/10.1145/800221.806730) + ### Cluster Algorithm ### Clock Discipline