为什么IEEE 1588如此精确呢?

为什么IEEE 1588如此精确?因为1个概念:硬件时间戳。因为由IEEE 1588-2008定义的精确时间协议(PTP)通过在主时钟和从时钟之间交换信息来工作。

图1. 显示PTP主时钟和PTP从时钟之间信息交换的顺序图。Sync和Delay_Request消息的出发和到达时间被保存为四个时间戳t1-t4。Follow_Up和Delay_Response消息用于将主时钟记录的时间戳传送给从时钟,这样它就有了调整其时间所需的信息。

在这些交换结束后,从属时钟拥有所有四个时间戳。因此,它可以计算出它的时钟相对于主时钟的偏移量为:

偏移 = (t2 + t3 – t1 – t4) /2

然而,有一个陷阱(问题)。该方程假定信息从主站到从站所需的时间(正向延迟)与信息从从站到主站所需的时间(反向延迟)相同。如果这些延迟很大也没有问题,只要它们是相同的。正向和反向延迟的任何差异都会导致在确定主时钟和从时钟之间的差异时出现错误。

为什么正向和反向的延迟会不同?这主要是由于所有那些讨厌的“队列”。路由器里有队列,交换机里有队列,甚至终端设备的网络堆栈里也有队列。通常情况下,信息在队列中花费的时间很少,但有时它们在等待交换机完成同一端口上的其他信息,或等待操作系统完成它正在做的事情,以便它能获取时间戳。在某些情况下,延迟可能相当长,几微秒,甚至是毫秒。因此,很明显,如果这种情况发生在一个方向,而不是另一个方向,那么,这就有一个很大的时间传输错误。

由于我们在开篇已经给出了答案,知道这是通过硬件时间戳解决的。其工作原理如下图所示。当消息离开或到达网络端口时,特殊硬件会根据本地时钟生成时间戳,该时间戳通常位于数据链路层(MAC)和物理层(PHY)之间与介质无关的接口中。这消除了操作系统和其他软件无法预测的缓慢响应。支持PTP的交换机和路由器也会为PTP消息加时间戳。下面所示的一种类型的这样的设备称为透明时钟,其工作方式是更新PTP消息以校正在设备上花费的时间。另一种类型称为边界时钟,它使用PTP消息设置自己的时钟,然后将其时间发送给需要它的PTP从站。

图2. 同步信息传输过程中的硬件时间戳示意图。同步消息在通过PHY和MAC之间的MII时,会在PTP设备的本地时钟上触发一个时间戳。

这种延迟测量机制被称为 “端对端E2E “延迟测量机制。事实证明,PTP有一种替代性的延迟测量机制,称为 “对等P2P “延迟机制。关于这两种延迟机制的描述,我们将在下期文章中介绍。