目录
在初始化阶段,每个被设置为master的节点都会发送包含了自身时钟参数的SYNC packets,每个接收到SYNC packets的有潜能作为master的节点的软件会将自身的时钟参数与接收到的时钟参数进行比较,如果别人家的时钟更好,该节点的软件就老实地做slave,并且不再发SYNC packets,它会暂时将这个比它更好的节点当作master,它心有不甘,它会不停地接收别人发的SYNC packets,并将它与自己的master比较,如果别人家的更好,它会毫不犹豫地转认新master,最终所有节点会找出来那个最强的节点作为master,其他的节点都是slave,都要听命于这个最强master。
时间同步阶段分为时钟同步阶段和时间同步阶段。
这个阶段,slave根据master的时钟校准自己的时钟。
1)master软件发送SYNC packets后,会设置一个标志位,以通知master硬件记录发送时间,master硬件将该时间放在一个寄存器中,master软件读取该寄存器的值,将其放在Follow_UP packets。
2)slave会捕获SYNC packets,记录自己的接收时间T2,slave之后会捕获Follow_UP packets,从中获取master软件发送SYNC packets的时间T1,slave软件会根据T1和T2计算出master使用自己的时钟时连续的packets之间的时间间隔,然后slave软件以此为目标,调整自己的时钟以达到同样的时间间隔。使用此种方法完成slave时钟校准到master时钟。
图2.1 时钟同步阶段图示
这个阶段,slave实现时间同步,达到完全同步至master。
图2.2 时间同步阶段图示
master软件发送Sync packets,通知master硬件记录发送时间T1,slave软件通知slave硬件记录接收时间T2,master再发送Follow_Up packets,里面会携带T1,slave软件之后会返回Delay_Req packets,slave硬件会记录发送时间T3,master软件接收到Delay_Req packets后,通知master硬件记录接收时间T4,master软件再发送Delay_Response packets,里面会携带T4,slave软件接收到该packets后,它就获取到了T1、T2、T3和T4,根据下面的公式可以计算出slave需要调整的时间,最终实现时间同步。 Slave Adjust Time = - [(T2-T1) - (T4-T3)] / 2
图 2.3 Block diagram of PTP functions
需要关注几点:
图2.4 PTP Message Over Layer 2