20
蓝冠测速官网,
蓝冠招商,
蓝冠公司,

蓝冠官网《Q374919》在前一篇文章中,蓝冠官网 我介绍了在软件中处理时钟的基础知识。这个月的主题将继续讨论全局时钟恢复、分布式时钟同步和事件同步。

全局时钟恢复

假设在一个复杂系统中有几个agent。每一个都有自己的参考时钟,给它时间感。代理的时间概念是由启动后经过的参考时钟的滴答数给出的。

为了同步操作和共享时钟,代理需要有一个通用的全局时间感。这是很容易与总线系统,如USB或火线,因为总线往往携带自己的时钟。然而,对于分布式的、基于分组的互连来说,事情就变得困难了。IEEE标准1588、1588v2和802.1as以及IETF NTP标准是专门设计用于解决分布式全局时钟恢复问题的。

系统的第一个任务是选出一个代理作为主代理。正是这个代理的时钟将成为共同的全球时钟。IEEE 1588及其变体使用点对点领导选举协议,蓝冠注册 该协议试图在代理之间选出最高质量的时钟。它保证选出且只能选出一位大师。

一旦主服务器被选出,每个代理都需要知道以下信息:

我的时钟比全局主时钟慢/快吗?如果有,增加多少?

根据主时钟现在是几点?

使用的基本方法是定期地从主服务器向其他代理发送同步消息。消息包含发送消息的全局时间。下图显示了这种情况的发生:

从服务器知道主服务器执行的出站时间戳(Tm1、Tm2和Tm3)以及从服务器执行的入站时间戳(Ts1、Ts2和Ts3)。给定这些时间戳,它可以计算出主时钟和它自己的本地时钟之间的比率。例如,下面的计算执行两个时钟之间的比率的度量:

rate_ratio = (Ts2 – Ts1) / (Tm2 – Tm1)

这个值的多个测量值可以被过滤掉,以平均出传输时间的变化。随着时间的推移跟踪该值也将跟踪所涉及的两个时钟的漂移。

为了在全局时间和本地时间之间进行完全转换,蓝冠招商 从站还需要知道它与主站之间的时间偏移量,这意味着它需要知道同步消息的传输时间。为了做到这一点,主和从执行一种双向的消息交换:

假设通过时间是对称的:

Tm2 – Ts2 = Tm2 – Ts2, Tm2 – Ts2 = Tm2 – Ts2

所以,

Tm2 – Tm2 + Ts2 – Ts2 = 0.5 * ((Tm2 – Tm1) + (Ts2 – Ts2))

这里需要注意,因为时间戳Tm2和Tm1引用的是与Ts2和Ts1不同的时钟。所以slave需要进行计算:

Tm2 – Tm1 + Ts2 – Ts2 / rate_ratio = 0.5 * (Tm2 – Tm1) + (Ts2 – Ts2) / rate_ratio

知道这个传输时间可以让从时钟计算出它与主时钟的偏移量。现在它拥有了在全球时间和本地时间之间进行转换所需的所有信息,反之亦然。

实际上,像802.1as这样的时间同步协议比这里描述的要复杂一些,但基本思想是相同的。

相关文章
为您推荐
各种观点

报歉!评论已关闭.