Jump to content

Clock synchronization: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Changing short description from "of otherwise independent clocks" to "Coordination of independent clocks"
 
(184 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{Short description|Coordination of independent clocks}}
'''Clock synchronization''' is a problem from [[computer science]] and [[engineering]] which deals with the idea that internal [[clock]]s of several computers may differ. Even when initially set accurately, real clocks will differ after some amount of time due to [[clock drift]], caused by clocks counting time at slightly different rates. There are several problems that occur as a repercussion of rate differences and several solutions, some being more appropriate than others in certain contexts.<ref>{{cite book
{{broader|Clock network}}
| coauthors = Maarten van Steen
| last = Tanenbaum
| first = Andrew S.
| authorlink = Andrew S. Tanenbaum
| title = Distributed Systems : Principles and Paradigms
| publisher = [[Prentice Hall]]
| date = 2002
| isbn = 0-13-088893-1 }}</ref>


'''Clock synchronization''' is a topic in [[computer science]] and [[engineering]] that aims to coordinate otherwise independent [[clock]]s. Even when initially set accurately, real clocks will differ after some amount of time due to [[clock 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.<ref>{{Citation
In serial communication, some people<ref>
| last1 = Tanenbaum
[http://heather.cs.ucdavis.edu/~matloff/Networks/Serial/Serial.pdf "Transmission on a Serial Line"]
| first1 = Andrew S.
</ref> use the term "clock synchronization" merely to discuss getting one metronome-like [[clock signal]] to pulse at the same frequency as another one -- [[frequency synchronization]] and [[phase synchronization]]. Such "clock synchronization" is used in [[synchronization in telecommunications]] and [[automatic baud rate detection]].
| author1-link = Andrew S. Tanenbaum
| last2 = van Steen
| first2 = Maarten
| title = Distributed Systems : Principles and Paradigms
| publisher = [[Prentice Hall]]
| year = 2002
| isbn = 0-13-088893-1
}}</ref>

==Terminology==
In [[serial communication]], clock synchronization can refer to [[clock recovery]] which achieves frequency synchronization, as opposed to full [[phase synchronization]]. Such clock synchronization is used in [[synchronization in telecommunications]] and [[automatic baud rate detection]].<ref>{{citation |url=http://heather.cs.ucdavis.edu/~matloff/Networks/Serial/Serial.pdf |title=Transmission on a Serial Line |access-date=2018-04-17 |author=Norman Matloff |date=September 3, 2001}}</ref>

[[Plesiochronous]] or [[isochronous]] 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.


==Problems==
==Problems==
Besides the incorrectness of the time itself, there are problems associated with clock skew that take on more complexity in a [[Distributed computing|distributed system]] in which several computers will need to realize the same global time.
As a result of the difficulties managing time at smaller scales, there are problems associated with [[clock skew]] that take on more complexity in [[distributed computing]] in which several computers will need to realize the same global time. For instance, in [[Unix]] systems the ''[[make (software)|make]]'' command is used to [[compile]] new or modified code and seeks to avoid recompiling unchanged code. The ''make'' 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 separate [[file server]] and the two machines have unsynchronized clocks, the ''make'' program might not produce the correct results.<ref>{{cite web |url=http://www.dsn.jhu.edu/~platania/index_files/clock_sync.pdf |page=11 |title=Clock Synchronization |author=Marco Platania |date=2018-06-03}}</ref>


Synchronization is required for accurate reproduction of [[streaming media]]. Clock synchronization is a significant component of [[audio over Ethernet]] systems.
For instance, in [[Unix]] systems the ''[[make (software)|make]]'' command is used to [[compile]] new or modified code without the need to recompile unchanged code. The ''make'' 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 separate [[file server]] and the two machines have unsynchronized clocks, the ''make'' program might not produce the correct results.


==Solutions==
==Solutions==
In a [[centralized system]] the solution is trivial; the centralized server will dictate the system time. [[Cristian's algorithm]] and the [[Berkeley Algorithm]] are some solutions to the clock synchronization problem in a centralized server environment.
In a system with a central server, the synchronization solution is trivial; the server will dictate the system time. [[Cristian's algorithm]] and the [[Berkeley algorithm]] are potential solutions to the clock synchronization problem in this environment.

In a [[Distributed computing|distributed system]] the problem takes on more complexity because a global time is not easily known. The most used clock synchronization solution on the Internet is the [[Network Time Protocol|Network Time Protocol (NTP)]] which is a layered client-server architecture based on UDP message passing. [[Lamport timestamps]] and [[Vector clocks]] are concepts of the logical clocks in distributed systems.
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 the [[Network Time Protocol]] (NTP) which is a layered client-server architecture based on [[User Datagram Protocol]] (UDP) message passing. [[Lamport timestamps]] and [[vector clock]]s are concepts of the [[logical clock]] in distributed computing.

In a [[wireless network]], the problem becomes even more challenging due to the possibility of collision of the synchronization [[Network packet|packets]] on the wireless medium and the higher drift rate of clocks on low-cost wireless devices.<ref name="Miklós">{{Cite book|last1=Maróti|first1=Miklós|last2=Kusy|first2=Branislav|last3=Simon|first3=Gyula|last4=Lédeczi|first4=Ákos|title=Proceedings of the 2nd international conference on Embedded networked sensor systems |chapter=The flooding time synchronization protocol |date=2004|series=SenSys '04|location=New York, NY, USA|publisher=ACM|pages=39–49|doi=10.1145/1031495.1031501|isbn=1581138792|s2cid=9897231}}</ref><ref name="Panta">{{Cite book|last1=Koo|first1=Jinkyu|last2=Panta|first2=Rajesh K.|last3=Bagchi|first3=Saurabh|last4=Montestruque|first4=Luis|title=Proceedings of the 7th ACM Conference on Embedded Networked Sensor Systems |chapter=A tale of two synchronizing clocks |date=2009|series=SenSys '09|location=New York, NY, USA|publisher=ACM|pages=239–252|doi=10.1145/1644038.1644062|isbn=9781605585192|s2cid=8242938}}</ref>

===Berkeley algorithm===
{{Main|Berkeley algorithm}}
The Berkeley algorithm is suitable for systems where a [[radio 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. A [[time 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 the [[clock rate]].

===Clock-sampling mutual network synchronization===
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 with [[IEEE 802.11]] and similar standards. It can be accurate to the order of 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.<ref>{{Citation |last1=Rentel |first1=Carlos H. |last2=Kunz |first2=Thomas |title=A clock-sampling mutual network synchronization algorithm for wireless ad hoc networks |journal=IEEE Wireless Communications and Networking Conference |volume=1 |date=March 2005 |pages=638–644 |publisher=IEEE Press |doi=10.1109/WCNC.2005.1424575|s2cid=1340072 }}</ref>


===Cristian's algorithm===
===Cristian's algorithm===
{{main|Cristian's algorithm}}
{{Main|Cristian's algorithm}}
Cristian's algorithm relies on the existence of a time server.<ref>{{Citation
Cristian's algorithm relies on the existence of a time server.<ref>{{Citation
| last=Cristian
| last=Cristian
| first=F.
| first=F.
| title=Probabilistic clock synchronization
| title=Probabilistic clock synchronization
| journal=Distributed Computing
| journal=Distributed Computing
| volume=3
| volume=3
| issue=3
| issue=3
| year=1989
| year=1989
| pages=146–158
| pages=146–158
| publisher=Springer
| url=http://www.springerlink.com/content/j5250h34013874jv/
| doi=10.1007/BF01784024
| publisher=Springer
| s2cid=3170166
| doi=10.1007/BF01784024
}}</ref> 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 a [[procedure call]] to the time server. Variations of this algorithm make more precise time calculations by factoring in network [[propagation]] time.
}}</ref> 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 a [[procedure call]] to the time server. Variations of this algorithm make more precise time calculations by factoring in network [[radio propagation]] time.


===Berkeley algorithm===
===Satellite navigation systems===
In addition to its use in navigation, the [[Global Positioning System]] (GPS) can also be used for clock synchronization. The accuracy of GPS time signals is ±10&nbsp;nanoseconds.<ref>{{cite web |url=http://tf.nist.gov/time/commonviewgps.htm |title=Common View GPS Time Transfer |publisher=[[National Institute of Standards and Technology]] |archive-url=https://web.archive.org/web/20121028043917/http://tf.nist.gov/time/commonviewgps.htm |archive-date=2012-10-28}}</ref> Using GPS (or other [[satellite navigation]] systems) for synchronization requires a receiver connected to an antenna with unobstructed view of the sky.
{{main|Berkeley Algorithm}}
This algorithm is more suitable for systems where a radio 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. A time 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 the clock rate.
Often, any client whose clock differs by a value outside of a given tolerance is disregarded when averaging the results. This prevents the overall system time from being drastically skewed due to one erroneous clock.


===Inter-range Instrumentation Group time codes===
=== Network Time Protocol ===
[[IRIG timecode]]s 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's [[Inter-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.<ref>{{cite web |url=http://literature.rockwellautomation.com/idc/groups/literature/documents/wp/enet-wp030_-en-e.pdf |title=Choosing the correct Time Synchronization Protocol and incorporating the 1756-TIME module into your Application |publisher=Rockwell Automation |author=Josh Matson |access-date=2019-08-13 |date=May 2013}}</ref>
This algorithm is a class of mutual network synchronization algorithm in which no master or reference clocks are needed. All clocks equally participate in the synchronization of the network by exchanging their timestamps using regular beacon packets. CS-MNS is suitable for distributed and mobile applications. It has been shown to be scalable, accurate in the order of few microseconds, and compatible to IEEE 802.11 and similar standards.<ref>

{{Citation
===Network Time Protocol===
| last1=Rentel
[[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 for [[unreliable network]]s. It can reduce synchronization offsets to times of the order of a few milliseconds over the public Internet, and to sub-millisecond levels over [[local area network]]s.
| first1=C.

| last2=Kunz
A simplified version of the NTP protocol, [[Simple Network Time Protocol]] (SNTP), can also be used as a pure single-shot stateless [[Master/slave (technology)|primary/secondary]] synchronization protocol, but lacks the sophisticated features of NTP, and thus has much lower performance and reliability levels.
| first2=T.

| title=A clock-sampling mutual network synchronization algorithm for wireless ad hoc networks
===Precision Time Protocol===
| journal=IEEE Wireless Communications and Networking Conference
[[Precision Time Protocol]] (PTP) is a master/slave protocol for delivery of highly accurate time over local area networks.
| volume=1
| month=March
| year=2005
| pages=638–644
| url=http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1424575
| publisher=IEEE Press
| doi=10.1109/WCNC.2005.1424575
}}</ref>


===Reference broadcast synchronization===
===Reference broadcast synchronization===
The [[Reference 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.
{{main|Reference Broadcast Time Synchronization}}

This 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.
===Reference Broadcast Infrastructure Synchronization===
The [[Reference Broadcast Infrastructure Synchronization]] (RBIS)<ref>
{{Citation
| last1=Cena
| first1=G.
| last2=Scanzio
| first2=S.
| last3=Valenzano
| first3=A.
| last4=Zunino
| first4=C.
| title=Implementation and Evaluation of the Reference Broadcast Infrastructure Synchronization Protocol
| journal=IEEE Transactions on Industrial Informatics
| volume=11
| issue=3
| date=June 2015
| pages=801–811
| publisher=IEEE Press
| doi=10.1109/TII.2015.2396003
| s2cid=17867070
}}</ref> 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===
[[Synchronous Ethernet]] uses Ethernet in a [[Synchronous serial communication|synchronous manner]] such that when combined with synchronization protocols such as PTP in the case of the [[White Rabbit Project]], sub-nanosecond synchronization accuracy is achieved.

===Wireless ad hoc networks===
Synchronization is achieved in [[wireless ad hoc network]]s through sending synchronization messages in a [[Multi-hop routing|multi-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),<ref name="Miklós" /> and Harmonia,<ref name="Panta" /> both able to achieve synchronization with accuracy on the order of microseconds.

===Huygens===
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 in [[data center]]s or in [[public 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.<ref>{{cite book |url=https://www.usenix.org/conference/nsdi18/presentation/geng |title=Exploiting a Natural Network Effect for Scalable, Fine-grained Clock Synchronization|year=2018|pages=81–94|isbn=9781939133014}}</ref> The findings of this research are being tested in financial market applications.<ref>{{cite news |url=https://www.nytimes.com/2018/06/29/technology/computer-networks-speed-nasdaq.html |title=Time Split to the Nanosecond Is Precisely What Wall Street Wants |author=John Markoff |date=June 29, 2018 |work=New York Times}}</ref>


==See also==
==See also==
* [[Einstein synchronisation]]
{{portal|Time|MontreGousset001.jpg}}
* [[International Atomic Time]]
* [[International Atomic Time]]
* [[Network Time Protocol]]
* [[NITZ|Network Identity and Time Zone]]
* [[Synchronization (computer science)]]
* [[Precision Time Protocol]]
* [[Time and frequency transfer]]
* [[Vector clocks]]
* [[Time signal]]
* [[Time standard]]
* [[Reference Broadcast Infrastructure Synchronization]]


== References ==
==References==
{{reflist}}
{{Reflist}}

==Further reading==
* {{Citation
| last1 = Govindan Kannan
| first1 = Pravein.
| last2 = Joshi
| first2 = Raj.
| last3 = Chan
| first3 = Mun Choon.
| title = Proceedings of the 2019 ACM Symposium on SDN Research
| chapter = Precise Time-synchronization in the Data-Plane using Programmable Switching ASICs
| pages = 8–20
| date = Apr 2019
| doi = 10.1145/3314148.3314353
| publisher = ACM
| isbn = 9781450367103
| s2cid = 85518997
| doi-access =
}}
* {{citation |title=Exploiting a Natural Network Effect for Scalable, Fine-grained Clock Synchronization |isbn=9781939133014 |url=https://www.usenix.org/conference/nsdi18/presentation/geng |access-date=2021-10-19}}


[[Category:Synchronization]]
[[Category:Synchronization]]
[[Category:Clocks]]
[[Category:Clocks]]
[[Category:Distributed computing problems]]
[[Category:Distributed computing problems]]

[[de:Mittelwert-Algorithmus]]
[[fr:Synchronisation d'horloge]]
[[ru:Синхронизация часов]]
[[scn:Sincrunizzazzioni di li Ruloggi]]

Latest revision as of 19:25, 9 September 2024

Clock synchronization is a topic in computer science and engineering that aims to coordinate otherwise independent clocks. Even when initially set accurately, real clocks will differ after some amount of time due to clock 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]

Terminology

[edit]

In serial communication, clock synchronization can refer to clock recovery which achieves frequency synchronization, as opposed to full phase synchronization. Such clock synchronization is used in synchronization in telecommunications and automatic baud rate detection.[2]

Plesiochronous or isochronous 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.

Problems

[edit]

As a result of the difficulties managing time at smaller scales, there are problems associated with clock skew that take on more complexity in distributed computing in which several computers will need to realize the same global time. For instance, in Unix systems the make command is used to compile new or modified code and seeks to avoid recompiling unchanged code. The make 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 separate file server and the two machines have unsynchronized clocks, the make program might not produce the correct results.[3]

Synchronization is required for accurate reproduction of streaming media. Clock synchronization is a significant component of audio over Ethernet systems.

Solutions

[edit]

In a system with a central server, the synchronization solution is trivial; the server will dictate the system time. Cristian's algorithm and the Berkeley 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 the Network Time Protocol (NTP) which is a layered client-server architecture based on User Datagram Protocol (UDP) message passing. Lamport timestamps and vector clocks are concepts of the logical clock in distributed computing.

In a wireless network, the problem becomes even more challenging due to the possibility of collision of the synchronization packets on the wireless medium and the higher drift rate of clocks on low-cost wireless devices.[4][5]

Berkeley algorithm

[edit]

The Berkeley algorithm is suitable for systems where a radio 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. A time 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 the clock rate.

Clock-sampling mutual network synchronization

[edit]

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 with IEEE 802.11 and similar standards. It can be accurate to the order of 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

[edit]

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 a procedure call to the time server. Variations of this algorithm make more precise time calculations by factoring in network radio propagation time.

Satellite navigation systems

[edit]

In addition to its use in navigation, the Global Positioning System (GPS) can also be used for clock synchronization. The accuracy of GPS time signals is ±10 nanoseconds.[8] Using GPS (or other satellite navigation systems) for synchronization requires a receiver connected to an antenna with unobstructed view of the sky.

Inter-range Instrumentation Group time codes

[edit]

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's Inter-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

[edit]

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 for unreliable networks. It can reduce synchronization offsets to times of the order of a few milliseconds over the public Internet, and to sub-millisecond levels over local area networks.

A simplified version of the NTP protocol, Simple Network Time Protocol (SNTP), can also be used as a pure single-shot stateless primary/secondary synchronization protocol, but lacks the sophisticated features of NTP, and thus has much lower performance and reliability levels.

Precision Time Protocol

[edit]

Precision Time Protocol (PTP) is a master/slave protocol for delivery of highly accurate time over local area networks.

Reference broadcast synchronization

[edit]

The Reference 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.

Reference Broadcast Infrastructure Synchronization

[edit]

The Reference 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

[edit]

Synchronous Ethernet uses Ethernet in a synchronous manner such that when combined with synchronization protocols such as PTP in the case of the White Rabbit Project, sub-nanosecond synchronization accuracy is achieved.

Wireless ad hoc networks

[edit]

Synchronization is achieved in wireless ad hoc networks through sending synchronization messages in a multi-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.

Huygens

[edit]

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 in data centers or in public 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]

See also

[edit]

References

[edit]
  1. ^ Tanenbaum, Andrew S.; van Steen, Maarten (2002), Distributed Systems : Principles and Paradigms, Prentice Hall, ISBN 0-13-088893-1
  2. ^ Norman Matloff (September 3, 2001), Transmission on a Serial Line (PDF), retrieved 2018-04-17
  3. ^ Marco Platania (2018-06-03). "Clock Synchronization" (PDF). p. 11.
  4. ^ a b Maróti, Miklós; Kusy, Branislav; Simon, Gyula; Lédeczi, Ákos (2004). "The flooding time synchronization protocol". Proceedings of the 2nd international conference on Embedded networked sensor systems. SenSys '04. New York, NY, USA: ACM. pp. 39–49. doi:10.1145/1031495.1031501. ISBN 1581138792. S2CID 9897231.
  5. ^ a b Koo, Jinkyu; Panta, Rajesh K.; Bagchi, Saurabh; Montestruque, Luis (2009). "A tale of two synchronizing clocks". Proceedings of the 7th ACM Conference on Embedded Networked Sensor Systems. SenSys '09. New York, NY, USA: ACM. pp. 239–252. doi:10.1145/1644038.1644062. ISBN 9781605585192. S2CID 8242938.
  6. ^ Rentel, Carlos H.; Kunz, Thomas (March 2005), "A clock-sampling mutual network synchronization algorithm for wireless ad hoc networks", IEEE Wireless Communications and Networking Conference, 1, IEEE Press: 638–644, doi:10.1109/WCNC.2005.1424575, S2CID 1340072
  7. ^ Cristian, F. (1989), "Probabilistic clock synchronization", Distributed Computing, 3 (3), Springer: 146–158, doi:10.1007/BF01784024, S2CID 3170166
  8. ^ "Common View GPS Time Transfer". National Institute of Standards and Technology. Archived from the original on 2012-10-28.
  9. ^ Josh Matson (May 2013). "Choosing the correct Time Synchronization Protocol and incorporating the 1756-TIME module into your Application" (PDF). Rockwell Automation. Retrieved 2019-08-13.
  10. ^ Cena, G.; Scanzio, S.; Valenzano, A.; Zunino, C. (June 2015), "Implementation and Evaluation of the Reference Broadcast Infrastructure Synchronization Protocol", IEEE Transactions on Industrial Informatics, 11 (3), IEEE Press: 801–811, doi:10.1109/TII.2015.2396003, S2CID 17867070
  11. ^ Exploiting a Natural Network Effect for Scalable, Fine-grained Clock Synchronization. 2018. pp. 81–94. ISBN 9781939133014.
  12. ^ John Markoff (June 29, 2018). "Time Split to the Nanosecond Is Precisely What Wall Street Wants". New York Times.

Further reading

[edit]