为什么IEEE 1588如此精确?两个字:硬件时间戳。由IEEE 1588-2008定义的精确时间协议(PTP)通过在主时钟和从时钟之间交换消息来工作。
图1.时序图显示了PTP主时钟和PTP保存时钟之间的消息交换。Sync和Delay_Request消息的出发和到达时间被保存为四个时间戳t1-t4。Follow_Up和Delay_Response消息用于将主时钟记录的时间戳传输到从时钟,以便它具有调整时间所需的信息。
在这些交换结束时,从时钟具有全部四个时间戳。所以它可以计算出它相对于主时钟的偏移量
偏移=(t2 + t3-t1-t4)/ 2
但是,有一个问题。是不是总有呢?等式假设从主机到从机的消息所需的时间(即前向延迟)与消息从从机到主机所需的时间相同,反向延迟。如果这些延迟很大,只要它们一样,就没有问题。正向和反向延迟的任何差异都会导致确定主时钟和从时钟之间的差异。
为什么前进和后退的延迟是不同的?主要是因为那些讨厌的队列。路由器有队列,交换机有队列,终端设备的网络堆栈甚至有队列。通常情况下,消息在队列中花费的时间最少,但有时他们正在等待交换机完成同一端口上的其他消息,或者操作系统完成正在执行的操作,从而获取时间戳。在某些情况下,延迟可能相当长,很多微秒甚至毫秒。所以很明显,如果发生在一个方向上,而不是另一个方向,那么BAM!你有一个很大的时间转移错误。
由于我已经在开头的句子中给出了结尾,你知道这是用硬件时间戳来解决的。如何工作如下图所示。当消息离开或到达网络端口时,特殊硬件会从本地时钟生成时间戳,通常位于数据链路层(MAC)和物理层(PHY)之间的介质独立接口中。这消除了操作系统和其他软件的难以预料的缓慢响应。PTP感知的交换机和路由器也会为PTP消息添加时间戳。一种类型的这种设备,如下所示,称为透明时钟,通过更新PTP消息来纠正在设备中花费的时间。另一种称为边界时钟的类型使用PTP消息来设置自己的时钟,然后将其时间发送给需要它的PTP从站。
图2.传输Sync消息期间的硬件时间戳图。当Sync消息通过PHY和MAC之间的MII时,Sync消息触发PTP设备本地时钟的时间戳。
这种延迟测量机制被称为端到端延迟测量机制。事实证明,PTP有一个替代的延迟测量机制,称为对等机制。有关延迟测量的这种方法的描述,请参阅端到端与对等