学习理解10G Ethernet Subsystem之IEEE1588

本文转载自:十年老鸟的CSDN博客

前言

1588大多是走在报文中,主要通过一些报文交互来完成同步过程,对于设备的要求分类和状态机的运用,让整个系统可以知道自己处在什么状态,也可以手动设置自己的同步优先级顺序。

原理简介

1588简单来说是在用端到端的报文交互来确认彼此状态,计算环路时延然后进行同步,在这个过程中有两个假设:

1.在时钟源设备和受时钟设备之间,网络报文传输时间是对称的。也就是说一个报文从时钟源设备到受时钟设备的传输时间等于报文从受时钟设备到时钟源设备的传输时间相同。

2.在 PTP 报文交换过程当中,本地时钟的漂移可以忽略不计。

在这两个假设前提的条件下,1588的同步原理如下图:

1.png

如图所示,在经过 sync->delay_request->delay_response 消息交互以后,受时钟设备获得4 个时间值。

以太网报文在两个设备之间的环路时延可以计算为

T roundtrip = (t4 - t1) - (t3 - t2)

假设包传输时延是对称的,那么单路时延是

T tripdelay = ((t4 - t1) - (t3 - t2))/2

从时钟设备的时钟和主时钟的差值是

T delta = t2 - (t1 + T tripdelay )

one step/two step

对于时钟源设备,如果在发送 sync 报文时所带的时间戳就是报文发送时采集的准确时间,这种模式 叫做 single step 模式。如果发送 sync 报文的时候所带的时间戳只是一个近似时间,sync 报文发送的准确时间不能在发送 sync 报文的时候获得或者实时插入到 sync 报文中,时钟源设备需要发一个 follow up消息报文,用来传递 sync 报文的准确发送时间,这种模式叫做 two step 模式。

一般PHY是只支持single step方式来解码,一些新的架构的芯片则会使用two step。

1PPS

1588也会使用1PPS来当作同步信号,但从协议来看,1588并不依赖于除了网络报文以外的dedicate的频率信号来完成同步

IP 设置

2.png

IP中有三个配置
第一个配置是选择 1-step 还是 2-step
第二个是选择IEEE1588时间戳的格式
第三个IEEE1588 定时器参考时钟周期?