  This paper examines synchronization of computer clocks connected via a data
network and proposes a skewless algorithm to synchronize them. Unlike existing
solutions, which either estimate and compensate the frequency difference (skew)
among clocks or introduce offset corrections that can generate jitter and
possibly even backward jumps, our solution achieves synchronization without
these problems. We first analyze the convergence property of the algorithm and
provide explicit necessary and sufficient conditions on the parameters to
guarantee synchronization. We then study the effect of noisy measurements
(jitter) and frequency drift (wander) on the offsets and synchronization
frequency, and further optimize the parameter values to minimize their
variance. Our study reveals a few insights, for example, we show that our
algorithm can converge even in the presence of timing loops and noise, provided
that there is a well defined leader. This marks a clear contrast with current
standards such as NTP and PTP, where timing loops are specifically avoided.
Furthermore, timing loops can even be beneficial in our scheme as it is
demonstrated that highly connected subnetworks can collectively outperform
individual clients when the time source has large jitter. The results are
supported by experiments running on a cluster of IBM BladeCenter servers with
Linux.
