时钟同步

维基百科,自由的百科全书

时钟同步(Clock synchronization)计算机科学工程学中的一个概念,旨在协调多个独立的时钟。现实中的多个时钟,即使时间已调至一致,但在一段时间后依然会因为时钟漂移英语clock drift而显示不同的时间,因为它们计时的速率会略有差异。时钟计时速率的差异会造成多种问题,但已有多种解决方案,最佳的解决方案须由实际情况决定。[1]

术语[编辑]

串行通信中,时钟同步可以指代时钟恢复英语clock recovery,即频率同步,与相位同步英语phase synchronization相对。这种时钟同步被用在电信通信中的同步电信通信中的同步英语synchronization in telecommunications与波特率自动检测波特率自动检测英语automatic baud rate detection[2]

准同步英语plesiochronous system等时英语isochronous操作指一个系统具有频率同步,但并没有严格要求相位同步。同步操作对时间(可能包括频率)具有更高的同步要求。

问题[编辑]

如果无法在更小的尺度管理时间,在具有较高时间同步要求的分布式计算中,会产生许多因时间偏移引发的问题。

例如,在 Unix 系统中,make 命令可用于增量编译代码,并避免编译已经编译过且未发生改变的代码。make 命令使用主机的时钟来确定哪些源代码需要编译,如果源代码处于另一台单独的文件服务器上,而两者时钟不一致,make 就可能导致错误的结果。[3]

解决方案[编辑]

在一个具有中心服务器的系统中,同步方案较为简单:由这个中心服务器指示时间。在这种环境中,Cristian 算法英语Cristian's algorithmBerkeley 算法英语Berkeley algorithm可能是最佳的解决方案。

分布式系统中,问题变得更为复杂,因为并没有全局通用的时间。在互联网上最常用的时钟同步协议是 NTP,采用 UDP 通信,并形成层级的客户端 - 服务端架构。分布式系统的逻辑时钟英语logical clock涉及到的概念包括 Lamport 时间戳英语Lamport timestamps向量时钟英语vector clock

在无线网络中,因为其不稳定性,包括同步数据包的碰撞等,这一问题变得更为艰难。[4][5]

Berkeley 算法[编辑]

Berkeley 算法英语Berkeley algorithm 适用于无线电时钟(radio clock)不可用的分布式系统,此类系统无法得知真实时间,只能通过维护一个全局的平均时间作为标准时间。一台时间服务器会周期性地获取各个客户端上的时间,将其平均处理后,回传每个客户端的时间与平均时间的偏移,以达到统一使用此平均时间的目的。此算法适用于不仅时间可能不一致,时钟速率也可能不一致的系统。

如果一个客户端的时间偏移过大,超出了容忍值,则通常不会参与平均时间的计算。如此可以防止系统的时间被单个异常的时钟过度影响。

时钟采样网络互同步[编辑]

Cristian 算法[编辑]

GPS 时钟[编辑]

靶场仪器组时间码[编辑]

网络时间协议[编辑]

精确时间协议[编辑]

基础设施参考点广播同步[编辑]

同步以太网[编辑]

Ad-hoc 无线网络中的时间同步[编辑]

参考文献[编辑]

  1. ^ Tanenbaum, Andrew S.; van Steen, Maarten, Distributed Systems : Principles and Paradigms, Prentice Hall, 2002, ISBN 0-13-088893-1 
  2. ^ Norman Matloff, Transmission on a Serial Line (PDF), September 3, 2001 [2018-04-17], (原始内容存档 (PDF)于2020-09-22) 
  3. ^ Marco Platania. Clock Synchronization (PDF): 11. 2018-06-03 [2018-08-25]. (原始内容存档 (PDF)于2020-09-22). 
  4. ^ Maróti, Miklós; Kusy, Branislav; Simon, Gyula; Lédeczi, Ákos. The Flooding Time Synchronization Protocol. Proceedings of the 2nd International Conference on Embedded Networked Sensor Systems. SenSys '04 (New York, NY, USA: ACM). 2004: 39–49. ISBN 1581138792. doi:10.1145/1031495.1031501. 
  5. ^ Koo, Jinkyu; Panta, Rajesh K.; Bagchi, Saurabh; Montestruque, Luis. A Tale of Two Synchronizing Clocks. Proceedings of the 7th ACM Conference on Embedded Networked Sensor Systems. SenSys '09 (New York, NY, USA: ACM). 2009: 239–252. ISBN 9781605585192. doi:10.1145/1644038.1644062.