精确时间协议的弹性的一个关键是最佳master主时钟算法,或称BMCA。 BMCA允许一个时钟在前一个master时钟失去其GPS、因开关故障而断开连接或因任何原因无法继续担任master时钟时自动接管主时钟的职责。

为了理解这一点,请考虑普通时钟的一天的工作情况。在上一篇文章中,一个普通时钟可以被设计成能够作为一个主时钟或一个从时钟。 这个时钟可以处于的状态如下图所示:

上电后,时钟做的第一件事是 “listen-监听”,换句话说,它寻找来自PTP通用组播地址的Announce信息。 Announce信息包含发送它的时钟的属性。 如果普通时钟看到来自更好的时钟的Announce消息,它就会进入从属状态,如果它不具备从属能力,则进入被动状态。 如果普通时钟在Announce时间间隔内没有看到来自更好的时钟的Announce信息,那么它就会接管主时钟的角色。 这将持续运行,因此支持主控的设备会持续关注当前主时钟可能丢失的情况。 由于这个原因,在你的网络中,Announce Time Out Interval的设置必须长于Announce Interval。 如果你不这样做,那么具有主控能力的设备将不断跳出结论,认为主控时钟已经消失,他们需要接管。 这就像一群在脱口秀中的专家,他们从来不听,一直在互相争论。

接下来我们花3分钟讲讲,是什么让一个master比另一个更好。

  1. Priority One Field(优先级1字段):这是一个8位用户可设置的值。 值越低优先级越高。 通常情况下,主设备的优先级为128,从设备为255。 然而,如果你想推翻正常的选择标准,你可以改变优先级1,并创建你想要的任何等级顺序。
  2. Clock Class(时钟类):这是一个时钟状态的枚举列表。 例如,一个带有GPS接收器的时钟被锁定在世界协调时间上,比一个自由运行并通过手工设置在手腕上的时钟有更多的类。 当一个有GPS接收器的时钟失去连接时,也有各种级别的holdover状态。
  3. Clock Accuracy(时钟精度):这是对UTC精度范围的枚举列表,例如25-100 ns。
  4. Clock Variance(时钟方差):这是一个复杂的对数统计,表示时钟振荡器在同步信息间隔内的抖动和波动。
  5. Priority 2 Field(优先级2字段):对的,这是另一个用户可设置的字段。 在这个决策树的低端,主要目的是让系统集成商在相同的冗余Grandmasters中确定主时钟和备份时钟。
  6. Source Port ID(源端口ID):这是一个数字,要求是唯一的,通常设置为以太网MAC地址。 从本质上讲,这是一种掷硬币的游戏,肯定会打破平局。

最后一个复杂的问题是 “Steps Removed”。如果两个边界时钟从同一个主站获得时间,那么通过较少的边界时钟连接到主站的那个时钟会更好。 透明时钟不会对Steps Removed做出贡献,因为它们是透明的。