IEEE1588精确网络时钟同步协议简介

[首发于cnblogs,转载请注明。作者:byeyear/告别年代    Email:[email protected]]

在阅读本文之前,假定您对以太网和NTP有一定的了解。

至少您应该大致理解以下名词或缩写:

NTP,MAC,PHY,TimeStamp

IEEE1588是一个主要运行于以太网的网络时钟同步协议,主要目标是在局域网范围内实现高于微秒级的同步精度。与常见的时钟同步协议NTP相比,区别在于下面几点:

1. TimeStamp是在硬件级打上去的,这样相比于NTP就没有了App发起packet到硬件将packet发送出去之间的延迟,所以1588能做到很高的精度。TimeStamp可以在MAC层打,也可以在PHY层打。打在MAC层实现较方便,但精度不如打在PHY层,因为在MAC和PHY之间存在着数据抖动。一般来说,做在MAC层能实现100ns以内的同步误差,打在PHY层能实现25ns以内的同步误差。但是也正因为在硬件层打TimeStamp,所以实现1588要求修改ETH硬件,并修改底层协议栈,实现起来较复杂。顺便说下,协议本身并不强制在硬件级打TimeStamp,纯软件的实现也是存在的,但其同步精度无法保证,一般将纯软件实现作为验证协议栈的一种手段,而不用于现场环境。

2.  IEEE1588使用广播或组播传递协议包,这就限制了1588只能用在支持广播或组播的网络上。

3.  IEEE1588没有专门的时间服务器,但存在着主从层次结构。网络上运行该协议的设备通过协议包的交换确立主从层次结构,并在网络拓补发生改变时重新确立主从层次。

IEEE1588协议有两个版本,分别是早期的1588-2002和最新的1588-2008。协议包不兼容。不过现在支持该协议的设备都使用了新版协议,所以兼容性基本上不是问题。

该协议也被接纳为IEC标准:IEC-61588。

我们国家有该协议的翻译稿:

GB/T 25931-2010 网络测量和控制系统的精确时钟同步协议

在后面的介绍中,若不作特别说明,均针对1588-2008。

实际上,1588本身并不限制仅用于以太网,只要是支持广播或组播的网络(比如CAN/485等),理论上都可以运行该协议。不过目前市场上能看到的支持该协议的硬件几乎都是以太网的,所以我们的介绍也将以Ethernet为例子。

 

支持1588协议的设备在规范中称为“时钟”,下文中我们同样用“时钟(clock)”来指代支持1588协议的设备。

1588拓补结构

当1588运行于以太网时,虽然以太网本身禁止环路,但1588为了能在非以太网环境下运行,协议本身也能够检测到环路,并在逻辑上将其断开。对于非以太网环境,我们暂时不去关注它。对使用以太网介质的1588同步系统来说,一条同步链路的两端分别是master clock和slave clock;master clock周期性发出携带自身时钟信息的同步报文,slave提取报文中的时钟信息,并利用该信息来不断修正自身的时钟。最简单的情况是,整个系统由两个网络终端构成:

|M| -------------------- |S|

Master和Slave分别是两个终端。

如果系统中存在两个以上的网络终端,那么需要一台支持1588的交换机:

|----M----M----M----M----|

     |    |    |    |

    |S|  |S|  |S|  |S|

上图是一台4端口1588交换机,每个端口上都挂一台终端。交换机的每个端口都是master,所有的终端都是slave clock。交换机的每个端口都同步到交换机内部的同一个时钟,所以4个端口之间是彼此同步的,而slave又分别和与其相连的交换机端口同步,于是最终4个slave也是同步的。

但也有可能挂在交换机上的某个终端是master:

|----S----M----M----M----|

     |    |    |    |

    |M|  |S|  |S|  |S|

此时4个网络终端中的一个是master,与之相连的交换机端口是slave。交换机将自身时钟同步到终端M,并将同步后的自身时钟信息用同步报文发送给其余三个终端。这样,交换机同步到终端M,而三个S终端又同步到交换机,于是4个终端仍然是同步的。此时,终端M是同步的源头。

当然,交换机是可以级联的,这样就形成了Tree结构。Tree的root节点我们称其为Grandmaster,所有的下层节点最终都将同步到Grandmaster。Grandmaster可以是

1)支持1588的交换机,此时交换机的每个端口都是master;

2)网络终端,该网络终端或者连接到交换机,或者连接到另一个终端

    a. 如果连接到另一个终端,那么另一个终端就是slave;

    b  如果连接到交换机,那么该交换机与之相连的端口是slave,其余端口是master。

 

IEEE1588精确网络时钟同步协议简介_第1张图片

上图引自IEEE1588-2008。图中clock-1是grandmaster,也是Tree的root。

我们将在下面一篇文章中讲述上图中的两个名词:Ordinary clock,Boundary clock,以及没有出现在图中但与之相关的E2E Transparent clock和P2P Transparent clock。

你可能感兴趣的:(IEEE1588精确网络时钟同步协议简介)