Clock synchronization is a topic incomputer science andengineering that aims to coordinate otherwise independentclocks. Even when initially set accurately, real clocks will differ after some amount of time due toclock drift, caused by clocks counting time at slightly different rates. There are several problems that occur as a result of clock rate differences and several solutions, some being more acceptable than others in certain contexts.[1]
Inserial communication, clock synchronization can refer toclock recovery, which achieves frequency synchronization, as opposed to fullphase synchronization. Such clock synchronization is used insynchronization in telecommunications andautomatic baud rate detection.[2]
Plesiochronous orisochronous operation refers to a system with frequency synchronization and loose constraints on phase synchronization.Synchronous operation implies a tighter synchronization based on time perhaps in addition to frequency.
As a result of the difficulties managing time at smaller scales, there are problems associated withclock skew that take on more complexity indistributed computing in which several computers will need to realize the same global time. For instance, inUnix systems, themake command is used tocompile new or modified code and seeks to avoid recompiling unchanged code. Themake command uses the clock of the machine it runs on to determine which source files need to be recompiled. If the sources reside on a separatefile server and the two machines have unsynchronized clocks, themake program might not produce the correct results.[3]
Synchronization is required for accurate reproduction ofstreaming media. Clock synchronization is a significant component ofaudio over Ethernet systems.
In a system with a central server, the synchronization solution is trivial; the server will dictate the system time.Cristian's algorithm and theBerkeley algorithm are potential solutions to the clock synchronization problem in this environment.
In distributed computing, the problem takes on more complexity because a global time is not easily known. The most used clock synchronization solution on the Internet is theNetwork Time Protocol (NTP), which is a layered client-server architecture based onUser Datagram Protocol (UDP) message passing.Lamport timestamps andvector clocks are concepts of thelogical clock in distributed computing.
In awireless network, the problem becomes even more challenging due to the possibility of collision of the synchronizationpackets on the wireless medium and the higher drift rate of clocks on low-cost wireless devices.[4][5]
The Berkeley algorithm is suitable for systems where aradio clock is not present. This system has no way of making sure of the actual time other than by maintaining a global average time as the global time. Atime server will periodically fetch the time from all the time clients, average the results, and then report back to the clients the adjustment that needs be made to their local clocks to achieve the average. This algorithm highlights the fact that internal clocks may vary not only in the time they contain but also in theclock rate.
Clock-sampling mutual network synchronization (CS-MNS) is suitable for distributed and mobile applications. It has been shown to be scalable over mesh networks that include indirectly-linked non-adjacent nodes and is compatible withIEEE 802.11 and similar standards. It can be accurate to the order of a few microseconds but requires direct physical wireless connectivity with negligible link delay (less than 1 microsecond) on links between adjacent nodes, limiting the distance between neighboring nodes to a few hundred meters.[6]
Cristian's algorithm relies on the existence of a time server.[7] The time server maintains its clock by using a radio clock or other accurate time source, then all other computers in the system stay synchronized with it. A time client will maintain its clock by making aprocedure call to the time server. Variations of this algorithm make more precise time calculations by factoring in networkradio propagation time.
In addition to its use in navigation, theGlobal Positioning System (GPS) can also be used for clock synchronization. The accuracy of GPS time signals is ±10 nanoseconds.[8] Using GPS (or othersatellite navigation systems) for synchronization requires a receiver connected to an antenna with unobstructed view of the sky.
IRIG timecodes are standard formats for transferring timing information. Atomic frequency standards and GPS receivers designed for precision timing are often equipped with an IRIG output. The standards were created by the Telecommunications Working Group of the United States military'sInter-Range Instrumentation Group (IRIG), the standards body of the Range Commanders Council. Work on these standards started in October 1956, and the original standards were accepted in 1960.[9]
Network Time Protocol (NTP) is a highly robust protocol, widely deployed throughout the Internet. Well tested over the years, it is generally regarded as the state of the art in distributed time synchronization protocols forunreliable networks. It can reduce synchronization offsets to times of the order of a few milliseconds over the public Internet and to sub-millisecond levels overlocal area networks.
A simplified version of the NTP protocol,Simple Network Time Protocol (SNTP), can also be used as a pure single-shot statelessprimary/secondary synchronization protocol, but lacks the sophisticated features of NTP, and thus has much lower performance and reliability levels.
Precision Time Protocol (PTP) is a master/slave protocol for delivery of highly accurate time over local area networks.
TheReference Broadcast Time Synchronization (RBS) algorithm is often used in wireless networks and sensor networks. In this scheme, an initiator broadcasts a reference message to urge the receivers to adjust their clocks.
TheReference Broadcast Infrastructure Synchronization (RBIS)[10] protocol is a master/slave synchronization protocol, like RBS, based on a receiver/receiver synchronization paradigm. It is specifically tailored to be used in IEEE 802.11 wireless networks configured in infrastructure mode (i.e., coordinated by an access point). The protocol does not require any modification to the access point.
Synchronous Ethernet uses Ethernet in asynchronous manner such that when combined with synchronization protocols such as PTP in the case of theWhite Rabbit Project, sub-nanosecond synchronization accuracy is achieved.
Synchronization is achieved inwireless ad hoc networks through sending synchronization messages in amulti-hop manner and each node progressively synchronizing with the node that is the immediate sender of a synchronization message. Examples include Flooding Time Synchronization Protocol (FTSP),[4] and Harmonia,[5] both able to achieve synchronization with accuracy on the order of microseconds.
Researchers from Stanford and Google introduced Huygens, a probe-based, end-to-end clock synchronization algorithm. Huygens is implemented in software and thus can be deployed indata centers or inpublic cloud environments. By leveraging some key aspects of modern data centers and applying novel estimation algorithms and signal processing techniques, the Huygens algorithm achieved an accuracy of tens of nanoseconds even at high network load.[11] The findings of this research are being tested in financial market applications.[12]