The Statistics of Computer Clocks and the Design of Synchronization Algorithms
In this study, I used standard statistical tools (such as the various forms of the two-sample Allan variance) to characterize the clocks in computers, and I show how the results of this study are used to design algorithms to synchronize the computer clocks. These synchronization algorithms can be used to synchronize the time of a computer to a local reference clock or to a remote server. The algorithms by themselves are not intended to be a simple replacement for software that implements the Network Time Protocol (NTP) or any other similar application. Instead, they describe the statistical principles that should be used to design an algorithm to synchronize any computer clock by using data from any external reference received in any format. These algorithms have been used to synchronize the clocks of the computers that support the Internet Time Service operated by the National Institute of Standards and Technology (NIST), and I illustrate the performance of the algorithm with real-time data from these servers. In addition to presenting the design principles of the algorithm, I illustrate the principles with two specific examples: synchronizing a computer clock to a local reference signal, and the design of a synchronization process that is based on time-difference data received from a remote server over the public Internet. The message exchange between the local system and the remote server in this configuration is realized in NTP format, but that is not a fundamental requirement.